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);
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);
}

View File

@ -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, int indent)
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 *

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);
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);