From 4ade7963ed9c2a0d1a248d291a6fc9a4c4bad8de Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 6 Apr 2010 21:59:25 +0200 Subject: [PATCH] main: move basic setup into main.c --- main.c | 28 ++++++++++++++++++++++++++++ manager.c | 13 ------------- 2 files changed, 28 insertions(+), 13 deletions(-) diff --git a/main.c b/main.c index 838f5c89e..86ccc72a1 100644 --- a/main.c +++ b/main.c @@ -25,9 +25,12 @@ #include #include #include +#include +#include #include "manager.h" #include "log.h" +#include "mount-setup.h" int main(int argc, char *argv[]) { Manager *m = NULL; @@ -41,6 +44,31 @@ int main(int argc, char *argv[]) { 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)); goto finish; diff --git a/manager.c b/manager.c index 4cfa6b9cd..7d3b8b503 100644 --- a/manager.c +++ b/manager.c @@ -49,8 +49,6 @@ static int manager_setup_signals(Manager *m) { assert(m); - assert_se(reset_all_signal_handlers() == 0); - assert_se(sigemptyset(&mask) == 0); assert_se(sigaddset(&mask, SIGCHLD) == 0); assert_se(sigaddset(&mask, SIGINT) == 0); /* Kernel sends us this on control-alt-del */ @@ -300,23 +298,12 @@ int manager_new(Manager **_m) { if ((r = manager_find_paths(m)) < 0) goto fail; - if (chdir("/") < 0) - log_warning("Failed to chdir to /: %s", strerror(errno)); - - /* Become a session leader if we aren't one yet. */ - setsid(); - if ((r = manager_setup_signals(m)) < 0) goto fail; - if ((r = mount_setup()) < 0) - goto fail; - if ((r = manager_setup_cgroup(m)) < 0) goto fail; - dbus_connection_set_change_sigpipe(FALSE); - /* Try to connect to the busses, if possible. */ if ((r = bus_init_system(m)) < 0 || (r = bus_init_api(m)) < 0) -- 2.30.2