--- ray/src/px/pcomb.c 1991/11/11 14:01:24 1.23 +++ ray/src/px/pcomb.c 1992/08/10 12:10:26 2.3 @@ -124,10 +124,13 @@ char *argv[]; goto usage; } else { - input[nfiles].name = argv[a]; - input[nfiles].fp = argv[a][0]=='!' ? - popen(argv[a]+1, "r") : - fopen(argv[a], "r"); + if (argv[a][0] == '!') { + input[nfiles].name = ""; + input[nfiles].fp = popen(argv[a]+1, "r"); + } else { + input[nfiles].name = argv[a]; + input[nfiles].fp = fopen(argv[a], "r"); + } if (input[nfiles].fp == NULL) { perror(argv[a]); quit(1); @@ -449,5 +452,11 @@ char *msg; quit(code) int code; { + int status; + + if (code == 0) /* reap any children */ + while (wait(&status) != -1) + if (code == 0) + code = status>>8 & 0xff; exit(code); }