]> git.proxmox.com Git - pve-qemu-kvm.git/blob - debian/patches/pve/0013-vma-add-config-command-to-dump-the-config.patch
vma: don't use O_DIRECT on pipes
[pve-qemu-kvm.git] / debian / patches / pve / 0013-vma-add-config-command-to-dump-the-config.patch
1 From cfc9d20b832a3db40b4e61fa6af0fbcda911ec2e Mon Sep 17 00:00:00 2001
2 From: Wolfgang Bumiller <w.bumiller@proxmox.com>
3 Date: Wed, 9 Dec 2015 14:46:49 +0100
4 Subject: [PATCH 13/48] vma: add 'config' command to dump the config
5
6 ---
7 vma.c | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
8 1 file changed, 64 insertions(+)
9
10 diff --git a/vma.c b/vma.c
11 index ab7b766..8925407 100644
12 --- a/vma.c
13 +++ b/vma.c
14 @@ -27,6 +27,7 @@ static void help(void)
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"
22 @@ -605,6 +606,67 @@ static int create_archive(int argc, char **argv)
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;
90 @@ -634,6 +696,8 @@ int main(int argc, char **argv)
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 --
100 2.1.4
101