X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fshared%2Fconf-parser.h;h=ea7b710dece722b5cecb1ed90c809a579029fa86;hb=28622e8f5b28412d97bf2f3a5df49c419be1e2c5;hp=e1c7ab44c91bbce80d85764d146c00539696094f;hpb=94828d2ddc89c9dba3d6f386e55b6c9310d8f627;p=elogind.git diff --git a/src/shared/conf-parser.h b/src/shared/conf-parser.h index e1c7ab44c..ea7b710de 100644 --- a/src/shared/conf-parser.h +++ b/src/shared/conf-parser.h @@ -52,7 +52,7 @@ typedef struct ConfigTableItem { } ConfigTableItem; /* Wraps information for parsing a specific configuration variable, to - * ve srored in a gperf perfect hashtable */ + * be stored in a gperf perfect hashtable */ typedef struct ConfigPerfItem { const char *section_and_lvalue; /* Section + "." + name of the variable */ ConfigParserCallback parse; /* Function that is called to parse the variable's value */ @@ -65,7 +65,7 @@ typedef const ConfigPerfItem* (*ConfigPerfItemLookup)(const char *section_and_lv /* Prototype for a generic high-level lookup function */ typedef int (*ConfigItemLookup)( - void *table, + const void *table, const char *section, const char *lvalue, ConfigParserCallback *func, @@ -75,20 +75,21 @@ typedef int (*ConfigItemLookup)( /* Linear table search implementation of ConfigItemLookup, based on * ConfigTableItem arrays */ -int config_item_table_lookup(void *table, const char *section, const char *lvalue, ConfigParserCallback *func, int *ltype, void **data, void *userdata); +int config_item_table_lookup(const void *table, const char *section, const char *lvalue, ConfigParserCallback *func, int *ltype, void **data, void *userdata); /* gperf implementation of ConfigItemLookup, based on gperf * ConfigPerfItem tables */ -int config_item_perf_lookup(void *table, const char *section, const char *lvalue, ConfigParserCallback *func, int *ltype, void **data, void *userdata); +int config_item_perf_lookup(const void *table, const char *section, const char *lvalue, ConfigParserCallback *func, int *ltype, void **data, void *userdata); int config_parse(const char *unit, const char *filename, FILE *f, const char *sections, /* nulstr */ ConfigItemLookup lookup, - void *table, + const void *table, bool relaxed, bool allow_include, + bool warn, void *userdata); /* Generic parsers */ @@ -121,6 +122,12 @@ int log_syntax_internal(const char *unit, int level, config_file, config_line, \ error, __VA_ARGS__) +#define log_invalid_utf8(unit, level, config_file, config_line, error, rvalue) { \ + _cleanup_free_ char *__p = utf8_escape_invalid(rvalue); \ + log_syntax(unit, level, config_file, config_line, error, \ + "String is not UTF-8 clean, ignoring assignment: %s", __p); \ + } + #define DEFINE_CONFIG_PARSE_ENUM(function,name,type,msg) \ int function(const char *unit, \ const char *filename, \