summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorNalin Dahyabhai <nalin.dahyabhai@pobox.com>2008-06-03 14:36:51 -0400
committerNalin Dahyabhai <nalin.dahyabhai@pobox.com>2008-06-03 14:36:51 -0400
commit215814f16d2a858ff16e2efdd30f8bd5d3beaa2b (patch)
tree098321a786c35b09aa1b6a29b04789d3e76194f0 /src
parent4f3d1c03869213bc997ed45170a9b95b25706687 (diff)
downloadslapi-nis-215814f16d2a858ff16e2efdd30f8bd5d3beaa2b.tar.gz
slapi-nis-215814f16d2a858ff16e2efdd30f8bd5d3beaa2b.tar.xz
slapi-nis-215814f16d2a858ff16e2efdd30f8bd5d3beaa2b.zip
- set up defaults for automount maps
Diffstat (limited to 'src')
-rw-r--r--src/defaults.c36
1 files changed, 27 insertions, 9 deletions
diff --git a/src/defaults.c b/src/defaults.c
index 617cb77..de4a30e 100644
--- a/src/defaults.c
+++ b/src/defaults.c
@@ -23,6 +23,7 @@
#include "../config.h"
#endif
+#include <fnmatch.h>
#include <string.h>
#define DEFAULT_ENTRY_FILTER "(&(nisMapName=%m)(objectClass=nisObject))"
@@ -30,24 +31,30 @@
#define DEFAULT_VALUE_FORMAT "%{nisMapEntry}"
static struct configuration {
- char *map, *filter, *key_format, *value_format;
+ char *map;
+ enum { config_exact, config_glob } config_match;
+ char *filter, *key_format, *value_format;
} config[] = {
- {"passwd.byname",
+ {"passwd.byname", config_exact,
"(objectClass=posixAccount)",
"%{uid}",
"%{uid}:%regmatch(\"userPassword\",\"^{CRYPT}.............*\",\"*\"):%{uidNumber}:%{gidNumber}:%{gecos:-%{cn}}:%{homeDirectory:-/}:%{loginShell:-}"},
- {"passwd.bynumber",
+ {"passwd.bynumber", config_exact,
"(objectClass=posixAccount)",
"%{uidNumber}",
"%{uid}:%regmatch(\"userPassword\",\"^{CRYPT}.............*\",\"*\"):%{uidNumber}:%{gidNumber}:%{gecos:-%{cn}}:%{homeDirectory:-/}:%{loginShell:-}"},
- {"group.byname",
+ {"group.byname", config_exact,
"(objectClass=posixGroup)",
"%{cn}",
"%{cn}:%regmatch(\"userPassword\",\"^{CRYPT}.............*\",\"*\"):%{gidNumber}:%merge(\",\",\"%list(\\\",\\\",\\\"memberUid\\\")\",\"%deref(\\\",\\\",\\\"uniqueMember\\\",\\\"uid\\\")\")"},
- {"group.bynumber",
+ {"group.bynumber", config_exact,
"(objectClass=posixGroup)",
"%{gidNumber}",
"%{cn}:%regmatch(\"userPassword\",\"^{CRYPT}.............*\",\"*\"):%{gidNumber}:%merge(\",\",\"%list(\\\",\\\",\\\"memberUid\\\")\",\"%deref(\\\",\\\",\\\"uniqueMember\\\",\\\"uid\\\")\")"},
+ {"auto.*", config_glob,
+ "(objectClass=automount)",
+ "%{automountKey}",
+ "%{automountInformation}"},
};
void
@@ -61,10 +68,21 @@ defaults_get_map_config(const char *mapname,
*key_format = DEFAULT_KEY_FORMAT;
*value_format = DEFAULT_VALUE_FORMAT;
for (i = 0; i < sizeof(config) / sizeof(config[0]); i++) {
- if (strcmp(mapname, config[i].map) == 0) {
- *filter = config[i].filter;
- *key_format = config[i].key_format;
- *value_format = config[i].value_format;
+ 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;
+ }
+ 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;
+ }
break;
}
}