lib/config/configrc.h
changeset 0 6f7a81934006
equal deleted inserted replaced
-1:000000000000 0:6f7a81934006
       
     1 #ifndef VMAILMGR__CONFIG_RC__H__
       
     2 #define VMAILMGR__CONFIG_RC__H__
       
     3 
       
     4 #ifndef GLOBAL_CONFIG_DIR
       
     5 #define GLOBAL_CONFIG_DIR "/etc/vmailmgr"
       
     6 #endif
       
     7 
       
     8 #ifndef LOCAL_CONFIG_DIR
       
     9 #define LOCAL_CONFIG_DIR ".vmailmgr"
       
    10 #endif
       
    11 
       
    12 #include "mystring/mystring.h"
       
    13 #include "misc/strlist.h"
       
    14 
       
    15 template<class T>
       
    16 struct config_cache
       
    17 {
       
    18   T* value;
       
    19   config_cache() : value(0) { }
       
    20   ~config_cache() { delete value; }
       
    21 };
       
    22 
       
    23 class configuration 
       
    24 {
       
    25 public:
       
    26   configuration();
       
    27   configuration(const configuration* prev, const mystring& dir);
       
    28   ~configuration();
       
    29 
       
    30   configuration const * parent;
       
    31 
       
    32   const mystring directory;
       
    33 
       
    34 public: mystring autoresponse_dir() const;
       
    35 private: config_cache<mystring> autoresponse_dir_cache;
       
    36 public: mystring autoresponse_file() const;
       
    37 private: config_cache<mystring> autoresponse_file_cache;
       
    38 public: mystring bulletin_dir() const;
       
    39 private: config_cache<mystring> bulletin_dir_cache;
       
    40 public: unsigned default_expiry() const;
       
    41 private: config_cache<unsigned> default_expiry_cache;
       
    42 public: mystring default_maildir() const;
       
    43 private: config_cache<mystring> default_maildir_cache;
       
    44 public: unsigned default_msgcount() const;
       
    45 private: config_cache<unsigned> default_msgcount_cache;
       
    46 public: unsigned default_msgsize() const;
       
    47 private: config_cache<unsigned> default_msgsize_cache;
       
    48 public: unsigned default_hardquota() const;
       
    49 private: config_cache<unsigned> default_hardquota_cache;
       
    50 public: unsigned default_softquota() const;
       
    51 private: config_cache<unsigned> default_softquota_cache;
       
    52 public: mystring default_username() const;
       
    53 private: config_cache<mystring> default_username_cache;
       
    54 public: mystring error_maildir() const;
       
    55 private: config_cache<mystring> error_maildir_cache;
       
    56 public: mystring global_bulletin_dir() const;
       
    57 private: config_cache<mystring> global_bulletin_dir_cache;
       
    58 public: mystring maildir_arg_str() const;
       
    59 private: config_cache<mystring> maildir_arg_str_cache;
       
    60 public: mystring password_file() const;
       
    61 private: config_cache<mystring> password_file_cache;
       
    62 public: strlist postmaster_aliases() const;
       
    63 private: config_cache<strlist> postmaster_aliases_cache;
       
    64 public: mystring postmaster_email() const;
       
    65 private: config_cache<mystring> postmaster_email_cache;
       
    66 public: mystring qmail_root() const;
       
    67 private: config_cache<mystring> qmail_root_cache;
       
    68 public: mystring separators() const;
       
    69 private: config_cache<mystring> separators_cache;
       
    70 public: mystring socket_file() const;
       
    71 private: config_cache<mystring> socket_file_cache;
       
    72 public: mystring user_dir() const;
       
    73 private: config_cache<mystring> user_dir_cache;
       
    74 public: unsigned user_dir_bits() const;
       
    75 private: config_cache<unsigned> user_dir_bits_cache;
       
    76 public: unsigned user_dir_slices() const;
       
    77 private: config_cache<unsigned> user_dir_slices_cache;
       
    78 
       
    79 private:
       
    80   mystring read_str(const mystring& name, const mystring& def,
       
    81                     config_cache<mystring>&) const;
       
    82   mystring read_dir(const mystring& name, const mystring& def,
       
    83                     config_cache<mystring>&) const;
       
    84   unsigned read_uns(const mystring& name, unsigned def,
       
    85                     config_cache<unsigned>&) const;
       
    86   strlist read_list(const mystring& name, const strlist& def,
       
    87                     config_cache<strlist>&) const;
       
    88 };
       
    89 
       
    90 extern const configuration* config;
       
    91 
       
    92 #endif