chiark / gitweb /
parse_env_file() - return empty value strings like FOO="" as NULL value
[elogind.git] / src / util.c
index bdc194e80c9ce45bde0975d7ef9c5ab4b4482bfd..ce8695be25f6c3fad0ee1e2b06028278b93db824 100644 (file)
@@ -602,7 +602,7 @@ int parse_env_file(
                 const char *fname,
                 const char *seperator, ...) {
 
-        int r;
+        int r = 0;
         char *contents, *p;
 
         assert(fname);
@@ -653,10 +653,18 @@ int parse_env_file(
                                         goto fail;
                                 }
 
+                                if (v[0] == '\0') {
+                                        /* return empty value strings as NULL */
+                                        free(v);
+                                        v = NULL;
+                                }
+
                                 free(*value);
                                 *value = v;
 
                                 p += n;
+
+                                r ++;
                                 break;
                         }
                         va_end(ap);
@@ -666,8 +674,6 @@ int parse_env_file(
                         p += strcspn(p, seperator);
         }
 
-        r = 0;
-
 fail:
         free(contents);
         return r;