You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
68 lines
1.6 KiB
68 lines
1.6 KiB
autofs-5.1.1 - factor out free multi map context |
|
|
|
From: Ian Kent <raven@themaw.net> |
|
|
|
Seperate out the free context function for the multi map module. |
|
|
|
Signed-off-by: Ian Kent <raven@themaw.net> |
|
--- |
|
modules/lookup_multi.c | 38 +++++++++++++++++++++++++++++--------- |
|
1 file changed, 29 insertions(+), 9 deletions(-) |
|
|
|
diff --git a/modules/lookup_multi.c b/modules/lookup_multi.c |
|
index 0ee20f5..36ace11 100644 |
|
--- a/modules/lookup_multi.c |
|
+++ b/modules/lookup_multi.c |
|
@@ -40,6 +40,32 @@ struct lookup_context { |
|
|
|
int lookup_version = AUTOFS_LOOKUP_VERSION; /* Required by protocol */ |
|
|
|
+static int free_multi_context(struct lookup_context *ctxt) |
|
+{ |
|
+ int rv; |
|
+ |
|
+ if (!ctxt) |
|
+ return 0; |
|
+ |
|
+ rv = 0; |
|
+ if (ctxt->m) { |
|
+ int i; |
|
+ |
|
+ for (i = 0; i < ctxt->n; i++) { |
|
+ if (ctxt->m[i].mod) |
|
+ rv = rv || close_lookup(ctxt->m[i].mod); |
|
+ if (ctxt->m[i].argv) |
|
+ free_argv(ctxt->m[i].argc, ctxt->m[i].argv); |
|
+ } |
|
+ free(ctxt->m); |
|
+ } |
|
+ |
|
+ if (ctxt->argl) |
|
+ free(ctxt->argl); |
|
+ |
|
+ return rv; |
|
+} |
|
+ |
|
static struct lookup_mod *nss_open_lookup(const char *format, int argc, const char **argv) |
|
{ |
|
struct list_head nsslist; |
|
@@ -306,16 +332,10 @@ int lookup_mount(struct autofs_point *ap, const char *name, int name_len, void * |
|
int lookup_done(void *context) |
|
{ |
|
struct lookup_context *ctxt = (struct lookup_context *) context; |
|
- int i, rv = 0; |
|
+ int rv; |
|
|
|
- for (i = 0; i < ctxt->n; i++) { |
|
- if (ctxt->m[i].mod) |
|
- rv = rv || close_lookup(ctxt->m[i].mod); |
|
- if (ctxt->m[i].argv) |
|
- free_argv(ctxt->m[i].argc, ctxt->m[i].argv); |
|
- } |
|
- free(ctxt->argl); |
|
- free(ctxt->m); |
|
+ rv = free_multi_context(ctxt); |
|
free(ctxt); |
|
+ |
|
return rv; |
|
}
|
|
|