chiark / gitweb /
fragment: allow prefixing of the EnvironmentFile= path with - to ignore errors
authorLennart Poettering <lennart@poettering.net>
Thu, 6 Jan 2011 00:39:08 +0000 (01:39 +0100)
committerLennart Poettering <lennart@poettering.net>
Thu, 6 Jan 2011 00:39:08 +0000 (01:39 +0100)
TODO
man/systemd.exec.xml
src/load-fragment.c

diff --git a/TODO b/TODO
index fb23de9..7f3ae5f 100644 (file)
--- a/TODO
+++ b/TODO
@@ -1,3 +1,5 @@
+* dbus should run with oom adjust set
+
 * support caching password questions in plymouth and on the console
   https://bugzilla.redhat.com/show_bug.cgi?id=655538
 
 
 * global defaults for StandardOuput=xxx
 
-* Make EnvironmentFile=-/fooobar/waldo ingnore errors while reading /foobar/waldo
-
 * mkswap/mke2fs is called on wrong devices in crypto devices.
 
 Fedora:
index b24792b..d6ac5ae 100644 (file)
                                 contain new-line separated variable
                                 assignments. Empty lines and lines
                                 starting with ; or # will be ignored,
-                                which may be used for
-                                commenting.</para></listitem>
+                                which may be used for commenting. The
+                                argument passed should be an absolute
+                                file name, optionally prefixed with
+                                "-", which indicates that if the file
+                                does not exist it won't be read and no
+                                error or warning message is
+                                logged.</para></listitem>
                         </varlistentry>
 
                         <varlistentry>
index 2818632..334dd68 100644 (file)
@@ -1348,14 +1348,26 @@ static int config_parse_env_file(
         FILE *f;
         int r;
         char ***env = data;
+        bool ignore = false;
 
         assert(filename);
         assert(lvalue);
         assert(rvalue);
         assert(data);
 
+        if (rvalue[0] == '-') {
+                ignore = true;
+                rvalue++;
+        }
+
+        if (!path_is_absolute(rvalue)) {
+                log_error("[%s:%u] Path '%s' is not absolute, ignoring.", filename, line, rvalue);
+                return 0;
+        }
+
         if (!(f = fopen(rvalue, "re"))) {
-                log_error("[%s:%u] Failed to open environment file '%s', ignoring: %m", filename, line, rvalue);
+                if (!ignore)
+                        log_error("[%s:%u] Failed to open environment file '%s', ignoring: %m", filename, line, rvalue);
                 return 0;
         }