incron
0.5.10
|
00001 00003 00017 #ifndef _INCRONTAB_H_ 00018 #define _INCRONTAB_H_ 00019 00020 #include <string> 00021 #include <deque> 00022 00023 #include "strtok.h" 00024 00025 /* 00027 #define INCRON_USER_TABLE_BASE "/var/spool/incron/" 00028 00030 #define INCRON_SYS_TABLE_BASE "/etc/incron.d/" 00031 */ 00032 00034 class IncronTabEntry 00035 { 00036 public: 00038 00043 IncronTabEntry(); 00044 00046 00053 IncronTabEntry(const std::string& rPath, uint32_t uMask, const std::string& rCmd); 00054 00056 ~IncronTabEntry() {} 00057 00059 00064 std::string ToString() const; 00065 00067 00072 static bool Parse(const std::string& rStr, IncronTabEntry& rEntry); 00073 00075 00078 inline const std::string& GetPath() const 00079 { 00080 return m_path; 00081 } 00082 00084 00087 inline int32_t GetMask() const 00088 { 00089 return m_uMask; 00090 } 00091 00093 00096 inline const std::string& GetCmd() const 00097 { 00098 return m_cmd; 00099 } 00100 00102 00105 inline bool IsNoLoop() const 00106 { 00107 return m_fNoLoop; 00108 } 00109 00111 00123 static std::string GetSafePath(const std::string& rPath); 00124 00125 protected: 00126 std::string m_path; 00127 uint32_t m_uMask; 00128 std::string m_cmd; 00129 bool m_fNoLoop; 00130 }; 00131 00132 00134 class IncronTab 00135 { 00136 public: 00138 IncronTab() {} 00139 00141 ~IncronTab() {} 00142 00144 00147 inline void Add(const IncronTabEntry& rEntry) 00148 { 00149 m_tab.push_back(rEntry); 00150 } 00151 00153 inline void Clear() 00154 { 00155 m_tab.clear(); 00156 } 00157 00159 00162 inline bool IsEmpty() const 00163 { 00164 return m_tab.empty(); 00165 } 00166 00168 00171 inline int GetCount() const 00172 { 00173 return (int) m_tab.size(); 00174 } 00175 00177 00184 inline IncronTabEntry& GetEntry(int index) 00185 { 00186 return m_tab[index]; 00187 } 00188 00190 00194 bool Load(const std::string& rPath); 00195 00197 00201 bool Save(const std::string& rPath); 00202 00204 00208 static bool CheckUser(const std::string& rUser); 00209 00211 00217 static std::string GetUserTablePath(const std::string& rUser); 00218 00220 00226 static std::string GetSystemTablePath(const std::string& rName); 00227 00228 protected: 00229 std::deque<IncronTabEntry> m_tab; 00230 }; 00231 00232 00233 #endif //_INCRONTAB_H_