diff options
author | kremlin <ian@kremlin.cc> | 2014-07-08 16:15:51 +0800 |
---|---|---|
committer | kremlin <ian@kremlin.cc> | 2014-07-08 16:15:51 +0800 |
commit | c09a09bfcbfbd12fb6b48e06f087429b1b6ac864 (patch) | |
tree | aabd94f29221a52021dc646ff91e0a3131f3c527 /src/main.c | |
parent | 828caf9aaa256154d5998d7d3f6b57b434550a7c (diff) | |
download | systembsd-c09a09bfcbfbd12fb6b48e06f087429b1b6ac864.tar systembsd-c09a09bfcbfbd12fb6b48e06f087429b1b6ac864.tar.gz systembsd-c09a09bfcbfbd12fb6b48e06f087429b1b6ac864.tar.bz2 systembsd-c09a09bfcbfbd12fb6b48e06f087429b1b6ac864.tar.lz systembsd-c09a09bfcbfbd12fb6b48e06f087429b1b6ac864.tar.xz systembsd-c09a09bfcbfbd12fb6b48e06f087429b1b6ac864.tar.zst systembsd-c09a09bfcbfbd12fb6b48e06f087429b1b6ac864.zip |
more work on managing four interfaces as separate PIDs, new makefile rules for building and installing standalone interface binaries, a little documentation and preproccessor logic
Diffstat (limited to 'src/main.c')
-rw-r--r-- | src/main.c | 55 |
1 files changed, 42 insertions, 13 deletions
@@ -27,7 +27,8 @@ #include "interfaces/logind/logind.c" gboolean systemd_utils_init() { - if(!config_init()) { + + if(!config_init()) { gchar *tmp; tmp = "/etc/systemd_compat.conf"; @@ -39,20 +40,48 @@ gboolean systemd_utils_init() { int main() { - GMainLoop *mloop; - - if(!systemd_utils_init()) { - g_printf("failed to init, are you root?\n"); - return 1; /* TODO errno properly. grep for all "return 1;"s, not TODO'ing each one */ - } + GMainLoop *mloop; + mloop = g_main_loop_new(NULL, TRUE); + + #ifdef COMPILE_HOSTNAMED_BINARY + hostnamed_init(); + #endif + #ifdef COMPILE_LOCALED_BINARY + localed_init(); + #endif + #ifdef COMPILE_TIMEDATED_BINARY + #endif + #ifdef COMPILE_LOGIND_BINARY + #endif + + #if !defined(COMPILE_HOSTNAMED_BINARY) && !defined(COMPILE_LOCALED_BINARY) && !defined(COMPILE_TIMEDATED_BINARY) && !defined(COMPILE_LOGIND_BINARY) + + if(!systemd_utils_init()) { + g_printf("failed to init, are you root?\n"); + return 1; /* TODO errno properly. grep for all "return 1;"s, not TODO'ing each one */ + } + + gboolean hostnamed_init_ok, localed_init_ok; + GPid *hostnamed_pid, *localed_pid; + gchar *hostnamed_argv[0], *localed_argv[0]; + GSource *hostnamed_source, *localed_source, *timedated_source, *logind_source; + + hostnamed_argv[0] = "/usr/local/libexec/systemd-hostnamed-handler"; + localed_argv[0] = "/usr/local/libexec/systemd-localed-handler"; + + hostnamed_init_ok = g_spawn_async(NULL, hostnamed_argv, NULL, G_SPAWN_DEFAULT, NULL, NULL, hostnamed_pid, NULL); + localed_init_ok = g_spawn_async(NULL, localed_argv, NULL, G_SPAWN_DEFAULT, NULL, NULL, localed_pid, NULL); + + hostnamed_source = g_child_watch_source_new(*hostnamed_pid); + localed_source = g_child_watch_source_new(*localed_pid); - hostnamed_init(); - localed_init(); + /*g_source_attach(hostnamed_source, NULL); + g_source_attach(localed_source, NULL);*/ - mloop = g_main_loop_new(NULL, TRUE); + #endif - g_main_loop_run(mloop); - g_main_loop_unref(mloop); + g_main_loop_run(mloop); + g_main_loop_unref(mloop); - return 0; + return 0; } |