/** smsh1.c small-shell version 1
** first really useful version after prompting shell
** this one parses the command line into strings
** uses fork, exec, wait, and ignores signals
**/
#include
#include
#include
#include
#include “smsh.h”
#define DFL_PROMPT “> ”
int main()
{
char *cmdline, *prompt, **arglist;
int result;
void setup();
prompt = DFL_PROMPT ;
setup();
while ( (cmdline = next_cmd(prompt, stdin)) != NULL ){
if ( (arglist = splitline(cmdline)) != NULL ){
result = execute(arglist);
freelist(arglist);
}
free(cmdline);
}
return 0;
}
void setup()
/*
* purpose: initialize shell
* returns: nothing. calls fatal() if trouble
*/
{
signal(SIGINT, SIG_IGN);
signal(SIGQUIT, SIG_IGN);
}
void fatal(char *s1, char *s2, int n)
{
fprintf(stderr,”Error: %s,%s\n”, s1, s2);
exit(n);
}