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:
Yu Watanabe
2024-09-06 10:35:02 +09:00
parent c2e8e1f020
commit ff616da459
2 changed files with 26 additions and 0 deletions
+25
View File
@@ -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,
+1
View File
@@ -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);