]> git.proxmox.com Git - pve-qemu-kvm.git/blame - debian/patches/backup-vma-add-dump-config.patch
Two more fixes
[pve-qemu-kvm.git] / debian / patches / backup-vma-add-dump-config.patch
CommitLineData
2bae733b
DM
1Index: new/vma.c
2===================================================================
24bb7da3
DM
3--- new.orig/vma.c 2014-11-20 08:47:30.000000000 +0100
4+++ new/vma.c 2014-11-20 08:47:47.000000000 +0100
2bae733b
DM
5@@ -32,6 +32,7 @@
6 "usage: vma command [command options]\n"
7 "\n"
8 "vma list <filename>\n"
9+ "vma config <filename> [-c config]\n"
10 "vma create <filename> [-c config] <archive> pathname ...\n"
11 "vma extract <filename> [-r <fifo>] <targetdir>\n"
12 "vma verify <filename> [-v]\n"
24bb7da3 13@@ -601,6 +602,67 @@
2bae733b
DM
14 return 0;
15 }
16
17+static int dump_config(int argc, char **argv)
18+{
19+ int c, ret = 0;
20+ const char *filename;
21+ const char *config_name = "qemu-server.conf";
22+
23+ for (;;) {
24+ c = getopt(argc, argv, "hc:");
25+ if (c == -1) {
26+ break;
27+ }
28+ switch (c) {
29+ case '?':
30+ case 'h':
31+ help();
32+ break;
33+ case 'c':
34+ config_name = optarg;
35+ break;
36+ default:
37+ help();
38+ }
39+ }
40+
41+ /* Get the filename */
42+ if ((optind + 1) != argc) {
43+ help();
44+ }
45+ filename = argv[optind++];
46+
47+ Error *errp = NULL;
48+ VmaReader *vmar = vma_reader_create(filename, &errp);
49+
50+ if (!vmar) {
51+ g_error("%s", error_get_pretty(errp));
52+ }
53+
54+ int found = 0;
55+ GList *l = vma_reader_get_config_data(vmar);
56+ while (l && l->data) {
57+ VmaConfigData *cdata = (VmaConfigData *)l->data;
58+ l = g_list_next(l);
59+ if (strcmp(cdata->name, config_name) == 0) {
60+ found = 1;
61+ fwrite(cdata->data, cdata->len, 1, stdout);
62+ break;
63+ }
64+ }
65+
66+ vma_reader_destroy(vmar);
67+
68+ bdrv_close_all();
69+
70+ if (!found) {
71+ fprintf(stderr, "unable to find configuration data '%s'\n", config_name);
72+ return -1;
73+ }
74+
75+ return ret;
76+}
77+
78 int main(int argc, char **argv)
79 {
80 const char *cmdname;
24bb7da3 81@@ -630,6 +692,8 @@
2bae733b
DM
82 return extract_content(argc, argv);
83 } else if (!strcmp(cmdname, "verify")) {
84 return verify_content(argc, argv);
85+ } else if (!strcmp(cmdname, "config")) {
86+ return dump_config(argc, argv);
87 }
88
89 help();