chiark / gitweb /
log: read log settings from the environment
[elogind.git] / main.c
diff --git a/main.c b/main.c
index 4456bde638135ef678856752fb8f2a5c18eb774f..86ccc72a168be8b7472fe062f2137b2e1c741cfa 100644 (file)
--- a/main.c
+++ b/main.c
 #include <errno.h>
 #include <string.h>
 #include <unistd.h>
+#include <sys/types.h>
+#include <sys/stat.h>
 
 #include "manager.h"
 #include "log.h"
+#include "mount-setup.h"
 
 int main(int argc, char *argv[]) {
         Manager *m = NULL;
         Unit *target = NULL;
         Job *job = NULL;
         int r, retval = 1;
+        const char *default_unit;
 
-        assert_se(set_unit_path("test1") >= 0);
+        if (argc >= 2)
+                default_unit = argv[1];
+        else
+                default_unit = SPECIAL_DEFAULT_TARGET;
+
+        /* Move out of the way, so that we won't block unmounts */
+        assert_se(chdir("/")  == 0);
+
+        /* Reset all signal handlers. */
+        assert_se(reset_all_signal_handlers() == 0);
+
+        /* Become a session leader if we aren't one yet. */
+        setsid();
+
+        /* Disable the umask logic */
+        umask(0);
+
+        /* Make sure D-Bus doesn't fiddle with the SIGPIPE handlers */
+        dbus_connection_set_change_sigpipe(FALSE);
+
+        /* Mount /dev, /sys and friends */
+        mount_setup();
+
+        /* Set up logging */
+        log_set_target(LOG_TARGET_CONSOLE);
+
+        /* Open the logging devices, if possible and necessary*/
+        log_open_syslog();
+        log_open_kmsg();
 
         if ((r = manager_new(&m)) < 0) {
                 log_error("Failed to allocate manager object: %s", strerror(-r));
@@ -47,7 +79,9 @@ int main(int argc, char *argv[]) {
                 goto finish;
         }
 
-        if ((r = manager_load_unit(m, SPECIAL_DEFAULT_TARGET, &target)) < 0) {
+        log_debug("Activating default unit: %s", default_unit);
+
+        if ((r = manager_load_unit(m, default_unit, &target)) < 0) {
                 log_error("Failed to load default target: %s", strerror(-r));
                 goto finish;
         }