From: Lennart Poettering Date: Mon, 26 Mar 2018 17:20:47 +0000 (+0200) Subject: fileio: add parse_env_filev() that is like parse_env_file() but takes a va_list X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=1049fbda947f856942a693f011fe013a2ee798f0;p=elogind.git fileio: add parse_env_filev() that is like parse_env_file() but takes a va_list --- 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);