Let's modernize things a bit.
return n_pushed;
}
-int parse_env_file(
+int parse_env_file_sentinel(
FILE *f,
const char *fname,
...) {
int verify_file(const char *fn, const char *blob, bool accept_extra_nl);
int parse_env_filev(FILE *f, const char *fname, va_list ap);
-int parse_env_file(FILE *f, const char *fname, ...) _sentinel_;
+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 load_env_file(FILE *f, const char *fname, char ***l);
int load_env_file_pairs(FILE *f, const char *fname, char ***l);
return -EINVAL;
p = strjoina("/run/systemd/machines/", machine);
- r = parse_env_file(NULL, p, "LEADER", &s, "CLASS", &class, NULL);
+ r = parse_env_file(NULL, p,
+ "LEADER", &s,
+ "CLASS", &class);
if (r == -ENOENT)
return -EHOSTDOWN;
if (r < 0)
"LC_ADDRESS", &variables[VARIABLE_LC_ADDRESS],
"LC_TELEPHONE", &variables[VARIABLE_LC_TELEPHONE],
"LC_MEASUREMENT", &variables[VARIABLE_LC_MEASUREMENT],
- "LC_IDENTIFICATION", &variables[VARIABLE_LC_IDENTIFICATION],
- NULL);
-
+ "LC_IDENTIFICATION", &variables[VARIABLE_LC_IDENTIFICATION]);
if (r < 0 && r != -ENOENT)
log_warning_errno(r, "Failed to read /etc/locale.conf: %m");
}
"ICON_NAME", &c->data[PROP_ICON_NAME],
"CHASSIS", &c->data[PROP_CHASSIS],
"DEPLOYMENT", &c->data[PROP_DEPLOYMENT],
- "LOCATION", &c->data[PROP_LOCATION],
- NULL);
+ "LOCATION", &c->data[PROP_LOCATION]);
if (r < 0 && r != -ENOENT)
return r;
if (!u->state_file)
return 0;
- r = parse_env_file(NULL, u->state_file,
- "LAST_CURSOR", &u->last_cursor,
- NULL);
-
+ r = parse_env_file(NULL, u->state_file, "LAST_CURSOR", &u->last_cursor);
if (r == -ENOENT)
log_debug("State file %s is not present.", u->state_file);
else if (r < 0)
"FORWARD_TO_CONSOLE", &forward_to_console,
"IDENTIFIER", &stream->identifier,
"UNIT", &stream->unit_id,
- "STREAM_ID", &stream_id,
- NULL);
+ "STREAM_ID", &stream_id);
if (r < 0)
return log_error_errno(r, "Failed to read: %s", stream->state_file);
assert_return(machine_name_is_valid(machine), -EINVAL);
p = strjoina("/run/systemd/machines/", machine);
- r = parse_env_file(NULL, p, "ROOT", &root, "CLASS", &class, NULL);
+ r = parse_env_file(NULL, p,
+ "ROOT", &root,
+ "CLASS", &class);
if (r == -ENOENT)
return -EHOSTDOWN;
if (r < 0)
"OPTION_251", &options[27],
"OPTION_252", &options[28],
"OPTION_253", &options[29],
- "OPTION_254", &options[30],
- NULL);
+ "OPTION_254", &options[30]);
if (r < 0)
return r;
}
_public_ int sd_uid_get_state(uid_t uid, char**state) {
- _cleanup_free_ char *p = NULL;
- char *s = NULL;
+ _cleanup_free_ char *p = NULL, *s = NULL;
int r;
assert_return(state, -EINVAL);
if (r < 0)
return r;
- r = parse_env_file(NULL, p, "STATE", &s, NULL);
+ r = parse_env_file(NULL, p, "STATE", &s);
if (r == -ENOENT) {
- free(s);
- s = strdup("offline");
- if (!s)
- return -ENOMEM;
-
- }
- else if (r < 0) {
- free(s);
+ r = free_and_strdup(&s, "offline");
+ if (r < 0)
+ return r;
+ } else if (r < 0)
return r;
- }
- if (isempty(s)) {
- free(s);
+ else if (isempty(s))
return -EIO;
- }
- *state = s;
+ *state = TAKE_PTR(s);
return 0;
}
if (r < 0)
return r;
- r = parse_env_file(NULL, p, "DISPLAY", &s, NULL);
+ r = parse_env_file(NULL, p, "DISPLAY", &s);
if (r == -ENOENT)
return -ENODATA;
if (r < 0)
variable = require_active ? "ACTIVE_UID" : "UIDS";
- r = parse_env_file(NULL, p, variable, &s, NULL);
+ r = parse_env_file(NULL, p, variable, &s);
if (r == -ENOENT)
return 0;
if (r < 0)
if (r < 0)
return r;
- r = parse_env_file(NULL, p, variable, &s, NULL);
+ r = parse_env_file(NULL, p, variable, &s);
if (r == -ENOENT || (r >= 0 && isempty(s))) {
if (array)
*array = NULL;
if (r < 0)
return r;
- r = parse_env_file(NULL, p, "ACTIVE", &s, NULL);
+ r = parse_env_file(NULL, p, "ACTIVE", &s);
if (r == -ENOENT)
return -ENXIO;
if (r < 0)
if (r < 0)
return r;
- r = parse_env_file(NULL, p, "REMOTE", &s, NULL);
+ r = parse_env_file(NULL, p, "REMOTE", &s);
if (r == -ENOENT)
return -ENXIO;
if (r < 0)
if (r < 0)
return r;
- r = parse_env_file(NULL, p, "STATE", &s, NULL);
+ r = parse_env_file(NULL, p, "STATE", &s);
if (r == -ENOENT)
return -ENXIO;
if (r < 0)
if (r < 0)
return r;
- r = parse_env_file(NULL, p, "UID", &s, NULL);
+ r = parse_env_file(NULL, p, "UID", &s);
if (r == -ENOENT)
return -ENXIO;
if (r < 0)
if (r < 0)
return r;
- r = parse_env_file(NULL, p, field, &s, NULL);
+ r = parse_env_file(NULL, p, field, &s);
if (r == -ENOENT)
return -ENXIO;
if (r < 0)
r = parse_env_file(NULL, p,
"ACTIVE", &s,
- "ACTIVE_UID", &t,
- NULL);
+ "ACTIVE_UID", &t);
if (r == -ENOENT)
return -ENXIO;
if (r < 0)
r = parse_env_file(NULL, p,
"SESSIONS", &s,
- "UIDS", &t,
- NULL);
+ "UIDS", &t);
if (r == -ENOENT)
return -ENXIO;
if (r < 0)
return r;
r = parse_env_file(NULL, p,
- variable, &s,
- NULL);
+ variable, &s);
if (r == -ENOENT)
return -ENXIO;
if (r < 0)
return -EINVAL;
p = strjoina("/run/systemd/machines/", machine);
- r = parse_env_file(NULL, p, "CLASS", &c, NULL);
+ r = parse_env_file(NULL, p, "CLASS", &c);
if (r == -ENOENT)
return -ENXIO;
if (r < 0)
assert_return(ifindices, -EINVAL);
p = strjoina("/run/systemd/machines/", machine);
- r = parse_env_file(NULL, p, "NETIF", &netif, NULL);
+ r = parse_env_file(NULL, p, "NETIF", &netif);
if (r == -ENOENT)
return -ENXIO;
if (r < 0)
assert_return(state, -EINVAL);
- r = parse_env_file(NULL, "/run/systemd/netif/state", "OPER_STATE", &s, NULL);
+ r = parse_env_file(NULL, "/run/systemd/netif/state", "OPER_STATE", &s);
if (r == -ENOENT)
return -ENODATA;
if (r < 0)
assert_return(ret, -EINVAL);
- r = parse_env_file(NULL, "/run/systemd/netif/state", key, &s, NULL);
+ r = parse_env_file(NULL, "/run/systemd/netif/state", key, &s);
if (r == -ENOENT)
return -ENODATA;
if (r < 0)
xsprintf(path, "/run/systemd/netif/links/%i", ifindex);
- r = parse_env_file(NULL, path, field, &s, NULL);
+ r = parse_env_file(NULL, path, field, &s);
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, key, &s, NULL);
+ r = parse_env_file(NULL, path, key, &s);
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, key, &s, NULL);
+ r = parse_env_file(NULL, path, key, &s);
if (r == -ENOENT)
return -ENODATA;
if (r < 0)
"LC_ADDRESS", &c->locale[VARIABLE_LC_ADDRESS],
"LC_TELEPHONE", &c->locale[VARIABLE_LC_TELEPHONE],
"LC_MEASUREMENT", &c->locale[VARIABLE_LC_MEASUREMENT],
- "LC_IDENTIFICATION", &c->locale[VARIABLE_LC_IDENTIFICATION],
- NULL);
+ "LC_IDENTIFICATION", &c->locale[VARIABLE_LC_IDENTIFICATION]);
if (r < 0)
return r;
} else {
r = parse_env_file(NULL, "/etc/vconsole.conf",
"KEYMAP", &c->vc_keymap,
- "KEYMAP_TOGGLE", &c->vc_keymap_toggle,
- NULL);
+ "KEYMAP_TOGGLE", &c->vc_keymap_toggle);
if (r < 0)
return r;
"WHO", &who,
"WHY", &why,
"MODE", &mode,
- "FIFO", &i->fifo_path,
- NULL);
+ "FIFO", &i->fifo_path);
if (r < 0)
return r;
"CONTROLLER", &controller,
"ACTIVE", &active,
"DEVICES", &devices,
- "IS_DISPLAY", &is_display,
- NULL);
+ "IS_DISPLAY", &is_display);
if (r < 0)
return log_error_errno(r, "Failed to read %s: %m", s->state_file);
"STOPPING", &stopping,
"REALTIME", &realtime,
"MONOTONIC", &monotonic,
- "LAST_SESSION_TIMESTAMP", &last_session_timestamp,
- NULL);
+ "LAST_SESSION_TIMESTAMP", &last_session_timestamp);
if (r == -ENOENT)
return 0;
if (r < 0)
"CLASS", &class,
"REALTIME", &realtime,
"MONOTONIC", &monotonic,
- "NETIF", &netif,
- NULL);
+ "NETIF", &netif);
if (r < 0) {
if (r == -ENOENT)
return 0;
"ADDRESSES", &addresses,
"ROUTES", &routes,
"DHCP4_ADDRESS", &dhcp4_address,
- "IPV4LL_ADDRESS", &ipv4ll_address,
- NULL);
+ "IPV4LL_ADDRESS", &ipv4ll_address);
if (r < 0 && r != -ENOENT)
return log_link_error_errno(link, r, "Failed to read %s: %m", link->state_file);
return r;
(void) gethostname_strict(&hostname);
- (void) parse_env_file(NULL, "/etc/machine-info", "PRETTY_HOSTNAME", &pretty_hostname, NULL);
+ (void) parse_env_file(NULL, "/etc/machine-info", "PRETTY_HOSTNAME", &pretty_hostname);
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);
r = parse_env_file(f, "/etc/os-release",
"PORTABLE_PRETTY_NAME", &pretty_portable,
- "PRETTY_NAME", &pretty_os,
- NULL);
+ "PRETTY_NAME", &pretty_os);
if (r < 0)
return log_error_errno(r, "Failed to parse /etc/os-release: %m");
"DNSSEC", &dnssec,
"SERVERS", &servers,
"DOMAINS", &domains,
- "NTAS", &ntas,
- NULL);
+ "NTAS", &ntas);
if (r == -ENOENT)
return 0;
if (r < 0)
const char *m;
m = strjoina("/run/systemd/machines/", machine);
- r = parse_env_file(NULL, m, "SCOPE", &unit, NULL);
+ r = parse_env_file(NULL, m, "SCOPE", &unit);
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, "TIMESTAMP_NSEC", ×tamp_str, NULL);
+ r = parse_env_file(NULL, p, "TIMESTAMP_NSEC", ×tamp_str);
if (r < 0) {
log_error_errno(r, "Failed to parse timestamp file '%s', using mtime: %m", p);
return true;
"udev_log", &log_val,
"children_max", &children_max,
"exec_delay", &exec_delay,
- "event_timeout", &event_timeout,
- NULL);
+ "event_timeout", &event_timeout);
if (r == -ENOENT)
return 0;
if (r < 0)
"seven", &seven,
"eight", &eight,
"export nine", &nine,
- "ten", &ten,
- NULL);
+ "ten", &ten);
assert_se(r >= 0);
"KEYMAP_TOGGLE", &vc_keymap_toggle,
"FONT", &vc_font,
"FONT_MAP", &vc_font_map,
- "FONT_UNIMAP", &vc_font_unimap,
- NULL);
+ "FONT_UNIMAP", &vc_font_unimap);
if (r < 0 && r != -ENOENT)
log_warning_errno(r, "Failed to read /etc/vconsole.conf: %m");