diff options
| author | Nalin Dahyabhai <nalin.dahyabhai@pobox.com> | 2008-06-03 14:36:51 -0400 |
|---|---|---|
| committer | Nalin Dahyabhai <nalin.dahyabhai@pobox.com> | 2008-06-03 14:36:51 -0400 |
| commit | 215814f16d2a858ff16e2efdd30f8bd5d3beaa2b (patch) | |
| tree | 098321a786c35b09aa1b6a29b04789d3e76194f0 /src | |
| parent | 4f3d1c03869213bc997ed45170a9b95b25706687 (diff) | |
| download | slapi-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.c | 36 |
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; } } |
