summaryrefslogtreecommitdiffstats
path: root/src/daemon/settings.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/daemon/settings.c')
-rw-r--r--src/daemon/settings.c45
1 files changed, 41 insertions, 4 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);
+}