rem: struct stat sb;
add: struct stat st; int saved_errno = 0;
context: utime_null (const char *file){#if HAVE_UTIMES_NULL  return utimes (file, 0);#else  int fd;  char c;  int status = 0;  struct stat sb;  fd = open (file, O_RDWR);  if (fd < 0      || fstat (fd, &sb) < 0      || safe_read (fd, &c, sizeof c) == SAFE_READ_ERROR      || lseek (fd, (off_t) 0, SEEK_SET) < 0      || full_write (fd, &c, sizeof c) != sizeof c      /* Maybe do this -- it's necessary on SunOS4.1.3 with some combination	 of patches, but that system doesn't use this code: it has utimes.	 || fsync (fd) < 0      */      || (sb.st_size == 0 && ftruncate (fd, sb.st_size) < 0)      || close (fd) < 0)    status = -1;  return status;#endif}