diff options
| -rw-r--r-- | Makefile | 4 | ||||
| -rw-r--r-- | sh.c | 21 | ||||
| -rw-r--r-- | user.h | 5 | 
3 files changed, 8 insertions, 22 deletions
| @@ -128,8 +128,8 @@ rm : rm.o $(ULIB)  mkfs : mkfs.c fs.h  	cc -o mkfs mkfs.c -fs.img : mkfs userfs usertests echo cat readme init sh ls mkdir rm fstests -	./mkfs fs.img userfs usertests echo cat readme init sh ls mkdir rm fstests +fs.img : mkfs userfs usertests echo cat README init sh ls mkdir rm fstests +	./mkfs fs.img userfs usertests echo cat README init sh ls mkdir rm fstests  -include *.d @@ -162,37 +162,24 @@ ioredirection(void)    for (i = 0; i < nextnode; i++) {      switch (list[i].token) {      case '<': +      if (close(0) < 0) +	printf(2, "close 0 failed\n");        if ((fd = open(list[i].s, O_RDONLY)) < 0) {  	printf(2, "failed to open %s for read: %d", list[i].s, fd);  	return -1;        } -        if (debug)  	printf(2, "redirect 0 from %s\n", list[i].s); - -      close(0); -      if ((dfd = dup(fd)) < 0) -	printf(2, "dup failed\n"); -      if (debug) -	printf(2, "dup returns %d\n", dfd); -      close(fd);        break;      case '>': +      if (close(1) < 0) +	printf(2, "close 1 failed\n");        if ((fd = open(list[i].s, O_WRONLY|O_CREATE)) < 0) {  	printf(2, "failed to open %s for write: %d", list[i].s, fd);  	exit();        } -        if (debug)  	printf(2, "redirect 1 to %s\n", list[i].s); - -      if (close(1) < 0) -	printf(2, "close 1 failed\n"); -      if ((dfd = dup(fd)) < 0) -	printf(2, "dup failed\n"); -      if (debug) -	printf(2, "dup returns %d\n", dfd); -      close(fd);        break;      }    } @@ -1,14 +1,12 @@ +// system calls  int fork(void);  int exit(void) __attribute__((noreturn));  int wait(void); -int cons_putc(int);  int pipe(int*);  int write(int, void*, int);  int read(int, void*, int);  int close(int);  int kill(int); -int panic(char*); -int cons_puts(char*);  int exec(char *, char **);  int open(char *, int);  int mknod (char*,short,short,short); @@ -21,6 +19,7 @@ int dup(int);  int getpid();  char *sbrk(int); +// ulib.c  int stat(char *, struct stat *stat);  int puts(char*);  char* strcpy(char*, char*); | 
