lib/config/configrc.h.in
changeset 0 6f7a81934006
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lib/config/configrc.h.in	Wed Jan 16 22:39:43 2008 +0100
@@ -0,0 +1,49 @@
+#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;
+
+%%LIST%%
+
+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