diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2005-02-17 12:41:49 +0000 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2005-02-17 12:41:49 +0000 |
commit | 3419b5bc2b6bf4b6fba63b831aeae92e71410535 (patch) | |
tree | 11a152bd0ce4204568c019b15cf724c9cad07d03 /winsup | |
parent | b066a1951340daaa2c031551deb85e851766f287 (diff) | |
download | cygnal-3419b5bc2b6bf4b6fba63b831aeae92e71410535.tar.gz cygnal-3419b5bc2b6bf4b6fba63b831aeae92e71410535.tar.bz2 cygnal-3419b5bc2b6bf4b6fba63b831aeae92e71410535.zip |
* fhandler_disk_file.cc (fhandler_disk_file::fstat): Set st_ctime if
has_changed flag is set.
(fhandler_disk_file::touch_ctime): Reset has_changed flag on success.
Diffstat (limited to 'winsup')
-rw-r--r-- | winsup/cygwin/ChangeLog | 6 | ||||
-rw-r--r-- | winsup/cygwin/fhandler_disk_file.cc | 4 |
2 files changed, 10 insertions, 0 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index f04afaffc..178cf81d9 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,5 +1,11 @@ 2005-02-17 Corinna Vinschen <corinna@vinschen.de> + * fhandler_disk_file.cc (fhandler_disk_file::fstat): Set st_ctime if + has_changed flag is set. + (fhandler_disk_file::touch_ctime): Reset has_changed flag on success. + +2005-02-17 Corinna Vinschen <corinna@vinschen.de> + * times.cc (utimes): Open files with FILE_WRITE_ATTRIBUTES first, if that fails, try opeing with GENERIC_WRITE. Fix comments. diff --git a/winsup/cygwin/fhandler_disk_file.cc b/winsup/cygwin/fhandler_disk_file.cc index 129e9ce6b..8644e8964 100644 --- a/winsup/cygwin/fhandler_disk_file.cc +++ b/winsup/cygwin/fhandler_disk_file.cc @@ -374,6 +374,8 @@ fhandler_base::fstat_helper (struct __stat64 *buf, int __stdcall fhandler_disk_file::fstat (struct __stat64 *buf) { + if (has_changed ()) + touch_ctime (); return fstat_fs (buf); } @@ -387,6 +389,8 @@ fhandler_disk_file::touch_ctime (void) SystemTimeToFileTime (&st, &ft); if (!SetFileTime (get_io_handle (), &ft, NULL, NULL)) debug_printf ("SetFileTime (%s) failed, %E", get_win32_name ()); + else + has_changed (false); } int __stdcall |