+++ /dev/null
-From cfc9d20b832a3db40b4e61fa6af0fbcda911ec2e Mon Sep 17 00:00:00 2001
-From: Wolfgang Bumiller <w.bumiller@proxmox.com>
-Date: Wed, 9 Dec 2015 14:46:49 +0100
-Subject: [PATCH 13/48] vma: add 'config' command to dump the config
-
----
- vma.c | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 64 insertions(+)
-
-diff --git a/vma.c b/vma.c
-index ab7b766..8925407 100644
---- a/vma.c
-+++ b/vma.c
-@@ -27,6 +27,7 @@ static void help(void)
- "usage: vma command [command options]\n"
- "\n"
- "vma list <filename>\n"
-+ "vma config <filename> [-c config]\n"
- "vma create <filename> [-c config] <archive> pathname ...\n"
- "vma extract <filename> [-r <fifo>] <targetdir>\n"
- "vma verify <filename> [-v]\n"
-@@ -605,6 +606,67 @@ static int create_archive(int argc, char **argv)
- return 0;
- }
-
-+static int dump_config(int argc, char **argv)
-+{
-+ int c, ret = 0;
-+ const char *filename;
-+ const char *config_name = "qemu-server.conf";
-+
-+ for (;;) {
-+ c = getopt(argc, argv, "hc:");
-+ if (c == -1) {
-+ break;
-+ }
-+ switch (c) {
-+ case '?':
-+ case 'h':
-+ help();
-+ break;
-+ case 'c':
-+ config_name = optarg;
-+ break;
-+ default:
-+ help();
-+ }
-+ }
-+
-+ /* Get the filename */
-+ if ((optind + 1) != argc) {
-+ help();
-+ }
-+ filename = argv[optind++];
-+
-+ Error *errp = NULL;
-+ VmaReader *vmar = vma_reader_create(filename, &errp);
-+
-+ if (!vmar) {
-+ g_error("%s", error_get_pretty(errp));
-+ }
-+
-+ int found = 0;
-+ GList *l = vma_reader_get_config_data(vmar);
-+ while (l && l->data) {
-+ VmaConfigData *cdata = (VmaConfigData *)l->data;
-+ l = g_list_next(l);
-+ if (strcmp(cdata->name, config_name) == 0) {
-+ found = 1;
-+ fwrite(cdata->data, cdata->len, 1, stdout);
-+ break;
-+ }
-+ }
-+
-+ vma_reader_destroy(vmar);
-+
-+ bdrv_close_all();
-+
-+ if (!found) {
-+ fprintf(stderr, "unable to find configuration data '%s'\n", config_name);
-+ return -1;
-+ }
-+
-+ return ret;
-+}
-+
- int main(int argc, char **argv)
- {
- const char *cmdname;
-@@ -634,6 +696,8 @@ int main(int argc, char **argv)
- return extract_content(argc, argv);
- } else if (!strcmp(cmdname, "verify")) {
- return verify_content(argc, argv);
-+ } else if (!strcmp(cmdname, "config")) {
-+ return dump_config(argc, argv);
- }
-
- help();
---
-2.1.4
-