summaryrefslogtreecommitdiffstats
path: root/winsup
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2005-02-17 12:41:49 +0000
committerCorinna Vinschen <corinna@vinschen.de>2005-02-17 12:41:49 +0000
commit3419b5bc2b6bf4b6fba63b831aeae92e71410535 (patch)
tree11a152bd0ce4204568c019b15cf724c9cad07d03 /winsup
parentb066a1951340daaa2c031551deb85e851766f287 (diff)
downloadcygnal-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/ChangeLog6
-rw-r--r--winsup/cygwin/fhandler_disk_file.cc4
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