Annotation of 43BSDTahoe/usr.bin/find/test/diff-c.new, revision 1.1

1.1     ! root        1: *** find.c.orig        Fri Aug 16 18:55:48 1985
        !             2: --- find.c     Fri Aug 16 18:57:09 1985
        !             3: ***************
        !             4: *** 551,557 ****
        !             5:        register char *na;
        !             6:        static char *nargv[50];
        !             7:        static ccode;
        !             8: !      register int w, pid, (*sigint)(), (*sigquit)(), cantexec;
        !             9:   
        !            10:        ccode = np = 0;
        !            11:        while (na=Argv[com++]) {
        !            12: --- 551,557 ----
        !            13:        register char *na;
        !            14:        static char *nargv[50];
        !            15:        static ccode;
        !            16: !      register int w, pid, omask;
        !            17:   
        !            18:        ccode = np = 0;
        !            19:        while (na=Argv[com++]) {
        !            20: ***************
        !            21: *** 562,572 ****
        !            22:        }
        !            23:        nargv[np] = 0;
        !            24:        if (np==0) return(9);
        !            25: -      /*
        !            26: -       * This is a kludge, but the alternative is to reserve
        !            27: -       * some exit code (e.g. 0xff) to denote inability to exec.
        !            28: -       */
        !            29: -      cantexec = 0;
        !            30:        switch (pid = vfork()) {
        !            31:        case -1:
        !            32:                perror("find: Can't fork");
        !            33: --- 562,567 ----
        !            34: ***************
        !            35: *** 576,597 ****
        !            36:        case 0:
        !            37:                chdir(Home);
        !            38:                execvp(nargv[0], nargv, np);
        !            39: !              cantexec = 1;   /* XXX */
        !            40: !              _exit(1);
        !            41:                break;
        !            42:   
        !            43:        default:
        !            44: !              sigint = signal(SIGINT, SIG_IGN);
        !            45: !              sigquit = signal(SIGQUIT, SIG_IGN);
        !            46:                while ((w = wait(&ccode)) != pid && w != -1)
        !            47:                        ;
        !            48: !              signal(SIGQUIT, sigquit);
        !            49: !              signal(SIGINT, sigint);
        !            50: !              if (cantexec) { /* XXX */
        !            51: !                      fprintf(stderr, "find: Can't execute ");
        !            52: !                      perror(nargv[0]);
        !            53:                        exit(1);
        !            54: -              }
        !            55:                return (ccode != 0 ? 0 : 1);
        !            56:        }
        !            57:   }
        !            58: --- 571,592 ----
        !            59:        case 0:
        !            60:                chdir(Home);
        !            61:                execvp(nargv[0], nargv, np);
        !            62: !              write(2, "find: Can't execute ", 20);
        !            63: !              _perror(nargv[0]);
        !            64: !              /*
        !            65: !               * Kill ourselves; our exit status will be a suicide
        !            66: !               * note indicating we couldn't do the "exec".
        !            67: !               */
        !            68: !              kill(getpid(), SIGUSR1);
        !            69:                break;
        !            70:   
        !            71:        default:
        !            72: !              omask = sigblock(sigmask(SIGINT)|sigmask(SIGQUIT));
        !            73:                while ((w = wait(&ccode)) != pid && w != -1)
        !            74:                        ;
        !            75: !              (void) sigsetmask(omask);
        !            76: !              if ((ccode & 0177) == SIGUSR1)
        !            77:                        exit(1);
        !            78:                return (ccode != 0 ? 0 : 1);
        !            79:        }
        !            80:   }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.