summaryrefslogtreecommitdiffstats
path: root/src/defaults.c
diff options
context:
space:
mode:
authorNalin Dahyabhai <nalin@dahyabhai.net>2008-06-17 16:41:04 -0400
committerNalin Dahyabhai <nalin@dahyabhai.net>2008-06-17 16:41:04 -0400
commitcd158d753a24f84a096d1c2211cd1da400a66036 (patch)
tree332e0c12dc8e3cc7a8aa021e53aefa2a55ca85bf /src/defaults.c
parent4f5e14211ff8238f62cb15186379b6b9ecffef51 (diff)
downloadslapi-nis-cd158d753a24f84a096d1c2211cd1da400a66036.tar.gz
slapi-nis-cd158d753a24f84a096d1c2211cd1da400a66036.tar.xz
slapi-nis-cd158d753a24f84a096d1c2211cd1da400a66036.zip
- get most of the tree in shape to handle multiple keys per entry
- make map_next() not expose entry IDs or key indices, because it has to do all of the heavy lifting anyway
Diffstat (limited to 'src/defaults.c')
-rw-r--r--src/defaults.c29
1 files changed, 15 insertions, 14 deletions
diff --git a/src/defaults.c b/src/defaults.c
index fe2474d..29e0d8d 100644
--- a/src/defaults.c
+++ b/src/defaults.c
@@ -33,36 +33,37 @@
#define DEFAULT_KEY_FORMAT "%{cn}"
#define DEFAULT_VALUE_FORMAT "%{nisMapEntry}"
#define DEFAULT_MAP_SECURE FALSE
+static const char *default_key_formats[] = {DEFAULT_KEY_FORMAT, NULL};
static struct configuration {
char *map;
enum { config_exact, config_glob } config_match;
bool_t secure;
- char *filter, *key_format, *value_format;
+ char *filter, *key_formats[3], *value_format;
} config[] = {
{"passwd.byname", config_exact, FALSE,
"(objectClass=posixAccount)",
- "%{uid}",
+ {"%{uid}", NULL, NULL},
"%{uid}:%regsub(\"userPassword\",\"^\\\\{CRYPT\\\\}(..*)\",\"%1\",\"*\"):%{uidNumber}:%{gidNumber}:%{cn!:}:%{homeDirectory:-/}:%{loginShell!:}"},
{"passwd.byuid", config_exact, FALSE,
"(objectClass=posixAccount)",
- "%{uidNumber}",
+ {"%{uidNumber}", NULL, NULL},
"%{uid}:%regsub(\"userPassword\",\"^\\\\{CRYPT\\\\}(..*)\",\"%1\",\"*\"):%{uidNumber}:%{gidNumber}:%{cn!:}:%{homeDirectory:-/}:%{loginShell!:}"},
{"group.byname", config_exact, FALSE,
"(objectClass=posixGroup)",
- "%{cn}",
+ {"%{cn}", NULL, NULL},
"%{cn}:%regsub(\"userPassword\",\"^\\\\{CRYPT\\\\}(..*)\",\"%1\",\"*\"):%{gidNumber}:%merge(\",\",\"%list(\\\",\\\",\\\"memberUid\\\")\",\"%deref(\\\",\\\",\\\"member\\\",\\\"uid\\\")\",\"%deref(\\\",\\\",\\\"uniqueMember\\\",\\\"uid\\\")\",\"%referred(\\\",\\\",\\\"passwd.byname\\\",\\\"memberOf\\\",\\\"uid\\\")\")"},
{"group.bygid", config_exact, FALSE,
"(objectClass=posixGroup)",
- "%{gidNumber}",
+ {"%{gidNumber}", NULL, NULL},
"%{cn}:%regsub(\"userPassword\",\"^\\\\{CRYPT\\\\}(..*)\",\"%1\",\"*\"):%{gidNumber}:%merge(\",\",\"%list(\\\",\\\",\\\"memberUid\\\")\",\"%deref(\\\",\\\",\\\"member\\\",\\\"uid\\\")\",\"%deref(\\\",\\\",\\\"uniqueMember\\\",\\\"uid\\\")\",\"%referred(\\\",\\\",\\\"passwd.byuid\\\",\\\"memberOf\\\",\\\"uid\\\")\")"},
{"netgroup", config_exact, FALSE,
"(objectClass=nisNetgroup)",
- "%{cn}",
+ {"%{cn}", NULL, NULL},
"%list(\" \",\"nisNetgroupTriple\",\"memberNisNetgroup\")"},
{"auto.*", config_glob, FALSE,
"(objectClass=automount)",
- "%{automountKey}",
+ {"%{automountKey}", NULL, NULL},
"%{automountInformation}"},
};
@@ -70,7 +71,7 @@ void
defaults_get_map_config(const char *mapname,
bool_t *secure,
const char **filter,
- const char **key_format,
+ const char ***key_formats,
const char **value_format)
{
unsigned int i;
@@ -80,8 +81,8 @@ defaults_get_map_config(const char *mapname,
if (secure) {
*secure = DEFAULT_MAP_SECURE;
}
- if (key_format) {
- *key_format = DEFAULT_KEY_FORMAT;
+ if (key_formats) {
+ *key_formats = default_key_formats;
}
if (value_format) {
*value_format = DEFAULT_VALUE_FORMAT;
@@ -96,8 +97,8 @@ defaults_get_map_config(const char *mapname,
if (filter) {
*filter = config[i].filter;
}
- if (key_format) {
- *key_format = config[i].key_format;
+ if (key_formats) {
+ *key_formats = (const char **) config[i].key_formats;
}
if (value_format) {
*value_format = config[i].value_format;
@@ -113,8 +114,8 @@ defaults_get_map_config(const char *mapname,
if (filter) {
*filter = config[i].filter;
}
- if (key_format) {
- *key_format = config[i].key_format;
+ if (key_formats) {
+ *key_formats = (const char **) config[i].key_formats;
}
if (value_format) {
*value_format = config[i].value_format;