Skip to content
Snippets Groups Projects
Commit 44e6909a authored by kaashoek's avatar kaashoek
Browse files

more simplifying

parent e00baa9f
No related branches found
No related tags found
No related merge requests found
......@@ -6,7 +6,7 @@
#define BUFSIZ 512
#define MAXARGS 10
#define MAXNODE 2
#define MAXIO 2
#define MAXCMD 2
// an embarrassingly naive shell
......@@ -22,7 +22,7 @@ struct cmd {
char argv0buf[BUFSIZ];
int argc;
int token;
struct ionode iolist[MAXNODE];
struct ionode iolist[MAXIO];
struct ionode *io;
};
struct cmd cmdlist[MAXCMD];
......@@ -75,30 +75,28 @@ parse(char *s)
cmd->argv[cmd->argc++] = t;
break;
case '<': // Input redirection
case '>': // Input and output redirection
case '<':
// Grab the filename from the argument list
if(gettoken(0, &t) != 'w') {
printf(2, "syntax error: < not followed by word\n");
printf(2, "syntax error: > not followed by word\n");
return -1;
}
cmd->io->token = '<';
cmd->io->s = t;
cmd->io++;
break;
case '>': // Output redirection
// Grab the filename from the argument list
if(gettoken(0, &t) != 'w') {
printf(2, "syntax error: > not followed by word\n");
if(cmd->io - cmd->iolist >= MAXIO) {
printf(2, "too many redirections\n");
return -1;
}
cmd->io->token = '>';
cmd->io->token = c;
cmd->io->s = t;
cmd->io++;
break;
case ';': // command sequence
case '|': // pipe
if(cmd->io - cmd->iolist >= MAXIO) {
printf(2, "too many redirections\n");
return -1;
}
cmd->token = c;
cmd++;
break;
......@@ -114,7 +112,6 @@ parse(char *s)
}
}
void
runcmd(void)
{
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment