From 5f6ac1c81274de2a3162764d7c4b14a80b3a5ae2 Mon Sep 17 00:00:00 2001 From: David Teigland Date: Wed, 15 Apr 2015 10:56:42 -0500 Subject: [PATCH] dumpconfig: add --withfullcomments option --withfullcomments prints all comment lines for each config option. --withcomments prints only the first comment line, which should be a short one-line summary of the option. --- WHATS_NEW | 1 + lib/config/config.c | 8 ++++++-- lib/config/config.h | 3 ++- man/lvm-dumpconfig.8.in | 7 ++++++- tools/args.h | 1 + tools/commands.h | 3 ++- tools/dumpconfig.c | 2 ++ 7 files changed, 20 insertions(+), 5 deletions(-) diff --git a/WHATS_NEW b/WHATS_NEW index 9313ffb07..29e461ca4 100644 --- a/WHATS_NEW +++ b/WHATS_NEW @@ -1,5 +1,6 @@ Version 2.02.119 - ================================== + Add --withfullcomments option to dumpconfig to print full comment. Check for lvm binary in blkdeactivate and skip LVM processing if not present. Add --enable-halvm and --disable-halvm options to lvmconf script. Add --services, --mirrorservice and --startstopservices option to lvmconf. diff --git a/lib/config/config.c b/lib/config/config.c index b28472b8b..8f116cdd6 100644 --- a/lib/config/config.c +++ b/lib/config/config.c @@ -1541,15 +1541,19 @@ static int _out_prefix_fn(const struct dm_config_node *cn, const char *line, voi cfg_def = cfg_def_get_item_p(cn->id); - if (out->tree_spec->withcomments) { + if (out->tree_spec->withcomments || out->tree_spec->withfullcomments) { _cfg_def_make_path(path, sizeof(path), cfg_def->id, cfg_def, 1); fprintf(out->fp, "\n"); fprintf(out->fp, "%s# Configuration %s %s.\n", line, node_type_name, path); if (cfg_def->comment) { int pos = 0; - while (_copy_one_line(cfg_def->comment, commentline, &pos, strlen(cfg_def->comment))) + while (_copy_one_line(cfg_def->comment, commentline, &pos, strlen(cfg_def->comment))) { fprintf(out->fp, "%s# %s\n", line, commentline); + /* withcomments prints only the first comment line. */ + if (!out->tree_spec->withfullcomments) + break; + } } if (cfg_def->flags & CFG_ADVANCED) diff --git a/lib/config/config.h b/lib/config/config.h index 5fe6a9f16..72c7606a6 100644 --- a/lib/config/config.h +++ b/lib/config/config.h @@ -144,7 +144,8 @@ struct config_def_tree_spec { uint16_t version; /* tree at this LVM2 version */ unsigned ignoreadvanced:1; /* do not include advanced configs */ unsigned ignoreunsupported:1; /* do not include unsupported configs */ - unsigned withcomments:1; /* include comments */ + unsigned withcomments:1; /* include first line of comment */ + unsigned withfullcomments:1; /* include all comment lines */ unsigned withversions:1; /* include versions */ uint8_t *check_status; /* status of last tree check (currently needed for CFG_DEF_TREE_MISSING only) */ }; diff --git a/man/lvm-dumpconfig.8.in b/man/lvm-dumpconfig.8.in index 04afce96b..a4289d9c0 100644 --- a/man/lvm-dumpconfig.8.in +++ b/man/lvm-dumpconfig.8.in @@ -22,6 +22,7 @@ lvm-dumpconfig \(em dump LVM configuration .RB [ \-\-mergedconfig ] .RB [ \-\-validate ] .RB [ \-\-withcomments ] +.RB [ \-\-withfullcomments ] .RB [ \-\-withversions ] .RB [ ConfigurationNode... ] @@ -140,7 +141,11 @@ option is disabled. .TP .B \-\-withcomments -Also dump comments for each configuration node. +Dump a one line comment for each configuration node. + +.TP +.B \-\-withfullcomments +Dump a full comment for each configuration node. .TP .B \-\-withversions diff --git a/tools/args.h b/tools/args.h index a40cfb060..4a434575a 100644 --- a/tools/args.h +++ b/tools/args.h @@ -117,6 +117,7 @@ arg(version_ARG, '\0', "version", NULL, 0) arg(vgmetadatacopies_ARG, '\0', "vgmetadatacopies", metadatacopies_arg, 0) arg(virtualoriginsize_ARG, '\0', "virtualoriginsize", size_mb_arg, 0) arg(withcomments_ARG, '\0', "withcomments", NULL, 0) +arg(withfullcomments_ARG, '\0', "withfullcomments", NULL, 0) arg(withversions_ARG, '\0', "withversions", NULL, 0) arg(writebehind_ARG, '\0', "writebehind", int_arg, 0) arg(writemostly_ARG, '\0', "writemostly", string_arg, ARG_GROUPABLE) diff --git a/tools/commands.h b/tools/commands.h index 719c507b7..b9c7a8b5e 100644 --- a/tools/commands.h +++ b/tools/commands.h @@ -70,11 +70,12 @@ xx(dumpconfig, "\t[--mergedconfig]\n" "\t[--validate]\n" "\t[--withcomments]\n" + "\t[--withfullcomments]\n" "\t[--withversions]\n" "\t[ConfigurationNode...]\n", atversion_ARG, configtype_ARG, file_ARG, ignoreadvanced_ARG, ignoreunsupported_ARG, mergedconfig_ARG, metadataprofile_ARG, - validate_ARG, withcomments_ARG, withversions_ARG) + validate_ARG, withcomments_ARG, withfullcomments_ARG, withversions_ARG) xx(formats, "List available metadata formats", diff --git a/tools/dumpconfig.c b/tools/dumpconfig.c index 09f2119e5..6d2108f0d 100644 --- a/tools/dumpconfig.c +++ b/tools/dumpconfig.c @@ -219,6 +219,8 @@ int dumpconfig(struct cmd_context *cmd, int argc, char **argv) if (arg_count(cmd, withcomments_ARG)) tree_spec.withcomments = 1; + if (arg_count(cmd, withfullcomments_ARG)) + tree_spec.withfullcomments = 1; if (arg_count(cmd, withversions_ARG)) tree_spec.withversions = 1;