incron 0.5.10

- Main Page
- Classes
- Files

- File List
- File Members

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_