void *userdata) {
ExecContext *c = data;
- int k;
+ ProtectHome h;
assert(filename);
assert(lvalue);
/* 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;
}
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",
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_;