baa40e28 |
1 | /* |
2 | * Copyright (c) 2014 Ian Sutton <ian@kremlin.cc> |
3 | * |
4 | * Permission to use, copy, modify, and distribute this software for any |
5 | * purpose with or without fee is hereby granted, provided that the above |
6 | * copyright notice and this permission notice appear in all copies. |
7 | * |
8 | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
9 | * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
10 | * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
11 | * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
12 | * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
13 | * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
14 | * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
15 | */ |
16 | |
387173cb |
17 | #include <gio/gio.h> |
c3b84b0a |
18 | #include <glib.h> |
19 | #include <glib/gprintf.h> |
20 | #include <glib/gstdio.h> |
828caf9a |
21 | |
1c38000a |
22 | #include "config.c" |
828caf9a |
23 | |
b7f8df44 |
24 | #include "interfaces/hostnamed/hostnamed.c" |
828caf9a |
25 | #include "interfaces/localed/localed.c" |
26 | #include "interfaces/timedated/timedated.c" |
27 | #include "interfaces/logind/logind.c" |
496f5d66 |
28 | |
c3b84b0a |
29 | gboolean systemd_utils_init() { |
c09a09bf |
30 | |
31 | if(!config_init()) { |
94dc7ef0 |
32 | gchar *tmp; |
33 | tmp = "/etc/systemd_compat.conf"; |
34 | |
828caf9a |
35 | g_printf("FAILED to open config %s! did you `make install`?\n", tmp); |
94dc7ef0 |
36 | return FALSE; |
37 | } |
94dc7ef0 |
38 | return TRUE; |
c3b84b0a |
39 | } |
08e17ea2 |
40 | |
c3b84b0a |
41 | int main() { |
08e17ea2 |
42 | |
c09a09bf |
43 | GMainLoop *mloop; |
44 | mloop = g_main_loop_new(NULL, TRUE); |
45 | |
46 | #ifdef COMPILE_HOSTNAMED_BINARY |
47 | hostnamed_init(); |
48 | #endif |
49 | #ifdef COMPILE_LOCALED_BINARY |
50 | localed_init(); |
51 | #endif |
52 | #ifdef COMPILE_TIMEDATED_BINARY |
53 | #endif |
54 | #ifdef COMPILE_LOGIND_BINARY |
55 | #endif |
56 | |
57 | #if !defined(COMPILE_HOSTNAMED_BINARY) && !defined(COMPILE_LOCALED_BINARY) && !defined(COMPILE_TIMEDATED_BINARY) && !defined(COMPILE_LOGIND_BINARY) |
58 | |
59 | if(!systemd_utils_init()) { |
60 | g_printf("failed to init, are you root?\n"); |
61 | return 1; /* TODO errno properly. grep for all "return 1;"s, not TODO'ing each one */ |
62 | } |
63 | |
64 | gboolean hostnamed_init_ok, localed_init_ok; |
65 | GPid *hostnamed_pid, *localed_pid; |
66 | gchar *hostnamed_argv[0], *localed_argv[0]; |
67 | GSource *hostnamed_source, *localed_source, *timedated_source, *logind_source; |
68 | |
69 | hostnamed_argv[0] = "/usr/local/libexec/systemd-hostnamed-handler"; |
70 | localed_argv[0] = "/usr/local/libexec/systemd-localed-handler"; |
71 | |
72 | hostnamed_init_ok = g_spawn_async(NULL, hostnamed_argv, NULL, G_SPAWN_DEFAULT, NULL, NULL, hostnamed_pid, NULL); |
73 | localed_init_ok = g_spawn_async(NULL, localed_argv, NULL, G_SPAWN_DEFAULT, NULL, NULL, localed_pid, NULL); |
74 | |
75 | hostnamed_source = g_child_watch_source_new(*hostnamed_pid); |
76 | localed_source = g_child_watch_source_new(*localed_pid); |
c3b84b0a |
77 | |
c09a09bf |
78 | /*g_source_attach(hostnamed_source, NULL); |
79 | g_source_attach(localed_source, NULL);*/ |
c3b84b0a |
80 | |
c09a09bf |
81 | #endif |
c3b84b0a |
82 | |
c09a09bf |
83 | g_main_loop_run(mloop); |
84 | g_main_loop_unref(mloop); |
e8c57a5d |
85 | |
c09a09bf |
86 | return 0; |
ea207ed3 |
87 | } |