diff --git a/remake.c b/remake.c index c7b183c4..452e7e54 100644 --- a/remake.c +++ b/remake.c @@ -777,8 +777,16 @@ touch_file (file) { struct stat statbuf; char buf; + int status; - if (fstat (fd, &statbuf) < 0) +#ifdef EINTR + do +#endif + status = fstat (fd, &statbuf); +#ifdef EINTR + while (status < 0 && errno == EINTR); +#endif + if (status < 0) TOUCH_ERROR ("touch: fstat: "); /* Rewrite character 0 same as it already is. */ if (read (fd, &buf, 1) < 0) @@ -971,7 +979,7 @@ name_mtime (name) { struct stat st; - if (stat (name, &st) < 0) + if (safe_stat (name, &st) < 0) return (time_t) -1; return (time_t) st.st_mtime;