conf-parser: introduce config_parse_uint32_invert_flag()
It is similar to config_parse_uint32_flag(), but drops the specified flag when true.
This commit is contained in:
@@ -1061,6 +1061,31 @@ int config_parse_uint32_flag(
|
||||
return 1;
|
||||
}
|
||||
|
||||
int config_parse_uint32_invert_flag(
|
||||
const char *unit,
|
||||
const char *filename,
|
||||
unsigned line,
|
||||
const char *section,
|
||||
unsigned section_line,
|
||||
const char *lvalue,
|
||||
int ltype,
|
||||
const char *rvalue,
|
||||
void *data,
|
||||
void *userdata) {
|
||||
|
||||
uint32_t *flags = ASSERT_PTR(data);
|
||||
int r;
|
||||
|
||||
assert(ltype != 0);
|
||||
|
||||
r = isempty(rvalue) ? 0 : parse_boolean(rvalue);
|
||||
if (r < 0)
|
||||
return log_syntax_parse_error(unit, filename, line, r, lvalue, rvalue);
|
||||
|
||||
SET_FLAG(*flags, ltype, !r);
|
||||
return 1;
|
||||
}
|
||||
|
||||
int config_parse_id128(
|
||||
const char *unit,
|
||||
const char *filename,
|
||||
|
||||
@@ -274,6 +274,7 @@ CONFIG_PARSER_PROTOTYPE(config_parse_iec_uint64);
|
||||
CONFIG_PARSER_PROTOTYPE(config_parse_iec_uint64_infinity);
|
||||
CONFIG_PARSER_PROTOTYPE(config_parse_bool);
|
||||
CONFIG_PARSER_PROTOTYPE(config_parse_uint32_flag);
|
||||
CONFIG_PARSER_PROTOTYPE(config_parse_uint32_invert_flag);
|
||||
CONFIG_PARSER_PROTOTYPE(config_parse_id128);
|
||||
CONFIG_PARSER_PROTOTYPE(config_parse_tristate);
|
||||
CONFIG_PARSER_PROTOTYPE(config_parse_string);
|
||||
|
||||
Reference in New Issue
Block a user