diff options
author | 2019-03-31 04:16:24 +0300 | |
---|---|---|
committer | 2019-04-01 16:04:11 +0300 | |
commit | bb736d606a28d4ab7d6d8d9f939c003fdf273274 (patch) | |
tree | ee7d224502e2c333b545de4a65d6117aaadfad98 /src/daemon | |
parent | de18684a25cdc1e310636c5f74d4e901881b5710 (diff) | |
download | usurpation-bb736d606a28d4ab7d6d8d9f939c003fdf273274.tar.gz usurpation-bb736d606a28d4ab7d6d8d9f939c003fdf273274.tar.bz2 usurpation-bb736d606a28d4ab7d6d8d9f939c003fdf273274.zip |
daemon: employ a flags settings variable.
We now have a settings variable for holding various flags.
Turn the daemonize setting to a flag.
NOTE: the project should not have compiled since commit
de18684a25cdc1e310636c5f74d4e901881b5710
but due to some unexplained circumstances, no pre-commit
build testing failed.
This have been fixed.
This commit closes Ticket 25.
Signed-off-by: Gediminas Jakutis <gediminas@varciai.lt>
Diffstat (limited to 'src/daemon')
-rw-r--r-- | src/daemon/meson.build | 3 | ||||
-rw-r--r-- | src/daemon/settings.c | 33 | ||||
-rw-r--r-- | src/daemon/settings_private.h | 35 |
3 files changed, 62 insertions, 9 deletions
diff --git a/src/daemon/meson.build b/src/daemon/meson.build index f83613c..44fa299 100644 --- a/src/daemon/meson.build +++ b/src/daemon/meson.build @@ -1,7 +1,8 @@ d_filenames = [ 'main.c', 'settings.c', - 'net.c', + 'net.c', + 'settings_private.h', ] d_conf_filenames = [ diff --git a/src/daemon/settings.c b/src/daemon/settings.c index 3777f23..9c4011f 100644 --- a/src/daemon/settings.c +++ b/src/daemon/settings.c @@ -19,11 +19,7 @@ */ #include "settings.h" - -static struct settings { - int daemonize; - unsigned short int port; -} settings; +#include "settings_private.h" /* TODO: should be, in this order: looking at options provided via command * line arguments, looking at at /etc/conf.d/usurpation.conf or @@ -31,16 +27,37 @@ static struct settings { */ void settings_init(void) { - settings.daemonize =0; - settings.port = 6996 + unset_flag(flag_daemonize); + settings.port = 6996; } int setting_detach(void) { - return settings.daemonize; + return test_flag(flag_daemonize); } unsigned short int setting_port(void) { return settings.port; } + +/* could be a one-liner, but let's make the logic more obvious */ +int test_flag(unsigned int flag) +{ + int ret; + + ret = settings.flags & flag; + ret = !!ret; + + return ret; +} + +void set_flag(unsigned int flag) +{ + settings.flags |= flag; +} + +void unset_flag(unsigned int flag) +{ + settings.flags &= ~flag; +} diff --git a/src/daemon/settings_private.h b/src/daemon/settings_private.h new file mode 100644 index 0000000..57ad24c --- /dev/null +++ b/src/daemon/settings_private.h @@ -0,0 +1,35 @@ +/* + * Usurpation – server daemon settings handling, private header + * + * Copyright (C) 2019 Gediminas Jakutis + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; version 2.1 + * of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef USURPATION_SETTINGS_PRIVATE_H +#define USURPATION_SETTINGS_PRIVATE_H + +static const unsigned int flag_daemonize = 1 << 0; /* 1st bit */ + +static struct settings { + unsigned int flags; + unsigned short int port; +} settings; + +int test_flag(unsigned int flag); +void set_flag(unsigned int flag); +void unset_flag(unsigned int flag); + +#endif /* USURPATION_SETTINGS_PRIVATE_H */ |