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
This commit is contained in:
Edward Tomasz Napierala 2015-03-12 12:36:08 +00:00
parent 4d58da13af
commit 8ee4f5ef45
3 changed files with 16 additions and 9 deletions

View File

@ -381,13 +381,12 @@ main_automount(int argc, char **argv)
parse_master(root, AUTO_MASTER_PATH); parse_master(root, AUTO_MASTER_PATH);
if (show_maps) { if (show_maps) {
root->n_options = concat(options, ',', root->n_options);
if (show_maps > 1) { if (show_maps > 1) {
node_expand_indirect_maps(root); node_expand_indirect_maps(root);
node_expand_ampersand(root, NULL); node_expand_ampersand(root, NULL);
} }
node_expand_defined(root); node_expand_defined(root);
node_print(root); node_print(root, options);
return (0); return (0);
} }

View File

@ -607,13 +607,16 @@ node_options(const struct node *n)
} }
static void 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; const struct node *child, *first_child;
char *path, *options; char *path, *options, *tmp;
path = node_path(n); 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 * Do not show both parent and child node if they have the same
@ -644,16 +647,21 @@ node_print_indent(const struct node *n, int indent)
free(options); free(options);
TAILQ_FOREACH(child, &n->n_children, n_next) 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 void
node_print(const struct node *n) node_print(const struct node *n, const char *cmdline_options)
{ {
const struct node *child; const struct node *child;
TAILQ_FOREACH(child, &n->n_children, n_next) TAILQ_FOREACH(child, &n->n_children, n_next)
node_print_indent(child, 0); node_print_indent(child, cmdline_options, 0);
} }
static struct node * static struct node *

View File

@ -87,7 +87,7 @@ void node_expand_ampersand(struct node *root, const char *key);
void node_expand_wildcard(struct node *root, const char *key); void node_expand_wildcard(struct node *root, const char *key);
int node_expand_defined(struct node *root); int node_expand_defined(struct node *root);
void node_expand_indirect_maps(struct node *n); 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_master(struct node *root, const char *path);
void parse_map(struct node *parent, const char *map, const char *args, void parse_map(struct node *parent, const char *map, const char *args,
bool *wildcards); bool *wildcards);