summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/daemon/settings.c45
-rw-r--r--src/daemon/settings_private.h11
2 files changed, 51 insertions, 5 deletions
diff --git a/src/daemon/settings.c b/src/daemon/settings.c
index 2b07b98..822397d 100644
--- a/src/daemon/settings.c
+++ b/src/daemon/settings.c
@@ -38,13 +38,14 @@
*/
void settings_init(void)
{
+ atexit(free_strings);
unset_flag(flag_daemonize);
settings.port = 6996;
settings.verboselevel = USURP_VERBOSITY;
- settings.progname = program_invocation_short_name;
- settings.im_user = "user";
- settings.im_password = "password";
- settings.im_proto = "prpl-irc";
+ settings.progname = strdup(program_invocation_short_name);
+ settings.im_user = strdup("user");
+ settings.im_password = strdup("password");
+ settings.im_proto = strdup("prpl-irc");
#define macro2str(a) _macro2str(a)
#define _macro2str(a) #a
setting_readconf("/" macro2str(SYSCONFDIR) "/usurpation.conf");
@@ -190,3 +191,39 @@ static void set_verbosity(const void * const arg)
settings.verboselevel = strtol(a, NULL, 0);
}
+
+static void set_progname(const void * const arg)
+{
+ const char * const a = arg;
+ free(settings.progname);
+ settings.progname = strdup(a);
+}
+
+static void set_im_user(const void * const arg)
+{
+ const char * const a = arg;
+ free(settings.im_user);
+ settings.im_user = strdup(a);
+}
+
+static void set_im_password(const void * const arg)
+{
+ const char * const a = arg;
+ free(settings.im_password);
+ settings.im_password = strdup(a);
+}
+
+static void set_im_proto(const void * const arg)
+{
+ const char * const a = arg;
+ free(settings.im_proto);
+ settings.im_proto = strdup(a);
+}
+
+static void free_strings(void)
+{
+ free(settings.progname);
+ free(settings.im_user);
+ free(settings.im_password);
+ free(settings.im_proto);
+}
diff --git a/src/daemon/settings_private.h b/src/daemon/settings_private.h
index 0b0680e..3e091ab 100644
--- a/src/daemon/settings_private.h
+++ b/src/daemon/settings_private.h
@@ -48,13 +48,22 @@ static void set_flag(unsigned int flag);
static void unset_flag(unsigned int flag);
static int setting_readconf(const char * const path);
static int setting_handle_config_entry(const char * const entry, const char * const value);
+static void free_strings(void);
static void set_daemonize(const void * const arg);
static void set_port(const void * const arg);
static void set_verbosity(const void * const arg);
+static void set_progname(const void * const arg);
+static void set_im_user(const void * const arg);
+static void set_im_password(const void * const arg);
+static void set_im_proto(const void * const arg);
struct entry_description ent_table[] = {{ "daemonize", set_daemonize },
{ "port", set_port },
- { "verbosity", set_verbosity }};
+ { "verbosity", set_verbosity },
+ { "progname", set_progname },
+ { "user", set_im_user},
+ { "password", set_im_password },
+ { "proto", set_im_proto }};
#endif /* USURPATION_SETTINGS_PRIVATE_H */