1 #ifndef _INCLUDED_WATCH_FILES_
2 #define _INCLUDED_WATCH_FILES_
4 #include <sys/inotify.h>
20 time_t getFileModTime();
25 void init(
const char *_name)
26 {name=_name; mod_time=0;}
27 const char *operator()()
33 {
return(mod_time != getFileModTime());}
35 {mod_time = getFileModTime();}
40 static const uint32_t ModEvents = IN_CLOSE_WRITE|IN_MOVE_SELF;
51 {parent=w.parent; wd=w.wd;}
54 {
return(parent!=NULL && wd>=0);}
55 bool watch(
WatchFiles *_parent,
const char *filename)
56 {
return(_parent && _parent->addWatch(*
this,filename));}
57 bool rewatch(
const char *filename)
58 {
return(parent && parent->addWatch(*
this,filename));}
60 {
return(parent && parent->removeWatch(*
this));}
63 {
return(parent && (parent->calcEventMask(*
this) & ModEvents));}
69 std::vector<inotify_event> events;
74 {inotify_fd=-1; num_watches=0;}
81 {
return(inotify_fd >= 0);}
83 bool addWatch(Watch &w,
const char *filename);
84 bool removeWatch(Watch &w);
85 uint32_t calcEventMask(Watch &w);
89 {
return(events.size());}