]> git.proxmox.com Git - pve-qemu-kvm.git/blame - debian/patches/pve/0013-vma-add-config-command-to-dump-the-config.patch
bump version to 2.9.0-1~rc2+5
[pve-qemu-kvm.git] / debian / patches / pve / 0013-vma-add-config-command-to-dump-the-config.patch
CommitLineData
1a91ab45 1From cfc9d20b832a3db40b4e61fa6af0fbcda911ec2e Mon Sep 17 00:00:00 2001
ca0fe5f5
WB
2From: Wolfgang Bumiller <w.bumiller@proxmox.com>
3Date: Wed, 9 Dec 2015 14:46:49 +0100
adeb0c7a 4Subject: [PATCH 13/48] vma: add 'config' command to dump the config
ca0fe5f5
WB
5
6---
7 vma.c | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
8 1 file changed, 64 insertions(+)
9
10diff --git a/vma.c b/vma.c
1a91ab45 11index ab7b766..8925407 100644
ca0fe5f5
WB
12--- a/vma.c
13+++ b/vma.c
1a91ab45 14@@ -27,6 +27,7 @@ static void help(void)
ca0fe5f5
WB
15 "usage: vma command [command options]\n"
16 "\n"
17 "vma list <filename>\n"
18+ "vma config <filename> [-c config]\n"
19 "vma create <filename> [-c config] <archive> pathname ...\n"
20 "vma extract <filename> [-r <fifo>] <targetdir>\n"
21 "vma verify <filename> [-v]\n"
1a91ab45 22@@ -605,6 +606,67 @@ static int create_archive(int argc, char **argv)
ca0fe5f5
WB
23 return 0;
24 }
25
26+static int dump_config(int argc, char **argv)
27+{
28+ int c, ret = 0;
29+ const char *filename;
30+ const char *config_name = "qemu-server.conf";
31+
32+ for (;;) {
33+ c = getopt(argc, argv, "hc:");
34+ if (c == -1) {
35+ break;
36+ }
37+ switch (c) {
38+ case '?':
39+ case 'h':
40+ help();
41+ break;
42+ case 'c':
43+ config_name = optarg;
44+ break;
45+ default:
46+ help();
47+ }
48+ }
49+
50+ /* Get the filename */
51+ if ((optind + 1) != argc) {
52+ help();
53+ }
54+ filename = argv[optind++];
55+
56+ Error *errp = NULL;
57+ VmaReader *vmar = vma_reader_create(filename, &errp);
58+
59+ if (!vmar) {
60+ g_error("%s", error_get_pretty(errp));
61+ }
62+
63+ int found = 0;
64+ GList *l = vma_reader_get_config_data(vmar);
65+ while (l && l->data) {
66+ VmaConfigData *cdata = (VmaConfigData *)l->data;
67+ l = g_list_next(l);
68+ if (strcmp(cdata->name, config_name) == 0) {
69+ found = 1;
70+ fwrite(cdata->data, cdata->len, 1, stdout);
71+ break;
72+ }
73+ }
74+
75+ vma_reader_destroy(vmar);
76+
77+ bdrv_close_all();
78+
79+ if (!found) {
80+ fprintf(stderr, "unable to find configuration data '%s'\n", config_name);
81+ return -1;
82+ }
83+
84+ return ret;
85+}
86+
87 int main(int argc, char **argv)
88 {
89 const char *cmdname;
1a91ab45 90@@ -634,6 +696,8 @@ int main(int argc, char **argv)
ca0fe5f5
WB
91 return extract_content(argc, argv);
92 } else if (!strcmp(cmdname, "verify")) {
93 return verify_content(argc, argv);
94+ } else if (!strcmp(cmdname, "config")) {
95+ return dump_config(argc, argv);
96 }
97
98 help();
99--
1002.1.4
101