#include <list>
#include <string>
+#include "ConfUtils.h"
+
using namespace std;
struct ltstr
return ret;
}
-typedef map<string, struct conf_line *> ConfMap;
-
-class ConfFile {
- int fd;
- char *filename;
- map<string, ConfMap *> sections;
- ConfMap map;
- list<struct conf_line *> list;
-
- struct conf_line *_find_var(char *section, char* var);
-public:
- ConfFile(char *fname) : filename(strdup(fname)) {}
- ~ConfFile() { free(filename); }
-
- int parse();
- int read_int(char *section, char *var, int *val, int def_val);
- int read_bool(char *section, char *var, bool *val, bool def_val);
- int read_str(char *section, char *var, char *val, int size, char *def_val);
- int read_float(char *section, char *var, float *val, float def_val);
-
- int write_int(char *section, char *var, int val);
-
- void dump();
-};
-
static int _str_cat(char *str1, int max, char *str2)
{
int len;
_dout_need_open = true;
}
+
+void parse_config_file(char *fname)
+{
+ ConfFile cf(fname);
+
+ cf.parse();
+
+#define CF_READ(section, type, field, inout) \
+ cf.read_#type(section, ##field, &inout, inout)
+
+ CF_READ("global", int, num_mon, g_conf.num_mon);
+ CF_READ("global", int, num_mon, g_conf.num_mds);
+ CF_READ("global", int, num_mon, g_conf.num_osd);
+ CF_READ("global", bool, mkfs, g_conf.mkfs);
+ CF_READ("global", bool, daemonize, g_conf.daemonize);
+ CF_READ("global", bool, file_logs, g_conf.file_logs);
+ CF_READ("global", bool, log, g_conf.log);
+ CF_READ("global", int, log_interval, g_conf.log_interval);
+ CF_READ("global", str, log_name, g_conf.log_name);
+ CF_READ("global", bool, log_messages, g_conf.log_messages);
+ CF_READ("global", bool, log_pins, g_conf.log_pins);
+ CF_READ("global", bool, dout_dir, g_conf.dout_dir);
+ CF_READ("global", bool, dout_sym_dir, g_conf.dout_sym_dir);
+}
+
void parse_config_options(std::vector<const char*>& args, bool open)
{
std::vector<const char*> nargs;