summaryrefslogtreecommitdiff
path: root/src/login/logind.c
diff options
context:
space:
mode:
authorSven Eden <yamakuzure@gmx.net>2017-08-16 10:28:51 +0200
committerSven Eden <yamakuzure@gmx.net>2017-08-16 10:30:24 +0200
commit132565d5bc5f179532fe56c08abbba979e342a35 (patch)
tree8fb64992be5d4e5b217d46ae15c77aee53f3826e /src/login/logind.c
parentbd290286fb032bfdb03901202245621ccc2908ba (diff)
Prep v235: Allow elogind to daemonize itself with "-D|--daemon".
Diffstat (limited to 'src/login/logind.c')
-rw-r--r--src/login/logind.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/login/logind.c b/src/login/logind.c
index b09ecf611..b66f9a3a5 100644
--- a/src/login/logind.c
+++ b/src/login/logind.c
@@ -1280,6 +1280,25 @@ int main(int argc, char *argv[]) {
umask(0022);
+#if 1 /// elogind allows to be daemonized using one argument "-D" / "--daemon"
+ if (argc == 2) {
+
+ if (!argv[1] || (0 == strlen(argv[1]))
+ || ( !streq(argv[1], "-D")
+ && !streq(argv[1], "--daemon") ) ) {
+ fprintf(stderr, "%s [-D|--daemon]\n", argv[0]);
+ r = -EINVAL;
+ goto finish;
+ }
+
+ r = elogind_daemonize();
+ if (r)
+ return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS;;
+
+ argc = 1; /* Use the rest of main() as usual */
+ }
+#endif // 1
+
if (argc != 1) {
log_error("This program takes no arguments.");
r = -EINVAL;