root / vhd / lib / vhd-util-repair.c @ abdb293f
History | View | Annotate | Download (2.4 kB)
1 | abdb293f | Chrysostomos Nanakos | /*
|
---|---|---|---|
2 | abdb293f | Chrysostomos Nanakos | * Copyright (c) 2007, XenSource Inc.
|
3 | abdb293f | Chrysostomos Nanakos | * Copyright (c) 2010, Citrix Systems, Inc.
|
4 | abdb293f | Chrysostomos Nanakos | *
|
5 | abdb293f | Chrysostomos Nanakos | * All rights reserved.
|
6 | abdb293f | Chrysostomos Nanakos | *
|
7 | abdb293f | Chrysostomos Nanakos | * Redistribution and use in source and binary forms, with or without
|
8 | abdb293f | Chrysostomos Nanakos | * modification, are permitted provided that the following conditions are met:
|
9 | abdb293f | Chrysostomos Nanakos | * * Redistributions of source code must retain the above copyright
|
10 | abdb293f | Chrysostomos Nanakos | * notice, this list of conditions and the following disclaimer.
|
11 | abdb293f | Chrysostomos Nanakos | * * Redistributions in binary form must reproduce the above copyright
|
12 | abdb293f | Chrysostomos Nanakos | * notice, this list of conditions and the following disclaimer in the
|
13 | abdb293f | Chrysostomos Nanakos | * documentation and/or other materials provided with the distribution.
|
14 | abdb293f | Chrysostomos Nanakos | * * Neither the name of XenSource Inc. nor the names of its contributors
|
15 | abdb293f | Chrysostomos Nanakos | * may be used to endorse or promote products derived from this software
|
16 | abdb293f | Chrysostomos Nanakos | * without specific prior written permission.
|
17 | abdb293f | Chrysostomos Nanakos | *
|
18 | abdb293f | Chrysostomos Nanakos | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
19 | abdb293f | Chrysostomos Nanakos | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
20 | abdb293f | Chrysostomos Nanakos | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
21 | abdb293f | Chrysostomos Nanakos | * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
|
22 | abdb293f | Chrysostomos Nanakos | * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
23 | abdb293f | Chrysostomos Nanakos | * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
24 | abdb293f | Chrysostomos Nanakos | * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
25 | abdb293f | Chrysostomos Nanakos | * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
26 | abdb293f | Chrysostomos Nanakos | * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
27 | abdb293f | Chrysostomos Nanakos | * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
28 | abdb293f | Chrysostomos Nanakos | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
29 | abdb293f | Chrysostomos Nanakos | */
|
30 | abdb293f | Chrysostomos Nanakos | |
31 | abdb293f | Chrysostomos Nanakos | #ifdef HAVE_CONFIG_H
|
32 | abdb293f | Chrysostomos Nanakos | #include "config.h" |
33 | abdb293f | Chrysostomos Nanakos | #endif
|
34 | abdb293f | Chrysostomos Nanakos | |
35 | abdb293f | Chrysostomos Nanakos | #include <errno.h> |
36 | abdb293f | Chrysostomos Nanakos | #include <fcntl.h> |
37 | abdb293f | Chrysostomos Nanakos | #include <stdio.h> |
38 | abdb293f | Chrysostomos Nanakos | #include <stdlib.h> |
39 | abdb293f | Chrysostomos Nanakos | #include <unistd.h> |
40 | abdb293f | Chrysostomos Nanakos | |
41 | abdb293f | Chrysostomos Nanakos | #include "libvhd.h" |
42 | abdb293f | Chrysostomos Nanakos | |
43 | abdb293f | Chrysostomos Nanakos | int
|
44 | abdb293f | Chrysostomos Nanakos | vhd_util_repair(int argc, char **argv) |
45 | abdb293f | Chrysostomos Nanakos | { |
46 | abdb293f | Chrysostomos Nanakos | char *name;
|
47 | abdb293f | Chrysostomos Nanakos | int err, c;
|
48 | abdb293f | Chrysostomos Nanakos | vhd_context_t vhd; |
49 | abdb293f | Chrysostomos Nanakos | |
50 | abdb293f | Chrysostomos Nanakos | name = NULL;
|
51 | abdb293f | Chrysostomos Nanakos | |
52 | abdb293f | Chrysostomos Nanakos | if (!argc || !argv)
|
53 | abdb293f | Chrysostomos Nanakos | goto usage;
|
54 | abdb293f | Chrysostomos Nanakos | |
55 | abdb293f | Chrysostomos Nanakos | optind = 0;
|
56 | abdb293f | Chrysostomos Nanakos | while ((c = getopt(argc, argv, "n:h")) != -1) { |
57 | abdb293f | Chrysostomos Nanakos | switch (c) {
|
58 | abdb293f | Chrysostomos Nanakos | case 'n': |
59 | abdb293f | Chrysostomos Nanakos | name = optarg; |
60 | abdb293f | Chrysostomos Nanakos | break;
|
61 | abdb293f | Chrysostomos Nanakos | case 'h': |
62 | abdb293f | Chrysostomos Nanakos | default:
|
63 | abdb293f | Chrysostomos Nanakos | goto usage;
|
64 | abdb293f | Chrysostomos Nanakos | } |
65 | abdb293f | Chrysostomos Nanakos | } |
66 | abdb293f | Chrysostomos Nanakos | |
67 | abdb293f | Chrysostomos Nanakos | if (!name || optind != argc)
|
68 | abdb293f | Chrysostomos Nanakos | goto usage;
|
69 | abdb293f | Chrysostomos Nanakos | |
70 | abdb293f | Chrysostomos Nanakos | err = vhd_open(&vhd, name, VHD_OPEN_RDWR); |
71 | abdb293f | Chrysostomos Nanakos | if (err) {
|
72 | abdb293f | Chrysostomos Nanakos | printf("error opening %s: %d\n", name, err);
|
73 | abdb293f | Chrysostomos Nanakos | return err;
|
74 | abdb293f | Chrysostomos Nanakos | } |
75 | abdb293f | Chrysostomos Nanakos | |
76 | abdb293f | Chrysostomos Nanakos | err = vhd_write_footer(&vhd, &vhd.footer); |
77 | abdb293f | Chrysostomos Nanakos | if (err)
|
78 | abdb293f | Chrysostomos Nanakos | printf("error writing footer: %d\n", err);
|
79 | abdb293f | Chrysostomos Nanakos | |
80 | abdb293f | Chrysostomos Nanakos | vhd_close(&vhd); |
81 | abdb293f | Chrysostomos Nanakos | return err;
|
82 | abdb293f | Chrysostomos Nanakos | |
83 | abdb293f | Chrysostomos Nanakos | usage:
|
84 | abdb293f | Chrysostomos Nanakos | printf("options: <-n name> [-h help]\n");
|
85 | abdb293f | Chrysostomos Nanakos | return -EINVAL;
|
86 | abdb293f | Chrysostomos Nanakos | } |