--- /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<class T>
+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<mystring> autoresponse_dir_cache;
+public: mystring autoresponse_file() const;
+private: config_cache<mystring> autoresponse_file_cache;
+public: mystring bulletin_dir() const;
+private: config_cache<mystring> bulletin_dir_cache;
+public: unsigned default_expiry() const;
+private: config_cache<unsigned> default_expiry_cache;
+public: mystring default_maildir() const;
+private: config_cache<mystring> default_maildir_cache;
+public: unsigned default_msgcount() const;
+private: config_cache<unsigned> default_msgcount_cache;
+public: unsigned default_msgsize() const;
+private: config_cache<unsigned> default_msgsize_cache;
+public: unsigned default_hardquota() const;
+private: config_cache<unsigned> default_hardquota_cache;
+public: unsigned default_softquota() const;
+private: config_cache<unsigned> default_softquota_cache;
+public: mystring default_username() const;
+private: config_cache<mystring> default_username_cache;
+public: mystring error_maildir() const;
+private: config_cache<mystring> error_maildir_cache;
+public: mystring global_bulletin_dir() const;
+private: config_cache<mystring> global_bulletin_dir_cache;
+public: mystring maildir_arg_str() const;
+private: config_cache<mystring> maildir_arg_str_cache;
+public: mystring password_file() const;
+private: config_cache<mystring> password_file_cache;
+public: strlist postmaster_aliases() const;
+private: config_cache<strlist> postmaster_aliases_cache;
+public: mystring postmaster_email() const;
+private: config_cache<mystring> postmaster_email_cache;
+public: mystring qmail_root() const;
+private: config_cache<mystring> qmail_root_cache;
+public: mystring separators() const;
+private: config_cache<mystring> separators_cache;
+public: mystring socket_file() const;
+private: config_cache<mystring> socket_file_cache;
+public: mystring user_dir() const;
+private: config_cache<mystring> user_dir_cache;
+public: unsigned user_dir_bits() const;
+private: config_cache<unsigned> user_dir_bits_cache;
+public: unsigned user_dir_slices() const;
+private: config_cache<unsigned> user_dir_slices_cache;
+
+private:
+ mystring read_str(const mystring& name, const mystring& def,
+ config_cache<mystring>&) const;
+ mystring read_dir(const mystring& name, const mystring& def,
+ config_cache<mystring>&) const;
+ unsigned read_uns(const mystring& name, unsigned def,
+ config_cache<unsigned>&) const;
+ strlist read_list(const mystring& name, const strlist& def,
+ config_cache<strlist>&) const;
+};
+
+extern const configuration* config;
+
+#endif