--- CHANGELOG | 8 ++++++++ daemon/automount.c | 21 +++++++++++++++++++-- include/automount.h | 3 +++ lib/cache.c | 10 ++++++++++ man/automount.8 | 3 +++ 5 files changed, 43 insertions(+), 2 deletions(-)
diff --git a/CHANGELOG b/CHANGELOG index e9dbb63..467e90a 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,11 @@ +16/6/2010 autofs-4.1.4 - bryder p37 +------------------------- +Moved the autofs-4.1.3 version of the dump map patch to 4.1.4 (without the lookup_files hack) +It adds the --dumpmap or -D argument to dump maps read by the daemon - then the daemon exits. +Also help to the automount.c command for this option and updated the man page. +Only tested with LDAP. + + 11/4/2005 autofs-4.1.4 ---------------------- - add /proc/modules check to Debian init script. diff --git a/daemon/automount.c b/daemon/automount.c index bbcab6a..93e3ff7 100644 --- a/daemon/automount.c +++ b/daemon/automount.c @@ -55,6 +55,7 @@ static char *pid_file = NULL; /* File in which to keep pid */ int kproto_version; /* Kernel protocol version used */ int kproto_sub_version = 0; /* Kernel protocol version used */ +int dumpmap = 0; /* cmdline arg to dump map contents */ static int submount = 0; @@ -1380,6 +1381,8 @@ static unsigned long getnumopt(char *str, char option) static void usage(void) { fprintf(stderr, "Usage: %s [options] path map_type [args...]\n", program); + fprintf(stderr, " -D|--dumpmap dumps out the maps read and exits\n"); + } static void setup_signals(__sighandler_t event_handler, __sighandler_t cld_handler) @@ -1671,6 +1674,7 @@ int main(int argc, char *argv[]) {"version", 0, 0, 'V'}, {"ghost", 0, 0, 'g'}, {"submount", 0, &submount, 1}, + {"dumpmap", 0, 0, 'D'}, {0, 0, 0, 0} }; @@ -1683,7 +1687,7 @@ int main(int argc, char *argv[]) ap.dir_created = 0; /* We haven't created the main directory yet */ opterr = 0; - while ((opt = getopt_long(argc, argv, "+hp:t:vdVg", long_options, NULL)) != EOF) { + while ((opt = getopt_long(argc, argv, "+hp:t:vdVgD", long_options, NULL)) != EOF) { switch (opt) { case 'h': usage(); @@ -1713,6 +1717,9 @@ int main(int argc, char *argv[]) ap.ghost = LKP_GHOST; break; + case 'D': + dumpmap = 1; + break; case '?': case ':': printf("%s: Ambiguous or unknown options\n", program); @@ -1734,7 +1741,8 @@ int main(int argc, char *argv[]) exit(1); } - become_daemon(); + if (!dumpmap) + become_daemon(); path = argv[0]; map = argv[1]; @@ -1762,6 +1770,15 @@ int main(int argc, char *argv[]) if (!(ap.lookup = open_lookup(map, "", mapfmt, mapargc, mapargv))) cleanup_exit(path, 1); + if (dumpmap) { + int ret; + ret = ap.lookup->lookup_ghost(ap.path, ap.ghost, + 0, ap.lookup->context); + if (ret & LKP_FAIL) + exit(ret); + exit(0); + } + if (!strncmp(path, "/-", 2)) { supervisor(path); } else { diff --git a/include/automount.h b/include/automount.h index d2f5d70..64ff83d 100644 --- a/include/automount.h +++ b/include/automount.h @@ -286,6 +286,9 @@ int allow_owner_mount(const char *); extern int do_verbose; extern int do_debug; +/* command line option to print out included map contents */ +extern int dumpmap; + #define info(msg, args...) \ if (do_verbose || do_debug) \ syslog(LOG_INFO, msg, ##args); diff --git a/lib/cache.c b/lib/cache.c index 781c980..5a01079 100644 --- a/lib/cache.c +++ b/lib/cache.c @@ -169,6 +169,11 @@ int cache_add(const char *root, const char *key, const char *mapent, time_t age) char *pkey, *pent; unsigned int hashval = hash(key); + if (dumpmap) { + fprintf(stdout, "%s %s\n", key, mapent); + return CHE_OK; + } + me = (struct mapent_cache *) malloc(sizeof(struct mapent_cache)); if (!me) return CHE_FAIL; @@ -221,6 +226,11 @@ int cache_update(const char *root, const char *key, const char *mapent, time_t a char *pent; int ret = CHE_OK; + if (dumpmap) { + fprintf(stdout, "%s %s\n", key, mapent); + return CHE_OK; + } + for (s = mapent_hash[hash(key)]; s != NULL; s = s->next) if (strcmp(key, s->key) == 0) me = s; diff --git a/man/automount.8 b/man/automount.8 index 2b63959..e640656 100644 --- a/man/automount.8 +++ b/man/automount.8 @@ -43,6 +43,9 @@ until accesssed. The wildcard map is not ghosted. .TP .I "\-V, \-\-version" Display the version number, then exit. +.TP +.I "\-D, \-\-dumpmap" +Dumps the maps read and exits. .SH ARGUMENTS \fBautomount\fP takes at least three arguments. Mandatory arguments include \fImount-point\fP, \fImap-type\fP, and \fImap\fP. Both mandatory -- 1.7.3.3 _______________________________________________ autofs mailing list autofs@linux.kernel.org http://linux.kernel.org/mailman/listinfo/autofs