diff options
author | Lennart Poettering <lennart@poettering.net> | 2010-04-06 21:59:25 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2010-04-06 21:59:25 +0200 |
commit | 4ade7963ed9c2a0d1a248d291a6fc9a4c4bad8de (patch) | |
tree | c6d396e2edae45055bfef3dd3cbbcd06b763f7ed /main.c | |
parent | 16801e901e87f4ca0c83ea8c09df1ab3d344129e (diff) |
main: move basic setup into main.c
Diffstat (limited to 'main.c')
-rw-r--r-- | main.c | 28 |
1 files changed, 28 insertions, 0 deletions
@@ -25,9 +25,12 @@ #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; @@ -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; |