]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
env-file: introduce parse_env_file_fdv()
authorYu Watanabe <watanabe.yu+github@gmail.com>
Sat, 8 Apr 2023 08:48:04 +0000 (17:48 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 11 Apr 2023 03:33:14 +0000 (12:33 +0900)
src/basic/env-file.c
src/basic/env-file.h

index 01ed443d5f4d10af91fc5baeca7f5b5063187b02..7b3e209ddcac6aa34dcf2a24ba6ed84287789f98 100644 (file)
@@ -359,6 +359,23 @@ int parse_env_filev(
         return r;
 }
 
+int parse_env_file_fdv(int fd, const char *fname, va_list ap) {
+        _cleanup_fclose_ FILE *f = NULL;
+        va_list aq;
+        int r;
+
+        assert(fd >= 0);
+
+        r = fdopen_independent(fd, "re", &f);
+        if (r < 0)
+                return r;
+
+        va_copy(aq, ap);
+        r = parse_env_file_internal(f, fname, parse_env_file_push, &aq);
+        va_end(aq);
+        return r;
+}
+
 int parse_env_file_sentinel(
                 FILE *f,
                 const char *fname,
@@ -381,18 +398,13 @@ int parse_env_file_fd_sentinel(
                 const char *fname, /* only used for logging */
                 ...) {
 
-        _cleanup_fclose_ FILE *f = NULL;
         va_list ap;
         int r;
 
         assert(fd >= 0);
 
-        r = fdopen_independent(fd, "re", &f);
-        if (r < 0)
-                return r;
-
         va_start(ap, fname);
-        r = parse_env_filev(f, fname, ap);
+        r = parse_env_file_fdv(fd, fname, ap);
         va_end(ap);
 
         return r;
index fa22d2209c61c7538189205343e0a5fd9afac66f..2465eeddf4d6e3d7de6ac629783a9967d1f88b48 100644 (file)
@@ -8,6 +8,7 @@
 #include "macro.h"
 
 int parse_env_filev(FILE *f, const char *fname, va_list ap);
+int parse_env_file_fdv(int fd, const char *fname, va_list ap);
 int parse_env_file_sentinel(FILE *f, const char *fname, ...) _sentinel_;
 #define parse_env_file(f, fname, ...) parse_env_file_sentinel(f, fname, __VA_ARGS__, NULL)
 int parse_env_file_fd_sentinel(int fd, const char *fname, ...) _sentinel_;