diff options
Diffstat (limited to 'src/daemon/settings.c')
-rw-r--r-- | src/daemon/settings.c | 45 |
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); +} |