chiark / gitweb /
verbs: suppress debug log message if SYSTEMD_OFFLINE is not set
authorLennart Poettering <lennart@poettering.net>
Wed, 20 Dec 2017 18:38:15 +0000 (19:38 +0100)
committerSven Eden <yamakuzure@gmx.net>
Wed, 30 May 2018 05:50:00 +0000 (07:50 +0200)
If SYSTEMD_OFFLINE is not set getenv_bool() for it will return -ENXIO,
which is nothing we should log about, not even at LOG_DEBUG level.

src/basic/verbs.c

index ce1d304d9f63556162ac2742bb18e676e529b85b..4f17d39f8006ed9938f179190466e154727efe6d 100644 (file)
 #include "verbs.h"
 #include "virt.h"
 
-/* Wraps running_in_chroot() which is used in various places,
- * but also adds an environment variable check so external processes
- * can reliably force this on.
+/* Wraps running_in_chroot() which is used in various places, but also adds an environment variable check so external
+ * processes can reliably force this on.
  */
 bool running_in_chroot_or_offline(void) {
         int r;
 
-        /* Added to support use cases like rpm-ostree, where from %post
-         * scripts we only want to execute "preset", but not "start"/"restart"
-         * for example.
+        /* Added to support use cases like rpm-ostree, where from %post scripts we only want to execute "preset", but
+         * not "start"/"restart" for example.
          *
          * See ENVIRONMENT.md for docs.
          */
         r = getenv_bool("SYSTEMD_OFFLINE");
-        if (r < 0)
-                log_debug_errno(r, "Parsing SYSTEMD_OFFLINE: %m");
-        else if (r == 0)
-                return false;
-        else
-                return true;
-
-        /* We've had this condition check for a long time which basically
-         * checks for legacy chroot case like Fedora's
-         * "mock", which is used for package builds.  We don't want
-         * to try to start systemd services there, since without --new-chroot
-         * we don't even have systemd running, and even if we did, adding
-         * a concept of background daemons to builds would be an enormous change,
-         * requiring considering things like how the journal output is handled, etc.
-         * And there's really not a use case today for a build talking to a service.
+        if (r < 0 && r != -ENXIO)
+                log_debug_errno(r, "Failed to parse $SYSTEMD_OFFLINE: %m");
+        else if (r >= 0)
+                return r > 0;
+
+        /* We've had this condition check for a long time which basically checks for legacy chroot case like Fedora's
+         * "mock", which is used for package builds.  We don't want to try to start systemd services there, since
+         * without --new-chroot we don't even have systemd running, and even if we did, adding a concept of background
+         * daemons to builds would be an enormous change, requiring considering things like how the journal output is
+         * handled, etc.  And there's really not a use case today for a build talking to a service.
          *
          * Note this call itself also looks for a different variable SYSTEMD_IGNORE_CHROOT=1.
          */
         r = running_in_chroot();
         if (r < 0)
                 log_debug_errno(r, "running_in_chroot(): %m");
-        else if (r > 0)
-                return true;
 
-        return false;
+        return r > 0;
 }
 
 int dispatch_verb(int argc, char *argv[], const Verb verbs[], void *userdata) {