diff -r 000000000000 -r 6f7a81934006 lib/config/configrc.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/config/configrc.h Wed Jan 16 22:39:43 2008 +0100 @@ -0,0 +1,92 @@ +#ifndef VMAILMGR__CONFIG_RC__H__ +#define VMAILMGR__CONFIG_RC__H__ + +#ifndef GLOBAL_CONFIG_DIR +#define GLOBAL_CONFIG_DIR "/etc/vmailmgr" +#endif + +#ifndef LOCAL_CONFIG_DIR +#define LOCAL_CONFIG_DIR ".vmailmgr" +#endif + +#include "mystring/mystring.h" +#include "misc/strlist.h" + +template +struct config_cache +{ + T* value; + config_cache() : value(0) { } + ~config_cache() { delete value; } +}; + +class configuration +{ +public: + configuration(); + configuration(const configuration* prev, const mystring& dir); + ~configuration(); + + configuration const * parent; + + const mystring directory; + +public: mystring autoresponse_dir() const; +private: config_cache autoresponse_dir_cache; +public: mystring autoresponse_file() const; +private: config_cache autoresponse_file_cache; +public: mystring bulletin_dir() const; +private: config_cache bulletin_dir_cache; +public: unsigned default_expiry() const; +private: config_cache default_expiry_cache; +public: mystring default_maildir() const; +private: config_cache default_maildir_cache; +public: unsigned default_msgcount() const; +private: config_cache default_msgcount_cache; +public: unsigned default_msgsize() const; +private: config_cache default_msgsize_cache; +public: unsigned default_hardquota() const; +private: config_cache default_hardquota_cache; +public: unsigned default_softquota() const; +private: config_cache default_softquota_cache; +public: mystring default_username() const; +private: config_cache default_username_cache; +public: mystring error_maildir() const; +private: config_cache error_maildir_cache; +public: mystring global_bulletin_dir() const; +private: config_cache global_bulletin_dir_cache; +public: mystring maildir_arg_str() const; +private: config_cache maildir_arg_str_cache; +public: mystring password_file() const; +private: config_cache password_file_cache; +public: strlist postmaster_aliases() const; +private: config_cache postmaster_aliases_cache; +public: mystring postmaster_email() const; +private: config_cache postmaster_email_cache; +public: mystring qmail_root() const; +private: config_cache qmail_root_cache; +public: mystring separators() const; +private: config_cache separators_cache; +public: mystring socket_file() const; +private: config_cache socket_file_cache; +public: mystring user_dir() const; +private: config_cache user_dir_cache; +public: unsigned user_dir_bits() const; +private: config_cache user_dir_bits_cache; +public: unsigned user_dir_slices() const; +private: config_cache user_dir_slices_cache; + +private: + mystring read_str(const mystring& name, const mystring& def, + config_cache&) const; + mystring read_dir(const mystring& name, const mystring& def, + config_cache&) const; + unsigned read_uns(const mystring& name, unsigned def, + config_cache&) const; + strlist read_list(const mystring& name, const strlist& def, + config_cache&) const; +}; + +extern const configuration* config; + +#endif