-rw-r--r-- | libopie2/opiecore/ofilenotify.cpp | 15 | ||||
-rw-r--r-- | libopie2/opiecore/ofilenotify.h | 10 |
2 files changed, 23 insertions, 2 deletions
diff --git a/libopie2/opiecore/ofilenotify.cpp b/libopie2/opiecore/ofilenotify.cpp index de4c63b..270570e 100644 --- a/libopie2/opiecore/ofilenotify.cpp +++ b/libopie2/opiecore/ofilenotify.cpp | |||
@@ -202,6 +202,14 @@ bool OFileNotification::hasChanged() | |||
202 | ::memset( &newstat, 0, sizeof newstat ); | 202 | ::memset( &newstat, 0, sizeof newstat ); |
203 | ::stat( _path, &newstat ); | 203 | int result = ::stat( _path, &newstat ); // may fail if file has been renamed or deleted. that doesn't matter :) |
204 | 204 | ||
205 | qDebug( "result of newstat call is %d (%s=%d)", result, strerror( errno ), errno ); | ||
205 | qDebug( "stat.atime = %0lx, newstat.atime = %0lx", (long)_stat.st_atime, (long)newstat.st_atime ); | 206 | qDebug( "stat.atime = %0lx, newstat.atime = %0lx", (long)_stat.st_atime, (long)newstat.st_atime ); |
206 | qDebug( "stat.mtime = %0lx, newstat.mtime = %0lx", (long)_stat.st_mtime, (long)newstat.st_mtime ); | 207 | qDebug( "stat.mtime = %0lx, newstat.mtime = %0lx", (long)_stat.st_mtime, (long)newstat.st_mtime ); |
208 | qDebug( "stat.ctime = %0lx, newstat.ctime = %0lx", (long)_stat.st_ctime, (long)newstat.st_ctime ); | ||
209 | |||
210 | if ( !c && (_type & (Delete|Rename)) && (long)newstat.st_atime == 0 && (long)newstat.st_mtime == 0 && (long)newstat.st_ctime == 0) | ||
211 | { | ||
212 | qDebug( "OFileNotification::hasChanged(): file has been deleted or renamed" ); | ||
213 | c = true; | ||
214 | } | ||
207 | if ( !c && (_type & Access) && (long)_stat.st_atime < (long)newstat.st_atime ) | 215 | if ( !c && (_type & Access) && (long)_stat.st_atime < (long)newstat.st_atime ) |
@@ -216,2 +224,7 @@ bool OFileNotification::hasChanged() | |||
216 | } | 224 | } |
225 | if ( !c && (_type & Attrib) && (long)_stat.st_ctime < (long)newstat.st_ctime ) | ||
226 | { | ||
227 | qDebug( "OFileNotification::hasChanged(): ctime changed" ); | ||
228 | c = true; | ||
229 | } | ||
217 | 230 | ||
diff --git a/libopie2/opiecore/ofilenotify.h b/libopie2/opiecore/ofilenotify.h index 5315896..13b5a6b 100644 --- a/libopie2/opiecore/ofilenotify.h +++ b/libopie2/opiecore/ofilenotify.h | |||
@@ -78,3 +78,3 @@ class OFileNotification : public QObject | |||
78 | bool activate(); | 78 | bool activate(); |
79 | bool hasChanged(); | 79 | virtual bool hasChanged(); |
80 | static bool registerSignalHandler(); | 80 | static bool registerSignalHandler(); |
@@ -92,2 +92,10 @@ class OFileNotification : public QObject | |||
92 | 92 | ||
93 | |||
94 | class ODirectoryNotification : public OFileNotification | ||
95 | { | ||
96 | public: | ||
97 | virtual bool hasChanged() { return true; }; | ||
98 | }; | ||
99 | |||
100 | |||
93 | } | 101 | } |