]> git.sesse.net Git - cubemap/blobdiff - main.cpp
Less confusing error message when realpath() fails.
[cubemap] / main.cpp
index 75c36d8d6a409c025d67e65ba092b67a0ba85d91..8430c207134ee026bb9fcb45713eea70ee0c746e 100644 (file)
--- a/main.cpp
+++ b/main.cpp
@@ -275,11 +275,11 @@ int main(int argc, char **argv)
        char config_filename_canon[PATH_MAX];
 
        if (realpath(argv[0], argv0_canon) == NULL) {
-               log_perror("realpath");
+               log_perror(argv[0]);
                exit(1);
        }
        if (realpath(config_filename.c_str(), config_filename_canon) == NULL) {
-               log_perror("realpath");
+               log_perror(config_filename.c_str());
                exit(1);
        }
 
@@ -291,6 +291,16 @@ int main(int argc, char **argv)
        if (test_config) {
                exit(0);
        }
+       
+       // Ideally we'd like to daemonize only when we've started up all threads etc.,
+       // but daemon() forks, which is not good in multithreaded software, so we'll
+       // have to do it here.
+       if (config.daemonize) {
+               if (daemon(0, 0) == -1) {
+                       log_perror("daemon");
+                       exit(1);
+               }
+       }
 
 start:
        // Open logs as soon as possible.
@@ -417,7 +427,7 @@ start:
        }
 
        // OK, so the signal was SIGHUP. Check that the new config is okay, then exec the new binary.
-       if (!dry_run_config(argv[0], config_filename)) {
+       if (!dry_run_config(argv0_canon, config_filename_canon)) {
                open_logs(config.log_destinations);
                log(ERROR, "%s --test-config failed. Restarting old version instead of new.", argv[0]);
                hupped = false;