return -errno;
}
- r = load_env_file_pairs(f, NULL, NULL, &new);
+ r = load_env_file_pairs(f, NULL, &new);
if (r < 0)
return r;
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;
int parse_env_file(
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) {
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_;
-int load_env_file(FILE *f, const char *fname, const char *separator, char ***l);
-int load_env_file_pairs(FILE *f, const char *fname, const char *separator, char ***l);
+int parse_env_filev(FILE *f, const char *fname, va_list ap);
+int parse_env_file(FILE *f, const char *fname, ...) _sentinel_;
+int load_env_file(FILE *f, const char *fname, char ***l);
+int load_env_file_pairs(FILE *f, const char *fname, char ***l);
int merge_env_file(char ***env, FILE *f, const char *fname);
return r;
va_start(ap, root);
- r = parse_env_filev(f, p, NEWLINE, ap);
+ r = parse_env_filev(f, p, ap);
va_end(ap);
return r;
if (r < 0)
return r;
- return load_env_file_pairs(f, p, NEWLINE, ret);
+ return load_env_file_pairs(f, p, ret);
}
return -EINVAL;
p = strjoina("/run/systemd/machines/", machine);
- r = parse_env_file(NULL, p, NEWLINE, "LEADER", &s, "CLASS", &class, NULL);
+ r = parse_env_file(NULL, p, "LEADER", &s, "CLASS", &class, NULL);
if (r == -ENOENT)
return -EHOSTDOWN;
if (r < 0)
assert(pglob.gl_pathc > 0);
for (n = 0; n < pglob.gl_pathc; n++) {
- k = load_env_file(NULL, pglob.gl_pathv[n], NULL, &p);
+ k = load_env_file(NULL, pglob.gl_pathv[n], &p);
if (k < 0) {
if (ignore)
continue;
/* Hmm, nothing set on the kernel cmd line? Then let's try /etc/locale.conf */
if (r <= 0) {
- r = parse_env_file(NULL, "/etc/locale.conf", NEWLINE,
+ r = parse_env_file(NULL, "/etc/locale.conf",
"LANG", &variables[VARIABLE_LANG],
"LANGUAGE", &variables[VARIABLE_LANGUAGE],
"LC_CTYPE", &variables[VARIABLE_LC_CTYPE],
if (r < 0 && r != -ENOENT)
return r;
- r = parse_env_file(NULL, "/etc/machine-info", NEWLINE,
+ r = parse_env_file(NULL, "/etc/machine-info",
"PRETTY_HOSTNAME", &c->data[PROP_PRETTY_HOSTNAME],
"ICON_NAME", &c->data[PROP_ICON_NAME],
"CHASSIS", &c->data[PROP_CHASSIS],
assert(c);
- r = load_env_file(NULL, "/etc/machine-info", NULL, &l);
+ r = load_env_file(NULL, "/etc/machine-info", &l);
if (r < 0 && r != -ENOENT)
return r;
if (!u->state_file)
return 0;
- r = parse_env_file(NULL, u->state_file, NEWLINE,
+ r = parse_env_file(NULL, u->state_file,
"LAST_CURSOR", &u->last_cursor,
NULL);
return log_oom();
}
- r = parse_env_file(NULL, stream->state_file, NEWLINE,
+ r = parse_env_file(NULL, stream->state_file,
"PRIORITY", &priority,
"LEVEL_PREFIX", &level_prefix,
"FORWARD_TO_SYSLOG", &forward_to_syslog,
assert_return(machine_name_is_valid(machine), -EINVAL);
p = strjoina("/run/systemd/machines/", machine);
- r = parse_env_file(NULL, p, NEWLINE, "ROOT", &root, "CLASS", &class, NULL);
+ r = parse_env_file(NULL, p, "ROOT", &root, "CLASS", &class, NULL);
if (r == -ENOENT)
return -EHOSTDOWN;
if (r < 0)
if (r < 0)
return r;
- r = parse_env_file(NULL, lease_file, NEWLINE,
+ r = parse_env_file(NULL, lease_file,
"ADDRESS", &address,
"ROUTER", &router,
"NETMASK", &netmask,
if (r < 0)
return r;
- r = parse_env_file(NULL, p, NEWLINE, "STATE", &s, NULL);
+ r = parse_env_file(NULL, p, "STATE", &s, NULL);
if (r == -ENOENT) {
free(s);
s = strdup("offline");
if (r < 0)
return r;
- r = parse_env_file(NULL, p, NEWLINE, "DISPLAY", &s, NULL);
+ r = parse_env_file(NULL, p, "DISPLAY", &s, NULL);
if (r == -ENOENT)
return -ENODATA;
if (r < 0)
variable = require_active ? "ACTIVE_UID" : "UIDS";
- r = parse_env_file(NULL, p, NEWLINE, variable, &s, NULL);
+ r = parse_env_file(NULL, p, variable, &s, NULL);
if (r == -ENOENT)
return 0;
if (r < 0)
if (r < 0)
return r;
- r = parse_env_file(NULL, p, NEWLINE, variable, &s, NULL);
+ r = parse_env_file(NULL, p, variable, &s, NULL);
if (r == -ENOENT || (r >= 0 && isempty(s))) {
if (array)
*array = NULL;
if (r < 0)
return r;
- r = parse_env_file(NULL, p, NEWLINE, "ACTIVE", &s, NULL);
+ r = parse_env_file(NULL, p, "ACTIVE", &s, NULL);
if (r == -ENOENT)
return -ENXIO;
if (r < 0)
if (r < 0)
return r;
- r = parse_env_file(NULL, p, NEWLINE, "REMOTE", &s, NULL);
+ r = parse_env_file(NULL, p, "REMOTE", &s, NULL);
if (r == -ENOENT)
return -ENXIO;
if (r < 0)
if (r < 0)
return r;
- r = parse_env_file(NULL, p, NEWLINE, "STATE", &s, NULL);
+ r = parse_env_file(NULL, p, "STATE", &s, NULL);
if (r == -ENOENT)
return -ENXIO;
if (r < 0)
if (r < 0)
return r;
- r = parse_env_file(NULL, p, NEWLINE, "UID", &s, NULL);
+ r = parse_env_file(NULL, p, "UID", &s, NULL);
if (r == -ENOENT)
return -ENXIO;
if (r < 0)
if (r < 0)
return r;
- r = parse_env_file(NULL, p, NEWLINE, field, &s, NULL);
+ r = parse_env_file(NULL, p, field, &s, NULL);
if (r == -ENOENT)
return -ENXIO;
if (r < 0)
if (r < 0)
return r;
- r = parse_env_file(NULL, p, NEWLINE,
+ r = parse_env_file(NULL, p,
"ACTIVE", &s,
"ACTIVE_UID", &t,
NULL);
if (r < 0)
return r;
- r = parse_env_file(NULL, p, NEWLINE,
+ r = parse_env_file(NULL, p,
"SESSIONS", &s,
"UIDS", &t,
NULL);
if (r < 0)
return r;
- r = parse_env_file(NULL, p, NEWLINE,
+ r = parse_env_file(NULL, p,
variable, &s,
NULL);
if (r == -ENOENT)
return -EINVAL;
p = strjoina("/run/systemd/machines/", machine);
- r = parse_env_file(NULL, p, NEWLINE, "CLASS", &c, NULL);
+ r = parse_env_file(NULL, p, "CLASS", &c, NULL);
if (r == -ENOENT)
return -ENXIO;
if (r < 0)
assert_return(ifindices, -EINVAL);
p = strjoina("/run/systemd/machines/", machine);
- r = parse_env_file(NULL, p, NEWLINE, "NETIF", &netif, NULL);
+ r = parse_env_file(NULL, p, "NETIF", &netif, NULL);
if (r == -ENOENT)
return -ENXIO;
if (r < 0)
assert_return(state, -EINVAL);
- r = parse_env_file(NULL, "/run/systemd/netif/state", NEWLINE, "OPER_STATE", &s, NULL);
+ r = parse_env_file(NULL, "/run/systemd/netif/state", "OPER_STATE", &s, NULL);
if (r == -ENOENT)
return -ENODATA;
if (r < 0)
assert_return(ret, -EINVAL);
- r = parse_env_file(NULL, "/run/systemd/netif/state", NEWLINE, key, &s, NULL);
+ r = parse_env_file(NULL, "/run/systemd/netif/state", key, &s, NULL);
if (r == -ENOENT)
return -ENODATA;
if (r < 0)
xsprintf(path, "/run/systemd/netif/links/%i", ifindex);
- r = parse_env_file(NULL, path, NEWLINE, field, &s, NULL);
+ r = parse_env_file(NULL, path, field, &s, NULL);
if (r == -ENOENT)
return -ENODATA;
if (r < 0)
assert_return(ret, -EINVAL);
xsprintf(path, "/run/systemd/netif/links/%i", ifindex);
- r = parse_env_file(NULL, path, NEWLINE, key, &s, NULL);
+ r = parse_env_file(NULL, path, key, &s, NULL);
if (r == -ENOENT)
return -ENODATA;
if (r < 0)
assert_return(ret, -EINVAL);
xsprintf(path, "/run/systemd/netif/links/%i", ifindex);
- r = parse_env_file(NULL, path, NEWLINE, key, &s, NULL);
+ r = parse_env_file(NULL, path, key, &s, NULL);
if (r == -ENOENT)
return -ENODATA;
if (r < 0)
c->locale_mtime = t;
context_free_locale(c);
- r = parse_env_file(NULL, "/etc/locale.conf", NEWLINE,
+ r = parse_env_file(NULL, "/etc/locale.conf",
"LANG", &c->locale[VARIABLE_LANG],
"LANGUAGE", &c->locale[VARIABLE_LANGUAGE],
"LC_CTYPE", &c->locale[VARIABLE_LC_CTYPE],
c->vc_mtime = t;
context_free_vconsole(c);
- r = parse_env_file(NULL, "/etc/vconsole.conf", NEWLINE,
+ r = parse_env_file(NULL, "/etc/vconsole.conf",
"KEYMAP", &c->vc_keymap,
"KEYMAP_TOGGLE", &c->vc_keymap_toggle,
NULL);
struct stat st;
int r;
- r = load_env_file(NULL, "/etc/vconsole.conf", NULL, &l);
+ r = load_env_file(NULL, "/etc/vconsole.conf", &l);
if (r < 0 && r != -ENOENT)
return r;
char *cc;
int r;
- r = parse_env_file(NULL, i->state_file, NEWLINE,
+ r = parse_env_file(NULL, i->state_file,
"WHAT", &what,
"UID", &uid,
"PID", &pid,
assert(s);
- r = parse_env_file(NULL, s->state_file, NEWLINE,
+ r = parse_env_file(NULL, s->state_file,
"REMOTE", &remote,
"SCOPE", &s->scope,
"SCOPE_JOB", &s->scope_job,
assert(u);
- r = parse_env_file(NULL, u->state_file, NEWLINE,
+ r = parse_env_file(NULL, u->state_file,
"SERVICE_JOB", &u->service_job,
"STOPPING", &stopping,
"REALTIME", &realtime,
pair[0] = -1;
- r = load_env_file_pairs(f, "/etc/os-release", NULL, &l);
+ r = load_env_file_pairs(f, "/etc/os-release", &l);
if (r < 0)
return r;
if (!m->state_file)
return 0;
- r = parse_env_file(NULL, m->state_file, NEWLINE,
+ r = parse_env_file(NULL, m->state_file,
"SCOPE", &m->unit,
"SCOPE_JOB", &m->scope_job,
"SERVICE", &m->service,
assert(link);
- r = parse_env_file(NULL, link->state_file, NEWLINE,
+ r = parse_env_file(NULL, link->state_file,
"NETWORK_FILE", &network_file,
"ADDRESSES", &addresses,
"ROUTES", &routes,
return r;
(void) gethostname_strict(&hostname);
- (void) parse_env_file(NULL, "/etc/machine-info", NEWLINE, "PRETTY_HOSTNAME", &pretty_hostname, NULL);
+ (void) parse_env_file(NULL, "/etc/machine-info", "PRETTY_HOSTNAME", &pretty_hostname, NULL);
assert_cc(LLDP_TX_INTERVAL_USEC * LLDP_TX_HOLD + 1 <= (UINT16_MAX - 1) * USEC_PER_SEC);
ttl = DIV_ROUND_UP(LLDP_TX_INTERVAL_USEC * LLDP_TX_HOLD + 1, USEC_PER_SEC);
if (!f)
return log_error_errno(errno, "Failed to open /etc/os-release buffer: %m");
- r = parse_env_file(f, "/etc/os-release", NEWLINE,
+ r = parse_env_file(f, "/etc/os-release",
"PORTABLE_PRETTY_NAME", &pretty_portable,
"PRETTY_NAME", &pretty_os,
NULL);
if (l->is_managed)
return 0; /* if the device is managed, then networkd is our configuration source, not the bus API */
- r = parse_env_file(NULL, l->state_file, NEWLINE,
+ r = parse_env_file(NULL, l->state_file,
"LLMNR", &llmnr,
"MDNS", &mdns,
"DNSSEC", &dnssec,
const char *m;
m = strjoina("/run/systemd/machines/", machine);
- r = parse_env_file(NULL, m, NEWLINE, "SCOPE", &unit, NULL);
+ r = parse_env_file(NULL, m, "SCOPE", &unit, NULL);
if (r < 0)
return log_error_errno(r, "Failed to load machine data: %m");
uint64_t timestamp;
int r;
- r = parse_env_file(NULL, p, NULL, "TIMESTAMP_NSEC", ×tamp_str, NULL);
+ r = parse_env_file(NULL, p, "TIMESTAMP_NSEC", ×tamp_str, NULL);
if (r < 0) {
log_error_errno(r, "Failed to parse timestamp file '%s', using mtime: %m", p);
return true;
}
case META_MACHINE_INFO:
- r = load_env_file_pairs(f, "machine-info", NULL, &machine_info);
+ r = load_env_file_pairs(f, "machine-info", &machine_info);
if (r < 0)
log_debug_errno(r, "Failed to read /etc/machine-info: %m");
break;
case META_OS_RELEASE:
- r = load_env_file_pairs(f, "os-release", NULL, &os_release);
+ r = load_env_file_pairs(f, "os-release", &os_release);
if (r < 0)
log_debug_errno(r, "Failed to read OS release file: %m");
if (r < 0 && r != -ENOENT)
log_debug_errno(r, "Failed to chase /etc/machine-info in image %s: %m", i->name);
else if (r >= 0) {
- r = load_env_file_pairs(NULL, path, NULL, &machine_info);
+ r = load_env_file_pairs(NULL, path, &machine_info);
if (r < 0)
log_debug_errno(r, "Failed to parse machine-info data of %s: %m", i->name);
}
dirname(s);
envpath = path_join(NULL, s, "systemd-runtest.env");
- if (load_env_file_pairs(NULL, envpath, NULL, &pairs) < 0)
+ if (load_env_file_pairs(NULL, envpath, &pairs) < 0)
return;
STRV_FOREACH_PAIR(k, v, pairs)
_cleanup_free_ char *log_val = NULL, *children_max = NULL, *exec_delay = NULL, *event_timeout = NULL, *resolve_names = NULL;
int r;
- r = parse_env_file(NULL, "/etc/udev/udev.conf", NEWLINE,
+ r = parse_env_file(NULL, "/etc/udev/udev.conf",
"udev_log", &log_val,
"children_max", &children_max,
"exec_delay", &exec_delay,
fflush(f);
fclose(f);
- r = load_env_file(NULL, t, NULL, &a);
+ r = load_env_file(NULL, t, &a);
assert_se(r >= 0);
STRV_FOREACH(i, a)
}
r = parse_env_file(
- NULL, t, NULL,
+ NULL, t,
"one", &one,
"two", &two,
"three", &three,
r = write_env_file(p, a);
assert_se(r >= 0);
- r = load_env_file(NULL, p, NULL, &b);
+ r = load_env_file(NULL, p, &b);
assert_se(r >= 0);
}
fflush(f);
fclose(f);
- r = load_env_file(NULL, t, NULL, &a);
+ r = load_env_file(NULL, t, &a);
assert_se(r >= 0);
STRV_FOREACH(i, a)
r = write_env_file(p, a);
assert_se(r >= 0);
- r = load_env_file(NULL, p, NULL, &b);
+ r = load_env_file(NULL, p, &b);
assert_se(r >= 0);
}
f = fdopen(fd, "r");
assert_se(f);
- r = load_env_file_pairs(f, fn, NULL, &l);
+ r = load_env_file_pairs(f, fn, &l);
assert_se(r >= 0);
assert_se(strv_length(l) == 14);
assert_se(fd >= 0);
assert_se(write(fd, env_file_1, sizeof(env_file_1)) == sizeof(env_file_1));
- r = load_env_file(NULL, name, NULL, &data);
+ r = load_env_file(NULL, name, &data);
assert_se(r == 0);
assert_se(streq(data[0], "a=a"));
assert_se(streq(data[1], "b=bc"));
assert_se(fd >= 0);
assert_se(write(fd, env_file_2, sizeof(env_file_2)) == sizeof(env_file_2));
- r = load_env_file(NULL, name, NULL, &data);
+ r = load_env_file(NULL, name, &data);
assert_se(r == 0);
assert_se(streq(data[0], "a=a"));
assert_se(data[1] == NULL);
assert_se(fd >= 0);
assert_se(write(fd, env_file_3, sizeof(env_file_3)) == sizeof(env_file_3));
- r = load_env_file(NULL, name, NULL, &data);
+ r = load_env_file(NULL, name, &data);
assert_se(r == 0);
assert_se(data == NULL);
}
assert_se(fd >= 0);
assert_se(write(fd, env_file_4, sizeof(env_file_4)) == sizeof(env_file_4));
- r = load_env_file(NULL, name, NULL, &data);
+ r = load_env_file(NULL, name, &data);
assert_se(r == 0);
assert_se(streq(data[0], "HWMON_MODULES=coretemp f71882fg"));
assert_se(streq(data[1], "MODULE_0=coretemp"));
assert_se(fd >= 0);
assert_se(write(fd, env_file_5, sizeof(env_file_5)) == sizeof(env_file_5));
- r = load_env_file(NULL, name, NULL, &data);
+ r = load_env_file(NULL, name, &data);
assert_se(r == 0);
assert_se(streq(data[0], "a="));
assert_se(streq(data[1], "b="));
utf8 = is_locale_utf8();
- r = parse_env_file(NULL, "/etc/vconsole.conf", NEWLINE,
+ r = parse_env_file(NULL, "/etc/vconsole.conf",
"KEYMAP", &vc_keymap,
"KEYMAP_TOGGLE", &vc_keymap_toggle,
"FONT", &vc_font,