mirror of
https://github.com/yrutschle/sslh.git
synced 2025-04-18 17:57:39 +03:00
config from new c2s: underscore and dashes are equivalent
This commit is contained in:
parent
10fe9c6e27
commit
dfa764e2e8
57
sslh-conf.c
57
sslh-conf.c
@ -1,5 +1,5 @@
|
|||||||
/* Generated by conf2struct (https://www.rutschle.net/tech/conf2struct/README)
|
/* Generated by conf2struct (https://www.rutschle.net/tech/conf2struct/README)
|
||||||
* on Fri Dec 27 18:18:30 2019.
|
* on Sun Jan 26 21:17:47 2020.
|
||||||
|
|
||||||
# conf2struct: generate libconf parsers that read to structs
|
# conf2struct: generate libconf parsers that read to structs
|
||||||
# Copyright (C) 2018-2019 Yves Rutschle
|
# Copyright (C) 2018-2019 Yves Rutschle
|
||||||
@ -1000,6 +1000,47 @@ static void print_setting(config_type type, void* val)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Changes all dashes to underscores in a string of
|
||||||
|
* vice-versa */
|
||||||
|
void strswap_ud(const char target, char* str)
|
||||||
|
{
|
||||||
|
char* c;
|
||||||
|
for (c = str; *c; c++)
|
||||||
|
if (*c == (target == '_' ? '-' : '_'))
|
||||||
|
*c = (target == '_' ? '_' : '-');
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Same as config_setting_lookup() but looks up with dash or
|
||||||
|
* underscore so `my_setting` and `my-setting` match the same */
|
||||||
|
config_setting_t* config_setting_lookup_ud(config_setting_t* cfg, struct config_desc* desc)
|
||||||
|
{
|
||||||
|
config_setting_t* setting;
|
||||||
|
char name[strlen(desc->name)+1];;
|
||||||
|
strcpy(name, desc->name);
|
||||||
|
|
||||||
|
strswap_ud('_', name);
|
||||||
|
setting = config_setting_lookup(cfg, name);
|
||||||
|
if (setting)
|
||||||
|
return setting;
|
||||||
|
|
||||||
|
strswap_ud('-', name);
|
||||||
|
setting = config_setting_lookup(cfg, name);
|
||||||
|
return setting;
|
||||||
|
}
|
||||||
|
|
||||||
|
int lookup_typed_ud(config_setting_t* cfg, void* target, struct config_desc *desc)
|
||||||
|
{
|
||||||
|
lookup_fn lookup_fn = lookup_fns[desc->type];
|
||||||
|
char name[strlen(desc->name)+1];;
|
||||||
|
strcpy(name, desc->name);
|
||||||
|
|
||||||
|
strswap_ud('_', name);
|
||||||
|
if (lookup_fn(cfg, name, ((char*)target) + desc->offset) == CONFIG_TRUE)
|
||||||
|
return CONFIG_TRUE;
|
||||||
|
|
||||||
|
strswap_ud('-', name);
|
||||||
|
return lookup_fn(cfg, name, ((char*)target) + desc->offset);
|
||||||
|
}
|
||||||
|
|
||||||
/* When traversing configuration, allocate memory for plural
|
/* When traversing configuration, allocate memory for plural
|
||||||
* types, init for scalars */
|
* types, init for scalars */
|
||||||
@ -1013,7 +1054,7 @@ static void read_block_init(void* target, config_setting_t* cfg, struct config_d
|
|||||||
case CFG_LIST:
|
case CFG_LIST:
|
||||||
case CFG_ARRAY:
|
case CFG_ARRAY:
|
||||||
if (cfg) {
|
if (cfg) {
|
||||||
setting = config_setting_lookup(cfg, desc->name);
|
setting = config_setting_lookup_ud(cfg, desc);
|
||||||
if (setting)
|
if (setting)
|
||||||
len = config_setting_length(setting);
|
len = config_setting_length(setting);
|
||||||
}
|
}
|
||||||
@ -1055,14 +1096,13 @@ static int read_block_setval(void* target,
|
|||||||
int i;
|
int i;
|
||||||
size_t len = 0;
|
size_t len = 0;
|
||||||
void* block;
|
void* block;
|
||||||
lookup_fn lookup_fn;
|
|
||||||
int in_cfg = 0, in_cl = 0; /* Present in config file? present on command line? */
|
int in_cfg = 0, in_cl = 0; /* Present in config file? present on command line? */
|
||||||
config_setting_t* setting = NULL;
|
config_setting_t* setting = NULL;
|
||||||
|
|
||||||
switch (desc->type) {
|
switch (desc->type) {
|
||||||
case CFG_LIST:
|
case CFG_LIST:
|
||||||
if (cfg) {
|
if (cfg) {
|
||||||
setting = config_setting_lookup(cfg, desc->name);
|
setting = config_setting_lookup_ud(cfg, desc);
|
||||||
if (setting)
|
if (setting)
|
||||||
len = config_setting_length(setting);
|
len = config_setting_length(setting);
|
||||||
block = *(void**)(((char*)target) + desc->offset);
|
block = *(void**)(((char*)target) + desc->offset);
|
||||||
@ -1076,7 +1116,7 @@ static int read_block_setval(void* target,
|
|||||||
|
|
||||||
case CFG_ARRAY:
|
case CFG_ARRAY:
|
||||||
if (cfg) {
|
if (cfg) {
|
||||||
setting = config_setting_lookup(cfg, desc->name);
|
setting = config_setting_lookup_ud(cfg, desc);
|
||||||
if (setting)
|
if (setting)
|
||||||
len = config_setting_length(setting);
|
len = config_setting_length(setting);
|
||||||
block = *(void**)(((char*)target) + desc->offset);
|
block = *(void**)(((char*)target) + desc->offset);
|
||||||
@ -1090,18 +1130,17 @@ static int read_block_setval(void* target,
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case CFG_GROUP:
|
case CFG_GROUP:
|
||||||
if (cfg) setting = config_setting_lookup(cfg, desc->name);
|
if (cfg) setting = config_setting_lookup_ud(cfg, desc);
|
||||||
block = *(void**)(((char*)target) + desc->offset);
|
block = *(void**)(((char*)target) + desc->offset);
|
||||||
if (!read_block(setting, block, desc->sub_group, errmsg)) return 0;
|
if (!read_block(setting, block, desc->sub_group, errmsg)) return 0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default: /* scalar types */
|
default: /* scalar types */
|
||||||
TRACE_READ((" `%s'", desc->name));
|
TRACE_READ((" `%s'", desc->name));
|
||||||
if (cfg && config_setting_lookup(cfg, desc->name)) {
|
if (cfg && config_setting_lookup_ud(cfg, desc)) {
|
||||||
TRACE_READ((" in config file: "));
|
TRACE_READ((" in config file: "));
|
||||||
/* setting is present in cfg, look it up */
|
/* setting is present in cfg, look it up */
|
||||||
lookup_fn = lookup_fns[desc->type];
|
if (lookup_typed_ud(cfg, target, desc) != CONFIG_TRUE) {
|
||||||
if (lookup_fn(cfg, desc->name, ((char*)target) + desc->offset) != CONFIG_TRUE) {
|
|
||||||
TRACE_READ((" but wrong type (expected %s) ", type2str[desc->type]));
|
TRACE_READ((" but wrong type (expected %s) ", type2str[desc->type]));
|
||||||
asprintf(errmsg, "Option \"%s\" wrong type, expected %s\n",
|
asprintf(errmsg, "Option \"%s\" wrong type, expected %s\n",
|
||||||
desc->name, type2str[desc->type]);
|
desc->name, type2str[desc->type]);
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Generated by conf2struct (https://www.rutschle.net/tech/conf2struct/README)
|
/* Generated by conf2struct (https://www.rutschle.net/tech/conf2struct/README)
|
||||||
* on Fri Dec 27 18:18:30 2019.
|
* on Sun Jan 26 21:17:47 2020.
|
||||||
|
|
||||||
# conf2struct: generate libconf parsers that read to structs
|
# conf2struct: generate libconf parsers that read to structs
|
||||||
# Copyright (C) 2018-2019 Yves Rutschle
|
# Copyright (C) 2018-2019 Yves Rutschle
|
||||||
|
Loading…
x
Reference in New Issue
Block a user