47 lines
751 B
C
47 lines
751 B
C
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
|
|
#define PROMPT "msh> "
|
|
#define EXIT_CMD "exit"
|
|
#define MAX_BUF 121
|
|
|
|
void echo(const char*);
|
|
void remove_newline(char*);
|
|
void exit_branch(const char*);
|
|
|
|
int main(void) {
|
|
char buffer[MAX_BUF];
|
|
while(1) {
|
|
printf("%s", PROMPT);
|
|
fgets(buffer, MAX_BUF, stdin);
|
|
if(!strlen(buffer)) {
|
|
return 0;
|
|
}
|
|
// process the input
|
|
remove_newline(buffer);
|
|
exit_branch(buffer);
|
|
echo(buffer);
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
void echo(const char* buf) {
|
|
printf("%s\n", buf);
|
|
}
|
|
|
|
|
|
void remove_newline(char* buf) {
|
|
char* c = buf;
|
|
while(*c != '\n') { c++; }
|
|
*c='\0';
|
|
}
|
|
|
|
void exit_branch(const char* buf) {
|
|
if(strcmp(buf, EXIT_CMD)) {
|
|
return;
|
|
}
|
|
exit(0);
|
|
return; // just for gcc but exit shouldn't fail
|
|
}
|