Stefan Schuermans commited on 2011-10-24 21:29:34
Showing 2 changed files, with 12 additions and 13 deletions.
| ... | ... |
@@ -18,9 +18,10 @@ namespace Blinker {
|
| 18 | 18 |
* @param[in] path path to file |
| 19 | 19 |
*/ |
| 20 | 20 |
File::File(const std::string &path): |
| 21 |
- m_path(path), |
|
| 22 |
- m_lastCheck(Time::now()) |
|
| 21 |
+ m_path(path) |
|
| 23 | 22 |
{
|
| 23 |
+ // get modification time |
|
| 24 |
+ checkModified(); |
|
| 24 | 25 |
} |
| 25 | 26 |
|
| 26 | 27 |
/** |
| ... | ... |
@@ -38,22 +39,20 @@ const std::string & File::getPath() |
| 38 | 39 |
*/ |
| 39 | 40 |
bool File::checkModified() |
| 40 | 41 |
{
|
| 41 |
- /* get current time before getting modification time |
|
| 42 |
- for not missing any modification */ |
|
| 43 |
- Time now = Time::now(); |
|
| 44 |
- |
|
| 45 | 42 |
// get modification/change times |
| 46 | 43 |
struct stat s; |
| 47 | 44 |
if (stat(m_path.c_str(), &s)) |
| 48 | 45 |
return false; // cannot stat -> silently ignore |
| 49 |
- Time modified(s.st_mtime); |
|
| 50 |
- Time changed(s.st_ctime); |
|
| 46 |
+ Time modifyTime(s.st_mtime); |
|
| 47 |
+ Time changeTime(s.st_ctime); |
|
| 48 |
+ if (changeTime > modifyTime) // treat change same way as modify |
|
| 49 |
+ modifyTime = changeTime; |
|
| 51 | 50 |
|
| 52 |
- // has file been modified/changed since last check |
|
| 53 |
- bool mod = modified >= m_lastCheck || changed >= m_lastCheck; |
|
| 51 |
+ // consider file modified if modify time changed since last check |
|
| 52 |
+ bool mod = modifyTime > m_lastModifyTime; |
|
| 54 | 53 |
|
| 55 |
- // remember "now" as last check time |
|
| 56 |
- m_lastCheck = now; |
|
| 54 |
+ // remember new modify time |
|
| 55 |
+ m_lastModifyTime = modifyTime; |
|
| 57 | 56 |
|
| 58 | 57 |
return mod; |
| 59 | 58 |
} |
| ... | ... |
@@ -37,7 +37,7 @@ public: |
| 37 | 37 |
|
| 38 | 38 |
protected: |
| 39 | 39 |
std::string m_path; ///< path to file |
| 40 |
- Time m_lastCheck; ///< last time modification time was checked |
|
| 40 |
+ Time m_lastModifyTime; ///< last known modification time was checked |
|
| 41 | 41 |
}; // class File |
| 42 | 42 |
|
| 43 | 43 |
} // namespace Blinker |
| 44 | 44 |