incron  0.5.10
incrontab.h
Go to the documentation of this file.
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_