namespace: introduce parse_protect_home_or_bool()

This commit is contained in:
Yu Watanabe 2018-01-02 00:08:40 +09:00
parent 77019691cf
commit 5e1c61544c
3 changed files with 20 additions and 16 deletions

View File

@ -4365,7 +4365,7 @@ int config_parse_protect_home(
void *userdata) {
ExecContext *c = data;
int k;
ProtectHome h;
assert(filename);
assert(lvalue);
@ -4375,23 +4375,14 @@ int config_parse_protect_home(
/* Our enum shall be a superset of booleans, hence first try
* to parse as boolean, and then as enum */
k = parse_boolean(rvalue);
if (k > 0)
c->protect_home = PROTECT_HOME_YES;
else if (k == 0)
c->protect_home = PROTECT_HOME_NO;
else {
ProtectHome h;
h = protect_home_from_string(rvalue);
if (h < 0) {
log_syntax(unit, LOG_ERR, filename, line, 0, "Failed to parse protect home value, ignoring: %s", rvalue);
return 0;
}
c->protect_home = h;
h = parse_protect_home_or_bool(rvalue);
if (h < 0) {
log_syntax(unit, LOG_ERR, filename, line, 0, "Failed to parse protect home value, ignoring: %s", rvalue);
return 0;
}
c->protect_home = h;
return 0;
}

View File

@ -1450,6 +1450,18 @@ static const char *const protect_home_table[_PROTECT_HOME_MAX] = {
DEFINE_STRING_TABLE_LOOKUP(protect_home, ProtectHome);
ProtectHome parse_protect_home_or_bool(const char *s) {
int r;
r = parse_boolean(s);
if (r > 0)
return PROTECT_HOME_YES;
if (r == 0)
return PROTECT_HOME_NO;
return protect_home_from_string(s);
}
static const char *const protect_system_table[_PROTECT_SYSTEM_MAX] = {
[PROTECT_SYSTEM_NO] = "no",
[PROTECT_SYSTEM_YES] = "yes",

View File

@ -101,6 +101,7 @@ int setup_netns(int netns_storage_socket[2]);
const char* protect_home_to_string(ProtectHome p) _const_;
ProtectHome protect_home_from_string(const char *s) _pure_;
ProtectHome parse_protect_home_or_bool(const char *s);
const char* protect_system_to_string(ProtectSystem p) _const_;
ProtectSystem protect_system_from_string(const char *s) _pure_;