#include "alloc-util.h"
#include "ctype.h"
-#include "def.h"
#include "env-util.h"
#include "escape.h"
#include "fd-util.h"
static int parse_env_file_internal(
FILE *f,
const char *fname,
- const char *newline,
int (*push) (const char *filename, unsigned line,
const char *key, char *value, void *userdata, int *n_pushed),
void *userdata,
COMMENT_ESCAPE
} state = PRE_KEY;
- assert(newline);
-
if (f)
r = read_full_stream(f, &contents, NULL);
else
break;
case KEY:
- if (strchr(newline, c)) {
+ if (strchr(NEWLINE, c)) {
state = PRE_KEY;
line++;
n_key = 0;
break;
case PRE_VALUE:
- if (strchr(newline, c)) {
+ if (strchr(NEWLINE, c)) {
state = PRE_KEY;
line++;
key[n_key] = 0;
break;
case VALUE:
- if (strchr(newline, c)) {
+ if (strchr(NEWLINE, c)) {
state = PRE_KEY;
line++;
case VALUE_ESCAPE:
state = VALUE;
- if (!strchr(newline, c)) {
+ if (!strchr(NEWLINE, c)) {
/* Escaped newlines we eat up entirely */
if (!GREEDY_REALLOC(value, value_alloc, n_value+2))
return -ENOMEM;
case SINGLE_QUOTE_VALUE_ESCAPE:
state = SINGLE_QUOTE_VALUE;
- if (!strchr(newline, c)) {
+ if (!strchr(NEWLINE, c)) {
if (!GREEDY_REALLOC(value, value_alloc, n_value+2))
return -ENOMEM;
case DOUBLE_QUOTE_VALUE_ESCAPE:
state = DOUBLE_QUOTE_VALUE;
- if (!strchr(newline, c)) {
+ if (!strchr(NEWLINE, c)) {
if (!GREEDY_REALLOC(value, value_alloc, n_value+2))
return -ENOMEM;
case COMMENT:
if (c == '\\')
state = COMMENT_ESCAPE;
- else if (strchr(newline, c)) {
+ else if (strchr(NEWLINE, c)) {
state = PRE_KEY;
line++;
}
int parse_env_filev(
FILE *f,
const char *fname,
- const char *newline,
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);
+ r = parse_env_file_internal(f, fname, parse_env_file_push, &aq, &n_pushed);
va_end(aq);
if (r < 0)
return r;
return n_pushed;
}
-int parse_env_file(
+int parse_env_file_sentinel(
FILE *f,
const char *fname,
- const char *newline,
...) {
va_list ap;
int r;
- va_start(ap, newline);
- r = parse_env_filev(f, fname, newline, ap);
+ va_start(ap, fname);
+ r = parse_env_filev(f, fname, ap);
va_end(ap);
return r;
return 0;
}
-int load_env_file(FILE *f, const char *fname, const char *newline, char ***rl) {
+int load_env_file(FILE *f, const char *fname, char ***rl) {
char **m = NULL;
int r;
- if (!newline)
- newline = NEWLINE;
-
- r = parse_env_file_internal(f, fname, newline, load_env_file_push, &m, NULL);
+ r = parse_env_file_internal(f, fname, load_env_file_push, &m, NULL);
if (r < 0) {
strv_free(m);
return r;
return 0;
}
-int load_env_file_pairs(FILE *f, const char *fname, const char *newline, char ***rl) {
+int load_env_file_pairs(FILE *f, const char *fname, char ***rl) {
char **m = NULL;
int r;
- if (!newline)
- newline = NEWLINE;
-
- r = parse_env_file_internal(f, fname, newline, load_env_file_push_pairs, &m, NULL);
+ r = parse_env_file_internal(f, fname, load_env_file_push_pairs, &m, NULL);
if (r < 0) {
strv_free(m);
return r;
* plus "extended" substitutions, unlike other exported parsing functions.
*/
- return parse_env_file_internal(f, fname, NEWLINE, merge_env_file_push, env, NULL);
+ return parse_env_file_internal(f, fname, merge_env_file_push, env, NULL);
}
static void write_env_var(FILE *f, const char *v) {