diff options
author | 2019-05-19 18:14:28 +0300 | |
---|---|---|
committer | 2019-05-19 18:14:28 +0300 | |
commit | 18121c9b69df99540141453758fe64e99a4efa9a (patch) | |
tree | a0a9ab74318111fee1672673d053fd8d4881c789 /src | |
parent | f09430b7de693d56d3ea0510501150227e3816cd (diff) | |
download | usurpation-18121c9b69df99540141453758fe64e99a4efa9a.tar.gz usurpation-18121c9b69df99540141453758fe64e99a4efa9a.tar.bz2 usurpation-18121c9b69df99540141453758fe64e99a4efa9a.zip |
daemon: Handle new settings vars.
Part of ticket #33
Signed-off-by: Paulius Ratkevičius <paulius.ratkevicius@ktu.edu>
Diffstat (limited to 'src')
-rw-r--r-- | src/daemon/settings.c | 45 | ||||
-rw-r--r-- | src/daemon/settings_private.h | 11 |
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 */ |