summaryrefslogtreecommitdiff
path: root/src/basic
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2018-03-26 19:20:47 +0200
committerSven Eden <yamakuzure@gmx.net>2018-08-24 16:47:08 +0200
commit1049fbda947f856942a693f011fe013a2ee798f0 (patch)
tree3ee098f288488f3e407f701eee5b39ed453c003f /src/basic
parentff922b481d88c83594c4a97352067f5b17b74e67 (diff)
fileio: add parse_env_filev() that is like parse_env_file() but takes a va_list
Diffstat (limited to 'src/basic')
-rw-r--r--src/basic/fileio.c29
-rw-r--r--src/basic/fileio.h1
2 files changed, 25 insertions, 5 deletions
diff --git a/src/basic/fileio.c b/src/basic/fileio.c
index 0efda65ae..8b744c11e 100644
--- a/src/basic/fileio.c
+++ b/src/basic/fileio.c
@@ -676,22 +676,41 @@ static int parse_env_file_push(
return 0;
}
-int parse_env_file(
+int parse_env_filev(
FILE *f,
const char *fname,
- const char *newline, ...) {
+ const char *newline,
+ va_list ap) {
- va_list ap;
int r, n_pushed = 0;
+ va_list aq;
if (!newline)
newline = NEWLINE;
+ va_copy(aq, ap);
+ r = parse_env_file_internal(f, fname, newline, parse_env_file_push, &aq, &n_pushed);
+ va_end(aq);
+ if (r < 0)
+ return r;
+
+ return n_pushed;
+}
+
+int parse_env_file(
+ FILE *f,
+ const char *fname,
+ const char *newline,
+ ...) {
+
+ va_list ap;
+ int r;
+
va_start(ap, newline);
- r = parse_env_file_internal(f, fname, newline, parse_env_file_push, &ap, &n_pushed);
+ r = parse_env_filev(f, fname, newline, ap);
va_end(ap);
- return r < 0 ? r : n_pushed;
+ return r;
}
#if 0 /// UNNEEDED by elogind
diff --git a/src/basic/fileio.h b/src/basic/fileio.h
index e34bd388b..ee17f4091 100644
--- a/src/basic/fileio.h
+++ b/src/basic/fileio.h
@@ -45,6 +45,7 @@ int read_full_stream(FILE *f, char **contents, size_t *size);
int verify_file(const char *fn, const char *blob, bool accept_extra_nl);
+int parse_env_filev(FILE *f, const char *fname, const char *separator, va_list ap);
int parse_env_file(FILE *f, const char *fname, const char *separator, ...) _sentinel_;
#if 0 /// UNNEEDED by elogind
int load_env_file(FILE *f, const char *fname, const char *separator, char ***l);