Skip to content

Commit

Permalink
more simplifying
Browse files Browse the repository at this point in the history
  • Loading branch information
kaashoek committed Sep 7, 2006
1 parent e00baa9 commit 44e6909
Showing 1 changed file with 12 additions and 15 deletions.
27 changes: 12 additions & 15 deletions sh.c
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

#define BUFSIZ 512
#define MAXARGS 10
#define MAXNODE 2
#define MAXIO 2
#define MAXCMD 2

// an embarrassingly naive shell
Expand All @@ -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];
Expand Down Expand Up @@ -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;
Expand All @@ -114,7 +112,6 @@ parse(char *s)
}
}


void
runcmd(void)
{
Expand Down

0 comments on commit 44e6909

Please sign in to comment.