OSDN Git Service

* times.cc (to_time_t): pass zero time as epoch
authordj <dj>
Fri, 20 Oct 2000 21:45:50 +0000 (21:45 +0000)
committerdj <dj>
Fri, 20 Oct 2000 21:45:50 +0000 (21:45 +0000)
* fhandler.cc (fstat): copy atime/ctime from mtime if they're zero

winsup/cygwin/ChangeLog
winsup/cygwin/fhandler.cc
winsup/cygwin/times.cc

index 075960f..8bd7564 100644 (file)
@@ -1,3 +1,8 @@
+2000-10-20  DJ Delorie  <dj@redhat.com>
+
+       * times.cc (to_time_t): pass zero time as epoch
+       * fhandler.cc (fstat): copy atime/ctime from mtime if they're zero
+
 Thu Oct 19 23:31:41 2000  Christopher Faylor <cgf@cygnus.com>
 
        * external.cc (fillout_pinfo): Pass PID_NOREDIR flag to pinfo init to
index f6ce3ad..1a7835d 100644 (file)
@@ -855,6 +855,12 @@ fhandler_disk_file::fstat (struct stat *buf)
   buf->st_dev     = local.dwVolumeSerialNumber;
   buf->st_size    = local.nFileSizeLow;
 
+  /* This is for FAT filesystems, which don't support atime/ctime */
+  if (buf->st_atime == 0)
+    buf->st_atime = buf->st_mtime;
+  if (buf->st_ctime == 0)
+    buf->st_ctime = buf->st_mtime;
+
   /* Allocate some place to determine the root directory. Need to allocate
      enough so that rootdir can add a trailing slash if path starts with \\. */
   char root[strlen (get_win32_name ()) + 3];
index bff40b6..9960f70 100644 (file)
@@ -221,6 +221,11 @@ to_time_t (FILETIME *ptr)
 
   long rem;
   long long x = ((long long) ptr->dwHighDateTime << 32) + ((unsigned)ptr->dwLowDateTime);
+
+  /* pass "no time" as epoch */
+  if (x == 0)
+    return 0;
+
   x -= FACTOR;                 /* number of 100ns between 1601 and 1970 */
   rem = x % ((long long)NSPERSEC);
   rem += (NSPERSEC / 2);