summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNalin Dahyabhai <nalin.dahyabhai@pobox.com>2008-06-04 20:41:13 -0400
committerNalin Dahyabhai <nalin.dahyabhai@pobox.com>2008-06-04 20:41:13 -0400
commit891eded832304d51fdae8320c38f76fddf5614f1 (patch)
treec069927c9f9623f4622a4ef1f6bf04b6febc66bf
parent47a426f83856c487f5a71922d41b79051893007d (diff)
downloadslapi-nis-891eded832304d51fdae8320c38f76fddf5614f1.tar.gz
slapi-nis-891eded832304d51fdae8320c38f76fddf5614f1.tar.xz
slapi-nis-891eded832304d51fdae8320c38f76fddf5614f1.zip
- don't require that the caller be expecting all of the defaults
-rw-r--r--src/defaults.c44
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;
}