#include #include #include #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 }