diff options
-rw-r--r-- | nix/nix-daemon/guix-daemon.cc | 32 |
1 files changed, 22 insertions, 10 deletions
diff --git a/nix/nix-daemon/guix-daemon.cc b/nix/nix-daemon/guix-daemon.cc index 459c794f5d..6ffc8f04ad 100644 --- a/nix/nix-daemon/guix-daemon.cc +++ b/nix/nix-daemon/guix-daemon.cc @@ -27,6 +27,7 @@ #include <argp.h> #include <unistd.h> #include <sys/types.h> +#include <exception> /* Variables used by `nix-daemon.cc'. */ volatile ::sig_atomic_t blockInt; @@ -170,18 +171,29 @@ main (int argc, char *argv[]) settings.useChroot = false; #endif - settings.processEnvironment (); + argvSaved = argv; + + try + { + settings.processEnvironment (); - /* FIXME: Disable substitutes until we have something that works. */ - settings.useSubstitutes = false; - settings.substituters.clear (); + /* FIXME: Disable substitutes until we have something that works. */ + settings.useSubstitutes = false; + settings.substituters.clear (); - argp_parse (&argp, argc, argv, 0, 0, 0); + argp_parse (&argp, argc, argv, 0, 0, 0); - if (geteuid () == 0 && settings.buildUsersGroup.empty ()) - fprintf (stderr, "warning: running as root is highly recommended, " - "unless `--build-users-group' is used\n"); + if (geteuid () == 0 && settings.buildUsersGroup.empty ()) + fprintf (stderr, "warning: running as root is highly recommended, " + "unless `--build-users-group' is used\n"); - argvSaved = argv; - run (nothing); + run (nothing); + } + catch (std::exception &e) + { + fprintf (stderr, "error: %s\n", e.what ()); + return EXIT_FAILURE; + } + + return EXIT_SUCCESS; /* never reached */ } |