diff options
-rw-r--r-- | src/defaults.c | 44 |
1 files changed, 33 insertions, 11 deletions
diff --git a/src/defaults.c b/src/defaults.c index 0ec5f25..b9c20fb 100644 --- a/src/defaults.c +++ b/src/defaults.c @@ -76,26 +76,48 @@ defaults_get_map_config(const char *mapname, const char ***referred) { unsigned int i; - *filter = DEFAULT_ENTRY_FILTER; - *key_format = DEFAULT_KEY_FORMAT; - *value_format = DEFAULT_VALUE_FORMAT; + if (filter) { + *filter = DEFAULT_ENTRY_FILTER; + } + if (key_format) { + *key_format = DEFAULT_KEY_FORMAT; + } + if (value_format) { + *value_format = DEFAULT_VALUE_FORMAT; + } for (i = 0; i < sizeof(config) / sizeof(config[0]); i++) { switch (config[i].config_match) { case config_exact: if (strcmp(config[i].map, mapname) == 0) { - *filter = config[i].filter; - *key_format = config[i].key_format; - *value_format = config[i].value_format; - *referred = (const char **) config[i].referred; + if (filter) { + *filter = config[i].filter; + } + if (key_format) { + *key_format = config[i].key_format; + } + if (value_format) { + *value_format = config[i].value_format; + } + if (referred) { + *referred = (const char **) config[i].referred; + } } break; case config_glob: if (fnmatch(config[i].map, mapname, FNM_NOESCAPE) == 0) { - *filter = config[i].filter; - *key_format = config[i].key_format; - *value_format = config[i].value_format; - *referred = (const char **) config[i].referred; + if (filter) { + *filter = config[i].filter; + } + if (key_format) { + *key_format = config[i].key_format; + } + if (value_format) { + *value_format = config[i].value_format; + } + if (referred) { + *referred = (const char **) config[i].referred; + } } break; } |