Paul - After looking at this problem for a while longer, I've come up with the attached patch which solves the problem (at least for #ifdef POSIX). When name_mtime() is called, SIGCHLD is not set to SIG_IGN or SIG_DFL, but has a signal handler assigned. This causes the signal to be delivered which, of course, interrupts the system call causing make to believe that the file doesn't exist. Blocking SIGCHLD for just name_mtime() works great, but you have a much better understanding of the program flow so maybe you'd prefer putting the SIGCHLD blocking at a higher level. I hope something like this patch can make it into make-3.79.1. Thanks for your help, BTW. The suggestion of adding perror() really got me headed in the right direction. Michael Sterrett -Mr. Bones.- [EMAIL PROTECTED]
--- make-3.78.1.orig/remake.c Thu Sep 9 11:30:27 1999 +++ make-3.78.1/remake.c Fri May 19 17:47:26 2000 @@ -1188,9 +1188,25 @@ register char *name; { struct stat st; +#ifdef POSIX + sigset_t signal_set; + sigset_t save_signal_set; + (void) sigprocmask (SIG_BLOCK, (sigset_t *) 0, &save_signal_set); + signal_set = save_signal_set; + sigaddset (&signal_set, SIGCHLD); + (void) sigprocmask (SIG_BLOCK, &signal_set, (sigset_t *) 0); +#endif if (stat (name, &st) < 0) - return (FILE_TIMESTAMP) -1; + { +#ifdef POSIX + sigprocmask (SIG_SETMASK, &save_signal_set, (sigset_t *) 0); +#endif + return (FILE_TIMESTAMP) -1; + } +#ifdef POSIX + sigprocmask (SIG_SETMASK, &save_signal_set, (sigset_t *) 0); +#endif return FILE_TIMESTAMP_STAT_MODTIME (st); }