cleanup main

This commit is contained in:
rsc 2007-08-10 17:00:00 +00:00
parent 7d4aef6cfd
commit 9736728d23

28
sh.c
View file

@ -29,10 +29,11 @@ struct cmd cmdlist[MAXCMD];
struct cmd *cmd; struct cmd *cmd;
char buf[BUFSIZ]; char buf[BUFSIZ];
int debug = 0; int debug;
int parse(char *s); int parse(char *s);
void runcmd(void); void runcmd(void);
int getcmd(char *buf, int nbuf);
int ioredirection(struct ionode *iolist, int nio); int ioredirection(struct ionode *iolist, int nio);
int gettoken(char *s, char **token); int gettoken(char *s, char **token);
int _gettoken(char *s, char **p1, char **p2); int _gettoken(char *s, char **p1, char **p2);
@ -40,19 +41,24 @@ int _gettoken(char *s, char **p1, char **p2);
int int
main(void) main(void)
{ {
while(1){ while(getcmd(buf, sizeof buf) >= 0) {
puts("$ "); if(parse(buf) >= 0)
memset(buf, 0, sizeof buf);
gets(buf, sizeof buf);
if(buf[0] == 0) // EOF
break;
if(parse(buf) < 0)
continue;
runcmd(); runcmd();
} }
exit(); exit();
} }
int
getcmd(char *buf, int nbuf)
{
puts("$ ");
memset(buf, 0, nbuf);
gets(buf, nbuf);
if(buf[0] == 0) // EOF
return -1;
return 0;
}
int int
parse(char *s) parse(char *s)
{ {
@ -61,13 +67,13 @@ parse(char *s)
gettoken(s, 0); gettoken(s, 0);
cmd = &cmdlist[0];; cmd = &cmdlist[0];
for(i = 0; i < MAXCMD; i++) { for(i = 0; i < MAXCMD; i++) {
cmdlist[i].argc = 0; cmdlist[i].argc = 0;
cmdlist[i].token = 0; cmdlist[i].token = 0;
cmdlist[i].io = cmdlist[i].iolist; cmdlist[i].io = cmdlist[i].iolist;
} }
while(1) { for(;;){
switch((c = gettoken(0, &t))) { switch((c = gettoken(0, &t))) {
case 'w': // Add an argument case 'w': // Add an argument