Author: trasz
Date: Thu Mar 12 12:36:08 2015
New Revision: 279916
URL: https://svnweb.freebsd.org/changeset/base/279916

Log:
  Make "automount -LL -o whatever" present options in the same order
  as used by automountd(8).
  
  MFC after:    1 month
  Sponsored by: The FreeBSD Foundation

Modified:
  head/usr.sbin/autofs/automount.c
  head/usr.sbin/autofs/common.c
  head/usr.sbin/autofs/common.h

Modified: head/usr.sbin/autofs/automount.c
==============================================================================
--- head/usr.sbin/autofs/automount.c    Thu Mar 12 12:17:15 2015        
(r279915)
+++ head/usr.sbin/autofs/automount.c    Thu Mar 12 12:36:08 2015        
(r279916)
@@ -381,13 +381,12 @@ main_automount(int argc, char **argv)
        parse_master(root, AUTO_MASTER_PATH);
 
        if (show_maps) {
-               root->n_options = concat(options, ',', root->n_options);
                if (show_maps > 1) {
                        node_expand_indirect_maps(root);
                        node_expand_ampersand(root, NULL);
                }
                node_expand_defined(root);
-               node_print(root);
+               node_print(root, options);
                return (0);
        }
 

Modified: head/usr.sbin/autofs/common.c
==============================================================================
--- head/usr.sbin/autofs/common.c       Thu Mar 12 12:17:15 2015        
(r279915)
+++ head/usr.sbin/autofs/common.c       Thu Mar 12 12:36:08 2015        
(r279916)
@@ -607,13 +607,16 @@ node_options(const struct node *n)
 }
 
 static void
-node_print_indent(const struct node *n, int indent)
+node_print_indent(const struct node *n, const char *cmdline_options,
+    int indent)
 {
        const struct node *child, *first_child;
-       char *path, *options;
+       char *path, *options, *tmp;
 
        path = node_path(n);
-       options = node_options(n);
+       tmp = node_options(n);
+       options = concat(cmdline_options, ',', tmp);
+       free(tmp);
 
        /*
         * Do not show both parent and child node if they have the same
@@ -644,16 +647,21 @@ node_print_indent(const struct node *n, 
        free(options);
 
        TAILQ_FOREACH(child, &n->n_children, n_next)
-               node_print_indent(child, indent + 2);
+               node_print_indent(child, cmdline_options, indent + 2);
 }
 
+/*
+ * Recursively print node with all its children.  The cmdline_options
+ * argument is used for additional options to be prepended to all the
+ * others - usually those are the options passed by command line.
+ */
 void
-node_print(const struct node *n)
+node_print(const struct node *n, const char *cmdline_options)
 {
        const struct node *child;
 
        TAILQ_FOREACH(child, &n->n_children, n_next)
-               node_print_indent(child, 0);
+               node_print_indent(child, cmdline_options, 0);
 }
 
 static struct node *

Modified: head/usr.sbin/autofs/common.h
==============================================================================
--- head/usr.sbin/autofs/common.h       Thu Mar 12 12:17:15 2015        
(r279915)
+++ head/usr.sbin/autofs/common.h       Thu Mar 12 12:36:08 2015        
(r279916)
@@ -87,7 +87,7 @@ void  node_expand_ampersand(struct node *
 void   node_expand_wildcard(struct node *root, const char *key);
 int    node_expand_defined(struct node *root);
 void   node_expand_indirect_maps(struct node *n);
-void   node_print(const struct node *n);
+void   node_print(const struct node *n, const char *cmdline_options);
 void   parse_master(struct node *root, const char *path);
 void   parse_map(struct node *parent, const char *map, const char *args,
            bool *wildcards);
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to