summaryrefslogtreecommitdiffstats
path: root/src/backend.c
diff options
context:
space:
mode:
authorNalin Dahyabhai <nalin.dahyabhai@pobox.com>2008-05-16 18:35:28 -0400
committerNalin Dahyabhai <nalin.dahyabhai@pobox.com>2008-05-16 18:35:28 -0400
commit82ec8e499f87136252e4e9361dcf8ea2c14c6294 (patch)
tree0f7dce5718c15231eedde81cf5c4324018a0c56d /src/backend.c
parent8ab5f4b2f802331090068ab3fb655238e561a9a8 (diff)
downloadslapi-nis-82ec8e499f87136252e4e9361dcf8ea2c14c6294.tar.gz
slapi-nis-82ec8e499f87136252e4e9361dcf8ea2c14c6294.tar.xz
slapi-nis-82ec8e499f87136252e4e9361dcf8ea2c14c6294.zip
- add a table of defaults
- add a "match" format function ("regmatch" is still needed)
Diffstat (limited to 'src/backend.c')
-rw-r--r--src/backend.c42
1 files changed, 18 insertions, 24 deletions
diff --git a/src/backend.c b/src/backend.c
index a004eae..8347497 100644
--- a/src/backend.c
+++ b/src/backend.c
@@ -286,43 +286,38 @@ backend_map_config_entry(struct plugin_state *state, Slapi_Entry *e,
Slapi_PBlock *pb;
char **base;
int i;
- char *entry_filter, *use_entry_filter, *key_attribute, *value_attribute;
- char *use_key_attribute, *use_value_attribute;
- char *use_attrs[3]; /* XXX */
+ char *entry_filter, *use_entry_filter, *key_format, *value_format;
+ const char *use_key_format, *use_value_format;
+ const char *default_filter, *default_key_format, *default_value_format;
struct backend_map_data cb_data;
pb = slapi_pblock_new();
- /* Read the NIS entry search base, entry search filter, and the names
- * of the key and value attributes. */
+ /* Read the NIS entry search base, entry search filter, and the key and
+ * value formats. */
+ defaults_get_map_config(map, &default_filter,
+ &default_key_format, &default_value_format);
base = slapi_entry_attr_get_charray(e, "base");
entry_filter = slapi_entry_attr_get_charptr(e, "filter");
- key_attribute = slapi_entry_attr_get_charptr(e, "key");
- value_attribute = slapi_entry_attr_get_charptr(e, "value");
+ key_format = slapi_entry_attr_get_charptr(e, "keyFormat");
+ value_format = slapi_entry_attr_get_charptr(e, "valueFormat");
/* Perform substitutions on the filter, so that it can include the map
* name without having to explicitly list it. We need this because
* RFC2307bis actually stores the map name in each entry, so it's
* useful to be able to filter on it. */
use_entry_filter = backend_map_config_filter(entry_filter ?
entry_filter :
- DEFAULT_ENTRY_FILTER,
+ default_filter,
domain, map);
- /* If the key and value attributes aren't set, we'll use compiled-in
+ /* If the key and value formats aren't set, we'll use compiled-in
* defaults. */
- use_key_attribute = key_attribute ?
- key_attribute :
- DEFAULT_KEY_ATTRIBUTE;
- use_value_attribute = value_attribute ?
- value_attribute :
- DEFAULT_VALUE_ATTRIBUTE;
+ use_key_format = key_format ? key_format : default_key_format;
+ use_value_format = value_format ? value_format : default_value_format;
/* Now get ready to search for entries which need to be in the map. */
- use_attrs[0] = use_key_attribute; /* XXX */
- use_attrs[1] = use_value_attribute; /* XXX */
- use_attrs[2] = NULL; /* XXX */
cb_data.state = state;
cb_data.domain = (char *) domain;
cb_data.map = (char *) map;
- cb_data.key_fmt = use_key_attribute;
- cb_data.value_fmt = use_value_attribute;
+ cb_data.key_fmt = strdup(use_key_format);
+ cb_data.value_fmt = strdup(use_value_format);
cb_data.filter = use_entry_filter;
cb_data.bases = base;
slapi_log_error(SLAPI_LOG_PLUGIN,
@@ -344,7 +339,7 @@ backend_map_config_entry(struct plugin_state *state, Slapi_Entry *e,
base[i],
LDAP_SCOPE_SUB,
use_entry_filter,
- use_attrs, 0,
+ NULL, 0,
NULL,
NULL,
state->plugin_identity,
@@ -356,9 +351,8 @@ backend_map_config_entry(struct plugin_state *state, Slapi_Entry *e,
slapi_free_search_results_internal(pb);
}
/* Clean up. */
- free(use_entry_filter);
- slapi_ch_free_string(&value_attribute);
- slapi_ch_free_string(&key_attribute);
+ slapi_ch_free_string(&value_format);
+ slapi_ch_free_string(&key_format);
slapi_ch_free_string(&entry_filter);
slapi_ch_array_free(base);
slapi_pblock_destroy(pb);