--- align/scan.c | 45 +- builder/index-parser-c.c | 25 +- builder/index-struct.c | 3 +- builder/index-struct.h | 14 +- builder/index-validate.c | 54 +- builder/pxzcat-c.c | 164 ++-- builder/setlocale-c.c | 18 +- builder/yajl-c.c | 22 +- cat/cat.c | 64 +- cat/filesystems.c | 216 +++-- cat/log.c | 154 ++-- cat/ls.c | 148 ++-- cat/visit.c | 15 +- cat/visit.h | 11 +- customize/crypt-c.c | 3 +- customize/perl_edit-c.c | 3 +- daemon/9p.c | 20 +- daemon/acl.c | 8 +- daemon/augeas.c | 73 +- daemon/available.c | 12 +- daemon/base64.c | 15 +- daemon/blkdiscard.c | 12 +- daemon/blkid.c | 63 +- daemon/blockdev.c | 28 +- daemon/btrfs.c | 214 ++--- daemon/cap.c | 8 +- daemon/checksum.c | 36 +- daemon/cleanups.c | 15 +- daemon/cleanups.h | 15 +- daemon/cmp.c | 5 +- daemon/command.c | 62 +- daemon/command.h | 22 +- daemon/compress.c | 45 +- daemon/copy.c | 68 +- daemon/cpio.c | 23 +- daemon/cpmv.c | 13 +- daemon/daemon.h | 199 +++-- daemon/dd.c | 14 +- daemon/debug-bmap.c | 20 +- daemon/debug.c | 245 +++--- daemon/devsparts.c | 33 +- daemon/df.c | 9 +- daemon/dir.c | 33 +- daemon/dmesg.c | 7 +- daemon/dropcaches.c | 3 +- daemon/du.c | 7 +- daemon/echo-daemon.c | 3 +- daemon/ext2.c | 267 +++--- daemon/fallocate.c | 8 +- daemon/file.c | 71 +- daemon/fill.c | 13 +- daemon/find.c | 11 +- daemon/findfs.c | 11 +- daemon/format.c | 3 +- daemon/fs-min-size.c | 10 +- daemon/fsck.c | 5 +- daemon/fstrim.c | 12 +- daemon/glob.c | 13 +- daemon/grep.c | 19 +- daemon/grub.c | 9 +- daemon/guestfsd.c | 169 ++-- daemon/headtail.c | 11 +- daemon/hexdump.c | 7 +- daemon/hivex.c | 39 +- daemon/hotplug.c | 8 +- daemon/htonl.c | 32 +- daemon/initrd.c | 28 +- daemon/inotify.c | 63 +- daemon/internal.c | 6 +- daemon/is.c | 29 +- daemon/isoinfo.c | 128 +-- daemon/journal.c | 41 +- daemon/labels.c | 11 +- daemon/ldm.c | 91 +- daemon/link.c | 16 +- daemon/ls.c | 20 +- daemon/luks.c | 23 +- daemon/lvm-filter.c | 20 +- daemon/lvm.c | 150 ++-- daemon/md.c | 95 +- daemon/mkfs.c | 63 +- daemon/mknod.c | 15 +- daemon/mktemp.c | 8 +- daemon/modprobe.c | 5 +- daemon/mount.c | 60 +- daemon/mountable.c | 3 +- daemon/ntfs.c | 42 +- daemon/ntfsclone.c | 58 +- daemon/parted.c | 206 ++--- daemon/pingdaemon.c | 3 +- daemon/proto.c | 167 ++-- daemon/readdir.c | 41 +- daemon/realpath.c | 24 +- daemon/rename.c | 3 +- daemon/rsync.c | 22 +- daemon/scrub.c | 5 +- daemon/selinux.c | 7 +- daemon/sfdisk.c | 22 +- daemon/sh.c | 78 +- daemon/sleep.c | 5 +- daemon/sleuthkit.c | 14 +- daemon/stat.c | 11 +- daemon/statvfs.c | 25 +- daemon/strings.c | 10 +- daemon/swap.c | 14 +- daemon/sync.c | 39 +- daemon/syslinux.c | 7 +- daemon/tar.c | 53 +- daemon/truncate.c | 7 +- daemon/umask.c | 5 +- daemon/upload.c | 65 +- daemon/utimens.c | 6 +- daemon/utsname.c | 7 +- daemon/uuids.c | 14 +- daemon/wc.c | 5 +- daemon/xattr.c | 123 +-- daemon/xfs.c | 202 +++-- daemon/zero.c | 33 +- daemon/zerofree.c | 5 +- df/df.c | 13 +- df/domains.c | 52 +- df/domains.h | 6 +- df/estimate-max-threads.c | 6 +- df/estimate-max-threads.h | 3 +- df/main.c | 84 +- df/output.c | 66 +- df/parallel.c | 39 +- df/parallel.h | 6 +- df/virt-df.h | 18 +- diff/diff.c | 186 ++-- edit/edit.c | 93 +- erlang/erl-guestfs-proto.c | 23 +- examples/copy-over.c | 48 +- examples/create-disk.c | 16 +- examples/debug-logging.c | 25 +- examples/display-icon.c | 25 +- examples/inspect-vm.c | 18 +- examples/libvirt-auth.c | 82 +- examples/mount-local.c | 84 +- examples/virt-dhcp-address.c | 71 +- fish/alloc.c | 18 +- fish/cmds-gperf.h | 15 +- fish/config.c | 18 +- fish/copy.c | 19 +- fish/destpaths.c | 95 +- fish/display.c | 3 +- fish/domain.c | 5 +- fish/echo.c | 6 +- fish/edit.c | 6 +- fish/events.c | 56 +- fish/file-edit.c | 38 +- fish/file-edit.h | 7 +- fish/fish.c | 449 +++++----- fish/fish.h | 23 +- fish/glob.c | 74 +- fish/help.c | 31 +- fish/hexedit.c | 35 +- fish/inspect.c | 106 +-- fish/keys.c | 9 +- fish/lcd.c | 3 +- fish/man.c | 14 +- fish/more.c | 3 +- fish/options.c | 45 +- fish/options.h | 229 ++--- fish/prep-boot.c | 31 +- fish/prep-disk.c | 6 +- fish/prep-fs.c | 6 +- fish/prep-lv.c | 39 +- fish/prep-part.c | 6 +- fish/prep.c | 27 +- fish/progress.c | 76 +- fish/progress.h | 6 +- fish/rc.c | 115 +-- fish/reopen.c | 6 +- fish/setenv.c | 6 +- fish/supported.c | 5 +- fish/tilde.c | 9 +- fish/time.c | 12 +- fish/uri.c | 45 +- fish/uri.h | 16 +- fish/windows.c | 19 +- fish/windows.h | 3 +- format/format.c | 45 +- fuse/guestmount.c | 114 +-- fuse/guestunmount.c | 94 +- fuse/test-fuse.c | 107 +-- fuse/test-guestmount-fd.c | 20 +- fuse/test-guestunmount-fd.c | 18 +- inspector/inspector.c | 337 ++++---- make-fs/make-fs.c | 175 ++-- mllib/fsync-c.c | 13 +- mllib/mkdtemp-c.c | 11 +- mllib/progress-c.c | 11 +- mllib/uri-c.c | 14 +- ocaml/guestfs-c.c | 90 +- ocaml/guestfs-c.h | 12 +- p2v/about-authors.c | 19 +- p2v/about-license.c | 30 +- p2v/config.c | 30 +- p2v/conversion.c | 364 ++++---- p2v/gui.c | 627 +++++++------- p2v/kernel-cmdline.c | 78 +- p2v/kernel.c | 37 +- p2v/main.c | 147 ++-- p2v/miniexpect.c | 30 +- p2v/miniexpect.h | 21 +- p2v/p2v.h | 36 +- p2v/ssh.c | 297 +++---- p2v/utils.c | 17 +- p2v/whole-file.c | 5 +- python/guestfs-py-byhand.c | 38 +- python/guestfs-py.h | 28 +- rescue/rescue.c | 139 +-- sparsify/statvfs-c.c | 5 +- src/actions-support.c | 24 +- src/alloc.c | 27 +- src/appliance.c | 99 ++- src/available.c | 9 +- src/canonical-name.c | 19 +- src/cleanup.c | 23 +- src/command.c | 138 +-- src/conn-socket.c | 54 +- src/copy-in-out.c | 63 +- src/create.c | 62 +- src/dbdump.c | 72 +- src/drives.c | 318 +++---- src/errors.c | 98 ++- src/events.c | 230 +++-- src/file.c | 106 +-- src/filearch.c | 71 +- src/fuse.c | 335 +++---- src/guestfs-internal-all.h | 87 +- src/guestfs-internal-frontend.h | 98 ++- src/guestfs-internal.h | 541 +++++++----- src/guid.c | 8 +- src/handle.c | 93 +- src/info.c | 61 +- src/inspect-apps.c | 271 +++--- src/inspect-fs-cd.c | 120 +-- src/inspect-fs-unix.c | 603 +++++++------ src/inspect-fs-windows.c | 245 +++--- src/inspect-fs.c | 119 ++- src/inspect-icon.c | 115 +-- src/inspect.c | 317 +++++-- src/journal.c | 47 +- src/launch-direct.c | 370 ++++---- src/launch-libvirt.c | 1053 +++++++++++++---------- src/launch-uml.c | 89 +- src/launch-unix.c | 27 +- src/launch.c | 141 ++- src/libvirt-auth.c | 128 +-- src/libvirt-domain.c | 368 ++++---- src/libvirt-is-version.c | 10 +- src/listfs.c | 60 +- src/lpj.c | 15 +- src/match.c | 60 +- src/mountable.c | 10 +- src/osinfo.c | 106 +-- src/private-data.c | 14 +- src/proto.c | 115 +-- src/stringsbuf.c | 11 +- src/test-utils.c | 29 +- src/tmpdirs.c | 3 +- src/utils.c | 72 +- src/whole-file.c | 5 +- test-tool/test-tool.c | 119 ++- tests/c-api/test-add-drive-opts.c | 6 +- tests/c-api/test-add-libvirt-dom.c | 71 +- tests/c-api/test-backend-settings.c | 10 +- tests/c-api/test-command.c | 2 +- tests/c-api/test-debug-to-file.c | 23 +- tests/c-api/test-dlopen.c | 8 +- tests/c-api/test-environment.c | 29 +- tests/c-api/test-event-string.c | 3 +- tests/c-api/test-private-data.c | 30 +- tests/c-api/test-pwd.c | 4 +- tests/c-api/test-user-cancel.c | 49 +- tests/c-api/tests-main.c | 56 +- tests/c-api/tests.h | 9 +- tests/charsets/test-charset-fidelity.c | 121 ++- tests/events/test-libvirt-auth-callbacks.c | 86 +- tests/mount-local/test-parallel-mount-local.c | 53 +- tests/mountable/test-internal-parse-mountable.c | 45 +- tests/parallel/test-parallel.c | 20 +- tests/protocol/test-error-messages.c | 15 +- tests/qemu/boot-analysis-timeline.c | 415 ++++----- tests/qemu/boot-analysis-utils.c | 7 +- tests/qemu/boot-analysis-utils.h | 3 +- tests/qemu/boot-analysis.c | 176 ++-- tests/qemu/boot-analysis.h | 29 +- tests/qemu/boot-benchmark.c | 54 +- tests/qemu/qemu-boot.c | 67 +- tests/qemu/qemu-speed-test.c | 108 +-- tests/regressions/rhbz1055452.c | 12 +- tests/regressions/rhbz501893.c | 3 +- tests/regressions/rhbz790721.c | 27 +- tests/regressions/rhbz914931.c | 8 +- tests/regressions/test-big-heap.c | 11 +- tests/xml/fake-libvirt-xml.c | 6 +- v2v/changeuid-c.c | 2 +- v2v/domainxml-c.c | 70 +- v2v/utils-c.c | 10 +- v2v/xml-c.c | 127 +-- 303 files changed, 10711 insertions(+), 9265 deletions(-) diff --git a/align/scan.c b/align/scan.c index 3cc9b35..8f96599 100644 --- a/align/scan.c +++ b/align/scan.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -64,11 +65,10 @@ int echo_keys = 0; const char *libvirt_uri = NULL; int inspector = 0; -static int quiet = 0; /* --quiet */ -static int uuid = 0; /* --uuid */ +static int quiet = 0; /* --quiet */ +static int uuid = 0; /* --uuid */ -static void __attribute__((noreturn)) -usage (int status) +static void __attribute__ ((noreturn)) usage (int status) { if (status != EXIT_SUCCESS) fprintf (stderr, _("Try `%s --help' for more information.\n"), @@ -116,7 +116,9 @@ main (int argc, char *argv[]) { "long-options", 0, 0, 0 }, { "quiet", 0, 0, 'q' }, { "short-options", 0, 0, 0 }, - { "uuid", 0, 0, 0, }, + { + "uuid", 0, 0, 0, + }, { "verbose", 0, 0, 'v' }, { "version", 0, 0, 'V' }, { 0, 0, 0, 0 } @@ -136,10 +138,11 @@ main (int argc, char *argv[]) for (;;) { c = getopt_long (argc, argv, options, long_options, &option_index); - if (c == -1) break; + if (c == -1) + break; switch (c) { - case 0: /* options which are long only */ + case 0: /* options which are long only */ if (STREQ (long_options[option_index].name, "long-options")) display_long_options (long_options); else if (STREQ (long_options[option_index].name, "short-options")) @@ -149,8 +152,7 @@ main (int argc, char *argv[]) } else if (STREQ (long_options[option_index].name, "uuid")) { uuid = 1; } else - error (EXIT_FAILURE, 0, - _("unknown long option: %s (%d)"), + error (EXIT_FAILURE, 0, _("unknown long option: %s (%d)"), long_options[option_index].name, option_index); break; @@ -230,9 +232,10 @@ main (int argc, char *argv[]) guestfs_int_program_name); exit (EXIT_FAILURE); #endif - } else { /* Single guest. */ + } else { /* Single guest. */ if (uuid) { - fprintf (stderr, _("%s: --uuid option cannot be used with -a or -d\n"), + fprintf (stderr, + _("%s: --uuid option cannot be used with -a or -d\n"), guestfs_int_program_name); exit (EXIT_FAILURE); } @@ -305,12 +308,12 @@ scan (guestfs_h *g, const char *prefix, FILE *fp) if (prefix) fprintf (fp, "%s:", prefix); - fprintf (fp, "%s%d %12" PRIu64 " ", - name, (int) parts->val[j].part_num, start); + fprintf (fp, "%s%d %12" PRIu64 " ", name, + (int)parts->val[j].part_num, start); } /* What's the alignment? */ - if (start == 0) /* Probably not possible, but anyway. */ + if (start == 0) /* Probably not possible, but anyway. */ alignment = 64; else for (alignment = 0; (start & 1) == 0; alignment++, start /= 2) @@ -318,9 +321,10 @@ scan (guestfs_h *g, const char *prefix, FILE *fp) if (!quiet) { if (alignment < 10) - fprintf (fp, "%12" PRIu64 " ", UINT64_C(1) << alignment); + fprintf (fp, "%12" PRIu64 " ", UINT64_C (1) << alignment); else if (alignment < 64) - fprintf (fp, "%12" PRIu64 "K ", UINT64_C(1) << (alignment - 10)); + fprintf (fp, "%12" PRIu64 "K ", UINT64_C (1) + << (alignment - 10)); else fprintf (fp, "- "); } @@ -332,7 +336,7 @@ scan (guestfs_h *g, const char *prefix, FILE *fp) err = pthread_mutex_unlock (&worst_alignment_mutex); assert (err == 0); - if (alignment < 12) { /* Bad in general: < 4K alignment */ + if (alignment < 12) { /* Bad in general: < 4K alignment */ if (!quiet) fprintf (fp, "bad (%s)\n", _("alignment < 4K")); } else if (alignment < 16) { /* Bad on NetApps: < 64K alignment */ @@ -359,9 +363,8 @@ scan_work (guestfs_h *g, size_t i, FILE *fp) { struct guestfs_add_libvirt_dom_argv optargs; - optargs.bitmask = - GUESTFS_ADD_LIBVIRT_DOM_READONLY_BITMASK | - GUESTFS_ADD_LIBVIRT_DOM_READONLYDISK_BITMASK; + optargs.bitmask = GUESTFS_ADD_LIBVIRT_DOM_READONLY_BITMASK | + GUESTFS_ADD_LIBVIRT_DOM_READONLYDISK_BITMASK; optargs.readonly = 1; optargs.readonlydisk = "read"; diff --git a/builder/index-parser-c.c b/builder/index-parser-c.c index 52c8b86..4c49c2b 100644 --- a/builder/index-parser-c.c +++ b/builder/index-parser-c.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ /* This file handles the interface between the C/lex/yacc index file @@ -36,8 +37,8 @@ #ifdef HAVE_CAML_UNIXSUPPORT_H #include <caml/unixsupport.h> #else -#define Nothing ((value) 0) -extern void unix_error (int errcode, char * cmdname, value arg) Noreturn; +#define Nothing ((value)0) +extern void unix_error (int errcode, char *cmdname, value arg) Noreturn; #endif #include "index-struct.h" @@ -45,7 +46,8 @@ extern void unix_error (int errcode, char * cmdname, value arg) Noreturn; extern int do_parse (struct parse_context *context, FILE *in); -extern value virt_builder_parse_index (value progv, value error_suffixv, value filenamev); +extern value virt_builder_parse_index (value progv, value error_suffixv, + value filenamev); value virt_builder_parse_index (value progv, value error_suffixv, value filenamev) @@ -64,7 +66,7 @@ virt_builder_parse_index (value progv, value error_suffixv, value filenamev) in = fopen (String_val (filenamev), "r"); if (in == NULL) - unix_error (errno, (char *) "fopen", filenamev); + unix_error (errno, (char *)"fopen", filenamev); if (do_parse (&context, in) != 0) { fclose (in); @@ -72,11 +74,12 @@ virt_builder_parse_index (value progv, value error_suffixv, value filenamev) } if (fclose (in) == EOF) - unix_error (errno, (char *) "fclose", filenamev); + unix_error (errno, (char *)"fclose", filenamev); /* Convert the parsed data to OCaml structures. */ nr_sections = 0; - for (sections = context.parsed_index; sections != NULL; sections = sections->next) + for (sections = context.parsed_index; sections != NULL; + sections = sections->next) nr_sections++; rv = caml_alloc (nr_sections, 0); @@ -94,7 +97,7 @@ virt_builder_parse_index (value progv, value error_suffixv, value filenamev) j++, fields = fields->next) { v = caml_alloc_tuple (3); sv = caml_copy_string (fields->key); - Store_field (v, 0, sv); /* (key, Some subkey, value) */ + Store_field (v, 0, sv); /* (key, Some subkey, value) */ if (fields->subkey) { sv2 = caml_copy_string (fields->subkey); sv = caml_alloc (1, 0); @@ -104,14 +107,14 @@ virt_builder_parse_index (value progv, value error_suffixv, value filenamev) Store_field (v, 1, sv); sv = caml_copy_string (fields->value); Store_field (v, 2, sv); - Store_field (fv, j, v); /* assign to return array of fields */ + Store_field (fv, j, v); /* assign to return array of fields */ } v = caml_alloc_tuple (2); sv = caml_copy_string (sections->name); - Store_field (v, 0, sv); /* (name, fields) */ + Store_field (v, 0, sv); /* (name, fields) */ Store_field (v, 1, fv); - Store_field (rv, i, v); /* assign to return array of sections */ + Store_field (rv, i, v); /* assign to return array of sections */ } /* Free parsed data. */ diff --git a/builder/index-struct.c b/builder/index-struct.c index eacca6c..ebc1978 100644 --- a/builder/index-struct.c +++ b/builder/index-struct.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> diff --git a/builder/index-struct.h b/builder/index-struct.h index ada35e3..dbc72ab 100644 --- a/builder/index-struct.h +++ b/builder/index-struct.h @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ /* The data structures produced when parsing the index file. */ @@ -22,14 +23,16 @@ #define INDEX_STRUCT_H /* A section or list of sections. */ -struct section { +struct section +{ struct section *next; char *name; struct field *fields; }; /* A field or list of fields. */ -struct field { +struct field +{ struct field *next; char *key; char *subkey; @@ -37,8 +40,9 @@ struct field { }; /* A struct holding the data needed during the parsing. */ -struct parse_context { - struct section *parsed_index; /* The result of the parsing. */ +struct parse_context +{ + struct section *parsed_index; /* The result of the parsing. */ /* yyparse sets this if any comments were seen. Required for checking * compatibility with virt-builder 1.24. */ diff --git a/builder/index-validate.c b/builder/index-validate.c index 22e2ccd..cb80263 100644 --- a/builder/index-validate.c +++ b/builder/index-validate.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -74,25 +75,26 @@ main (int argc, char *argv[]) for (;;) { c = getopt_long (argc, argv, options, long_options, &option_index); - if (c == -1) break; + if (c == -1) + break; switch (c) { - case 0: /* options which are long only */ + case 0: /* options which are long only */ if (STREQ (long_options[option_index].name, "compat-1.24.0")) compat_1_24_0 = compat_1_24_1 = 1; else if (STREQ (long_options[option_index].name, "compat-1.24.1")) compat_1_24_1 = 1; else { fprintf (stderr, _("%s: unknown long option: %s (%d)\n"), - guestfs_int_program_name, long_options[option_index].name, option_index); + guestfs_int_program_name, long_options[option_index].name, + option_index); exit (EXIT_FAILURE); } break; case 'V': - printf ("%s %s%s\n", - guestfs_int_program_name, - PACKAGE_VERSION, PACKAGE_VERSION_EXTRA); + printf ("%s %s%s\n", guestfs_int_program_name, PACKAGE_VERSION, + PACKAGE_VERSION_EXTRA); exit (EXIT_SUCCESS); case HELP_OPTION: @@ -103,7 +105,7 @@ main (int argc, char *argv[]) } } - if (optind != argc-1) + if (optind != argc - 1) usage (EXIT_FAILURE); input = argv[optind++]; @@ -121,27 +123,32 @@ main (int argc, char *argv[]) if (ret != 0) { parse_context_free (&context); - fprintf (stderr, _("%s: '%s' could not be validated, see errors above\n"), + fprintf (stderr, + _("%s: '%s' could not be validated, see errors above\n"), guestfs_int_program_name, input); exit (EXIT_FAILURE); } if (compat_1_24_1 && context.seen_comments) { parse_context_free (&context); - fprintf (stderr, _("%s: %s contains comments which will not work with virt-builder 1.24.1\n"), + fprintf (stderr, _("%s: %s contains comments which will not work with " + "virt-builder 1.24.1\n"), guestfs_int_program_name, input); exit (EXIT_FAILURE); } /* Iterate over the parsed sections, semantically validating it. */ - for (sections = context.parsed_index; sections != NULL; sections = sections->next) { + for (sections = context.parsed_index; sections != NULL; + sections = sections->next) { int seen_sig = 0; struct field *fields; if (compat_1_24_0) { if (strchr (sections->name, '_')) { parse_context_free (&context); - fprintf (stderr, _("%s: %s: section [%s] has invalid characters which will not work with virt-builder 1.24.0\n"), + fprintf (stderr, + _("%s: %s: section [%s] has invalid characters which " + "will not work with virt-builder 1.24.0\n"), guestfs_int_program_name, input, sections->name); exit (EXIT_FAILURE); } @@ -149,20 +156,24 @@ main (int argc, char *argv[]) for (fields = sections->fields; fields != NULL; fields = fields->next) { if (compat_1_24_0) { - if (strchr (fields->key, '[') || - strchr (fields->key, ']')) { + if (strchr (fields->key, '[') || strchr (fields->key, ']')) { parse_context_free (&context); - fprintf (stderr, _("%s: %s: section [%s], field '%s' has invalid characters which will not work with virt-builder 1.24.0\n"), - guestfs_int_program_name, input, sections->name, fields->key); + fprintf ( + stderr, + _("%s: %s: section [%s], field '%s' has invalid characters " + "which will not work with virt-builder 1.24.0\n"), + guestfs_int_program_name, input, sections->name, fields->key); exit (EXIT_FAILURE); } } if (compat_1_24_1) { - if (strchr (fields->key, '.') || - strchr (fields->key, ',')) { + if (strchr (fields->key, '.') || strchr (fields->key, ',')) { parse_context_free (&context); - fprintf (stderr, _("%s: %s: section [%s], field '%s' has invalid characters which will not work with virt-builder 1.24.1\n"), - guestfs_int_program_name, input, sections->name, fields->key); + fprintf ( + stderr, + _("%s: %s: section [%s], field '%s' has invalid characters " + "which will not work with virt-builder 1.24.1\n"), + guestfs_int_program_name, input, sections->name, fields->key); exit (EXIT_FAILURE); } } @@ -172,7 +183,8 @@ main (int argc, char *argv[]) if (compat_1_24_0 && !seen_sig) { parse_context_free (&context); - fprintf (stderr, _("%s: %s: section [%s] is missing a 'sig' field which will not work with virt-builder 1.24.0\n"), + fprintf (stderr, _("%s: %s: section [%s] is missing a 'sig' field " + "which will not work with virt-builder 1.24.0\n"), guestfs_int_program_name, input, sections->name); exit (EXIT_FAILURE); } diff --git a/builder/pxzcat-c.c b/builder/pxzcat-c.c index 1f5ceeb..dce2789 100644 --- a/builder/pxzcat-c.c +++ b/builder/pxzcat-c.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -47,13 +48,12 @@ #ifdef HAVE_CAML_UNIXSUPPORT_H #include <caml/unixsupport.h> #else -#define Nothing ((value) 0) -extern void unix_error (int errcode, char * cmdname, value arg) Noreturn; +#define Nothing ((value)0) +extern void unix_error (int errcode, char *cmdname, value arg) Noreturn; #endif -#if defined (HAVE_LIBLZMA) && \ - defined (HAVE_LZMA_INDEX_STREAM_FLAGS) && \ - defined (HAVE_LZMA_INDEX_STREAM_PADDING) +#if defined(HAVE_LIBLZMA) && defined(HAVE_LZMA_INDEX_STREAM_FLAGS) && \ + defined(HAVE_LZMA_INDEX_STREAM_PADDING) #define PARALLEL_XZCAT 1 #else #define PARALLEL_XZCAT 0 @@ -68,7 +68,8 @@ virt_builder_using_parallel_xzcat (value unitv) } #if PARALLEL_XZCAT -static void pxzcat (value filenamev, value outputfilev, unsigned nr_threads); +static void pxzcat (value filenamev, value outputfilev, + unsigned nr_threads); #endif /* PARALLEL_XZCAT */ extern value virt_builder_pxzcat (value inputfilev, value outputfilev); @@ -90,7 +91,7 @@ virt_builder_pxzcat (value inputfilev, value outputfilev) perror ("could not get number of cores"); i = 1; } - nr_threads = (unsigned) i; + nr_threads = (unsigned)i; /* NB: This might throw an exception if something fails. If it * does, this function won't return as a regular C function. @@ -104,18 +105,19 @@ virt_builder_pxzcat (value inputfilev, value outputfilev) pid_t pid; int status; - fd = open (String_val (outputfilev), O_WRONLY|O_CREAT|O_TRUNC|O_NOCTTY, 0666); + fd = open (String_val (outputfilev), + O_WRONLY | O_CREAT | O_TRUNC | O_NOCTTY, 0666); if (fd == -1) - unix_error (errno, (char *) "open", outputfilev); + unix_error (errno, (char *)"open", outputfilev); pid = fork (); if (pid == -1) { int err = errno; close (fd); - unix_error (err, (char *) "fork", Nothing); + unix_error (err, (char *)"fork", Nothing); } - if (pid == 0) { /* child - run xzcat */ + if (pid == 0) { /* child - run xzcat */ dup2 (fd, 1); execlp (XZCAT, XZCAT, String_val (inputfilev), NULL); perror (XZCAT); @@ -125,7 +127,7 @@ virt_builder_pxzcat (value inputfilev, value outputfilev) close (fd); if (waitpid (pid, &status, 0) == -1) - unix_error (errno, (char *) "waitpid", Nothing); + unix_error (errno, (char *)"waitpid", Nothing); if (!WIFEXITED (status) || WEXITSTATUS (status) != 0) caml_failwith (XZCAT " program failed, see earlier error messages"); @@ -139,20 +141,25 @@ virt_builder_pxzcat (value inputfilev, value outputfilev) #define DEBUG 0 #if DEBUG -#define debug(fs,...) fprintf (stderr, "pxzcat: debug: " fs "\n", ## __VA_ARGS__) +#define debug(fs, ...) \ + fprintf (stderr, "pxzcat: debug: " fs "\n", ##__VA_ARGS__) #else -#define debug(fs,...) /* nothing */ +#define debug(fs, ...) /* nothing */ #endif /* Size of buffers used in decompression loop. */ -#define BUFFER_SIZE (64*1024) +#define BUFFER_SIZE (64 * 1024) -#define XZ_HEADER_MAGIC "\xfd" "7zXZ\0" +#define XZ_HEADER_MAGIC \ + "\xfd" \ + "7zXZ\0" #define XZ_HEADER_MAGIC_LEN 6 static int check_header_magic (int fd); static lzma_index *parse_indexes (value filenamev, int fd); -static void iter_blocks (lzma_index *idx, unsigned nr_threads, value filenamev, int fd, value outputfilev, int ofd); +static void iter_blocks (lzma_index *idx, unsigned nr_threads, + value filenamev, int fd, value outputfilev, + int ofd); static void pxzcat (value filenamev, value outputfilev, unsigned nr_threads) @@ -164,7 +171,7 @@ pxzcat (value filenamev, value outputfilev, unsigned nr_threads) /* Open the file. */ fd = open (String_val (filenamev), O_RDONLY); if (fd == -1) - unix_error (errno, (char *) "open", filenamev); + unix_error (errno, (char *)"open", filenamev); /* Check file magic. */ if (!check_header_magic (fd)) { @@ -183,40 +190,42 @@ pxzcat (value filenamev, value outputfilev, unsigned nr_threads) * unless we are very careful about not truncating a regular file * from non-zero size to zero size. (Thanks Eric Sandeen) */ - ofd = open (String_val (outputfilev), O_WRONLY|O_CREAT|O_NOCTTY, 0644); + ofd = + open (String_val (outputfilev), O_WRONLY | O_CREAT | O_NOCTTY, 0644); if (ofd == -1) { int err = errno; close (fd); - unix_error (err, (char *) "open", outputfilev); + unix_error (err, (char *)"open", outputfilev); } if (ftruncate (ofd, 1) == -1) { int err = errno; close (fd); - unix_error (err, (char *) "ftruncate", outputfilev); + unix_error (err, (char *)"ftruncate", outputfilev); } if (lseek (ofd, 0, SEEK_SET) == -1) { int err = errno; close (fd); - unix_error (err, (char *) "lseek", outputfilev); + unix_error (err, (char *)"lseek", outputfilev); } if (write (ofd, "\0", 1) == -1) { int err = errno; close (fd); - unix_error (err, (char *) "write", outputfilev); + unix_error (err, (char *)"write", outputfilev); } if (ftruncate (ofd, size) == -1) { int err = errno; close (fd); - unix_error (err, (char *) "ftruncate", outputfilev); + unix_error (err, (char *)"ftruncate", outputfilev); } #if defined HAVE_POSIX_FADVISE /* Tell the kernel we won't read the output file. */ - ignore_value (posix_fadvise (fd, 0, 0, POSIX_FADV_RANDOM|POSIX_FADV_DONTNEED)); + ignore_value ( + posix_fadvise (fd, 0, 0, POSIX_FADV_RANDOM | POSIX_FADV_DONTNEED)); #endif /* Iterate over blocks. */ @@ -225,7 +234,7 @@ pxzcat (value filenamev, value outputfilev, unsigned nr_threads) lzma_index_end (idx, NULL); if (close (fd) == -1) - unix_error (errno, (char *) "close", filenamev); + unix_error (errno, (char *)"close", filenamev); } static int @@ -270,28 +279,30 @@ parse_indexes (value filenamev, int fd) /* Check file size is a multiple of 4 bytes. */ pos = lseek (fd, 0, SEEK_END); - if (pos == (off_t) -1) - unix_error (errno, (char *) "lseek", filenamev); + if (pos == (off_t)-1) + unix_error (errno, (char *)"lseek", filenamev); if ((pos & 3) != 0) - caml_invalid_argument ("input not an xz file: size is not a multiple of 4 bytes"); + caml_invalid_argument ( + "input not an xz file: size is not a multiple of 4 bytes"); /* Jump backwards through the file identifying each stream. */ while (pos > 0) { - debug ("looping through streams: pos = %" PRIu64, (uint64_t) pos); + debug ("looping through streams: pos = %" PRIu64, (uint64_t)pos); if (pos < LZMA_STREAM_HEADER_SIZE) caml_invalid_argument ("corrupted xz file"); if (lseek (fd, -LZMA_STREAM_HEADER_SIZE, SEEK_CUR) == -1) - unix_error (errno, (char *) "lseek", filenamev); + unix_error (errno, (char *)"lseek", filenamev); - if (read (fd, footer, LZMA_STREAM_HEADER_SIZE) != LZMA_STREAM_HEADER_SIZE) - unix_error (errno, (char *) "read", filenamev); + if (read (fd, footer, LZMA_STREAM_HEADER_SIZE) != + LZMA_STREAM_HEADER_SIZE) + unix_error (errno, (char *)"read", filenamev); /* Skip stream padding. */ - if (footer[8] == 0 && footer[9] == 0 && - footer[10] == 0 && footer[11] == 0) { + if (footer[8] == 0 && footer[9] == 0 && footer[10] == 0 && + footer[11] == 0) { stream_padding += 4; pos -= 4; continue; @@ -300,7 +311,7 @@ parse_indexes (value filenamev, int fd) pos -= LZMA_STREAM_HEADER_SIZE; nr_streams++; - debug ("decode stream footer at pos = %" PRIu64, (uint64_t) pos); + debug ("decode stream footer at pos = %" PRIu64, (uint64_t)pos); /* Does the stream footer look reasonable? */ r = lzma_stream_footer_decode (&footer_flags, footer); @@ -309,17 +320,18 @@ parse_indexes (value filenamev, int fd) caml_invalid_argument ("invalid stream footer"); } - debug ("backward_size = %" PRIu64, (uint64_t) footer_flags.backward_size); + debug ("backward_size = %" PRIu64, + (uint64_t)footer_flags.backward_size); index_size = footer_flags.backward_size; if (pos < index_size + LZMA_STREAM_HEADER_SIZE) caml_invalid_argument ("invalid stream footer"); pos -= index_size; - debug ("decode index at pos = %" PRIu64, (uint64_t) pos); + debug ("decode index at pos = %" PRIu64, (uint64_t)pos); /* Seek backwards to the index of this stream. */ if (lseek (fd, pos, SEEK_SET) == -1) - unix_error (errno, (char *) "lseek", filenamev); + unix_error (errno, (char *)"lseek", filenamev); /* Decode the index. */ r = lzma_index_decoder (&strm, &this_index, UINT64_MAX); @@ -335,7 +347,7 @@ parse_indexes (value filenamev, int fd) n = read (fd, buf, strm.avail_in); if (n == -1) - unix_error (errno, (char *) "read", filenamev); + unix_error (errno, (char *)"read", filenamev); index_size -= strm.avail_in; @@ -350,14 +362,15 @@ parse_indexes (value filenamev, int fd) pos -= lzma_index_total_size (this_index) + LZMA_STREAM_HEADER_SIZE; - debug ("decode stream header at pos = %" PRIu64, (uint64_t) pos); + debug ("decode stream header at pos = %" PRIu64, (uint64_t)pos); /* Read and decode the stream header. */ if (lseek (fd, pos, SEEK_SET) == -1) - unix_error (errno, (char *) "lseek", filenamev); + unix_error (errno, (char *)"lseek", filenamev); - if (read (fd, header, LZMA_STREAM_HEADER_SIZE) != LZMA_STREAM_HEADER_SIZE) - unix_error (errno, (char *) "read stream header", filenamev); + if (read (fd, header, LZMA_STREAM_HEADER_SIZE) != + LZMA_STREAM_HEADER_SIZE) + unix_error (errno, (char *)"read stream header", filenamev); r = lzma_stream_header_decode (&header_flags, header); if (r != LZMA_OK) { @@ -368,15 +381,16 @@ parse_indexes (value filenamev, int fd) /* Header and footer of the stream should be equal. */ r = lzma_stream_flags_compare (&header_flags, &footer_flags); if (r != LZMA_OK) { - fprintf (stderr, "header and footer of stream are not equal - error %u\n", - r); + fprintf (stderr, + "header and footer of stream are not equal - error %u\n", r); caml_invalid_argument ("header and footer of stream are not equal"); } /* Store the decoded stream flags in this_index. */ r = lzma_index_stream_flags (this_index, &footer_flags); if (r != LZMA_OK) { - fprintf (stderr, "cannot read stream_flags from index - error %u\n", r); + fprintf (stderr, "cannot read stream_flags from index - error %u\n", + r); caml_invalid_argument ("cannot read stream_flags from index"); } @@ -385,7 +399,8 @@ parse_indexes (value filenamev, int fd) */ r = lzma_index_stream_padding (this_index, stream_padding); if (r != LZMA_OK) { - fprintf (stderr, "cannot set stream_padding in index - error %u\n", r); + fprintf (stderr, "cannot set stream_padding in index - error %u\n", + r); caml_invalid_argument ("cannot set stream_padding in index"); } @@ -424,7 +439,8 @@ is_zero (const unsigned char *buffer, size_t size) return 1; } -struct global_state { +struct global_state +{ /* Current iterator. Threads update this, but it is protected by a * mutex, and each thread takes a copy of it when working on it. */ @@ -445,7 +461,8 @@ struct global_state { int ofd; }; -struct per_thread_state { +struct per_thread_state +{ unsigned thread_num; struct global_state *global; int status; @@ -455,8 +472,8 @@ struct per_thread_state { static void *worker_thread (void *vp); static void -iter_blocks (lzma_index *idx, unsigned nr_threads, - value filenamev, int fd, value outputfilev, int ofd) +iter_blocks (lzma_index *idx, unsigned nr_threads, value filenamev, int fd, + value outputfilev, int ofd) { struct global_state global; CLEANUP_FREE struct per_thread_state *per_thread = NULL; @@ -474,7 +491,7 @@ iter_blocks (lzma_index *idx, unsigned nr_threads, global.iter_finished = 0; err = pthread_mutex_init (&global.iter_mutex, NULL); if (err != 0) - unix_error (err, (char *) "pthread_mutex_init", Nothing); + unix_error (err, (char *)"pthread_mutex_init", Nothing); global.filename = String_val (filenamev); global.fd = fd; @@ -490,7 +507,7 @@ iter_blocks (lzma_index *idx, unsigned nr_threads, for (u = 0; u < nr_threads; ++u) { err = pthread_create (&thread[u], NULL, worker_thread, &per_thread[u]); if (err != 0) - unix_error (err, (char *) "pthread_create", Nothing); + unix_error (err, (char *)"pthread_create", Nothing); } /* Wait for the threads to exit. */ @@ -562,11 +579,12 @@ worker_thread (void *vp) for (;;) { /* Get the next block. */ err = pthread_mutex_lock (&global->iter_mutex); - if (err != 0) abort (); + if (err != 0) + abort (); iter_finished = global->iter_finished; if (!iter_finished) { - iter_finished = global->iter_finished = - lzma_index_iter_next (&global->iter, LZMA_INDEX_ITER_NONEMPTY_BLOCK); + iter_finished = global->iter_finished = lzma_index_iter_next ( + &global->iter, LZMA_INDEX_ITER_NONEMPTY_BLOCK); if (!iter_finished) /* Take a local copy of this iterator since another thread will * update the global version. @@ -574,7 +592,8 @@ worker_thread (void *vp) iter = global->iter; } err = pthread_mutex_unlock (&global->iter_mutex); - if (err != 0) abort (); + if (err != 0) + abort (); if (iter_finished) break; @@ -584,9 +603,10 @@ worker_thread (void *vp) position = iter.block.compressed_file_offset; n = pread (global->fd, header, 1, position); if (n == 0) { - fprintf (stderr, - "%s: read: unexpected end of file reading block header byte\n", - global->filename); + fprintf ( + stderr, + "%s: read: unexpected end of file reading block header byte\n", + global->filename); return &state->status; } if (n == -1) { @@ -596,9 +616,10 @@ worker_thread (void *vp) position++; if (header[0] == '\0') { - fprintf (stderr, - "%s: read: unexpected invalid block in file, header[0] = 0\n", - global->filename); + fprintf ( + stderr, + "%s: read: unexpected invalid block in file, header[0] = 0\n", + global->filename); return &state->status; } @@ -608,8 +629,8 @@ worker_thread (void *vp) block.header_size = lzma_block_header_size_decode (header[0]); /* Now read and decode the block header. */ - n = pread (global->fd, &header[1], block.header_size-1, position); - if (n >= 0 && n != (ssize_t) block.header_size-1) { + n = pread (global->fd, &header[1], block.header_size - 1, position); + if (n >= 0 && n != (ssize_t)block.header_size - 1) { fprintf (stderr, "%s: read: unexpected end of file reading block header\n", global->filename); @@ -633,8 +654,7 @@ worker_thread (void *vp) */ r = lzma_block_compressed_size (&block, iter.block.unpadded_size); if (r != LZMA_OK) { - fprintf (stderr, - "%s: cannot calculate compressed size (error %u)\n", + fprintf (stderr, "%s: cannot calculate compressed size (error %u)\n", global->filename, r); return &state->status; } @@ -645,7 +665,8 @@ worker_thread (void *vp) /* Read the block data and uncompress it. */ r = lzma_block_decoder (&strm, &block); if (r != LZMA_OK) { - fprintf (stderr, "%s: invalid block (error %u)\n", global->filename, r); + fprintf (stderr, "%s: invalid block (error %u)\n", global->filename, + r); return &state->status; } @@ -693,8 +714,7 @@ worker_thread (void *vp) if (r == LZMA_STREAM_END) break; if (r != LZMA_OK) { - fprintf (stderr, - "%s: could not parse block data (error %u)\n", + fprintf (stderr, "%s: could not parse block data (error %u)\n", global->filename, r); return &state->status; } diff --git a/builder/setlocale-c.c b/builder/setlocale-c.c index f2ad853..6b306ef 100644 --- a/builder/setlocale-c.c +++ b/builder/setlocale-c.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -25,15 +26,9 @@ #include <caml/memory.h> #include <caml/mlvalues.h> -static const int lc_string_table[7] = { - LC_ALL, - LC_CTYPE, - LC_NUMERIC, - LC_TIME, - LC_COLLATE, - LC_MONETARY, - LC_MESSAGES -}; +static const int lc_string_table[7] = { LC_ALL, LC_CTYPE, LC_NUMERIC, + LC_TIME, LC_COLLATE, LC_MONETARY, + LC_MESSAGES }; #define Val_none (Val_int (0)) @@ -48,7 +43,8 @@ virt_builder_setlocale (value val_category, value val_name) int category; category = lc_string_table[Int_val (val_category)]; - locstring = val_name == Val_none ? NULL : String_val (Field (val_name, 0)); + locstring = + val_name == Val_none ? NULL : String_val (Field (val_name, 0)); ret = setlocale (category, locstring); if (ret) { rv2 = caml_copy_string (ret); diff --git a/builder/yajl-c.c b/builder/yajl-c.c index f34196e..5c13754 100644 --- a/builder/yajl-c.c +++ b/builder/yajl-c.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -42,40 +43,40 @@ convert_yajl_value (yajl_val val, int level) caml_invalid_argument ("too many levels of object/array nesting"); if (YAJL_IS_OBJECT (val)) { - size_t len = YAJL_GET_OBJECT(val)->len; + size_t len = YAJL_GET_OBJECT (val)->len; size_t i; rv = caml_alloc (1, 3); lv = caml_alloc_tuple (len); for (i = 0; i < len; ++i) { v = caml_alloc_tuple (2); - sv = caml_copy_string (YAJL_GET_OBJECT(val)->keys[i]); + sv = caml_copy_string (YAJL_GET_OBJECT (val)->keys[i]); Store_field (v, 0, sv); - sv = convert_yajl_value (YAJL_GET_OBJECT(val)->values[i], level + 1); + sv = convert_yajl_value (YAJL_GET_OBJECT (val)->values[i], level + 1); Store_field (v, 1, sv); Store_field (lv, i, v); } Store_field (rv, 0, lv); } else if (YAJL_IS_ARRAY (val)) { - size_t len = YAJL_GET_ARRAY(val)->len; + size_t len = YAJL_GET_ARRAY (val)->len; size_t i; rv = caml_alloc (1, 4); lv = caml_alloc_tuple (len); for (i = 0; i < len; ++i) { - v = convert_yajl_value (YAJL_GET_ARRAY(val)->values[i], level + 1); + v = convert_yajl_value (YAJL_GET_ARRAY (val)->values[i], level + 1); Store_field (lv, i, v); } Store_field (rv, 0, lv); } else if (YAJL_IS_STRING (val)) { rv = caml_alloc (1, 0); - v = caml_copy_string (YAJL_GET_STRING(val)); + v = caml_copy_string (YAJL_GET_STRING (val)); Store_field (rv, 0, v); } else if (YAJL_IS_DOUBLE (val)) { rv = caml_alloc (1, 2); - v = caml_copy_double (YAJL_GET_DOUBLE(val)); + v = caml_copy_double (YAJL_GET_DOUBLE (val)); Store_field (rv, 0, v); } else if (YAJL_IS_INTEGER (val)) { rv = caml_alloc (1, 1); - v = caml_copy_int64 (YAJL_GET_INTEGER(val)); + v = caml_copy_int64 (YAJL_GET_INTEGER (val)); Store_field (rv, 0, v); } else if (YAJL_IS_TRUE (val)) { rv = caml_alloc (1, 5); @@ -97,7 +98,8 @@ virt_builder_yajl_tree_parse (value stringv) yajl_val tree; char error_buf[256]; - tree = yajl_tree_parse (String_val (stringv), error_buf, sizeof error_buf); + tree = + yajl_tree_parse (String_val (stringv), error_buf, sizeof error_buf); if (tree == NULL) { char buf[256 + sizeof error_buf]; if (strlen (error_buf) > 0) diff --git a/cat/cat.c b/cat/cat.c index 0370fbd..a3e81a0 100644 --- a/cat/cat.c +++ b/cat/cat.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -47,34 +48,35 @@ int inspector = 1; static int do_cat (int argc, char *argv[]); -static void __attribute__((noreturn)) -usage (int status) +static void __attribute__ ((noreturn)) usage (int status) { if (status != EXIT_SUCCESS) fprintf (stderr, _("Try `%s --help' for more information.\n"), guestfs_int_program_name); else { - printf (_("%s: display files in a virtual machine\n" - "Copyright (C) 2010 Red Hat Inc.\n" - "Usage:\n" - " %s [--options] -d domname file [file ...]\n" - " %s [--options] -a disk.img [-a disk.img ...] file [file ...]\n" - "Options:\n" - " -a|--add image Add image\n" - " -c|--connect uri Specify libvirt URI for -d option\n" - " -d|--domain guest Add disks from libvirt guest\n" - " --echo-keys Don't turn off echo for passphrases\n" - " --format[=raw|..] Force disk format for -a option\n" - " --help Display brief help\n" - " --keys-from-stdin Read passphrases from stdin\n" - " -m|--mount dev[:mnt[:opts[:fstype]]]\n" - " Mount dev on mnt (if omitted, /)\n" - " -v|--verbose Verbose messages\n" - " -V|--version Display version and exit\n" - " -x Trace libguestfs API calls\n" - "For more information, see the manpage %s(1).\n"), - guestfs_int_program_name, guestfs_int_program_name, - guestfs_int_program_name, guestfs_int_program_name); + printf ( + _("%s: display files in a virtual machine\n" + "Copyright (C) 2010 Red Hat Inc.\n" + "Usage:\n" + " %s [--options] -d domname file [file ...]\n" + " %s [--options] -a disk.img [-a disk.img ...] file [file " + "...]\n" + "Options:\n" + " -a|--add image Add image\n" + " -c|--connect uri Specify libvirt URI for -d option\n" + " -d|--domain guest Add disks from libvirt guest\n" + " --echo-keys Don't turn off echo for passphrases\n" + " --format[=raw|..] Force disk format for -a option\n" + " --help Display brief help\n" + " --keys-from-stdin Read passphrases from stdin\n" + " -m|--mount dev[:mnt[:opts[:fstype]]]\n" + " Mount dev on mnt (if omitted, /)\n" + " -v|--verbose Verbose messages\n" + " -V|--version Display version and exit\n" + " -x Trace libguestfs API calls\n" + "For more information, see the manpage %s(1).\n"), + guestfs_int_program_name, guestfs_int_program_name, + guestfs_int_program_name, guestfs_int_program_name); } exit (status); } @@ -121,10 +123,11 @@ main (int argc, char *argv[]) for (;;) { c = getopt_long (argc, argv, options, long_options, &option_index); - if (c == -1) break; + if (c == -1) + break; switch (c) { - case 0: /* options which are long only */ + case 0: /* options which are long only */ if (STREQ (long_options[option_index].name, "long-options")) display_long_options (long_options); else if (STREQ (long_options[option_index].name, "short-options")) @@ -136,8 +139,7 @@ main (int argc, char *argv[]) } else if (STREQ (long_options[option_index].name, "format")) { OPTION_format; } else - error (EXIT_FAILURE, 0, - _("unknown long option: %s (%d)"), + error (EXIT_FAILURE, 0, _("unknown long option: %s (%d)"), long_options[option_index].name, option_index); break; @@ -195,7 +197,7 @@ main (int argc, char *argv[]) error (EXIT_FAILURE, errno, "strdup"); drv->next = drvs; drvs = drv; - } else { /* simulate -d option */ + } else { /* simulate -d option */ drv = calloc (1, sizeof (struct drv)); if (!drv) error (EXIT_FAILURE, errno, "calloc"); @@ -276,8 +278,8 @@ do_cat (int argc, char *argv[]) const char *filename = argv[i]; if (windows) { - filename = filename_to_free = windows_path (g, root, filename, - 1 /* readonly */); + filename = filename_to_free = + windows_path (g, root, filename, 1 /* readonly */); if (filename == NULL) { errors++; continue; diff --git a/cat/filesystems.c b/cat/filesystems.c index 3f9d931..d7106b1 100644 --- a/cat/filesystems.c +++ b/cat/filesystems.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -48,30 +49,30 @@ int echo_keys = 0; const char *libvirt_uri = NULL; int inspector = 0; -static int csv = 0; /* --csv */ -static int human = 0; /* --human-readable|-h */ +static int csv = 0; /* --csv */ +static int human = 0; /* --human-readable|-h */ /* What is selected for output. */ -#define OUTPUT_FILESYSTEMS 1 -#define OUTPUT_FILESYSTEMS_EXTRA 2 -#define OUTPUT_PARTITIONS 4 -#define OUTPUT_BLOCKDEVS 8 -#define OUTPUT_LVS 16 -#define OUTPUT_VGS 32 -#define OUTPUT_PVS 64 -#define OUTPUT_ALL INT_MAX +#define OUTPUT_FILESYSTEMS 1 +#define OUTPUT_FILESYSTEMS_EXTRA 2 +#define OUTPUT_PARTITIONS 4 +#define OUTPUT_BLOCKDEVS 8 +#define OUTPUT_LVS 16 +#define OUTPUT_VGS 32 +#define OUTPUT_PVS 64 +#define OUTPUT_ALL INT_MAX static int output = 0; /* What columns to output. This is in display order. */ -#define COLUMN_NAME 1 /* always shown */ -#define COLUMN_TYPE 2 -#define COLUMN_VFS_TYPE 4 /* if --filesystems */ -#define COLUMN_VFS_LABEL 8 /* if --filesystems */ -#define COLUMN_MBR 16 -#define COLUMN_SIZE 32 /* bytes, or human-readable if -h */ -#define COLUMN_PARENTS 64 -#define COLUMN_UUID 128 /* if --uuid */ -#define NR_COLUMNS 8 +#define COLUMN_NAME 1 /* always shown */ +#define COLUMN_TYPE 2 +#define COLUMN_VFS_TYPE 4 /* if --filesystems */ +#define COLUMN_VFS_LABEL 8 /* if --filesystems */ +#define COLUMN_MBR 16 +#define COLUMN_SIZE 32 /* bytes, or human-readable if -h */ +#define COLUMN_PARENTS 64 +#define COLUMN_UUID 128 /* if --uuid */ +#define NR_COLUMNS 8 static int columns; static void do_output_title (void); @@ -81,49 +82,49 @@ static void do_output_end (void); static struct guestfs_lvm_pv_list *get_pvs (void); static void free_pvs (void); -static void __attribute__((noreturn)) -usage (int status) +static void __attribute__ ((noreturn)) usage (int status) { if (status != EXIT_SUCCESS) fprintf (stderr, _("Try `%s --help' for more information.\n"), guestfs_int_program_name); else { - printf (_("%s: list filesystems, partitions, block devices, LVM in a VM\n" - "Copyright (C) 2010 Red Hat Inc.\n" - "Usage:\n" - " %s [--options] -d domname\n" - " %s [--options] -a disk.img [-a disk.img ...]\n" - "Options:\n" - " -a|--add image Add image\n" - " --all Display everything\n" - " --blkdevs|--block-devices\n" - " Display block devices\n" - " -c|--connect uri Specify libvirt URI for -d option\n" - " --csv Output as Comma-Separated Values\n" - " -d|--domain guest Add disks from libvirt guest\n" - " --echo-keys Don't turn off echo for passphrases\n" - " --extra Display swap and data filesystems\n" - " --filesystems Display mountable filesystems\n" - " --format[=raw|..] Force disk format for -a option\n" - " -h|--human-readable Human-readable sizes in --long output\n" - " --help Display brief help\n" - " --keys-from-stdin Read passphrases from stdin\n" - " -l|--long Long output\n" - " --lvs|--logvols|--logical-volumes\n" - " Display LVM logical volumes\n" - " --no-title No title in --long output\n" - " --parts|--partitions Display partitions\n" - " --pvs|--physvols|--physical-volumes\n" - " Display LVM physical volumes\n" - " --uuid|--uuids Add UUIDs to --long output\n" - " -v|--verbose Verbose messages\n" - " -V|--version Display version and exit\n" - " --vgs|--volgroups|--volume-groups\n" - " Display LVM volume groups\n" - " -x Trace libguestfs API calls\n" - "For more information, see the manpage %s(1).\n"), - guestfs_int_program_name, guestfs_int_program_name, - guestfs_int_program_name, guestfs_int_program_name); + printf ( + _("%s: list filesystems, partitions, block devices, LVM in a VM\n" + "Copyright (C) 2010 Red Hat Inc.\n" + "Usage:\n" + " %s [--options] -d domname\n" + " %s [--options] -a disk.img [-a disk.img ...]\n" + "Options:\n" + " -a|--add image Add image\n" + " --all Display everything\n" + " --blkdevs|--block-devices\n" + " Display block devices\n" + " -c|--connect uri Specify libvirt URI for -d option\n" + " --csv Output as Comma-Separated Values\n" + " -d|--domain guest Add disks from libvirt guest\n" + " --echo-keys Don't turn off echo for passphrases\n" + " --extra Display swap and data filesystems\n" + " --filesystems Display mountable filesystems\n" + " --format[=raw|..] Force disk format for -a option\n" + " -h|--human-readable Human-readable sizes in --long output\n" + " --help Display brief help\n" + " --keys-from-stdin Read passphrases from stdin\n" + " -l|--long Long output\n" + " --lvs|--logvols|--logical-volumes\n" + " Display LVM logical volumes\n" + " --no-title No title in --long output\n" + " --parts|--partitions Display partitions\n" + " --pvs|--physvols|--physical-volumes\n" + " Display LVM physical volumes\n" + " --uuid|--uuids Add UUIDs to --long output\n" + " -v|--verbose Verbose messages\n" + " -V|--version Display version and exit\n" + " --vgs|--volgroups|--volume-groups\n" + " Display LVM volume groups\n" + " -x Trace libguestfs API calls\n" + "For more information, see the manpage %s(1).\n"), + guestfs_int_program_name, guestfs_int_program_name, + guestfs_int_program_name, guestfs_int_program_name); } exit (status); } @@ -179,9 +180,9 @@ main (int argc, char *argv[]) bool format_consumed = true; int c; int option_index; - int no_title = 0; /* --no-title */ - int long_mode = 0; /* --long|-l */ - int uuid = 0; /* --uuid */ + int no_title = 0; /* --no-title */ + int long_mode = 0; /* --long|-l */ + int uuid = 0; /* --uuid */ int title; g = guestfs_create (); @@ -190,10 +191,11 @@ main (int argc, char *argv[]) for (;;) { c = getopt_long (argc, argv, options, long_options, &option_index); - if (c == -1) break; + if (c == -1) + break; switch (c) { - case 0: /* options which are long only */ + case 0: /* options which are long only */ if (STREQ (long_options[option_index].name, "long-options")) display_long_options (long_options); else if (STREQ (long_options[option_index].name, "short-options")) @@ -216,7 +218,8 @@ main (int argc, char *argv[]) output |= OUTPUT_FILESYSTEMS_EXTRA; } else if (STREQ (long_options[option_index].name, "filesystems")) { output |= OUTPUT_FILESYSTEMS; - } else if (STREQ (long_options[option_index].name, "logical-volumes") || + } else if (STREQ (long_options[option_index].name, + "logical-volumes") || STREQ (long_options[option_index].name, "logvols") || STREQ (long_options[option_index].name, "lvs")) { output |= OUTPUT_LVS; @@ -225,7 +228,8 @@ main (int argc, char *argv[]) } else if (STREQ (long_options[option_index].name, "parts") || STREQ (long_options[option_index].name, "partitions")) { output |= OUTPUT_PARTITIONS; - } else if (STREQ (long_options[option_index].name, "physical-volumes") || + } else if (STREQ (long_options[option_index].name, + "physical-volumes") || STREQ (long_options[option_index].name, "physvols") || STREQ (long_options[option_index].name, "pvs")) { output |= OUTPUT_PVS; @@ -237,8 +241,7 @@ main (int argc, char *argv[]) STREQ (long_options[option_index].name, "volume-groups")) { output |= OUTPUT_VGS; } else - error (EXIT_FAILURE, 0, - _("unknown long option: %s (%d)"), + error (EXIT_FAILURE, 0, _("unknown long option: %s (%d)"), long_options[option_index].name, option_index); break; @@ -360,7 +363,10 @@ static void do_output_pvs (void); static void do_output_partitions (void); static void do_output_blockdevs (void); -static void write_row (const char *name, const char *type, const char *vfs_type, const char *vfs_label, int mbr_id, int64_t size, char **parents, const char *uuid); +static void write_row (const char *name, const char *type, + const char *vfs_type, const char *vfs_label, + int mbr_id, int64_t size, char **parents, + const char *uuid); static void write_row_strings (char **strings, size_t len); static char **no_parents (void); @@ -393,7 +399,7 @@ do_output_title (void) headings[len++] = "UUID"; assert (len <= NR_COLUMNS); - write_row_strings ((char **) headings, len); + write_row_strings ((char **)headings, len); } static void @@ -437,7 +443,7 @@ do_output_filesystems (void) /* Skip swap and unknown, unless --extra flag was given. */ if (!(output & OUTPUT_FILESYSTEMS_EXTRA) && - (STREQ (fses[i+1], "swap") || STREQ (fses[i+1], "unknown"))) + (STREQ (fses[i + 1], "swap") || STREQ (fses[i + 1], "unknown"))) continue; dev = guestfs_canonical_device_name (g, fses[i]); @@ -478,8 +484,8 @@ do_output_filesystems (void) else parents = no_parents (); - write_row (dev, "filesystem", - fses[i+1], vfs_label, -1, size, parents, vfs_uuid); + write_row (dev, "filesystem", fses[i + 1], vfs_label, -1, size, parents, + vfs_uuid); } } @@ -518,8 +524,7 @@ do_output_lvs (void) parents[1] = NULL; } - write_row (lvs[i], "lv", - NULL, NULL, -1, size, (char **) parents, uuid); + write_row (lvs[i], "lv", NULL, NULL, -1, size, (char **)parents, uuid); } } @@ -529,7 +534,7 @@ do_output_vgs (void) size_t i; CLEANUP_FREE_LVM_VG_LIST struct guestfs_lvm_vg_list *vgs = - guestfs_vgs_full (g); + guestfs_vgs_full (g); if (vgs == NULL) exit (EXIT_FAILURE); @@ -546,8 +551,8 @@ do_output_vgs (void) parents = parents_of_vg (vgs->val[i].vg_name); - write_row (name, "vg", - NULL, NULL, -1, (int64_t) vgs->val[i].vg_size, parents, uuid); + write_row (name, "vg", NULL, NULL, -1, (int64_t)vgs->val[i].vg_size, + parents, uuid); } } @@ -587,15 +592,14 @@ do_output_pvs (void) const char *parents[1] = { NULL }; CLEANUP_FREE char *dev = - guestfs_canonical_device_name (g, pvs->val[i].pv_name); + guestfs_canonical_device_name (g, pvs->val[i].pv_name); if (!dev) exit (EXIT_FAILURE); memcpy (uuid, pvs->val[i].pv_uuid, 32); uuid[32] = '\0'; - write_row (dev, "pv", - NULL, NULL, -1, (int64_t) pvs->val[i].pv_size, - (char **) parents, uuid); + write_row (dev, "pv", NULL, NULL, -1, (int64_t)pvs->val[i].pv_size, + (char **)parents, uuid); } } @@ -630,7 +634,8 @@ do_output_partitions (void) exit (EXIT_FAILURE); for (i = 0; parts[i] != NULL; ++i) { - CLEANUP_FREE char *dev = NULL, *parent_name = NULL, *canonical_name = NULL; + CLEANUP_FREE char *dev = NULL, *parent_name = NULL, + *canonical_name = NULL; const char *parents[2]; int64_t size = -1; int mbr_id = -1; @@ -660,8 +665,8 @@ do_output_partitions (void) parents[1] = NULL; } - write_row (dev, "partition", - NULL, NULL, mbr_id, size, (char **) parents, NULL); + write_row (dev, "partition", NULL, NULL, mbr_id, size, (char **)parents, + NULL); } } @@ -694,8 +699,7 @@ do_output_blockdevs (void) else parents = no_parents (); - write_row (dev, "device", - NULL, NULL, -1, size, parents, NULL); + write_row (dev, "device", NULL, NULL, -1, size, parents, NULL); } } @@ -740,7 +744,7 @@ parents_of_md (char *device) size_t i; CLEANUP_FREE_MDSTAT_LIST struct guestfs_mdstat_list *stats = - guestfs_md_stat (g, device); + guestfs_md_stat (g, device); if (!stats) exit (EXIT_FAILURE); @@ -811,8 +815,7 @@ parents_of_vg (char *vg) ret[i] = guestfs_canonical_device_name (g, pvs->val[j].pv_name); if (!ret[i]) exit (EXIT_FAILURE); - } - else { + } else { fprintf (stderr, "%s: warning: unknown PV UUID ignored\n", __func__); ret[i] = strndup (pvuuids[i], 32); if (!ret[i]) @@ -826,9 +829,9 @@ parents_of_vg (char *vg) } static void -write_row (const char *name, const char *type, - const char *vfs_type, const char *vfs_label, int mbr_id, - int64_t size, char **parents, const char *uuid) +write_row (const char *name, const char *type, const char *vfs_type, + const char *vfs_label, int mbr_id, int64_t size, char **parents, + const char *uuid) { const char *strings[NR_COLUMNS]; CLEANUP_FREE char *parents_str = NULL; @@ -847,7 +850,7 @@ write_row (const char *name, const char *type, strings[len++] = vfs_label; if ((columns & COLUMN_MBR)) { if (mbr_id >= 0) { - snprintf (mbr_id_str, sizeof mbr_id_str, "%02x", (unsigned) mbr_id); + snprintf (mbr_id_str, sizeof mbr_id_str, "%02x", (unsigned)mbr_id); strings[len++] = mbr_id_str; } else strings[len++] = NULL; @@ -855,18 +858,15 @@ write_row (const char *name, const char *type, if ((columns & COLUMN_SIZE)) { if (size >= 0) { if (human) { - strings[len++] = - human_readable ((uintmax_t) size, hum, - human_round_to_nearest|human_autoscale| - human_base_1024|human_SI, - 1, 1); - } - else { + strings[len++] = human_readable ( + (uintmax_t)size, hum, human_round_to_nearest | human_autoscale | + human_base_1024 | human_SI, + 1, 1); + } else { snprintf (num, sizeof num, "%" PRIi64, size); strings[len++] = num; } - } - else + } else strings[len++] = NULL; } if ((columns & COLUMN_PARENTS)) { @@ -878,7 +878,7 @@ write_row (const char *name, const char *type, strings[len++] = uuid; assert (len <= NR_COLUMNS); - write_row_strings ((char **) strings, len); + write_row_strings ((char **)strings, len); } static void add_row (char **strings, size_t len); @@ -893,8 +893,7 @@ write_row_strings (char **strings, size_t len) * output them at the end. */ add_row (strings, len); - } - else { /* CSV mode: output it directly, quoted */ + } else { /* CSV mode: output it directly, quoted */ size_t i; for (i = 0; i < len; ++i) { @@ -919,8 +918,8 @@ write_csv_field (const char *field) len = strlen (field); for (i = 0; i < len; ++i) { - if (field[i] == ' ' || field[i] == '"' || - field[i] == '\n' || field[i] == ',') { + if (field[i] == ' ' || field[i] == '"' || field[i] == '\n' || + field[i] == ',') { needs_quoting = 1; break; } @@ -972,8 +971,7 @@ add_row (char **strings, size_t len) slen = 1; /* because "" is printed as "-" */ if (slen > max_width[i]) max_width[i] = slen; - } - else + } else row[i] = NULL; } diff --git a/cat/log.c b/cat/log.c index daefda7..fb689da 100644 --- a/cat/log.c +++ b/cat/log.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -56,32 +57,32 @@ static int do_log_journal (void); static int do_log_text_file (const char *filename); static int do_log_windows_evtx (void); -static void __attribute__((noreturn)) -usage (int status) +static void __attribute__ ((noreturn)) usage (int status) { if (status != EXIT_SUCCESS) fprintf (stderr, _("Try `%s --help' for more information.\n"), guestfs_int_program_name); else { - printf (_("%s: display log files in a virtual machine\n" - "Copyright (C) 2010-2016 Red Hat Inc.\n" - "Usage:\n" - " %s [--options] -d domname\n" - " %s [--options] -a disk.img [-a disk.img ...]\n" - "Options:\n" - " -a|--add image Add image\n" - " -c|--connect uri Specify libvirt URI for -d option\n" - " -d|--domain guest Add disks from libvirt guest\n" - " --echo-keys Don't turn off echo for passphrases\n" - " --format[=raw|..] Force disk format for -a option\n" - " --help Display brief help\n" - " --keys-from-stdin Read passphrases from stdin\n" - " -v|--verbose Verbose messages\n" - " -V|--version Display version and exit\n" - " -x Trace libguestfs API calls\n" - "For more information, see the manpage %s(1).\n"), - guestfs_int_program_name, guestfs_int_program_name, - guestfs_int_program_name, guestfs_int_program_name); + printf ( + _("%s: display log files in a virtual machine\n" + "Copyright (C) 2010-2016 Red Hat Inc.\n" + "Usage:\n" + " %s [--options] -d domname\n" + " %s [--options] -a disk.img [-a disk.img ...]\n" + "Options:\n" + " -a|--add image Add image\n" + " -c|--connect uri Specify libvirt URI for -d option\n" + " -d|--domain guest Add disks from libvirt guest\n" + " --echo-keys Don't turn off echo for passphrases\n" + " --format[=raw|..] Force disk format for -a option\n" + " --help Display brief help\n" + " --keys-from-stdin Read passphrases from stdin\n" + " -v|--verbose Verbose messages\n" + " -V|--version Display version and exit\n" + " -x Trace libguestfs API calls\n" + "For more information, see the manpage %s(1).\n"), + guestfs_int_program_name, guestfs_int_program_name, + guestfs_int_program_name, guestfs_int_program_name); } exit (status); } @@ -97,18 +98,12 @@ main (int argc, char *argv[]) static const char *options = "a:c:d:vVx"; static const struct option long_options[] = { - { "add", 1, 0, 'a' }, - { "connect", 1, 0, 'c' }, - { "domain", 1, 0, 'd' }, - { "echo-keys", 0, 0, 0 }, - { "format", 2, 0, 0 }, - { "help", 0, 0, HELP_OPTION }, - { "keys-from-stdin", 0, 0, 0 }, - { "long-options", 0, 0, 0 }, - { "short-options", 0, 0, 0 }, - { "verbose", 0, 0, 'v' }, - { "version", 0, 0, 'V' }, - { 0, 0, 0, 0 } + { "add", 1, 0, 'a' }, { "connect", 1, 0, 'c' }, + { "domain", 1, 0, 'd' }, { "echo-keys", 0, 0, 0 }, + { "format", 2, 0, 0 }, { "help", 0, 0, HELP_OPTION }, + { "keys-from-stdin", 0, 0, 0 }, { "long-options", 0, 0, 0 }, + { "short-options", 0, 0, 0 }, { "verbose", 0, 0, 'v' }, + { "version", 0, 0, 'V' }, { 0, 0, 0, 0 } }; struct drv *drvs = NULL; const char *format = NULL; @@ -123,10 +118,11 @@ main (int argc, char *argv[]) for (;;) { c = getopt_long (argc, argv, options, long_options, &option_index); - if (c == -1) break; + if (c == -1) + break; switch (c) { - case 0: /* options which are long only */ + case 0: /* options which are long only */ if (STREQ (long_options[option_index].name, "long-options")) display_long_options (long_options); else if (STREQ (long_options[option_index].name, "short-options")) @@ -138,8 +134,7 @@ main (int argc, char *argv[]) } else if (STREQ (long_options[option_index].name, "format")) { OPTION_format; } else - error (EXIT_FAILURE, 0, - _("unknown long option: %s (%d)"), + error (EXIT_FAILURE, 0, _("unknown long option: %s (%d)"), long_options[option_index].name, option_index); break; @@ -239,8 +234,8 @@ do_log (void) if (guestfs_inspect_get_major_version (g, root) >= 6) return do_log_windows_evtx (); - fprintf (stderr, - _("%s: Windows Event Log for pre-Vista guests is not supported.\n"), + fprintf (stderr, _("%s: Windows Event Log for pre-Vista guests is not " + "supported.\n"), guestfs_int_program_name); return -1; } @@ -249,13 +244,14 @@ do_log (void) guestfs_push_error_handler (g, NULL, NULL); journal_files = guestfs_ls (g, JOURNAL_DIR); guestfs_pop_error_handler (g); - if (STREQ (type, "linux") && - journal_files != NULL && journal_files[0] != NULL) + if (STREQ (type, "linux") && journal_files != NULL && + journal_files[0] != NULL) return do_log_journal (); /* Regular /var/log text files with different names. */ if (STRNEQ (type, "windows")) { - const char *logfiles[] = { "/var/log/syslog", "/var/log/messages", NULL }; + const char *logfiles[] = { "/var/log/syslog", "/var/log/messages", + NULL }; size_t i; for (i = 0; logfiles[i] != NULL; ++i) { @@ -279,8 +275,8 @@ do_log (void) * function returns the first entry. */ static const char * -get_journal_field (const struct guestfs_xattr_list *xattrs, const char *name, - size_t *len_rtn) +get_journal_field (const struct guestfs_xattr_list *xattrs, + const char *name, size_t *len_rtn) { uint32_t i; @@ -291,19 +287,17 @@ get_journal_field (const struct guestfs_xattr_list *xattrs, const char *name, } } - return NULL; /* not found */ + return NULL; /* not found */ } -static const char *const log_level_table[] = { - [LOG_EMERG] = "emerg", - [LOG_ALERT] = "alert", - [LOG_CRIT] = "crit", - [LOG_ERR] = "err", - [LOG_WARNING] = "warning", - [LOG_NOTICE] = "notice", - [LOG_INFO] = "info", - [LOG_DEBUG] = "debug" -}; +static const char *const log_level_table[] = {[LOG_EMERG] = "emerg", + [LOG_ALERT] = "alert", + [LOG_CRIT] = "crit", + [LOG_ERR] = "err", + [LOG_WARNING] = "warning", + [LOG_NOTICE] = "notice", + [LOG_INFO] = "info", + [LOG_DEBUG] = "debug" }; static int do_log_journal (void) @@ -333,9 +327,9 @@ do_log_journal (void) ts = guestfs_journal_get_realtime_usec (g); /* error checked below */ priority_str = get_journal_field (xattrs, "PRIORITY", &priority_len); - //hostname = get_journal_field (xattrs, "_HOSTNAME", &hostname_len); - identifier = get_journal_field (xattrs, "SYSLOG_IDENTIFIER", - &identifier_len); + // hostname = get_journal_field (xattrs, "_HOSTNAME", &hostname_len); + identifier = + get_journal_field (xattrs, "SYSLOG_IDENTIFIER", &identifier_len); comm = get_journal_field (xattrs, "_COMM", &comm_len); pid = get_journal_field (xattrs, "_PID", &pid_len); message = get_journal_field (xattrs, "MESSAGE", &message_len); @@ -348,7 +342,8 @@ do_log_journal (void) if (strftime (buf, sizeof buf, "%b %d %H:%M:%S", localtime_r (&t, &tm)) <= 0) { - fprintf (stderr, _("%s: could not format journal entry timestamp\n"), + fprintf (stderr, + _("%s: could not format journal entry timestamp\n"), guestfs_int_program_name); errors++; continue; @@ -360,18 +355,18 @@ do_log_journal (void) /* We don't print this because it is assumed each line from the * guest will have the same hostname. (XXX) */ - //if (hostname) + // if (hostname) // printf (" %.*s", (int) hostname_len, hostname); /* Identifier. */ if (identifier) - printf (" %.*s", (int) identifier_len, identifier); + printf (" %.*s", (int)identifier_len, identifier); else if (comm) - printf (" %.*s", (int) comm_len, comm); + printf (" %.*s", (int)comm_len, comm); /* PID */ if (pid) - printf ("[%.*s]", (int) pid_len, pid); + printf ("[%.*s]", (int)pid_len, pid); /* Log level. */ if (priority_str && *priority_str >= '0' && *priority_str <= '7') @@ -381,11 +376,11 @@ do_log_journal (void) /* Message. */ if (message) - printf (" %.*s", (int) message_len, message); + printf (" %.*s", (int)message_len, message); printf ("\n"); } - if (r == -1) /* error from guestfs_journal_next */ + if (r == -1) /* error from guestfs_journal_next */ return -1; if (guestfs_journal_close (g) == -1) @@ -414,10 +409,14 @@ do_log_windows_evtx (void) int fd, status; if (system ("evtxdump.py -h >/dev/null 2>&1") != 0) { - fprintf (stderr, _("%s: you need to install 'evtxdump.py' (from the python-evtx package)\n" - "in order to parse Windows Event Logs. If you cannot install this, then\n" - "use virt-copy-out(1) to copy the contents of /Windows/System32/winevt/Logs\n" - "from this guest, and examine in a binary file viewer.\n"), + fprintf (stderr, + _("%s: you need to install 'evtxdump.py' (from the " + "python-evtx package)\n" + "in order to parse Windows Event Logs. If you cannot " + "install this, then\n" + "use virt-copy-out(1) to copy the contents of " + "/Windows/System32/winevt/Logs\n" + "from this guest, and examine in a binary file viewer.\n"), guestfs_int_program_name); return -1; } @@ -425,14 +424,14 @@ do_log_windows_evtx (void) /* Check if System.evtx exists. XXX Allow the filename to be * configurable, since there are many logs. */ - filename = guestfs_case_sensitive_path (g, "/Windows/System32/winevt/Logs/System.evtx"); + filename = guestfs_case_sensitive_path ( + g, "/Windows/System32/winevt/Logs/System.evtx"); if (filename == NULL) return -1; /* Note that guestfs_case_sensitive_path does NOT check for existence. */ - if (guestfs_is_file_opts (g, filename, - GUESTFS_IS_FILE_OPTS_FOLLOWSYMLINKS, 1, - -1) <= 0) { + if (guestfs_is_file_opts ( + g, filename, GUESTFS_IS_FILE_OPTS_FOLLOWSYMLINKS, 1, -1) <= 0) { fprintf (stderr, _("%s: Windows Event Log file (%s) not found\n"), guestfs_int_program_name, filename); return -1; @@ -465,10 +464,9 @@ do_log_windows_evtx (void) status = system (cmd); if (status) { char buf[256]; - fprintf (stderr, "%s: %s\n", - guestfs_int_program_name, - guestfs_int_exit_status_to_string (status, "evtxdump.py", - buf, sizeof buf)); + fprintf (stderr, "%s: %s\n", guestfs_int_program_name, + guestfs_int_exit_status_to_string (status, "evtxdump.py", buf, + sizeof buf)); return -1; } diff --git a/cat/ls.c b/cat/ls.c index 91f2125..517ef78 100644 --- a/cat/ls.c +++ b/cat/ls.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -77,45 +78,46 @@ static void output_int64_uid (int64_t); static void output_string (const char *); static void output_string_link (const char *); -static void __attribute__((noreturn)) -usage (int status) +static void __attribute__ ((noreturn)) usage (int status) { if (status != EXIT_SUCCESS) fprintf (stderr, _("Try `%s --help' for more information.\n"), guestfs_int_program_name); else { - printf (_("%s: list files in a virtual machine\n" - "Copyright (C) 2010-2012 Red Hat Inc.\n" - "Usage:\n" - " %s [--options] -d domname dir [dir ...]\n" - " %s [--options] -a disk.img [-a disk.img ...] dir [dir ...]\n" - "Options:\n" - " -a|--add image Add image\n" - " --checksum[=...] Display file checksums\n" - " -c|--connect uri Specify libvirt URI for -d option\n" - " --csv Comma-Separated Values output\n" - " -d|--domain guest Add disks from libvirt guest\n" - " --echo-keys Don't turn off echo for passphrases\n" - " --extra-stats Display extra stats\n" - " --format[=raw|..] Force disk format for -a option\n" - " --help Display brief help\n" - " -h|--human-readable Human-readable sizes in output\n" - " --keys-from-stdin Read passphrases from stdin\n" - " -l|--long Long listing\n" - " -m|--mount dev[:mnt[:opts[:fstype]]]\n" - " Mount dev on mnt (if omitted, /)\n" - " -R|--recursive Recursive listing\n" - " --times Display file times\n" - " --time-days Display file times as days before now\n" - " --time-relative Display file times as seconds before now\n" - " --time-t Display file times as time_t's\n" - " --uids Display UID, GID\n" - " -v|--verbose Verbose messages\n" - " -V|--version Display version and exit\n" - " -x Trace libguestfs API calls\n" - "For more information, see the manpage %s(1).\n"), - guestfs_int_program_name, guestfs_int_program_name, - guestfs_int_program_name, guestfs_int_program_name); + printf ( + _("%s: list files in a virtual machine\n" + "Copyright (C) 2010-2012 Red Hat Inc.\n" + "Usage:\n" + " %s [--options] -d domname dir [dir ...]\n" + " %s [--options] -a disk.img [-a disk.img ...] dir [dir ...]\n" + "Options:\n" + " -a|--add image Add image\n" + " --checksum[=...] Display file checksums\n" + " -c|--connect uri Specify libvirt URI for -d option\n" + " --csv Comma-Separated Values output\n" + " -d|--domain guest Add disks from libvirt guest\n" + " --echo-keys Don't turn off echo for passphrases\n" + " --extra-stats Display extra stats\n" + " --format[=raw|..] Force disk format for -a option\n" + " --help Display brief help\n" + " -h|--human-readable Human-readable sizes in output\n" + " --keys-from-stdin Read passphrases from stdin\n" + " -l|--long Long listing\n" + " -m|--mount dev[:mnt[:opts[:fstype]]]\n" + " Mount dev on mnt (if omitted, /)\n" + " -R|--recursive Recursive listing\n" + " --times Display file times\n" + " --time-days Display file times as days before now\n" + " --time-relative Display file times as seconds before " + "now\n" + " --time-t Display file times as time_t's\n" + " --uids Display UID, GID\n" + " -v|--verbose Verbose messages\n" + " -V|--version Display version and exit\n" + " -x Trace libguestfs API calls\n" + "For more information, see the manpage %s(1).\n"), + guestfs_int_program_name, guestfs_int_program_name, + guestfs_int_program_name, guestfs_int_program_name); } exit (status); } @@ -172,9 +174,9 @@ main (int argc, char *argv[]) bool format_consumed = true; int c; int option_index; -#define MODE_LS_L 1 -#define MODE_LS_R 2 -#define MODE_LS_LR (MODE_LS_L|MODE_LS_R) +#define MODE_LS_L 1 +#define MODE_LS_R 2 +#define MODE_LS_LR (MODE_LS_L | MODE_LS_R) int mode = 0; g = guestfs_create (); @@ -183,10 +185,11 @@ main (int argc, char *argv[]) for (;;) { c = getopt_long (argc, argv, options, long_options, &option_index); - if (c == -1) break; + if (c == -1) + break; switch (c) { - case 0: /* options which are long only */ + case 0: /* options which are long only */ if (STREQ (long_options[option_index].name, "long-options")) display_long_options (long_options); else if (STREQ (long_options[option_index].name, "short-options")) @@ -226,8 +229,7 @@ main (int argc, char *argv[]) STREQ (long_options[option_index].name, "uids")) { enable_uids = 1; } else - error (EXIT_FAILURE, 0, - _("unknown long option: %s (%d)"), + error (EXIT_FAILURE, 0, _("unknown long option: %s (%d)"), long_options[option_index].name, option_index); break; @@ -297,7 +299,7 @@ main (int argc, char *argv[]) error (EXIT_FAILURE, errno, "strdup"); drv->next = drvs; drvs = drv; - } else { /* simulate -d option */ + } else { /* simulate -d option */ drv = calloc (1, sizeof (struct drv)); if (!drv) error (EXIT_FAILURE, errno, "calloc"); @@ -322,11 +324,11 @@ main (int argc, char *argv[]) CHECK_OPTION_format_consumed; /* Many flags only apply to -lR mode. */ - if (mode != MODE_LS_LR && - (csv || human || enable_uids || enable_times || enable_extra_stats || - checksum)) + if (mode != MODE_LS_LR && (csv || human || enable_uids || enable_times || + enable_extra_stats || checksum)) error (EXIT_FAILURE, 0, - _("used a flag which can only be combined with -lR mode\nFor more information, read the virt-ls(1) man page.")); + _("used a flag which can only be combined with -lR mode\nFor " + "more information, read the virt-ls(1) man page.")); /* CSV && human is unsafe because spreadsheets fail to parse these * fields correctly. (RHBZ#600977). @@ -364,28 +366,28 @@ main (int argc, char *argv[]) const char *dir = argv[optind]; switch (mode) { - case 0: /* no -l or -R option */ + case 0: /* no -l or -R option */ if (do_ls (dir) == -1) errors++; break; - case MODE_LS_L: /* virt-ls -l */ + case MODE_LS_L: /* virt-ls -l */ if (do_ls_l (dir) == -1) errors++; break; - case MODE_LS_R: /* virt-ls -R */ + case MODE_LS_R: /* virt-ls -R */ if (do_ls_R (dir) == -1) errors++; break; - case MODE_LS_LR: /* virt-ls -lR */ + case MODE_LS_LR: /* virt-ls -lR */ if (do_ls_lR (dir) == -1) errors++; break; default: - abort (); /* can't happen */ + abort (); /* can't happen */ } optind++; @@ -439,7 +441,10 @@ do_ls_R (const char *dir) return 0; } -static int show_file (const char *dir, const char *name, const struct guestfs_statns *stat, const struct guestfs_xattr_list *xattrs, void *unused); +static int show_file (const char *dir, const char *name, + const struct guestfs_statns *stat, + const struct guestfs_xattr_list *xattrs, + void *unused); static int do_ls_lR (const char *dir) @@ -457,8 +462,7 @@ do_ls_lR (const char *dir) static int show_file (const char *dir, const char *name, const struct guestfs_statns *stat, - const struct guestfs_xattr_list *xattrs, - void *unused) + const struct guestfs_xattr_list *xattrs, void *unused) { const char *filetype; CLEANUP_FREE char *path = NULL, *csum = NULL, *link = NULL; @@ -550,7 +554,8 @@ next_field (void) int c = csv ? ',' : ' '; field++; - if (field == 1) return; + if (field == 1) + return; if (putchar (c) == EOF) error (EXIT_FAILURE, errno, "putchar"); @@ -578,8 +583,7 @@ output_string (const char *s) print_no_quoting: if (printf ("%s", s) < 0) error (EXIT_FAILURE, errno, "printf"); - } - else { + } else { /* Quote CSV string without requiring an external module. */ size_t i, len; int needs_quoting = 0; @@ -587,8 +591,7 @@ output_string (const char *s) len = strlen (s); for (i = 0; i < len; ++i) { - if (s[i] == ' ' || s[i] == '"' || - s[i] == '\n' || s[i] == ',') { + if (s[i] == ' ' || s[i] == '"' || s[i] == '\n' || s[i] == ',') { needs_quoting = 1; break; } @@ -640,7 +643,8 @@ static void output_int64_size (int64_t size) { char buf[LONGEST_HUMAN_READABLE]; - int hopts = human_round_to_nearest|human_autoscale|human_base_1024|human_SI; + int hopts = + human_round_to_nearest | human_autoscale | human_base_1024 | human_SI; int r; next_field (); @@ -650,14 +654,13 @@ output_int64_size (int64_t size) r = printf ("%10" PRIi64, size); else r = printf ("%10s", - human_readable ((uintmax_t) size, buf, hopts, 1, 1)); + human_readable ((uintmax_t)size, buf, hopts, 1, 1)); } else { /* CSV is the same as non-CSV but we don't need to right-align. */ if (!human) r = printf ("%" PRIi64, size); else - r = printf ("%s", - human_readable ((uintmax_t) size, buf, hopts, 1, 1)); + r = printf ("%s", human_readable ((uintmax_t)size, buf, hopts, 1, 1)); } if (r < 0) @@ -669,7 +672,7 @@ output_int64_perms (int64_t i) { next_field (); /* csv doesn't need escaping */ - if (printf ("%04" PRIo64, (uint64_t) i) < 0) + if (printf ("%04" PRIo64, (uint64_t)i) < 0) error (EXIT_FAILURE, errno, "printf"); } @@ -683,20 +686,19 @@ output_int64_time (int64_t secs, int64_t nsecs) /* csv doesn't need escaping */ if (time_t_output) { switch (time_relative) { - case 0: /* --time-t */ + case 0: /* --time-t */ r = printf ("%10" PRIi64, secs); break; - case 1: /* --time-relative */ + case 1: /* --time-relative */ r = printf ("%8" PRIi64, now - secs); break; - case 2: /* --time-days */ + case 2: /* --time-days */ default: r = printf ("%3" PRIi64, (now - secs) / 86400); break; } - } - else { - time_t t = (time_t) secs; + } else { + time_t t = (time_t)secs; char buf[64]; struct tm *tm; @@ -731,7 +733,7 @@ output_int64_dev (int64_t i) next_field (); /* csv doesn't need escaping */ - if (printf ("%ju:%ju", - (uintmax_t) major (dev), (uintmax_t) minor (dev)) < 0) + if (printf ("%ju:%ju", (uintmax_t)major (dev), (uintmax_t)minor (dev)) < + 0) error (EXIT_FAILURE, errno, "printf"); } diff --git a/cat/visit.c b/cat/visit.c index 2e08ccc..7a22d3a 100644 --- a/cat/visit.c +++ b/cat/visit.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ /* Adapted from @@ -34,7 +35,8 @@ https://rwmj.wordpress.com/2010/12/15/tip-audit-virtual-machine-for-setuid-f... #include "visit.h" -static int _visit (guestfs_h *g, int depth, const char *dir, visitor_function f, void *opaque); +static int _visit (guestfs_h *g, int depth, const char *dir, + visitor_function f, void *opaque); int visit (guestfs_h *g, const char *dir, visitor_function f, void *opaque) @@ -43,8 +45,8 @@ visit (guestfs_h *g, const char *dir, visitor_function f, void *opaque) } static int -_visit (guestfs_h *g, int depth, const char *dir, - visitor_function f, void *opaque) +_visit (guestfs_h *g, int depth, const char *dir, visitor_function f, + void *opaque) { /* Call 'f' with the top directory. Note that ordinary recursive * visits will not otherwise do this, so we have to have a special @@ -114,13 +116,14 @@ _visit (guestfs_h *g, int depth, const char *dir, xattrs->val[xattrp].attrval_len); attrval[xattrs->val[xattrp].attrval_len] = '\0'; if (sscanf (attrval, "%zu", &nr_xattrs) != 1) { - fprintf (stderr, _("%s: error: cannot parse xattr count for %s %s\n"), + fprintf (stderr, + _("%s: error: cannot parse xattr count for %s %s\n"), guestfs_int_program_name, dir, names[i]); return -1; } file_xattrs.len = nr_xattrs; - file_xattrs.val = &xattrs->val[xattrp+1]; + file_xattrs.val = &xattrs->val[xattrp + 1]; xattrp += nr_xattrs; /* Call the function. */ diff --git a/cat/visit.h b/cat/visit.h index d8f7871..a790427 100644 --- a/cat/visit.h +++ b/cat/visit.h @@ -13,15 +13,20 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #ifndef VISIT_H #define VISIT_H -typedef int (*visitor_function) (const char *dir, const char *name, const struct guestfs_statns *stat, const struct guestfs_xattr_list *xattrs, void *opaque); +typedef int (*visitor_function) (const char *dir, const char *name, + const struct guestfs_statns *stat, + const struct guestfs_xattr_list *xattrs, + void *opaque); -extern int visit (guestfs_h *g, const char *dir, visitor_function f, void *opaque); +extern int visit (guestfs_h *g, const char *dir, visitor_function f, + void *opaque); extern char *full_path (const char *dir, const char *name); diff --git a/customize/crypt-c.c b/customize/crypt-c.c index 70e6ea7..7d79600 100644 --- a/customize/crypt-c.c +++ b/customize/crypt-c.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> diff --git a/customize/perl_edit-c.c b/customize/perl_edit-c.c index 753d990..692383f 100644 --- a/customize/perl_edit-c.c +++ b/customize/perl_edit-c.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> diff --git a/daemon/9p.c b/daemon/9p.c index fefbb71..5b0c0d7 100644 --- a/daemon/9p.c +++ b/daemon/9p.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -33,7 +34,7 @@ #include "actions.h" #define BUS_PATH "/sys/bus/virtio/drivers/9pnet_virtio" -GUESTFSD_EXT_CMD(str_mount, mount); +GUESTFSD_EXT_CMD (str_mount, mount); static char *read_whole_file (const char *filename); @@ -68,7 +69,8 @@ do_list_9p (void) errno = 0; d = readdir (dir); - if (d == NULL) break; + if (d == NULL) + break; if (STRPREFIX (d->d_name, "virtio")) { char mount_tag_path[256]; @@ -127,7 +129,7 @@ read_whole_file (const char *filename) size_t alloc = 0, size = 0; int fd; - fd = open (filename, O_RDONLY|O_CLOEXEC); + fd = open (filename, O_RDONLY | O_CLOEXEC); if (fd == -1) { perror (filename); return NULL; @@ -172,7 +174,8 @@ read_whole_file (const char *filename) /* Takes optional arguments, consult optargs_bitmask. */ int -do_mount_9p (const char *mount_tag, const char *mountpoint, const char *options) +do_mount_9p (const char *mount_tag, const char *mountpoint, + const char *options) { CLEANUP_FREE char *mp = NULL, *opts = NULL, *err = NULL; struct stat statbuf; @@ -203,8 +206,7 @@ do_mount_9p (const char *mount_tag, const char *mountpoint, const char *options) reply_with_perror ("asprintf"); return -1; } - } - else { + } else { opts = strdup ("trans=virtio"); if (opts == NULL) { reply_with_perror ("strdup"); @@ -212,8 +214,8 @@ do_mount_9p (const char *mount_tag, const char *mountpoint, const char *options) } } - r = command (NULL, &err, - str_mount, "-o", opts, "-t", "9p", mount_tag, mp, NULL); + r = command (NULL, &err, str_mount, "-o", opts, "-t", "9p", mount_tag, mp, + NULL); if (r == -1) { reply_with_error ("%s on %s: %s", mount_tag, mountpoint, err); return -1; diff --git a/daemon/acl.c b/daemon/acl.c index fcb14e1..21bde03 100644 --- a/daemon/acl.c +++ b/daemon/acl.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -85,7 +86,7 @@ do_acl_get_file (const char *path, const char *acltype) } acl_free (r); - return ret; /* caller frees */ + return ret; /* caller frees */ } int @@ -106,7 +107,8 @@ do_acl_set_file (const char *path, const char *acltype, const char *aclstr) acl = acl_from_text (aclstr); if (acl == NULL) { - reply_with_perror ("could not parse acl string: %s: acl_from_text", aclstr); + reply_with_perror ("could not parse acl string: %s: acl_from_text", + aclstr); return -1; } diff --git a/daemon/augeas.c b/daemon/augeas.c index ea1163f..ec48bdd 100644 --- a/daemon/augeas.c +++ b/daemon/augeas.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -29,20 +30,21 @@ #include "actions.h" #include "optgroups.h" -#define FPRINTF_AUGEAS_ERROR(aug,fs,...) \ - do { \ - int code = aug_error (aug); \ - if (code == AUG_ENOMEM) \ - reply_with_error (fs ": augeas out of memory", ##__VA_ARGS__); \ - else { \ - const char *aug_err_message = aug_error_message (aug); \ - const char *aug_err_minor = aug_error_minor_message (aug); \ - const char *aug_err_details = aug_error_details (aug); \ - fprintf (stderr, fs ": %s%s%s%s%s", ##__VA_ARGS__, \ - aug_err_message, \ - aug_err_minor ? ": " : "", aug_err_minor ? aug_err_minor : "", \ - aug_err_details ? ": " : "", aug_err_details ? aug_err_details : ""); \ - } \ +#define FPRINTF_AUGEAS_ERROR(aug, fs, ...) \ + do { \ + int code = aug_error (aug); \ + if (code == AUG_ENOMEM) \ + reply_with_error (fs ": augeas out of memory", ##__VA_ARGS__); \ + else { \ + const char *aug_err_message = aug_error_message (aug); \ + const char *aug_err_minor = aug_error_minor_message (aug); \ + const char *aug_err_details = aug_error_details (aug); \ + fprintf (stderr, fs ": %s%s%s%s%s", ##__VA_ARGS__, aug_err_message, \ + aug_err_minor ? ": " : "", \ + aug_err_minor ? aug_err_minor : "", \ + aug_err_details ? ": " : "", \ + aug_err_details ? aug_err_details : ""); \ + } \ } while (0) int augeas_version; @@ -97,7 +99,7 @@ aug_read_version (void) } /* Clean up the augeas handle on daemon exit. */ -void aug_finalize (void) __attribute__((destructor)); +void aug_finalize (void) __attribute__ ((destructor)); void aug_finalize (void) { @@ -107,14 +109,15 @@ aug_finalize (void) } } -#define NEED_AUG(errcode) \ - do { \ - if (!aug) { \ - reply_with_error ("%s: you must call 'aug-init' first to initialize Augeas", __func__); \ - return (errcode); \ - } \ - } \ - while (0) +#define NEED_AUG(errcode) \ + do { \ + if (!aug) { \ + reply_with_error ( \ + "%s: you must call 'aug-init' first to initialize Augeas", \ + __func__); \ + return (errcode); \ + } \ + } while (0) /* We need to rewrite the root path so it is based at /sysroot. */ int @@ -173,7 +176,7 @@ do_aug_init (const char *root, int flags) int do_aug_close (void) { - NEED_AUG(-1); + NEED_AUG (-1); aug_close (aug); aug = NULL; @@ -257,7 +260,7 @@ do_aug_get (const char *path) return NULL; } - return v; /* Caller frees. */ + return v; /* Caller frees. */ } int @@ -358,7 +361,7 @@ do_aug_match (const char *path) /* This returns an array of length r, which we must extend * and add a terminating NULL. */ - vp = realloc (matches, sizeof (char *) * (r+1)); + vp = realloc (matches, sizeof (char *) * (r + 1)); if (vp == NULL) { reply_with_perror ("realloc"); free (vp); @@ -367,7 +370,7 @@ do_aug_match (const char *path) matches = vp; matches[r] = NULL; - return matches; /* Caller frees. */ + return matches; /* Caller frees. */ } int @@ -411,8 +414,8 @@ do_aug_ls (const char *path) len = strlen (path); - if (len > 1 && - (path[len-1] == '/' || path[len-1] == ']' || path[len-1] == '*')) { + if (len > 1 && (path[len - 1] == '/' || path[len - 1] == ']' || + path[len - 1] == '*')) { reply_with_error ("don't use aug-ls with a path that ends with / ] *"); return NULL; } @@ -422,7 +425,7 @@ do_aug_ls (const char *path) else { CLEANUP_FREE char *buf = NULL; - len += 3; /* / * + terminating \0 */ + len += 3; /* / * + terminating \0 */ buf = malloc (len); if (buf == NULL) { reply_with_perror ("malloc"); @@ -434,10 +437,10 @@ do_aug_ls (const char *path) } if (matches == NULL) - return NULL; /* do_aug_match has already sent the error */ + return NULL; /* do_aug_match has already sent the error */ - sort_strings (matches, count_strings ((void *) matches)); - return matches; /* Caller frees. */ + sort_strings (matches, count_strings ((void *)matches)); + return matches; /* Caller frees. */ } int @@ -489,5 +492,5 @@ do_aug_label (const char *augpath) return NULL; } - return ret; /* caller frees */ + return ret; /* caller frees */ } diff --git a/daemon/available.c b/daemon/available.c index 9716796..24ca43c 100644 --- a/daemon/available.c +++ b/daemon/available.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -30,8 +31,8 @@ #include "actions.h" #include "optgroups.h" -GUESTFSD_EXT_CMD(str_grep, grep); -GUESTFSD_EXT_CMD(str_modprobe, modprobe); +GUESTFSD_EXT_CMD (str_grep, grep); +GUESTFSD_EXT_CMD (str_modprobe, modprobe); int do_internal_feature_available (const char *group) @@ -63,7 +64,7 @@ do_available_all_groups (void) if (end_stringsbuf (&groups) == -1) return NULL; - return groups.argv; /* caller frees */ + return groups.argv; /* caller frees */ } /* Search for filesystem in /proc/filesystems, ignoring "nodev". */ @@ -127,7 +128,8 @@ do_filesystem_available (const char *filesystem) for (i = 0; i < len; ++i) { if (!c_isalnum (filesystem[i]) && filesystem[i] != '_') { - reply_with_error ("filesystem name contains non-alphanumeric characters"); + reply_with_error ( + "filesystem name contains non-alphanumeric characters"); return -1; } } diff --git a/daemon/base64.c b/daemon/base64.c index 3f7a630..c6ff73c 100644 --- a/daemon/base64.c +++ b/daemon/base64.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -30,7 +31,7 @@ #include "daemon.h" #include "actions.h" -GUESTFSD_EXT_CMD(str_base64, base64); +GUESTFSD_EXT_CMD (str_base64, base64); static int write_cb (void *fd_ptr, const void *buf, size_t len) @@ -74,13 +75,13 @@ do_base64_in (const char *file) fd = fileno (fp); r = receive_file (write_cb, &fd); - if (r == -1) { /* write error */ + if (r == -1) { /* write error */ cancel_receive (); reply_with_error ("write error on file: %s", file); pclose (fp); return -1; } - if (r == -2) { /* cancellation from library */ + if (r == -2) { /* cancellation from library */ /* This error is ignored by the library since it initiated the * cancel. Nevertheless we must send an error reply here. */ @@ -161,18 +162,18 @@ do_base64_out (const char *file) if (ferror (fp)) { fprintf (stderr, "fread: %s: %m\n", file); - send_file_end (1); /* Cancel. */ + send_file_end (1); /* Cancel. */ pclose (fp); return -1; } if (pclose (fp) != 0) { fprintf (stderr, "pclose: %s: %m\n", file); - send_file_end (1); /* Cancel. */ + send_file_end (1); /* Cancel. */ return -1; } - if (send_file_end (0)) /* Normal end of file. */ + if (send_file_end (0)) /* Normal end of file. */ return -1; return 0; diff --git a/daemon/blkdiscard.c b/daemon/blkdiscard.c index 612c97f..7553aab 100644 --- a/daemon/blkdiscard.c +++ b/daemon/blkdiscard.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -34,7 +35,8 @@ #include "actions.h" #include "optgroups.h" -/* http://rwmj.wordpress.com/2014/03/11/blkdiscard-blkzeroout-blkdiscardzeroes-... */ +/* http://rwmj.wordpress.com/2014/03/11/blkdiscard-blkzeroout-blkdiscardzeroes-... + */ #ifdef BLKDISCARD @@ -70,9 +72,9 @@ do_blkdiscard (const char *device) return -1; range[0] = 0; - range[1] = (uint64_t) size; + range[1] = (uint64_t)size; - fd = open (device, O_WRONLY|O_CLOEXEC); + fd = open (device, O_WRONLY | O_CLOEXEC); if (fd == -1) { reply_with_perror ("open: %s", device); return -1; @@ -106,7 +108,7 @@ do_blkdiscardzeroes (const char *device) int fd; unsigned int arg; - fd = open (device, O_RDONLY|O_CLOEXEC); + fd = open (device, O_RDONLY | O_CLOEXEC); if (fd == -1) { reply_with_perror ("open: %s", device); return -1; diff --git a/daemon/blkid.c b/daemon/blkid.c index 99546b4..97251d1 100644 --- a/daemon/blkid.c +++ b/daemon/blkid.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -28,7 +29,7 @@ #include "actions.h" #include "optgroups.h" -GUESTFSD_EXT_CMD(str_blkid, blkid); +GUESTFSD_EXT_CMD (str_blkid, blkid); char * get_blkid_tag (const char *device, const char *tag) @@ -38,11 +39,9 @@ get_blkid_tag (const char *device, const char *tag) int r; size_t len; - r = commandr (&out, &err, - str_blkid, + r = commandr (&out, &err, str_blkid, /* Adding -c option kills all caching, even on RHEL 5. */ - "-c", "/dev/null", - "-o", "value", "-s", tag, device, NULL); + "-c", "/dev/null", "-o", "value", "-s", tag, device, NULL); if (r != 0 && r != 2) { if (r >= 0) reply_with_error ("%s: %s (blkid returned %d)", device, err, r); @@ -52,7 +51,7 @@ get_blkid_tag (const char *device, const char *tag) return NULL; } - if (r == 2) { /* means UUID etc not found */ + if (r == 2) { /* means UUID etc not found */ free (out); out = strdup (""); if (out == NULL) @@ -62,10 +61,10 @@ get_blkid_tag (const char *device, const char *tag) /* Trim trailing \n if present. */ len = strlen (out); - if (len > 0 && out[len-1] == '\n') - out[len-1] = '\0'; + if (len > 0 && out[len - 1] == '\n') + out[len - 1] = '\0'; - return out; /* caller frees */ + return out; /* caller frees */ } char * @@ -109,7 +108,7 @@ test_blkid_p_i_opt (void) r = commandr (NULL, &err, str_blkid, "-p", "/dev/null", NULL); if (r == -1) { - /* This means we couldn't run the blkid command at all. */ + /* This means we couldn't run the blkid command at all. */ command_failed: reply_with_error ("could not run 'blkid' command: %s", err); return -1; @@ -140,8 +139,8 @@ blkid_with_p_i_opt (const char *device) CLEANUP_FREE_STRING_LIST char **lines = NULL; DECLARE_STRINGSBUF (ret); - r = command (&out, &err, str_blkid, "-c", "/dev/null", - "-p", "-i", "-o", "export", device, NULL); + r = command (&out, &err, str_blkid, "-c", "/dev/null", "-p", "-i", "-o", + "export", device, NULL); if (r == -1) { reply_with_error ("%s", err); goto error; @@ -172,26 +171,29 @@ blkid_with_p_i_opt (const char *device) char *line = lines[i]; /* Skip blank lines (shouldn't happen) */ - if (line[0] == '\0') continue; + if (line[0] == '\0') + continue; /* Split the line in 2 at the equals sign */ eq = strchr (line, '='); if (eq) { - *eq = '\0'; eq++; + *eq = '\0'; + eq++; /* Add the key/value pair to the output */ - if (add_string (&ret, line) == -1 || - add_string (&ret, eq) == -1) goto error; + if (add_string (&ret, line) == -1 || add_string (&ret, eq) == -1) + goto error; } else { fprintf (stderr, "blkid: unexpected blkid output ignored: %s", line); } } - if (end_stringsbuf (&ret) == -1) goto error; + if (end_stringsbuf (&ret) == -1) + goto error; return ret.argv; - error: +error: if (ret.argv) free_strings (ret.argv); @@ -204,28 +206,35 @@ blkid_without_p_i_opt (const char *device) char *s; DECLARE_STRINGSBUF (ret); - if (add_string (&ret, "TYPE") == -1) goto error; + if (add_string (&ret, "TYPE") == -1) + goto error; s = get_blkid_tag (device, "TYPE"); - if (s == NULL) goto error; + if (s == NULL) + goto error; if (add_string_nodup (&ret, s) == -1) goto error; - if (add_string (&ret, "LABEL") == -1) goto error; + if (add_string (&ret, "LABEL") == -1) + goto error; s = get_blkid_tag (device, "LABEL"); - if (s == NULL) goto error; + if (s == NULL) + goto error; if (add_string_nodup (&ret, s) == -1) goto error; - if (add_string (&ret, "UUID") == -1) goto error; + if (add_string (&ret, "UUID") == -1) + goto error; s = get_blkid_tag (device, "UUID"); - if (s == NULL) goto error; + if (s == NULL) + goto error; if (add_string_nodup (&ret, s) == -1) goto error; - if (end_stringsbuf (&ret) == -1) goto error; + if (end_stringsbuf (&ret) == -1) + goto error; return ret.argv; - error: +error: if (ret.argv) free_stringslen (ret.argv, ret.size); return NULL; diff --git a/daemon/blockdev.c b/daemon/blockdev.c index 6e8821d..f05aa42 100644 --- a/daemon/blockdev.c +++ b/daemon/blockdev.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -28,24 +29,19 @@ #include "daemon.h" #include "actions.h" -GUESTFSD_EXT_CMD(str_blockdev, blockdev); +GUESTFSD_EXT_CMD (str_blockdev, blockdev); /* These functions are all about using the blockdev command, so * we centralize it in one call. */ static int64_t -call_blockdev (const char *device, const char *switc, int extraarg, int prints) +call_blockdev (const char *device, const char *switc, int extraarg, + int prints) { int r; int64_t rv; CLEANUP_FREE char *out = NULL, *err = NULL; - const char *argv[] = { - str_blockdev, - switc, - NULL, - NULL, - NULL - }; + const char *argv[] = { str_blockdev, switc, NULL, NULL, NULL }; char buf[64]; /* When you call close on any block device, udev kicks off a rule @@ -95,37 +91,37 @@ do_blockdev_setra (const char *device, int sectors) reply_with_error ("readahead sectors must be >= 0"); return -1; } - return (int) call_blockdev (device, "--setra", sectors, 0); + return (int)call_blockdev (device, "--setra", sectors, 0); } int do_blockdev_setro (const char *device) { - return (int) call_blockdev (device, "--setro", -1, 0); + return (int)call_blockdev (device, "--setro", -1, 0); } int do_blockdev_setrw (const char *device) { - return (int) call_blockdev (device, "--setrw", -1, 0); + return (int)call_blockdev (device, "--setrw", -1, 0); } int do_blockdev_getro (const char *device) { - return (int) call_blockdev (device, "--getro", -1, 1); + return (int)call_blockdev (device, "--getro", -1, 1); } int do_blockdev_getss (const char *device) { - return (int) call_blockdev (device, "--getss", -1, 1); + return (int)call_blockdev (device, "--getss", -1, 1); } int do_blockdev_getbsz (const char *device) { - return (int) call_blockdev (device, "--getbsz", -1, 1); + return (int)call_blockdev (device, "--getbsz", -1, 1); } int diff --git a/daemon/btrfs.c b/daemon/btrfs.c index 2a20cb0..026d033 100644 --- a/daemon/btrfs.c +++ b/daemon/btrfs.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -33,17 +34,16 @@ #include "c-ctype.h" #include "ignore-value.h" -GUESTFSD_EXT_CMD(str_btrfs, btrfs); -GUESTFSD_EXT_CMD(str_btrfstune, btrfstune); -GUESTFSD_EXT_CMD(str_btrfsck, btrfsck); -GUESTFSD_EXT_CMD(str_mkfs_btrfs, mkfs.btrfs); -GUESTFSD_EXT_CMD(str_umount, umount); -GUESTFSD_EXT_CMD(str_btrfsimage, btrfs-image); +GUESTFSD_EXT_CMD (str_btrfs, btrfs); +GUESTFSD_EXT_CMD (str_btrfstune, btrfstune); +GUESTFSD_EXT_CMD (str_btrfsck, btrfsck); +GUESTFSD_EXT_CMD (str_mkfs_btrfs, mkfs.btrfs); +GUESTFSD_EXT_CMD (str_umount, umount); +GUESTFSD_EXT_CMD (str_btrfsimage, btrfs - image); -COMPILE_REGEXP (re_btrfs_subvolume_list, - "ID\\s+(\\d+).*\\s" - "top level\\s+(\\d+).*\\s" - "path\\s(.*)", +COMPILE_REGEXP (re_btrfs_subvolume_list, "ID\\s+(\\d+).*\\s" + "top level\\s+(\\d+).*\\s" + "path\\s(.*)", 0) COMPILE_REGEXP (re_btrfs_balance_status, "Balance on '.*' is (.*)", 0) @@ -51,7 +51,7 @@ int optgroup_btrfs_available (void) { return test_mode || - (prog_exists (str_btrfs) && filesystem_available ("btrfs") > 0); + (prog_exists (str_btrfs) && filesystem_available ("btrfs") > 0); } char * @@ -62,8 +62,7 @@ btrfs_get_label (const char *device) char *out = NULL; size_t len; - r = command (&out, &err, str_btrfs, "filesystem", "label", - device, NULL); + r = command (&out, &err, str_btrfs, "filesystem", "label", device, NULL); if (r == -1) { reply_with_error ("%s", err); free (out); @@ -72,8 +71,8 @@ btrfs_get_label (const char *device) /* Trim trailing \n if present. */ len = strlen (out); - if (len > 0 && out[len-1] == '\n') - out[len-1] = '\0'; + if (len > 0 && out[len - 1] == '\n') + out[len - 1] = '\0'; return out; } @@ -84,8 +83,8 @@ btrfs_set_label (const char *device, const char *label) int r; CLEANUP_FREE char *err = NULL; - r = command (NULL, &err, str_btrfs, "filesystem", "label", - device, label, NULL); + r = command (NULL, &err, str_btrfs, "filesystem", "label", device, label, + NULL); if (r == -1) { reply_with_error ("%s", err); return -1; @@ -122,8 +121,7 @@ do_btrfs_filesystem_resize (const char *filesystem, int64_t size) snprintf (size_str, sizeof size_str, "%" PRIi64, size); ADD_ARG (argv, i, size_str); - } - else + } else ADD_ARG (argv, i, "max"); buf = sysroot_path (filesystem); @@ -147,10 +145,9 @@ do_btrfs_filesystem_resize (const char *filesystem, int64_t size) /* Takes optional arguments, consult optargs_bitmask. */ int -do_mkfs_btrfs (char *const *devices, - int64_t allocstart, int64_t bytecount, const char *datatype, - int leafsize, const char *label, const char *metadata, - int nodesize, int sectorsize) +do_mkfs_btrfs (char *const *devices, int64_t allocstart, int64_t bytecount, + const char *datatype, int leafsize, const char *label, + const char *metadata, int nodesize, int sectorsize) { size_t nr_devices = count_strings (devices); size_t MAX_ARGS = nr_devices + 64; @@ -295,8 +292,7 @@ do_btrfs_subvolume_snapshot (const char *source, const char *dest, int ro, ADD_ARG (argv, i, "snapshot"); /* Optional arguments. */ - if ((optargs_bitmask & GUESTFS_BTRFS_SUBVOLUME_SNAPSHOT_RO_BITMASK) && - ro) + if ((optargs_bitmask & GUESTFS_BTRFS_SUBVOLUME_SNAPSHOT_RO_BITMASK) && ro) ADD_ARG (argv, i, "-r"); if (optargs_bitmask & GUESTFS_BTRFS_SUBVOLUME_SNAPSHOT_QGROUPID_BITMASK) { @@ -374,7 +370,6 @@ do_btrfs_subvolume_create (const char *dest, const char *qgroupid) ADD_ARG (argv, i, qgroupid); } - ADD_ARG (argv, i, dest_buf); ADD_ARG (argv, i, NULL); @@ -477,7 +472,8 @@ do_btrfs_subvolume_list (const mountable_t *fs) } lines = split_lines (out); - if (!lines) return NULL; + if (!lines) + return NULL; } /* Output is: @@ -510,7 +506,7 @@ do_btrfs_subvolume_list (const mountable_t *fs) ret->guestfs_int_btrfssubvolume_list_len = nr_subvolumes; ret->guestfs_int_btrfssubvolume_list_val = - calloc (nr_subvolumes, sizeof (struct guestfs_int_btrfssubvolume)); + calloc (nr_subvolumes, sizeof (struct guestfs_int_btrfssubvolume)); if (ret->guestfs_int_btrfssubvolume_list_val == NULL) { reply_with_perror ("calloc"); goto error; @@ -528,14 +524,16 @@ do_btrfs_subvolume_list (const mountable_t *fs) if (pcre_exec (re_btrfs_subvolume_list, NULL, line, strlen (line), 0, 0, ovector, N_MATCHES * 3) < 0) #undef N_MATCHES - { - unexpected_output: - reply_with_error ("unexpected output from 'btrfs subvolume list' command: %s", line); - goto error; - } + { + unexpected_output: + reply_with_error ( + "unexpected output from 'btrfs subvolume list' command: %s", + line); + goto error; + } struct guestfs_int_btrfssubvolume *this = - &ret->guestfs_int_btrfssubvolume_list_val[i]; + &ret->guestfs_int_btrfssubvolume_list_val[i]; #if __WORDSIZE == 64 #define XSTRTOU64 xstrtoul @@ -543,8 +541,8 @@ do_btrfs_subvolume_list (const mountable_t *fs) #define XSTRTOU64 xstrtoull #endif - if (XSTRTOU64 (line + ovector[2], NULL, 10, - &this->btrfssubvolume_id, NULL) != LONGINT_OK) + if (XSTRTOU64 (line + ovector[2], NULL, 10, &this->btrfssubvolume_id, + NULL) != LONGINT_OK) goto unexpected_output; if (XSTRTOU64 (line + ovector[4], NULL, 10, &this->btrfssubvolume_top_level_id, NULL) != LONGINT_OK) @@ -553,17 +551,18 @@ do_btrfs_subvolume_list (const mountable_t *fs) #undef XSTRTOU64 this->btrfssubvolume_path = - strndup (line + ovector[6], ovector[7] - ovector[6]); + strndup (line + ovector[6], ovector[7] - ovector[6]); if (this->btrfssubvolume_path == NULL) goto error; } return ret; - error: +error: if (ret->guestfs_int_btrfssubvolume_list_val) { for (i = 0; i < nr_subvolumes; ++i) - free (ret->guestfs_int_btrfssubvolume_list_val[i].btrfssubvolume_path); + free ( + ret->guestfs_int_btrfssubvolume_list_val[i].btrfssubvolume_path); free (ret->guestfs_int_btrfssubvolume_list_val); } free (ret); @@ -639,7 +638,7 @@ do_btrfs_subvolume_get_default (const mountable_t *fs) goto error; } - error: +error: if (fs_buf && umount (fs_buf, fs) != 0) return -1; return ret; @@ -818,7 +817,6 @@ do_btrfs_device_delete (char *const *devices, const char *fs) return 0; } - #if defined(__GNUC__) && GUESTFS_GCC_VERSION >= 40800 /* gcc >= 4.8.0 */ #pragma GCC diagnostic pop #endif @@ -1041,9 +1039,8 @@ do_btrfs_subvolume_show (const char *subvolume) * <path> is btrfs root [in btrfs-progs < 4.4] * <path> is toplevel subvolume */ - if (out && - (strstr (out, "is btrfs root") != NULL || - strstr (out, "is toplevel subvolume") != NULL)) { + if (out && (strstr (out, "is btrfs root") != NULL || + strstr (out, "is toplevel subvolume") != NULL)) { reply_with_error ("%s is btrfs root", subvolume); return NULL; } @@ -1108,18 +1105,18 @@ do_btrfs_subvolume_show (const char *subvolume) p = analyze_line (p, &key, &value, ':'); while (key && !value) { - ss = realloc (ss, ss_len + strlen (key) + 1); - if (!ss) - return NULL; + ss = realloc (ss, ss_len + strlen (key) + 1); + if (!ss) + return NULL; - if (ss_len != 0) - ss[ss_len++] = ','; + if (ss_len != 0) + ss[ss_len++] = ','; - memcpy (ss + ss_len, key, strlen (key)); - ss_len += strlen (key); - ss[ss_len] = '\0'; + memcpy (ss + ss_len, key, strlen (key)); + ss_len += strlen (key); + ss[ss_len] = '\0'; - p = analyze_line (p, &key, &value, ':'); + p = analyze_line (p, &key, &value, ':'); } if (ss) { @@ -1181,7 +1178,7 @@ do_btrfs_quota_enable (const mountable_t *fs, int enable) goto error; } - error: +error: if (fs_buf && umount (fs_buf, fs) != 0) return -1; return r; @@ -1213,7 +1210,7 @@ do_btrfs_quota_rescan (const mountable_t *fs) goto error; } - error: +error: if (fs_buf && umount (fs_buf, fs) != 0) return -1; return r; @@ -1334,7 +1331,8 @@ test_btrfs_qgroup_show_raw_opt (void) CLEANUP_FREE char *err = NULL; CLEANUP_FREE char *out = NULL; - int r = commandr (&out, &err, str_btrfs, "qgroup", "show", "--help", NULL); + int r = + commandr (&out, &err, str_btrfs, "qgroup", "show", "--help", NULL); if (r == -1) { reply_with_error ("btrfs qgroup show --help: %s", err); @@ -1403,7 +1401,7 @@ do_btrfs_qgroup_show (const char *path) ret->guestfs_int_btrfsqgroup_list_len = nr_qgroups; ret->guestfs_int_btrfsqgroup_list_val = - calloc (nr_qgroups, sizeof (struct guestfs_int_btrfsqgroup)); + calloc (nr_qgroups, sizeof (struct guestfs_int_btrfsqgroup)); if (ret->guestfs_int_btrfsqgroup_list_val == NULL) { reply_with_perror ("calloc"); goto error; @@ -1412,19 +1410,20 @@ do_btrfs_qgroup_show (const char *path) for (i = 0; i < nr_qgroups; ++i) { char *line = lines[i + 2]; struct guestfs_int_btrfsqgroup *this = - &ret->guestfs_int_btrfsqgroup_list_val[i]; + &ret->guestfs_int_btrfsqgroup_list_val[i]; if (sscanf (line, "%m[0-9/] %" SCNu64 " %" SCNu64, &this->btrfsqgroup_id, &this->btrfsqgroup_rfer, &this->btrfsqgroup_excl) != 3) { - reply_with_error ("cannot parse output of qgroup show command: %s", line); + reply_with_error ("cannot parse output of qgroup show command: %s", + line); goto error; } } return ret; - error: +error: if (ret->guestfs_int_btrfsqgroup_list_val) { for (i = 0; i < nr_qgroups; ++i) free (ret->guestfs_int_btrfsqgroup_list_val[i].btrfsqgroup_id); @@ -1689,7 +1688,8 @@ do_btrfs_balance_resume (const char *path) /* Takes optional arguments, consult optargs_bitmask. */ int -do_btrfs_filesystem_defragment (const char *path, int flush, const char *compress) +do_btrfs_filesystem_defragment (const char *path, int flush, + const char *compress) { const size_t MAX_ARGS = 64; const char *argv[MAX_ARGS]; @@ -1710,9 +1710,12 @@ do_btrfs_filesystem_defragment (const char *path, int flush, const char *compres ADD_ARG (argv, i, "-r"); /* Optional arguments. */ - if ((optargs_bitmask & GUESTFS_BTRFS_FILESYSTEM_DEFRAGMENT_FLUSH_BITMASK) && flush) + if ((optargs_bitmask & + GUESTFS_BTRFS_FILESYSTEM_DEFRAGMENT_FLUSH_BITMASK) && + flush) ADD_ARG (argv, i, "-f"); - if (optargs_bitmask & GUESTFS_BTRFS_FILESYSTEM_DEFRAGMENT_COMPRESS_BITMASK) { + if (optargs_bitmask & + GUESTFS_BTRFS_FILESYSTEM_DEFRAGMENT_COMPRESS_BITMASK) { if (STREQ (compress, "zlib")) ADD_ARG (argv, i, "-czlib"); else if (STREQ (compress, "lzo")) @@ -1862,10 +1865,11 @@ do_btrfs_balance_status (const char *path) return ret; } - if (pcre_exec (re_btrfs_balance_status, - NULL, lines[0], strlen (lines[0]), 0, 0, - ovector, N_MATCH * 3) < 0) { - reply_with_error ("unexpected output from 'btrfs balance status' command: %s", lines[0]); + if (pcre_exec (re_btrfs_balance_status, NULL, lines[0], strlen (lines[0]), + 0, 0, ovector, N_MATCH * 3) < 0) { + reply_with_error ( + "unexpected output from 'btrfs balance status' command: %s", + lines[0]); goto error; } #undef N_MATCH @@ -1875,26 +1879,31 @@ do_btrfs_balance_status (const char *path) else if (STREQ (lines[0] + ovector[2], "paused")) ret->btrfsbalance_status = strdup ("paused"); else { - reply_with_error ("unexpected output from 'btrfs balance status' command: %s", lines[0]); + reply_with_error ( + "unexpected output from 'btrfs balance status' command: %s", + lines[0]); goto error; } if (nlines < 2) { - reply_with_error ("truncated output from 'btrfs balance status' command"); + reply_with_error ( + "truncated output from 'btrfs balance status' command"); goto error; } if (sscanf (lines[1], "%" SCNu64 " out of about %" SCNu64 - " chunks balanced (%" SCNu64 " considered), %" SCNu64 "%% left", + " chunks balanced (%" SCNu64 + " considered), %" SCNu64 "%% left", &ret->btrfsbalance_balanced, &ret->btrfsbalance_total, - &ret->btrfsbalance_considered, &ret->btrfsbalance_left) != 4) { + &ret->btrfsbalance_considered, + &ret->btrfsbalance_left) != 4) { reply_with_perror ("sscanf"); goto error; } return ret; - error: +error: free (ret->btrfsbalance_status); free (ret); @@ -1934,14 +1943,16 @@ do_btrfs_scrub_status (const char *path) } if (verbose) - fprintf (stderr, "output from 'btrfs scrub status -R %s' is:\n%s", path, out); + fprintf (stderr, "output from 'btrfs scrub status -R %s' is:\n%s", path, + out); lines = split_lines (out); if (!lines) return NULL; if (count_strings (lines) < 2) { - reply_with_error ("truncated output from 'btrfs scrub status -R' command"); + reply_with_error ( + "truncated output from 'btrfs scrub status -R' command"); return NULL; } @@ -1954,7 +1965,8 @@ do_btrfs_scrub_status (const char *path) /* Output of `btrfs scrub -R status' is like: * * scrub status for 346121d1-1847-40f8-9b7b-2bf3d539c68f - * scrub started at Mon Feb 2 17:39:38 2015, running for 93 seconds + * scrub started at Mon Feb 2 17:39:38 2015, running for 93 + * seconds * data_extents_scrubbed: 136670 * tree_extents_scrubbed: 30023 * data_bytes_scrubbed: 4474441728 @@ -1982,63 +1994,64 @@ do_btrfs_scrub_status (const char *path) else if (STRPREFIX (lines[i], "\tscrub started at")) continue; else if (sscanf (lines[i], "\tdata_extents_scrubbed: %" SCNu64, - &ret->btrfsscrub_data_extents_scrubbed) == 1) + &ret->btrfsscrub_data_extents_scrubbed) == 1) continue; else if (sscanf (lines[i], "\ttree_extents_scrubbed: %" SCNu64, - &ret->btrfsscrub_tree_extents_scrubbed) == 1) + &ret->btrfsscrub_tree_extents_scrubbed) == 1) continue; else if (sscanf (lines[i], "\tdata_bytes_scrubbed: %" SCNu64, - &ret->btrfsscrub_data_bytes_scrubbed) == 1) + &ret->btrfsscrub_data_bytes_scrubbed) == 1) continue; else if (sscanf (lines[i], "\ttree_bytes_scrubbed: %" SCNu64, - &ret->btrfsscrub_tree_bytes_scrubbed) == 1) + &ret->btrfsscrub_tree_bytes_scrubbed) == 1) continue; else if (sscanf (lines[i], "\tread_errors: %" SCNu64, - &ret->btrfsscrub_read_errors) == 1) + &ret->btrfsscrub_read_errors) == 1) continue; else if (sscanf (lines[i], "\tcsum_errors: %" SCNu64, - &ret->btrfsscrub_csum_errors) == 1) + &ret->btrfsscrub_csum_errors) == 1) continue; else if (sscanf (lines[i], "\tverify_errors: %" SCNu64, - &ret->btrfsscrub_verify_errors) == 1) + &ret->btrfsscrub_verify_errors) == 1) continue; else if (sscanf (lines[i], "\tno_csum: %" SCNu64, - &ret->btrfsscrub_no_csum) == 1) + &ret->btrfsscrub_no_csum) == 1) continue; else if (sscanf (lines[i], "\tcsum_discards: %" SCNu64, - &ret->btrfsscrub_csum_discards) == 1) + &ret->btrfsscrub_csum_discards) == 1) continue; else if (sscanf (lines[i], "\tsuper_errors: %" SCNu64, - &ret->btrfsscrub_super_errors) == 1) + &ret->btrfsscrub_super_errors) == 1) continue; else if (sscanf (lines[i], "\tmalloc_errors: %" SCNu64, - &ret->btrfsscrub_malloc_errors) == 1) + &ret->btrfsscrub_malloc_errors) == 1) continue; else if (sscanf (lines[i], "\tuncorrectable_errors: %" SCNu64, - &ret->btrfsscrub_uncorrectable_errors) == 1) + &ret->btrfsscrub_uncorrectable_errors) == 1) continue; else if (sscanf (lines[i], "\tunverified_errors: %" SCNu64, - &ret->btrfsscrub_unverified_errors) == 1) + &ret->btrfsscrub_unverified_errors) == 1) continue; else if (sscanf (lines[i], "\tcorrected_errors: %" SCNu64, - &ret->btrfsscrub_corrected_errors) == 1) + &ret->btrfsscrub_corrected_errors) == 1) continue; else if (sscanf (lines[i], "\tlast_physical: %" SCNu64, - &ret->btrfsscrub_last_physical) == 1) + &ret->btrfsscrub_last_physical) == 1) continue; else goto error; } if (i < 17) { - reply_with_error ("truncated output from 'btrfs scrub status -R' command"); + reply_with_error ( + "truncated output from 'btrfs scrub status -R' command"); free (ret); return NULL; } return ret; - error: +error: reply_with_error ("%s: could not parse btrfs scrub status.", lines[i]); free (ret); return NULL; @@ -2123,10 +2136,9 @@ do_btrfstune_enable_skinny_metadata_extent_refs (const char *device) #endif int -do_btrfs_image (char *const *sources, const char *image, - int compresslevel) +do_btrfs_image (char *const *sources, const char *image, int compresslevel) { - size_t nr_sources = count_strings (sources); + size_t nr_sources = count_strings (sources); const size_t MAX_ARGS = 64 + nr_sources; const char *argv[MAX_ARGS]; size_t i = 0, j; @@ -2141,8 +2153,8 @@ do_btrfs_image (char *const *sources, const char *image, ADD_ARG (argv, i, str_btrfsimage); - if ((optargs_bitmask & GUESTFS_BTRFS_IMAGE_COMPRESSLEVEL_BITMASK) - && compresslevel >= 0) { + if ((optargs_bitmask & GUESTFS_BTRFS_IMAGE_COMPRESSLEVEL_BITMASK) && + compresslevel >= 0) { snprintf (compresslevel_s, sizeof compresslevel_s, "%d", compresslevel); ADD_ARG (argv, i, "-c"); ADD_ARG (argv, i, compresslevel_s); @@ -2169,7 +2181,7 @@ do_btrfs_image (char *const *sources, const char *image, int do_btrfs_replace (const char *srcdev, const char *targetdev, - const char* mntpoint) + const char *mntpoint) { const size_t MAX_ARGS = 64; const char *argv[MAX_ARGS]; @@ -2256,8 +2268,8 @@ btrfs_minimum_size (const char *path) return -1; } - r = command (&out, &err, str_btrfs, "inspect-internal", - "min-dev-size", buf, NULL); + r = command (&out, &err, str_btrfs, "inspect-internal", "min-dev-size", + buf, NULL); if (r == -1) { reply_with_error ("%s", err); diff --git a/daemon/cap.c b/daemon/cap.c index 1d732c5..882141d 100644 --- a/daemon/cap.c +++ b/daemon/cap.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -86,7 +87,7 @@ do_cap_get_file (const char *path) } cap_free (r); - return ret; /* caller frees */ + return ret; /* caller frees */ } int @@ -97,7 +98,8 @@ do_cap_set_file (const char *path, const char *capstr) cap = cap_from_text (capstr); if (cap == NULL) { - reply_with_perror ("could not parse cap string: %s: cap_from_text", capstr); + reply_with_perror ("could not parse cap string: %s: cap_from_text", + capstr); return -1; } diff --git a/daemon/checksum.c b/daemon/checksum.c index 3045948..e8996f5 100644 --- a/daemon/checksum.c +++ b/daemon/checksum.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -29,15 +30,15 @@ #include "daemon.h" #include "actions.h" -GUESTFSD_EXT_CMD(str_find, find); -GUESTFSD_EXT_CMD(str_xargs, xargs); -GUESTFSD_EXT_CMD(str_cksum, cksum); -GUESTFSD_EXT_CMD(str_md5sum, md5sum); -GUESTFSD_EXT_CMD(str_sha1sum, sha1sum); -GUESTFSD_EXT_CMD(str_sha224sum, sha224sum); -GUESTFSD_EXT_CMD(str_sha256sum, sha256sum); -GUESTFSD_EXT_CMD(str_sha384sum, sha384sum); -GUESTFSD_EXT_CMD(str_sha512sum, sha512sum); +GUESTFSD_EXT_CMD (str_find, find); +GUESTFSD_EXT_CMD (str_xargs, xargs); +GUESTFSD_EXT_CMD (str_cksum, cksum); +GUESTFSD_EXT_CMD (str_md5sum, md5sum); +GUESTFSD_EXT_CMD (str_sha1sum, sha1sum); +GUESTFSD_EXT_CMD (str_sha224sum, sha224sum); +GUESTFSD_EXT_CMD (str_sha256sum, sha256sum); +GUESTFSD_EXT_CMD (str_sha384sum, sha384sum); +GUESTFSD_EXT_CMD (str_sha512sum, sha512sum); static const char * program_of_csum (const char *csumtype) @@ -57,7 +58,8 @@ program_of_csum (const char *csumtype) else if (STRCASEEQ (csumtype, "sha512")) return str_sha512sum; else { - reply_with_error ("unknown checksum type, expecting crc|md5|sha1|sha224|sha256|sha384|sha512"); + reply_with_error ("unknown checksum type, expecting " + "crc|md5|sha1|sha224|sha256|sha384|sha512"); return NULL; } } @@ -92,7 +94,7 @@ checksum (const char *csumtype, int fd) pulse_mode_end (); - return out; /* Caller frees. */ + return out; /* Caller frees. */ } char * @@ -101,7 +103,7 @@ do_checksum (const char *csumtype, const char *path) CLEANUP_CLOSE int fd = -1; CHROOT_IN; - fd = open (path, O_RDONLY|O_CLOEXEC); + fd = open (path, O_RDONLY | O_CLOEXEC); CHROOT_OUT; if (fd == -1) { @@ -117,7 +119,7 @@ do_checksum_device (const char *csumtype, const char *device) { CLEANUP_CLOSE int fd = -1; - fd = open (device, O_RDONLY|O_CLOEXEC); + fd = open (device, O_RDONLY | O_CLOEXEC); if (fd == -1) { reply_with_perror ("%s", device); return NULL; @@ -195,18 +197,18 @@ do_checksums_out (const char *csumtype, const char *dir) if (ferror (fp)) { fprintf (stderr, "fread: %s: %m\n", dir); - send_file_end (1); /* Cancel. */ + send_file_end (1); /* Cancel. */ pclose (fp); return -1; } if (pclose (fp) != 0) { fprintf (stderr, "pclose: %s: %m\n", dir); - send_file_end (1); /* Cancel. */ + send_file_end (1); /* Cancel. */ return -1; } - if (send_file_end (0)) /* Normal end of file. */ + if (send_file_end (0)) /* Normal end of file. */ return -1; return 0; diff --git a/daemon/cleanups.c b/daemon/cleanups.c index 5293ff2..e997fbc 100644 --- a/daemon/cleanups.c +++ b/daemon/cleanups.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -30,7 +31,7 @@ void cleanup_free (void *ptr) { - free (* (void **) ptr); + free (*(void **)ptr); } extern void free_strings (char **argv); @@ -38,13 +39,13 @@ extern void free_strings (char **argv); void cleanup_free_string_list (void *ptr) { - free_strings (* (char ***) ptr); + free_strings (*(char ***)ptr); } void cleanup_unlink_free (void *ptr) { - char *filename = * (char **) ptr; + char *filename = *(char **)ptr; if (filename) { unlink (filename); @@ -55,7 +56,7 @@ cleanup_unlink_free (void *ptr) void cleanup_close (void *ptr) { - int fd = * (int *) ptr; + int fd = *(int *)ptr; if (fd >= 0) close (fd); @@ -64,7 +65,7 @@ cleanup_close (void *ptr) void cleanup_aug_close (void *ptr) { - augeas *aug = * (augeas **) ptr; + augeas *aug = *(augeas **)ptr; if (aug != NULL) aug_close (aug); @@ -76,5 +77,5 @@ extern void free_stringsbuf (struct stringsbuf *sb); void cleanup_free_stringsbuf (void *ptr) { - free_stringsbuf ((struct stringsbuf *) ptr); + free_stringsbuf ((struct stringsbuf *)ptr); } diff --git a/daemon/cleanups.h b/daemon/cleanups.h index 6746e27..ef5b3ad 100644 --- a/daemon/cleanups.h +++ b/daemon/cleanups.h @@ -30,13 +30,14 @@ extern void cleanup_aug_close (void *ptr); extern void cleanup_free_stringsbuf (void *ptr); #ifdef HAVE_ATTRIBUTE_CLEANUP -#define CLEANUP_FREE __attribute__((cleanup(cleanup_free))) -#define CLEANUP_FREE_STRING_LIST \ - __attribute__((cleanup(cleanup_free_string_list))) -#define CLEANUP_UNLINK_FREE __attribute__((cleanup(cleanup_unlink_free))) -#define CLEANUP_CLOSE __attribute__((cleanup(cleanup_close))) -#define CLEANUP_AUG_CLOSE __attribute__((cleanup(cleanup_aug_close))) -#define CLEANUP_FREE_STRINGSBUF __attribute__((cleanup(cleanup_free_stringsbuf))) +#define CLEANUP_FREE __attribute__ ((cleanup (cleanup_free))) +#define CLEANUP_FREE_STRING_LIST \ + __attribute__ ((cleanup (cleanup_free_string_list))) +#define CLEANUP_UNLINK_FREE __attribute__ ((cleanup (cleanup_unlink_free))) +#define CLEANUP_CLOSE __attribute__ ((cleanup (cleanup_close))) +#define CLEANUP_AUG_CLOSE __attribute__ ((cleanup (cleanup_aug_close))) +#define CLEANUP_FREE_STRINGSBUF \ + __attribute__ ((cleanup (cleanup_free_stringsbuf))) #else #define CLEANUP_FREE #define CLEANUP_FREE_STRING_LIST diff --git a/daemon/cmp.c b/daemon/cmp.c index 61506b6..e9fa4f0 100644 --- a/daemon/cmp.c +++ b/daemon/cmp.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -27,7 +28,7 @@ #include "daemon.h" #include "actions.h" -GUESTFSD_EXT_CMD(str_cmp, cmp); +GUESTFSD_EXT_CMD (str_cmp, cmp); int do_equal (const char *file1, const char *file2) diff --git a/daemon/command.c b/daemon/command.c index 2423a4e..b0e317a 100644 --- a/daemon/command.c +++ b/daemon/command.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -65,7 +66,7 @@ commandf (char **stdoutput, char **stderror, unsigned flags, perror ("malloc"); return -1; } - argv[0] = (char *) name; + argv[0] = (char *)name; argv[1] = NULL; va_start (args, name); @@ -78,13 +79,13 @@ commandf (char **stdoutput, char **stderror, unsigned flags, return -1; } argv = p; - argv[i-2] = s; - argv[i-1] = NULL; + argv[i - 2] = s; + argv[i - 1] = NULL; } va_end (args); - r = commandvf (stdoutput, stderror, flags, (const char * const*) argv); + r = commandvf (stdoutput, stderror, flags, (const char *const *)argv); return r; } @@ -109,7 +110,7 @@ commandrf (char **stdoutput, char **stderror, unsigned flags, perror ("malloc"); return -1; } - argv[0] = (char *) name; + argv[0] = (char *)name; argv[1] = NULL; va_start (args, name); @@ -122,8 +123,8 @@ commandrf (char **stdoutput, char **stderror, unsigned flags, return -1; } argv = p; - argv[i-2] = s; - argv[i-1] = NULL; + argv[i - 2] = s; + argv[i - 1] = NULL; } va_end (args); @@ -140,7 +141,7 @@ commandvf (char **stdoutput, char **stderror, unsigned flags, { int r; - r = commandrvf (stdoutput, stderror, flags, (void *) argv); + r = commandrvf (stdoutput, stderror, flags, (void *)argv); if (r == 0) return 0; else @@ -179,12 +180,12 @@ commandvf (char **stdoutput, char **stderror, unsigned flags, */ int commandrvf (char **stdoutput, char **stderror, unsigned flags, - char const* const *argv) + char const *const *argv) { size_t so_size = 0, se_size = 0; int so_fd[2], se_fd[2]; unsigned flag_copy_stdin = flags & COMMAND_FLAG_CHROOT_COPY_FILE_TO_STDIN; - int flag_copy_fd = (int) (flags & COMMAND_FLAG_FD_MASK); + int flag_copy_fd = (int)(flags & COMMAND_FLAG_FD_MASK); unsigned flag_out_on_err = flags & COMMAND_FLAG_FOLD_STDOUT_ON_STDERR; pid_t pid; int r, quit, i; @@ -192,8 +193,10 @@ commandrvf (char **stdoutput, char **stderror, unsigned flags, char buf[256]; char *p; - if (stdoutput) *stdoutput = NULL; - if (stderror) *stderror = NULL; + if (stdoutput) + *stdoutput = NULL; + if (stderror) + *stderror = NULL; if (verbose) { printf ("commandrvf: stdout=%s stderr=%s flags=0x%x\n", @@ -218,9 +221,11 @@ commandrvf (char **stdoutput, char **stderror, unsigned flags, quote = 0; putchar (' '); - if (quote) putchar (quote); + if (quote) + putchar (quote); fputs (argv[i], stdout); - if (quote) putchar (quote); + if (quote) + putchar (quote); } putchar ('\n'); } @@ -245,7 +250,7 @@ commandrvf (char **stdoutput, char **stderror, unsigned flags, abort (); } - if (pid == 0) { /* Child process running the command. */ + if (pid == 0) { /* Child process running the command. */ signal (SIGALRM, SIG_DFL); signal (SIGPIPE, SIG_DFL); close (0); @@ -293,7 +298,7 @@ commandrvf (char **stdoutput, char **stderror, unsigned flags, _exit (EXIT_FAILURE); } - execvp (argv[0], (void *) argv); + execvp (argv[0], (void *)argv); perror (argv[0]); _exit (EXIT_FAILURE); } @@ -310,8 +315,8 @@ commandrvf (char **stdoutput, char **stderror, unsigned flags, while (quit < 2) { again: rset2 = rset; - r = select (MAX (so_fd[PIPE_READ], se_fd[PIPE_READ]) + 1, &rset2, - NULL, NULL, NULL); + r = select (MAX (so_fd[PIPE_READ], se_fd[PIPE_READ]) + 1, &rset2, NULL, + NULL, NULL); if (r == -1) { if (errno == EINTR) goto again; @@ -334,7 +339,8 @@ commandrvf (char **stdoutput, char **stderror, unsigned flags, } close (so_fd[PIPE_READ]); close (se_fd[PIPE_READ]); - if (flag_copy_stdin) close (flag_copy_fd); + if (flag_copy_stdin) + close (flag_copy_fd); waitpid (pid, NULL, 0); return -1; } @@ -345,7 +351,10 @@ commandrvf (char **stdoutput, char **stderror, unsigned flags, perror ("read"); goto quit; } - if (r == 0) { FD_CLR (so_fd[PIPE_READ], &rset); quit++; } + if (r == 0) { + FD_CLR (so_fd[PIPE_READ], &rset); + quit++; + } if (r > 0 && stdoutput) { so_size += r; @@ -365,7 +374,10 @@ commandrvf (char **stdoutput, char **stderror, unsigned flags, perror ("read"); goto quit; } - if (r == 0) { FD_CLR (se_fd[PIPE_READ], &rset); quit++; } + if (r == 0) { + FD_CLR (se_fd[PIPE_READ], &rset); + quit++; + } if (r > 0) { if (verbose) @@ -392,7 +404,7 @@ commandrvf (char **stdoutput, char **stderror, unsigned flags, * trailing \n characters from the error buffer (not from stdout). */ if (stdoutput) { - void *q = realloc (*stdoutput, so_size+1); + void *q = realloc (*stdoutput, so_size + 1); if (q == NULL) { perror ("realloc"); free (*stdoutput); @@ -402,7 +414,7 @@ commandrvf (char **stdoutput, char **stderror, unsigned flags, (*stdoutput)[so_size] = '\0'; } if (stderror) { - void *q = realloc (*stderror, se_size+1); + void *q = realloc (*stderror, se_size + 1); if (q == NULL) { perror ("realloc"); free (*stderror); @@ -410,7 +422,7 @@ commandrvf (char **stdoutput, char **stderror, unsigned flags, *stderror = q; if (*stderror) { (*stderror)[se_size] = '\0'; - while (se_size > 0 && (*stderror)[se_size-1] == '\n') { + while (se_size > 0 && (*stderror)[se_size - 1] == '\n') { se_size--; (*stderror)[se_size] = '\0'; } diff --git a/daemon/command.h b/daemon/command.h index 60f32b8..8df8209 100644 --- a/daemon/command.h +++ b/daemon/command.h @@ -19,23 +19,25 @@ #ifndef GUESTFSD_COMMAND_H #define GUESTFSD_COMMAND_H -#define command(out,err,name,...) commandf((out),(err),0,(name),__VA_ARGS__) -#define commandr(out,err,name,...) commandrf((out),(err),0,(name),__VA_ARGS__) -#define commandv(out,err,argv) commandvf((out),(err),0,(argv)) -#define commandrv(out,err,argv) commandrvf((out),(err),0,(argv)) +#define command(out, err, name, ...) \ + commandf ((out), (err), 0, (name), __VA_ARGS__) +#define commandr(out, err, name, ...) \ + commandrf ((out), (err), 0, (name), __VA_ARGS__) +#define commandv(out, err, argv) commandvf ((out), (err), 0, (argv)) +#define commandrv(out, err, argv) commandrvf ((out), (err), 0, (argv)) -#define COMMAND_FLAG_FD_MASK 0x0000ffff -#define COMMAND_FLAG_FOLD_STDOUT_ON_STDERR 0x00010000 +#define COMMAND_FLAG_FD_MASK 0x0000ffff +#define COMMAND_FLAG_FOLD_STDOUT_ON_STDERR 0x00010000 #define COMMAND_FLAG_CHROOT_COPY_FILE_TO_STDIN 0x00020000 -#define COMMAND_FLAG_DO_CHROOT 0x00040000 +#define COMMAND_FLAG_DO_CHROOT 0x00040000 extern int commandf (char **stdoutput, char **stderror, unsigned flags, - const char *name, ...) __attribute__((sentinel)); + const char *name, ...) __attribute__ ((sentinel)); extern int commandrf (char **stdoutput, char **stderror, unsigned flags, - const char *name, ...) __attribute__((sentinel)); + const char *name, ...) __attribute__ ((sentinel)); extern int commandvf (char **stdoutput, char **stderror, unsigned flags, char const *const *argv); extern int commandrvf (char **stdoutput, char **stderror, unsigned flags, - char const* const *argv); + char const *const *argv); #endif /* GUESTFSD_COMMAND_H */ diff --git a/daemon/compress.c b/daemon/compress.c index 36f4e66..69b34cf 100644 --- a/daemon/compress.c +++ b/daemon/compress.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -27,11 +28,11 @@ #include "daemon.h" #include "actions.h" -GUESTFSD_EXT_CMD(str_compress, compress); -GUESTFSD_EXT_CMD(str_gzip, gzip); -GUESTFSD_EXT_CMD(str_bzip2, bzip2); -GUESTFSD_EXT_CMD(str_xz, xz); -GUESTFSD_EXT_CMD(str_lzop, lzop); +GUESTFSD_EXT_CMD (str_compress, compress); +GUESTFSD_EXT_CMD (str_gzip, gzip); +GUESTFSD_EXT_CMD (str_bzip2, bzip2); +GUESTFSD_EXT_CMD (str_xz, xz); +GUESTFSD_EXT_CMD (str_lzop, lzop); /* Has one FileOut parameter. */ static int @@ -95,27 +96,30 @@ do_compressX_out (const char *file, const char *filter, int is_device) if (ferror (fp)) { fprintf (stderr, "fread: %s: %m\n", file); - send_file_end (1); /* Cancel. */ + send_file_end (1); /* Cancel. */ pclose (fp); return -1; } if (pclose (fp) != 0) { fprintf (stderr, "pclose: %s: %m\n", file); - send_file_end (1); /* Cancel. */ + send_file_end (1); /* Cancel. */ return -1; } - if (send_file_end (0)) /* Normal end of file. */ + if (send_file_end (0)) /* Normal end of file. */ return -1; return 0; } -#define CHECK_SUPPORTED(prog) \ - if (!prog_exists (prog)) \ - /* note: substring "not supported" must appear in this error */ \ - NOT_SUPPORTED (-1, "compression type %s is not supported, because external program '%s' is not available in the appliance", prog, prog); +#define CHECK_SUPPORTED(prog) \ + if (!prog_exists (prog)) \ + /* note: substring "not supported" must appear in this error */ \ + NOT_SUPPORTED (-1, "compression type %s is not supported, because " \ + "external program '%s' is not available in the " \ + "appliance", \ + prog, prog); static int get_filter (const char *ctype, int level, char *ret, size_t n) @@ -123,13 +127,13 @@ get_filter (const char *ctype, int level, char *ret, size_t n) if (STREQ (ctype, "compress")) { CHECK_SUPPORTED ("compress"); if (level != -1) { - reply_with_error ("compress: cannot use optional level parameter with this compression type"); + reply_with_error ("compress: cannot use optional level parameter " + "with this compression type"); return -1; } snprintf (ret, n, "%s -c", str_compress); return 0; - } - else if (STREQ (ctype, "gzip")) { + } else if (STREQ (ctype, "gzip")) { CHECK_SUPPORTED ("gzip"); if (level == -1) snprintf (ret, n, "%s -c", str_gzip); @@ -140,8 +144,7 @@ get_filter (const char *ctype, int level, char *ret, size_t n) return -1; } return 0; - } - else if (STREQ (ctype, "bzip2")) { + } else if (STREQ (ctype, "bzip2")) { CHECK_SUPPORTED ("bzip2"); if (level == -1) snprintf (ret, n, "%s -c", str_bzip2); @@ -152,8 +155,7 @@ get_filter (const char *ctype, int level, char *ret, size_t n) return -1; } return 0; - } - else if (STREQ (ctype, "xz")) { + } else if (STREQ (ctype, "xz")) { CHECK_SUPPORTED ("xz"); if (level == -1) snprintf (ret, n, "%s -c", str_xz); @@ -164,8 +166,7 @@ get_filter (const char *ctype, int level, char *ret, size_t n) return -1; } return 0; - } - else if (STREQ (ctype, "lzop")) { + } else if (STREQ (ctype, "lzop")) { CHECK_SUPPORTED ("lzop"); if (level == -1) snprintf (ret, n, "%s -c", str_lzop); diff --git a/daemon/copy.c b/daemon/copy.c index 2a6720b..ad3c260 100644 --- a/daemon/copy.c +++ b/daemon/copy.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -30,7 +31,7 @@ #include "actions.h" /* wrflags */ -#define DEST_DEVICE_FLAGS O_WRONLY|O_CLOEXEC, 0 +#define DEST_DEVICE_FLAGS O_WRONLY | O_CLOEXEC, 0 /* flags */ #define COPY_UNLINK_DEST_ON_FAILURE 1 @@ -42,10 +43,8 @@ /* Takes optional arguments, consult optargs_bitmask. */ static int -copy (const char *src, const char *src_display, - const char *dest, const char *dest_display, - int wrflags, int wrmode, - int flags, +copy (const char *src, const char *src_display, const char *dest, + const char *dest_display, int wrflags, int wrmode, int flags, int64_t srcoffset, int64_t destoffset, int64_t size, int sparse) { int64_t saved_size = size; @@ -66,17 +65,16 @@ copy (const char *src, const char *src_display, reply_with_error ("srcoffset is negative"); return -1; } - } - else + } else srcoffset = 0; - if ((optargs_bitmask & GUESTFS_COPY_DEVICE_TO_DEVICE_DESTOFFSET_BITMASK)) { + if ((optargs_bitmask & + GUESTFS_COPY_DEVICE_TO_DEVICE_DESTOFFSET_BITMASK)) { if (destoffset < 0) { reply_with_error ("destoffset is negative"); return -1; } - } - else + } else destoffset = 0; if ((optargs_bitmask & GUESTFS_COPY_DEVICE_TO_DEVICE_SIZE_BITMASK)) { @@ -84,21 +82,20 @@ copy (const char *src, const char *src_display, reply_with_error ("size is negative"); return -1; } - } - else + } else size = -1; - if (! (optargs_bitmask & GUESTFS_COPY_DEVICE_TO_DEVICE_SPARSE_BITMASK)) + if (!(optargs_bitmask & GUESTFS_COPY_DEVICE_TO_DEVICE_SPARSE_BITMASK)) sparse = 0; /* Open source and destination. */ - src_fd = open (src, O_RDONLY|O_CLOEXEC); + src_fd = open (src, O_RDONLY | O_CLOEXEC); if (src_fd == -1) { reply_with_perror ("%s", src_display); return -1; } - if (srcoffset > 0 && lseek (src_fd, srcoffset, SEEK_SET) == (off_t) -1) { + if (srcoffset > 0 && lseek (src_fd, srcoffset, SEEK_SET) == (off_t)-1) { reply_with_perror ("lseek: %s", src_display); close (src_fd); return -1; @@ -111,7 +108,8 @@ copy (const char *src, const char *src_display, return -1; } - if (destoffset > 0 && lseek (dest_fd, destoffset, SEEK_SET) == (off_t) -1) { + if (destoffset > 0 && + lseek (dest_fd, destoffset, SEEK_SET) == (off_t)-1) { reply_with_perror ("lseek: %s", dest_display); close (src_fd); close (dest_fd); @@ -161,7 +159,8 @@ copy (const char *src, const char *src_display, if (size == -1) pulse_mode_cancel (); errno = err; - reply_with_perror ("%s: seek (because of sparse flag)", dest_display); + reply_with_perror ("%s: seek (because of sparse flag)", + dest_display); close (src_fd); close (dest_fd); if (flags & COPY_UNLINK_DEST_ON_FAILURE) @@ -187,7 +186,8 @@ copy (const char *src, const char *src_display, if (size != -1) { size -= r; - notify_progress ((uint64_t) (saved_size - size), (uint64_t) saved_size); + notify_progress ((uint64_t) (saved_size - size), + (uint64_t)saved_size); } } @@ -214,16 +214,16 @@ copy (const char *src, const char *src_display, int do_copy_device_to_device (const char *src, const char *dest, - int64_t srcoffset, int64_t destoffset, int64_t size, - int sparse, int append) + int64_t srcoffset, int64_t destoffset, + int64_t size, int sparse, int append) { if ((optargs_bitmask & GUESTFS_COPY_DEVICE_TO_DEVICE_APPEND_BITMASK) && append) { reply_with_error ("the append flag cannot be set for this call"); return -1; } - return copy (src, src, dest, dest, DEST_DEVICE_FLAGS, 0, - srcoffset, destoffset, size, sparse); + return copy (src, src, dest, dest, DEST_DEVICE_FLAGS, 0, srcoffset, + destoffset, size, sparse); } int @@ -232,7 +232,7 @@ do_copy_device_to_file (const char *src, const char *dest, int sparse, int append) { CLEANUP_FREE char *dest_buf = sysroot_path (dest); - int wrflags = O_WRONLY|O_CREAT|O_NOCTTY|O_CLOEXEC; + int wrflags = O_WRONLY | O_CREAT | O_NOCTTY | O_CLOEXEC; if (!dest_buf) { reply_with_perror ("malloc"); @@ -245,8 +245,8 @@ do_copy_device_to_file (const char *src, const char *dest, else wrflags |= O_TRUNC; - return copy (src, src, dest_buf, dest, wrflags, 0666, 0, - srcoffset, destoffset, size, sparse); + return copy (src, src, dest_buf, dest, wrflags, 0666, 0, srcoffset, + destoffset, size, sparse); } int @@ -267,17 +267,17 @@ do_copy_file_to_device (const char *src, const char *dest, return -1; } - return copy (src_buf, src, dest, dest, DEST_DEVICE_FLAGS, 0, - srcoffset, destoffset, size, sparse); + return copy (src_buf, src, dest, dest, DEST_DEVICE_FLAGS, 0, srcoffset, + destoffset, size, sparse); } int -do_copy_file_to_file (const char *src, const char *dest, - int64_t srcoffset, int64_t destoffset, int64_t size, - int sparse, int append) +do_copy_file_to_file (const char *src, const char *dest, int64_t srcoffset, + int64_t destoffset, int64_t size, int sparse, + int append) { CLEANUP_FREE char *src_buf = NULL, *dest_buf = NULL; - int wrflags = O_WRONLY|O_CREAT|O_NOCTTY|O_CLOEXEC; + int wrflags = O_WRONLY | O_CREAT | O_NOCTTY | O_CLOEXEC; src_buf = sysroot_path (src); if (!src_buf) { @@ -298,6 +298,6 @@ do_copy_file_to_file (const char *src, const char *dest, wrflags |= O_TRUNC; return copy (src_buf, src, dest_buf, dest, wrflags, 0666, - COPY_UNLINK_DEST_ON_FAILURE, - srcoffset, destoffset, size, sparse); + COPY_UNLINK_DEST_ON_FAILURE, srcoffset, destoffset, size, + sparse); } diff --git a/daemon/cpio.c b/daemon/cpio.c index d1459b1..929692c 100644 --- a/daemon/cpio.c +++ b/daemon/cpio.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -33,7 +34,7 @@ #include "actions.h" #include "optgroups.h" -GUESTFSD_EXT_CMD(str_cpio, cpio); +GUESTFSD_EXT_CMD (str_cpio, cpio); /* Has one FileOut parameter. */ /* Takes optional arguments, consult optargs_bitmask. */ @@ -65,7 +66,7 @@ do_cpio_out (const char *dir, const char *format) return -1; } - if (! S_ISDIR (statbuf.st_mode)) { + if (!S_ISDIR (statbuf.st_mode)) { reply_with_error ("%s: not a directory", dir); return -1; } @@ -76,14 +77,12 @@ do_cpio_out (const char *dir, const char *format) reply_with_error ("%s: format must be 'newc' or 'crc'", format); return -1; } - } - else + } else format = "newc"; - if (asprintf_nowarn (&cmd, "cd %Q && find -print0 | %s -0 -o -H %s --quiet", - buf, - str_cpio, - format) == -1) { + if (asprintf_nowarn (&cmd, + "cd %Q && find -print0 | %s -0 -o -H %s --quiet", + buf, str_cpio, format) == -1) { reply_with_perror ("asprintf"); return -1; } @@ -112,18 +111,18 @@ do_cpio_out (const char *dir, const char *format) if (ferror (fp)) { fprintf (stderr, "fread: %s: %m\n", dir); - send_file_end (1); /* Cancel. */ + send_file_end (1); /* Cancel. */ pclose (fp); return -1; } if (pclose (fp) != 0) { fprintf (stderr, "pclose: %s: %m\n", dir); - send_file_end (1); /* Cancel. */ + send_file_end (1); /* Cancel. */ return -1; } - if (send_file_end (0)) /* Normal end of file. */ + if (send_file_end (0)) /* Normal end of file. */ return -1; return 0; diff --git a/daemon/cpmv.c b/daemon/cpmv.c index 390b09f..d851ee8 100644 --- a/daemon/cpmv.c +++ b/daemon/cpmv.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -25,10 +26,11 @@ #include "daemon.h" #include "actions.h" -GUESTFSD_EXT_CMD(str_cp, cp); -GUESTFSD_EXT_CMD(str_mv, mv); +GUESTFSD_EXT_CMD (str_cp, cp); +GUESTFSD_EXT_CMD (str_mv, mv); -static int cpmv_cmd (const char *cmd, const char *flags, const char *src, const char *dest); +static int cpmv_cmd (const char *cmd, const char *flags, const char *src, + const char *dest); int do_cp (const char *src, const char *dest) @@ -55,7 +57,8 @@ do_mv (const char *src, const char *dest) } static int -cpmv_cmd (const char *cmd, const char *flags, const char *src, const char *dest) +cpmv_cmd (const char *cmd, const char *flags, const char *src, + const char *dest) { CLEANUP_FREE char *srcbuf = NULL, *destbuf = NULL; CLEANUP_FREE char *err = NULL; diff --git a/daemon/daemon.h b/daemon/daemon.h index 994b47a..c88e6fd 100644 --- a/daemon/daemon.h +++ b/daemon/daemon.h @@ -37,7 +37,8 @@ /* Mountables */ -typedef struct { +typedef struct +{ mountable_type_t type; char *device; char *volume; @@ -61,26 +62,27 @@ extern char *sysroot_realpath (const char *path); extern int is_root_device (const char *device); extern int xwrite (int sock, const void *buf, size_t len) - __attribute__((__warn_unused_result__)); + __attribute__ ((__warn_unused_result__)); extern int xread (int sock, void *buf, size_t len) - __attribute__((__warn_unused_result__)); + __attribute__ ((__warn_unused_result__)); extern char *mountable_to_string (const mountable_t *mountable); /*-- in mount.c --*/ extern int mount_vfs_nochroot (const char *options, const char *vfstype, - const mountable_t *mountable, - const char *mp, const char *user_mp); + const mountable_t *mountable, const char *mp, + const char *user_mp); /* Growable strings buffer. */ -struct stringsbuf { +struct stringsbuf +{ char **argv; size_t size; size_t alloc; }; -#define DECLARE_STRINGSBUF(v) \ - struct stringsbuf (v) = { .argv = NULL, .size = 0, .alloc = 0 } +#define DECLARE_STRINGSBUF(v) \ + struct stringsbuf (v) = {.argv = NULL, .size = 0, .alloc = 0 } /* Append a string to the strings buffer. * @@ -95,7 +97,7 @@ struct stringsbuf { extern int add_string_nodup (struct stringsbuf *sb, char *str); extern int add_string (struct stringsbuf *sb, const char *str); extern int add_sprintf (struct stringsbuf *sb, const char *fs, ...) - __attribute__((format (printf,2,3))); + __attribute__ ((format (printf, 2, 3))); extern int end_stringsbuf (struct stringsbuf *sb); extern char **take_stringsbuf (struct stringsbuf *sb); extern void free_stringsbuf (struct stringsbuf *sb); @@ -120,8 +122,10 @@ extern char **split_lines (char *str); extern char **empty_list (void); -#define __external_command __attribute__((__section__(".guestfsd_ext_cmds"))) -#define GUESTFSD_EXT_CMD(___ext_cmd_var, ___ext_cmd_str) static const char ___ext_cmd_var[] __external_command = #___ext_cmd_str +#define __external_command \ + __attribute__ ((__section__(".guestfsd_ext_cmds"))) +#define GUESTFSD_EXT_CMD(___ext_cmd_var, ___ext_cmd_str) \ + static const char ___ext_cmd_var[] __external_command = #___ext_cmd_str extern int is_power_of_2 (unsigned long v); @@ -161,9 +165,10 @@ extern guestfs_int_lvm_vg_list *parse_command_line_vgs (void); extern guestfs_int_lvm_lv_list *parse_command_line_lvs (void); /*-- in optgroups.c (auto-generated) --*/ -struct optgroup { - const char *group; /* Name of the optional group. */ - int (*available) (void); /* Function to test availability. */ +struct optgroup +{ + const char *group; /* Name of the optional group. */ + int (*available) (void); /* Function to test availability. */ }; extern struct optgroup optgroups[]; @@ -213,7 +218,7 @@ extern void hivex_finalize (void); extern void journal_finalize (void); /*-- in proto.c --*/ -extern void main_loop (int sock) __attribute__((noreturn)); +extern void main_loop (int sock) __attribute__ ((noreturn)); /*-- in xattr.c --*/ extern int copy_xattrs (const char *src, const char *dest); @@ -227,9 +232,12 @@ extern int xfs_set_label (const char *device, const char *label); extern int64_t xfs_minimum_size (const char *path); /*-- debug-bmap.c --*/ -extern char *debug_bmap (const char *subcmd, size_t argc, char *const *const argv); -extern char *debug_bmap_file (const char *subcmd, size_t argc, char *const *const argv); -extern char *debug_bmap_device (const char *subcmd, size_t argc, char *const *const argv); +extern char *debug_bmap (const char *subcmd, size_t argc, + char *const *const argv); +extern char *debug_bmap_file (const char *subcmd, size_t argc, + char *const *const argv); +extern char *debug_bmap_device (const char *subcmd, size_t argc, + char *const *const argv); /*-- in btrfs.c --*/ extern char *btrfs_get_label (const char *device); @@ -251,17 +259,18 @@ extern int swap_set_uuid (const char *device, const char *uuid); * it is added automatically by the client-side RPC stubs. */ extern void reply_with_error_errno (int err, const char *fs, ...) - __attribute__((format (printf,2,3))); + __attribute__ ((format (printf, 2, 3))); extern void reply_with_perror_errno (int err, const char *fs, ...) - __attribute__((format (printf,2,3))); -#define reply_with_error(...) reply_with_error_errno(0, __VA_ARGS__) -#define reply_with_perror(...) reply_with_perror_errno(errno, __VA_ARGS__) -#define reply_with_unavailable_feature(feature) \ - reply_with_error_errno (ENOTSUP, \ - "feature '%s' is not available in this\n" \ - "build of libguestfs. Read 'AVAILABILITY' in the guestfs(3) man page for\n" \ - "how to check for the availability of features.", \ - feature) + __attribute__ ((format (printf, 2, 3))); +#define reply_with_error(...) reply_with_error_errno (0, __VA_ARGS__) +#define reply_with_perror(...) reply_with_perror_errno (errno, __VA_ARGS__) +#define reply_with_unavailable_feature(feature) \ + reply_with_error_errno ( \ + ENOTSUP, "feature '%s' is not available in this\n" \ + "build of libguestfs. Read 'AVAILABILITY' in the " \ + "guestfs(3) man page for\n" \ + "how to check for the availability of features.", \ + feature) /* daemon functions that receive files (FileIn) should call * receive_file for each FileIn parameter. @@ -310,7 +319,8 @@ extern void pulse_mode_cancel (void); /* Send a progress message without rate-limiting. This is just * for debugging - DON'T use it in regular code! */ -extern void notify_progress_no_ratelimit (uint64_t position, uint64_t total, const struct timeval *now); +extern void notify_progress_no_ratelimit (uint64_t position, uint64_t total, + const struct timeval *now); /* Return true iff the buffer is all zero bytes. * @@ -333,38 +343,42 @@ is_zero (const char *buffer, size_t size) /* Helper for building up short lists of arguments. Your code has to * define MAX_ARGS to a suitable value. */ -#define ADD_ARG(argv,i,v) \ - do { \ - if ((i) >= MAX_ARGS) { \ - fprintf (stderr, "%s: %d: internal error: exceeded MAX_ARGS (%zu) when constructing the command line\n", __FILE__, __LINE__, (size_t) MAX_ARGS); \ - abort (); \ - } \ - (argv)[(i)++] = (v); \ +#define ADD_ARG(argv, i, v) \ + do { \ + if ((i) >= MAX_ARGS) { \ + fprintf (stderr, "%s: %d: internal error: exceeded MAX_ARGS (%zu) " \ + "when constructing the command line\n", \ + __FILE__, __LINE__, (size_t)MAX_ARGS); \ + abort (); \ + } \ + (argv)[(i)++] = (v); \ } while (0) /* Helper for functions that need a root filesystem mounted. * NB. Cannot be used for FileIn functions. */ -#define NEED_ROOT(cancel_stmt,fail_stmt) \ - do { \ - if (!is_root_mounted ()) { \ - cancel_stmt; \ - reply_with_error ("%s: you must call 'mount' first to mount the root filesystem", __func__); \ - fail_stmt; \ - } \ - } \ - while (0) +#define NEED_ROOT(cancel_stmt, fail_stmt) \ + do { \ + if (!is_root_mounted ()) { \ + cancel_stmt; \ + reply_with_error ( \ + "%s: you must call 'mount' first to mount the root filesystem", \ + __func__); \ + fail_stmt; \ + } \ + } while (0) /* Helper for functions that need an argument ("path") that is absolute. * NB. Cannot be used for FileIn functions. */ -#define ABS_PATH(path,cancel_stmt,fail_stmt) \ - do { \ - if ((path)[0] != '/') { \ - cancel_stmt; \ - reply_with_error ("%s: path must start with a / character", __func__); \ - fail_stmt; \ - } \ +#define ABS_PATH(path, cancel_stmt, fail_stmt) \ + do { \ + if ((path)[0] != '/') { \ + cancel_stmt; \ + reply_with_error ("%s: path must start with a / character", \ + __func__); \ + fail_stmt; \ + } \ } while (0) /* NB: @@ -374,58 +388,55 @@ is_zero (const char *buffer, size_t size) * (3) All paths specified must be absolute. * (4) Neither macro affects errno. */ -#define CHROOT_IN \ - do { \ - if (sysroot_len > 0) { \ - int __old_errno = errno; \ - if (chroot (sysroot) == -1) \ - perror ("CHROOT_IN: sysroot"); \ - errno = __old_errno; \ - } \ +#define CHROOT_IN \ + do { \ + if (sysroot_len > 0) { \ + int __old_errno = errno; \ + if (chroot (sysroot) == -1) \ + perror ("CHROOT_IN: sysroot"); \ + errno = __old_errno; \ + } \ } while (0) -#define CHROOT_OUT \ - do { \ - if (sysroot_len > 0) { \ - int __old_errno = errno; \ - if (chroot (".") == -1) \ - perror ("CHROOT_OUT: ."); \ - errno = __old_errno; \ - } \ +#define CHROOT_OUT \ + do { \ + if (sysroot_len > 0) { \ + int __old_errno = errno; \ + if (chroot (".") == -1) \ + perror ("CHROOT_OUT: ."); \ + errno = __old_errno; \ + } \ } while (0) /* Marks functions which are not implemented. * NB. Cannot be used for FileIn functions. */ -#define XXX_NOT_IMPL(errcode) \ - do { \ - reply_with_error ("%s: function not implemented", __func__); \ - return (errcode); \ - } \ - while (0) +#define XXX_NOT_IMPL(errcode) \ + do { \ + reply_with_error ("%s: function not implemented", __func__); \ + return (errcode); \ + } while (0) /* Marks functions which are not supported. */ -#define NOT_SUPPORTED(errcode,...) \ - do { \ - reply_with_error_errno (ENOTSUP, __VA_ARGS__); \ - return (errcode); \ - } \ - while (0) +#define NOT_SUPPORTED(errcode, ...) \ + do { \ + reply_with_error_errno (ENOTSUP, __VA_ARGS__); \ + return (errcode); \ + } while (0) /* Calls reply_with_error, but includes the Augeas error details. */ -#define AUGEAS_ERROR(fs,...) \ - do { \ - int code = aug_error (aug); \ - if (code == AUG_ENOMEM) \ - reply_with_error (fs ": augeas out of memory", ##__VA_ARGS__); \ - else { \ - const char *message = aug_error_message (aug); \ - const char *minor = aug_error_minor_message (aug); \ - const char *details = aug_error_details (aug); \ - reply_with_error (fs ": %s%s%s%s%s", ##__VA_ARGS__, \ - message, \ - minor ? ": " : "", minor ? minor : "", \ - details ? ": " : "", details ? details : ""); \ - } \ +#define AUGEAS_ERROR(fs, ...) \ + do { \ + int code = aug_error (aug); \ + if (code == AUG_ENOMEM) \ + reply_with_error (fs ": augeas out of memory", ##__VA_ARGS__); \ + else { \ + const char *message = aug_error_message (aug); \ + const char *minor = aug_error_minor_message (aug); \ + const char *details = aug_error_details (aug); \ + reply_with_error (fs ": %s%s%s%s%s", ##__VA_ARGS__, message, \ + minor ? ": " : "", minor ? minor : "", \ + details ? ": " : "", details ? details : ""); \ + } \ } while (0) #endif /* GUESTFSD_DAEMON_H */ diff --git a/daemon/dd.c b/daemon/dd.c index d0390d8..e3bd72a 100644 --- a/daemon/dd.c +++ b/daemon/dd.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -27,7 +28,7 @@ #include "daemon.h" #include "actions.h" -GUESTFSD_EXT_CMD(str_dd, dd); +GUESTFSD_EXT_CMD (str_dd, dd); int do_dd (const char *src, const char *dest) @@ -97,7 +98,8 @@ do_copy_size (const char *src, const char *dest, int64_t ssize) close (src_fd); return -1; } - dest_fd = open (buf, O_WRONLY|O_CREAT|O_TRUNC|O_NOCTTY|O_CLOEXEC, 0666); + dest_fd = open ( + buf, O_WRONLY | O_CREAT | O_TRUNC | O_NOCTTY | O_CLOEXEC, 0666); } if (dest_fd == -1) { reply_with_perror ("%s", dest); @@ -105,7 +107,7 @@ do_copy_size (const char *src, const char *dest, int64_t ssize) return -1; } - uint64_t position = 0, size = (uint64_t) ssize; + uint64_t position = 0, size = (uint64_t)ssize; CLEANUP_FREE char *buf = NULL; buf = malloc (BUFSIZ); if (buf == NULL) { @@ -122,7 +124,7 @@ do_copy_size (const char *src, const char *dest, int64_t ssize) if (n64 > BUFSIZ) n = BUFSIZ; else - n = (size_t) n64; /* safe because of if condition */ + n = (size_t)n64; /* safe because of if condition */ ssize_t r = read (src_fd, buf, n); if (r == -1) { @@ -146,7 +148,7 @@ do_copy_size (const char *src, const char *dest, int64_t ssize) } position += r; - notify_progress ((uint64_t) position, (uint64_t) size); + notify_progress ((uint64_t)position, (uint64_t)size); } if (close (src_fd) == -1) { diff --git a/daemon/debug-bmap.c b/daemon/debug-bmap.c index fcf3ede..6e79681 100644 --- a/daemon/debug-bmap.c +++ b/daemon/debug-bmap.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ /* This file provides some interim APIs for virt-bmap. They will @@ -43,7 +44,7 @@ static int fd = -1; static DIR *dir = NULL; static struct stat statbuf; -static void bmap_finalize (void) __attribute__((destructor)); +static void bmap_finalize (void) __attribute__ ((destructor)); static void bmap_finalize (void) { @@ -76,8 +77,7 @@ bmap_prepare (const char *path, const char *orig_path) reply_with_perror ("opendir: %s", orig_path); return NULL; } - } - else { + } else { /* Open a regular file. */ fd = open (path, O_RDONLY | O_CLOEXEC); if (fd == -1) { @@ -85,10 +85,8 @@ bmap_prepare (const char *path, const char *orig_path) return NULL; } - posix_fadvise (fd, 0, 0, - POSIX_FADV_SEQUENTIAL | - POSIX_FADV_NOREUSE | - POSIX_FADV_DONTNEED); + posix_fadvise (fd, 0, 0, POSIX_FADV_SEQUENTIAL | POSIX_FADV_NOREUSE | + POSIX_FADV_DONTNEED); } ret = strdup ("ok"); @@ -160,8 +158,7 @@ debug_bmap (const char *subcmd, size_t argc, char *const *const argv) reply_with_perror ("ioctl: BLKGETSIZE64"); return NULL; } - } - else + } else n = statbuf.st_size; while (n > 0) { @@ -187,7 +184,8 @@ debug_bmap (const char *subcmd, size_t argc, char *const *const argv) for (;;) { errno = 0; d = readdir (dir); - if (!d) break; + if (!d) + break; } /* Check readdir didn't fail */ diff --git a/daemon/debug.c b/daemon/debug.c index dac6482..d84ec37 100644 --- a/daemon/debug.c +++ b/daemon/debug.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -33,15 +34,15 @@ #include "daemon.h" #include "actions.h" -GUESTFSD_EXT_CMD(str_printenv, printenv); -GUESTFSD_EXT_CMD(str_ldd, ldd); -GUESTFSD_EXT_CMD(str_ls, ls); -GUESTFSD_EXT_CMD(str_find, find); -GUESTFSD_EXT_CMD(str_xargs, xargs); -GUESTFSD_EXT_CMD(str_file, file); -GUESTFSD_EXT_CMD(str_grep, grep); -GUESTFSD_EXT_CMD(str_gawk, gawk); -GUESTFSD_EXT_CMD(str_sh, sh); +GUESTFSD_EXT_CMD (str_printenv, printenv); +GUESTFSD_EXT_CMD (str_ldd, ldd); +GUESTFSD_EXT_CMD (str_ls, ls); +GUESTFSD_EXT_CMD (str_find, find); +GUESTFSD_EXT_CMD (str_xargs, xargs); +GUESTFSD_EXT_CMD (str_file, file); +GUESTFSD_EXT_CMD (str_grep, grep); +GUESTFSD_EXT_CMD (str_gawk, gawk); +GUESTFSD_EXT_CMD (str_sh, sh); /* This command exposes debugging information, internals and * status. There is no comprehensive documentation for this @@ -56,53 +57,69 @@ GUESTFSD_EXT_CMD(str_sh, sh); * and may change at any time. */ -struct cmd { +struct cmd +{ const char *cmd; - char * (*f) (const char *subcmd, size_t argc, char *const *const argv); + char *(*f) (const char *subcmd, size_t argc, char *const *const argv); }; -static char *debug_help (const char *subcmd, size_t argc, char *const *const argv); -static char *debug_binaries (const char *subcmd, size_t argc, char *const *const argv); -static char *debug_core_pattern (const char *subcmd, size_t argc, char *const *const argv); -static char *debug_device_speed (const char *subcmd, size_t argc, char *const *const argv); -static char *debug_env (const char *subcmd, size_t argc, char *const *const argv); -static char *debug_error (const char *subcmd, size_t argc, char *const *const argv); -static char *debug_fds (const char *subcmd, size_t argc, char *const *const argv); -static char *debug_ldd (const char *subcmd, size_t argc, char *const *const argv); -static char *debug_ls (const char *subcmd, size_t argc, char *const *const argv); -static char *debug_ll (const char *subcmd, size_t argc, char *const *const argv); -static char *debug_print (const char *subcmd, size_t argc, char *const *const argv); -static char *debug_progress (const char *subcmd, size_t argc, char *const *const argv); -static char *debug_qtrace (const char *subcmd, size_t argc, char *const *const argv); -static char *debug_segv (const char *subcmd, size_t argc, char *const *const argv); -static char *debug_setenv (const char *subcmd, size_t argc, char *const *const argv); -static char *debug_sh (const char *subcmd, size_t argc, char *const *const argv); -static char *debug_spew (const char *subcmd, size_t argc, char *const *const argv); +static char *debug_help (const char *subcmd, size_t argc, + char *const *const argv); +static char *debug_binaries (const char *subcmd, size_t argc, + char *const *const argv); +static char *debug_core_pattern (const char *subcmd, size_t argc, + char *const *const argv); +static char *debug_device_speed (const char *subcmd, size_t argc, + char *const *const argv); +static char *debug_env (const char *subcmd, size_t argc, + char *const *const argv); +static char *debug_error (const char *subcmd, size_t argc, + char *const *const argv); +static char *debug_fds (const char *subcmd, size_t argc, + char *const *const argv); +static char *debug_ldd (const char *subcmd, size_t argc, + char *const *const argv); +static char *debug_ls (const char *subcmd, size_t argc, + char *const *const argv); +static char *debug_ll (const char *subcmd, size_t argc, + char *const *const argv); +static char *debug_print (const char *subcmd, size_t argc, + char *const *const argv); +static char *debug_progress (const char *subcmd, size_t argc, + char *const *const argv); +static char *debug_qtrace (const char *subcmd, size_t argc, + char *const *const argv); +static char *debug_segv (const char *subcmd, size_t argc, + char *const *const argv); +static char *debug_setenv (const char *subcmd, size_t argc, + char *const *const argv); +static char *debug_sh (const char *subcmd, size_t argc, + char *const *const argv); +static char *debug_spew (const char *subcmd, size_t argc, + char *const *const argv); static void deliberately_cause_a_segfault (void); -static struct cmd cmds[] = { - { "help", debug_help }, - { "binaries", debug_binaries }, - { "bmap", debug_bmap }, - { "bmap_device", debug_bmap_device }, - { "bmap_file", debug_bmap_file }, - { "core_pattern", debug_core_pattern }, - { "device_speed", debug_device_speed }, - { "env", debug_env }, - { "error", debug_error }, - { "fds", debug_fds }, - { "ldd", debug_ldd }, - { "ls", debug_ls }, - { "ll", debug_ll }, - { "print", debug_print }, - { "progress", debug_progress }, - { "qtrace", debug_qtrace }, - { "segv", debug_segv }, - { "setenv", debug_setenv }, - { "sh", debug_sh }, - { "spew", debug_spew }, - { NULL, NULL } -}; +static struct cmd cmds[] = { { "help", debug_help }, + { "binaries", debug_binaries }, + { "bmap", debug_bmap }, + { "bmap_device", debug_bmap_device }, + { "bmap_file", debug_bmap_file }, + { "core_pattern", debug_core_pattern }, + { "device_speed", debug_device_speed }, + { "env", debug_env }, + { "error", debug_error }, + { "fds", debug_fds }, + { "ldd", debug_ldd }, + { "ls", debug_ls }, + { "ll", debug_ll }, + { "print", debug_print }, + { "progress", debug_progress }, + { "qtrace", debug_qtrace }, + { "segv", debug_segv }, + { "setenv", debug_setenv }, + { "sh", debug_sh }, + { "spew", debug_spew }, + { NULL, NULL } }; char * do_debug (const char *subcmd, char *const *argv) @@ -136,7 +153,7 @@ debug_help (const char *subcmd, size_t argc, char *const *const argv) len = strlen (r); for (i = 0; cmds[i].cmd != NULL; ++i) { len += strlen (cmds[i].cmd) + 1; /* space + new command */ - p = realloc (r, len + 1); /* +1 for the final NUL */ + p = realloc (r, len + 1); /* +1 for the final NUL */ if (p == NULL) { reply_with_perror ("realloc"); free (r); @@ -260,7 +277,7 @@ debug_sh (const char *subcmd, size_t argc, char *const *const argv) cmd[j] = ' '; j++; } - cmd[j-1] = '\0'; + cmd[j - 1] = '\0'; /* Set up some environment variables. */ setenv ("root", sysroot, 1); @@ -285,7 +302,8 @@ debug_sh (const char *subcmd, size_t argc, char *const *const argv) return err; } -/* Print the environment that commands get (by running external printenv). */ +/* Print the environment that commands get (by running external printenv). + */ static char * debug_env (const char *subcmd, size_t argc, char *const *const argv) { @@ -334,7 +352,8 @@ debug_error (const char *subcmd, size_t argc, char *const *const argv) if (argc != 1) { error: - reply_with_error ("debug error: expecting one arg: length of error message"); + reply_with_error ( + "debug error: expecting one arg: length of error message"); return NULL; } @@ -374,11 +393,10 @@ debug_binaries (const char *subcmd, size_t argc, char *const *const argv) CLEANUP_FREE char *err = NULL; char cmd[256]; - snprintf (cmd, sizeof (cmd), - "%s / -xdev -type f -executable " - "| %s %s -i " - "| %s application/x-executable " - "| %s -F: '{print $1}'", + snprintf (cmd, sizeof (cmd), "%s / -xdev -type f -executable " + "| %s %s -i " + "| %s application/x-executable " + "| %s -F: '{print $1}'", str_find, str_xargs, str_file, str_grep, str_gawk); r = command (&out, &err, str_sh, "-c", cmd, NULL); @@ -443,7 +461,7 @@ debug_ls (const char *subcmd, size_t argc, char *const *const argv) char *out; CLEANUP_FREE char *err = NULL; - cargv = malloc (sizeof (char *) * (len+3)); + cargv = malloc (sizeof (char *) * (len + 3)); if (cargv == NULL) { reply_with_perror ("malloc"); return NULL; @@ -452,10 +470,10 @@ debug_ls (const char *subcmd, size_t argc, char *const *const argv) cargv[0] = str_ls; cargv[1] = "-a"; for (i = 0; i < len; ++i) - cargv[2+i] = argv[i]; - cargv[2+len] = NULL; + cargv[2 + i] = argv[i]; + cargv[2 + len] = NULL; - r = commandv (&out, &err, (void *) cargv); + r = commandv (&out, &err, (void *)cargv); if (r == -1) { reply_with_error ("ls: %s", err); free (out); @@ -476,7 +494,7 @@ debug_ll (const char *subcmd, size_t argc, char *const *const argv) char *out; CLEANUP_FREE char *err = NULL; - cargv = malloc (sizeof (char *) * (len+3)); + cargv = malloc (sizeof (char *) * (len + 3)); if (cargv == NULL) { reply_with_perror ("malloc"); return NULL; @@ -485,10 +503,10 @@ debug_ll (const char *subcmd, size_t argc, char *const *const argv) cargv[0] = str_ls; cargv[1] = "-la"; for (i = 0; i < len; ++i) - cargv[2+i] = argv[i]; - cargv[2+len] = NULL; + cargv[2 + i] = argv[i]; + cargv[2 + len] = NULL; - r = commandv (&out, &err, (void *) cargv); + r = commandv (&out, &err, (void *)cargv); if (r == -1) { reply_with_error ("ll: %s", err); free (out); @@ -523,7 +541,8 @@ debug_print (const char *subcmd, size_t argc, char *const *const argv) return ret; } -/* Generate progress notification messages in order to test progress bars. */ +/* Generate progress notification messages in order to test progress bars. + */ static char * debug_progress (const char *subcmd, size_t argc, char *const *const argv) { @@ -532,7 +551,8 @@ debug_progress (const char *subcmd, size_t argc, char *const *const argv) if (argc < 1) { error: - reply_with_error ("progress: expecting one or more args: time in seconds [, rate in microseconds]"); + reply_with_error ("progress: expecting one or more args: time in " + "seconds [, rate in microseconds]"); return NULL; } @@ -555,16 +575,15 @@ debug_progress (const char *subcmd, size_t argc, char *const *const argv) /* Note the inner loops go to '<= limit' because we want to ensure * that the final 100% completed message is set. */ - if (rate == 0) { /* Ordinary rate-limited progress messages. */ + if (rate == 0) { /* Ordinary rate-limited progress messages. */ uint64_t tsecs = secs * 10; /* 1/10ths of seconds */ uint64_t i; - for (i = 1; i < tsecs+1; ++i) { + for (i = 1; i < tsecs + 1; ++i) { usleep (100000); notify_progress (i, tsecs); } - } - else { /* Send messages at a given rate. */ + } else { /* Send messages at a given rate. */ uint64_t usecs = secs * 1000000; /* microseconds */ uint64_t i; struct timeval now; @@ -587,12 +606,14 @@ debug_progress (const char *subcmd, size_t argc, char *const *const argv) /* Enable core dumping to the given core pattern. * Note that this pattern is relative to any chroot of the process which - * crashes. This means that if you want to write the core file to the guest's + * crashes. This means that if you want to write the core file to the + * guest's * storage the pattern must start with /sysroot only if the command which * crashes doesn't chroot. */ static char * -debug_core_pattern (const char *subcmd, size_t argc, char *const *const argv) +debug_core_pattern (const char *subcmd, size_t argc, + char *const *const argv) { if (argc < 1) { reply_with_error ("core_pattern: expecting a core pattern"); @@ -603,12 +624,12 @@ debug_core_pattern (const char *subcmd, size_t argc, char *const *const argv) const size_t pattern_len = strlen (pattern); #define CORE_PATTERN "/proc/sys/kernel/core_pattern" - int fd = open (CORE_PATTERN, O_WRONLY|O_CLOEXEC); + int fd = open (CORE_PATTERN, O_WRONLY | O_CLOEXEC); if (fd == -1) { reply_with_perror ("open: " CORE_PATTERN); return NULL; } - if (write (fd, pattern, pattern_len) < (ssize_t) pattern_len) { + if (write (fd, pattern, pattern_len) < (ssize_t)pattern_len) { reply_with_perror ("write: " CORE_PATTERN); close (fd); return NULL; @@ -618,10 +639,8 @@ debug_core_pattern (const char *subcmd, size_t argc, char *const *const argv) return NULL; } - struct rlimit limit = { - .rlim_cur = RLIM_INFINITY, - .rlim_max = RLIM_INFINITY - }; + struct rlimit limit = {.rlim_cur = RLIM_INFINITY, + .rlim_max = RLIM_INFINITY }; if (setrlimit (RLIMIT_CORE, &limit) == -1) { reply_with_perror ("setrlimit (RLIMIT_CORE)"); return NULL; @@ -652,16 +671,16 @@ debug_spew (const char *subcmd, size_t argc, char *const *const argv) } if (sscanf (argv[0], "%zu", &n) != 1) { - reply_with_error ("spew: could not parse number of lines '%s'", argv[0]); + reply_with_error ("spew: could not parse number of lines '%s'", + argv[0]); return NULL; } for (i = 0; i < n; ++i) - fprintf (stderr, - "abcdefghijklmnopqrstuvwxyz" /* 26 */ - "ABCDEFGHIJKLMNOPQRSTUVWXYZ" /* 52 */ - "01234567890123456789" /* 72 */ - "\n"); + fprintf (stderr, "abcdefghijklmnopqrstuvwxyz" /* 26 */ + "ABCDEFGHIJKLMNOPQRSTUVWXYZ" /* 52 */ + "01234567890123456789" /* 72 */ + "\n"); ret = strdup ("ok"); if (!ret) { @@ -679,7 +698,8 @@ write_cb (void *fd_ptr, const void *buf, size_t len) return xwrite (fd, buf, len); } -/* This requires a non-upstream qemu patch. See contrib/visualize-alignment/ +/* This requires a non-upstream qemu patch. See + * contrib/visualize-alignment/ * directory in the libguestfs source tree. */ static char * @@ -704,20 +724,21 @@ debug_qtrace (const char *subcmd, size_t argc, char *const *const argv) if (do_drop_caches (3) == -1) return NULL; - /* Note this doesn't do device name translation or check this is a device. */ - int fd = open (argv[0], O_RDONLY|O_DIRECT|O_CLOEXEC); + /* Note this doesn't do device name translation or check this is a device. + */ + int fd = open (argv[0], O_RDONLY | O_DIRECT | O_CLOEXEC); if (fd == -1) { reply_with_perror ("qtrace: %s: open", argv[0]); return NULL; } - /* The pattern of reads is what signals to the analysis program that - * tracing should be started or stopped. Note this assumes both 512 - * byte sectors, and that O_DIRECT will let us do 512 byte aligned - * reads. We ought to read the sector size of the device and use - * that instead (XXX). The analysis program currently assumes 512 - * byte sectors anyway. - */ +/* The pattern of reads is what signals to the analysis program that + * tracing should be started or stopped. Note this assumes both 512 + * byte sectors, and that O_DIRECT will let us do 512 byte aligned + * reads. We ought to read the sector size of the device and use + * that instead (XXX). The analysis program currently assumes 512 + * byte sectors anyway. + */ #define QTRACE_SIZE 512 const int patterns[2][5] = { { 2, 15, 21, 2, -1 }, /* disable trace */ @@ -738,7 +759,7 @@ debug_qtrace (const char *subcmd, size_t argc, char *const *const argv) } for (i = 0; patterns[enable][i] >= 0; ++i) { - if (lseek (fd, patterns[enable][i]*QTRACE_SIZE, SEEK_SET) == -1) { + if (lseek (fd, patterns[enable][i] * QTRACE_SIZE, SEEK_SET) == -1) { reply_with_perror ("qtrace: %s: lseek", argv[0]); close (fd); return NULL; @@ -768,7 +789,8 @@ debug_qtrace (const char *subcmd, size_t argc, char *const *const argv) /* Used to test read and write speed. */ static char * -debug_device_speed (const char *subcmd, size_t argc, char *const *const argv) +debug_device_speed (const char *subcmd, size_t argc, + char *const *const argv) { const char *device; int writing, err; @@ -816,7 +838,8 @@ debug_device_speed (const char *subcmd, size_t argc, char *const *const argv) /* Any non-zero data will do. */ memset (buf, 100, BUFSIZ); - fd = open (device, (writing ? O_WRONLY : O_RDONLY) | O_CLOEXEC | O_DIRECT); + fd = + open (device, (writing ? O_WRONLY : O_RDONLY) | O_CLOEXEC | O_DIRECT); if (fd == -1) { reply_with_perror ("open: %s", device); return NULL; @@ -837,7 +860,7 @@ debug_device_speed (const char *subcmd, size_t argc, char *const *const argv) (now.tv_sec == end.tv_sec && now.tv_usec > end.tv_usec)) break; - /* Because of O_DIRECT, only write whole, aligned buffers. */ + /* Because of O_DIRECT, only write whole, aligned buffers. */ again: if (size - position < BUFSIZ) { position = 0; @@ -857,8 +880,7 @@ debug_device_speed (const char *subcmd, size_t argc, char *const *const argv) reply_with_perror ("write: %s", device); goto error; } - } - else { + } else { r = pread (fd, buf, BUFSIZ, position); if (r == -1) { reply_with_perror ("read: %s", device); @@ -885,7 +907,7 @@ debug_device_speed (const char *subcmd, size_t argc, char *const *const argv) return ret; - error: +error: close (fd); return NULL; } @@ -897,7 +919,8 @@ do_debug_upload (const char *filename, int mode) /* Not chrooted - this command lets you upload a file to anywhere * in the appliance. */ - int fd = open (filename, O_WRONLY|O_CREAT|O_TRUNC|O_NOCTTY|O_CLOEXEC, mode); + int fd = open (filename, + O_WRONLY | O_CREAT | O_TRUNC | O_NOCTTY | O_CLOEXEC, mode); if (fd == -1) { int err = errno; @@ -908,7 +931,7 @@ do_debug_upload (const char *filename, int mode) } int r = receive_file (write_cb, &fd); - if (r == -1) { /* write error */ + if (r == -1) { /* write error */ int err = errno; cancel_receive (); errno = err; @@ -916,7 +939,7 @@ do_debug_upload (const char *filename, int mode) close (fd); return -1; } - if (r == -2) { /* cancellation from library */ + if (r == -2) { /* cancellation from library */ /* This error is ignored by the library since it initiated the * cancel. Nevertheless we must send an error reply here. */ @@ -971,14 +994,14 @@ do_internal_rhbz914931 (int count) } r = receive_file (crash_cb, &count); - if (r == -1) { /* write error */ + if (r == -1) { /* write error */ int err = errno; cancel_receive (); errno = err; reply_with_error ("write error"); return -1; } - if (r == -2) { /* cancellation from library */ + if (r == -2) { /* cancellation from library */ /* This error is ignored by the library since it initiated the * cancel. Nevertheless we must send an error reply here. */ diff --git a/daemon/devsparts.c b/daemon/devsparts.c index 7c690f8..cc953d9 100644 --- a/daemon/devsparts.c +++ b/daemon/devsparts.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -54,12 +55,11 @@ foreach_block_device (block_dev_func_t func) for (;;) { errno = 0; d = readdir (dir); - if (!d) break; + if (!d) + break; - if (STREQLEN (d->d_name, "sd", 2) || - STREQLEN (d->d_name, "hd", 2) || - STREQLEN (d->d_name, "ubd", 3) || - STREQLEN (d->d_name, "vd", 2) || + if (STREQLEN (d->d_name, "sd", 2) || STREQLEN (d->d_name, "hd", 2) || + STREQLEN (d->d_name, "ubd", 3) || STREQLEN (d->d_name, "vd", 2) || STREQLEN (d->d_name, "sr", 2)) { snprintf (dev_path, sizeof dev_path, "/dev/%s", d->d_name); @@ -71,7 +71,7 @@ foreach_block_device (block_dev_func_t func) * CD-ROM device even though we didn't request it. Try to * detect this by seeing if the device contains media. */ - fd = open (dev_path, O_RDONLY|O_CLOEXEC); + fd = open (dev_path, O_RDONLY | O_CLOEXEC); if (fd == -1) { perror (dev_path); continue; @@ -79,7 +79,7 @@ foreach_block_device (block_dev_func_t func) close (fd); /* Call the map function for this device */ - if ((*func)(d->d_name, &r) != 0) { + if ((*func) (d->d_name, &r) != 0) { err = 1; break; } @@ -201,7 +201,7 @@ do_part_to_dev (const char *part) int err = 1; size_t n = strlen (part); - while (n >= 1 && c_isdigit (part[n-1])) { + while (n >= 1 && c_isdigit (part[n - 1])) { err = 0; n--; } @@ -226,7 +226,7 @@ do_part_to_partnum (const char *part) int err = 1; size_t n = strlen (part); - while (n >= 1 && c_isdigit (part[n-1])) { + while (n >= 1 && c_isdigit (part[n - 1])) { err = 0; n--; } @@ -259,7 +259,8 @@ do_is_whole_device (const char *device) struct stat statbuf; if (stat (devpath, &statbuf) == -1) { - if (errno == ENOENT || errno == ENOTDIR) return 0; + if (errno == ENOENT || errno == ENOTDIR) + return 0; reply_with_perror ("stat"); return -1; @@ -280,7 +281,7 @@ do_device_index (const char *device) for (i = 0; devices[i] != NULL; ++i) { if (STREQ (device, devices[i])) - ret = (int) i; + ret = (int)i; } if (ret == -1) @@ -301,7 +302,7 @@ do_nr_devices (void) for (i = 0; devices[i] != NULL; ++i) ; - return (int) i; + return (int)i; } #define GUESTFSDIR "/dev/disk/guestfs" @@ -352,7 +353,7 @@ do_list_disk_labels (void) if (add_string_nodup (&ret, rawdev) == -1) goto error; - rawdev = NULL; /* buffer now owned by the stringsbuf */ + rawdev = NULL; /* buffer now owned by the stringsbuf */ } /* Check readdir didn't fail */ @@ -375,9 +376,9 @@ do_list_disk_labels (void) if (end_stringsbuf (&ret) == -1) goto error; - return ret.argv; /* caller frees */ + return ret.argv; /* caller frees */ - error: +error: if (dir) closedir (dir); free (rawdev); diff --git a/daemon/df.c b/daemon/df.c index f177084..12489d7 100644 --- a/daemon/df.c +++ b/daemon/df.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -27,7 +28,7 @@ #include "daemon.h" #include "actions.h" -GUESTFSD_EXT_CMD(str_df, df); +GUESTFSD_EXT_CMD (str_df, df); char * do_df (void) @@ -45,7 +46,7 @@ do_df (void) return NULL; } - return out; /* Caller frees. */ + return out; /* Caller frees. */ } char * @@ -64,5 +65,5 @@ do_df_h (void) return NULL; } - return out; /* Caller frees. */ + return out; /* Caller frees. */ } diff --git a/daemon/dir.c b/daemon/dir.c index 07dc68f..5e24961 100644 --- a/daemon/dir.c +++ b/daemon/dir.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -29,7 +30,7 @@ #include "daemon.h" #include "actions.h" -GUESTFSD_EXT_CMD(str_rm, rm); +GUESTFSD_EXT_CMD (str_rm, rm); int do_rmdir (const char *path) @@ -131,35 +132,41 @@ recursive_mkdir (const char *path) char *p; struct stat buf; - again: +again: r = mkdir (path, 0777); if (r == -1) { - if (errno == EEXIST) { /* Something exists here, might not be a dir. */ + if (errno == EEXIST) { /* Something exists here, might not be a dir. */ r = lstat (path, &buf); - if (r == -1) return -1; - if (!S_ISDIR (buf.st_mode)) return -2; - return 0; /* OK - directory exists here already. */ + if (r == -1) + return -1; + if (!S_ISDIR (buf.st_mode)) + return -2; + return 0; /* OK - directory exists here already. */ } if (!loop && errno == ENOENT) { - loop = 1; /* Stops it looping forever. */ + loop = 1; /* Stops it looping forever. */ /* If we're at the root, and we failed, just give up. */ - if (path[0] == '/' && path[1] == '\0') return -1; + if (path[0] == '/' && path[1] == '\0') + return -1; /* Try to make the parent directory first. */ CLEANUP_FREE char *ppath = strdup (path); - if (ppath == NULL) return -1; + if (ppath == NULL) + return -1; p = strrchr (ppath, '/'); - if (p) *p = '\0'; + if (p) + *p = '\0'; r = recursive_mkdir (ppath); - if (r != 0) return r; + if (r != 0) + return r; goto again; - } else /* Failed for some other reason, so return error. */ + } else /* Failed for some other reason, so return error. */ return -1; } return 0; diff --git a/daemon/dmesg.c b/daemon/dmesg.c index 5e16861..4dcb4cb 100644 --- a/daemon/dmesg.c +++ b/daemon/dmesg.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -27,7 +28,7 @@ #include "daemon.h" #include "actions.h" -GUESTFSD_EXT_CMD(str_dmesg, dmesg); +GUESTFSD_EXT_CMD (str_dmesg, dmesg); char * do_dmesg (void) @@ -43,5 +44,5 @@ do_dmesg (void) return NULL; } - return out; /* caller frees */ + return out; /* caller frees */ } diff --git a/daemon/dropcaches.c b/daemon/dropcaches.c index 0da882c..b705c95 100644 --- a/daemon/dropcaches.c +++ b/daemon/dropcaches.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> diff --git a/daemon/du.c b/daemon/du.c index 1f31783..0aa499f 100644 --- a/daemon/du.c +++ b/daemon/du.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -28,7 +29,7 @@ #include "daemon.h" #include "actions.h" -GUESTFSD_EXT_CMD(str_du, du); +GUESTFSD_EXT_CMD (str_du, du); int64_t do_du (const char *path) @@ -53,7 +54,7 @@ do_du (const char *path) return -1; } - if (sscanf (out, "%"SCNi64, &rv) != 1) { + if (sscanf (out, "%" SCNi64, &rv) != 1) { pulse_mode_cancel (); reply_with_error ("%s: could not read output: %s", path, out); return -1; diff --git a/daemon/echo-daemon.c b/daemon/echo-daemon.c index d566a9b..5653445 100644 --- a/daemon/echo-daemon.c +++ b/daemon/echo-daemon.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> diff --git a/daemon/ext2.c b/daemon/ext2.c index 5dd67c7..9099fd6 100644 --- a/daemon/ext2.c +++ b/daemon/ext2.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -33,20 +34,20 @@ #define MAX_ARGS 128 -GUESTFSD_EXT_CMD(str_tune2fs, tune2fs); -GUESTFSD_EXT_CMD(str_e2fsck, e2fsck); -GUESTFSD_EXT_CMD(str_resize2fs, resize2fs); -GUESTFSD_EXT_CMD(str_mke2fs, mke2fs); -GUESTFSD_EXT_CMD(str_lsattr, lsattr); -GUESTFSD_EXT_CMD(str_chattr, chattr); -GUESTFSD_EXT_CMD(str_e2label, e2label); +GUESTFSD_EXT_CMD (str_tune2fs, tune2fs); +GUESTFSD_EXT_CMD (str_e2fsck, e2fsck); +GUESTFSD_EXT_CMD (str_resize2fs, resize2fs); +GUESTFSD_EXT_CMD (str_mke2fs, mke2fs); +GUESTFSD_EXT_CMD (str_lsattr, lsattr); +GUESTFSD_EXT_CMD (str_chattr, chattr); +GUESTFSD_EXT_CMD (str_e2label, e2label); /* https://bugzilla.redhat.com/show_bug.cgi?id=978302#c1 */ int fstype_is_extfs (const char *fstype) { - return STREQ (fstype, "ext2") || STREQ (fstype, "ext3") - || STREQ (fstype, "ext4"); + return STREQ (fstype, "ext2") || STREQ (fstype, "ext3") || + STREQ (fstype, "ext4"); } char ** @@ -68,7 +69,8 @@ do_tune2fs_l (const char *device) /* Discard the first line if it contains "tune2fs ...". */ if (STRPREFIX (p, "tune2fs ") || STRPREFIX (p, "tune4fs ")) { p = strchr (p, '\n'); - if (p) p++; + if (p) + p++; else { reply_with_error ("truncated output"); return NULL; @@ -83,19 +85,21 @@ do_tune2fs_l (const char *device) pend++; } - if (!*p) continue; + if (!*p) + continue; colon = strchr (p, ':'); if (colon) { *colon = '\0'; - do { colon++; } while (*colon && c_isspace (*colon)); + do { + colon++; + } while (*colon && c_isspace (*colon)); if (add_string (&ret, p) == -1) { return NULL; } - if (STREQ (colon, "<none>") || - STREQ (colon, "<not available>") || + if (STREQ (colon, "<none>") || STREQ (colon, "<not available>") || STREQ (colon, "(none)")) { if (add_string (&ret, "") == -1) { return NULL; @@ -105,8 +109,7 @@ do_tune2fs_l (const char *device) return NULL; } } - } - else { + } else { if (add_string (&ret, p) == -1) { return NULL; } @@ -131,8 +134,8 @@ do_set_e2label (const char *device, const char *label) CLEANUP_FREE char *err = NULL; if (strlen (label) > EXT2_LABEL_MAX) { - reply_with_error ("%s: ext2/3/4 labels are limited to %d bytes", - label, EXT2_LABEL_MAX); + reply_with_error ("%s: ext2/3/4 labels are limited to %d bytes", label, + EXT2_LABEL_MAX); return -1; } @@ -150,7 +153,7 @@ do_get_e2label (const char *device) { const mountable_t mountable = { .type = MOUNTABLE_DEVICE, - .device = /* not really ... */ (char *) device, + .device = /* not really ... */ (char *)device, .volume = NULL, }; return do_vfs_label (&mountable); @@ -182,7 +185,7 @@ do_get_e2uuid (const char *device) { const mountable_t mountable = { .type = MOUNTABLE_DEVICE, - .device = /* not really ... */ (char *) device, + .device = /* not really ... */ (char *)device, .volume = NULL, }; return do_vfs_uuid (&mountable); @@ -200,8 +203,7 @@ if_not_mounted_run_e2fsck (const char *device) return -1; if (!mounted) { - r = commandf (NULL, &err, - COMMAND_FLAG_FOLD_STDOUT_ON_STDERR, + r = commandf (NULL, &err, COMMAND_FLAG_FOLD_STDOUT_ON_STDERR, str_e2fsck, "-fy", device, NULL); if (r == -1) { reply_with_error ("%s", err); @@ -241,8 +243,8 @@ do_resize2fs_size (const char *device, int64_t size) * kilobytes. */ if (size & 1023) { - reply_with_error ("%" PRIi64 ": size must be a round number of kilobytes", - size); + reply_with_error ( + "%" PRIi64 ": size must be a round number of kilobytes", size); return -1; } size /= 1024; @@ -294,7 +296,8 @@ get_block_size (const char *device) for (i = 0; params[i] != NULL; i += 2) { if (STREQ (params[i], block_pattern)) { - if (xstrtol (params[i + 1], NULL, 10, &block_size, NULL) != LONGINT_OK) { + if (xstrtol (params[i + 1], NULL, 10, &block_size, NULL) != + LONGINT_OK) { reply_with_error ("cannot parse block size"); return -1; } @@ -335,16 +338,17 @@ ext_minimum_size (const char *device) for (i = 0; lines[i] != NULL; ++i) { if (STRPREFIX (lines[i], pattern)) { - if (XSTRTOD64 (lines[i] + strlen (pattern), - NULL, 10, &ret, NULL) != LONGINT_OK) { + if (XSTRTOD64 (lines[i] + strlen (pattern), NULL, 10, &ret, NULL) != + LONGINT_OK) { reply_with_error ("cannot parse minimum size"); return -1; } if ((block_size = get_block_size (device)) == -1) return -1; if (verbose) { - fprintf (stderr, "Minimum size in blocks: %" SCNd64 \ - "\nBlock count: %ld\n", ret, block_size); + fprintf (stderr, + "Minimum size in blocks: %" SCNd64 "\nBlock count: %ld\n", + ret, block_size); } if (INT64_MAX / block_size < ret) { reply_with_error ("filesystem size too big: overflow"); @@ -356,15 +360,14 @@ ext_minimum_size (const char *device) #undef XSTRTOD64 - reply_with_error ("minimum size not found. Check output format:\n%s", out); + reply_with_error ("minimum size not found. Check output format:\n%s", + out); return -1; } /* Takes optional arguments, consult optargs_bitmask. */ int -do_e2fsck (const char *device, - int correct, - int forceall) +do_e2fsck (const char *device, int correct, int forceall) { const char *argv[MAX_ARGS]; CLEANUP_FREE char *err = NULL; @@ -378,7 +381,8 @@ do_e2fsck (const char *device, forceall = 0; if (correct && forceall) { - reply_with_error ("only one of the options 'correct', 'forceall' may be specified"); + reply_with_error ( + "only one of the options 'correct', 'forceall' may be specified"); return -1; } @@ -394,9 +398,7 @@ do_e2fsck (const char *device, ADD_ARG (argv, i, device); ADD_ARG (argv, i, NULL); - r = commandrvf (NULL, &err, - COMMAND_FLAG_FOLD_STDOUT_ON_STDERR, - argv); + r = commandrvf (NULL, &err, COMMAND_FLAG_FOLD_STDOUT_ON_STDERR, argv); /* 0 = no errors, 1 = errors corrected. * * >= 4 means uncorrected or other errors. @@ -430,9 +432,8 @@ do_mke2journal (int blocksize, const char *device) wipe_device_before_mkfs (device); - r = command (NULL, &err, - str_mke2fs, "-F", "-O", "journal_dev", "-b", blocksize_s, - device, NULL); + r = command (NULL, &err, str_mke2fs, "-F", "-O", "journal_dev", "-b", + blocksize_s, device, NULL); if (r == -1) { reply_with_error ("%s", err); return -1; @@ -448,8 +449,8 @@ do_mke2journal_L (int blocksize, const char *label, const char *device) int r; if (strlen (label) > EXT2_LABEL_MAX) { - reply_with_error ("%s: ext2/3/4 labels are limited to %d bytes", - label, EXT2_LABEL_MAX); + reply_with_error ("%s: ext2/3/4 labels are limited to %d bytes", label, + EXT2_LABEL_MAX); return -1; } @@ -458,10 +459,8 @@ do_mke2journal_L (int blocksize, const char *label, const char *device) wipe_device_before_mkfs (device); - r = command (NULL, &err, - str_mke2fs, "-F", "-O", "journal_dev", "-b", blocksize_s, - "-L", label, - device, NULL); + r = command (NULL, &err, str_mke2fs, "-F", "-O", "journal_dev", "-b", + blocksize_s, "-L", label, device, NULL); if (r == -1) { reply_with_error ("%s", err); return -1; @@ -481,10 +480,8 @@ do_mke2journal_U (int blocksize, const char *uuid, const char *device) wipe_device_before_mkfs (device); - r = command (NULL, &err, - str_mke2fs, "-F", "-O", "journal_dev", "-b", blocksize_s, - "-U", uuid, - device, NULL); + r = command (NULL, &err, str_mke2fs, "-F", "-O", "journal_dev", "-b", + blocksize_s, "-U", uuid, device, NULL); if (r == -1) { reply_with_error ("%s", err); return -1; @@ -516,9 +513,8 @@ do_mke2fs_J (const char *fstype, int blocksize, const char *device, wipe_device_before_mkfs (device); - r = command (NULL, &err, - str_mke2fs, "-F", "-t", fstype, "-J", jdev, "-b", blocksize_s, - device, NULL); + r = command (NULL, &err, str_mke2fs, "-F", "-t", fstype, "-J", jdev, "-b", + blocksize_s, device, NULL); if (r == -1) { reply_with_error ("%s", err); return -1; @@ -542,8 +538,8 @@ do_mke2fs_JL (const char *fstype, int blocksize, const char *device, } if (strlen (label) > EXT2_LABEL_MAX) { - reply_with_error ("%s: ext2/3/4 labels are limited to %d bytes", - label, EXT2_LABEL_MAX); + reply_with_error ("%s: ext2/3/4 labels are limited to %d bytes", label, + EXT2_LABEL_MAX); return -1; } @@ -556,9 +552,8 @@ do_mke2fs_JL (const char *fstype, int blocksize, const char *device, wipe_device_before_mkfs (device); - r = command (NULL, &err, - str_mke2fs, "-F", "-t", fstype, "-J", jdev, "-b", blocksize_s, - device, NULL); + r = command (NULL, &err, str_mke2fs, "-F", "-t", fstype, "-J", jdev, "-b", + blocksize_s, device, NULL); if (r == -1) { reply_with_error ("%s", err); return -1; @@ -590,9 +585,8 @@ do_mke2fs_JU (const char *fstype, int blocksize, const char *device, wipe_device_before_mkfs (device); - r = command (NULL, &err, - str_mke2fs, "-F", "-t", fstype, "-J", jdev, "-b", blocksize_s, - device, NULL); + r = command (NULL, &err, str_mke2fs, "-F", "-t", fstype, "-J", jdev, "-b", + blocksize_s, device, NULL); if (r == -1) { reply_with_error ("%s", err); return -1; @@ -604,15 +598,10 @@ do_mke2fs_JU (const char *fstype, int blocksize, const char *device, /* Takes optional arguments, consult optargs_bitmask. */ int do_tune2fs (const char *device, /* only required parameter */ - int force, - int maxmountcount, - int mountcount, - const char *errorbehavior, - int64_t group, - int intervalbetweenchecks, - int reservedblockspercentage, - const char *lastmounteddirectory, - int64_t reservedblockscount, + int force, int maxmountcount, int mountcount, + const char *errorbehavior, int64_t group, + int intervalbetweenchecks, int reservedblockspercentage, + const char *lastmounteddirectory, int64_t reservedblockscount, int64_t user) { const char *argv[MAX_ARGS]; @@ -658,7 +647,8 @@ do_tune2fs (const char *device, /* only required parameter */ if (STRNEQ (errorbehavior, "continue") && STRNEQ (errorbehavior, "remount-ro") && STRNEQ (errorbehavior, "panic")) { - reply_with_error ("invalid errorbehavior parameter: %s", errorbehavior); + reply_with_error ("invalid errorbehavior parameter: %s", + errorbehavior); return -1; } ADD_ARG (argv, i, "-e"); @@ -688,8 +678,7 @@ do_tune2fs (const char *device, /* only required parameter */ snprintf (intervalbetweenchecks_s, sizeof intervalbetweenchecks_s, "%ds", intervalbetweenchecks); ADD_ARG (argv, i, intervalbetweenchecks_s); - } - else + } else ADD_ARG (argv, i, "0"); } @@ -745,8 +734,8 @@ do_tune2fs (const char *device, /* only required parameter */ static int compare_chars (const void *vc1, const void *vc2) { - char c1 = * (char *) vc1; - char c2 = * (char *) vc2; + char c1 = *(char *)vc1; + char c2 = *(char *)vc2; return c1 - c2; } @@ -798,7 +787,7 @@ do_set_e2attrs (const char *filename, const char *attrs, int clear) CLEANUP_FREE char *err = NULL; size_t i, j; int lowers[26], uppers[26]; - char attr_arg[26*2+1+1]; /* '+'/'-' + attrs + trailing '\0' */ + char attr_arg[26 * 2 + 1 + 1]; /* '+'/'-' + attrs + trailing '\0' */ if (!(optargs_bitmask & GUESTFS_SET_E2ATTRS_CLEAR_BITMASK)) attr_arg[0] = '+'; @@ -824,15 +813,13 @@ do_set_e2attrs (const char *filename, const char *attrs, int clear) if (*attrs == 'R' || *attrs == 'V' || *attrs == 'f' || *attrs == 'v') { reply_with_error ("bad file attribute '%c'", *attrs); return -1; - } - else if (*attrs >= 'a' && *attrs <= 'z') { + } else if (*attrs >= 'a' && *attrs <= 'z') { i = *attrs - 'a'; if (lowers[i] > 0) goto error_duplicate; lowers[i]++; attr_arg[j++] = *attrs; - } - else if (*attrs >= 'A' && *attrs <= 'Z') { + } else if (*attrs >= 'A' && *attrs <= 'Z') { i = *attrs - 'A'; if (uppers[i] > 0) { error_duplicate: @@ -841,8 +828,7 @@ do_set_e2attrs (const char *filename, const char *attrs, int clear) } uppers[i]++; attr_arg[j++] = *attrs; - } - else { + } else { reply_with_error ("unknown file attribute '%c'", *attrs); return -1; } @@ -885,8 +871,8 @@ do_get_e2generation (const char *filename) } if (sscanf (out, "%" SCNi64, &ret) != 1) { - reply_with_error ("cannot parse output from '%s' command: %s", - "lsattr", out); + reply_with_error ("cannot parse output from '%s' command: %s", "lsattr", + out); return -1; } if (ret < 0) { @@ -911,10 +897,11 @@ do_set_e2generation (const char *filename, int64_t generation) return -1; } - snprintf (generation_str, sizeof generation_str, - "%" PRIu64, (uint64_t) generation); + snprintf (generation_str, sizeof generation_str, "%" PRIu64, + (uint64_t)generation); - r = command (NULL, &err, str_chattr, "-v", generation_str, "--", buf, NULL); + r = command (NULL, &err, str_chattr, "-v", generation_str, "--", buf, + NULL); if (r == -1) { reply_with_error ("%s: %s: %s", "chattr", filename, err); return -1; @@ -924,45 +911,24 @@ do_set_e2generation (const char *filename, int64_t generation) } int -do_mke2fs (const char *device, /* 0 */ - int64_t blockscount, - int64_t blocksize, - int64_t fragsize, - int64_t blockspergroup, - int64_t numberofgroups, /* 5 */ - int64_t bytesperinode, - int64_t inodesize, - int64_t journalsize, - int64_t numberofinodes, - int64_t stridesize, /* 10 */ - int64_t stripewidth, - int64_t maxonlineresize, - int reservedblockspercentage, - int mmpupdateinterval, - const char *journaldevice, /* 15 */ - const char *label, - const char *lastmounteddir, - const char *creatoros, - const char *fstype, - const char *usagetype, /* 20 */ - const char *uuid, - int forcecreate, - int writesbandgrouponly, - int lazyitableinit, - int lazyjournalinit, /* 25 */ - int testfs, - int discard, - int quotatype, - int extent, - int filetype, /* 30 */ - int flexbg, - int hasjournal, - int journaldev, - int largefile, - int quota, /* 35 */ - int resizeinode, - int sparsesuper, - int uninitbg) +do_mke2fs (const char *device, /* 0 */ + int64_t blockscount, int64_t blocksize, int64_t fragsize, + int64_t blockspergroup, int64_t numberofgroups, /* 5 */ + int64_t bytesperinode, int64_t inodesize, int64_t journalsize, + int64_t numberofinodes, int64_t stridesize, /* 10 */ + int64_t stripewidth, int64_t maxonlineresize, + int reservedblockspercentage, int mmpupdateinterval, + const char *journaldevice, /* 15 */ + const char *label, const char *lastmounteddir, + const char *creatoros, const char *fstype, + const char *usagetype, /* 20 */ + const char *uuid, int forcecreate, int writesbandgrouponly, + int lazyitableinit, int lazyjournalinit, /* 25 */ + int testfs, int discard, int quotatype, int extent, + int filetype, /* 30 */ + int flexbg, int hasjournal, int journaldev, int largefile, + int quota, /* 35 */ + int resizeinode, int sparsesuper, int uninitbg) { int r; CLEANUP_FREE char *err = NULL; @@ -1014,8 +980,8 @@ do_mke2fs (const char *device, /* 0 */ reply_with_error ("blockspergroup must be >= 0"); return -1; } - snprintf (blockspergroup_s, sizeof blockspergroup_s, - "%" PRIi64, blockspergroup); + snprintf (blockspergroup_s, sizeof blockspergroup_s, "%" PRIi64, + blockspergroup); ADD_ARG (argv, i, "-g"); ADD_ARG (argv, i, blockspergroup_s); } @@ -1024,8 +990,8 @@ do_mke2fs (const char *device, /* 0 */ reply_with_error ("numberofgroups must be >= 0"); return -1; } - snprintf (numberofgroups_s, sizeof numberofgroups_s, - "%" PRIi64, numberofgroups); + snprintf (numberofgroups_s, sizeof numberofgroups_s, "%" PRIi64, + numberofgroups); ADD_ARG (argv, i, "-G"); ADD_ARG (argv, i, numberofgroups_s); } @@ -1034,7 +1000,8 @@ do_mke2fs (const char *device, /* 0 */ reply_with_error ("bytesperinode must be >= 0"); return -1; } - snprintf (bytesperinode_s, sizeof bytesperinode_s, "%" PRIi64, bytesperinode); + snprintf (bytesperinode_s, sizeof bytesperinode_s, "%" PRIi64, + bytesperinode); ADD_ARG (argv, i, "-i"); ADD_ARG (argv, i, bytesperinode_s); } @@ -1052,8 +1019,9 @@ do_mke2fs (const char *device, /* 0 */ reply_with_error ("journalsize must be >= 0"); return -1; } - snprintf (journalsize_s, sizeof journalsize_s, - "size=" "%" PRIi64, journalsize); + snprintf (journalsize_s, sizeof journalsize_s, "size=" + "%" PRIi64, + journalsize); ADD_ARG (argv, i, "-J"); ADD_ARG (argv, i, journalsize_s); } @@ -1081,8 +1049,7 @@ do_mke2fs (const char *device, /* 0 */ } sprintf (journaldevice_s, "device=%s", journaldevice_translated); - } - else { + } else { journaldevice_s = malloc (strlen (journaldevice) + 8); if (!journaldevice_s) { reply_with_perror ("malloc"); @@ -1123,8 +1090,8 @@ do_mke2fs (const char *device, /* 0 */ reply_with_error ("numberofinodes must be >= 0"); return -1; } - snprintf (numberofinodes_s, sizeof numberofinodes_s, - "%" PRIi64, numberofinodes); + snprintf (numberofinodes_s, sizeof numberofinodes_s, "%" PRIi64, + numberofinodes); ADD_ARG (argv, i, "-N"); ADD_ARG (argv, i, numberofinodes_s); } @@ -1141,7 +1108,8 @@ do_mke2fs (const char *device, /* 0 */ if (optargs_bitmask & GUESTFS_MKE2FS_FSTYPE_BITMASK) { if (fstype) { if (!fstype_is_extfs (fstype)) { - reply_with_error ("%s: not a valid extended filesystem type", fstype); + reply_with_error ("%s: not a valid extended filesystem type", + fstype); return -1; } @@ -1167,7 +1135,9 @@ do_mke2fs (const char *device, /* 0 */ return -1; } snprintf (mmpupdateinterval_s, sizeof mmpupdateinterval_s, - "mmp_update_interval=" "%" PRIi32, mmpupdateinterval); + "mmp_update_interval=" + "%" PRIi32, + mmpupdateinterval); ADD_ARG (argv, i, "-E"); ADD_ARG (argv, i, mmpupdateinterval_s); } @@ -1176,18 +1146,20 @@ do_mke2fs (const char *device, /* 0 */ reply_with_error ("stridesize must be >= 0"); return -1; } - snprintf (stridesize_s, sizeof stridesize_s, - "stride=" "%" PRIi64, stridesize); + snprintf (stridesize_s, sizeof stridesize_s, "stride=" + "%" PRIi64, + stridesize); ADD_ARG (argv, i, "-E"); ADD_ARG (argv, i, stridesize_s); } if (optargs_bitmask & GUESTFS_MKE2FS_STRIPEWIDTH_BITMASK) { - if (stripewidth< 0) { + if (stripewidth < 0) { reply_with_error ("stripewidth must be >= 0"); return -1; } - snprintf (stripewidth_s, sizeof stripewidth_s, - "stripe_width=" "%" PRIi64, stripewidth); + snprintf (stripewidth_s, sizeof stripewidth_s, "stripe_width=" + "%" PRIi64, + stripewidth); ADD_ARG (argv, i, "-E"); ADD_ARG (argv, i, stripewidth_s); } @@ -1196,8 +1168,9 @@ do_mke2fs (const char *device, /* 0 */ reply_with_error ("maxonlineresize must be >= 0"); return -1; } - snprintf (maxonlineresize_s, sizeof maxonlineresize_s, - "resize=" "%" PRIi64, maxonlineresize); + snprintf (maxonlineresize_s, sizeof maxonlineresize_s, "resize=" + "%" PRIi64, + maxonlineresize); ADD_ARG (argv, i, "-E"); ADD_ARG (argv, i, maxonlineresize_s); } diff --git a/daemon/fallocate.c b/daemon/fallocate.c index f98babf..a9c5a75 100644 --- a/daemon/fallocate.c +++ b/daemon/fallocate.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -45,7 +46,8 @@ do_fallocate64 (const char *path, int64_t len) int fd; CHROOT_IN; - fd = open (path, O_WRONLY|O_CREAT|O_TRUNC|O_NOCTTY|O_CLOEXEC, 0666); + fd = open (path, O_WRONLY | O_CREAT | O_TRUNC | O_NOCTTY | O_CLOEXEC, + 0666); CHROOT_OUT; if (fd == -1) { reply_with_perror ("open: %s", path); @@ -63,7 +65,7 @@ do_fallocate64 (const char *path, int64_t len) #else ssize_t r; char buf[BUFSIZ]; - const size_t len_sz = (size_t) len; + const size_t len_sz = (size_t)len; size_t n; memset (buf, 0, BUFSIZ); diff --git a/daemon/file.c b/daemon/file.c index 35f41d3..c1644c8 100644 --- a/daemon/file.c +++ b/daemon/file.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -30,9 +31,9 @@ #include "actions.h" #include "optgroups.h" -GUESTFSD_EXT_CMD(str_file, file); -GUESTFSD_EXT_CMD(str_zcat, zcat); -GUESTFSD_EXT_CMD(str_bzcat, bzcat); +GUESTFSD_EXT_CMD (str_file, file); +GUESTFSD_EXT_CMD (str_zcat, zcat); +GUESTFSD_EXT_CMD (str_bzcat, bzcat); int do_touch (const char *path) @@ -60,14 +61,15 @@ do_touch (const char *path) return -1; } } else { - if (! S_ISREG (buf.st_mode)) { - reply_with_error ("%s: touch can only be used on a regular files", path); + if (!S_ISREG (buf.st_mode)) { + reply_with_error ("%s: touch can only be used on a regular files", + path); return -1; } } CHROOT_IN; - fd = open (path, O_WRONLY|O_CREAT|O_NOCTTY|O_CLOEXEC, 0666); + fd = open (path, O_WRONLY | O_CREAT | O_NOCTTY | O_CLOEXEC, 0666); CHROOT_OUT; if (fd == -1) { @@ -140,7 +142,7 @@ do_chmod (int mode, const char *path) CHROOT_OUT; if (r == -1) { - reply_with_perror ("%s: 0%o", path, (unsigned) mode); + reply_with_perror ("%s: 0%o", path, (unsigned)mode); return -1; } @@ -201,7 +203,7 @@ do_write_file (const char *path, const char *content, int size) /* Note content_len must be small because of the limits on protocol * message size. */ - int content_len = (int) strlen (content); + int content_len = (int)strlen (content); if (size == 0) size = content_len; @@ -211,7 +213,8 @@ do_write_file (const char *path, const char *content, int size) } CHROOT_IN; - fd = open (path, O_WRONLY|O_TRUNC|O_CREAT|O_NOCTTY|O_CLOEXEC, 0666); + fd = open (path, O_WRONLY | O_TRUNC | O_CREAT | O_NOCTTY | O_CLOEXEC, + 0666); CHROOT_OUT; if (fd == -1) { @@ -239,7 +242,8 @@ do_internal_write (const char *path, const char *content, size_t size) int fd; CHROOT_IN; - fd = open (path, O_WRONLY|O_TRUNC|O_CREAT|O_NOCTTY|O_CLOEXEC, 0666); + fd = open (path, O_WRONLY | O_TRUNC | O_CREAT | O_NOCTTY | O_CLOEXEC, + 0666); CHROOT_OUT; if (fd == -1) { @@ -262,12 +266,14 @@ do_internal_write (const char *path, const char *content, size_t size) } int -do_internal_write_append (const char *path, const char *content, size_t size) +do_internal_write_append (const char *path, const char *content, + size_t size) { int fd; CHROOT_IN; - fd = open (path, O_WRONLY|O_APPEND|O_CREAT|O_NOCTTY|O_CLOEXEC, 0666); + fd = open (path, O_WRONLY | O_APPEND | O_CREAT | O_NOCTTY | O_CLOEXEC, + 0666); CHROOT_OUT; if (fd == -1) { @@ -314,7 +320,9 @@ pread_fd (int fd, int count, int64_t offset, size_t *size_r, * will be caught later when we try to serialize the message. */ if (count >= GUESTFS_MESSAGE_MAX) { - reply_with_error ("%s: count is too large for the protocol, use smaller reads", display_path); + reply_with_error ( + "%s: count is too large for the protocol, use smaller reads", + display_path); close (fd); return NULL; } @@ -353,7 +361,7 @@ do_pread (const char *path, int count, int64_t offset, size_t *size_r) int fd; CHROOT_IN; - fd = open (path, O_RDONLY|O_CLOEXEC); + fd = open (path, O_RDONLY | O_CLOEXEC); CHROOT_OUT; if (fd == -1) { @@ -365,9 +373,10 @@ do_pread (const char *path, int count, int64_t offset, size_t *size_r) } char * -do_pread_device (const char *device, int count, int64_t offset, size_t *size_r) +do_pread_device (const char *device, int count, int64_t offset, + size_t *size_r) { - int fd = open (device, O_RDONLY|O_CLOEXEC); + int fd = open (device, O_RDONLY | O_CLOEXEC); if (fd == -1) { reply_with_perror ("open: %s", device); return NULL; @@ -410,7 +419,8 @@ pwrite_fd (int fd, const char *content, size_t size, int64_t offset, } int -do_pwrite (const char *path, const char *content, size_t size, int64_t offset) +do_pwrite (const char *path, const char *content, size_t size, + int64_t offset) { int fd; @@ -420,7 +430,7 @@ do_pwrite (const char *path, const char *content, size_t size, int64_t offset) } CHROOT_IN; - fd = open (path, O_WRONLY|O_CLOEXEC); + fd = open (path, O_WRONLY | O_CLOEXEC); CHROOT_OUT; if (fd == -1) { @@ -440,7 +450,7 @@ do_pwrite_device (const char *device, const char *content, size_t size, return -1; } - int fd = open (device, O_WRONLY|O_CLOEXEC); + int fd = open (device, O_WRONLY | O_CLOEXEC); if (fd == -1) { reply_with_perror ("open: %s", device); return -1; @@ -475,7 +485,7 @@ do_file (const char *path) return NULL; } - if (! S_ISREG (statbuf.st_mode)) { + if (!S_ISREG (statbuf.st_mode)) { char *ret; if (S_ISDIR (statbuf.st_mode)) @@ -516,17 +526,17 @@ do_file (const char *path) /* We need to remove the trailing \n from output of file(1). */ size_t len = strlen (out); - if (len > 0 && out[len-1] == '\n') + if (len > 0 && out[len - 1] == '\n') out[--len] = '\0'; /* Some upstream versions of file add a space at the end of the * output. This is fixed in the Fedora version, but we might as * well fix it here too. (RHBZ#928995). */ - if (len > 0 && out[len-1] == ' ') + if (len > 0 && out[len - 1] == ' ') out[--len] = '\0'; - return out; /* caller frees */ + return out; /* caller frees */ } /* zcat | file */ @@ -574,8 +584,8 @@ do_zfile (const char *method, const char *path) } len = strlen (line); - if (len > 0 && line[len-1] == '\n') - line[len-1] = '\0'; + if (len > 0 && line[len - 1] == '\n') + line[len - 1] = '\0'; return strdup (line); } @@ -587,7 +597,7 @@ do_filesize (const char *path) struct stat buf; CHROOT_IN; - r = stat (path, &buf); /* follow symlinks */ + r = stat (path, &buf); /* follow symlinks */ CHROOT_OUT; if (r == -1) { @@ -599,7 +609,8 @@ do_filesize (const char *path) } int -do_copy_attributes (const char *src, const char *dest, int all, int mode, int xattributes, int ownership) +do_copy_attributes (const char *src, const char *dest, int all, int mode, + int xattributes, int ownership) { int r; struct stat srcstat, deststat; @@ -648,8 +659,8 @@ do_copy_attributes (const char *src, const char *dest, int all, int mode, int xa } } - if (ownership && - (srcstat.st_uid != deststat.st_uid || srcstat.st_gid != deststat.st_gid)) { + if (ownership && (srcstat.st_uid != deststat.st_uid || + srcstat.st_gid != deststat.st_gid)) { CHROOT_IN; r = chown (dest, srcstat.st_uid, srcstat.st_gid); CHROOT_OUT; diff --git a/daemon/fill.c b/daemon/fill.c index 2d19df5..5fe1a59 100644 --- a/daemon/fill.c +++ b/daemon/fill.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -52,7 +53,7 @@ do_fill (int c, int len, const char *path) reply_with_error ("%d: length is < 0", len); return -1; } - len_sz = (size_t) len; + len_sz = (size_t)len; CHROOT_IN; fd = open (path, O_WRONLY | O_CREAT | O_NOCTTY, 0666); @@ -72,7 +73,7 @@ do_fill (int c, int len, const char *path) return -1; } n += r; - notify_progress ((uint64_t) n, (uint64_t) len_sz); + notify_progress ((uint64_t)n, (uint64_t)len_sz); } if (close (fd) == -1) { @@ -97,7 +98,7 @@ do_fill_pattern (const char *pattern, int len, const char *path) reply_with_error ("%d: length is < 0", len); return -1; } - size_t len_sz = (size_t) len; + size_t len_sz = (size_t)len; int fd; CHROOT_IN; @@ -119,7 +120,7 @@ do_fill_pattern (const char *pattern, int len, const char *path) return -1; } n += wrlen; - notify_progress ((uint64_t) n, (uint64_t) len_sz); + notify_progress ((uint64_t)n, (uint64_t)len_sz); } if (close (fd) == -1) { @@ -145,7 +146,7 @@ do_fill_dir (const char *dir, int n) } CHROOT_IN; - fd = open (filename, O_WRONLY|O_CREAT|O_NOCTTY|O_CLOEXEC, 0666); + fd = open (filename, O_WRONLY | O_CREAT | O_NOCTTY | O_CLOEXEC, 0666); CHROOT_OUT; if (fd == -1) { diff --git a/daemon/find.c b/daemon/find.c index b47caa8..834941e 100644 --- a/daemon/find.c +++ b/daemon/find.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -30,7 +31,7 @@ #include "daemon.h" #include "actions.h" -GUESTFSD_EXT_CMD(str_find, find); +GUESTFSD_EXT_CMD (str_find, find); static int input_to_nul (FILE *fp, char *buf, size_t maxlen) @@ -126,18 +127,18 @@ do_find0 (const char *dir) if (ferror (fp)) { fprintf (stderr, "fgetc: %s: %m\n", dir); - send_file_end (1); /* Cancel. */ + send_file_end (1); /* Cancel. */ pclose (fp); return -1; } if (pclose (fp) != 0) { fprintf (stderr, "pclose: %s: %m\n", dir); - send_file_end (1); /* Cancel. */ + send_file_end (1); /* Cancel. */ return -1; } - if (send_file_end (0)) /* Normal end of file. */ + if (send_file_end (0)) /* Normal end of file. */ return -1; return 0; diff --git a/daemon/findfs.c b/daemon/findfs.c index f441370..a98e154 100644 --- a/daemon/findfs.c +++ b/daemon/findfs.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -26,7 +27,7 @@ #include "daemon.h" #include "actions.h" -GUESTFSD_EXT_CMD(str_findfs, findfs); +GUESTFSD_EXT_CMD (str_findfs, findfs); static char * findfs (const char *tag, const char *label_or_uuid) @@ -59,8 +60,8 @@ findfs (const char *tag, const char *label_or_uuid) /* Trim trailing \n if present. */ len = strlen (out); - if (len > 0 && out[len-1] == '\n') - out[len-1] = '\0'; + if (len > 0 && out[len - 1] == '\n') + out[len - 1] = '\0'; if (STRPREFIX (out, "/dev/mapper/") || STRPREFIX (out, "/dev/dm-")) { char *canonical; @@ -78,7 +79,7 @@ findfs (const char *tag, const char *label_or_uuid) */ } - return out; /* caller frees */ + return out; /* caller frees */ } char * diff --git a/daemon/format.c b/daemon/format.c index 824649f..af8c38a 100644 --- a/daemon/format.c +++ b/daemon/format.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> diff --git a/daemon/fs-min-size.c b/daemon/fs-min-size.c index ba0f739..90b9eed 100644 --- a/daemon/fs-min-size.c +++ b/daemon/fs-min-size.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -25,10 +26,10 @@ #include "daemon.h" #include "actions.h" -static char* +static char * get_mount_point (const char *device) { - CLEANUP_FREE_STRING_LIST char **mountpoints = do_mountpoints(); + CLEANUP_FREE_STRING_LIST char **mountpoints = do_mountpoints (); size_t i; char *path; @@ -81,7 +82,8 @@ do_vfs_minimum_size (const mountable_t *mountable) } else - NOT_SUPPORTED (-1, "don't know how to get minimum size of '%s' filesystems", + NOT_SUPPORTED (-1, + "don't know how to get minimum size of '%s' filesystems", vfs_type); return r; diff --git a/daemon/fsck.c b/daemon/fsck.c index 540f779..0c7fc42 100644 --- a/daemon/fsck.c +++ b/daemon/fsck.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -26,7 +27,7 @@ #include "daemon.h" #include "actions.h" -GUESTFSD_EXT_CMD(str_fsck, fsck); +GUESTFSD_EXT_CMD (str_fsck, fsck); int do_fsck (const char *fstype, const char *device) diff --git a/daemon/fstrim.c b/daemon/fstrim.c index 1ad3630..db18bc5 100644 --- a/daemon/fstrim.c +++ b/daemon/fstrim.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -30,7 +31,7 @@ #define MAX_ARGS 64 -GUESTFSD_EXT_CMD(str_fstrim, fstrim); +GUESTFSD_EXT_CMD (str_fstrim, fstrim); int optgroup_fstrim_available (void) @@ -40,8 +41,8 @@ optgroup_fstrim_available (void) /* Takes optional arguments, consult optargs_bitmask. */ int -do_fstrim (const char *path, - int64_t offset, int64_t length, int64_t minimumfreeextent) +do_fstrim (const char *path, int64_t offset, int64_t length, + int64_t minimumfreeextent) { const char *argv[MAX_ARGS]; size_t i = 0; @@ -90,7 +91,8 @@ do_fstrim (const char *path, ADD_ARG (argv, i, mfe_s); } - /* When running in debug mode, use -v, capture stdout and print it below. */ + /* When running in debug mode, use -v, capture stdout and print it below. + */ if (verbose) ADD_ARG (argv, i, "-v"); diff --git a/daemon/glob.c b/daemon/glob.c index a22fd33..6161819 100644 --- a/daemon/glob.c +++ b/daemon/glob.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -29,12 +30,12 @@ char ** do_glob_expand (const char *pattern, int directoryslash) { int r; - glob_t buf = { .gl_pathc = 0, .gl_pathv = NULL, .gl_offs = 0 }; + glob_t buf = {.gl_pathc = 0, .gl_pathv = NULL, .gl_offs = 0 }; int flags = GLOB_BRACE | GLOB_MARK; /* GLOB_MARK is default, unless the user explicitly disabled it. */ - if ((optargs_bitmask & GUESTFS_GLOB_EXPAND_DIRECTORYSLASH_BITMASK) - && !directoryslash) { + if ((optargs_bitmask & GUESTFS_GLOB_EXPAND_DIRECTORYSLASH_BITMASK) && + !directoryslash) { flags &= ~GLOB_MARK; } @@ -43,7 +44,7 @@ do_glob_expand (const char *pattern, int directoryslash) r = glob (pattern, flags, NULL, &buf); CHROOT_OUT; - if (r == GLOB_NOMATCH) { /* Return an empty list instead of an error. */ + if (r == GLOB_NOMATCH) { /* Return an empty list instead of an error. */ char **rv; rv = malloc (sizeof (char *) * 1); @@ -52,7 +53,7 @@ do_glob_expand (const char *pattern, int directoryslash) return NULL; } rv[0] = NULL; - return rv; /* Caller frees. */ + return rv; /* Caller frees. */ } if (r != 0) { diff --git a/daemon/grep.c b/daemon/grep.c index 6dd9a99..55d43f9 100644 --- a/daemon/grep.c +++ b/daemon/grep.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -31,8 +32,8 @@ #define MAX_ARGS 64 static char ** -grep (const char *regex, const char *path, - int extended, int fixed, int insensitive, int compressed) +grep (const char *regex, const char *path, int extended, int fixed, + int insensitive, int compressed) { const char *argv[MAX_ARGS]; size_t i = 0; @@ -41,7 +42,8 @@ grep (const char *regex, const char *path, char **lines; if (extended && fixed) { - reply_with_error ("can't use 'extended' and 'fixed' flags at the same time"); + reply_with_error ( + "can't use 'extended' and 'fixed' flags at the same time"); return NULL; } @@ -63,7 +65,7 @@ grep (const char *regex, const char *path, ADD_ARG (argv, i, NULL); CHROOT_IN; - fd = open (path, O_RDONLY|O_CLOEXEC); + fd = open (path, O_RDONLY | O_CLOEXEC); CHROOT_OUT; if (fd == -1) { @@ -82,15 +84,16 @@ grep (const char *regex, const char *path, } lines = split_lines (out); - if (lines == NULL) return NULL; + if (lines == NULL) + return NULL; return lines; } /* Takes optional arguments, consult optargs_bitmask. */ char ** -do_grep (const char *regex, const char *path, - int extended, int fixed, int insensitive, int compressed) +do_grep (const char *regex, const char *path, int extended, int fixed, + int insensitive, int compressed) { if (!(optargs_bitmask & GUESTFS_GREP_EXTENDED_BITMASK)) extended = 0; diff --git a/daemon/grub.c b/daemon/grub.c index 06324b3..ec9ee5c 100644 --- a/daemon/grub.c +++ b/daemon/grub.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -26,7 +27,7 @@ #include "actions.h" #include "optgroups.h" -GUESTFSD_EXT_CMD(str_grub_install, grub-install); +GUESTFSD_EXT_CMD (str_grub_install, grub - install); int optgroup_grub_available (void) @@ -45,8 +46,8 @@ do_grub_install (const char *root, const char *device) return -1; } - r = command (verbose ? &out : NULL, &err, - str_grub_install, buf, device, NULL); + r = command (verbose ? &out : NULL, &err, str_grub_install, buf, device, + NULL); if (r == -1) { if (verbose) diff --git a/daemon/guestfsd.c b/daemon/guestfsd.c index 00b4a0a..43242e2 100644 --- a/daemon/guestfsd.c +++ b/daemon/guestfsd.c @@ -13,13 +13,14 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> #ifdef HAVE_WINDOWS_H -# include <windows.h> +#include <windows.h> #endif #include <stdio.h> @@ -45,7 +46,7 @@ #include <termios.h> #ifdef HAVE_PRINTF_H -# include <printf.h> +#include <printf.h> #endif #include <augeas.h> @@ -57,16 +58,16 @@ #include "daemon.h" -GUESTFSD_EXT_CMD(str_udevadm, udevadm); -GUESTFSD_EXT_CMD(str_uuidgen, uuidgen); +GUESTFSD_EXT_CMD (str_udevadm, udevadm); +GUESTFSD_EXT_CMD (str_uuidgen, uuidgen); #ifndef MAX -# define MAX(a,b) ((a)>(b)?(a):(b)) +#define MAX(a, b) ((a) > (b) ? (a) : (b)) #endif /* Not the end of the world if this open flag is not defined. */ #ifndef O_CLOEXEC -# define O_CLOEXEC 0 +#define O_CLOEXEC 0 #endif /* If root device is an ext2 filesystem, this is the major and minor. @@ -79,13 +80,18 @@ int verbose = 0; int enable_network = 0; static void makeraw (const char *channel, int fd); -static int print_shell_quote (FILE *stream, const struct printf_info *info, const void *const *args); -static int print_sysroot_shell_quote (FILE *stream, const struct printf_info *info, const void *const *args); +static int print_shell_quote (FILE *stream, const struct printf_info *info, + const void *const *args); +static int print_sysroot_shell_quote (FILE *stream, + const struct printf_info *info, + const void *const *args); #ifdef HAVE_REGISTER_PRINTF_SPECIFIER -static int print_arginfo (const struct printf_info *info, size_t n, int *argtypes, int *size); +static int print_arginfo (const struct printf_info *info, size_t n, + int *argtypes, int *size); #else #ifdef HAVE_REGISTER_PRINTF_FUNCTION -static int print_arginfo (const struct printf_info *info, size_t n, int *argtypes); +static int print_arginfo (const struct printf_info *info, size_t n, + int *argtypes); #else #error "HAVE_REGISTER_PRINTF_{SPECIFIER|FUNCTION} not defined" #endif @@ -101,7 +107,7 @@ winsock_init (void) r = gl_sockets_startup (SOCKETS_2_2); return r == 0 ? 0 : -1; } -#else /* !WIN32 */ +#else /* !WIN32 */ static int winsock_init (void) { @@ -128,8 +134,7 @@ const char *program_name = "guestfsd"; static void usage (void) { - fprintf (stderr, - "guestfsd [-r] [-v|--verbose]\n"); + fprintf (stderr, "guestfsd [-r] [-v|--verbose]\n"); } int @@ -137,12 +142,9 @@ main (int argc, char *argv[]) { static const char *options = "c:lnrtv?"; static const struct option long_options[] = { - { "help", 0, 0, '?' }, - { "channel", 1, 0, 'c' }, - { "listen", 0, 0, 'l' }, - { "network", 0, 0, 'n' }, - { "test", 0, 0, 't' }, - { "verbose", 0, 0, 'v' }, + { "help", 0, 0, '?' }, { "channel", 1, 0, 'c' }, + { "listen", 0, 0, 'l' }, { "network", 0, 0, 'n' }, + { "test", 0, 0, 't' }, { "verbose", 0, 0, 'v' }, { 0, 0, 0, 0 } }; int c; @@ -183,7 +185,8 @@ main (int argc, char *argv[]) for (;;) { c = getopt_long (argc, argv, options, long_options, NULL); - if (c == -1) break; + if (c == -1) + break; switch (c) { case 'c': @@ -198,16 +201,16 @@ main (int argc, char *argv[]) enable_network = 1; break; - /* The -r flag is used when running standalone. It changes - * several aspects of the daemon. - */ + /* The -r flag is used when running standalone. It changes + * several aspects of the daemon. + */ case 'r': sysroot = ""; sysroot_len = 0; autosync_umount = 0; break; - /* Undocumented --test option used for testing guestfsd. */ + /* Undocumented --test option used for testing guestfsd. */ case 't': test_mode = 1; break; @@ -222,7 +225,7 @@ main (int argc, char *argv[]) default: fprintf (stderr, "guestfsd: unexpected command line option 0x%x\n", - (unsigned) c); + (unsigned)c); exit (EXIT_FAILURE); } } @@ -243,7 +246,7 @@ main (int argc, char *argv[]) #endif #ifdef WIN32 -# define setenv(n,v,f) _putenv(n "=" v) +#define setenv(n, v, f) _putenv (n "=" v) #endif /* Set up a basic environment. After we are called by /init the * environment is essentially empty. @@ -282,41 +285,40 @@ main (int argc, char *argv[]) int sock; if (!listen_mode) { if (STRPREFIX (channel, "fd:")) { - if (sscanf (channel+3, "%d", &sock) != 1) + if (sscanf (channel + 3, "%d", &sock) != 1) error (EXIT_FAILURE, 0, "cannot parse --channel %s", channel); - } - else { - sock = open (channel, O_RDWR|O_CLOEXEC); + } else { + sock = open (channel, O_RDWR | O_CLOEXEC); if (sock == -1) { - fprintf (stderr, - "\n" - "Failed to connect to virtio-serial channel.\n" - "\n" - "This is a fatal error and the appliance will now exit.\n" - "\n" - "Usually this error is caused by either QEMU or the appliance\n" - "kernel not supporting the vmchannel method that the\n" - "libguestfs library chose to use. Please run\n" - "'libguestfs-test-tool' and provide the complete, unedited\n" - "output to the libguestfs developers, either in a bug report\n" - "or on the libguestfs redhat com mailing list.\n" - "\n"); + fprintf ( + stderr, + "\n" + "Failed to connect to virtio-serial channel.\n" + "\n" + "This is a fatal error and the appliance will now exit.\n" + "\n" + "Usually this error is caused by either QEMU or the appliance\n" + "kernel not supporting the vmchannel method that the\n" + "libguestfs library chose to use. Please run\n" + "'libguestfs-test-tool' and provide the complete, unedited\n" + "output to the libguestfs developers, either in a bug report\n" + "or on the libguestfs redhat com mailing list.\n" + "\n"); error (EXIT_FAILURE, errno, "open: %s", channel); } } - } - else { + } else { struct sockaddr_un addr; - sock = socket (AF_UNIX, SOCK_STREAM|SOCK_CLOEXEC, 0); + sock = socket (AF_UNIX, SOCK_STREAM | SOCK_CLOEXEC, 0); if (sock == -1) error (EXIT_FAILURE, errno, "socket"); addr.sun_family = AF_UNIX; - if (strlen (channel) > UNIX_PATH_MAX-1) + if (strlen (channel) > UNIX_PATH_MAX - 1) error (EXIT_FAILURE, 0, "%s: socket path is too long", channel); strcpy (addr.sun_path, channel); - if (bind (sock, (struct sockaddr *) &addr, sizeof addr) == -1) + if (bind (sock, (struct sockaddr *)&addr, sizeof addr) == -1) error (EXIT_FAILURE, errno, "bind: %s", channel); if (listen (sock, 4) == -1) @@ -389,7 +391,8 @@ makeraw (const char *channel, int fd) static int is_root_device_stat (struct stat *statbuf) { - if (statbuf->st_rdev == root_device) return 1; + if (statbuf->st_rdev == root_device) + return 1; return 0; } @@ -585,7 +588,8 @@ count_strings (char *const *argv) return argc; } -/* http://graphics.stanford.edu/~seander/bithacks.html#DetermineIfPowerOf2 */ +/* http://graphics.stanford.edu/~seander/bithacks.html#DetermineIfPowerOf2 + */ int is_power_of_2 (unsigned long v) { @@ -595,8 +599,8 @@ is_power_of_2 (unsigned long v) static int compare (const void *vp1, const void *vp2) { - char * const *p1 = (char * const *) vp1; - char * const *p2 = (char * const *) vp2; + char *const *p1 = (char *const *)vp1; + char *const *p2 = (char *const *)vp2; return strcmp (*p1, *p2); } @@ -694,8 +698,8 @@ compare_device_names (const char *a, const char *b) static int compare_device_names_vp (const void *vp1, const void *vp2) { - char * const *p1 = (char * const *) vp1; - char * const *p2 = (char * const *) vp2; + char *const *p1 = (char *const *)vp1; + char *const *p2 = (char *const *)vp2; return compare_device_names (*p1, *p2); } @@ -836,8 +840,8 @@ trim (char *str) { size_t len = strlen (str); - while (len > 0 && c_isspace (str[len-1])) { - str[len-1] = '\0'; + while (len > 0 && c_isspace (str[len - 1])) { + str[len - 1] = '\0'; len--; } @@ -847,7 +851,7 @@ trim (char *str) len--; } - memmove (str, p, len+1); + memmove (str, p, len + 1); } /* printf helper function so we can use %Q ("quoted") and %R to print @@ -859,26 +863,25 @@ print_shell_quote (FILE *stream, const struct printf_info *info ATTRIBUTE_UNUSED, const void *const *args) { -#define SAFE(c) (c_isalnum((c)) || \ - (c) == '/' || (c) == '-' || (c) == '_' || (c) == '.') +#define SAFE(c) \ + (c_isalnum ((c)) || (c) == '/' || (c) == '-' || (c) == '_' || (c) == '.') int i, len; - const char *str = *((const char **) (args[0])); + const char *str = *((const char **)(args[0])); for (i = len = 0; str[i]; ++i) { if (!SAFE (str[i])) { putc ('\\', stream); - len ++; + len++; } putc (str[i], stream); - len ++; + len++; } return len; } static int -print_sysroot_shell_quote (FILE *stream, - const struct printf_info *info, +print_sysroot_shell_quote (FILE *stream, const struct printf_info *info, const void *const *args) { fputs (sysroot, stream); @@ -887,8 +890,8 @@ print_sysroot_shell_quote (FILE *stream, #ifdef HAVE_REGISTER_PRINTF_SPECIFIER static int -print_arginfo (const struct printf_info *info ATTRIBUTE_UNUSED, - size_t n, int *argtypes, int *size) +print_arginfo (const struct printf_info *info ATTRIBUTE_UNUSED, size_t n, + int *argtypes, int *size) { if (n > 0) { argtypes[0] = PA_STRING; @@ -926,7 +929,7 @@ device_name_translation (const char *device) int fd; char *ret; - fd = open (device, O_RDONLY|O_CLOEXEC); + fd = open (device, O_RDONLY | O_CLOEXEC); if (fd >= 0) { close (fd); return strdup (device); @@ -938,12 +941,12 @@ device_name_translation (const char *device) /* If the name begins with "/dev/sd" then try the alternatives. */ if (!STRPREFIX (device, "/dev/sd")) return NULL; - device += 7; /* device == "a1" etc. */ + device += 7; /* device == "a1" etc. */ /* /dev/vd (virtio-blk) */ if (asprintf (&ret, "/dev/vd%s", device) == -1) return NULL; - fd = open (ret, O_RDONLY|O_CLOEXEC); + fd = open (ret, O_RDONLY | O_CLOEXEC); if (fd >= 0) { close (fd); return ret; @@ -953,7 +956,7 @@ device_name_translation (const char *device) /* /dev/hd (old IDE driver) */ if (asprintf (&ret, "/dev/hd%s", device) == -1) return NULL; - fd = open (ret, O_RDONLY|O_CLOEXEC); + fd = open (ret, O_RDONLY | O_CLOEXEC); if (fd >= 0) { close (fd); return ret; @@ -963,7 +966,7 @@ device_name_translation (const char *device) /* User-Mode Linux */ if (asprintf (&ret, "/dev/ubd%s", device) == -1) return NULL; - fd = open (ret, O_RDONLY|O_CLOEXEC); + fd = open (ret, O_RDONLY | O_CLOEXEC); if (fd >= 0) { close (fd); return ret; @@ -1023,8 +1026,7 @@ parse_btrfsvol (const char *desc_orig, mountable_t *mountable) return -1; } - if (!S_ISDIR (statbuf.st_mode) && - !is_root_device_stat (&statbuf)) { + if (!S_ISDIR (statbuf.st_mode) && !is_root_device_stat (&statbuf)) { volume = slash + 1; break; } @@ -1032,9 +1034,11 @@ parse_btrfsvol (const char *desc_orig, mountable_t *mountable) *slash = '/'; } - if (!device) return -1; + if (!device) + return -1; - if (!volume) return -1; + if (!volume) + return -1; mountable->volume = strdup (volume); if (!mountable->volume) { @@ -1064,8 +1068,8 @@ mountable_to_string (const mountable_t *mountable) return strdup (mountable->device); case MOUNTABLE_BTRFSVOL: - if (asprintf (&desc, "btrfsvol:%s/%s", - mountable->device, mountable->volume) == -1) + if (asprintf (&desc, "btrfsvol:%s/%s", mountable->device, + mountable->volume) == -1) return NULL; return desc; @@ -1137,13 +1141,13 @@ random_name (char *template) unsigned char c; char *p; - fd = open ("/dev/urandom", O_RDONLY|O_CLOEXEC); + fd = open ("/dev/urandom", O_RDONLY | O_CLOEXEC); if (fd == -1) return -1; p = strrchr (template, '/'); if (p == NULL) - abort (); /* internal error - bad template */ + abort (); /* internal error - bad template */ while (*p) { if (*p == 'X') { @@ -1175,8 +1179,8 @@ udev_settle (void) char cmd[80]; int r; - snprintf (cmd, sizeof cmd, "%s%s settle", - str_udevadm, verbose ? " --debug" : ""); + snprintf (cmd, sizeof cmd, "%s%s settle", str_udevadm, + verbose ? " --debug" : ""); if (verbose) printf ("%s\n", cmd); r = system (cmd); @@ -1201,5 +1205,4 @@ get_random_uuid (void) /* caller free */ return out; - } diff --git a/daemon/headtail.c b/daemon/headtail.c index 1614074..52c9e6a 100644 --- a/daemon/headtail.c +++ b/daemon/headtail.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -29,14 +30,15 @@ #include "actions.h" static char ** -headtail (const char *prog, const char *flag, const char *n, const char *path) +headtail (const char *prog, const char *flag, const char *n, + const char *path) { CLEANUP_FREE char *out = NULL, *err = NULL; int fd, flags, r; char **lines; CHROOT_IN; - fd = open (path, O_RDONLY|O_CLOEXEC); + fd = open (path, O_RDONLY | O_CLOEXEC); CHROOT_OUT; if (fd == -1) { @@ -58,7 +60,8 @@ headtail (const char *prog, const char *flag, const char *n, const char *path) #endif lines = split_lines (out); - if (lines == NULL) return NULL; + if (lines == NULL) + return NULL; return lines; } diff --git a/daemon/hexdump.c b/daemon/hexdump.c index 3afa48f..677c90e 100644 --- a/daemon/hexdump.c +++ b/daemon/hexdump.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -35,7 +36,7 @@ do_hexdump (const char *path) CLEANUP_FREE char *err = NULL; CHROOT_IN; - fd = open (path, O_RDONLY|O_CLOEXEC); + fd = open (path, O_RDONLY | O_CLOEXEC); CHROOT_OUT; if (fd == -1) { @@ -51,5 +52,5 @@ do_hexdump (const char *path) return NULL; } - return out; /* caller frees */ + return out; /* caller frees */ } diff --git a/daemon/hivex.c b/daemon/hivex.c index b47329e..837c5d9 100644 --- a/daemon/hivex.c +++ b/daemon/hivex.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -47,7 +48,7 @@ optgroup_hivex_available (void) static hive_h *h = NULL; /* Clean up the hivex handle on daemon exit. */ -void hivex_finalize (void) __attribute__((destructor)); +void hivex_finalize (void) __attribute__ ((destructor)); void hivex_finalize (void) { @@ -57,14 +58,15 @@ hivex_finalize (void) } } -#define NEED_HANDLE(errcode) \ - do { \ - if (!h) { \ - reply_with_error ("%s: you must call 'hivex-open' first to initialize the hivex handle", __func__); \ - return (errcode); \ - } \ - } \ - while (0) +#define NEED_HANDLE(errcode) \ + do { \ + if (!h) { \ + reply_with_error ("%s: you must call 'hivex-open' first to " \ + "initialize the hivex handle", \ + __func__); \ + return (errcode); \ + } \ + } while (0) /* Takes optional arguments, consult optargs_bitmask. */ int @@ -176,7 +178,7 @@ do_hivex_node_children (int64_t nodeh) ret->guestfs_int_hivex_node_list_len = len; ret->guestfs_int_hivex_node_list_val = - malloc (len * sizeof (guestfs_int_hivex_node)); + malloc (len * sizeof (guestfs_int_hivex_node)); if (ret->guestfs_int_hivex_node_list_val == NULL) { reply_with_perror ("malloc"); free (ret); @@ -249,7 +251,7 @@ do_hivex_node_values (int64_t nodeh) ret->guestfs_int_hivex_value_list_len = len; ret->guestfs_int_hivex_value_list_val = - malloc (len * sizeof (guestfs_int_hivex_value)); + malloc (len * sizeof (guestfs_int_hivex_value)); if (ret->guestfs_int_hivex_value_list_val == NULL) { reply_with_perror ("malloc"); free (ret); @@ -257,7 +259,7 @@ do_hivex_node_values (int64_t nodeh) } for (i = 0; i < len; ++i) - ret->guestfs_int_hivex_value_list_val[i].hivex_value_h = (int64_t) r[i]; + ret->guestfs_int_hivex_value_list_val[i].hivex_value_h = (int64_t)r[i]; return ret; } @@ -355,8 +357,7 @@ do_hivex_commit (const char *filename) reply_with_perror ("%s: commit failed", filename); return -1; } - } - else { + } else { if (hivex_commit (h, NULL, 0) == -1) { reply_with_perror ("commit failed"); return -1; @@ -396,12 +397,12 @@ do_hivex_node_delete_child (int64_t nodeh) } int -do_hivex_node_set_value (int64_t nodeh, - const char *key, int64_t t, +do_hivex_node_set_value (int64_t nodeh, const char *key, int64_t t, const char *val, size_t val_size) { - const hive_set_value v = - { .key = (char *) key, .t = t, .len = val_size, .value = (char *) val }; + const hive_set_value v = { + .key = (char *)key, .t = t, .len = val_size, .value = (char *)val + }; NEED_HANDLE (-1); diff --git a/daemon/hotplug.c b/daemon/hotplug.c index 234f51e..688c862 100644 --- a/daemon/hotplug.c +++ b/daemon/hotplug.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -77,7 +78,7 @@ do_internal_hot_add_drive (const char *label) return -1; } -GUESTFSD_EXT_CMD(str_fuser, fuser); +GUESTFSD_EXT_CMD (str_fuser, fuser); /* This function is called before a drive is hot-unplugged. */ int @@ -108,7 +109,8 @@ do_internal_hot_remove_drive_precheck (const char *label) */ if (r == 0) { reply_with_error ("disk with label '%s' is in use " - "(eg. mounted or belongs to a volume group)", label); + "(eg. mounted or belongs to a volume group)", + label); /* Useful for debugging when a drive cannot be unplugged. */ if (verbose) diff --git a/daemon/htonl.c b/daemon/htonl.c index c9f1af0..329d397 100644 --- a/daemon/htonl.c +++ b/daemon/htonl.c @@ -31,12 +31,10 @@ #ifndef HAVE_NTOHL -#undef htonl -#undef ntohl +#undef htonl +#undef ntohl -uint32_t -htonl (x) - uint32_t x; +uint32_t htonl (x) uint32_t x; { #if defined(BYTE_ORDER) && defined(BIG_ENDIAN) && defined(LITTLE_ENDIAN) #if BYTE_ORDER == BIG_ENDIAN @@ -44,25 +42,27 @@ htonl (x) #elif BYTE_ORDER == LITTLE_ENDIAN return bswap_32 (x); #else -# error "What kind of system is this?" +#error "What kind of system is this?" #endif #else #error "BYTE_ORDER/BIG_ENDIAN/LITTLE_ENDIAN are not defined" #endif } -uint32_t ntohl (uint32_t x) { return htonl (x); } +uint32_t +ntohl (uint32_t x) +{ + return htonl (x); +} #endif /* !HAVE_NTOHL */ #ifndef HAVE_NTOHS -#undef htons -#undef ntohs +#undef htons +#undef ntohs -uint16_t -htons (x) - uint16_t x; +uint16_t htons (x) uint16_t x; { #if defined(BYTE_ORDER) && defined(BIG_ENDIAN) && defined(LITTLE_ENDIAN) #if BYTE_ORDER == BIG_ENDIAN @@ -70,13 +70,17 @@ htons (x) #elif BYTE_ORDER == LITTLE_ENDIAN return bswap_16 (x); #else -# error "What kind of system is this?" +#error "What kind of system is this?" #endif #else #error "BYTE_ORDER/BIG_ENDIAN/LITTLE_ENDIAN are not defined" #endif } -uint16_t ntohs (uint16_t x) { return htons (x); } +uint16_t +ntohs (uint16_t x) +{ + return htons (x); +} #endif /* !HAVE_NTOHS */ diff --git a/daemon/initrd.c b/daemon/initrd.c index c9fc2dd..f3d9f48 100644 --- a/daemon/initrd.c +++ b/daemon/initrd.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -31,8 +32,8 @@ #include "daemon.h" #include "actions.h" -GUESTFSD_EXT_CMD(str_zcat, zcat); -GUESTFSD_EXT_CMD(str_cpio, cpio); +GUESTFSD_EXT_CMD (str_zcat, zcat); +GUESTFSD_EXT_CMD (str_cpio, cpio); char ** do_initrd_list (const char *path) @@ -46,7 +47,8 @@ do_initrd_list (const char *path) int ret; /* "zcat /sysroot/<path> | cpio --quiet -it", but path must be quoted. */ - if (asprintf_nowarn (&cmd, "%s %R | %s --quiet -it", str_zcat, path, str_cpio) == -1) { + if (asprintf_nowarn (&cmd, "%s %R | %s --quiet -it", str_zcat, path, + str_cpio) == -1) { reply_with_perror ("asprintf"); return NULL; } @@ -62,8 +64,8 @@ do_initrd_list (const char *path) allocsize = 0; while ((len = getline (&filename, &allocsize, fp)) != -1) { - if (len > 0 && filename[len-1] == '\n') - filename[len-1] = '\0'; + if (len > 0 && filename[len - 1] == '\n') + filename[len - 1] = '\0'; if (add_string (&filenames, filename) == -1) { pclose (fp); return NULL; @@ -111,7 +113,8 @@ do_initrd_cat (const char *path, const char *filename, size_t *size_r) * (eg. if the named file does not exist in the cpio archive) -- * cpio is silent in this case. */ - /* "zcat /sysroot/<path> | cpio --quiet -id file", but paths must be quoted */ + /* "zcat /sysroot/<path> | cpio --quiet -id file", but paths must be + * quoted */ if (asprintf_nowarn (&cmd, "cd %Q && zcat %R | cpio --quiet -id %Q", tmpdir, path, filename) == -1) { reply_with_perror ("asprintf"); @@ -140,7 +143,7 @@ do_initrd_cat (const char *path, const char *filename, size_t *size_r) } /* See if we got a file. */ - fd = open (fullpath, O_RDONLY|O_CLOEXEC); + fd = open (fullpath, O_RDONLY | O_CLOEXEC); if (fd == -1) { reply_with_perror ("open: %s:%s", path, filename); rmdir (tmpdir); @@ -161,8 +164,8 @@ do_initrd_cat (const char *path, const char *filename, size_t *size_r) * be caught later when we try to serialize the message. */ if (statbuf.st_size >= GUESTFS_MESSAGE_MAX) { - reply_with_error ("%s:%s: file is too large for the protocol", - path, filename); + reply_with_error ("%s:%s: file is too large for the protocol", path, + filename); goto cleanup; } @@ -192,7 +195,7 @@ do_initrd_cat (const char *path, const char *filename, size_t *size_r) */ *size_r = statbuf.st_size; - cleanup: +cleanup: if (fd >= 0) close (fd); @@ -205,7 +208,8 @@ do_initrd_cat (const char *path, const char *filename, size_t *size_r) /* Remove the directories up to and including the temp directory. */ do { char *p = strrchr (fullpath, '/'); - if (!p) break; + if (!p) + break; *p = '\0'; if (rmdir (fullpath) == -1) { fprintf (stderr, "rmdir: %s: %m\n", fullpath); diff --git a/daemon/inotify.c b/daemon/inotify.c index 562365b..7599e1f 100644 --- a/daemon/inotify.c +++ b/daemon/inotify.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -35,19 +36,20 @@ #include "optgroups.h" #ifdef HAVE_SYS_INOTIFY_H -GUESTFSD_EXT_CMD(str_sort, sort); +GUESTFSD_EXT_CMD (str_sort, sort); /* Currently open inotify handle, or -1 if not opened. */ static int inotify_fd = -1; -static char inotify_buf[64*1024*1024]; /* Event buffer, [0..posn-1] is valid */ +static char + inotify_buf[64 * 1024 * 1024]; /* Event buffer, [0..posn-1] is valid */ static size_t inotify_posn = 0; /* Because of use of arbitrary offsets within inotify_buf. */ #pragma GCC diagnostic ignored "-Wcast-align" /* Clean up the inotify handle on daemon exit. */ -static void inotify_finalize (void) __attribute__((destructor)); +static void inotify_finalize (void) __attribute__ ((destructor)); static void inotify_finalize (void) { @@ -64,12 +66,14 @@ optgroup_inotify_available (void) } /* Because inotify_init does NEED_ROOT, NEED_INOTIFY implies NEED_ROOT. */ -#define NEED_INOTIFY(errcode) \ - do { \ - if (inotify_fd == -1) { \ - reply_with_error ("%s: you must call 'inotify_init' first to initialize inotify", __func__); \ - return (errcode); \ - } \ +#define NEED_INOTIFY(errcode) \ + do { \ + if (inotify_fd == -1) { \ + reply_with_error ( \ + "%s: you must call 'inotify_init' first to initialize inotify", \ + __func__); \ + return (errcode); \ + } \ } while (0) #define MQE_PATH "/proc/sys/fs/inotify/max_queued_events" @@ -216,14 +220,14 @@ do_inotify_read (void) r = read (inotify_fd, inotify_buf + inotify_posn, sizeof (inotify_buf) - inotify_posn); if (r == -1) { - /* End of list? */ + /* End of list? */ if (errno == EWOULDBLOCK || (EWOULDBLOCK != EAGAIN && errno == EAGAIN)) break; reply_with_perror ("read"); goto error; } - if (r == 0) { /* End of file - we're not expecting it. */ + if (r == 0) { /* End of file - we're not expecting it. */ reply_with_error ("unexpected end of file"); goto error; } @@ -236,9 +240,9 @@ do_inotify_read (void) guestfs_int_inotify_event *np; guestfs_int_inotify_event *in; - event = (struct inotify_event *) &inotify_buf[n]; + event = (struct inotify_event *)&inotify_buf[n]; - /* Have we got a complete event in the buffer? */ +/* Have we got a complete event in the buffer? */ #ifdef __GNUC__ if (n + sizeof (struct inotify_event) > inotify_posn || n + sizeof (struct inotify_event) + event->len > inotify_posn) @@ -249,19 +253,21 @@ do_inotify_read (void) /* Check event->len is reasonable (note the field is uint32_t). */ if (event->len > PATH_MAX) { - reply_with_error ("event->len = %" PRIu32 " > PATH_MAX", event->len); + reply_with_error ("event->len = %" PRIu32 " > PATH_MAX", + event->len); goto error; } np = realloc (ret->guestfs_int_inotify_event_list_val, (ret->guestfs_int_inotify_event_list_len + 1) * - sizeof (guestfs_int_inotify_event)); + sizeof (guestfs_int_inotify_event)); if (np == NULL) { reply_with_perror ("realloc"); goto error; } ret->guestfs_int_inotify_event_list_val = np; - in = &ret->guestfs_int_inotify_event_list_val[ret->guestfs_int_inotify_event_list_len]; + in = &ret->guestfs_int_inotify_event_list_val + [ret->guestfs_int_inotify_event_list_len]; ret->guestfs_int_inotify_event_list_len++; in->in_wd = event->wd; @@ -271,7 +277,8 @@ do_inotify_read (void) if (event->len > 0) in->in_name = strdup (event->name); else - in->in_name = strdup (""); /* Should have optional string fields XXX. */ + in->in_name = + strdup (""); /* Should have optional string fields XXX. */ if (in->in_name == NULL) { reply_with_perror ("strdup"); goto error; @@ -280,7 +287,7 @@ do_inotify_read (void) /* Estimate space used by this event in the message. */ space -= 16 + 4 + strlen (in->in_name) + 4; - /* Move pointer to next event. */ +/* Move pointer to next event. */ #ifdef __GNUC__ n += sizeof (struct inotify_event) + event->len; #else @@ -298,8 +305,8 @@ do_inotify_read (void) /* Return the messages. */ return ret; - error: - xdr_free ((xdrproc_t) xdr_guestfs_int_inotify_event_list, (char *) ret); +error: + xdr_free ((xdrproc_t)xdr_guestfs_int_inotify_event_list, (char *)ret); free (ret); return NULL; } @@ -339,17 +346,19 @@ do_inotify_files (void) if (events->guestfs_int_inotify_event_list_len == 0) { free (events); - break; /* End of list of events. */ + break; /* End of list of events. */ } for (i = 0; i < events->guestfs_int_inotify_event_list_len; ++i) { - const char *name = events->guestfs_int_inotify_event_list_val[i].in_name; + const char *name = + events->guestfs_int_inotify_event_list_val[i].in_name; if (name[0] != '\0') fprintf (fp, "%s\n", name); } - xdr_free ((xdrproc_t) xdr_guestfs_int_inotify_event_list, (char *) events); + xdr_free ((xdrproc_t)xdr_guestfs_int_inotify_event_list, + (char *)events); free (events); } @@ -366,8 +375,8 @@ do_inotify_files (void) while (fgets (buf, sizeof buf, fp) != NULL) { size_t len = strlen (buf); - if (len > 0 && buf[len-1] == '\n') - buf[len-1] = '\0'; + if (len > 0 && buf[len - 1] == '\n') + buf[len - 1] = '\0'; if (add_string (&ret, buf) == -1) goto error; @@ -382,7 +391,7 @@ do_inotify_files (void) unlink (tempfile); return ret.argv; - error: +error: if (fp != NULL) fclose (fp); diff --git a/daemon/internal.c b/daemon/internal.c index 5fb3d54..640a505 100644 --- a/daemon/internal.c +++ b/daemon/internal.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ /* Internal functions are not part of the public API. */ @@ -46,8 +47,7 @@ do_internal_autosync (void) } /* NB: Only called when valgrinding the daemon. */ -int __attribute__((noreturn)) -do_internal_exit (void) +int __attribute__ ((noreturn)) do_internal_exit (void) { /* Send a reply before exiting so the protocol doesn't get confused. */ reply (NULL, NULL); diff --git a/daemon/is.c b/daemon/is.c index 6b5c9a2..0d09a2d 100644 --- a/daemon/is.c +++ b/daemon/is.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -48,7 +49,8 @@ do_is_file (const char *path, int followsymlinks) followsymlinks = 0; r = get_mode (path, &mode, followsymlinks); - if (r <= 0) return r; + if (r <= 0) + return r; return S_ISREG (mode); } @@ -63,7 +65,8 @@ do_is_dir (const char *path, int followsymlinks) followsymlinks = 0; r = get_mode (path, &mode, followsymlinks); - if (r <= 0) return r; + if (r <= 0) + return r; return S_ISDIR (mode); } @@ -78,7 +81,8 @@ do_is_chardev (const char *path, int followsymlinks) followsymlinks = 0; r = get_mode (path, &mode, followsymlinks); - if (r <= 0) return r; + if (r <= 0) + return r; return S_ISCHR (mode); } @@ -93,7 +97,8 @@ do_is_blockdev (const char *path, int followsymlinks) followsymlinks = 0; r = get_mode (path, &mode, followsymlinks); - if (r <= 0) return r; + if (r <= 0) + return r; return S_ISBLK (mode); } @@ -108,7 +113,8 @@ do_is_fifo (const char *path, int followsymlinks) followsymlinks = 0; r = get_mode (path, &mode, followsymlinks); - if (r <= 0) return r; + if (r <= 0) + return r; return S_ISFIFO (mode); } @@ -119,7 +125,8 @@ do_is_symlink (const char *path) int r; r = get_mode (path, &mode, 0); - if (r <= 0) return r; + if (r <= 0) + return r; return S_ISLNK (mode); } @@ -134,7 +141,8 @@ do_is_socket (const char *path, int followsymlinks) followsymlinks = 0; r = get_mode (path, &mode, followsymlinks); - if (r <= 0) return r; + if (r <= 0) + return r; return S_ISSOCK (mode); } @@ -152,9 +160,8 @@ get_mode (const char *path, mode_t *mode, int followsymlinks) if (errno != ENOENT && errno != ENOTDIR) { reply_with_perror ("stat: %s", path); return -1; - } - else - return 0; /* Doesn't exist, means return false. */ + } else + return 0; /* Doesn't exist, means return false. */ } if (mode) diff --git a/daemon/isoinfo.c b/daemon/isoinfo.c index 3e1acf8..cf7b80a 100644 --- a/daemon/isoinfo.c +++ b/daemon/isoinfo.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -30,7 +31,7 @@ #include "daemon.h" #include "actions.h" -GUESTFSD_EXT_CMD(str_isoinfo, isoinfo); +GUESTFSD_EXT_CMD (str_isoinfo, isoinfo); static int parse_uint32 (uint32_t *ret, const char *str) @@ -63,9 +64,8 @@ parse_time_t (int64_t *ret, const char *str) return 0; } - if (sscanf (str, "%04d %02d %02d %02d:%02d:%02d", - &tm.tm_year, &tm.tm_mon, &tm.tm_mday, - &tm.tm_hour, &tm.tm_min, &tm.tm_sec) != 6) { + if (sscanf (str, "%04d %02d %02d %02d:%02d:%02d", &tm.tm_year, &tm.tm_mon, + &tm.tm_mday, &tm.tm_hour, &tm.tm_min, &tm.tm_sec) != 6) { reply_with_error ("cannot parse date from isoinfo: %s", str); return -1; } @@ -99,10 +99,10 @@ parse_isoinfo (char **lines) } /* Default each int field in the struct to -1. */ - ret->iso_volume_space_size = (uint32_t) -1; - ret->iso_volume_set_size = (uint32_t) -1; - ret->iso_volume_sequence_number = (uint32_t) -1; - ret->iso_logical_block_size = (uint32_t) -1; + ret->iso_volume_space_size = (uint32_t)-1; + ret->iso_volume_set_size = (uint32_t)-1; + ret->iso_volume_sequence_number = (uint32_t)-1; + ret->iso_logical_block_size = (uint32_t)-1; ret->iso_volume_creation_t = -1; ret->iso_volume_modification_t = -1; ret->iso_volume_expiration_t = -1; @@ -111,69 +111,64 @@ parse_isoinfo (char **lines) for (i = 0; lines[i] != NULL; ++i) { if (STRPREFIX (lines[i], "System id: ")) { ret->iso_system_id = strdup (&lines[i][11]); - if (ret->iso_system_id == NULL) goto error; - } - else if (STRPREFIX (lines[i], "Volume id: ")) { + if (ret->iso_system_id == NULL) + goto error; + } else if (STRPREFIX (lines[i], "Volume id: ")) { ret->iso_volume_id = strdup (&lines[i][11]); - if (ret->iso_volume_id == NULL) goto error; - } - else if (STRPREFIX (lines[i], "Volume set id: ")) { + if (ret->iso_volume_id == NULL) + goto error; + } else if (STRPREFIX (lines[i], "Volume set id: ")) { ret->iso_volume_set_id = strdup (&lines[i][15]); - if (ret->iso_volume_set_id == NULL) goto error; - } - else if (STRPREFIX (lines[i], "Publisher id: ")) { + if (ret->iso_volume_set_id == NULL) + goto error; + } else if (STRPREFIX (lines[i], "Publisher id: ")) { ret->iso_publisher_id = strdup (&lines[i][14]); - if (ret->iso_publisher_id == NULL) goto error; - } - else if (STRPREFIX (lines[i], "Data preparer id: ")) { + if (ret->iso_publisher_id == NULL) + goto error; + } else if (STRPREFIX (lines[i], "Data preparer id: ")) { ret->iso_data_preparer_id = strdup (&lines[i][18]); - if (ret->iso_data_preparer_id == NULL) goto error; - } - else if (STRPREFIX (lines[i], "Application id: ")) { + if (ret->iso_data_preparer_id == NULL) + goto error; + } else if (STRPREFIX (lines[i], "Application id: ")) { ret->iso_application_id = strdup (&lines[i][16]); - if (ret->iso_application_id == NULL) goto error; - } - else if (STRPREFIX (lines[i], "Copyright File id: ")) { + if (ret->iso_application_id == NULL) + goto error; + } else if (STRPREFIX (lines[i], "Copyright File id: ")) { ret->iso_copyright_file_id = strdup (&lines[i][19]); - if (ret->iso_copyright_file_id == NULL) goto error; - } - else if (STRPREFIX (lines[i], "Abstract File id: ")) { + if (ret->iso_copyright_file_id == NULL) + goto error; + } else if (STRPREFIX (lines[i], "Abstract File id: ")) { ret->iso_abstract_file_id = strdup (&lines[i][18]); - if (ret->iso_abstract_file_id == NULL) goto error; - } - else if (STRPREFIX (lines[i], "Bibliographic File id: ")) { + if (ret->iso_abstract_file_id == NULL) + goto error; + } else if (STRPREFIX (lines[i], "Bibliographic File id: ")) { ret->iso_bibliographic_file_id = strdup (&lines[i][23]); - if (ret->iso_bibliographic_file_id == NULL) goto error; - } - else if (STRPREFIX (lines[i], "Volume size is: ")) { + if (ret->iso_bibliographic_file_id == NULL) + goto error; + } else if (STRPREFIX (lines[i], "Volume size is: ")) { if (parse_uint32 (&ret->iso_volume_space_size, &lines[i][16]) == -1) goto error; - } - else if (STRPREFIX (lines[i], "Volume set size is: ")) { + } else if (STRPREFIX (lines[i], "Volume set size is: ")) { if (parse_uint32 (&ret->iso_volume_set_size, &lines[i][20]) == -1) goto error; - } - else if (STRPREFIX (lines[i], "Volume set sequence number is: ")) { - if (parse_uint32 (&ret->iso_volume_sequence_number, &lines[i][31]) == -1) + } else if (STRPREFIX (lines[i], "Volume set sequence number is: ")) { + if (parse_uint32 (&ret->iso_volume_sequence_number, &lines[i][31]) == + -1) goto error; - } - else if (STRPREFIX (lines[i], "Logical block size is: ")) { + } else if (STRPREFIX (lines[i], "Logical block size is: ")) { if (parse_uint32 (&ret->iso_logical_block_size, &lines[i][23]) == -1) goto error; - } - else if (STRPREFIX (lines[i], "Creation Date: ")) { + } else if (STRPREFIX (lines[i], "Creation Date: ")) { if (parse_time_t (&ret->iso_volume_creation_t, &lines[i][19]) == -1) goto error; - } - else if (STRPREFIX (lines[i], "Modification Date: ")) { - if (parse_time_t (&ret->iso_volume_modification_t, &lines[i][19]) == -1) + } else if (STRPREFIX (lines[i], "Modification Date: ")) { + if (parse_time_t (&ret->iso_volume_modification_t, &lines[i][19]) == + -1) goto error; - } - else if (STRPREFIX (lines[i], "Expiration Date: ")) { + } else if (STRPREFIX (lines[i], "Expiration Date: ")) { if (parse_time_t (&ret->iso_volume_expiration_t, &lines[i][19]) == -1) goto error; - } - else if (STRPREFIX (lines[i], "Effective Date: ")) { + } else if (STRPREFIX (lines[i], "Effective Date: ")) { if (parse_time_t (&ret->iso_volume_effective_t, &lines[i][19]) == -1) goto error; } @@ -185,44 +180,53 @@ parse_isoinfo (char **lines) */ if (ret->iso_system_id == NULL) { ret->iso_system_id = strdup (""); - if (ret->iso_system_id == NULL) goto error; + if (ret->iso_system_id == NULL) + goto error; } if (ret->iso_volume_id == NULL) { ret->iso_volume_id = strdup (""); - if (ret->iso_volume_id == NULL) goto error; + if (ret->iso_volume_id == NULL) + goto error; } if (ret->iso_volume_set_id == NULL) { ret->iso_volume_set_id = strdup (""); - if (ret->iso_volume_set_id == NULL) goto error; + if (ret->iso_volume_set_id == NULL) + goto error; } if (ret->iso_publisher_id == NULL) { ret->iso_publisher_id = strdup (""); - if (ret->iso_publisher_id == NULL) goto error; + if (ret->iso_publisher_id == NULL) + goto error; } if (ret->iso_data_preparer_id == NULL) { ret->iso_data_preparer_id = strdup (""); - if (ret->iso_data_preparer_id == NULL) goto error; + if (ret->iso_data_preparer_id == NULL) + goto error; } if (ret->iso_application_id == NULL) { ret->iso_application_id = strdup (""); - if (ret->iso_application_id == NULL) goto error; + if (ret->iso_application_id == NULL) + goto error; } if (ret->iso_copyright_file_id == NULL) { ret->iso_copyright_file_id = strdup (""); - if (ret->iso_copyright_file_id == NULL) goto error; + if (ret->iso_copyright_file_id == NULL) + goto error; } if (ret->iso_abstract_file_id == NULL) { ret->iso_abstract_file_id = strdup (""); - if (ret->iso_abstract_file_id == NULL) goto error; + if (ret->iso_abstract_file_id == NULL) + goto error; } if (ret->iso_bibliographic_file_id == NULL) { ret->iso_bibliographic_file_id = strdup (""); - if (ret->iso_bibliographic_file_id == NULL) goto error; + if (ret->iso_bibliographic_file_id == NULL) + goto error; } return ret; - error: +error: free (ret->iso_system_id); free (ret->iso_volume_id); free (ret->iso_volume_set_id); diff --git a/daemon/journal.c b/daemon/journal.c index a2a1c73..d82480b 100644 --- a/daemon/journal.c +++ b/daemon/journal.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -50,7 +51,7 @@ optgroup_journal_available (void) static sd_journal *j = NULL; /* Clean up the handle on daemon exit. */ -void journal_finalize (void) __attribute__((destructor)); +void journal_finalize (void) __attribute__ ((destructor)); void journal_finalize (void) { @@ -60,14 +61,15 @@ journal_finalize (void) } } -#define NEED_HANDLE(errcode) \ - do { \ - if (!j) { \ - reply_with_error ("%s: you must call 'journal-open' first to initialize the journal handle", __func__); \ - return (errcode); \ - } \ - } \ - while (0) +#define NEED_HANDLE(errcode) \ + do { \ + if (!j) { \ + reply_with_error ("%s: you must call 'journal-open' first to " \ + "initialize the journal handle", \ + __func__); \ + return (errcode); \ + } \ + } while (0) int do_journal_open (const char *directory) @@ -88,7 +90,8 @@ do_journal_open (const char *directory) r = sd_journal_open_directory (&j, buf, 0); if (r < 0) { - reply_with_perror_errno (-r, "sd_journal_open_directory: %s", directory); + reply_with_perror_errno (-r, "sd_journal_open_directory: %s", + directory); return -1; } @@ -133,12 +136,12 @@ do_journal_skip (int64_t skip) return 0; if (skip > 0) - r = sd_journal_next_skip (j, (uint64_t) skip); + r = sd_journal_next_skip (j, (uint64_t)skip); else /* skip < 0 */ - r = sd_journal_previous_skip (j, (uint64_t) -skip); + r = sd_journal_previous_skip (j, (uint64_t)-skip); if (r < 0) { - reply_with_perror_errno (-r, "failed to skip %" PRIi64 " journal entries", - skip); + reply_with_perror_errno ( + -r, "failed to skip %" PRIi64 " journal entries", skip); return -1; } @@ -164,8 +167,8 @@ do_internal_journal_get (void) sd_journal_restart_data (j); while ((r = sd_journal_enumerate_data (j, &data, &len)) > 0) { - //fprintf (stderr, "data[%zu] = %.*s\n", len, (int) len, (char*) data); - len_be = htobe64 ((uint64_t) len); + // fprintf (stderr, "data[%zu] = %.*s\n", len, (int) len, (char*) data); + len_be = htobe64 ((uint64_t)len); if (send_file_write (&len_be, sizeof (len_be)) < 0) return -1; if (send_file_write (data, len) < 0) @@ -174,7 +177,7 @@ do_internal_journal_get (void) /* Failure while enumerating the fields. */ if (r < 0) { - send_file_end (1); /* Cancel. */ + send_file_end (1); /* Cancel. */ errno = -r; perror ("sd_journal_enumerate_data"); return -1; @@ -233,7 +236,7 @@ do_journal_get_realtime_usec (void) return -1; } - return (int64_t) usec; + return (int64_t)usec; } #else /* !HAVE_SD_JOURNAL */ diff --git a/daemon/labels.c b/daemon/labels.c index 20f27cb..d54bbf9 100644 --- a/daemon/labels.c +++ b/daemon/labels.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -27,7 +28,7 @@ #include "actions.h" #include "optgroups.h" -GUESTFSD_EXT_CMD(str_dosfslabel, dosfslabel); +GUESTFSD_EXT_CMD (str_dosfslabel, dosfslabel); static int dosfslabel (const char *device, const char *label) @@ -71,8 +72,7 @@ do_set_label (const mountable_t *mountable, const char *label) if (STREQ (vfs_type, "btrfs")) r = btrfs_set_label (mountable->device, label); - else if (STREQ (vfs_type, "msdos") || - STREQ (vfs_type, "fat") || + else if (STREQ (vfs_type, "msdos") || STREQ (vfs_type, "fat") || STREQ (vfs_type, "vfat")) r = dosfslabel (mountable->device, label); @@ -86,7 +86,8 @@ do_set_label (const mountable_t *mountable, const char *label) r = xfslabel (mountable->device, label); else - NOT_SUPPORTED (-1, "don't know how to set the label for '%s' filesystems", + NOT_SUPPORTED (-1, + "don't know how to set the label for '%s' filesystems", vfs_type); return r; diff --git a/daemon/ldm.c b/daemon/ldm.c index 71cdf46..15a3a2f 100644 --- a/daemon/ldm.c +++ b/daemon/ldm.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -32,7 +33,7 @@ #include "actions.h" #include "optgroups.h" -GUESTFSD_EXT_CMD(str_ldmtool, ldmtool); +GUESTFSD_EXT_CMD (str_ldmtool, ldmtool); int optgroup_ldm_available (void) @@ -43,7 +44,8 @@ optgroup_ldm_available (void) static int glob_errfunc (const char *epath, int eerrno) { - fprintf (stderr, "glob: failure reading %s: %s\n", epath, strerror (eerrno)); + fprintf (stderr, "glob: failure reading %s: %s\n", epath, + strerror (eerrno)); return 1; } @@ -73,12 +75,13 @@ get_devices (const char *pattern) goto error; } - if (end_stringsbuf (&ret) == -1) goto error; + if (end_stringsbuf (&ret) == -1) + goto error; globfree (&devs); return ret.argv; - error: +error: globfree (&devs); if (ret.argv != NULL) free_stringslen (ret.argv, ret.size); @@ -171,7 +174,7 @@ parse_json (const char *json, const char *func) return tree; } -#define TYPE_ERROR ((char **) -1) +#define TYPE_ERROR ((char **)-1) static char ** json_value_to_string_list (yajl_val node) @@ -180,13 +183,13 @@ json_value_to_string_list (yajl_val node) yajl_val n; size_t i, len; - if (! YAJL_IS_ARRAY (node)) + if (!YAJL_IS_ARRAY (node)) return TYPE_ERROR; len = YAJL_GET_ARRAY (node)->len; for (i = 0; i < len; ++i) { n = YAJL_GET_ARRAY (node)->values[i]; - if (! YAJL_IS_STRING (n)) + if (!YAJL_IS_STRING (n)) return TYPE_ERROR; if (add_string (&strs, YAJL_GET_STRING (n)) == -1) return NULL; @@ -198,8 +201,8 @@ json_value_to_string_list (yajl_val node) } static char ** -parse_json_get_string_list (const char *json, - const char *func, const char *cmd) +parse_json_get_string_list (const char *json, const char *func, + const char *cmd) { char **ret; yajl_val tree = NULL; @@ -211,7 +214,8 @@ parse_json_get_string_list (const char *json, ret = json_value_to_string_list (tree); yajl_tree_free (tree); if (ret == TYPE_ERROR) { - reply_with_error ("output of '%s' was not a JSON array of strings", cmd); + reply_with_error ("output of '%s' was not a JSON array of strings", + cmd); return NULL; } return ret; @@ -231,7 +235,7 @@ parse_json_get_object_string (const char *json, const char *key, int flags, if (tree == NULL) return NULL; - if (! YAJL_IS_OBJECT (tree)) + if (!YAJL_IS_OBJECT (tree)) goto bad_type; len = YAJL_GET_OBJECT (tree)->len; @@ -256,9 +260,10 @@ parse_json_get_object_string (const char *json, const char *key, int flags, } } - bad_type: +bad_type: reply_with_error ("output of '%s' was not a JSON object " - "containing a key '%s' of type string", cmd, key); + "containing a key '%s' of type string", + cmd, key); yajl_tree_free (tree); return NULL; } @@ -275,7 +280,7 @@ parse_json_get_object_string_list (const char *json, const char *key, if (tree == NULL) return NULL; - if (! YAJL_IS_OBJECT (tree)) + if (!YAJL_IS_OBJECT (tree)) goto bad_type; len = YAJL_GET_OBJECT (tree)->len; @@ -290,7 +295,7 @@ parse_json_get_object_string_list (const char *json, const char *key, } } - bad_type: +bad_type: reply_with_error ("output of '%s' was not a JSON object " "containing a key '%s' of type array of strings", cmd, key); @@ -303,11 +308,11 @@ do_ldmtool_scan (void) { const char *empty_list[] = { NULL }; - return do_ldmtool_scan_devices ((char * const *) empty_list); + return do_ldmtool_scan_devices ((char *const *)empty_list); } char ** -do_ldmtool_scan_devices (char * const * devices) +do_ldmtool_scan_devices (char *const *devices) { char **ret; size_t i, nr_devices; @@ -325,8 +330,8 @@ do_ldmtool_scan_devices (char * const * devices) argv[0] = str_ldmtool; argv[1] = "scan"; for (i = 0; i < nr_devices; ++i) - argv[2+i] = devices[i]; - argv[2+i] = NULL; + argv[2 + i] = devices[i]; + argv[2 + i] = NULL; r = commandv (&out, &err, argv); if (r == -1) { @@ -344,14 +349,15 @@ do_ldmtool_diskgroup_name (const char *diskgroup) int r; CLEANUP_FREE char *out = NULL, *err = NULL; - r = command (&out, &err, str_ldmtool, "show", "diskgroup", diskgroup, NULL); + r = command (&out, &err, str_ldmtool, "show", "diskgroup", diskgroup, + NULL); if (r == -1) { reply_with_error ("%s", err); return NULL; } - return parse_json_get_object_string (out, "name", 0, - __func__, "ldmtool show diskgroup"); + return parse_json_get_object_string (out, "name", 0, __func__, + "ldmtool show diskgroup"); } char ** @@ -360,15 +366,16 @@ do_ldmtool_diskgroup_volumes (const char *diskgroup) int r; CLEANUP_FREE char *out = NULL, *err = NULL; - r = command (&out, &err, str_ldmtool, "show", "diskgroup", diskgroup, NULL); + r = command (&out, &err, str_ldmtool, "show", "diskgroup", diskgroup, + NULL); if (r == -1) { reply_with_error ("%s", err); return NULL; } free (err); - return parse_json_get_object_string_list (out, "volumes", - __func__, "ldmtool show diskgroup"); + return parse_json_get_object_string_list (out, "volumes", __func__, + "ldmtool show diskgroup"); } char ** @@ -377,14 +384,15 @@ do_ldmtool_diskgroup_disks (const char *diskgroup) int r; CLEANUP_FREE char *out = NULL, *err = NULL; - r = command (&out, &err, str_ldmtool, "show", "diskgroup", diskgroup, NULL); + r = command (&out, &err, str_ldmtool, "show", "diskgroup", diskgroup, + NULL); if (r == -1) { reply_with_error ("%s", err); return NULL; } - return parse_json_get_object_string_list (out, "disks", - __func__, "ldmtool show diskgroup"); + return parse_json_get_object_string_list (out, "disks", __func__, + "ldmtool show diskgroup"); } char * @@ -393,15 +401,15 @@ do_ldmtool_volume_type (const char *diskgroup, const char *volume) int r; CLEANUP_FREE char *out = NULL, *err = NULL; - r = command (&out, &err, - str_ldmtool, "show", "volume", diskgroup, volume, NULL); + r = command (&out, &err, str_ldmtool, "show", "volume", diskgroup, volume, + NULL); if (r == -1) { reply_with_error ("%s", err); return NULL; } - return parse_json_get_object_string (out, "type", 0, - __func__, "ldmtool show volume"); + return parse_json_get_object_string (out, "type", 0, __func__, + "ldmtool show volume"); } char * @@ -410,15 +418,16 @@ do_ldmtool_volume_hint (const char *diskgroup, const char *volume) int r; CLEANUP_FREE char *out = NULL, *err = NULL; - r = command (&out, &err, - str_ldmtool, "show", "volume", diskgroup, volume, NULL); + r = command (&out, &err, str_ldmtool, "show", "volume", diskgroup, volume, + NULL); if (r == -1) { reply_with_error ("%s", err); return NULL; } - return parse_json_get_object_string (out, "hint", GET_STRING_NULL_TO_EMPTY, - __func__, "ldmtool show volume"); + return parse_json_get_object_string (out, "hint", + GET_STRING_NULL_TO_EMPTY, __func__, + "ldmtool show volume"); } char ** @@ -427,13 +436,13 @@ do_ldmtool_volume_partitions (const char *diskgroup, const char *volume) int r; CLEANUP_FREE char *out = NULL, *err = NULL; - r = command (&out, &err, - str_ldmtool, "show", "volume", diskgroup, volume, NULL); + r = command (&out, &err, str_ldmtool, "show", "volume", diskgroup, volume, + NULL); if (r == -1) { reply_with_error ("%s", err); return NULL; } - return parse_json_get_object_string_list (out, "partitions", - __func__, "ldmtool show volume"); + return parse_json_get_object_string_list (out, "partitions", __func__, + "ldmtool show volume"); } diff --git a/daemon/link.c b/daemon/link.c index 43c55f8..87c4c5e 100644 --- a/daemon/link.c +++ b/daemon/link.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -30,7 +31,7 @@ #include "daemon.h" #include "actions.h" -GUESTFSD_EXT_CMD(str_ln, ln); +GUESTFSD_EXT_CMD (str_ln, ln); char * do_readlink (const char *path) @@ -45,7 +46,7 @@ do_readlink (const char *path) return NULL; } - return link; /* caller frees */ + return link; /* caller frees */ } char ** @@ -56,7 +57,7 @@ do_internal_readlinklist (const char *path, char *const *names) DECLARE_STRINGSBUF (ret); CHROOT_IN; - fd_cwd = open (path, O_RDONLY|O_DIRECTORY|O_CLOEXEC); + fd_cwd = open (path, O_RDONLY | O_DIRECTORY | O_CLOEXEC); CHROOT_OUT; if (fd_cwd == -1) { @@ -139,12 +140,11 @@ _symlink (const char *flag, const char *target, const char *linkname) return -1; } - r = command (NULL, &err, - str_ln, flag, "--", /* target could begin with '-' */ + r = command (NULL, &err, str_ln, flag, + "--", /* target could begin with '-' */ target, buf_linkname, NULL); if (r == -1) { - reply_with_error ("ln %s: %s: %s: %s", - flag, target, linkname, err); + reply_with_error ("ln %s: %s: %s: %s", flag, target, linkname, err); return -1; } diff --git a/daemon/ls.c b/daemon/ls.c index 0e2f110..fec3b44 100644 --- a/daemon/ls.c +++ b/daemon/ls.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -30,7 +31,7 @@ #include "daemon.h" #include "actions.h" -GUESTFSD_EXT_CMD(str_ls, ls); +GUESTFSD_EXT_CMD (str_ls, ls); /* Has one FileOut parameter. */ int @@ -58,7 +59,8 @@ do_ls0 (const char *path) while (1) { errno = 0; d = readdir (dir); - if (d == NULL) break; + if (d == NULL) + break; /* Ignore . and .. */ if (STREQ (d->d_name, ".") || STREQ (d->d_name, "..")) @@ -70,7 +72,7 @@ do_ls0 (const char *path) * output. */ len = strlen (d->d_name); - if (send_file_write (d->d_name, len+1) < 0) { + if (send_file_write (d->d_name, len + 1) < 0) { closedir (dir); return -1; } @@ -78,18 +80,18 @@ do_ls0 (const char *path) if (errno != 0) { fprintf (stderr, "readdir: %s: %m\n", path); - send_file_end (1); /* Cancel. */ + send_file_end (1); /* Cancel. */ closedir (dir); return -1; } if (closedir (dir) == -1) { fprintf (stderr, "closedir: %s: %m\n", path); - send_file_end (1); /* Cancel. */ + send_file_end (1); /* Cancel. */ return -1; } - if (send_file_end (0)) /* Normal end of file. */ + if (send_file_end (0)) /* Normal end of file. */ return -1; return 0; @@ -125,7 +127,7 @@ do_ll (const char *path) return NULL; } - return out; /* caller frees */ + return out; /* caller frees */ } char * @@ -158,5 +160,5 @@ do_llz (const char *path) return NULL; } - return out; /* caller frees */ + return out; /* caller frees */ } diff --git a/daemon/luks.c b/daemon/luks.c index 53bb820..9f13f83 100644 --- a/daemon/luks.c +++ b/daemon/luks.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -28,7 +29,7 @@ #define MAX_ARGS 64 -GUESTFSD_EXT_CMD(str_cryptsetup, cryptsetup); +GUESTFSD_EXT_CMD (str_cryptsetup, cryptsetup); int optgroup_luks_available (void) @@ -70,7 +71,7 @@ write_key_to_temp (const char *key) return tempfile; - error: +error: unlink (tempfile); free (tempfile); return NULL; @@ -111,14 +112,15 @@ luks_open (const char *device, const char *key, const char *mapname, ADD_ARG (argv, i, str_cryptsetup); ADD_ARG (argv, i, "-d"); ADD_ARG (argv, i, tempfile); - if (readonly) ADD_ARG (argv, i, "--readonly"); + if (readonly) + ADD_ARG (argv, i, "--readonly"); ADD_ARG (argv, i, "luksOpen"); ADD_ARG (argv, i, device); ADD_ARG (argv, i, mapname); ADD_ARG (argv, i, NULL); CLEANUP_FREE char *err = NULL; - int r = commandv (NULL, &err, (const char * const *) argv); + int r = commandv (NULL, &err, (const char *const *)argv); remove_temp (tempfile); if (r == -1) { @@ -147,8 +149,9 @@ int do_luks_close (const char *device) { /* Must be /dev/mapper/... */ - if (! STRPREFIX (device, "/dev/mapper/")) { - reply_with_error ("luks_close: you must call this on the /dev/mapper device created by luks_open"); + if (!STRPREFIX (device, "/dev/mapper/")) { + reply_with_error ("luks_close: you must call this on the /dev/mapper " + "device created by luks_open"); return -1; } @@ -193,7 +196,7 @@ luks_format (const char *device, const char *key, int keyslot, ADD_ARG (argv, i, NULL); CLEANUP_FREE char *err = NULL; - int r = commandv (NULL, &err, (const char * const *) argv); + int r = commandv (NULL, &err, (const char *const *)argv); remove_temp (tempfile); if (r == -1) { @@ -250,7 +253,7 @@ do_luks_add_key (const char *device, const char *key, const char *newkey, ADD_ARG (argv, i, NULL); CLEANUP_FREE char *err = NULL; - int r = commandv (NULL, &err, (const char * const *) argv); + int r = commandv (NULL, &err, (const char *const *)argv); remove_temp (keyfile); remove_temp (newkeyfile); @@ -284,7 +287,7 @@ do_luks_kill_slot (const char *device, const char *key, int keyslot) ADD_ARG (argv, i, NULL); CLEANUP_FREE char *err = NULL; - int r = commandv (NULL, &err, (const char * const *) argv); + int r = commandv (NULL, &err, (const char *const *)argv); remove_temp (tempfile); if (r == -1) { diff --git a/daemon/lvm-filter.c b/daemon/lvm-filter.c index eadc472..72d28e8 100644 --- a/daemon/lvm-filter.c +++ b/daemon/lvm-filter.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -36,9 +37,9 @@ #include "daemon.h" #include "actions.h" -GUESTFSD_EXT_CMD(str_lvm, lvm); -GUESTFSD_EXT_CMD(str_cp, cp); -GUESTFSD_EXT_CMD(str_rm, rm); +GUESTFSD_EXT_CMD (str_lvm, lvm); +GUESTFSD_EXT_CMD (str_cp, cp); +GUESTFSD_EXT_CMD (str_rm, rm); /* This runs during daemon start up and creates a complete copy of * /etc/lvm so that we can modify it as we desire. We set @@ -69,7 +70,7 @@ copy_lvm (void) perror ("copy_lvm: stat: /etc/lvm"); return; } - if (! S_ISDIR (statbuf.st_mode)) { + if (!S_ISDIR (statbuf.st_mode)) { fprintf (stderr, "copy_lvm: warning: /etc/lvm is not a directory\n"); return; } @@ -218,7 +219,8 @@ static int rescan (void) { char lvm_cache[64]; - snprintf (lvm_cache, sizeof lvm_cache, "%s/lvm/cache/.cache", lvm_system_dir); + snprintf (lvm_cache, sizeof lvm_cache, "%s/lvm/cache/.cache", + lvm_system_dir); unlink (lvm_cache); @@ -256,7 +258,7 @@ make_filter_strings (char *const *devices) if (add_sprintf (&ret, "a|^%s$|", devices[i]) == -1) goto error; - if (!c_isdigit (devices[i][slen-1])) { + if (!c_isdigit (devices[i][slen - 1])) { /* whole block device */ if (add_sprintf (&ret, "a|^%s[0-9]|", devices[i]) == -1) goto error; @@ -270,7 +272,7 @@ make_filter_strings (char *const *devices) return ret.argv; - error: +error: if (ret.argv) free_stringslen (ret.argv, ret.size); return NULL; @@ -304,7 +306,7 @@ do_lvm_clear_filter (void) if (deactivate () == -1) return -1; - if (set_filter ((char *const *) filters) == -1) + if (set_filter ((char *const *)filters) == -1) return -1; if (rescan () == -1) diff --git a/daemon/lvm.c b/daemon/lvm.c index 2b61357..e8e3f7c 100644 --- a/daemon/lvm.c +++ b/daemon/lvm.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -32,7 +33,7 @@ #include "actions.h" #include "optgroups.h" -GUESTFSD_EXT_CMD(str_lvm, lvm); +GUESTFSD_EXT_CMD (str_lvm, lvm); int optgroup_lvm2_available (void) @@ -55,21 +56,21 @@ convert_lvm_output (char *out, const char *prefix) p = out; while (p) { - pend = strchr (p, '\n'); /* Get the next line of output. */ + pend = strchr (p, '\n'); /* Get the next line of output. */ if (pend) { *pend = '\0'; pend++; } - while (*p && c_isspace (*p)) /* Skip any leading whitespace. */ + while (*p && c_isspace (*p)) /* Skip any leading whitespace. */ p++; /* Sigh, skip trailing whitespace too. "pvs", I'm looking at you. */ - len = strlen (p)-1; + len = strlen (p) - 1; while (*p && c_isspace (p[len])) p[len--] = '\0'; - if (!*p) { /* Empty line? Skip it. */ + if (!*p) { /* Empty line? Skip it. */ p = pend; continue; } @@ -121,21 +122,21 @@ filter_convert_old_lvs_output (char *out) char *saveptr; char *lv_attr, *vg_name, *lv_name; - pend = strchr (p, '\n'); /* Get the next line of output. */ + pend = strchr (p, '\n'); /* Get the next line of output. */ if (pend) { *pend = '\0'; pend++; } - while (*p && c_isspace (*p)) /* Skip any leading whitespace. */ + while (*p && c_isspace (*p)) /* Skip any leading whitespace. */ p++; /* Sigh, skip trailing whitespace too. "pvs", I'm looking at you. */ - len = strlen (p)-1; + len = strlen (p) - 1; while (*p && c_isspace (p[len])) p[len--] = '\0'; - if (!*p) { /* Empty line? Skip it. */ + if (!*p) { /* Empty line? Skip it. */ skip_line: p = pend; continue; @@ -193,8 +194,8 @@ do_pvs (void) CLEANUP_FREE char *err = NULL; int r; - r = command (&out, &err, - str_lvm, "pvs", "-o", "pv_name", "--noheadings", NULL); + r = command (&out, &err, str_lvm, "pvs", "-o", "pv_name", "--noheadings", + NULL); if (r == -1) { reply_with_error ("%s", err); free (out); @@ -211,8 +212,8 @@ do_vgs (void) CLEANUP_FREE char *err = NULL; int r; - r = command (&out, &err, - str_lvm, "vgs", "-o", "vg_name", "--noheadings", NULL); + r = command (&out, &err, str_lvm, "vgs", "-o", "vg_name", "--noheadings", + NULL); if (r == -1) { reply_with_error ("%s", err); free (out); @@ -261,11 +262,8 @@ do_lvs (void) return NULL; if (has_S > 0) { - r = command (&out, &err, - str_lvm, "lvs", - "-o", "vg_name,lv_name", - "-S", "lv_role=public && lv_active=active", - "--noheadings", + r = command (&out, &err, str_lvm, "lvs", "-o", "vg_name,lv_name", "-S", + "lv_role=public && lv_active=active", "--noheadings", "--separator", "/", NULL); if (r == -1) { reply_with_error ("%s", err); @@ -275,11 +273,9 @@ do_lvs (void) return convert_lvm_output (out, "/dev/"); } else { - r = command (&out, &err, - str_lvm, "lvs", - "-o", "lv_attr,vg_name,lv_name", - "--noheadings", - "--separator", ":", NULL); + r = command (&out, &err, str_lvm, "lvs", "-o", + "lv_attr,vg_name,lv_name", "--noheadings", "--separator", + ":", NULL); if (r == -1) { reply_with_error ("%s", err); free (out); @@ -318,8 +314,7 @@ do_pvcreate (const char *device) CLEANUP_FREE char *err = NULL; int r; - r = command (NULL, &err, - str_lvm, "pvcreate", "--force", device, NULL); + r = command (NULL, &err, str_lvm, "pvcreate", "--force", device, NULL); if (r == -1) { reply_with_error ("%s", err); return -1; @@ -346,10 +341,10 @@ do_vgcreate (const char *volgroup, char *const *physvols) argv[0] = str_lvm; argv[1] = "vgcreate"; argv[2] = volgroup; - for (i = 3; i < argc+1; ++i) - argv[i] = physvols[i-3]; + for (i = 3; i < argc + 1; ++i) + argv[i] = physvols[i - 3]; - r = commandv (NULL, &err, (const char * const*) argv); + r = commandv (NULL, &err, (const char *const *)argv); if (r == -1) { reply_with_error ("%s", err); return -1; @@ -369,9 +364,8 @@ do_lvcreate (const char *logvol, const char *volgroup, int mbytes) snprintf (size, sizeof size, "%d", mbytes); - r = command (NULL, &err, - str_lvm, "lvcreate", - "-L", size, "-n", logvol, volgroup, NULL); + r = command (NULL, &err, str_lvm, "lvcreate", "-L", size, "-n", logvol, + volgroup, NULL); if (r == -1) { reply_with_error ("%s", err); return -1; @@ -396,9 +390,8 @@ do_lvcreate_free (const char *logvol, const char *volgroup, int percent) char size[64]; snprintf (size, sizeof size, "%d%%FREE", percent); - r = command (NULL, &err, - str_lvm, "lvcreate", - "-l", size, "-n", logvol, volgroup, NULL); + r = command (NULL, &err, str_lvm, "lvcreate", "-l", size, "-n", logvol, + volgroup, NULL); if (r == -1) { reply_with_error ("%s", err); return -1; @@ -417,7 +410,7 @@ static int ignore_same_size_error (const char *err) { return strstr (err, "New size (") != NULL && - strstr (err, "extents) matches existing size (") != NULL; + strstr (err, "extents) matches existing size (") != NULL; } int @@ -429,9 +422,8 @@ do_lvresize (const char *logvol, int mbytes) snprintf (size, sizeof size, "%d", mbytes); - r = command (NULL, &err, - str_lvm, "lvresize", - "--force", "-L", size, logvol, NULL); + r = command (NULL, &err, str_lvm, "lvresize", "--force", "-L", size, + logvol, NULL); if (r == -1) { if (!ignore_same_size_error (err)) { reply_with_error ("%s", err); @@ -456,8 +448,7 @@ do_lvresize_free (const char *logvol, int percent) char size[64]; snprintf (size, sizeof size, "+%d%%FREE", percent); - r = command (NULL, &err, - str_lvm, "lvresize", "-l", size, logvol, NULL); + r = command (NULL, &err, str_lvm, "lvresize", "-l", size, logvol, NULL); if (r == -1) { if (!ignore_same_size_error (err)) { reply_with_error ("%s", err); @@ -489,7 +480,7 @@ do_lvm_remove_all (void) /* Deactivate the LV first. On Ubuntu, lvremove '-f' option * does not remove active LVs reliably. */ - (void) command (NULL, NULL, str_lvm, "lvchange", "-an", xs[i], NULL); + (void)command (NULL, NULL, str_lvm, "lvchange", "-an", xs[i], NULL); udev_settle (); r = command (NULL, &err, str_lvm, "lvremove", "-f", xs[i], NULL); @@ -510,7 +501,7 @@ do_lvm_remove_all (void) CLEANUP_FREE char *err = NULL; /* Deactivate the VG first, see note above. */ - (void) command (NULL, NULL, str_lvm, "vgchange", "-an", xs[i], NULL); + (void)command (NULL, NULL, str_lvm, "vgchange", "-an", xs[i], NULL); udev_settle (); r = command (NULL, &err, str_lvm, "vgremove", "-f", xs[i], NULL); @@ -550,8 +541,7 @@ do_lvremove (const char *device) CLEANUP_FREE char *err = NULL; int r; - r = command (NULL, &err, - str_lvm, "lvremove", "-f", device, NULL); + r = command (NULL, &err, str_lvm, "lvremove", "-f", device, NULL); if (r == -1) { reply_with_error ("%s", err); return -1; @@ -568,8 +558,7 @@ do_vgremove (const char *device) CLEANUP_FREE char *err = NULL; int r; - r = command (NULL, &err, - str_lvm, "vgremove", "-f", device, NULL); + r = command (NULL, &err, str_lvm, "vgremove", "-f", device, NULL); if (r == -1) { reply_with_error ("%s", err); return -1; @@ -586,8 +575,7 @@ do_pvremove (const char *device) CLEANUP_FREE char *err = NULL; int r; - r = command (NULL, &err, - str_lvm, "pvremove", "-ff", device, NULL); + r = command (NULL, &err, str_lvm, "pvremove", "-ff", device, NULL); if (r == -1) { reply_with_error ("%s", err); return -1; @@ -604,8 +592,7 @@ do_pvresize (const char *device) CLEANUP_FREE char *err = NULL; int r; - r = command (NULL, &err, - str_lvm, "pvresize", device, NULL); + r = command (NULL, &err, str_lvm, "pvresize", device, NULL); if (r == -1) { reply_with_error ("%s: %s", device, err); return -1; @@ -623,10 +610,8 @@ do_pvresize_size (const char *device, int64_t size) char buf[32]; snprintf (buf, sizeof buf, "%" PRIi64 "b", size); - r = command (NULL, &err, - str_lvm, "pvresize", - "--setphysicalvolumesize", buf, - device, NULL); + r = command (NULL, &err, str_lvm, "pvresize", "--setphysicalvolumesize", + buf, device, NULL); if (r == -1) { reply_with_error ("%s: %s", device, err); return -1; @@ -643,7 +628,7 @@ do_vg_activate (int activate, char *const *volgroups) CLEANUP_FREE const char **argv = NULL; argc = count_strings (volgroups) + 4; - argv = malloc (sizeof (char *) * (argc+1)); + argv = malloc (sizeof (char *) * (argc + 1)); if (argv == NULL) { reply_with_perror ("malloc"); return -1; @@ -653,10 +638,10 @@ do_vg_activate (int activate, char *const *volgroups) argv[1] = "vgchange"; argv[2] = "-a"; argv[3] = activate ? "y" : "n"; - for (i = 4; i < argc+1; ++i) - argv[i] = volgroups[i-4]; + for (i = 4; i < argc + 1; ++i) + argv[i] = volgroups[i - 4]; - r = commandv (NULL, &err, (const char * const*) argv); + r = commandv (NULL, &err, (const char *const *)argv); if (r == -1) { reply_with_error ("vgchange: %s", err); return -1; @@ -680,9 +665,7 @@ do_lvrename (const char *logvol, const char *newlogvol) CLEANUP_FREE char *err = NULL; int r; - r = command (NULL, &err, - str_lvm, "lvrename", - logvol, newlogvol, NULL); + r = command (NULL, &err, str_lvm, "lvrename", logvol, newlogvol, NULL); if (r == -1) { reply_with_error ("%s -> %s: %s", logvol, newlogvol, err); return -1; @@ -699,9 +682,8 @@ do_vgrename (const char *volgroup, const char *newvolgroup) CLEANUP_FREE char *err = NULL; int r; - r = command (NULL, &err, - str_lvm, "vgrename", - volgroup, newvolgroup, NULL); + r = command (NULL, &err, str_lvm, "vgrename", volgroup, newvolgroup, + NULL); if (r == -1) { reply_with_error ("%s -> %s: %s", volgroup, newvolgroup, err); return -1; @@ -717,10 +699,8 @@ get_lvm_field (const char *cmd, const char *field, const char *device) { char *out; CLEANUP_FREE char *err = NULL; - int r = command (&out, &err, - str_lvm, cmd, - "--unbuffered", "--noheadings", "-o", field, - device, NULL); + int r = command (&out, &err, str_lvm, cmd, "--unbuffered", "--noheadings", + "-o", field, device, NULL); if (r == -1) { reply_with_error ("%s: %s", device, err); free (out); @@ -728,7 +708,7 @@ get_lvm_field (const char *cmd, const char *field, const char *device) } trim (out); - return out; /* Caller frees. */ + return out; /* Caller frees. */ } char * @@ -754,10 +734,8 @@ get_lvm_fields (const char *cmd, const char *field, const char *device) { CLEANUP_FREE char *out = NULL, *err = NULL; - int r = command (&out, &err, - str_lvm, cmd, - "--unbuffered", "--noheadings", "-o", field, - device, NULL); + int r = command (&out, &err, str_lvm, cmd, "--unbuffered", "--noheadings", + "-o", field, device, NULL); if (r == -1) { reply_with_error ("%s: %s", device, err); return NULL; @@ -793,8 +771,7 @@ do_vgscan (void) CLEANUP_FREE char *err = NULL; int r; - r = command (NULL, &err, - str_lvm, "vgscan", NULL); + r = command (NULL, &err, str_lvm, "vgscan", NULL); if (r == -1) { reply_with_error ("%s", err); return -1; @@ -882,7 +859,7 @@ do_lvm_canonical_lv_name (const char *device) return NULL; } - return canonical; /* caller frees */ + return canonical; /* caller frees */ } /* List everything in /dev/mapper which *isn't* an LV (RHBZ#688062). */ @@ -905,7 +882,8 @@ do_list_dm_devices (void) errno = 0; d = readdir (dir); - if (d == NULL) break; + if (d == NULL) + break; /* Ignore . and .. */ if (STREQ (d->d_name, ".") || STREQ (d->d_name, "..")) @@ -991,7 +969,7 @@ do_vgmeta (const char *vg, size_t *size_r) } /* Now read back the temporary file. */ - fd = open (tmp, O_RDONLY|O_CLOEXEC); + fd = open (tmp, O_RDONLY | O_CLOEXEC); if (fd == -1) { reply_with_error ("%s", tmp); return NULL; @@ -1047,7 +1025,7 @@ do_vgmeta (const char *vg, size_t *size_r) *size_r = size; - return buf; /* caller will free */ + return buf; /* caller will free */ } int @@ -1056,8 +1034,7 @@ do_pvchange_uuid (const char *device) CLEANUP_FREE char *err = NULL; int r; - r = command (NULL, &err, - str_lvm, "pvchange", "-u", device, NULL); + r = command (NULL, &err, str_lvm, "pvchange", "-u", device, NULL); if (r == -1) { reply_with_error ("%s: %s", device, err); return -1; @@ -1074,8 +1051,7 @@ do_pvchange_uuid_all (void) CLEANUP_FREE char *err = NULL; int r; - r = command (NULL, &err, - str_lvm, "pvchange", "-u", "-a", NULL); + r = command (NULL, &err, str_lvm, "pvchange", "-u", "-a", NULL); if (r == -1) { reply_with_error ("%s", err); return -1; @@ -1092,8 +1068,7 @@ do_vgchange_uuid (const char *vg) CLEANUP_FREE char *err = NULL; int r; - r = command (NULL, &err, - str_lvm, "vgchange", "-u", vg, NULL); + r = command (NULL, &err, str_lvm, "vgchange", "-u", vg, NULL); if (r == -1) { reply_with_error ("%s: %s", vg, err); return -1; @@ -1110,8 +1085,7 @@ do_vgchange_uuid_all (void) CLEANUP_FREE char *err = NULL; int r; - r = command (NULL, &err, - str_lvm, "vgchange", "-u", NULL); + r = command (NULL, &err, str_lvm, "vgchange", "-u", NULL); if (r == -1) { reply_with_error ("%s", err); return -1; diff --git a/daemon/md.c b/daemon/md.c index 5d60b62..62b352a 100644 --- a/daemon/md.c +++ b/daemon/md.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -37,7 +38,7 @@ #include "optgroups.h" #include "c-ctype.h" -GUESTFSD_EXT_CMD(str_mdadm, mdadm); +GUESTFSD_EXT_CMD (str_mdadm, mdadm); int optgroup_mdadm_available (void) @@ -65,9 +66,8 @@ count_bits (uint64_t bitmap) /* Takes optional arguments, consult optargs_bitmask. */ int -do_md_create (const char *name, char *const *devices, - int64_t missingbitmap, int nrdevices, int spare, - int64_t chunk, const char *level) +do_md_create (const char *name, char *const *devices, int64_t missingbitmap, + int nrdevices, int spare, int64_t chunk, const char *level) { char nrdevices_s[32]; char spare_s[32]; @@ -75,7 +75,7 @@ do_md_create (const char *name, char *const *devices, size_t j; int r; CLEANUP_FREE char *err = NULL; - uint64_t umissingbitmap = (uint64_t) missingbitmap; + uint64_t umissingbitmap = (uint64_t)missingbitmap; /* Check the optional parameters and set defaults where appropriate. */ if (!(optargs_bitmask & GUESTFS_MD_CREATE_MISSINGBITMAP_BITMASK)) @@ -86,8 +86,7 @@ do_md_create (const char *name, char *const *devices, reply_with_error ("spare must not be negative"); return -1; } - } - else + } else spare = 0; if (optargs_bitmask & GUESTFS_MD_CREATE_NRDEVICES_BITMASK) { @@ -95,28 +94,27 @@ do_md_create (const char *name, char *const *devices, reply_with_error ("nrdevices is less than 2"); return -1; } - } - else + } else nrdevices = count_strings (devices) + count_bits (umissingbitmap); if (optargs_bitmask & GUESTFS_MD_CREATE_LEVEL_BITMASK) { if (STRNEQ (level, "linear") && STRNEQ (level, "raid0") && STRNEQ (level, "0") && STRNEQ (level, "stripe") && STRNEQ (level, "raid1") && STRNEQ (level, "1") && - STRNEQ (level, "mirror") && - STRNEQ (level, "raid4") && STRNEQ (level, "4") && - STRNEQ (level, "raid5") && STRNEQ (level, "5") && - STRNEQ (level, "raid6") && STRNEQ (level, "6") && - STRNEQ (level, "raid10") && STRNEQ (level, "10")) { + STRNEQ (level, "mirror") && STRNEQ (level, "raid4") && + STRNEQ (level, "4") && STRNEQ (level, "raid5") && + STRNEQ (level, "5") && STRNEQ (level, "raid6") && + STRNEQ (level, "6") && STRNEQ (level, "raid10") && + STRNEQ (level, "10")) { reply_with_error ("unknown level parameter: %s", level); return -1; } - } - else + } else level = "raid1"; if (optargs_bitmask & GUESTFS_MD_CREATE_CHUNK_BITMASK) { - /* chunk is bytes in the libguestfs API, but K when we pass it to mdadm */ + /* chunk is bytes in the libguestfs API, but K when we pass it to mdadm + */ if ((chunk & 1023) != 0) { reply_with_error ("chunk size must be a multiple of 1024 bytes"); return -1; @@ -126,7 +124,8 @@ do_md_create (const char *name, char *const *devices, /* Check invariant. */ if (count_strings (devices) + count_bits (umissingbitmap) != (size_t) (nrdevices + spare)) { - reply_with_error ("devices (%zu) + bits set in missingbitmap (%zu) is not equal to nrdevices (%d) + spare (%d)", + reply_with_error ("devices (%zu) + bits set in missingbitmap (%zu) is " + "not equal to nrdevices (%d) + spare (%d)", count_strings (devices), count_bits (umissingbitmap), nrdevices, spare); return -1; @@ -189,7 +188,8 @@ do_md_create (const char *name, char *const *devices, static int glob_errfunc (const char *epath, int eerrno) { - fprintf (stderr, "glob: failure reading %s: %s\n", epath, strerror (eerrno)); + fprintf (stderr, "glob: failure reading %s: %s\n", epath, + strerror (eerrno)); return 1; } @@ -265,15 +265,17 @@ do_list_md_devices (void) continue; } - if (add_string_nodup (&ret, dev) == -1) goto error; + if (add_string_nodup (&ret, dev) == -1) + goto error; } - if (end_stringsbuf (&ret) == -1) goto error; + if (end_stringsbuf (&ret) == -1) + goto error; globfree (&mds); return ret.argv; - error: +error: globfree (&mds); if (ret.argv != NULL) free_stringslen (ret.argv, ret.size); @@ -315,14 +317,17 @@ do_md_detail (const char *md) char *line = lines[i]; /* Skip blank lines (shouldn't happen) */ - if (line[0] == '\0') continue; + if (line[0] == '\0') + continue; /* Split the line in 2 at the equals sign */ char *eq = strchr (line, '='); if (eq) { - *eq = '\0'; eq++; + *eq = '\0'; + eq++; - /* Remove the MD_ prefix from the key and translate the remainder to lower + /* Remove the MD_ prefix from the key and translate the remainder to + * lower * case */ if (STRPREFIX (line, "MD_")) { line += 3; @@ -332,12 +337,14 @@ do_md_detail (const char *md) } /* Add the key/value pair to the output */ - if (add_string (&ret, line) == -1 || - add_string (&ret, eq) == -1) goto error; + if (add_string (&ret, line) == -1 || add_string (&ret, eq) == -1) + goto error; } else { - /* Ignore lines with no equals sign (shouldn't happen). Log to stderr so + /* Ignore lines with no equals sign (shouldn't happen). Log to stderr + * so * it will show up in LIBGUESTFS_DEBUG. */ - fprintf (stderr, "md-detail: unexpected mdadm output ignored: %s", line); + fprintf (stderr, "md-detail: unexpected mdadm output ignored: %s", + line); } } @@ -346,7 +353,7 @@ do_md_detail (const char *md) return ret.argv; - error: +error: if (ret.argv != NULL) free_stringslen (ret.argv, ret.size); @@ -359,7 +366,7 @@ do_md_stop (const char *md) int r; CLEANUP_FREE char *err = NULL; - const char *mdadm[] = { str_mdadm, "--stop", md, NULL}; + const char *mdadm[] = { str_mdadm, "--stop", md, NULL }; r = commandv (NULL, &err, mdadm); if (r == -1) { reply_with_error ("%s", err); @@ -401,7 +408,7 @@ parse_md_stat_line (char *line) */ spaces = count_spaces (line); ret->guestfs_int_mdstat_list_val = - calloc (spaces+1, sizeof (struct guestfs_int_mdstat)); + calloc (spaces + 1, sizeof (struct guestfs_int_mdstat)); if (ret->guestfs_int_mdstat_list_val == NULL) { reply_with_perror ("calloc"); free (ret); @@ -414,7 +421,7 @@ parse_md_stat_line (char *line) next = &line[len]; else { line[len] = '\0'; - next = &line[len+1]; + next = &line[len + 1]; } if (verbose) @@ -430,7 +437,7 @@ parse_md_stat_line (char *line) if (p > q) continue; - ret->guestfs_int_mdstat_list_len = n+1; + ret->guestfs_int_mdstat_list_len = n + 1; t = &ret->guestfs_int_mdstat_list_val[n]; /* Device name is everything before the '[' character, but we @@ -448,7 +455,7 @@ parse_md_stat_line (char *line) } /* Device index is the number after '['. */ - line = p+1; + line = p + 1; *q = '\0'; if (sscanf (line, "%" SCNi32, &t->mdstat_index) != 1) { reply_with_error ("not a device number: %s", line); @@ -456,9 +463,9 @@ parse_md_stat_line (char *line) } /* Looking for flags "(F)(S)...". */ - line = q+1; + line = q + 1; len = strlen (line); - t->mdstat_flags = malloc (len+1); + t->mdstat_flags = malloc (len + 1); if (!t->mdstat_flags) { reply_with_error ("malloc"); goto error; @@ -475,8 +482,8 @@ parse_md_stat_line (char *line) return ret; - error: - for (i = 0; i < spaces+1; ++i) { +error: + for (i = 0; i < spaces + 1; ++i) { free (ret->guestfs_int_mdstat_list_val[i].mdstat_device); free (ret->guestfs_int_mdstat_list_val[i].mdstat_flags); } @@ -507,10 +514,10 @@ do_md_stat (const char *md) /* Search for a line which begins with "<md> : ". */ while ((n = getline (&line, &allocsize, fp)) != -1) { - if (STRPREFIX (line, md) && - line[mdlen] == ' ' && line[mdlen+1] == ':' && line[mdlen+2] == ' ') { + if (STRPREFIX (line, md) && line[mdlen] == ' ' && + line[mdlen + 1] == ':' && line[mdlen + 2] == ' ') { /* Found it. */ - ret = parse_md_stat_line (&line[mdlen+3]); + ret = parse_md_stat_line (&line[mdlen + 3]); if (!ret) { fclose (fp); return NULL; @@ -525,7 +532,7 @@ do_md_stat (const char *md) if (fclose (fp) == EOF) { reply_with_perror ("fclose: %s", "/proc/mdstat"); - xdr_free ((xdrproc_t) xdr_guestfs_int_mdstat_list, (char *) ret); + xdr_free ((xdrproc_t)xdr_guestfs_int_mdstat_list, (char *)ret); return NULL; } diff --git a/daemon/mkfs.c b/daemon/mkfs.c index cef3574..c9f70dd 100644 --- a/daemon/mkfs.c +++ b/daemon/mkfs.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -30,8 +31,8 @@ #define MAX_ARGS 64 -GUESTFSD_EXT_CMD(str_mke2fs, mke2fs); -GUESTFSD_EXT_CMD(str_mkfs, mkfs); +GUESTFSD_EXT_CMD (str_mke2fs, mke2fs); +GUESTFSD_EXT_CMD (str_mkfs, mkfs); /* Takes optional arguments, consult optargs_bitmask. */ int @@ -111,8 +112,7 @@ do_mkfs (const char *fstype, const char *device, int blocksize, return -1; } - if (STREQ (fstype, "vfat") || - STREQ (fstype, "msdos")) { + if (STREQ (fstype, "vfat") || STREQ (fstype, "msdos")) { /* For VFAT map the blocksize into a cluster size. However we * have to determine the block device sector size in order to do * this. @@ -123,33 +123,33 @@ do_mkfs (const char *fstype, const char *device, int blocksize, int sectors_per_cluster = blocksize / ss; if (sectors_per_cluster < 1 || sectors_per_cluster > 128) { - reply_with_error ("unsupported cluster size for %s filesystem (requested cluster size = %d, sector size = %d, trying sectors per cluster = %d)", + reply_with_error ("unsupported cluster size for %s filesystem " + "(requested cluster size = %d, sector size = %d, " + "trying sectors per cluster = %d)", fstype, blocksize, ss, sectors_per_cluster); return -1; } - snprintf (blocksize_str, sizeof blocksize_str, "%d", sectors_per_cluster); + snprintf (blocksize_str, sizeof blocksize_str, "%d", + sectors_per_cluster); ADD_ARG (argv, i, "-s"); ADD_ARG (argv, i, blocksize_str); - } - else if (STREQ (fstype, "ntfs")) { + } else if (STREQ (fstype, "ntfs")) { /* For NTFS map the blocksize into a cluster size. */ snprintf (blocksize_str, sizeof blocksize_str, "%d", blocksize); ADD_ARG (argv, i, "-c"); ADD_ARG (argv, i, blocksize_str); - } - else if (STREQ (fstype, "btrfs")) { + } else if (STREQ (fstype, "btrfs")) { /* For btrfs, blocksize cannot be specified (RHBZ#807905). */ - reply_with_error ("blocksize cannot be set on btrfs filesystems, use 'mkfs-btrfs'"); + reply_with_error ( + "blocksize cannot be set on btrfs filesystems, use 'mkfs-btrfs'"); return -1; - } - else if (STREQ (fstype, "xfs")) { + } else if (STREQ (fstype, "xfs")) { /* mkfs -t xfs -b size=<size> (RHBZ#981715). */ snprintf (blocksize_str, sizeof blocksize_str, "size=%d", blocksize); ADD_ARG (argv, i, "-b"); ADD_ARG (argv, i, blocksize_str); - } - else { + } else { /* For all other filesystem types, try the -b option. */ snprintf (blocksize_str, sizeof blocksize_str, "%d", blocksize); ADD_ARG (argv, i, "-b"); @@ -164,7 +164,8 @@ do_mkfs (const char *fstype, const char *device, int blocksize, if (optargs_bitmask & GUESTFS_MKFS_INODE_BITMASK) { if (!extfs) { - reply_with_error ("inode size (-I) can only be set on ext2/3/4 filesystems"); + reply_with_error ( + "inode size (-I) can only be set on ext2/3/4 filesystems"); return -1; } @@ -180,7 +181,8 @@ do_mkfs (const char *fstype, const char *device, int blocksize, if (optargs_bitmask & GUESTFS_MKFS_SECTORSIZE_BITMASK) { if (!STREQ (fstype, "ufs")) { - reply_with_error ("sector size (-S) can only be set on ufs filesystems"); + reply_with_error ( + "sector size (-S) can only be set on ufs filesystems"); return -1; } @@ -204,33 +206,28 @@ do_mkfs (const char *fstype, const char *device, int blocksize, ADD_ARG (argv, i, "-L"); ADD_ARG (argv, i, label); - } - else if (STREQ (fstype, "fat") || STREQ (fstype, "vfat") || - STREQ (fstype, "msdos")) { + } else if (STREQ (fstype, "fat") || STREQ (fstype, "vfat") || + STREQ (fstype, "msdos")) { ADD_ARG (argv, i, "-n"); ADD_ARG (argv, i, label); - } - else if (STREQ (fstype, "ntfs")) { + } else if (STREQ (fstype, "ntfs")) { ADD_ARG (argv, i, "-L"); ADD_ARG (argv, i, label); - } - else if (STREQ (fstype, "xfs")) { + } else if (STREQ (fstype, "xfs")) { if (strlen (label) > XFS_LABEL_MAX) { - reply_with_error ("%s: xfs labels are limited to %d bytes", - label, XFS_LABEL_MAX); + reply_with_error ("%s: xfs labels are limited to %d bytes", label, + XFS_LABEL_MAX); return -1; } ADD_ARG (argv, i, "-L"); ADD_ARG (argv, i, label); - } - else if (STREQ (fstype, "btrfs")) { + } else if (STREQ (fstype, "btrfs")) { ADD_ARG (argv, i, "-L"); ADD_ARG (argv, i, label); - } - else { - reply_with_error ("don't know how to set the label for '%s' filesystems", - fstype); + } else { + reply_with_error ( + "don't know how to set the label for '%s' filesystems", fstype); return -1; } } diff --git a/daemon/mknod.c b/daemon/mknod.c index d2ae02d..b6ae25f 100644 --- a/daemon/mknod.c +++ b/daemon/mknod.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -38,13 +39,13 @@ optgroup_mknod_available (void) return 1; } -#define CHECK_MODE \ - do { \ - if ((mode & ~07777) != 0) { \ +#define CHECK_MODE \ + do { \ + if ((mode & ~07777) != 0) { \ reply_with_error ("%o: mode must specify only file permission bits", \ - (unsigned int) mode); \ - return -1; \ - } \ + (unsigned int)mode); \ + return -1; \ + } \ } while (0) int diff --git a/daemon/mktemp.c b/daemon/mktemp.c index 39231adf..516f40b 100644 --- a/daemon/mktemp.c +++ b/daemon/mktemp.c @@ -14,7 +14,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -49,8 +50,7 @@ do_mkdtemp (const char *template) } char * -do_mktemp (const char *template, - const char *suffix) +do_mktemp (const char *template, const char *suffix) { char *dest_name = NULL; size_t suffix_len = 0; @@ -83,7 +83,7 @@ do_mktemp (const char *template, } CHROOT_IN; - fd = mkstemps (dest_name, (int) suffix_len); + fd = mkstemps (dest_name, (int)suffix_len); CHROOT_OUT; if (fd == -1) { diff --git a/daemon/modprobe.c b/daemon/modprobe.c index 0b7896a..1e5f9d1 100644 --- a/daemon/modprobe.c +++ b/daemon/modprobe.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -27,7 +28,7 @@ #include "actions.h" #include "optgroups.h" -GUESTFSD_EXT_CMD(str_modprobe, modprobe); +GUESTFSD_EXT_CMD (str_modprobe, modprobe); int optgroup_linuxmodules_available (void) diff --git a/daemon/mount.c b/daemon/mount.c index ef51d48..c41fd8c 100644 --- a/daemon/mount.c +++ b/daemon/mount.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -33,8 +34,8 @@ #define MAX_ARGS 64 -GUESTFSD_EXT_CMD(str_mount, mount); -GUESTFSD_EXT_CMD(str_umount, umount); +GUESTFSD_EXT_CMD (str_mount, mount); +GUESTFSD_EXT_CMD (str_umount, umount); /* You must mount something on "/" first before many operations. * Hence we have an internal function which can test if something is @@ -96,7 +97,8 @@ is_device_mounted (const char *device) while ((m = getmntent (fp)) != NULL) { if ((sysroot_len > 0 && STREQ (m->mnt_dir, sysroot)) || - (STRPREFIX (m->mnt_dir, sysroot) && m->mnt_dir[sysroot_len] == '/')) { + (STRPREFIX (m->mnt_dir, sysroot) && + m->mnt_dir[sysroot_len] == '/')) { if (stat (m->mnt_fsname, &stat2) == 0) { if (stat1.st_rdev == stat2.st_rdev) { /* found it */ @@ -141,7 +143,8 @@ do_mount_vfs (const char *options, const char *vfstype, return -1; } if (!S_ISDIR (statbuf.st_mode)) { - reply_with_perror ("mount: %s: mount point is not a directory", mountpoint); + reply_with_perror ("mount: %s: mount point is not a directory", + mountpoint); return -1; } @@ -150,20 +153,20 @@ do_mount_vfs (const char *options, const char *vfstype, int mount_vfs_nochroot (const char *options, const char *vfstype, - const mountable_t *mountable, - const char *mp, const char *user_mp) + const mountable_t *mountable, const char *mp, + const char *user_mp) { CLEANUP_FREE char *options_plus = NULL; const char *device = mountable->device; if (mountable->type == MOUNTABLE_BTRFSVOL) { if (options && strlen (options) > 0) { - if (asprintf (&options_plus, "subvol=%s,%s", - mountable->volume, options) == -1) { + if (asprintf (&options_plus, "subvol=%s,%s", mountable->volume, + options) == -1) { reply_with_perror ("asprintf"); return -1; } } - + else { if (asprintf (&options_plus, "subvol=%s", mountable->volume) == -1) { reply_with_perror ("asprintf"); @@ -175,16 +178,15 @@ mount_vfs_nochroot (const char *options, const char *vfstype, CLEANUP_FREE char *error = NULL; int r; if (vfstype) - r = command (NULL, &error, - str_mount, "-o", options_plus ? options_plus : options, - "-t", vfstype, device, mp, NULL); - else - r = command (NULL, &error, - str_mount, "-o", options_plus ? options_plus : options, + r = command (NULL, &error, str_mount, "-o", + options_plus ? options_plus : options, "-t", vfstype, device, mp, NULL); + else + r = command (NULL, &error, str_mount, "-o", + options_plus ? options_plus : options, device, mp, NULL); if (r == -1) { - reply_with_error ("%s on %s (options: '%s'): %s", - device, user_mp, options, error); + reply_with_error ("%s on %s (options: '%s'): %s", device, user_mp, + options, error); return -1; } @@ -212,8 +214,7 @@ do_mount_options (const char *options, const mountable_t *mountable, /* Takes optional arguments, consult optargs_bitmask. */ int -do_umount (const char *pathordevice, - int force, int lazyunmount) +do_umount (const char *pathordevice, int force, int lazyunmount) { int r; CLEANUP_FREE char *err = NULL; @@ -223,8 +224,7 @@ do_umount (const char *pathordevice, size_t i = 0; is_dev = STREQLEN (pathordevice, "/dev/", 5); - buf = is_dev ? strdup (pathordevice) - : sysroot_path (pathordevice); + buf = is_dev ? strdup (pathordevice) : sysroot_path (pathordevice); if (buf == NULL) { reply_with_perror ("malloc"); return -1; @@ -283,16 +283,14 @@ mounts_or_mountpoints (int mp) endmntent (fp); return NULL; } - if (mp && - add_string (&ret, "/") == -1) + if (mp && add_string (&ret, "/") == -1) goto error; } /* Or allow a mount directory like "/sysroot/...". */ if (STRPREFIX (m->mnt_dir, sysroot) && m->mnt_dir[sysroot_len] == '/') { if (add_string (&ret, m->mnt_fsname) == -1) goto error; - if (mp && - add_string (&ret, &m->mnt_dir[sysroot_len]) == -1) + if (mp && add_string (&ret, &m->mnt_dir[sysroot_len]) == -1) goto error; } } @@ -351,8 +349,8 @@ do_mountpoints (void) static int compare_longest_first (const void *vp1, const void *vp2) { - char * const *p1 = (char * const *) vp1; - char * const *p2 = (char * const *) vp2; + char *const *p1 = (char *const *)vp1; + char *const *p2 = (char *const *)vp2; int n1 = strlen (*p1); int n2 = strlen (*p2); return n2 - n1; @@ -384,7 +382,8 @@ do_umount_all (void) while ((m = getmntent (fp)) != NULL) { if (verbose) { - fprintf (stderr, "umount-all: /proc/mounts: fsname=%s dir=%s type=%s opts=%s freq=%d passno=%d\n", + fprintf (stderr, "umount-all: /proc/mounts: fsname=%s dir=%s type=%s " + "opts=%s freq=%d passno=%d\n", m->mnt_fsname, m->mnt_dir, m->mnt_type, m->mnt_opts, m->mnt_freq, m->mnt_passno); } @@ -408,7 +407,8 @@ do_umount_all (void) endmntent (fp); if (mounts.size > 0) - qsort (mounts.argv, mounts.size, sizeof (char *), compare_longest_first); + qsort (mounts.argv, mounts.size, sizeof (char *), + compare_longest_first); /* Unmount them. */ for (i = 0; i < mounts.size; ++i) { diff --git a/daemon/mountable.c b/daemon/mountable.c index 48c6c53..bacd0ee 100644 --- a/daemon/mountable.c +++ b/daemon/mountable.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> diff --git a/daemon/ntfs.c b/daemon/ntfs.c index e191a19..55bccb6 100644 --- a/daemon/ntfs.c +++ b/daemon/ntfs.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -31,10 +32,10 @@ #define MAX_ARGS 64 -GUESTFSD_EXT_CMD(str_ntfs3g_probe, ntfs-3g.probe); -GUESTFSD_EXT_CMD(str_ntfsresize, ntfsresize); -GUESTFSD_EXT_CMD(str_ntfsfix, ntfsfix); -GUESTFSD_EXT_CMD(str_ntfslabel, ntfslabel); +GUESTFSD_EXT_CMD (str_ntfs3g_probe, ntfs - 3g.probe); +GUESTFSD_EXT_CMD (str_ntfsresize, ntfsresize); +GUESTFSD_EXT_CMD (str_ntfsfix, ntfsfix); +GUESTFSD_EXT_CMD (str_ntfslabel, ntfslabel); int optgroup_ntfs3g_available (void) @@ -65,8 +66,8 @@ ntfs_get_label (const char *device) /* Trim trailing \n if present. */ len = strlen (out); - if (len > 0 && out[len-1] == '\n') - out[len-1] = '\0'; + if (len > 0 && out[len - 1] == '\n') + out[len - 1] = '\0'; return out; } @@ -178,7 +179,8 @@ ntfs_minimum_size (const char *device) if (verbose) { for (i = 0; lines[i] != NULL; ++i) - fprintf (stderr, "ntfs_minimum_size: lines[%zu] = \"%s\"\n", i, lines[i]); + fprintf (stderr, "ntfs_minimum_size: lines[%zu] = \"%s\"\n", i, + lines[i]); } #if __WORDSIZE == 64 @@ -198,10 +200,9 @@ ntfs_minimum_size (const char *device) reply_with_error ("cannot parse cluster size"); return -1; } - } - else if (STRPREFIX (lines[i], volume_size_pattern)) { - if (XSTRTOD64 (lines[i] + strlen (volume_size_pattern), - NULL, 10, &volume_size, NULL) != LONGINT_OK) { + } else if (STRPREFIX (lines[i], volume_size_pattern)) { + if (XSTRTOD64 (lines[i] + strlen (volume_size_pattern), NULL, 10, + &volume_size, NULL) != LONGINT_OK) { reply_with_error ("cannot parse volume size"); return -1; } @@ -225,8 +226,8 @@ ntfs_minimum_size (const char *device) for (i = 0; lines[i] != NULL; ++i) { if (STRPREFIX (lines[i], size_pattern)) { int64_t ret; - if (XSTRTOD64 (lines[i] + strlen (size_pattern), - NULL, 10, &ret, NULL) != LONGINT_OK) { + if (XSTRTOD64 (lines[i] + strlen (size_pattern), NULL, 10, &ret, + NULL) != LONGINT_OK) { reply_with_error ("cannot parse minimum size"); return -1; } @@ -236,7 +237,8 @@ ntfs_minimum_size (const char *device) #undef XSTRTOD64 - reply_with_error ("minimum size not found. Check output format:\n%s", out); + reply_with_error ("minimum size not found. Check output format:\n%s", + out); return -1; } @@ -288,8 +290,8 @@ do_ntfscat_i (const mountable_t *mountable, int64_t inode) } /* Construct the command. */ - if (asprintf (&cmd, "ntfscat -i %" PRIi64 " %s", - inode, mountable->device) == -1) { + if (asprintf (&cmd, "ntfscat -i %" PRIi64 " %s", inode, + mountable->device) == -1) { reply_with_perror ("asprintf"); return -1; } @@ -318,18 +320,18 @@ do_ntfscat_i (const mountable_t *mountable, int64_t inode) if (ferror (fp)) { fprintf (stderr, "fread: %" PRIi64 ": %m\n", inode); - send_file_end (1); /* Cancel. */ + send_file_end (1); /* Cancel. */ pclose (fp); return -1; } if (pclose (fp) != 0) { fprintf (stderr, "pclose: %" PRIi64 ": %m\n", inode); - send_file_end (1); /* Cancel. */ + send_file_end (1); /* Cancel. */ return -1; } - if (send_file_end (0)) /* Normal end of file. */ + if (send_file_end (0)) /* Normal end of file. */ return -1; return 0; diff --git a/daemon/ntfsclone.c b/daemon/ntfsclone.c index f04017c..c460184 100644 --- a/daemon/ntfsclone.c +++ b/daemon/ntfsclone.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -32,7 +33,7 @@ #include "actions.h" #include "optgroups.h" -GUESTFSD_EXT_CMD(str_ntfsclone, ntfsclone); +GUESTFSD_EXT_CMD (str_ntfsclone, ntfsclone); /* Read the error file. Returns a string that the caller must free. */ static char * @@ -50,10 +51,10 @@ read_error_file (char *error_file) } /* Remove trailing \n character if any. */ - if (len > 0 && str[len-1] == '\n') + if (len > 0 && str[len - 1] == '\n') str[--len] = '\0'; - return str; /* caller frees */ + return str; /* caller frees */ } static int @@ -82,8 +83,8 @@ do_ntfsclone_in (const char *device) close (fd); /* Construct the command. */ - if (asprintf (&cmd, "%s -O %s --restore-image - 2> %s", - str_ntfsclone, device, error_file) == -1) { + if (asprintf (&cmd, "%s -O %s --restore-image - 2> %s", str_ntfsclone, + device, error_file) == -1) { err = errno; r = cancel_receive (); errno = err; @@ -111,7 +112,7 @@ do_ntfsclone_in (const char *device) fd = fileno (fp); r = receive_file (write_cb, &fd); - if (r == -1) { /* write error */ + if (r == -1) { /* write error */ cancel_receive (); CLEANUP_FREE char *errstr = read_error_file (error_file); reply_with_error ("write error on device: %s: %s", device, errstr); @@ -119,7 +120,7 @@ do_ntfsclone_in (const char *device) pclose (fp); return -1; } - if (r == -2) { /* cancellation from library */ + if (r == -2) { /* cancellation from library */ /* This error is ignored by the library since it initiated the * cancel. Nevertheless we must send an error reply here. */ @@ -145,9 +146,8 @@ do_ntfsclone_in (const char *device) /* Has one FileOut parameter. */ /* Takes optional arguments, consult optargs_bitmask. */ int -do_ntfsclone_out (const char *device, - int metadataonly, int rescue, int ignorefscheck, - int preservetimestamps, int force) +do_ntfsclone_out (const char *device, int metadataonly, int rescue, + int ignorefscheck, int preservetimestamps, int force) { int r; FILE *fp; @@ -161,14 +161,28 @@ do_ntfsclone_out (const char *device, } /* Construct the ntfsclone command. */ - if (asprintf (&cmd, "%s -o - --save-image%s%s%s%s%s %s", - str_ntfsclone, - (optargs_bitmask & GUESTFS_NTFSCLONE_OUT_METADATAONLY_BITMASK) && metadataonly ? " --metadata" : "", - (optargs_bitmask & GUESTFS_NTFSCLONE_OUT_RESCUE_BITMASK) && rescue ? " --rescue" : "", - (optargs_bitmask & GUESTFS_NTFSCLONE_OUT_IGNOREFSCHECK_BITMASK) && ignorefscheck ? " --ignore-fs-check" : "", - (optargs_bitmask & GUESTFS_NTFSCLONE_OUT_PRESERVETIMESTAMPS_BITMASK) && preservetimestamps ? " --preserve-timestamps" : "", - (optargs_bitmask & GUESTFS_NTFSCLONE_OUT_FORCE_BITMASK) && force ? " --force" : "", - device) == -1) { + if (asprintf ( + &cmd, "%s -o - --save-image%s%s%s%s%s %s", str_ntfsclone, + (optargs_bitmask & GUESTFS_NTFSCLONE_OUT_METADATAONLY_BITMASK) && + metadataonly + ? " --metadata" + : "", + (optargs_bitmask & GUESTFS_NTFSCLONE_OUT_RESCUE_BITMASK) && rescue + ? " --rescue" + : "", + (optargs_bitmask & GUESTFS_NTFSCLONE_OUT_IGNOREFSCHECK_BITMASK) && + ignorefscheck + ? " --ignore-fs-check" + : "", + (optargs_bitmask & + GUESTFS_NTFSCLONE_OUT_PRESERVETIMESTAMPS_BITMASK) && + preservetimestamps + ? " --preserve-timestamps" + : "", + (optargs_bitmask & GUESTFS_NTFSCLONE_OUT_FORCE_BITMASK) && force + ? " --force" + : "", + device) == -1) { reply_with_perror ("asprintf"); return -1; } @@ -197,18 +211,18 @@ do_ntfsclone_out (const char *device, if (ferror (fp)) { fprintf (stderr, "fread: %s: %m\n", device); - send_file_end (1); /* Cancel. */ + send_file_end (1); /* Cancel. */ pclose (fp); return -1; } if (pclose (fp) != 0) { fprintf (stderr, "pclose: %s: %m\n", device); - send_file_end (1); /* Cancel. */ + send_file_end (1); /* Cancel. */ return -1; } - if (send_file_end (0)) /* Normal end of file. */ + if (send_file_end (0)) /* Normal end of file. */ return -1; return 0; diff --git a/daemon/parted.c b/daemon/parted.c index 00ae424..2e08869 100644 --- a/daemon/parted.c +++ b/daemon/parted.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -30,9 +31,9 @@ #include "actions.h" #include "optgroups.h" -GUESTFSD_EXT_CMD(str_parted, parted); -GUESTFSD_EXT_CMD(str_sfdisk, sfdisk); -GUESTFSD_EXT_CMD(str_sgdisk, sgdisk); +GUESTFSD_EXT_CMD (str_parted, parted); +GUESTFSD_EXT_CMD (str_sfdisk, sfdisk); +GUESTFSD_EXT_CMD (str_sgdisk, sgdisk); /* Notes: * @@ -52,16 +53,11 @@ static const char * check_parttype (const char *parttype) { /* Check and translate parttype. */ - if (STREQ (parttype, "aix") || - STREQ (parttype, "amiga") || - STREQ (parttype, "bsd") || - STREQ (parttype, "dasd") || - STREQ (parttype, "dvh") || - STREQ (parttype, "gpt") || - STREQ (parttype, "mac") || - STREQ (parttype, "msdos") || - STREQ (parttype, "pc98") || - STREQ (parttype, "sun")) + if (STREQ (parttype, "aix") || STREQ (parttype, "amiga") || + STREQ (parttype, "bsd") || STREQ (parttype, "dasd") || + STREQ (parttype, "dvh") || STREQ (parttype, "gpt") || + STREQ (parttype, "mac") || STREQ (parttype, "msdos") || + STREQ (parttype, "pc98") || STREQ (parttype, "sun")) return parttype; else if (STREQ (parttype, "rdb")) return "amiga"; @@ -81,14 +77,15 @@ do_part_init (const char *device, const char *parttype) parttype = check_parttype (parttype); if (!parttype) { - reply_with_error ("unknown partition type: common choices are \"gpt\" and \"msdos\""); + reply_with_error ( + "unknown partition type: common choices are \"gpt\" and \"msdos\""); return -1; } udev_settle (); - r = commandf (NULL, &err, COMMAND_FLAG_FOLD_STDOUT_ON_STDERR, - str_parted, "-s", "--", device, "mklabel", parttype, NULL); + r = commandf (NULL, &err, COMMAND_FLAG_FOLD_STDOUT_ON_STDERR, str_parted, + "-s", "--", device, "mklabel", parttype, NULL); if (r == -1) { reply_with_error ("parted: %s: %s", device, err); return -1; @@ -100,8 +97,8 @@ do_part_init (const char *device, const char *parttype) } int -do_part_add (const char *device, const char *prlogex, - int64_t startsect, int64_t endsect) +do_part_add (const char *device, const char *prlogex, int64_t startsect, + int64_t endsect) { int r; CLEANUP_FREE char *err = NULL; @@ -109,8 +106,7 @@ do_part_add (const char *device, const char *prlogex, char endstr[32]; /* Check and translate prlogex. */ - if (STREQ (prlogex, "primary") || - STREQ (prlogex, "logical") || + if (STREQ (prlogex, "primary") || STREQ (prlogex, "logical") || STREQ (prlogex, "extended")) ; else if (STREQ (prlogex, "p")) @@ -120,7 +116,9 @@ do_part_add (const char *device, const char *prlogex, else if (STREQ (prlogex, "e")) prlogex = "extended"; else { - reply_with_error ("unknown partition type: %s: this should be \"primary\", \"logical\" or \"extended\"", prlogex); + reply_with_error ("unknown partition type: %s: this should be " + "\"primary\", \"logical\" or \"extended\"", + prlogex); return -1; } @@ -140,9 +138,9 @@ do_part_add (const char *device, const char *prlogex, * name_ to prlogex, eg. "primary". I would essentially describe * this as a bug in the parted mkpart command. */ - r = commandf (NULL, &err, COMMAND_FLAG_FOLD_STDOUT_ON_STDERR, - str_parted, "-s", "--", - device, "mkpart", prlogex, startstr, endstr, NULL); + r = commandf (NULL, &err, COMMAND_FLAG_FOLD_STDOUT_ON_STDERR, str_parted, + "-s", "--", device, "mkpart", prlogex, startstr, endstr, + NULL); if (r == -1) { reply_with_error ("parted: %s: %s", device, err); return -1; @@ -169,8 +167,8 @@ do_part_del (const char *device, int partnum) udev_settle (); - r = commandf (NULL, &err, COMMAND_FLAG_FOLD_STDOUT_ON_STDERR, - str_parted, "-s", "--", device, "rm", partnum_str, NULL); + r = commandf (NULL, &err, COMMAND_FLAG_FOLD_STDOUT_ON_STDERR, str_parted, + "-s", "--", device, "rm", partnum_str, NULL); if (r == -1) { reply_with_error ("parted: %s: %s", device, err); return -1; @@ -189,7 +187,8 @@ do_part_disk (const char *device, const char *parttype) parttype = check_parttype (parttype); if (!parttype) { - reply_with_error ("unknown partition type: common choices are \"gpt\" and \"msdos\""); + reply_with_error ( + "unknown partition type: common choices are \"gpt\" and \"msdos\""); return -1; } @@ -208,10 +207,8 @@ do_part_disk (const char *device, const char *parttype) udev_settle (); - r = commandf (NULL, &err, COMMAND_FLAG_FOLD_STDOUT_ON_STDERR, - str_parted, "-s", "--", - device, - "mklabel", parttype, + r = commandf (NULL, &err, COMMAND_FLAG_FOLD_STDOUT_ON_STDERR, str_parted, + "-s", "--", device, "mklabel", parttype, /* See comment about about the parted mkpart command. */ "mkpart", STREQ (parttype, "gpt") ? "p1" : "primary", startstr, endstr, NULL); @@ -242,9 +239,9 @@ do_part_set_bootable (const char *device, int partnum, int bootable) udev_settle (); - r = commandf (NULL, &err, COMMAND_FLAG_FOLD_STDOUT_ON_STDERR, - str_parted, "-s", "--", - device, "set", partstr, "boot", bootable ? "on" : "off", NULL); + r = commandf (NULL, &err, COMMAND_FLAG_FOLD_STDOUT_ON_STDERR, str_parted, + "-s", "--", device, "set", partstr, "boot", + bootable ? "on" : "off", NULL); if (r == -1) { reply_with_error ("parted: %s: %s", device, err); return -1; @@ -272,8 +269,8 @@ do_part_set_name (const char *device, int partnum, const char *name) udev_settle (); - r = commandf (NULL, &err, COMMAND_FLAG_FOLD_STDOUT_ON_STDERR, - str_parted, "-s", "--", device, "name", partstr, name, NULL); + r = commandf (NULL, &err, COMMAND_FLAG_FOLD_STDOUT_ON_STDERR, str_parted, + "-s", "--", device, "name", partstr, name, NULL); if (r == -1) { reply_with_error ("parted: %s: %s", device, err); return -1; @@ -298,8 +295,8 @@ get_table_field (const char *line, int n) } if (n > 0) { - reply_with_error ("not enough fields in output of parted print command: %s", - line); + reply_with_error ( + "not enough fields in output of parted print command: %s", line); return NULL; } @@ -321,12 +318,10 @@ print_partition_table (const char *device, bool add_m_option) int r; if (add_m_option) - r = command (&out, &err, str_parted, "-m", "-s", "--", device, - "unit", "b", - "print", NULL); + r = command (&out, &err, str_parted, "-m", "-s", "--", device, "unit", + "b", "print", NULL); else - r = command (&out, &err, str_parted, "-s", "--", device, - "unit", "b", + r = command (&out, &err, str_parted, "-s", "--", device, "unit", "b", "print", NULL); if (r == -1) { int errcode = 0; @@ -355,7 +350,8 @@ do_part_get_parttype (const char *device) return NULL; if (lines[0] == NULL || STRNEQ (lines[0], "BYT;")) { - reply_with_error ("unknown signature, expected \"BYT;\" as first line of the output: %s", + reply_with_error ("unknown signature, expected \"BYT;\" as first line " + "of the output: %s", lines[0] ? lines[0] : "(signature was null)"); return NULL; } @@ -410,7 +406,7 @@ do_part_list (const char *device) } r->guestfs_int_partition_list_len = nr_rows; r->guestfs_int_partition_list_val = - malloc (nr_rows * sizeof (guestfs_int_partition)); + malloc (nr_rows * sizeof (guestfs_int_partition)); if (r->guestfs_int_partition_list_val == NULL) { reply_with_perror ("malloc"); goto error2; @@ -424,16 +420,18 @@ do_part_list (const char *device) &r->guestfs_int_partition_list_val[i].part_start, &r->guestfs_int_partition_list_val[i].part_end, &r->guestfs_int_partition_list_val[i].part_size) != 4) { - reply_with_error ("could not parse row from output of parted print command: %s", lines[row]); + reply_with_error ( + "could not parse row from output of parted print command: %s", + lines[row]); goto error3; } } return r; - error3: +error3: free (r->guestfs_int_partition_list_val); - error2: +error2: free (r); return NULL; } @@ -459,7 +457,8 @@ do_part_get_bootable (const char *device, int partnum) * the matching partition number (RHBZ#602997). */ if (lines[0] == NULL || STRNEQ (lines[0], "BYT;")) { - reply_with_error ("unknown signature, expected \"BYT;\" as first line of the output: %s", + reply_with_error ("unknown signature, expected \"BYT;\" as first line " + "of the output: %s", lines[0] ? lines[0] : "(signature was null)"); return -1; } @@ -473,7 +472,9 @@ do_part_get_bootable (const char *device, int partnum) int pnum; for (row = 2; lines[row] != NULL; ++row) { if (sscanf (lines[row], "%d:", &pnum) != 1) { - reply_with_error ("could not parse row from output of parted print command: %s", lines[row]); + reply_with_error ( + "could not parse row from output of parted print command: %s", + lines[row]); return -1; } if (pnum == partnum) @@ -530,7 +531,8 @@ do_part_get_mbr_id (const char *device, int partnum) return -1; } - const char *param = test_sfdisk_has_part_type () ? "--part-type" : "--print-id"; + const char *param = + test_sfdisk_has_part_type () ? "--part-type" : "--print-id"; char partnum_str[16]; snprintf (partnum_str, sizeof partnum_str, "%d", partnum); @@ -566,22 +568,23 @@ do_part_set_mbr_id (const char *device, int partnum, int idbyte) return -1; } - const char *param = test_sfdisk_has_part_type () ? "--part-type" : "--change-id"; + const char *param = + test_sfdisk_has_part_type () ? "--part-type" : "--change-id"; char partnum_str[16]; snprintf (partnum_str, sizeof partnum_str, "%d", partnum); char idbyte_str[16]; /* NB: hex */ - snprintf (idbyte_str, sizeof partnum_str, "%x", (unsigned) idbyte); + snprintf (idbyte_str, sizeof partnum_str, "%x", (unsigned)idbyte); CLEANUP_FREE char *err = NULL; int r; udev_settle (); - r = command (NULL, &err, str_sfdisk, - param, device, partnum_str, idbyte_str, NULL); + r = command (NULL, &err, str_sfdisk, param, device, partnum_str, + idbyte_str, NULL); if (r == -1) { reply_with_error ("sfdisk %s: %s", param, err); return -1; @@ -651,7 +654,8 @@ do_part_set_gpt_guid (const char *device, int partnum, const char *guid) } static char * -sgdisk_info_extract_field (const char *device, int partnum, const char *field, +sgdisk_info_extract_field (const char *device, int partnum, + const char *field, char *(*extract) (const char *path)) { if (partnum <= 0) { @@ -670,21 +674,23 @@ sgdisk_info_extract_field (const char *device, int partnum, const char *field, str_sgdisk, device, "-i", partnum_str, NULL); if (r == -1) { - reply_with_error ("%s %s -i %s: %s", str_sgdisk, device, partnum_str, err); + reply_with_error ("%s %s -i %s: %s", str_sgdisk, device, partnum_str, + err); return NULL; } CLEANUP_FREE_STRING_LIST char **lines = split_lines (err); if (lines == NULL) { - reply_with_error ("'%s %s -i %i' returned no output", - str_sgdisk, device, partnum); + reply_with_error ("'%s %s -i %i' returned no output", str_sgdisk, + device, partnum); return NULL; } int fieldlen = strlen (field); /* Parse the output of sgdisk -i: - * Partition GUID code: 21686148-6449-6E6F-744E-656564454649 (BIOS boot partition) + * Partition GUID code: 21686148-6449-6E6F-744E-656564454649 (BIOS boot + * partition) * Partition unique GUID: 19AEC5FE-D63A-4A15-9D37-6FCBFB873DC0 * First sector: 2048 (at 1024.0 KiB) * Last sector: 411647 (at 201.0 MiB) @@ -696,14 +702,13 @@ sgdisk_info_extract_field (const char *device, int partnum, const char *field, char *line = *i; /* Skip blank lines */ - if (line[0] == '\0') continue; + if (line[0] == '\0') + continue; /* Split the line in 2 at the colon */ char *colon = strchr (line, ':'); if (colon) { - if (colon - line == fieldlen && - memcmp (line, field, fieldlen) == 0) - { + if (colon - line == fieldlen && memcmp (line, field, fieldlen) == 0) { /* The value starts after the colon */ char *value = colon + 1; @@ -723,7 +728,8 @@ sgdisk_info_extract_field (const char *device, int partnum, const char *field, /* Ignore lines with no colon. Log to stderr so it will show up in * LIBGUESTFS_DEBUG. */ if (verbose) { - fprintf (stderr, "get-gpt-type: unexpected sgdisk output ignored: %s\n", + fprintf (stderr, + "get-gpt-type: unexpected sgdisk output ignored: %s\n", line); } } @@ -731,7 +737,8 @@ sgdisk_info_extract_field (const char *device, int partnum, const char *field, /* If we got here it means we didn't find the field */ reply_with_error ("sgdisk output did not contain '%s'. " - "See LIBGUESTFS_DEBUG output for more details", field); + "See LIBGUESTFS_DEBUG output for more details", + field); return NULL; } @@ -755,8 +762,8 @@ extract_uuid (const char *value) char * do_part_get_gpt_type (const char *device, int partnum) { - return sgdisk_info_extract_field (device, partnum, - "Partition GUID code", extract_uuid); + return sgdisk_info_extract_field (device, partnum, "Partition GUID code", + extract_uuid); } char * @@ -786,13 +793,15 @@ do_part_get_name (const char *device, int partnum) return NULL; if (lines[0] == NULL || STRNEQ (lines[0], "BYT;")) { - reply_with_error ("unknown signature, expected \"BYT;\" as first line of the output: %s", + reply_with_error ("unknown signature, expected \"BYT;\" as first " + "line of the output: %s", lines[0] ? lines[0] : "(signature was null)"); return NULL; } if (lines[1] == NULL) { - reply_with_error ("parted didn't return a line describing the device"); + reply_with_error ( + "parted didn't return a line describing the device"); return NULL; } @@ -800,7 +809,9 @@ do_part_get_name (const char *device, int partnum) int pnum; for (row = 2; lines[row] != NULL; ++row) { if (sscanf (lines[row], "%d:", &pnum) != 1) { - reply_with_error ("could not parse row from output of parted print command: %s", lines[row]); + reply_with_error ( + "could not parse row from output of parted print command: %s", + lines[row]); return NULL; } if (pnum == partnum) @@ -818,7 +829,8 @@ do_part_get_name (const char *device, int partnum) return name; } else { - reply_with_error ("part-get-name can only be used on GUID Partition Tables"); + reply_with_error ( + "part-get-name can only be used on GUID Partition Tables"); return NULL; } } @@ -874,26 +886,25 @@ do_part_get_mbr_part_type (const char *device, int partnum) size_t i; int64_t temp_int64; int part_num; - char temp_type[16] = {'\0'}; - for (i = 0, row = start; row < end; ++i, ++row) { + char temp_type[16] = { '\0' }; + for (i = 0, row = start; row < end; ++i, ++row) { if (STREQ (parttype, "gpt")) { memcpy (temp_type, "primary", strlen ("primary")); if (sscanf (lines[row], "%d%" SCNi64 "B%" SCNi64 "B%" SCNi64 "B", - &part_num, - &temp_int64, - &temp_int64, - &temp_int64) != 4) { - reply_with_error ("could not parse row from output of parted print command: %s", lines[row]); + &part_num, &temp_int64, &temp_int64, &temp_int64) != 4) { + reply_with_error ( + "could not parse row from output of parted print command: %s", + lines[row]); return NULL; } } else { - if (sscanf (lines[row], "%d%" SCNi64 "B%" SCNi64 "B%" SCNi64 "B" "%15s", - &part_num, - &temp_int64, - &temp_int64, - &temp_int64, - temp_type) != 5) { - reply_with_error ("could not parse row from output of parted print command: %s", lines[row]); + if (sscanf (lines[row], "%d%" SCNi64 "B%" SCNi64 "B%" SCNi64 "B" + "%15s", + &part_num, &temp_int64, &temp_int64, &temp_int64, + temp_type) != 5) { + reply_with_error ( + "could not parse row from output of parted print command: %s", + lines[row]); return NULL; } } @@ -904,15 +915,15 @@ do_part_get_mbr_part_type (const char *device, int partnum) if (STRPREFIX (temp_type, "primary")) { part_type = strdup ("primary"); if (part_type == NULL) - goto error; + goto error; } else if (STRPREFIX (temp_type, "logical")) { part_type = strdup ("logical"); if (part_type == NULL) - goto error; + goto error; } else if (STRPREFIX (temp_type, "extended")) { part_type = strdup ("extended"); if (part_type == NULL) - goto error; + goto error; } else goto error; @@ -924,7 +935,7 @@ do_part_get_mbr_part_type (const char *device, int partnum) return NULL; } - error: +error: reply_with_error ("strdup failed"); return NULL; } @@ -945,8 +956,7 @@ do_part_get_disk_guid (const char *device) CLEANUP_FREE_STRING_LIST char **lines = split_lines (err); if (lines == NULL) { - reply_with_error ("'%s %s -p' returned no output", - str_sgdisk, device); + reply_with_error ("'%s %s -p' returned no output", str_sgdisk, device); return NULL; } @@ -1005,7 +1015,7 @@ do_part_set_disk_guid_random (const char *device) } int -do_part_expand_gpt(const char *device) +do_part_expand_gpt (const char *device) { CLEANUP_FREE char *err = NULL; @@ -1019,16 +1029,16 @@ do_part_expand_gpt(const char *device) reply_with_error ("%s --pretend -e %s: %s", str_sgdisk, device, err); return -1; } - if (err && strlen(err) != 0) { + if (err && strlen (err) != 0) { /* Unexpected actions. */ reply_with_error ("%s --pretend -e %s: %s", str_sgdisk, device, err); return -1; } - free(err); + free (err); /* Now we can do a real run. */ - r = commandf (NULL, &err, COMMAND_FLAG_FOLD_STDOUT_ON_STDERR, - str_sgdisk, "-e", device, NULL); + r = commandf (NULL, &err, COMMAND_FLAG_FOLD_STDOUT_ON_STDERR, str_sgdisk, + "-e", device, NULL); if (r == -1) { reply_with_error ("%s -e %s: %s", str_sgdisk, device, err); diff --git a/daemon/pingdaemon.c b/daemon/pingdaemon.c index eac291d..8aefebc 100644 --- a/daemon/pingdaemon.c +++ b/daemon/pingdaemon.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> diff --git a/daemon/proto.c b/daemon/proto.c index 654dd3a..90c708a 100644 --- a/daemon/proto.c +++ b/daemon/proto.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -27,7 +28,7 @@ #include <unistd.h> #include <errno.h> #include <error.h> -#include <sys/param.h> /* defines MIN */ +#include <sys/param.h> /* defines MIN */ #include <sys/select.h> #include <sys/time.h> #include <rpc/types.h> @@ -98,8 +99,8 @@ main_loop (int _sock) if (verbose) fprintf (stderr, - "guestfsd: main_loop: new request, len 0x%" PRIx32 "\n", - len); + "guestfsd: main_loop: new request, len 0x%" PRIx32 "\n", + len); /* Cancellation sent from the library and received after the * previous request has finished processing. Just ignore it. @@ -108,7 +109,8 @@ main_loop (int _sock) continue; if (len > GUESTFS_MESSAGE_MAX) - error (EXIT_FAILURE, 0, "incoming message is too long (%u bytes)", len); + error (EXIT_FAILURE, 0, "incoming message is too long (%u bytes)", + len); buf = malloc (len); if (!buf) { @@ -125,17 +127,17 @@ main_loop (int _sock) for (i = 0; i < len; i += 16) { printf ("%04zx: ", i); - for (j = i; j < MIN (i+16, len); ++j) - printf ("%02x ", (unsigned char) buf[j]); - for (; j < i+16; ++j) + for (j = i; j < MIN (i + 16, len); ++j) + printf ("%02x ", (unsigned char)buf[j]); + for (; j < i + 16; ++j) printf (" "); printf ("|"); - for (j = i; j < MIN (i+16, len); ++j) + for (j = i; j < MIN (i + 16, len); ++j) if (c_isprint (buf[j])) printf ("%c", buf[j]); else printf ("."); - for (; j < i+16; ++j) + for (; j < i + 16; ++j) printf (" "); printf ("|\n"); } @@ -162,11 +164,11 @@ main_loop (int _sock) } if (hdr.direction != GUESTFS_DIRECTION_CALL) { reply_with_error ("unexpected message direction (%d)", - (int) hdr.direction); + (int)hdr.direction); goto cont; } if (hdr.status != GUESTFS_STATUS_OK) { - reply_with_error ("unexpected message status (%d)", (int) hdr.status); + reply_with_error ("unexpected message status (%d)", (int)hdr.status); goto cont; } @@ -195,17 +197,17 @@ main_loop (int _sock) gettimeofday (&end_t, NULL); int64_t start_us, end_us, elapsed_us; - start_us = (int64_t) start_t.tv_sec * 1000000 + start_t.tv_usec; - end_us = (int64_t) end_t.tv_sec * 1000000 + end_t.tv_usec; + start_us = (int64_t)start_t.tv_sec * 1000000 + start_t.tv_usec; + end_us = (int64_t)end_t.tv_sec * 1000000 + end_t.tv_usec; elapsed_us = end_us - start_us; fprintf (stderr, - "guestfsd: main_loop: proc %d (%s) took %d.%02d seconds\n", - proc_nr, - proc_nr >= 0 && proc_nr <= GUESTFS_MAX_PROC_NR - ? function_names[proc_nr] : "UNKNOWN PROCEDURE", - (int) (elapsed_us / 1000000), - (int) ((elapsed_us / 10000) % 100)); + "guestfsd: main_loop: proc %d (%s) took %d.%02d seconds\n", + proc_nr, proc_nr >= 0 && proc_nr <= GUESTFS_MAX_PROC_NR + ? function_names[proc_nr] + : "UNKNOWN PROCEDURE", + (int)(elapsed_us / 1000000), + (int)((elapsed_us / 10000) % 100)); } cont: @@ -247,7 +249,7 @@ reply_with_perror_errno (int err, const char *fs, ...) if (r == -1) error: - error (EXIT_FAILURE, errno, "vasprintf"); + error (EXIT_FAILURE, errno, "vasprintf"); r = asprintf (&buf2, "%s: %s", buf1, strerror (err)); if (r == -1) @@ -298,8 +300,8 @@ send_error (int errnum, char *msg) * to (char *) because they are defined that way in the XDR structs. */ err.errno_string = - (char *) (errnum > 0 ? guestfs_int_errno_to_string (errnum) : ""); - err.error_message = (char *) msg; + (char *)(errnum > 0 ? guestfs_int_errno_to_string (errnum) : ""); + err.error_message = (char *)msg; if (!xdr_guestfs_message_error (&xdr, &err)) error (EXIT_FAILURE, 0, "failed to encode error message body"); @@ -348,7 +350,9 @@ reply (xdrproc_t xdrp, char *ret) * we want to return an error message instead. (RHBZ#509597). */ if (!(*xdrp) (&xdr, ret)) { - reply_with_error ("guestfsd: failed to encode reply body\n(maybe the reply exceeds the maximum message size in the protocol?)"); + reply_with_error ("guestfsd: failed to encode reply body\n(maybe the " + "reply exceeds the maximum message size in the " + "protocol?)"); xdr_destroy (&xdr); return; } @@ -363,7 +367,7 @@ reply (xdrproc_t xdrp, char *ret) if (xwrite (sock, lenbuf, 4) == -1) error (EXIT_FAILURE, 0, "xwrite failed"); - if (xwrite (sock, buf, (size_t) len) == -1) + if (xwrite (sock, buf, (size_t)len) == -1) error (EXIT_FAILURE, 0, "xwrite failed"); } @@ -392,10 +396,11 @@ receive_file (receive_cb cb, void *opaque) xdr_destroy (&xdr); if (len == GUESTFS_CANCEL_FLAG) - continue; /* Just ignore it. */ + continue; /* Just ignore it. */ if (len > GUESTFS_MESSAGE_MAX) - error (EXIT_FAILURE, 0, "incoming message is too long (%u bytes)", len); + error (EXIT_FAILURE, 0, "incoming message is too long (%u bytes)", + len); buf = malloc (len); if (!buf) { @@ -415,31 +420,32 @@ receive_file (receive_cb cb, void *opaque) xdr_destroy (&xdr); if (verbose) - fprintf (stderr, - "guestfsd: receive_file: got chunk: cancel = 0x%x, len = %u, buf = %p\n", - (unsigned) chunk.cancel, - chunk.data.data_len, chunk.data.data_val); + fprintf (stderr, "guestfsd: receive_file: got chunk: cancel = 0x%x, " + "len = %u, buf = %p\n", + (unsigned)chunk.cancel, chunk.data.data_len, + chunk.data.data_val); if (chunk.cancel != 0 && chunk.cancel != 1) { - fprintf (stderr, - "guestfsd: receive_file: chunk.cancel != [0|1] ... " - "continuing even though we have probably lost synchronization with the library\n"); + fprintf (stderr, "guestfsd: receive_file: chunk.cancel != [0|1] ... " + "continuing even though we have probably lost " + "synchronization with the library\n"); return -1; } if (chunk.cancel) { if (verbose) - fprintf (stderr, - "guestfsd: receive_file: received cancellation from library\n"); - xdr_free ((xdrproc_t) xdr_guestfs_chunk, (char *) &chunk); + fprintf ( + stderr, + "guestfsd: receive_file: received cancellation from library\n"); + xdr_free ((xdrproc_t)xdr_guestfs_chunk, (char *)&chunk); return -2; } if (chunk.data.data_len == 0) { if (verbose) fprintf (stderr, - "guestfsd: receive_file: end of file, leaving function\n"); - xdr_free ((xdrproc_t) xdr_guestfs_chunk, (char *) &chunk); - return 0; /* end of file */ + "guestfsd: receive_file: end of file, leaving function\n"); + xdr_free ((xdrproc_t)xdr_guestfs_chunk, (char *)&chunk); + return 0; /* end of file */ } /* Note that the callback can generate progress messages. */ @@ -448,8 +454,8 @@ receive_file (receive_cb cb, void *opaque) else r = 0; - xdr_free ((xdrproc_t) xdr_guestfs_chunk, (char *) &chunk); - if (r == -1) { /* write error */ + xdr_free ((xdrproc_t)xdr_guestfs_chunk, (char *)&chunk); + if (r == -1) { /* write error */ if (verbose) fprintf (stderr, "guestfsd: receive_file: write error\n"); return -1; @@ -489,7 +495,8 @@ send_file_write (const void *buf, size_t len) int cancel; if (len > GUESTFS_MAX_CHUNK_SIZE) { - fprintf (stderr, "guestfsd: send_file_write: len (%zu) > GUESTFS_MAX_CHUNK_SIZE (%d)\n", + fprintf (stderr, "guestfsd: send_file_write: len (%zu) > " + "GUESTFS_MAX_CHUNK_SIZE (%d)\n", len, GUESTFS_MAX_CHUNK_SIZE); return -1; } @@ -503,13 +510,14 @@ send_file_write (const void *buf, size_t len) } else { chunk.cancel = 0; chunk.data.data_len = len; - chunk.data.data_val = (char *) buf; + chunk.data.data_val = (char *)buf; } if (send_chunk (&chunk) == -1) return -1; - if (cancel) return -2; + if (cancel) + return -2; return 0; } @@ -527,7 +535,7 @@ check_for_library_cancellation (void) FD_SET (sock, &rset); tv.tv_sec = 0; tv.tv_usec = 0; - r = select (sock+1, &rset, NULL, NULL, &tv); + r = select (sock + 1, &rset, NULL, NULL, &tv); if (r == -1) { perror ("select"); return 0; @@ -545,7 +553,8 @@ check_for_library_cancellation (void) xdr_destroy (&xdr); if (flag != GUESTFS_CANCEL_FLAG) { - fprintf (stderr, "guestfsd: check_for_library_cancellation: read 0x%x from library, expected 0x%x\n", + fprintf (stderr, "guestfsd: check_for_library_cancellation: read 0x%x " + "from library, expected 0x%x\n", flag, GUESTFS_CANCEL_FLAG); return 0; } @@ -580,7 +589,7 @@ send_chunk (const guestfs_chunk *chunk) } xdrmem_create (&xdr, buf, buf_len, XDR_ENCODE); - if (!xdr_guestfs_chunk (&xdr, (guestfs_chunk *) chunk)) { + if (!xdr_guestfs_chunk (&xdr, (guestfs_chunk *)chunk)) { fprintf (stderr, "guestfsd: send_chunk: failed to encode chunk\n"); xdr_destroy (&xdr); return -1; @@ -593,8 +602,9 @@ send_chunk (const guestfs_chunk *chunk) xdr_u_int (&xdr, &len); xdr_destroy (&xdr); - int err = (xwrite (sock, lenbuf, 4) == 0 - && xwrite (sock, buf, len) == 0 ? 0 : -1); + int err = + (xwrite (sock, lenbuf, 4) == 0 && xwrite (sock, buf, len) == 0 ? 0 + : -1); if (err) error (EXIT_FAILURE, 0, "send_chunk: write failed"); @@ -606,7 +616,7 @@ send_chunk (const guestfs_chunk *chunk) * are in microseconds. */ #define NOTIFICATION_INITIAL_DELAY 2000000 -#define NOTIFICATION_PERIOD 333333 +#define NOTIFICATION_PERIOD 333333 void notify_progress (uint64_t position, uint64_t total) @@ -629,8 +639,8 @@ notify_progress (uint64_t position, uint64_t total) * was sent out (or since the start of the call). */ last_us = - (int64_t) last_progress_t.tv_sec * 1000000 + last_progress_t.tv_usec; - now_us = (int64_t) now_t.tv_sec * 1000000 + now_t.tv_usec; + (int64_t)last_progress_t.tv_sec * 1000000 + last_progress_t.tv_usec; + now_us = (int64_t)now_t.tv_sec * 1000000 + now_t.tv_usec; elapsed_us = now_us - last_us; /* Rate limit. */ @@ -670,7 +680,8 @@ notify_progress_no_ratelimit (uint64_t position, uint64_t total, xdrmem_create (&xdr, buf, sizeof buf, XDR_ENCODE); if (!xdr_guestfs_progress (&xdr, &message)) { - fprintf (stderr, "guestfsd: xdr_guestfs_progress: failed to encode message\n"); + fprintf (stderr, + "guestfsd: xdr_guestfs_progress: failed to encode message\n"); xdr_destroy (&xdr); return; } @@ -714,7 +725,7 @@ pulse_mode_start (void) void pulse_mode_end (void) { - pulse_mode_cancel (); /* Cancel the itimer. */ + pulse_mode_cancel (); /* Cancel the itimer. */ notify_progress (1, 1); } @@ -722,7 +733,7 @@ pulse_mode_end (void) void pulse_mode_cancel (void) { - int err = errno; /* Function must preserve errno. */ + int err = errno; /* Function must preserve errno. */ struct itimerval it; struct sigaction act; @@ -752,22 +763,34 @@ static void async_safe_send_pulse (int sig) { /* XDR is a RFC ... */ - unsigned char msg[] = { - (GUESTFS_PROGRESS_FLAG & 0xff000000) >> 24, - (GUESTFS_PROGRESS_FLAG & 0x00ff0000) >> 16, - (GUESTFS_PROGRESS_FLAG & 0x0000ff00) >> 8, - GUESTFS_PROGRESS_FLAG & 0x000000ff, - (proc_nr & 0xff000000) >> 24, - (proc_nr & 0x00ff0000) >> 16, - (proc_nr & 0x0000ff00) >> 8, - proc_nr & 0x000000ff, - (serial & 0xff000000) >> 24, - (serial & 0x00ff0000) >> 16, - (serial & 0x0000ff00) >> 8, - serial & 0x000000ff, - /* 64 bit position = 0 */ 0, 0, 0, 0, 0, 0, 0, 0, - /* 64 bit total = 1 */ 0, 0, 0, 0, 0, 0, 0, 1 - }; + unsigned char msg[] = { (GUESTFS_PROGRESS_FLAG & 0xff000000) >> 24, + (GUESTFS_PROGRESS_FLAG & 0x00ff0000) >> 16, + (GUESTFS_PROGRESS_FLAG & 0x0000ff00) >> 8, + GUESTFS_PROGRESS_FLAG & 0x000000ff, + (proc_nr & 0xff000000) >> 24, + (proc_nr & 0x00ff0000) >> 16, + (proc_nr & 0x0000ff00) >> 8, + proc_nr & 0x000000ff, + (serial & 0xff000000) >> 24, + (serial & 0x00ff0000) >> 16, + (serial & 0x0000ff00) >> 8, + serial & 0x000000ff, + /* 64 bit position = 0 */ 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + /* 64 bit total = 1 */ 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1 }; if (xwrite (sock, msg, sizeof msg) == -1) exit (EXIT_FAILURE); diff --git a/daemon/readdir.c b/daemon/readdir.c index e488f93..f46d088 100644 --- a/daemon/readdir.c +++ b/daemon/readdir.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -71,7 +72,7 @@ do_readdir (const char *path) guestfs_int_dirent *p; p = realloc (ret->guestfs_int_dirent_list_val, - sizeof (guestfs_int_dirent) * (i+1)); + sizeof (guestfs_int_dirent) * (i + 1)); v.name = strdup (d->d_name); if (!p || !v.name) { reply_with_perror ("allocate"); @@ -90,15 +91,33 @@ do_readdir (const char *path) v.ino = d->d_ino; #ifdef HAVE_STRUCT_DIRENT_D_TYPE switch (d->d_type) { - case DT_BLK: v.ftyp = 'b'; break; - case DT_CHR: v.ftyp = 'c'; break; - case DT_DIR: v.ftyp = 'd'; break; - case DT_FIFO: v.ftyp = 'f'; break; - case DT_LNK: v.ftyp = 'l'; break; - case DT_REG: v.ftyp = 'r'; break; - case DT_SOCK: v.ftyp = 's'; break; - case DT_UNKNOWN: v.ftyp = 'u'; break; - default: v.ftyp = '?'; break; + case DT_BLK: + v.ftyp = 'b'; + break; + case DT_CHR: + v.ftyp = 'c'; + break; + case DT_DIR: + v.ftyp = 'd'; + break; + case DT_FIFO: + v.ftyp = 'f'; + break; + case DT_LNK: + v.ftyp = 'l'; + break; + case DT_REG: + v.ftyp = 'r'; + break; + case DT_SOCK: + v.ftyp = 's'; + break; + case DT_UNKNOWN: + v.ftyp = 'u'; + break; + default: + v.ftyp = '?'; + break; } #else v.ftyp = 'u'; diff --git a/daemon/realpath.c b/daemon/realpath.c index 8f28a12..b0c9112 100644 --- a/daemon/realpath.c +++ b/daemon/realpath.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -46,10 +47,11 @@ do_realpath (const char *path) return NULL; } - return ret; /* caller frees */ + return ret; /* caller frees */ } -static int find_path_element (int fd_cwd, int is_end, const char *name, char **name_ret); +static int find_path_element (int fd_cwd, int is_end, const char *name, + char **name_ret); char * do_case_sensitive_path (const char *path) @@ -68,7 +70,7 @@ do_case_sensitive_path (const char *path) /* 'fd_cwd' here is a surrogate for the current working directory, so * that we don't have to actually call chdir(2). */ - fd_cwd = open (sysroot, O_RDONLY|O_DIRECTORY|O_CLOEXEC); + fd_cwd = open (sysroot, O_RDONLY | O_DIRECTORY | O_CLOEXEC); if (fd_cwd == -1) { reply_with_perror ("%s", sysroot); goto error; @@ -116,7 +118,7 @@ do_case_sensitive_path (const char *path) if (next > 1) ret[next++] = '/'; - t = realloc (ret, next+len+1); + t = realloc (ret, next + len + 1); if (t == NULL) { reply_with_perror ("realloc"); goto error; @@ -127,7 +129,7 @@ do_case_sensitive_path (const char *path) next += len; /* Is it a directory? Try going into it. */ - fd2 = openat (fd_cwd, name_out, O_RDONLY|O_DIRECTORY|O_CLOEXEC); + fd2 = openat (fd_cwd, name_out, O_RDONLY | O_DIRECTORY | O_CLOEXEC); err = errno; close (fd_cwd); fd_cwd = fd2; @@ -145,9 +147,9 @@ do_case_sensitive_path (const char *path) if (fd_cwd >= 0) close (fd_cwd); - return ret; /* caller frees */ + return ret; /* caller frees */ - error: +error: if (fd_cwd >= 0) close (fd_cwd); free (ret); @@ -166,7 +168,8 @@ do_case_sensitive_path (const char *path) * and return -1. */ static int -find_path_element (int fd_cwd, int is_end, const char *name, char **name_ret) +find_path_element (int fd_cwd, int is_end, const char *name, + char **name_ret) { int fd2; DIR *dir; @@ -213,7 +216,8 @@ find_path_element (int fd_cwd, int is_end, const char *name, char **name_ret) } if (d == NULL) { - reply_with_error ("%s: no file or directory found with this name", name); + reply_with_error ("%s: no file or directory found with this name", + name); closedir (dir); return -1; } diff --git a/daemon/rename.c b/daemon/rename.c index d08c1ab..88caa85 100644 --- a/daemon/rename.c +++ b/daemon/rename.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> diff --git a/daemon/rsync.c b/daemon/rsync.c index d238d61..1d9248f 100644 --- a/daemon/rsync.c +++ b/daemon/rsync.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -30,7 +31,7 @@ #define MAX_ARGS 64 -GUESTFSD_EXT_CMD(str_rsync, rsync); +GUESTFSD_EXT_CMD (str_rsync, rsync); int optgroup_rsync_available (void) @@ -39,9 +40,8 @@ optgroup_rsync_available (void) } static int -rsync (const char *src, const char *src_orig, - const char *dest, const char *dest_orig, - int archive, int deletedest) +rsync (const char *src, const char *src_orig, const char *dest, + const char *dest_orig, int archive, int deletedest) { const char *argv[MAX_ARGS]; size_t i = 0; @@ -71,8 +71,8 @@ rsync (const char *src, const char *src_orig, /* Takes optional arguments, consult optargs_bitmask. */ int -do_rsync (const char *src_orig, const char *dest_orig, - int archive, int deletedest) +do_rsync (const char *src_orig, const char *dest_orig, int archive, + int deletedest) { CLEANUP_FREE char *src = NULL, *dest = NULL; @@ -93,8 +93,8 @@ do_rsync (const char *src_orig, const char *dest_orig, /* Takes optional arguments, consult optargs_bitmask. */ int -do_rsync_in (const char *remote, const char *dest_orig, - int archive, int deletedest) +do_rsync_in (const char *remote, const char *dest_orig, int archive, + int deletedest) { CLEANUP_FREE char *dest = NULL; @@ -114,8 +114,8 @@ do_rsync_in (const char *remote, const char *dest_orig, /* Takes optional arguments, consult optargs_bitmask. */ int -do_rsync_out (const char *src_orig, const char *remote, - int archive, int deletedest) +do_rsync_out (const char *src_orig, const char *remote, int archive, + int deletedest) { CLEANUP_FREE char *src = NULL; diff --git a/daemon/scrub.c b/daemon/scrub.c index c10b0a0..e89a581 100644 --- a/daemon/scrub.c +++ b/daemon/scrub.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -28,7 +29,7 @@ #include "actions.h" #include "optgroups.h" -GUESTFSD_EXT_CMD(str_scrub, scrub); +GUESTFSD_EXT_CMD (str_scrub, scrub); int optgroup_scrub_available (void) diff --git a/daemon/selinux.c b/daemon/selinux.c index 1c1446d..230307a 100644 --- a/daemon/selinux.c +++ b/daemon/selinux.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -47,7 +48,7 @@ int do_setcon (const char *context) { #if defined(HAVE_SETCON) - if (setcon ((char *) context) == -1) { + if (setcon ((char *)context) == -1) { reply_with_perror ("setcon"); return -1; } @@ -78,7 +79,7 @@ do_getcon (void) return NULL; } - return r; /* caller frees */ + return r; /* caller frees */ #else reply_with_error ("function not available"); return NULL; diff --git a/daemon/sfdisk.c b/daemon/sfdisk.c index e32e637..ddddaa1 100644 --- a/daemon/sfdisk.c +++ b/daemon/sfdisk.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -28,13 +29,12 @@ #include "daemon.h" #include "actions.h" -GUESTFSD_EXT_CMD(str_sfdisk, sfdisk); -GUESTFSD_EXT_CMD(str_blockdev, blockdev); +GUESTFSD_EXT_CMD (str_sfdisk, sfdisk); +GUESTFSD_EXT_CMD (str_blockdev, blockdev); static int sfdisk (const char *device, int n, int cyls, int heads, int sectors, - const char *extra_flag, - char *const *lines) + const char *extra_flag, char *const *lines) { FILE *fp; char buf[256]; @@ -57,14 +57,16 @@ sfdisk (const char *device, int n, int cyls, int heads, int sectors, if (extra_flag) { if (strlen (buf) + 1 + strlen (extra_flag) >= sizeof buf) { - reply_with_error ("internal buffer overflow: sfdisk extra_flag too long"); + reply_with_error ( + "internal buffer overflow: sfdisk extra_flag too long"); return -1; } sprintf (buf + strlen (buf), " %s", extra_flag); } if (strlen (buf) + 1 + strlen (device) >= sizeof buf) { - reply_with_error ("internal buffer overflow: sfdisk device name too long"); + reply_with_error ( + "internal buffer overflow: sfdisk device name too long"); return -1; } sprintf (buf + strlen (buf), " %s", device); @@ -103,7 +105,7 @@ sfdisk (const char *device, int n, int cyls, int heads, int sectors, * other component. In any case, reread the partition table * unconditionally here. */ - (void) command (NULL, NULL, str_blockdev, "--rereadpt", device, NULL); + (void)command (NULL, NULL, str_blockdev, "--rereadpt", device, NULL); udev_settle (); @@ -123,7 +125,7 @@ do_sfdisk_N (const char *device, int n, int cyls, int heads, int sectors, { char const *const lines[2] = { line, NULL }; - return sfdisk (device, n, cyls, heads, sectors, NULL, (void *) lines); + return sfdisk (device, n, cyls, heads, sectors, NULL, (void *)lines); } int @@ -148,7 +150,7 @@ sfdisk_flag (const char *device, const char *flag) udev_settle (); - return out; /* caller frees */ + return out; /* caller frees */ } char * diff --git a/daemon/sh.c b/daemon/sh.c index 94f348b..7c6e76a 100644 --- a/daemon/sh.c +++ b/daemon/sh.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -32,19 +33,21 @@ #include "ignore-value.h" -GUESTFSD_EXT_CMD(str_cp, cp); -GUESTFSD_EXT_CMD(str_mount, mount); -GUESTFSD_EXT_CMD(str_umount, umount); +GUESTFSD_EXT_CMD (str_cp, cp); +GUESTFSD_EXT_CMD (str_mount, mount); +GUESTFSD_EXT_CMD (str_umount, umount); #ifdef HAVE_ATTRIBUTE_CLEANUP -#define CLEANUP_BIND_STATE __attribute__((cleanup(free_bind_state))) -#define CLEANUP_RESOLVER_STATE __attribute__((cleanup(free_resolver_state))) +#define CLEANUP_BIND_STATE __attribute__ ((cleanup (free_bind_state))) +#define CLEANUP_RESOLVER_STATE \ + __attribute__ ((cleanup (free_resolver_state))) #else #define CLEANUP_BIND_STATE #define CLEANUP_RESOLVER_STATE #endif -struct bind_state { +struct bind_state +{ bool mounted; char *sysroot_dev; char *sysroot_dev_pts; @@ -55,7 +58,8 @@ struct bind_state { bool dev_ok, dev_pts_ok, proc_ok, selinux_ok, sys_ok, sys_fs_selinux_ok; }; -struct resolver_state { +struct resolver_state +{ bool mounted; char *sysroot_etc_resolv_conf; char *sysroot_etc_resolv_conf_old; @@ -100,20 +104,26 @@ bind_mount (struct bind_state *bs) * However I have not found a reliable way to unmount the same set * of directories (umount -R does NOT work). */ - r = command (NULL, NULL, str_mount, "--bind", "/dev", bs->sysroot_dev, NULL); + r = command (NULL, NULL, str_mount, "--bind", "/dev", bs->sysroot_dev, + NULL); bs->dev_ok = r != -1; - r = command (NULL, NULL, str_mount, "--bind", "/dev/pts", bs->sysroot_dev_pts, NULL); + r = command (NULL, NULL, str_mount, "--bind", "/dev/pts", + bs->sysroot_dev_pts, NULL); bs->dev_pts_ok = r != -1; - r = command (NULL, NULL, str_mount, "--bind", "/proc", bs->sysroot_proc, NULL); + r = command (NULL, NULL, str_mount, "--bind", "/proc", bs->sysroot_proc, + NULL); bs->proc_ok = r != -1; /* Note on the next line we have to bind-mount /sys/fs/selinux (appliance * kernel) on top of /selinux (where guest is expecting selinux). */ - r = command (NULL, NULL, str_mount, "--bind", "/sys/fs/selinux", bs->sysroot_selinux, NULL); + r = command (NULL, NULL, str_mount, "--bind", "/sys/fs/selinux", + bs->sysroot_selinux, NULL); bs->selinux_ok = r != -1; - r = command (NULL, NULL, str_mount, "--bind", "/sys", bs->sysroot_sys, NULL); + r = command (NULL, NULL, str_mount, "--bind", "/sys", bs->sysroot_sys, + NULL); bs->sys_ok = r != -1; - r = command (NULL, NULL, str_mount, "--bind", "/sys/fs/selinux", bs->sysroot_sys_fs_selinux, NULL); + r = command (NULL, NULL, str_mount, "--bind", "/sys/fs/selinux", + bs->sysroot_sys_fs_selinux, NULL); bs->sys_fs_selinux_ok = r != -1; bs->mounted = true; @@ -131,17 +141,23 @@ static void free_bind_state (struct bind_state *bs) { if (bs->mounted) { - if (bs->sys_fs_selinux_ok) umount_ignore_fail (bs->sysroot_sys_fs_selinux); + if (bs->sys_fs_selinux_ok) + umount_ignore_fail (bs->sysroot_sys_fs_selinux); free (bs->sysroot_sys_fs_selinux); - if (bs->sys_ok) umount_ignore_fail (bs->sysroot_sys); + if (bs->sys_ok) + umount_ignore_fail (bs->sysroot_sys); free (bs->sysroot_sys); - if (bs->selinux_ok) umount_ignore_fail (bs->sysroot_selinux); + if (bs->selinux_ok) + umount_ignore_fail (bs->sysroot_selinux); free (bs->sysroot_selinux); - if (bs->proc_ok) umount_ignore_fail (bs->sysroot_proc); + if (bs->proc_ok) + umount_ignore_fail (bs->sysroot_proc); free (bs->sysroot_proc); - if (bs->dev_pts_ok) umount_ignore_fail (bs->sysroot_dev_pts); + if (bs->dev_pts_ok) + umount_ignore_fail (bs->sysroot_dev_pts); free (bs->sysroot_dev_pts); - if (bs->dev_ok) umount_ignore_fail (bs->sysroot_dev); + if (bs->dev_ok) + umount_ignore_fail (bs->sysroot_dev); free (bs->sysroot_dev); bs->mounted = false; } @@ -211,7 +227,7 @@ set_up_etc_resolv_conf (struct resolver_state *rs) rs->mounted = true; return 0; - error: +error: free (rs->sysroot_etc_resolv_conf); free (rs->sysroot_etc_resolv_conf_old); return -1; @@ -225,7 +241,8 @@ free_resolver_state (struct resolver_state *rs) if (rs->sysroot_etc_resolv_conf_old) { if (verbose) - fprintf (stderr, "renaming %s to %s\n", rs->sysroot_etc_resolv_conf_old, + fprintf (stderr, "renaming %s to %s\n", + rs->sysroot_etc_resolv_conf_old, rs->sysroot_etc_resolv_conf); if (rename (rs->sysroot_etc_resolv_conf_old, @@ -246,9 +263,10 @@ do_command (char *const *argv) char *out; CLEANUP_FREE char *err = NULL; int r, flags; - CLEANUP_BIND_STATE struct bind_state bind_state = { .mounted = false }; - CLEANUP_RESOLVER_STATE struct resolver_state resolver_state = - { .mounted = false }; + CLEANUP_BIND_STATE struct bind_state bind_state = {.mounted = false }; + CLEANUP_RESOLVER_STATE struct resolver_state resolver_state = { + .mounted = false + }; /* We need a root filesystem mounted to do this. */ NEED_ROOT (, return NULL); @@ -271,7 +289,7 @@ do_command (char *const *argv) flags = COMMAND_FLAG_DO_CHROOT; - r = commandvf (&out, &err, flags, (const char * const *) argv); + r = commandvf (&out, &err, flags, (const char *const *)argv); free_bind_state (&bind_state); free_resolver_state (&resolver_state); @@ -282,7 +300,7 @@ do_command (char *const *argv) return NULL; } - return out; /* Caller frees. */ + return out; /* Caller frees. */ } char ** @@ -300,7 +318,7 @@ do_command_lines (char *const *argv) if (lines == NULL) return NULL; - return lines; /* Caller frees. */ + return lines; /* Caller frees. */ } char * @@ -308,7 +326,7 @@ do_sh (const char *cmd) { const char *argv[] = { "/bin/sh", "-c", cmd, NULL }; - return do_command ((char **) argv); + return do_command ((char **)argv); } char ** @@ -316,5 +334,5 @@ do_sh_lines (const char *cmd) { const char *argv[] = { "/bin/sh", "-c", cmd, NULL }; - return do_command_lines ((char **) argv); + return do_command_lines ((char **)argv); } diff --git a/daemon/sleep.c b/daemon/sleep.c index af01d25..0f3ef24 100644 --- a/daemon/sleep.c +++ b/daemon/sleep.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -30,6 +31,6 @@ int do_sleep (int secs) { /* According to the man page, this syscall never fails. */ - (void) sleep (secs); + (void)sleep (secs); return 0; } diff --git a/daemon/sleuthkit.c b/daemon/sleuthkit.c index 2f8c97b..77b323f 100644 --- a/daemon/sleuthkit.c +++ b/daemon/sleuthkit.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -31,7 +32,7 @@ static int file_out (const char *cmd); -GUESTFSD_EXT_CMD(str_sleuthkit_probe, icat); +GUESTFSD_EXT_CMD (str_sleuthkit_probe, icat); int optgroup_sleuthkit_available (void) @@ -51,7 +52,8 @@ do_download_inode (const mountable_t *mountable, int64_t inode) } /* Construct the command. */ - if (asprintf (&cmd, "icat -r %s %" PRIi64, mountable->device, inode) == -1) { + if (asprintf (&cmd, "icat -r %s %" PRIi64, mountable->device, inode) == + -1) { reply_with_perror ("asprintf"); return -1; } @@ -96,18 +98,18 @@ file_out (const char *cmd) if (ferror (fp)) { fprintf (stderr, "fread: %m"); - send_file_end (1); /* Cancel. */ + send_file_end (1); /* Cancel. */ pclose (fp); return -1; } if (pclose (fp) != 0) { fprintf (stderr, "pclose: %m"); - send_file_end (1); /* Cancel. */ + send_file_end (1); /* Cancel. */ return -1; } - if (send_file_end (0)) /* Normal end of file. */ + if (send_file_end (0)) /* Normal end of file. */ return -1; return 0; diff --git a/daemon/stat.c b/daemon/stat.c index 73f1922..165c3e6 100644 --- a/daemon/stat.c +++ b/daemon/stat.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -78,8 +79,8 @@ stat_to_statns (guestfs_int_statns *ret, const struct stat *statbuf) ret->st_ctime_nsec = 0; #endif - ret->st_spare1 = ret->st_spare2 = ret->st_spare3 = - ret->st_spare4 = ret->st_spare5 = ret->st_spare6 = 0; + ret->st_spare1 = ret->st_spare2 = ret->st_spare3 = ret->st_spare4 = + ret->st_spare5 = ret->st_spare6 = 0; return ret; } @@ -136,7 +137,7 @@ do_internal_lstatnslist (const char *path, char *const *names) } ret->guestfs_int_statns_list_len = nr_names; ret->guestfs_int_statns_list_val = - calloc (nr_names, sizeof (guestfs_int_statns)); + calloc (nr_names, sizeof (guestfs_int_statns)); if (ret->guestfs_int_statns_list_val == NULL) { reply_with_perror ("calloc"); free (ret); @@ -144,7 +145,7 @@ do_internal_lstatnslist (const char *path, char *const *names) } CHROOT_IN; - path_fd = open (path, O_RDONLY|O_DIRECTORY|O_CLOEXEC); + path_fd = open (path, O_RDONLY | O_DIRECTORY | O_CLOEXEC); CHROOT_OUT; if (path_fd == -1) { diff --git a/daemon/statvfs.c b/daemon/statvfs.c index 987537d..f1a7862 100644 --- a/daemon/statvfs.c +++ b/daemon/statvfs.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -78,7 +79,7 @@ do_statvfs (const char *path) return ret; #else /* !HAVE_STATVFS */ -# if WIN32 +#if WIN32 CLEANUP_FREE char *disk = NULL; guestfs_int_statvfs *ret; @@ -92,10 +93,9 @@ do_statvfs (const char *path) return NULL; } - if (!GetDiskFreeSpaceEx (disk, - (PULARGE_INTEGER) &free_bytes_available, - (PULARGE_INTEGER) &total_number_of_bytes, - (PULARGE_INTEGER) &total_number_of_free_bytes)) { + if (!GetDiskFreeSpaceEx (disk, (PULARGE_INTEGER)&free_bytes_available, + (PULARGE_INTEGER)&total_number_of_bytes, + (PULARGE_INTEGER)&total_number_of_free_bytes)) { reply_with_perror ("GetDiskFreeSpaceEx"); return NULL; } @@ -115,11 +115,14 @@ do_statvfs (const char *path) */ if (total_number_of_bytes < UINT64_C (16) * 1024 * 1024 * 1024 * 1024) ret->bsize = 4096; - else if (total_number_of_bytes < UINT64_C (32) * 1024 * 1024 * 1024 * 1024) + else if (total_number_of_bytes < + UINT64_C (32) * 1024 * 1024 * 1024 * 1024) ret->bsize = 8192; - else if (total_number_of_bytes < UINT64_C (64) * 1024 * 1024 * 1024 * 1024) + else if (total_number_of_bytes < + UINT64_C (64) * 1024 * 1024 * 1024 * 1024) ret->bsize = 16384; - else if (total_number_of_bytes < UINT64_C (128) * 1024 * 1024 * 1024 * 1024) + else if (total_number_of_bytes < + UINT64_C (128) * 1024 * 1024 * 1024 * 1024) ret->bsize = 32768; else ret->bsize = 65536; @@ -138,7 +141,7 @@ do_statvfs (const char *path) return ret; -# else /* !WIN32 */ +#else /* !WIN32 */ CLEANUP_FREE char *disk = NULL; int r; @@ -179,6 +182,6 @@ do_statvfs (const char *path) return ret; -# endif /* !WIN32 */ +#endif /* !WIN32 */ #endif /* !HAVE_STATVFS */ } diff --git a/daemon/strings.c b/daemon/strings.c index 6e81b9e..c851e92 100644 --- a/daemon/strings.c +++ b/daemon/strings.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -34,14 +35,13 @@ do_strings_e (const char *encoding, const char *path) CLEANUP_FREE char *out = NULL, *err = NULL; char **lines; - if (strlen (encoding) != 1 || - strchr ("sSblBL", encoding[0]) == NULL) { + if (strlen (encoding) != 1 || strchr ("sSblBL", encoding[0]) == NULL) { reply_with_error ("%s: invalid encoding", encoding); return NULL; } CHROOT_IN; - fd = open (path, O_RDONLY|O_CLOEXEC); + fd = open (path, O_RDONLY | O_CLOEXEC); CHROOT_OUT; if (fd == -1) { @@ -61,7 +61,7 @@ do_strings_e (const char *encoding, const char *path) if (lines == NULL) return NULL; - return lines; /* Caller frees. */ + return lines; /* Caller frees. */ } char ** diff --git a/daemon/swap.c b/daemon/swap.c index 9d7839e..8124df9 100644 --- a/daemon/swap.c +++ b/daemon/swap.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -30,12 +31,13 @@ #include "ignore-value.h" -GUESTFSD_EXT_CMD(str_mkswap, mkswap); -GUESTFSD_EXT_CMD(str_swapon, swapon); -GUESTFSD_EXT_CMD(str_swapoff, swapoff); -GUESTFSD_EXT_CMD(str_swaplabel, swaplabel); +GUESTFSD_EXT_CMD (str_mkswap, mkswap); +GUESTFSD_EXT_CMD (str_swapon, swapon); +GUESTFSD_EXT_CMD (str_swapoff, swapoff); +GUESTFSD_EXT_CMD (str_swaplabel, swaplabel); -/* Confirmed this is true for Linux swap partitions from the Linux sources. */ +/* Confirmed this is true for Linux swap partitions from the Linux sources. + */ #define SWAP_LABEL_MAX 16 int diff --git a/daemon/sync.c b/daemon/sync.c index 632995c..d20fb30 100644 --- a/daemon/sync.c +++ b/daemon/sync.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -61,13 +62,13 @@ sync_disks (void) #if defined(HAVE_SYNC) sync (); - /* On Linux, sync(2) doesn't perform a barrier, so qemu (which may - * have a writeback cache, even with cache=none) will still have - * some unwritten data. Force the data out of any qemu caches, by - * calling fsync on all block devices. Note we still need the - * call to sync above in order to schedule the writes. - * Thanks to: Avi Kivity, Kevin Wolf. - */ +/* On Linux, sync(2) doesn't perform a barrier, so qemu (which may + * have a writeback cache, even with cache=none) will still have + * some unwritten data. Force the data out of any qemu caches, by + * calling fsync on all block devices. Note we still need the + * call to sync above in order to schedule the writes. + * Thanks to: Avi Kivity, Kevin Wolf. + */ #ifdef HAVE_FSYNC fsync_devices (); #endif @@ -98,12 +99,11 @@ fsync_devices (void) for (;;) { errno = 0; d = readdir (dir); - if (!d) break; + if (!d) + break; - if (STREQLEN (d->d_name, "sd", 2) || - STREQLEN (d->d_name, "hd", 2) || - STREQLEN (d->d_name, "ubd", 3) || - STREQLEN (d->d_name, "vd", 2) || + if (STREQLEN (d->d_name, "sd", 2) || STREQLEN (d->d_name, "hd", 2) || + STREQLEN (d->d_name, "ubd", 3) || STREQLEN (d->d_name, "vd", 2) || STREQLEN (d->d_name, "sr", 2)) { snprintf (dev_path, sizeof dev_path, "/dev/%s", d->d_name); @@ -111,7 +111,7 @@ fsync_devices (void) if (is_root_device (dev_path)) continue; - fd = open (dev_path, O_RDONLY|O_CLOEXEC); + fd = open (dev_path, O_RDONLY | O_CLOEXEC); if (fd == -1) { perror (dev_path); continue; @@ -149,7 +149,7 @@ sync_win32 (void) if (n1 == 0) return -1; - TCHAR buffer[n1+2]; /* sic */ + TCHAR buffer[n1 + 2]; /* sic */ n2 = GetLogicalDriveStrings (n1, buffer); if (n2 == 0) return -1; @@ -175,9 +175,9 @@ sync_win32 (void) if (!GetVolumeNameForVolumeMountPoint (p, volname, 50)) return -1; - drive = CreateFile (volname, GENERIC_READ|GENERIC_WRITE, - FILE_SHARE_READ|FILE_SHARE_WRITE, - NULL, OPEN_EXISTING, 0, 0); + drive = CreateFile (volname, GENERIC_READ | GENERIC_WRITE, + FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, + OPEN_EXISTING, 0, 0); if (drive == INVALID_HANDLE_VALUE) return -1; @@ -192,7 +192,8 @@ sync_win32 (void) } /* Skip to next \0 character. */ - while (*p++); + while (*p++) + ; } return 0; diff --git a/daemon/syslinux.c b/daemon/syslinux.c index 08da170..0cf9a60 100644 --- a/daemon/syslinux.c +++ b/daemon/syslinux.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -28,8 +29,8 @@ #include "actions.h" #include "optgroups.h" -GUESTFSD_EXT_CMD(str_syslinux, syslinux); -GUESTFSD_EXT_CMD(str_extlinux, extlinux); +GUESTFSD_EXT_CMD (str_syslinux, syslinux); +GUESTFSD_EXT_CMD (str_extlinux, extlinux); int optgroup_syslinux_available (void) diff --git a/daemon/tar.c b/daemon/tar.c index 6d0403a..aeff0e4 100644 --- a/daemon/tar.c +++ b/daemon/tar.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -35,7 +36,7 @@ #include "actions.h" #include "optgroups.h" -GUESTFSD_EXT_CMD(str_tar, tar); +GUESTFSD_EXT_CMD (str_tar, tar); int optgroup_xz_available (void) @@ -67,7 +68,7 @@ is_chown_supported (const char *dir) } /* Maybe 'dir' is not a directory or filesystem not writable? */ - fd = open (buf, O_WRONLY|O_CREAT|O_NOCTTY|O_CLOEXEC, 0666); + fd = open (buf, O_WRONLY | O_CREAT | O_NOCTTY | O_CLOEXEC, 0666); if (fd == -1) { err = errno; r = cancel_receive (); @@ -118,10 +119,10 @@ read_error_file (char *error_file) } /* Remove trailing \n character if any. */ - if (len > 0 && str[len-1] == '\n') + if (len > 0 && str[len - 1] == '\n') str[--len] = '\0'; - return str; /* caller frees */ + return str; /* caller frees */ } static int @@ -134,7 +135,8 @@ write_cb (void *fd_ptr, const void *buf, size_t len) /* Has one FileIn parameter. */ /* Takes optional arguments, consult optargs_bitmask. */ int -do_tar_in (const char *dir, const char *compress, int xattrs, int selinux, int acls) +do_tar_in (const char *dir, const char *compress, int xattrs, int selinux, + int acls) { const char *filter; int err, r; @@ -186,13 +188,10 @@ do_tar_in (const char *dir, const char *compress, int xattrs, int selinux, int a close (fd); /* "tar -C /sysroot%s -xf -" but we have to quote the dir. */ - if (asprintf_nowarn (&cmd, "%s -C %R%s -xf - %s%s%s%s2> %s", - str_tar, - dir, filter, - chown_supported ? "" : "--no-same-owner ", + if (asprintf_nowarn (&cmd, "%s -C %R%s -xf - %s%s%s%s2> %s", str_tar, dir, + filter, chown_supported ? "" : "--no-same-owner ", xattrs ? "--xattrs " : "", - selinux ? "--selinux " : "", - acls ? "--acls " : "", + selinux ? "--selinux " : "", acls ? "--acls " : "", error_file) == -1) { err = errno; r = cancel_receive (); @@ -221,7 +220,7 @@ do_tar_in (const char *dir, const char *compress, int xattrs, int selinux, int a fd = fileno (fp); r = receive_file (write_cb, &fd); - if (r == -1) { /* write error */ + if (r == -1) { /* write error */ cancel_receive (); CLEANUP_FREE char *errstr = read_error_file (error_file); reply_with_error ("write error on directory: %s: %s", dir, errstr); @@ -229,7 +228,7 @@ do_tar_in (const char *dir, const char *compress, int xattrs, int selinux, int a pclose (fp); return -1; } - if (r == -2) { /* cancellation from library */ + if (r == -2) { /* cancellation from library */ /* This error is ignored by the library since it initiated the * cancel. Nevertheless we must send an error reply here. */ @@ -241,8 +240,8 @@ do_tar_in (const char *dir, const char *compress, int xattrs, int selinux, int a if (pclose (fp) != 0) { CLEANUP_FREE char *errstr = read_error_file (error_file); - reply_with_error ("tar subcommand failed on directory: %s: %s", - dir, errstr); + reply_with_error ("tar subcommand failed on directory: %s: %s", dir, + errstr); unlink (error_file); return -1; } @@ -288,7 +287,8 @@ make_exclude_from_file (char *const *excludes) for (i = 0; excludes[i] != NULL; ++i) { if (strchr (excludes[i], '\n')) { - reply_with_error ("tar-out: excludes file patterns cannot contain \\n character"); + reply_with_error ( + "tar-out: excludes file patterns cannot contain \\n character"); goto error; } @@ -299,7 +299,8 @@ make_exclude_from_file (char *const *excludes) } if (verbose) - fprintf (stderr, "tar-out: adding excludes pattern '%s'\n", excludes[i]); + fprintf (stderr, "tar-out: adding excludes pattern '%s'\n", + excludes[i]); } if (close (fd) == -1) { @@ -317,7 +318,7 @@ make_exclude_from_file (char *const *excludes) return ret; - error: +error: if (fd >= 0) close (fd); unlink (template); @@ -393,16 +394,14 @@ do_tar_out (const char *dir, const char *compress, int numericowner, return -1; } - if (! S_ISDIR (statbuf.st_mode)) { + if (!S_ISDIR (statbuf.st_mode)) { reply_with_error ("%s: not a directory", dir); return -1; } /* "tar -C /sysroot%s -cf - ." but we have to quote the dir. */ - if (asprintf_nowarn (&cmd, "%s -C %Q%s%s%s%s%s%s%s -cf - .", - str_tar, - buf, filter, - numericowner ? " --numeric-owner" : "", + if (asprintf_nowarn (&cmd, "%s -C %Q%s%s%s%s%s%s%s -cf - .", str_tar, buf, + filter, numericowner ? " --numeric-owner" : "", exclude_from_file ? " -X " : "", exclude_from_file ? exclude_from_file : "", xattrs ? " --xattrs" : "", @@ -436,18 +435,18 @@ do_tar_out (const char *dir, const char *compress, int numericowner, if (ferror (fp)) { fprintf (stderr, "fread: %s: %m\n", dir); - send_file_end (1); /* Cancel. */ + send_file_end (1); /* Cancel. */ pclose (fp); return -1; } if (pclose (fp) != 0) { fprintf (stderr, "pclose: %s: %m\n", dir); - send_file_end (1); /* Cancel. */ + send_file_end (1); /* Cancel. */ return -1; } - if (send_file_end (0)) /* Normal end of file. */ + if (send_file_end (0)) /* Normal end of file. */ return -1; return 0; diff --git a/daemon/truncate.c b/daemon/truncate.c index 0c3731c..6253c1e 100644 --- a/daemon/truncate.c +++ b/daemon/truncate.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -35,7 +36,7 @@ do_truncate_size (const char *path, int64_t size) int r; CHROOT_IN; - fd = open (path, O_WRONLY|O_NOCTTY|O_CLOEXEC); + fd = open (path, O_WRONLY | O_NOCTTY | O_CLOEXEC); CHROOT_OUT; if (fd == -1) { @@ -43,7 +44,7 @@ do_truncate_size (const char *path, int64_t size) return -1; } - r = ftruncate (fd, (off_t) size); + r = ftruncate (fd, (off_t)size); if (r == -1) { reply_with_perror ("ftruncate: %s", path); close (fd); diff --git a/daemon/umask.c b/daemon/umask.c index 475c820..a100064 100644 --- a/daemon/umask.c +++ b/daemon/umask.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -36,7 +37,7 @@ do_umask (int mask) int r; if (mask < 0 || mask > 0777) { - reply_with_error ("0%o: mask negative or out of range", (unsigned) mask); + reply_with_error ("0%o: mask negative or out of range", (unsigned)mask); return -1; } diff --git a/daemon/upload.c b/daemon/upload.c index aeb7306..9bd0879 100644 --- a/daemon/upload.c +++ b/daemon/upload.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -31,9 +32,10 @@ #include "daemon.h" #include "actions.h" -struct write_cb_data { - int fd; /* file descriptor */ - uint64_t written; /* bytes written so far */ +struct write_cb_data +{ + int fd; /* file descriptor */ + uint64_t written; /* bytes written so far */ }; static int @@ -58,14 +60,16 @@ write_cb (void *data_vp, const void *buf, size_t len) static int upload (const char *filename, int flags, int64_t offset) { - struct write_cb_data data = { .written = 0 }; + struct write_cb_data data = {.written = 0 }; int err, r, is_dev; is_dev = STRPREFIX (filename, "/dev/"); - if (!is_dev) CHROOT_IN; + if (!is_dev) + CHROOT_IN; data.fd = open (filename, flags, 0666); - if (!is_dev) CHROOT_OUT; + if (!is_dev) + CHROOT_OUT; if (data.fd == -1) { err = errno; r = cancel_receive (); @@ -85,7 +89,7 @@ upload (const char *filename, int flags, int64_t offset) } r = receive_file (write_cb, &data.fd); - if (r == -1) { /* write error */ + if (r == -1) { /* write error */ err = errno; r = cancel_receive (); errno = err; @@ -93,7 +97,7 @@ upload (const char *filename, int flags, int64_t offset) close (data.fd); return -1; } - if (r == -2) { /* cancellation from library */ + if (r == -2) { /* cancellation from library */ /* This error is ignored by the library since it initiated the * cancel. Nevertheless we must send an error reply here. */ @@ -114,7 +118,8 @@ upload (const char *filename, int flags, int64_t offset) int do_upload (const char *filename) { - return upload (filename, O_WRONLY|O_CREAT|O_TRUNC|O_NOCTTY|O_CLOEXEC, 0); + return upload (filename, + O_WRONLY | O_CREAT | O_TRUNC | O_NOCTTY | O_CLOEXEC, 0); } /* Has one FileIn parameter. */ @@ -126,7 +131,8 @@ do_upload_offset (const char *filename, int64_t offset) return -1; } - return upload (filename, O_WRONLY|O_CREAT|O_NOCTTY|O_CLOEXEC, offset); + return upload (filename, O_WRONLY | O_CREAT | O_NOCTTY | O_CLOEXEC, + offset); } /* Extra check to prevent RHBZ#908321. */ @@ -162,9 +168,11 @@ do_download (const char *filename) is_dev = STRPREFIX (filename, "/dev/"); - if (!is_dev) CHROOT_IN; - fd = open (filename, O_RDONLY|O_CLOEXEC); - if (!is_dev) CHROOT_OUT; + if (!is_dev) + CHROOT_IN; + fd = open (filename, O_RDONLY | O_CLOEXEC); + if (!is_dev) + CHROOT_OUT; if (fd == -1) { reply_with_perror ("%s", filename); return -1; @@ -192,7 +200,7 @@ do_download (const char *filename) close (fd); return -1; } - total = (uint64_t) size; + total = (uint64_t)size; } /* Now we must send the reply message, before the file contents. After @@ -213,18 +221,18 @@ do_download (const char *filename) if (r == -1) { fprintf (stderr, "read: %s: %m\n", filename); - send_file_end (1); /* Cancel. */ + send_file_end (1); /* Cancel. */ close (fd); return -1; } if (close (fd) == -1) { fprintf (stderr, "close: %s: %m\n", filename); - send_file_end (1); /* Cancel. */ + send_file_end (1); /* Cancel. */ return -1; } - if (send_file_end (0)) /* Normal end of file. */ + if (send_file_end (0)) /* Normal end of file. */ return -1; return 0; @@ -252,13 +260,15 @@ do_download_offset (const char *filename, int64_t offset, int64_t size) reply_with_perror ("%s: size is negative", filename); return -1; } - uint64_t usize = (uint64_t) size; + uint64_t usize = (uint64_t)size; is_dev = STRPREFIX (filename, "/dev/"); - if (!is_dev) CHROOT_IN; - fd = open (filename, O_RDONLY|O_CLOEXEC); - if (!is_dev) CHROOT_OUT; + if (!is_dev) + CHROOT_IN; + fd = open (filename, O_RDONLY | O_CLOEXEC); + if (!is_dev) + CHROOT_OUT; if (fd == -1) { reply_with_perror ("%s", filename); return -1; @@ -286,11 +296,12 @@ do_download_offset (const char *filename, int64_t offset, int64_t size) reply (NULL, NULL); while (usize > 0) { - r = read (fd, buf, - usize > GUESTFS_MAX_CHUNK_SIZE ? GUESTFS_MAX_CHUNK_SIZE : usize); + r = read (fd, buf, usize > GUESTFS_MAX_CHUNK_SIZE + ? GUESTFS_MAX_CHUNK_SIZE + : usize); if (r == -1) { fprintf (stderr, "read: %s: %m\n", filename); - send_file_end (1); /* Cancel. */ + send_file_end (1); /* Cancel. */ close (fd); return -1; } @@ -313,11 +324,11 @@ do_download_offset (const char *filename, int64_t offset, int64_t size) if (close (fd) == -1) { fprintf (stderr, "close: %s: %m\n", filename); - send_file_end (1); /* Cancel. */ + send_file_end (1); /* Cancel. */ return -1; } - if (send_file_end (0)) /* Normal end of file. */ + if (send_file_end (0)) /* Normal end of file. */ return -1; return 0; diff --git a/daemon/utimens.c b/daemon/utimens.c index 2df6fc7..4874b52 100644 --- a/daemon/utimens.c +++ b/daemon/utimens.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -29,8 +30,7 @@ #include "actions.h" int -do_utimens (const char *path, - int64_t atsecs, int64_t atnsecs, +do_utimens (const char *path, int64_t atsecs, int64_t atnsecs, int64_t mtsecs, int64_t mtnsecs) { int r; diff --git a/daemon/utsname.c b/daemon/utsname.c index 17a82c3..6876cef 100644 --- a/daemon/utsname.c +++ b/daemon/utsname.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -48,8 +49,8 @@ do_utsname (void) ret->uts_release = strdup (uts.release); ret->uts_version = strdup (uts.version); ret->uts_machine = strdup (uts.machine); - if (!ret->uts_sysname || !ret->uts_release || - !ret->uts_version || !ret->uts_machine) { + if (!ret->uts_sysname || !ret->uts_release || !ret->uts_version || + !ret->uts_machine) { reply_with_perror ("strdup"); free (ret->uts_sysname); free (ret->uts_release); diff --git a/daemon/uuids.c b/daemon/uuids.c index 7e69862..51a9864 100644 --- a/daemon/uuids.c +++ b/daemon/uuids.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -27,7 +28,6 @@ #include "actions.h" #include "optgroups.h" - static int e2uuid (const char *device, const char *uuid) { @@ -78,8 +78,9 @@ do_set_uuid (const char *device, const char *uuid) r = btrfs_set_uuid (device, uuid); else - NOT_SUPPORTED (-1, "don't know how to set the UUID for '%s' filesystems", - vfs_type); + NOT_SUPPORTED (-1, + "don't know how to set the UUID for '%s' filesystems", + vfs_type); return r; } @@ -111,7 +112,8 @@ do_set_uuid_random (const char *device) r = btrfs_set_uuid_random (device); else - NOT_SUPPORTED (-1, "don't know how to set the random UUID for '%s' filesystems", - vfs_type); + NOT_SUPPORTED ( + -1, "don't know how to set the random UUID for '%s' filesystems", + vfs_type); return r; } diff --git a/daemon/wc.c b/daemon/wc.c index 454cdf3..3c85954 100644 --- a/daemon/wc.c +++ b/daemon/wc.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -35,7 +36,7 @@ wc (const char *flag, const char *path) int fd, flags, r; CHROOT_IN; - fd = open (path, O_RDONLY|O_CLOEXEC); + fd = open (path, O_RDONLY | O_CLOEXEC); CHROOT_OUT; if (fd == -1) { diff --git a/daemon/xattr.c b/daemon/xattr.c index 7de5554..6c6c08a 100644 --- a/daemon/xattr.c +++ b/daemon/xattr.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -27,23 +28,23 @@ #include "actions.h" #include "optgroups.h" -#if (defined(HAVE_ATTR_XATTR_H) || defined(HAVE_SYS_XATTR_H)) && \ - defined(HAVE_LISTXATTR) && defined(HAVE_LLISTXATTR) && \ - defined(HAVE_GETXATTR) && defined(HAVE_LGETXATTR) && \ - defined(HAVE_REMOVEXATTR) && defined(HAVE_LREMOVEXATTR) && \ - defined(HAVE_SETXATTR) && defined(HAVE_LSETXATTR) -# define HAVE_LINUX_XATTRS +#if (defined(HAVE_ATTR_XATTR_H) || defined(HAVE_SYS_XATTR_H)) && \ + defined(HAVE_LISTXATTR) && defined(HAVE_LLISTXATTR) && \ + defined(HAVE_GETXATTR) && defined(HAVE_LGETXATTR) && \ + defined(HAVE_REMOVEXATTR) && defined(HAVE_LREMOVEXATTR) && \ + defined(HAVE_SETXATTR) && defined(HAVE_LSETXATTR) +#define HAVE_LINUX_XATTRS #endif #ifdef HAVE_LINUX_XATTRS -# ifdef HAVE_ATTR_XATTR_H -# include <attr/xattr.h> -# else -# ifdef HAVE_SYS_XATTR_H -# include <sys/xattr.h> -# endif -# endif +#ifdef HAVE_ATTR_XATTR_H +#include <attr/xattr.h> +#else +#ifdef HAVE_SYS_XATTR_H +#include <sys/xattr.h> +#endif +#endif int optgroup_linuxxattrs_available (void) @@ -51,11 +52,27 @@ optgroup_linuxxattrs_available (void) return 1; } -static guestfs_int_xattr_list *getxattrs (const char *path, ssize_t (*listxattr) (const char *path, char *list, size_t size), ssize_t (*getxattr) (const char *path, const char *name, void *value, size_t size)); -static int _setxattr (const char *xattr, const char *val, int vallen, const char *path, int (*setxattr) (const char *path, const char *name, const void *value, size_t size, int flags)); -static int _removexattr (const char *xattr, const char *path, int (*removexattr) (const char *path, const char *name)); -static char *_listxattrs (const char *path, ssize_t (*listxattr) (const char *path, char *list, size_t size), ssize_t *size); -static char *_getxattr (const char *name, const char *path, ssize_t (*getxattr) (const char *path, const char *name, void *value, size_t size), size_t *size_r); +static guestfs_int_xattr_list * +getxattrs (const char *path, + ssize_t (*listxattr) (const char *path, char *list, size_t size), + ssize_t (*getxattr) (const char *path, const char *name, + void *value, size_t size)); +static int +_setxattr (const char *xattr, const char *val, int vallen, const char *path, + int (*setxattr) (const char *path, const char *name, + const void *value, size_t size, int flags)); +static int _removexattr (const char *xattr, const char *path, + int (*removexattr) (const char *path, + const char *name)); +static char *_listxattrs (const char *path, + ssize_t (*listxattr) (const char *path, + char *list, size_t size), + ssize_t *size); +static char *_getxattr (const char *name, const char *path, + ssize_t (*getxattr) (const char *path, + const char *name, void *value, + size_t size), + size_t *size_r); guestfs_int_xattr_list * do_getxattrs (const char *path) @@ -70,13 +87,15 @@ do_lgetxattrs (const char *path) } int -do_setxattr (const char *xattr, const char *val, int vallen, const char *path) +do_setxattr (const char *xattr, const char *val, int vallen, + const char *path) { return _setxattr (xattr, val, vallen, path, setxattr); } int -do_lsetxattr (const char *xattr, const char *val, int vallen, const char *path) +do_lsetxattr (const char *xattr, const char *val, int vallen, + const char *path) { return _setxattr (xattr, val, vallen, path, lsetxattr); } @@ -128,17 +147,17 @@ getxattrs (const char *path, * len. First count the strings. */ r->guestfs_int_xattr_list_len = 0; - for (i = 0; i < (size_t) len; i += strlen (&buf[i]) + 1) + for (i = 0; i < (size_t)len; i += strlen (&buf[i]) + 1) r->guestfs_int_xattr_list_len++; r->guestfs_int_xattr_list_val = - calloc (r->guestfs_int_xattr_list_len, sizeof (guestfs_int_xattr)); + calloc (r->guestfs_int_xattr_list_len, sizeof (guestfs_int_xattr)); if (r->guestfs_int_xattr_list_val == NULL) { reply_with_perror ("calloc"); goto error; } - for (i = 0, j = 0; i < (size_t) len; i += strlen (&buf[i]) + 1, ++j) { + for (i = 0, j = 0; i < (size_t)len; i += strlen (&buf[i]) + 1, ++j) { CHROOT_IN; vlen = getxattr (path, &buf[i], NULL, 0); CHROOT_OUT; @@ -176,13 +195,12 @@ getxattrs (const char *path, /* Sort the entries by attrname. */ qsort (&r->guestfs_int_xattr_list_val[0], - (size_t) r->guestfs_int_xattr_list_len, - sizeof (guestfs_int_xattr), + (size_t)r->guestfs_int_xattr_list_len, sizeof (guestfs_int_xattr), compare_xattrs); return r; - error: +error: if (r) { if (r->guestfs_int_xattr_list_val) { size_t k; @@ -239,7 +257,8 @@ _removexattr (const char *xattr, const char *path, static char * _listxattrs (const char *path, - ssize_t (*listxattr) (const char *path, char *list, size_t size), + ssize_t (*listxattr) (const char *path, char *list, + size_t size), ssize_t *size) { char *buf = NULL; @@ -271,7 +290,7 @@ _listxattrs (const char *path, *size = len; return buf; - error: +error: free (buf); return NULL; } @@ -315,8 +334,8 @@ do_internal_lxattrlist (const char *path, char *const *names) /* Reserve space for the special attribute. */ newptr = realloc (ret->guestfs_int_xattr_list_val, - (ret->guestfs_int_xattr_list_len+1) * - sizeof (guestfs_int_xattr)); + (ret->guestfs_int_xattr_list_len + 1) * + sizeof (guestfs_int_xattr)); if (newptr == NULL) { reply_with_perror ("realloc"); goto error; @@ -325,7 +344,8 @@ do_internal_lxattrlist (const char *path, char *const *names) ret->guestfs_int_xattr_list_len++; guestfs_int_xattr *entry = - &ret->guestfs_int_xattr_list_val[ret->guestfs_int_xattr_list_len-1]; + &ret->guestfs_int_xattr_list_val[ret->guestfs_int_xattr_list_len - + 1]; entry->attrname = NULL; entry->attrval.attrval_len = 0; entry->attrval.attrval_val = NULL; @@ -358,13 +378,12 @@ do_internal_lxattrlist (const char *path, char *const *names) * len. First count the strings. */ nr_attrs = 0; - for (i = 0; i < (size_t) len; i += strlen (&buf[i]) + 1) + for (i = 0; i < (size_t)len; i += strlen (&buf[i]) + 1) nr_attrs++; - newptr = - realloc (ret->guestfs_int_xattr_list_val, - (ret->guestfs_int_xattr_list_len+nr_attrs) * - sizeof (guestfs_int_xattr)); + newptr = realloc (ret->guestfs_int_xattr_list_val, + (ret->guestfs_int_xattr_list_len + nr_attrs) * + sizeof (guestfs_int_xattr)); if (newptr == NULL) { reply_with_perror ("realloc"); goto error; @@ -375,14 +394,16 @@ do_internal_lxattrlist (const char *path, char *const *names) /* entry[0] is the special attribute, * entry[1..nr_attrs] are the attributes. */ - entry = &ret->guestfs_int_xattr_list_val[ret->guestfs_int_xattr_list_len-nr_attrs-1]; - for (m = 1; m < nr_attrs+1; ++m) { + entry = + &ret->guestfs_int_xattr_list_val[ret->guestfs_int_xattr_list_len - + nr_attrs - 1]; + for (m = 1; m < nr_attrs + 1; ++m) { entry[m].attrname = NULL; entry[m].attrval.attrval_len = 0; entry[m].attrval.attrval_val = NULL; } - for (i = 0, j = 0; i < (size_t) len; i += strlen (&buf[i]) + 1, ++j) { + for (i = 0, j = 0; i < (size_t)len; i += strlen (&buf[i]) + 1, ++j) { CHROOT_IN; vlen = lgetxattr (pathname, &buf[i], NULL, 0); CHROOT_OUT; @@ -396,19 +417,19 @@ do_internal_lxattrlist (const char *path, char *const *names) goto error; } - entry[j+1].attrname = strdup (&buf[i]); - entry[j+1].attrval.attrval_val = malloc (vlen); - entry[j+1].attrval.attrval_len = vlen; + entry[j + 1].attrname = strdup (&buf[i]); + entry[j + 1].attrval.attrval_val = malloc (vlen); + entry[j + 1].attrval.attrval_len = vlen; - if (entry[j+1].attrname == NULL || - entry[j+1].attrval.attrval_val == NULL) { + if (entry[j + 1].attrname == NULL || + entry[j + 1].attrval.attrval_val == NULL) { reply_with_perror ("malloc"); goto error; } CHROOT_IN; - vlen = lgetxattr (pathname, &buf[i], - entry[j+1].attrval.attrval_val, vlen); + vlen = lgetxattr (pathname, &buf[i], entry[j + 1].attrval.attrval_val, + vlen); CHROOT_OUT; if (vlen == -1) { reply_with_perror ("getxattr"); @@ -432,7 +453,7 @@ do_internal_lxattrlist (const char *path, char *const *names) return ret; - error: +error: if (ret) { if (ret->guestfs_int_xattr_list_val) { for (k = 0; k < ret->guestfs_int_xattr_list_len; ++k) { @@ -492,7 +513,7 @@ _getxattr (const char *name, const char *path, return NULL; } - if (len != (size_t) r) { + if (len != (size_t)r) { reply_with_error ("getxattr: unexpected size (%zu/%zd)", len, r); free (buf); return NULL; @@ -524,7 +545,7 @@ copy_xattrs (const char *src, const char *dest) /* What we get from the kernel is a string "foo\0bar\0baz" of length * len. */ - for (i = 0; i < (size_t) len; i += strlen (&buf[i]) + 1) { + for (i = 0; i < (size_t)len; i += strlen (&buf[i]) + 1) { CHROOT_IN; vlen = getxattr (src, &buf[i], NULL, 0); CHROOT_OUT; @@ -568,7 +589,7 @@ copy_xattrs (const char *src, const char *dest) return 1; - error: +error: return 0; } diff --git a/daemon/xfs.c b/daemon/xfs.c index 7f72e6a..21e32fd 100644 --- a/daemon/xfs.c +++ b/daemon/xfs.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -32,11 +33,11 @@ #define MAX_ARGS 64 -GUESTFSD_EXT_CMD(str_mkfs_xfs, mkfs.xfs); -GUESTFSD_EXT_CMD(str_xfs_admin, xfs_admin); -GUESTFSD_EXT_CMD(str_xfs_info, xfs_info); -GUESTFSD_EXT_CMD(str_xfs_growfs, xfs_growfs); -GUESTFSD_EXT_CMD(str_xfs_repair, xfs_repair); +GUESTFSD_EXT_CMD (str_mkfs_xfs, mkfs.xfs); +GUESTFSD_EXT_CMD (str_xfs_admin, xfs_admin); +GUESTFSD_EXT_CMD (str_xfs_info, xfs_info); +GUESTFSD_EXT_CMD (str_xfs_growfs, xfs_growfs); +GUESTFSD_EXT_CMD (str_xfs_repair, xfs_repair); int optgroup_xfs_available (void) @@ -94,7 +95,7 @@ parse_uint64 (uint64_t *ret, const char *str) * * meta-data=/dev/sda1 isize=256 agcount=4, agsize=6392 blks * = sectsz=512 attr=2 - *[ = crc=0 ] + *[ = crc=0 ] * data = bsize=4096 blocks=25568, imaxpct=25 * = sunit=0 swidth=0 blks * naming =version 2 bsize=4096 ascii-ci=0 @@ -111,7 +112,8 @@ static guestfs_int_xfsinfo * parse_xfs_info (char **lines) { guestfs_int_xfsinfo *ret; - CLEANUP_FREE char *section = NULL; /* first column, eg "meta-data", "data" */ + CLEANUP_FREE char *section = + NULL; /* first column, eg "meta-data", "data" */ char *p; size_t i; @@ -157,145 +159,164 @@ parse_xfs_info (char **lines) if (c_isalpha (lines[i][0])) { free (section); section = split_strdup (lines[i]); - if (!section) goto error; + if (!section) + goto error; if (verbose) - fprintf (stderr, "xfs_info: new section %s\n", section); + fprintf (stderr, "xfs_info: new section %s\n", section); } if ((p = strstr (lines[i], "meta-data="))) { ret->xfs_mntpoint = split_strdup (p + 10); - if (ret->xfs_mntpoint == NULL) goto error; + if (ret->xfs_mntpoint == NULL) + goto error; } if ((p = strstr (lines[i], "isize="))) { CLEANUP_FREE char *buf = split_strdup (p + 6); - if (buf == NULL) goto error; + if (buf == NULL) + goto error; if (parse_uint32 (&ret->xfs_inodesize, buf) == -1) goto error; } if ((p = strstr (lines[i], "agcount="))) { CLEANUP_FREE char *buf = split_strdup (p + 8); - if (buf == NULL) goto error; + if (buf == NULL) + goto error; if (parse_uint32 (&ret->xfs_agcount, buf) == -1) goto error; } if ((p = strstr (lines[i], "agsize="))) { CLEANUP_FREE char *buf = split_strdup (p + 7); - if (buf == NULL) goto error; + if (buf == NULL) + goto error; if (parse_uint32 (&ret->xfs_agsize, buf) == -1) goto error; } if ((p = strstr (lines[i], "sectsz="))) { if (section) { - CLEANUP_FREE char *buf = split_strdup (p + 7); - if (buf == NULL) goto error; - if (STREQ (section, "meta-data")) { - if (parse_uint32 (&ret->xfs_sectsize, buf) == -1) - goto error; - } else if (STREQ (section, "log")) { - if (parse_uint32 (&ret->xfs_logsectsize, buf) == -1) - goto error; - } + CLEANUP_FREE char *buf = split_strdup (p + 7); + if (buf == NULL) + goto error; + if (STREQ (section, "meta-data")) { + if (parse_uint32 (&ret->xfs_sectsize, buf) == -1) + goto error; + } else if (STREQ (section, "log")) { + if (parse_uint32 (&ret->xfs_logsectsize, buf) == -1) + goto error; + } } } if ((p = strstr (lines[i], "attr="))) { CLEANUP_FREE char *buf = split_strdup (p + 5); - if (buf == NULL) goto error; + if (buf == NULL) + goto error; if (parse_uint32 (&ret->xfs_attr, buf) == -1) goto error; } if ((p = strstr (lines[i], "bsize="))) { if (section) { - CLEANUP_FREE char *buf = split_strdup (p + 6); - if (buf == NULL) goto error; - if (STREQ (section, "data")) { - if (parse_uint32 (&ret->xfs_blocksize, buf) == -1) - goto error; - } else if (STREQ (section, "naming")) { - if (parse_uint32 (&ret->xfs_dirblocksize, buf) == -1) - goto error; - } else if (STREQ (section, "log")) { - if (parse_uint32 (&ret->xfs_logblocksize, buf) == -1) - goto error; - } + CLEANUP_FREE char *buf = split_strdup (p + 6); + if (buf == NULL) + goto error; + if (STREQ (section, "data")) { + if (parse_uint32 (&ret->xfs_blocksize, buf) == -1) + goto error; + } else if (STREQ (section, "naming")) { + if (parse_uint32 (&ret->xfs_dirblocksize, buf) == -1) + goto error; + } else if (STREQ (section, "log")) { + if (parse_uint32 (&ret->xfs_logblocksize, buf) == -1) + goto error; + } } } if ((p = strstr (lines[i], "blocks="))) { if (section) { - CLEANUP_FREE char *buf = split_strdup (p + 7); - if (buf == NULL) goto error; - if (STREQ (section, "data")) { - if (parse_uint64 (&ret->xfs_datablocks, buf) == -1) - goto error; - } else if (STREQ (section, "log")) { - if (parse_uint32 (&ret->xfs_logblocks, buf) == -1) - goto error; - } else if (STREQ (section, "realtime")) { - if (parse_uint64 (&ret->xfs_rtblocks, buf) == -1) - goto error; - } + CLEANUP_FREE char *buf = split_strdup (p + 7); + if (buf == NULL) + goto error; + if (STREQ (section, "data")) { + if (parse_uint64 (&ret->xfs_datablocks, buf) == -1) + goto error; + } else if (STREQ (section, "log")) { + if (parse_uint32 (&ret->xfs_logblocks, buf) == -1) + goto error; + } else if (STREQ (section, "realtime")) { + if (parse_uint64 (&ret->xfs_rtblocks, buf) == -1) + goto error; + } } } if ((p = strstr (lines[i], "imaxpct="))) { CLEANUP_FREE char *buf = split_strdup (p + 8); - if (buf == NULL) goto error; + if (buf == NULL) + goto error; if (parse_uint32 (&ret->xfs_imaxpct, buf) == -1) goto error; } if ((p = strstr (lines[i], "sunit="))) { if (section) { - CLEANUP_FREE char *buf = split_strdup (p + 6); - if (buf == NULL) goto error; - if (STREQ (section, "data")) { - if (parse_uint32 (&ret->xfs_sunit, buf) == -1) - goto error; - } else if (STREQ (section, "log")) { - if (parse_uint32 (&ret->xfs_logsunit, buf) == -1) - goto error; - } + CLEANUP_FREE char *buf = split_strdup (p + 6); + if (buf == NULL) + goto error; + if (STREQ (section, "data")) { + if (parse_uint32 (&ret->xfs_sunit, buf) == -1) + goto error; + } else if (STREQ (section, "log")) { + if (parse_uint32 (&ret->xfs_logsunit, buf) == -1) + goto error; + } } } if ((p = strstr (lines[i], "swidth="))) { CLEANUP_FREE char *buf = split_strdup (p + 7); - if (buf == NULL) goto error; + if (buf == NULL) + goto error; if (parse_uint32 (&ret->xfs_swidth, buf) == -1) goto error; } if ((p = strstr (lines[i], "naming =version "))) { CLEANUP_FREE char *buf = split_strdup (p + 18); - if (buf == NULL) goto error; + if (buf == NULL) + goto error; if (parse_uint32 (&ret->xfs_dirversion, buf) == -1) goto error; } if ((p = strstr (lines[i], "ascii-ci="))) { CLEANUP_FREE char *buf = split_strdup (p + 9); - if (buf == NULL) goto error; + if (buf == NULL) + goto error; if (parse_uint32 (&ret->xfs_cimode, buf) == -1) goto error; } if ((p = strstr (lines[i], "log ="))) { ret->xfs_logname = split_strdup (p + 10); - if (ret->xfs_logname == NULL) goto error; + if (ret->xfs_logname == NULL) + goto error; } if ((p = strstr (lines[i], "version="))) { CLEANUP_FREE char *buf = split_strdup (p + 8); - if (buf == NULL) goto error; + if (buf == NULL) + goto error; if (parse_uint32 (&ret->xfs_logversion, buf) == -1) goto error; } if ((p = strstr (lines[i], "lazy-count="))) { CLEANUP_FREE char *buf = split_strdup (p + 11); - if (buf == NULL) goto error; + if (buf == NULL) + goto error; if (parse_uint32 (&ret->xfs_lazycount, buf) == -1) goto error; } if ((p = strstr (lines[i], "realtime ="))) { ret->xfs_rtname = split_strdup (p + 10); - if (ret->xfs_rtname == NULL) goto error; + if (ret->xfs_rtname == NULL) + goto error; } if ((p = strstr (lines[i], "rtextents="))) { CLEANUP_FREE char *buf = split_strdup (p + 10); - if (buf == NULL) goto error; + if (buf == NULL) + goto error; if (parse_uint64 (&ret->xfs_rtextents, buf) == -1) goto error; } @@ -303,20 +324,23 @@ parse_xfs_info (char **lines) if (ret->xfs_mntpoint == NULL) { ret->xfs_mntpoint = strdup (""); - if (ret->xfs_mntpoint == NULL) goto error; + if (ret->xfs_mntpoint == NULL) + goto error; } if (ret->xfs_logname == NULL) { ret->xfs_logname = strdup (""); - if (ret->xfs_logname == NULL) goto error; + if (ret->xfs_logname == NULL) + goto error; } if (ret->xfs_rtname == NULL) { ret->xfs_rtname = strdup (""); - if (ret->xfs_rtname == NULL) goto error; + if (ret->xfs_rtname == NULL) + goto error; } return ret; - error: +error: free (ret->xfs_mntpoint); free (ret->xfs_logname); free (ret->xfs_rtname); @@ -334,8 +358,7 @@ do_xfs_info (const char *pathordevice) int is_dev; is_dev = STREQLEN (pathordevice, "/dev/", 5); - buf = is_dev ? strdup (pathordevice) - : sysroot_path (pathordevice); + buf = is_dev ? strdup (pathordevice) : sysroot_path (pathordevice); if (buf == NULL) { reply_with_perror ("malloc"); return NULL; @@ -355,8 +378,7 @@ do_xfs_info (const char *pathordevice) } int -do_xfs_growfs (const char *path, - int datasec, int logsec, int rtsec, +do_xfs_growfs (const char *path, int datasec, int logsec, int rtsec, int64_t datasize, int64_t logsize, int64_t rtsize, int64_t rtextsize, int32_t maxpct) { @@ -477,10 +499,9 @@ xfs_set_label (const char *device, const char *label) } int -do_xfs_admin (const char *device, - int extunwritten, int imgfile, int v2log, - int projid32bit, - int lazycounter, const char *label, const char *uuid) +do_xfs_admin (const char *device, int extunwritten, int imgfile, int v2log, + int projid32bit, int lazycounter, const char *label, + const char *uuid) { int r; CLEANUP_FREE char *err = NULL; @@ -520,8 +541,8 @@ do_xfs_admin (const char *device, if (optargs_bitmask & GUESTFS_XFS_ADMIN_LABEL_BITMASK) { if (strlen (label) > XFS_LABEL_MAX) { - reply_with_error ("%s: xfs labels are limited to %d bytes", - label, XFS_LABEL_MAX); + reply_with_error ("%s: xfs labels are limited to %d bytes", label, + XFS_LABEL_MAX); return -1; } @@ -547,11 +568,9 @@ do_xfs_admin (const char *device, } int -do_xfs_repair (const char *device, - int forcelogzero, int nomodify, - int noprefetch, int forcegeometry, - int64_t maxmem, int64_t ihashsize, - int64_t bhashsize, int64_t agstride, +do_xfs_repair (const char *device, int forcelogzero, int nomodify, + int noprefetch, int forcegeometry, int64_t maxmem, + int64_t ihashsize, int64_t bhashsize, int64_t agstride, const char *logdev, const char *rtdev) { int r; @@ -601,7 +620,9 @@ do_xfs_repair (const char *device, reply_with_error ("ihashsize must be >= 0"); return -1; } - snprintf (ihashsize_s, sizeof ihashsize_s, "ihash=" "%" PRIi64, ihashsize); + snprintf (ihashsize_s, sizeof ihashsize_s, "ihash=" + "%" PRIi64, + ihashsize); ADD_ARG (argv, i, "-o"); ADD_ARG (argv, i, ihashsize_s); } @@ -611,7 +632,9 @@ do_xfs_repair (const char *device, reply_with_error ("bhashsize must be >= 0"); return -1; } - snprintf (bhashsize_s, sizeof bhashsize_s, "bhash=" "%" PRIi64, bhashsize); + snprintf (bhashsize_s, sizeof bhashsize_s, "bhash=" + "%" PRIi64, + bhashsize); ADD_ARG (argv, i, "-o"); ADD_ARG (argv, i, bhashsize_s); } @@ -621,12 +644,13 @@ do_xfs_repair (const char *device, reply_with_error ("agstride must be >= 0"); return -1; } - snprintf (agstride_s, sizeof agstride_s, "ag_stride=" "%" PRIi64, agstride); + snprintf (agstride_s, sizeof agstride_s, "ag_stride=" + "%" PRIi64, + agstride); ADD_ARG (argv, i, "-o"); ADD_ARG (argv, i, agstride_s); } - if (optargs_bitmask & GUESTFS_XFS_REPAIR_LOGDEV_BITMASK) { ADD_ARG (argv, i, "-l"); ADD_ARG (argv, i, logdev); diff --git a/daemon/zero.c b/daemon/zero.c index c545753..9a133fd 100644 --- a/daemon/zero.c +++ b/daemon/zero.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -32,7 +33,7 @@ #include "actions.h" #include "optgroups.h" -GUESTFSD_EXT_CMD(str_wipefs, wipefs); +GUESTFSD_EXT_CMD (str_wipefs, wipefs); static const char zero_buf[4096]; @@ -43,7 +44,7 @@ do_zero (const char *device) int fd; size_t i, offset; - fd = open (device, O_RDWR|O_CLOEXEC); + fd = open (device, O_RDWR | O_CLOEXEC); if (fd == -1) { reply_with_perror ("%s", device); return -1; @@ -60,14 +61,15 @@ do_zero (const char *device) } if (!is_zero (buf, sizeof buf)) { - if (pwrite (fd, zero_buf, sizeof zero_buf, offset) != sizeof zero_buf) { + if (pwrite (fd, zero_buf, sizeof zero_buf, offset) != + sizeof zero_buf) { reply_with_perror ("pwrite: %s", device); close (fd); return -1; } } - notify_progress ((uint64_t) i, 32); + notify_progress ((uint64_t)i, 32); } if (close (fd) == -1) { @@ -140,9 +142,9 @@ do_zero_device (const char *device) int64_t ssize = do_blockdev_getsize64 (device); if (ssize == -1) return -1; - uint64_t size = (uint64_t) ssize; + uint64_t size = (uint64_t)ssize; - int fd = open (device, O_RDWR|O_CLOEXEC); + int fd = open (device, O_RDWR | O_CLOEXEC); if (fd == -1) { reply_with_perror ("%s", device); return -1; @@ -158,7 +160,7 @@ do_zero_device (const char *device) if (n64 > sizeof buf) n = sizeof buf; else - n = (size_t) n64; /* safe because of if condition */ + n = (size_t)n64; /* safe because of if condition */ /* Check if the block is already zero before overwriting it. */ ssize_t r; @@ -172,14 +174,14 @@ do_zero_device (const char *device) if (!is_zero (buf, sizeof buf)) { r = pwrite (fd, zero_buf, n, pos); if (r == -1) { - reply_with_perror ("pwrite: %s (with %" PRIu64 " bytes left to write)", + reply_with_perror ("pwrite: %s (with %" PRIu64 + " bytes left to write)", device, size); close (fd); return -1; } pos += r; - } - else + } else pos += n; notify_progress (pos, size); @@ -207,7 +209,7 @@ do_is_zero (const char *path) } CHROOT_IN; - fd = open (path, O_RDONLY|O_CLOEXEC); + fd = open (path, O_RDONLY | O_CLOEXEC); CHROOT_OUT; if (fd == -1) { @@ -249,7 +251,7 @@ do_is_zero_device (const char *device) return -1; } - fd = open (device, O_RDONLY|O_CLOEXEC); + fd = open (device, O_RDONLY | O_CLOEXEC); if (fd == -1) { reply_with_perror ("open: %s", device); return -1; @@ -311,7 +313,8 @@ do_zero_free_space (const char *dir) printf ("random filename: %s\n", filename); /* Open file and fill with zeroes until we run out of space. */ - fd = open (filename, O_WRONLY|O_CREAT|O_EXCL|O_NOCTTY|O_CLOEXEC, 0600); + fd = open (filename, O_WRONLY | O_CREAT | O_EXCL | O_NOCTTY | O_CLOEXEC, + 0600); if (fd == -1) { reply_with_perror ("open: %s", filename); return -1; @@ -329,7 +332,7 @@ do_zero_free_space (const char *dir) for (;;) { if (write (fd, zero_buf, sizeof zero_buf) == -1) { - if (errno == ENOSPC) /* expected error */ + if (errno == ENOSPC) /* expected error */ break; reply_with_perror ("write: %s", filename); close (fd); diff --git a/daemon/zerofree.c b/daemon/zerofree.c index 4ba17dd..367668b 100644 --- a/daemon/zerofree.c +++ b/daemon/zerofree.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -28,7 +29,7 @@ #include "actions.h" #include "optgroups.h" -GUESTFSD_EXT_CMD(str_zerofree, zerofree); +GUESTFSD_EXT_CMD (str_zerofree, zerofree); int optgroup_zerofree_available (void) diff --git a/df/df.c b/df/df.c index a13cc59..1e4c343 100644 --- a/df/df.c +++ b/df/df.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -54,9 +55,8 @@ df_on_handle (guestfs_h *g, const char *name, const char *uuid, FILE *fp) return -1; for (i = 0; fses[i] != NULL; i += 2) { - if (STRNEQ (fses[i+1], "") && - STRNEQ (fses[i+1], "swap") && - STRNEQ (fses[i+1], "unknown")) { + if (STRNEQ (fses[i + 1], "") && STRNEQ (fses[i + 1], "swap") && + STRNEQ (fses[i + 1], "unknown")) { const char *dev = fses[i]; CLEANUP_FREE_STATVFS struct guestfs_statvfs *stat = NULL; @@ -96,9 +96,8 @@ df_work (guestfs_h *g, size_t i, FILE *fp) { struct guestfs_add_libvirt_dom_argv optargs; - optargs.bitmask = - GUESTFS_ADD_LIBVIRT_DOM_READONLY_BITMASK | - GUESTFS_ADD_LIBVIRT_DOM_READONLYDISK_BITMASK; + optargs.bitmask = GUESTFS_ADD_LIBVIRT_DOM_READONLY_BITMASK | + GUESTFS_ADD_LIBVIRT_DOM_READONLYDISK_BITMASK; optargs.readonly = 1; optargs.readonlydisk = "read"; diff --git a/df/domains.c b/df/domains.c index 2407eec..6357856 100644 --- a/df/domains.c +++ b/df/domains.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -67,7 +68,8 @@ free_domains (void) } static void add_domains_by_id (virConnectPtr conn, int *ids, size_t n); -static void add_domains_by_name (virConnectPtr conn, char **names, size_t n); +static void add_domains_by_name (virConnectPtr conn, char **names, + size_t n); static void add_domain (virDomainPtr dom); void @@ -84,18 +86,20 @@ get_all_libvirt_domains (const char *libvirt_uri) VIR_CONNECT_RO); if (!conn) { err = virGetLastError (); - fprintf (stderr, - _("%s: could not connect to libvirt (code %d, domain %d): %s\n"), - guestfs_int_program_name, err->code, err->domain, err->message); + fprintf ( + stderr, + _("%s: could not connect to libvirt (code %d, domain %d): %s\n"), + guestfs_int_program_name, err->code, err->domain, err->message); exit (EXIT_FAILURE); } n = virConnectNumOfDomains (conn); if (n == -1) { err = virGetLastError (); - fprintf (stderr, - _("%s: could not get number of running domains (code %d, domain %d): %s\n"), - guestfs_int_program_name, err->code, err->domain, err->message); + fprintf (stderr, _("%s: could not get number of running domains (code " + "%d, domain %d): %s\n"), + guestfs_int_program_name, err->code, err->domain, + err->message); exit (EXIT_FAILURE); } @@ -105,9 +109,10 @@ get_all_libvirt_domains (const char *libvirt_uri) n = virConnectListDomains (conn, ids, n); if (n == -1) { err = virGetLastError (); - fprintf (stderr, - _("%s: could not list running domains (code %d, domain %d): %s\n"), - guestfs_int_program_name, err->code, err->domain, err->message); + fprintf ( + stderr, + _("%s: could not list running domains (code %d, domain %d): %s\n"), + guestfs_int_program_name, err->code, err->domain, err->message); exit (EXIT_FAILURE); } @@ -116,9 +121,10 @@ get_all_libvirt_domains (const char *libvirt_uri) n = virConnectNumOfDefinedDomains (conn); if (n == -1) { err = virGetLastError (); - fprintf (stderr, - _("%s: could not get number of inactive domains (code %d, domain %d): %s\n"), - guestfs_int_program_name, err->code, err->domain, err->message); + fprintf (stderr, _("%s: could not get number of inactive domains " + "(code %d, domain %d): %s\n"), + guestfs_int_program_name, err->code, err->domain, + err->message); exit (EXIT_FAILURE); } @@ -128,9 +134,10 @@ get_all_libvirt_domains (const char *libvirt_uri) n = virConnectListDefinedDomains (conn, names, n); if (n == -1) { err = virGetLastError (); - fprintf (stderr, - _("%s: could not list inactive domains (code %d, domain %d): %s\n"), - guestfs_int_program_name, err->code, err->domain, err->message); + fprintf (stderr, _("%s: could not list inactive domains (code %d, " + "domain %d): %s\n"), + guestfs_int_program_name, err->code, err->domain, + err->message); exit (EXIT_FAILURE); } @@ -139,7 +146,7 @@ get_all_libvirt_domains (const char *libvirt_uri) /* You must free these even though the libvirt documentation doesn't * mention it. */ - for (i = 0; i < (size_t) n; ++i) + for (i = 0; i < (size_t)n; ++i) free (names[i]); /* No domains? */ @@ -157,9 +164,9 @@ add_domains_by_id (virConnectPtr conn, int *ids, size_t n) virDomainPtr dom; for (i = 0; i < n; ++i) { - if (ids[i] != 0) { /* RHBZ#538041 */ + if (ids[i] != 0) { /* RHBZ#538041 */ dom = virDomainLookupByID (conn, ids[i]); - if (dom) /* transient errors are possible here, ignore them */ + if (dom) /* transient errors are possible here, ignore them */ add_domain (dom); } } @@ -173,7 +180,7 @@ add_domains_by_name (virConnectPtr conn, char **names, size_t n) for (i = 0; i < n; ++i) { dom = virDomainLookupByName (conn, names[i]); - if (dom) /* transient errors are possible here, ignore them */ + if (dom) /* transient errors are possible here, ignore them */ add_domain (dom); } } @@ -201,8 +208,7 @@ add_domain (virDomainPtr dom) domain->uuid = strdup (uuid); if (domain->uuid == NULL) error (EXIT_FAILURE, errno, "strdup"); - } - else + } else domain->uuid = NULL; } diff --git a/df/domains.h b/df/domains.h index fd0f9a0..0aa3ffa 100644 --- a/df/domains.h +++ b/df/domains.h @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #ifndef GUESTFS_DOMAINS_H_ @@ -24,7 +25,8 @@ #include <libvirt/libvirt.h> /* The list of domains that we build up in get_all_libvirt_guests. */ -struct domain { +struct domain +{ virDomainPtr dom; char *name; char *uuid; diff --git a/df/estimate-max-threads.c b/df/estimate-max-threads.c index ca1fd42..2b4f887 100644 --- a/df/estimate-max-threads.c +++ b/df/estimate-max-threads.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -67,7 +68,8 @@ read_line_from (const char *cmd) error (EXIT_FAILURE, errno, "%s: external command failed", cmd); if (getline (&ret, &allocsize, pp) == -1) - error (EXIT_FAILURE, errno, "could not read line from external command"); + error (EXIT_FAILURE, errno, + "could not read line from external command"); if (pclose (pp) == -1) error (EXIT_FAILURE, errno, "pclose"); diff --git a/df/estimate-max-threads.h b/df/estimate-max-threads.h index 11d458c..f29f8ca 100644 --- a/df/estimate-max-threads.h +++ b/df/estimate-max-threads.h @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #ifndef GUESTFS_ESTIMATE_MAX_THREADS_H_ diff --git a/df/main.c b/df/main.c index e04b14e..0c57ccf 100644 --- a/df/main.c +++ b/df/main.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -53,43 +54,43 @@ int echo_keys = 0; const char *libvirt_uri = NULL; int inspector = 0; -int csv = 0; /* --csv */ -int human = 0; /* --human-readable|-h */ -int inodes = 0; /* --inodes */ -int uuid = 0; /* --uuid */ +int csv = 0; /* --csv */ +int human = 0; /* --human-readable|-h */ +int inodes = 0; /* --inodes */ +int uuid = 0; /* --uuid */ static char *make_display_name (struct drv *drvs); -static void __attribute__((noreturn)) -usage (int status) +static void __attribute__ ((noreturn)) usage (int status) { if (status != EXIT_SUCCESS) fprintf (stderr, _("Try `%s --help' for more information.\n"), guestfs_int_program_name); else { - printf (_("%s: display free space on virtual filesystems\n" - "Copyright (C) 2010 Red Hat Inc.\n" - "Usage:\n" - " %s [--options] -d domname\n" - " %s [--options] -a disk.img [-a disk.img ...]\n" - "Options:\n" - " -a|--add image Add image\n" - " -c|--connect uri Specify libvirt URI for -d option\n" - " --csv Output as Comma-Separated Values\n" - " -d|--domain guest Add disks from libvirt guest\n" - " --format[=raw|..] Force disk format for -a option\n" - " -h|--human-readable Human-readable sizes in --long output\n" - " --help Display brief help\n" - " -i|--inodes Display inodes\n" - " --one-per-guest Separate appliance per guest\n" - " -P nr_threads Use at most nr_threads\n" - " --uuid Add UUIDs to --long output\n" - " -v|--verbose Verbose messages\n" - " -V|--version Display version and exit\n" - " -x Trace libguestfs API calls\n" - "For more information, see the manpage %s(1).\n"), - guestfs_int_program_name, guestfs_int_program_name, - guestfs_int_program_name, guestfs_int_program_name); + printf ( + _("%s: display free space on virtual filesystems\n" + "Copyright (C) 2010 Red Hat Inc.\n" + "Usage:\n" + " %s [--options] -d domname\n" + " %s [--options] -a disk.img [-a disk.img ...]\n" + "Options:\n" + " -a|--add image Add image\n" + " -c|--connect uri Specify libvirt URI for -d option\n" + " --csv Output as Comma-Separated Values\n" + " -d|--domain guest Add disks from libvirt guest\n" + " --format[=raw|..] Force disk format for -a option\n" + " -h|--human-readable Human-readable sizes in --long output\n" + " --help Display brief help\n" + " -i|--inodes Display inodes\n" + " --one-per-guest Separate appliance per guest\n" + " -P nr_threads Use at most nr_threads\n" + " --uuid Add UUIDs to --long output\n" + " -v|--verbose Verbose messages\n" + " -V|--version Display version and exit\n" + " -x Trace libguestfs API calls\n" + "For more information, see the manpage %s(1).\n"), + guestfs_int_program_name, guestfs_int_program_name, + guestfs_int_program_name, guestfs_int_program_name); } exit (status); } @@ -136,10 +137,11 @@ main (int argc, char *argv[]) for (;;) { c = getopt_long (argc, argv, options, long_options, &option_index); - if (c == -1) break; + if (c == -1) + break; switch (c) { - case 0: /* options which are long only */ + case 0: /* options which are long only */ if (STREQ (long_options[option_index].name, "long-options")) display_long_options (long_options); else if (STREQ (long_options[option_index].name, "short-options")) @@ -153,8 +155,7 @@ main (int argc, char *argv[]) } else if (STREQ (long_options[option_index].name, "uuid")) { uuid = 1; } else - error (EXIT_FAILURE, 0, - _("unknown long option: %s (%d)"), + error (EXIT_FAILURE, 0, _("unknown long option: %s (%d)"), long_options[option_index].name, option_index); break; @@ -219,7 +220,7 @@ main (int argc, char *argv[]) error (EXIT_FAILURE, errno, "strdup"); drv->next = drvs; drvs = drv; - } else { /* simulate -d option */ + } else { /* simulate -d option */ drv = calloc (1, sizeof (struct drv)); if (!drv) error (EXIT_FAILURE, errno, "calloc"); @@ -251,7 +252,8 @@ main (int argc, char *argv[]) * fields. (RHBZ#600977). */ if (human && csv) - error (EXIT_FAILURE, 0, _("you cannot use -h and --csv options together.")); + error (EXIT_FAILURE, 0, + _("you cannot use -h and --csv options together.")); /* virt-df has two modes. If the user didn't specify any drives, * then we do the df on every libvirt guest. That's the if-clause @@ -265,11 +267,9 @@ main (int argc, char *argv[]) err = start_threads (max_threads, g, df_work); free_domains (); #else - error (EXIT_FAILURE, 0, - _("compiled without support for libvirt.")); + error (EXIT_FAILURE, 0, _("compiled without support for libvirt.")); #endif - } - else { /* Single guest. */ + } else { /* Single guest. */ CLEANUP_FREE char *name = NULL; /* Add domains/drives from the command line (for a single guest). */ @@ -318,7 +318,7 @@ single_drive_display_name (struct drv *drvs) if (name == NULL) name = drvs->a.filename; else - name++; /* skip '/' character */ + name++; /* skip '/' character */ name = strdup (name); if (name == NULL) error (EXIT_FAILURE, errno, "strdup"); @@ -333,7 +333,7 @@ single_drive_display_name (struct drv *drvs) */ p = strrchr (name, '/'); if (p && strlen (p) > 1) { - p = strdup (p+1); + p = strdup (p + 1); if (!p) error (EXIT_FAILURE, errno, "strdup"); free (name); diff --git a/df/output.c b/df/output.c index b9bbcb6..65cfba3 100644 --- a/df/output.c +++ b/df/output.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -65,10 +66,9 @@ print_title (void) if (!csv) { /* ignore cols[0] in this mode */ - printf ("%-36s%10s %10s %10s %5s\n", - cols[1], cols[2], cols[3], cols[4], cols[5]); - } - else { + printf ("%-36s%10s %10s %10s %5s\n", cols[1], cols[2], cols[3], cols[4], + cols[5]); + } else { size_t i; for (i = 0; i < 6; ++i) { @@ -81,23 +81,23 @@ print_title (void) } void -print_stat (FILE *fp, - const char *name, const char *uuid_param, - const char *dev_param, - const struct guestfs_statvfs *stat) +print_stat (FILE *fp, const char *name, const char *uuid_param, + const char *dev_param, const struct guestfs_statvfs *stat) { - /* First two columns are always 'name' and 'dev', followed by four - * other data columns. In text mode the 'name' and 'dev' are - * combined into a single 'name:dev' column. In CSV mode they are - * kept as two separate columns. In UUID mode the name might be - * replaced by 'uuid', if available. - */ -#define MAX_LEN (LONGEST_HUMAN_READABLE > 128 ? LONGEST_HUMAN_READABLE : 128) +/* First two columns are always 'name' and 'dev', followed by four + * other data columns. In text mode the 'name' and 'dev' are + * combined into a single 'name:dev' column. In CSV mode they are + * kept as two separate columns. In UUID mode the name might be + * replaced by 'uuid', if available. + */ +#define MAX_LEN \ + (LONGEST_HUMAN_READABLE > 128 ? LONGEST_HUMAN_READABLE : 128) char buf[4][MAX_LEN]; const char *cols[4]; int64_t factor, v; float percent; - int hopts = human_round_to_nearest|human_autoscale|human_base_1024|human_SI; + int hopts = + human_round_to_nearest | human_autoscale | human_base_1024 | human_SI; size_t i, len; char *dev; @@ -106,7 +106,7 @@ print_stat (FILE *fp, if (!dev) exit (EXIT_FAILURE); - if (!inodes) { /* 1K blocks */ + if (!inodes) { /* 1K blocks */ if (!human) { factor = stat->bsize / 1024; @@ -120,23 +120,20 @@ print_stat (FILE *fp, snprintf (buf[2], MAX_LEN, "%" PRIi64, v); cols[2] = buf[2]; } else { - cols[0] = - human_readable ((uintmax_t) stat->blocks, buf[0], - hopts, stat->bsize, 1); + cols[0] = human_readable ((uintmax_t)stat->blocks, buf[0], hopts, + stat->bsize, 1); v = stat->blocks - stat->bfree; cols[1] = - human_readable ((uintmax_t) v, buf[1], hopts, stat->bsize, 1); - cols[2] = - human_readable ((uintmax_t) stat->bavail, buf[2], - hopts, stat->bsize, 1); + human_readable ((uintmax_t)v, buf[1], hopts, stat->bsize, 1); + cols[2] = human_readable ((uintmax_t)stat->bavail, buf[2], hopts, + stat->bsize, 1); } if (stat->blocks != 0) percent = 100. - 100. * stat->bfree / stat->blocks; else percent = 0; - } - else { /* inodes */ + } else { /* inodes */ snprintf (buf[0], MAX_LEN, "%" PRIi64, stat->files); cols[0] = buf[0]; snprintf (buf[1], MAX_LEN, "%" PRIi64, stat->files - stat->ffree); @@ -151,10 +148,11 @@ print_stat (FILE *fp, } if (!csv) - /* Use 'ceil' on the percentage in order to emulate what df itself does. */ + /* Use 'ceil' on the percentage in order to emulate what df itself does. + */ snprintf (buf[3], MAX_LEN, "%3.0f%%", ceil (percent)); else - snprintf (buf[3], MAX_LEN, "%.1f", (double) percent); + snprintf (buf[3], MAX_LEN, "%.1f", (double)percent); cols[3] = buf[3]; #undef MAX_LEN @@ -172,9 +170,9 @@ print_stat (FILE *fp, fprintf (fp, "\n "); } - fprintf (fp, "%10s %10s %10s %5s\n", cols[0], cols[1], cols[2], cols[3]); - } - else { + fprintf (fp, "%10s %10s %10s %5s\n", cols[0], cols[1], cols[2], + cols[3]); + } else { write_csv_field (fp, name); fputc (',', fp); write_csv_field (fp, dev); @@ -202,8 +200,8 @@ write_csv_field (FILE *fp, const char *field) len = strlen (field); for (i = 0; i < len; ++i) { - if (field[i] == ' ' || field[i] == '"' || - field[i] == '\n' || field[i] == ',') { + if (field[i] == ' ' || field[i] == '"' || field[i] == '\n' || + field[i] == ',') { needs_quoting = 1; break; } diff --git a/df/parallel.c b/df/parallel.c index aa37bc3..144bee7 100644 --- a/df/parallel.c +++ b/df/parallel.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -69,11 +70,12 @@ static pthread_cond_t retire_cond = PTHREAD_COND_INITIALIZER; static void thread_failure (const char *fn, int err); static void *worker_thread (void *arg); -struct thread_data { - size_t thread_num; /* Thread number. */ - int trace, verbose; /* Flags from the options_handle. */ +struct thread_data +{ + size_t thread_num; /* Thread number. */ + int trace, verbose; /* Flags from the options_handle. */ work_fn work; - int r; /* Used to store the error status. */ + int r; /* Used to store the error status. */ }; /* Start threads. */ @@ -81,21 +83,24 @@ int start_threads (size_t option_P, guestfs_h *options_handle, work_fn work) { const int trace = options_handle ? guestfs_get_trace (options_handle) : 0; - const int verbose = options_handle ? guestfs_get_verbose (options_handle) : 0; + const int verbose = + options_handle ? guestfs_get_verbose (options_handle) : 0; size_t i, nr_threads; int err, errors; void *status; CLEANUP_FREE struct thread_data *thread_data = NULL; CLEANUP_FREE pthread_t *threads = NULL; - if (nr_domains == 0) /* Nothing to do. */ + if (nr_domains == 0) /* Nothing to do. */ return 0; - /* If the user selected the -P option, then we use up to that many threads. */ + /* If the user selected the -P option, then we use up to that many + * threads. */ if (option_P > 0) nr_threads = MIN (nr_domains, option_P); else - nr_threads = MIN (nr_domains, MIN (MAX_THREADS, estimate_max_threads ())); + nr_threads = + MIN (nr_domains, MIN (MAX_THREADS, estimate_max_threads ())); if (verbose) fprintf (stderr, "parallel: creating %zu threads\n", nr_threads); @@ -114,7 +119,8 @@ start_threads (size_t option_P, guestfs_h *options_handle, work_fn work) /* Start the worker threads. */ for (i = 0; i < nr_threads; ++i) { - err = pthread_create (&threads[i], NULL, worker_thread, &thread_data[i]); + err = + pthread_create (&threads[i], NULL, worker_thread, &thread_data[i]); if (err != 0) error (EXIT_FAILURE, err, "pthread_create [%zu]", i); } @@ -147,7 +153,7 @@ worker_thread (void *thread_data_vp) thread_data->thread_num); while (1) { - size_t i; /* The current domain we're working on. */ + size_t i; /* The current domain we're working on. */ FILE *fp; CLEANUP_FREE char *output = NULL; size_t output_len = 0; @@ -174,7 +180,7 @@ worker_thread (void *thread_data_vp) return &thread_data->r; } - if (i >= nr_domains) /* Work finished. */ + if (i >= nr_domains) /* Work finished. */ break; if (thread_data->verbose) @@ -222,7 +228,8 @@ worker_thread (void *thread_data_vp) * may mean waiting for another thread to finish here. */ if (thread_data->verbose) - fprintf (stderr, "parallel: thread %zu waiting to retire domain %zu\n", + fprintf (stderr, + "parallel: thread %zu waiting to retire domain %zu\n", thread_data->thread_num, i); err = pthread_mutex_lock (&retire_mutex); @@ -249,7 +256,7 @@ worker_thread (void *thread_data_vp) printf ("%s", output); /* Update next_domain_to_retire and tell other threads. */ - next_domain_to_retire = i+1; + next_domain_to_retire = i + 1; pthread_cond_broadcast (&retire_cond); err = pthread_mutex_unlock (&retire_mutex); if (err != 0) { @@ -269,8 +276,8 @@ worker_thread (void *thread_data_vp) static void thread_failure (const char *fn, int err) { - fprintf (stderr, "%s: %s: %s\n", - guestfs_int_program_name, fn, strerror (err)); + fprintf (stderr, "%s: %s: %s\n", guestfs_int_program_name, fn, + strerror (err)); } #endif /* HAVE_LIBVIRT */ diff --git a/df/parallel.h b/df/parallel.h index 44f03bc..02cc00c 100644 --- a/df/parallel.h +++ b/df/parallel.h @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #ifndef GUESTFS_PARALLEL_H_ @@ -41,7 +42,8 @@ typedef int (*work_fn) (guestfs_h *g, size_t i, FILE *fp); * Returns 0 if all work items completed successfully, or -1 if there * was an error. */ -extern int start_threads (size_t option_P, guestfs_h *options_handle, work_fn work); +extern int start_threads (size_t option_P, guestfs_h *options_handle, + work_fn work); #endif /* HAVE_LIBVIRT */ diff --git a/df/virt-df.h b/df/virt-df.h index a93a5a6..58298b2 100644 --- a/df/virt-df.h +++ b/df/virt-df.h @@ -13,25 +13,29 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #ifndef GUESTFS_VIRT_DF_H_ #define GUESTFS_VIRT_DF_H_ -extern int csv; /* --csv */ -extern int human; /* --human-readable|-h */ -extern int inodes; /* --inodes */ -extern int uuid; /* --uuid */ +extern int csv; /* --csv */ +extern int human; /* --human-readable|-h */ +extern int inodes; /* --inodes */ +extern int uuid; /* --uuid */ /* df.c */ -extern int df_on_handle (guestfs_h *g, const char *name, const char *uuid, FILE *fp); +extern int df_on_handle (guestfs_h *g, const char *name, const char *uuid, + FILE *fp); #if defined(HAVE_LIBVIRT) extern int df_work (guestfs_h *g, size_t i, FILE *fp); #endif /* output.c */ extern void print_title (void); -extern void print_stat (FILE *fp, const char *name, const char *uuid, const char *dev, const struct guestfs_statvfs *stat); +extern void print_stat (FILE *fp, const char *name, const char *uuid, + const char *dev, + const struct guestfs_statvfs *stat); #endif /* GUESTFS_VIRT_DF_H_ */ diff --git a/diff/diff.c b/diff/diff.c index d7542fc..7f1303f 100644 --- a/diff/diff.c +++ b/diff/diff.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -86,48 +87,50 @@ static void output_string (const char *); static void output_string_link (const char *); static void output_binary (const char *, size_t len); -static void __attribute__((noreturn)) -usage (int status) +static void __attribute__ ((noreturn)) usage (int status) { if (status != EXIT_SUCCESS) fprintf (stderr, _("Try `%s --help' for more information.\n"), guestfs_int_program_name); else { - printf (_("%s: list differences between virtual machines\n" - "Copyright (C) 2010-2016 Red Hat Inc.\n" - "Usage:\n" - " %s [--options] -d domain1 -D domain2\n" - " %s [--options] -a disk1.img -A disk2.img [-a|-A ...]\n" - "Options:\n" - " -a|--add image Add image from first guest\n" - " --all Same as: --extra-stats --times --uids --xattrs\n" - " --atime Don't ignore access time changes\n" - " -A image Add image from second guest\n" - " --checksum[=...] Use checksum of file content\n" - " -c|--connect uri Specify libvirt URI for -d option\n" - " --csv Comma-Separated Values output\n" - " --dir-links Don't ignore directory nlink changes\n" - " --dir-times Don't ignore directory time changes\n" - " -d|--domain guest Add disks from first libvirt guest\n" - " -D guest Add disks from second libvirt guest\n" - " --echo-keys Don't turn off echo for passphrases\n" - " --extra-stats Display extra stats\n" - " --format[=raw|..] Force disk format for -a or -A option\n" - " --help Display brief help\n" - " -h|--human-readable Human-readable sizes in output\n" - " --keys-from-stdin Read passphrases from stdin\n" - " --times Display file times\n" - " --time-days Display file times as days before now\n" - " --time-relative Display file times as seconds before now\n" - " --time-t Display file times as time_t's\n" - " --uids Display UID, GID\n" - " -v|--verbose Verbose messages\n" - " -V|--version Display version and exit\n" - " -x Trace libguestfs API calls\n" - " --xattrs Display extended attributes\n" - "For more information, see the manpage %s(1).\n"), - guestfs_int_program_name, guestfs_int_program_name, - guestfs_int_program_name, guestfs_int_program_name); + printf ( + _("%s: list differences between virtual machines\n" + "Copyright (C) 2010-2016 Red Hat Inc.\n" + "Usage:\n" + " %s [--options] -d domain1 -D domain2\n" + " %s [--options] -a disk1.img -A disk2.img [-a|-A ...]\n" + "Options:\n" + " -a|--add image Add image from first guest\n" + " --all Same as: --extra-stats --times --uids " + "--xattrs\n" + " --atime Don't ignore access time changes\n" + " -A image Add image from second guest\n" + " --checksum[=...] Use checksum of file content\n" + " -c|--connect uri Specify libvirt URI for -d option\n" + " --csv Comma-Separated Values output\n" + " --dir-links Don't ignore directory nlink changes\n" + " --dir-times Don't ignore directory time changes\n" + " -d|--domain guest Add disks from first libvirt guest\n" + " -D guest Add disks from second libvirt guest\n" + " --echo-keys Don't turn off echo for passphrases\n" + " --extra-stats Display extra stats\n" + " --format[=raw|..] Force disk format for -a or -A option\n" + " --help Display brief help\n" + " -h|--human-readable Human-readable sizes in output\n" + " --keys-from-stdin Read passphrases from stdin\n" + " --times Display file times\n" + " --time-days Display file times as days before now\n" + " --time-relative Display file times as seconds before " + "now\n" + " --time-t Display file times as time_t's\n" + " --uids Display UID, GID\n" + " -v|--verbose Verbose messages\n" + " -V|--version Display version and exit\n" + " -x Trace libguestfs API calls\n" + " --xattrs Display extended attributes\n" + "For more information, see the manpage %s(1).\n"), + guestfs_int_program_name, guestfs_int_program_name, + guestfs_int_program_name, guestfs_int_program_name); } exit (status); } @@ -181,8 +184,8 @@ main (int argc, char *argv[]) { "xattrs", 0, 0, 0 }, { 0, 0, 0, 0 } }; - struct drv *drvs = NULL; /* First guest. */ - struct drv *drvs2 = NULL; /* Second guest. */ + struct drv *drvs = NULL; /* First guest. */ + struct drv *drvs2 = NULL; /* Second guest. */ const char *format = NULL; bool format_consumed = true; int c; @@ -199,10 +202,11 @@ main (int argc, char *argv[]) for (;;) { c = getopt_long (argc, argv, options, long_options, &option_index); - if (c == -1) break; + if (c == -1) + break; switch (c) { - case 0: /* options which are long only */ + case 0: /* options which are long only */ if (STREQ (long_options[option_index].name, "long-options")) display_long_options (long_options); else if (STREQ (long_options[option_index].name, "short-options")) @@ -257,8 +261,7 @@ main (int argc, char *argv[]) STREQ (long_options[option_index].name, "xattrs")) { enable_xattrs = 1; } else - error (EXIT_FAILURE, 0, - _("unknown long option: %s (%d)"), + error (EXIT_FAILURE, 0, _("unknown long option: %s (%d)"), long_options[option_index].name, option_index); break; @@ -312,9 +315,10 @@ main (int argc, char *argv[]) } if (drvs == NULL || drvs2 == NULL) { - fprintf (stderr, - _("%s: you must specify some -a|-A|-d|-D options, see %s(1)\n"), - guestfs_int_program_name, guestfs_int_program_name); + fprintf ( + stderr, + _("%s: you must specify some -a|-A|-d|-D options, see %s(1)\n"), + guestfs_int_program_name, guestfs_int_program_name); usage (EXIT_FAILURE); } @@ -322,7 +326,8 @@ main (int argc, char *argv[]) * fields correctly. (RHBZ#600977). */ if (human && csv) - error (EXIT_FAILURE, 0, _("you cannot use -h and --csv options together.")); + error (EXIT_FAILURE, 0, + _("you cannot use -h and --csv options together.")); if (optind != argc) error (EXIT_FAILURE, 0, _("extra arguments on the command line")); @@ -378,7 +383,8 @@ main (int argc, char *argv[]) exit (errors == 0 ? EXIT_SUCCESS : EXIT_FAILURE); } -struct tree { +struct tree +{ /* We store the handle here in case we need to go and dig into * the disk to get file content. */ @@ -389,11 +395,12 @@ struct tree { size_t nr_files, allocated; }; -struct file { +struct file +{ char *path; struct guestfs_statns *stat; struct guestfs_xattr_list *xattrs; - char *csum; /* Checksum. If NULL, use file times and size. */ + char *csum; /* Checksum. If NULL, use file times and size. */ }; static void @@ -413,7 +420,9 @@ free_tree (struct tree *t) free (t); } -static int visit_entry (const char *dir, const char *name, const struct guestfs_statns *stat, const struct guestfs_xattr_list *xattrs, void *vt); +static int visit_entry (const char *dir, const char *name, + const struct guestfs_statns *stat, + const struct guestfs_xattr_list *xattrs, void *vt); static struct tree * visit_guest (guestfs_h *g) @@ -448,8 +457,7 @@ visit_guest (guestfs_h *g) static int visit_entry (const char *dir, const char *name, const struct guestfs_statns *stat_orig, - const struct guestfs_xattr_list *xattrs_orig, - void *vt) + const struct guestfs_xattr_list *xattrs_orig, void *vt) { struct tree *t = vt; char *path = NULL, *csum = NULL; @@ -494,7 +502,7 @@ visit_entry (const char *dir, const char *name, */ if (!dir_times && is_dir (stat->st_mode)) stat->st_atime_sec = stat->st_mtime_sec = stat->st_ctime_sec = - stat->st_atime_nsec = stat->st_mtime_nsec = stat->st_ctime_nsec = 0; + stat->st_atime_nsec = stat->st_mtime_nsec = stat->st_ctime_nsec = 0; /* Add the pathname and stats to the list. */ i = t->nr_files++; @@ -526,7 +534,7 @@ visit_entry (const char *dir, const char *name, return 0; - error: +error: free (path); free (csum); guestfs_free_statns (stat); @@ -537,7 +545,8 @@ visit_entry (const char *dir, const char *name, static void deleted (guestfs_h *, struct file *); static void added (guestfs_h *, struct file *); static int compare_stats (struct file *, struct file *); -static void changed (guestfs_h *, struct file *, guestfs_h *, struct file *, int st, int cst); +static void changed (guestfs_h *, struct file *, guestfs_h *, struct file *, + int st, int cst); static void diff (struct file *, guestfs_h *, struct file *, guestfs_h *); static void output_file (guestfs_h *, struct file *); @@ -628,9 +637,8 @@ compare_stats (struct file *file1, struct file *file2) } static void -changed (guestfs_h *g1, struct file *file1, - guestfs_h *g2, struct file *file2, - int st, int cst) +changed (guestfs_h *g1, struct file *file1, guestfs_h *g2, + struct file *file2, int st, int cst) { /* Did file content change? */ if (cst != 0 || @@ -665,8 +673,9 @@ changed (guestfs_h *g1, struct file *file1, output_start_line (); output_string ("#"); output_string ("changed:"); -#define COMPARE_STAT(n) \ - if (file1->stat->n != file2->stat->n) output_string (#n) +#define COMPARE_STAT(n) \ + if (file1->stat->n != file2->stat->n) \ + output_string (#n) COMPARE_STAT (st_dev); COMPARE_STAT (st_ino); COMPARE_STAT (st_mode); @@ -722,13 +731,14 @@ diff (struct file *file1, guestfs_h *g1, struct file *file2, guestfs_h *g2) fprintf (stderr, "%s\n", cmd); r = system (cmd); if (!WIFEXITED (r) || WEXITSTATUS (r) != 0) { - fprintf (stderr, _("%s: external diff command failed\n"), guestfs_int_program_name); + fprintf (stderr, _("%s: external diff command failed\n"), + guestfs_int_program_name); goto out; } printf ("@@ %s @@\n", _("End of diff")); - out: +out: unlink (tmpda); unlink (tmpdb); rmdir (tmpd); @@ -771,7 +781,8 @@ output_file (guestfs_h *g, struct file *file) if (enable_times) { if (atime) - output_int64_time (file->stat->st_atime_sec, file->stat->st_atime_nsec); + output_int64_time (file->stat->st_atime_sec, + file->stat->st_atime_nsec); output_int64_time (file->stat->st_mtime_sec, file->stat->st_mtime_nsec); output_int64_time (file->stat->st_ctime_sec, file->stat->st_ctime_nsec); } @@ -817,7 +828,8 @@ next_field (void) int c = csv ? ',' : ' '; field++; - if (field == 1) return; + if (field == 1) + return; if (putchar (c) == EOF) error (EXIT_FAILURE, errno, "putchar"); @@ -852,8 +864,7 @@ output_string (const char *s) print_no_quoting: if (printf ("%s", s) < 0) error (EXIT_FAILURE, errno, "printf"); - } - else { + } else { /* Quote CSV string without requiring an external module. */ size_t i, len; int needs_quoting = 0; @@ -861,8 +872,7 @@ output_string (const char *s) len = strlen (s); for (i = 0; i < len; ++i) { - if (s[i] == ' ' || s[i] == '"' || - s[i] == '\n' || s[i] == ',') { + if (s[i] == ' ' || s[i] == '"' || s[i] == '\n' || s[i] == ',') { needs_quoting = 1; break; } @@ -915,18 +925,17 @@ output_binary (const char *s, size_t len) if (putchar (s[i]) == EOF) error (EXIT_FAILURE, errno, "putchar"); } else { - if (printf ("\\x%02x", (unsigned char) s[i]) < 0) + if (printf ("\\x%02x", (unsigned char)s[i]) < 0) error (EXIT_FAILURE, errno, "putchar"); } } - } - else { + } else { /* Quote CSV string without requiring an external module. */ int needs_quoting = 0; for (i = 0; i < len; ++i) { - if (!c_isprint (s[i]) || s[i] == ' ' || s[i] == '"' || - s[i] == '\n' || s[i] == ',') { + if (!c_isprint (s[i]) || s[i] == ' ' || s[i] == '"' || s[i] == '\n' || + s[i] == ',') { needs_quoting = 1; break; } @@ -947,7 +956,7 @@ output_binary (const char *s, size_t len) if (putchar (s[i]) == EOF) error (EXIT_FAILURE, errno, "putchar"); } else { - if (printf ("\\x%2x", (unsigned) s[i]) < 0) + if (printf ("\\x%2x", (unsigned)s[i]) < 0) error (EXIT_FAILURE, errno, "printf"); } } @@ -970,7 +979,8 @@ static void output_int64_size (int64_t size) { char buf[LONGEST_HUMAN_READABLE]; - int hopts = human_round_to_nearest|human_autoscale|human_base_1024|human_SI; + int hopts = + human_round_to_nearest | human_autoscale | human_base_1024 | human_SI; int r; next_field (); @@ -980,14 +990,13 @@ output_int64_size (int64_t size) r = printf ("%10" PRIi64, size); else r = printf ("%10s", - human_readable ((uintmax_t) size, buf, hopts, 1, 1)); + human_readable ((uintmax_t)size, buf, hopts, 1, 1)); } else { /* CSV is the same as non-CSV but we don't need to right-align. */ if (!human) r = printf ("%" PRIi64, size); else - r = printf ("%s", - human_readable ((uintmax_t) size, buf, hopts, 1, 1)); + r = printf ("%s", human_readable ((uintmax_t)size, buf, hopts, 1, 1)); } if (r < 0) @@ -999,7 +1008,7 @@ output_int64_perms (int64_t i) { next_field (); /* csv doesn't need escaping */ - if (printf ("%04" PRIo64, (uint64_t) i) < 0) + if (printf ("%04" PRIo64, (uint64_t)i) < 0) error (EXIT_FAILURE, errno, "printf"); } @@ -1013,20 +1022,19 @@ output_int64_time (int64_t secs, int64_t nsecs) /* csv doesn't need escaping */ if (time_t_output) { switch (time_relative) { - case 0: /* --time-t */ + case 0: /* --time-t */ r = printf ("%10" PRIi64, secs); break; - case 1: /* --time-relative */ + case 1: /* --time-relative */ r = printf ("%8" PRIi64, now - secs); break; - case 2: /* --time-days */ + case 2: /* --time-days */ default: r = printf ("%3" PRIi64, (now - secs) / 86400); break; } - } - else { - time_t t = (time_t) secs; + } else { + time_t t = (time_t)secs; char buf[64]; struct tm *tm; @@ -1061,7 +1069,7 @@ output_int64_dev (int64_t i) next_field (); /* csv doesn't need escaping */ - if (printf ("%ju:%ju", - (uintmax_t) major (dev), (uintmax_t) minor (dev)) < 0) + if (printf ("%ju:%ju", (uintmax_t)major (dev), (uintmax_t)minor (dev)) < + 0) error (EXIT_FAILURE, errno, "printf"); } diff --git a/edit/edit.c b/edit/edit.c index 6e7aee4..c73667d 100644 --- a/edit/edit.c +++ b/edit/edit.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -57,36 +58,38 @@ static const char *perl_expr = NULL; static void edit_files (int argc, char *argv[]); static void edit (const char *filename, const char *root); -static void __attribute__((noreturn)) -usage (int status) +static void __attribute__ ((noreturn)) usage (int status) { if (status != EXIT_SUCCESS) fprintf (stderr, _("Try `%s --help' for more information.\n"), guestfs_int_program_name); else { - printf (_("%s: Edit a file in a virtual machine\n" - "Copyright (C) 2009-2016 Red Hat Inc.\n" - "Usage:\n" - " %s [--options] -d domname file [file ...]\n" - " %s [--options] -a disk.img [-a disk.img ...] file [file ...]\n" - "Options:\n" - " -a|--add image Add image\n" - " -b|--backup .ext Backup original as original.ext\n" - " -c|--connect uri Specify libvirt URI for -d option\n" - " -d|--domain guest Add disks from libvirt guest\n" - " --echo-keys Don't turn off echo for passphrases\n" - " -e|--expr expr Non-interactive editing using Perl expr\n" - " --format[=raw|..] Force disk format for -a option\n" - " --help Display brief help\n" - " --keys-from-stdin Read passphrases from stdin\n" - " -m|--mount dev[:mnt[:opts[:fstype]]]\n" - " Mount dev on mnt (if omitted, /)\n" - " -v|--verbose Verbose messages\n" - " -V|--version Display version and exit\n" - " -x Trace libguestfs API calls\n" - "For more information, see the manpage %s(1).\n"), - guestfs_int_program_name, guestfs_int_program_name, - guestfs_int_program_name, guestfs_int_program_name); + printf ( + _("%s: Edit a file in a virtual machine\n" + "Copyright (C) 2009-2016 Red Hat Inc.\n" + "Usage:\n" + " %s [--options] -d domname file [file ...]\n" + " %s [--options] -a disk.img [-a disk.img ...] file [file " + "...]\n" + "Options:\n" + " -a|--add image Add image\n" + " -b|--backup .ext Backup original as original.ext\n" + " -c|--connect uri Specify libvirt URI for -d option\n" + " -d|--domain guest Add disks from libvirt guest\n" + " --echo-keys Don't turn off echo for passphrases\n" + " -e|--expr expr Non-interactive editing using Perl " + "expr\n" + " --format[=raw|..] Force disk format for -a option\n" + " --help Display brief help\n" + " --keys-from-stdin Read passphrases from stdin\n" + " -m|--mount dev[:mnt[:opts[:fstype]]]\n" + " Mount dev on mnt (if omitted, /)\n" + " -v|--verbose Verbose messages\n" + " -V|--version Display version and exit\n" + " -x Trace libguestfs API calls\n" + "For more information, see the manpage %s(1).\n"), + guestfs_int_program_name, guestfs_int_program_name, + guestfs_int_program_name, guestfs_int_program_name); } exit (status); } @@ -105,22 +108,14 @@ main (int argc, char *argv[]) static const char *options = "a:b:c:d:e:m:vVx"; static const struct option long_options[] = { - { "add", 1, 0, 'a' }, - { "backup", 1, 0, 'b' }, - { "connect", 1, 0, 'c' }, - { "domain", 1, 0, 'd' }, - { "echo-keys", 0, 0, 0 }, - { "edit", 1, 0, 'e' }, - { "expr", 1, 0, 'e' }, - { "format", 2, 0, 0 }, - { "help", 0, 0, HELP_OPTION }, - { "keys-from-stdin", 0, 0, 0 }, - { "long-options", 0, 0, 0 }, - { "mount", 1, 0, 'm' }, - { "short-options", 0, 0, 0 }, - { "verbose", 0, 0, 'v' }, - { "version", 0, 0, 'V' }, - { 0, 0, 0, 0 } + { "add", 1, 0, 'a' }, { "backup", 1, 0, 'b' }, + { "connect", 1, 0, 'c' }, { "domain", 1, 0, 'd' }, + { "echo-keys", 0, 0, 0 }, { "edit", 1, 0, 'e' }, + { "expr", 1, 0, 'e' }, { "format", 2, 0, 0 }, + { "help", 0, 0, HELP_OPTION }, { "keys-from-stdin", 0, 0, 0 }, + { "long-options", 0, 0, 0 }, { "mount", 1, 0, 'm' }, + { "short-options", 0, 0, 0 }, { "verbose", 0, 0, 'v' }, + { "version", 0, 0, 'V' }, { 0, 0, 0, 0 } }; struct drv *drvs = NULL; struct drv *drv; @@ -138,10 +133,11 @@ main (int argc, char *argv[]) for (;;) { c = getopt_long (argc, argv, options, long_options, &option_index); - if (c == -1) break; + if (c == -1) + break; switch (c) { - case 0: /* options which are long only */ + case 0: /* options which are long only */ if (STREQ (long_options[option_index].name, "long-options")) display_long_options (long_options); else if (STREQ (long_options[option_index].name, "short-options")) @@ -153,8 +149,7 @@ main (int argc, char *argv[]) } else if (STREQ (long_options[option_index].name, "format")) { OPTION_format; } else - error (EXIT_FAILURE, 0, - _("unknown long option: %s (%d)"), + error (EXIT_FAILURE, 0, _("unknown long option: %s (%d)"), long_options[option_index].name, option_index); break; @@ -224,7 +219,7 @@ main (int argc, char *argv[]) error (EXIT_FAILURE, errno, "strdup"); drv->next = drvs; drvs = drv; - } else { /* simulate -d option */ + } else { /* simulate -d option */ drv = calloc (1, sizeof (struct drv)); if (!drv) error (EXIT_FAILURE, errno, "calloc"); @@ -312,8 +307,8 @@ edit (const char *filename, const char *root) /* Windows? Special handling is required. */ if (root != NULL && is_windows (g, root)) { - filename = filename_to_free = windows_path (g, root, filename, - 0 /* not read only */); + filename = filename_to_free = + windows_path (g, root, filename, 0 /* not read only */); if (filename == NULL) exit (EXIT_FAILURE); } diff --git a/erlang/erl-guestfs-proto.c b/erlang/erl-guestfs-proto.c index 24295ef..7c93541 100644 --- a/erlang/erl-guestfs-proto.c +++ b/erlang/erl-guestfs-proto.c @@ -56,7 +56,7 @@ extern int64_t get_int64 (ETERM *term); /* This stops things getting out of hand, but also lets us detect * protocol problems quickly. */ -#define MAX_MESSAGE_SIZE (32*1024*1024) +#define MAX_MESSAGE_SIZE (32 * 1024 * 1024) static unsigned char *read_message (void); static void write_reply (ETERM *); @@ -165,7 +165,8 @@ atom_equals (ETERM *atom, const char *name) { size_t namelen = strlen (name); size_t atomlen = ERL_ATOM_SIZE (atom); - if (namelen != atomlen) return 0; + if (namelen != atomlen) + return 0; return strncmp (ERL_ATOM_PTR (atom), name, atomlen) == 0; } @@ -229,17 +230,17 @@ make_table (char **r) for (size = 0; r[size] != NULL; ++size) ; - t = malloc (sizeof (ETERM *) * (size/2)); + t = malloc (sizeof (ETERM *) * (size / 2)); if (t == NULL) return make_error ("make_table"); for (i = 0; r[i] != NULL; i += 2) { a[0] = erl_mk_string (r[i]); - a[1] = erl_mk_string (r[i+1]); - t[i/2] = erl_mk_tuple (a, 2); + a[1] = erl_mk_string (r[i + 1]); + t[i / 2] = erl_mk_tuple (a, 2); } - return erl_mk_list (t, size/2); + return erl_mk_list (t, size / 2); } ETERM * @@ -262,7 +263,7 @@ get_string_list (ETERM *term) size++, t = ERL_CONS_TAIL (t)) ; - r = malloc ((size+1) * sizeof (char *)); + r = malloc ((size + 1) * sizeof (char *)); if (r == NULL) error (EXIT_FAILURE, errno, "malloc"); @@ -289,13 +290,13 @@ get_int (ETERM *term) case ERL_INTEGER: return ERL_INT_VALUE (term); case ERL_U_INTEGER: - return (int) ERL_INT_UVALUE (term); + return (int)ERL_INT_UVALUE (term); case ERL_LONGLONG: /* XXX check for overflow */ - return (int) ERL_LL_VALUE (term); + return (int)ERL_LL_VALUE (term); case ERL_U_LONGLONG: /* XXX check for overflow */ - return (int) ERL_LL_UVALUE (term); + return (int)ERL_LL_UVALUE (term); default: /* XXX fail in some way */ return -1; @@ -313,7 +314,7 @@ get_int64 (ETERM *term) case ERL_LONGLONG: return ERL_LL_VALUE (term); case ERL_U_LONGLONG: - return (int64_t) ERL_LL_UVALUE (term); + return (int64_t)ERL_LL_UVALUE (term); default: /* XXX fail in some way */ return -1; diff --git a/examples/copy-over.c b/examples/copy-over.c index d92a4d2..418139c 100644 --- a/examples/copy-over.c +++ b/examples/copy-over.c @@ -22,7 +22,8 @@ #include <guestfs.h> -struct threaddata { +struct threaddata +{ const char *src; const char *srcdir; int fd; @@ -31,25 +32,27 @@ struct threaddata { static void *start_srcthread (void *); static int open_guest (guestfs_h *g, const char *dom, int readonly); -static int64_t timeval_diff (const struct timeval *x, const struct timeval *y); +static int64_t timeval_diff (const struct timeval *x, + const struct timeval *y); static int compare_keys_len (const void *p1, const void *p2); static size_t count_strings (char *const *argv); static void usage (void) { - fprintf (stderr, - "Usage: copy-over source srcdir dest destdir\n" - "\n" - " source : the source domain (a libvirt guest name)\n" - " srcdir : the directory to copy from the source guest\n" - " dest : the destination domain (a libvirt guest name)\n" - " destdir : the destination directory (must exist at destination)\n" - "\n" - "eg: copy-over Src /home/rjones Dest /tmp/dir\n" - "would copy /home/rjones from Src to /tmp/dir on Dest\n" - "\n" - "The destination guest cannot be running.\n"); + fprintf ( + stderr, + "Usage: copy-over source srcdir dest destdir\n" + "\n" + " source : the source domain (a libvirt guest name)\n" + " srcdir : the directory to copy from the source guest\n" + " dest : the destination domain (a libvirt guest name)\n" + " destdir : the destination directory (must exist at destination)\n" + "\n" + "eg: copy-over Src /home/rjones Dest /tmp/dir\n" + "would copy /home/rjones from Src to /tmp/dir on Dest\n" + "\n" + "The destination guest cannot be running.\n"); } int @@ -205,8 +208,7 @@ open_guest (guestfs_h *g, const char *dom, int readonly) size_t i; /* Use libvirt to find the guest disks and add them to the handle. */ - if (guestfs_add_domain (g, dom, - GUESTFS_ADD_DOMAIN_READONLY, readonly, + if (guestfs_add_domain (g, dom, GUESTFS_ADD_DOMAIN_READONLY, readonly, -1) == -1) return -1; @@ -219,7 +221,9 @@ open_guest (guestfs_h *g, const char *dom, int readonly) return -1; if (roots[0] == NULL || roots[1] != NULL) { - fprintf (stderr, "copy-over: %s: no operating systems or multiple operating systems found\n", dom); + fprintf (stderr, "copy-over: %s: no operating systems or multiple " + "operating systems found\n", + dom); return -1; } @@ -236,10 +240,10 @@ open_guest (guestfs_h *g, const char *dom, int readonly) /* Ignore failures from this call, since bogus entries can * appear in the guest's /etc/fstab. */ - (readonly ? guestfs_mount_ro : guestfs_mount) - (g, mountpoints[i+1], mountpoints[i]); + (readonly ? guestfs_mount_ro : guestfs_mount) (g, mountpoints[i + 1], + mountpoints[i]); free (mountpoints[i]); - free (mountpoints[i+1]); + free (mountpoints[i + 1]); } free (mountpoints); @@ -268,8 +272,8 @@ timeval_diff (const struct timeval *x, const struct timeval *y) static int compare_keys_len (const void *p1, const void *p2) { - const char *key1 = * (char * const *) p1; - const char *key2 = * (char * const *) p2; + const char *key1 = *(char *const *)p1; + const char *key2 = *(char *const *)p2; return strlen (key1) - strlen (key2); } diff --git a/examples/create-disk.c b/examples/create-disk.c index 81e4dbd..ff5c83c 100644 --- a/examples/create-disk.c +++ b/examples/create-disk.c @@ -23,15 +23,16 @@ main (int argc, char *argv[]) guestfs_set_trace (g, 1); /* Create a raw-format sparse disk image, 512 MB in size. */ - if (guestfs_disk_create (g, "disk.img", "raw", UINT64_C(512)*1024*1024, - -1) == -1) + if (guestfs_disk_create (g, "disk.img", "raw", + UINT64_C (512) * 1024 * 1024, -1) == -1) exit (EXIT_FAILURE); /* Add the disk image to libguestfs. */ - if (guestfs_add_drive_opts (g, "disk.img", - GUESTFS_ADD_DRIVE_OPTS_FORMAT, "raw", /* raw format */ - GUESTFS_ADD_DRIVE_OPTS_READONLY, 0, /* for write */ - -1) /* this marks end of optional arguments */ + if (guestfs_add_drive_opts (g, "disk.img", GUESTFS_ADD_DRIVE_OPTS_FORMAT, + "raw", /* raw format */ + GUESTFS_ADD_DRIVE_OPTS_READONLY, + 0, /* for write */ + -1) /* this marks end of optional arguments */ == -1) exit (EXIT_FAILURE); @@ -62,7 +63,8 @@ main (int argc, char *argv[]) if (partitions == NULL) exit (EXIT_FAILURE); if (partitions[0] == NULL || partitions[1] != NULL) { - fprintf (stderr, "error: expected a single partition from list-partitions\n"); + fprintf (stderr, + "error: expected a single partition from list-partitions\n"); exit (EXIT_FAILURE); } diff --git a/examples/debug-logging.c b/examples/debug-logging.c index 755e69b..12f75c0 100644 --- a/examples/debug-logging.c +++ b/examples/debug-logging.c @@ -11,16 +11,17 @@ #include <syslog.h> #include <guestfs.h> -static void message_callback (guestfs_h *g, void *opaque, uint64_t event, int event_handle, int flags, const char *buf, size_t buf_len, const uint64_t *array, size_t array_len); +static void message_callback (guestfs_h *g, void *opaque, uint64_t event, + int event_handle, int flags, const char *buf, + size_t buf_len, const uint64_t *array, + size_t array_len); /* Events we are interested in. This bitmask covers all trace and * debug messages. */ static const uint64_t event_bitmask = - GUESTFS_EVENT_LIBRARY | - GUESTFS_EVENT_WARNING | - GUESTFS_EVENT_APPLIANCE | - GUESTFS_EVENT_TRACE; + GUESTFS_EVENT_LIBRARY | GUESTFS_EVENT_WARNING | + GUESTFS_EVENT_APPLIANCE | GUESTFS_EVENT_TRACE; int main (int argc, char *argv[]) @@ -40,8 +41,8 @@ main (int argc, char *argv[]) * * For more information see EVENTS in guestfs(3). */ - if (guestfs_set_event_callback (g, message_callback, - event_bitmask, 0, NULL) == -1) + if (guestfs_set_event_callback (g, message_callback, event_bitmask, 0, + NULL) == -1) exit (EXIT_FAILURE); /* This is how debugging is enabled: @@ -97,13 +98,11 @@ main (int argc, char *argv[]) * obviously you could do something more advanced here. */ static void -message_callback (guestfs_h *g, void *opaque, - uint64_t event, int event_handle, - int flags, - const char *buf, size_t buf_len, - const uint64_t *array, size_t array_len) +message_callback (guestfs_h *g, void *opaque, uint64_t event, + int event_handle, int flags, const char *buf, + size_t buf_len, const uint64_t *array, size_t array_len) { - const int priority = LOG_USER|LOG_INFO; + const int priority = LOG_USER | LOG_INFO; char *event_name, *msg; if (buf_len > 0) { diff --git a/examples/display-icon.c b/examples/display-icon.c index b408364..ef7ace1 100644 --- a/examples/display-icon.c +++ b/examples/display-icon.c @@ -11,8 +11,8 @@ static int compare_keys_len (const void *p1, const void *p2) { - const char *key1 = * (char * const *) p1; - const char *key2 = * (char * const *) p2; + const char *key1 = *(char *const *)p1; + const char *key2 = *(char *const *)p2; return strlen (key1) - strlen (key2); } @@ -49,9 +49,9 @@ main (int argc, char *argv[]) /* Attach the disk image read-only to libguestfs. */ if (guestfs_add_drive_opts (g, disk, - /* GUESTFS_ADD_DRIVE_OPTS_FORMAT, "raw", */ - GUESTFS_ADD_DRIVE_OPTS_READONLY, 1, - -1) /* this marks end of optional arguments */ + /* GUESTFS_ADD_DRIVE_OPTS_FORMAT, "raw", */ + GUESTFS_ADD_DRIVE_OPTS_READONLY, 1, + -1) /* this marks end of optional arguments */ == -1) exit (EXIT_FAILURE); @@ -80,15 +80,15 @@ main (int argc, char *argv[]) if (mountpoints == NULL) exit (EXIT_FAILURE); - qsort (mountpoints, count_strings (mountpoints) / 2, 2 * sizeof (char *), - compare_keys_len); + qsort (mountpoints, count_strings (mountpoints) / 2, + 2 * sizeof (char *), compare_keys_len); for (i = 0; mountpoints[i] != NULL; i += 2) { /* Ignore failures from this call, since bogus entries can * appear in the guest's /etc/fstab. */ - guestfs_mount_ro (g, mountpoints[i+1], mountpoints[i]); + guestfs_mount_ro (g, mountpoints[i + 1], mountpoints[i]); free (mountpoints[i]); - free (mountpoints[i+1]); + free (mountpoints[i + 1]); } free (mountpoints); @@ -99,10 +99,11 @@ main (int argc, char *argv[]) * was an error. */ icon = guestfs_inspect_get_icon (g, root, &icon_size, -1); - if (!icon) /* actual libguestfs error */ + if (!icon) /* actual libguestfs error */ exit (EXIT_FAILURE); - if (icon_size == 0) /* no icon available */ - fprintf (stderr, "%s: %s: no icon available for this operating system\n", + if (icon_size == 0) /* no icon available */ + fprintf (stderr, + "%s: %s: no icon available for this operating system\n", disk, root); else { /* Display the icon. */ diff --git a/examples/inspect-vm.c b/examples/inspect-vm.c index 50fe49a..6a415ed 100644 --- a/examples/inspect-vm.c +++ b/examples/inspect-vm.c @@ -8,8 +8,8 @@ static int compare_keys_len (const void *p1, const void *p2) { - const char *key1 = * (char * const *) p1; - const char *key2 = * (char * const *) p2; + const char *key1 = *(char *const *)p1; + const char *key2 = *(char *const *)p2; return strlen (key1) - strlen (key2); } @@ -45,9 +45,9 @@ main (int argc, char *argv[]) /* Attach the disk image read-only to libguestfs. */ if (guestfs_add_drive_opts (g, disk, - /* GUESTFS_ADD_DRIVE_OPTS_FORMAT, "raw", */ - GUESTFS_ADD_DRIVE_OPTS_READONLY, 1, - -1) /* this marks end of optional arguments */ + /* GUESTFS_ADD_DRIVE_OPTS_FORMAT, "raw", */ + GUESTFS_ADD_DRIVE_OPTS_READONLY, 1, + -1) /* this marks end of optional arguments */ == -1) exit (EXIT_FAILURE); @@ -97,15 +97,15 @@ main (int argc, char *argv[]) if (mountpoints == NULL) exit (EXIT_FAILURE); - qsort (mountpoints, count_strings (mountpoints) / 2, 2 * sizeof (char *), - compare_keys_len); + qsort (mountpoints, count_strings (mountpoints) / 2, + 2 * sizeof (char *), compare_keys_len); for (i = 0; mountpoints[i] != NULL; i += 2) { /* Ignore failures from this call, since bogus entries can * appear in the guest's /etc/fstab. */ - guestfs_mount_ro (g, mountpoints[i+1], mountpoints[i]); + guestfs_mount_ro (g, mountpoints[i + 1], mountpoints[i]); free (mountpoints[i]); - free (mountpoints[i+1]); + free (mountpoints[i + 1]); } free (mountpoints); diff --git a/examples/libvirt-auth.c b/examples/libvirt-auth.c index 12825f4..baff501 100644 --- a/examples/libvirt-auth.c +++ b/examples/libvirt-auth.c @@ -13,37 +13,43 @@ static void usage (void) { - fprintf (stderr, - "Usage:\n" - "\n" - " libvirt-auth URI domain\n" - "\n" - "where:\n" - "\n" - " URI is the libvirt URI, eg. qemu+libssh2://USER@localhost/system\n" - " domain is the name of the guest\n" - "\n" - "Example:\n" - "\n" - " libvirt-auth 'qemu+libssh2://USER@localhost/system' 'foo'\n" - "\n" - "would connect (read-only) to libvirt URI given and open the guest\n" - "called 'foo' and list some information about its filesystems.\n" - "\n" - "The important point of this example is that any libvirt authentication\n" - "required to connect to the server should be done.\n" - "\n"); + fprintf ( + stderr, + "Usage:\n" + "\n" + " libvirt-auth URI domain\n" + "\n" + "where:\n" + "\n" + " URI is the libvirt URI, eg. " + "qemu+libssh2://USER@localhost/system\n" + " domain is the name of the guest\n" + "\n" + "Example:\n" + "\n" + " libvirt-auth 'qemu+libssh2://USER@localhost/system' 'foo'\n" + "\n" + "would connect (read-only) to libvirt URI given and open the guest\n" + "called 'foo' and list some information about its filesystems.\n" + "\n" + "The important point of this example is that any libvirt " + "authentication\n" + "required to connect to the server should be done.\n" + "\n"); } -static void auth_callback (guestfs_h *g, void *opaque, uint64_t event, int event_handle, int flags, const char *buf, size_t buf_len, const uint64_t *array, size_t array_len); +static void auth_callback (guestfs_h *g, void *opaque, uint64_t event, + int event_handle, int flags, const char *buf, + size_t buf_len, const uint64_t *array, + size_t array_len); int main (int argc, char *argv[]) { const char *uri, *dom; guestfs_h *g; - const char *creds[] = { "authname", "passphrase", - "echoprompt", "noechoprompt", NULL }; + const char *creds[] = { "authname", "passphrase", "echoprompt", + "noechoprompt", NULL }; int r, eh; char **filesystems; size_t i; @@ -59,7 +65,7 @@ main (int argc, char *argv[]) if (!g) exit (EXIT_FAILURE); - r = guestfs_set_libvirt_supported_credentials (g, (char **) creds); + r = guestfs_set_libvirt_supported_credentials (g, (char **)creds); if (r == -1) exit (EXIT_FAILURE); @@ -70,9 +76,7 @@ main (int argc, char *argv[]) exit (EXIT_FAILURE); /* Add the named domain. */ - r = guestfs_add_domain (g, dom, - GUESTFS_ADD_DOMAIN_LIBVIRTURI, uri, - -1); + r = guestfs_add_domain (g, dom, GUESTFS_ADD_DOMAIN_LIBVIRTURI, uri, -1); if (r == -1) exit (EXIT_FAILURE); @@ -86,10 +90,10 @@ main (int argc, char *argv[]) exit (EXIT_FAILURE); for (i = 0; filesystems[i] != NULL; i += 2) { - printf ("%s:%s is a %s filesystem\n", - dom, filesystems[i], filesystems[i+1]); + printf ("%s:%s is a %s filesystem\n", dom, filesystems[i], + filesystems[i + 1]); free (filesystems[i]); - free (filesystems[i+1]); + free (filesystems[i + 1]); } free (filesystems); @@ -97,12 +101,8 @@ main (int argc, char *argv[]) } static void -auth_callback (guestfs_h *g, - void *opaque, - uint64_t event, - int event_handle, - int flags, - const char *buf, size_t buf_len, +auth_callback (guestfs_h *g, void *opaque, uint64_t event, int event_handle, + int flags, const char *buf, size_t buf_len, const uint64_t *array, size_t array_len) { char **creds; @@ -114,8 +114,9 @@ auth_callback (guestfs_h *g, ssize_t len; int r; - printf ("libvirt-auth.c: authentication required for libvirt URI '%s'\n\n", - buf); + printf ( + "libvirt-auth.c: authentication required for libvirt URI '%s'\n\n", + buf); /* Ask libguestfs what credentials libvirt is demanding. */ creds = guestfs_get_libvirt_requested_credentials (g); @@ -123,8 +124,7 @@ auth_callback (guestfs_h *g, exit (EXIT_FAILURE); /* Now ask the user for answers. */ - for (i = 0; creds[i] != NULL; ++i) - { + for (i = 0; creds[i] != NULL; ++i) { printf ("libvirt-auth.c: credential '%s'\n", creds[i]); if (strcmp (creds[i], "authname") == 0 || @@ -139,7 +139,7 @@ auth_callback (guestfs_h *g, perror ("getline"); exit (EXIT_FAILURE); } - if (len > 0 && reply[len-1] == '\n') + if (len > 0 && reply[len - 1] == '\n') reply[--len] = '\0'; r = guestfs_set_libvirt_requested_credential (g, i, reply, len); diff --git a/examples/mount-local.c b/examples/mount-local.c index ce12ffe..53d1372 100644 --- a/examples/mount-local.c +++ b/examples/mount-local.c @@ -32,11 +32,10 @@ static void usage (void) { - fprintf (stderr, - "Usage: mount-local disk.img\n" - "\n" - "NOTE: disk.img will be created or overwritten.\n" - "\n"); + fprintf (stderr, "Usage: mount-local disk.img\n" + "\n" + "NOTE: disk.img will be created or overwritten.\n" + "\n"); } int @@ -58,11 +57,12 @@ main (int argc, char *argv[]) exit (EXIT_FAILURE); } - printf ("\n" - "This is the 'mount-local' demonstration program. Follow the\n" - "instructions on screen.\n" - "\n" - "Creating and formatting the disk image, please wait a moment ...\n"); + printf ( + "\n" + "This is the 'mount-local' demonstration program. Follow the\n" + "instructions on screen.\n" + "\n" + "Creating and formatting the disk image, please wait a moment ...\n"); fflush (stdout); /* Guestfs handle. */ @@ -73,13 +73,14 @@ main (int argc, char *argv[]) } /* Create the output disk image: raw sparse. */ - if (guestfs_disk_create (g, argv[1], "raw", SIZE_MB * 1024 * 1024, -1) == -1) + if (guestfs_disk_create (g, argv[1], "raw", SIZE_MB * 1024 * 1024, -1) == + -1) exit (EXIT_FAILURE); - /* Create the disk image and format it with a partition and a filesystem. */ - if (guestfs_add_drive_opts (g, argv[1], - GUESTFS_ADD_DRIVE_OPTS_FORMAT, "raw", - -1) == -1) + /* Create the disk image and format it with a partition and a filesystem. + */ + if (guestfs_add_drive_opts (g, argv[1], GUESTFS_ADD_DRIVE_OPTS_FORMAT, + "raw", -1) == -1) exit (EXIT_FAILURE); if (guestfs_launch (g) == -1) @@ -116,23 +117,24 @@ main (int argc, char *argv[]) exit (EXIT_FAILURE); } - if (pid == 0) { /* Child. */ + if (pid == 0) { /* Child. */ if (chdir (tempdir) == -1) { perror (tempdir); _exit (EXIT_FAILURE); } - printf ("\n" - "The *current directory* is a FUSE filesystem backed by the disk\n" - "image which is managed by libguestfs. Any files or directories\n" - "you copy into here (up to %d MB) will be saved into the disk\n" - "image. You can also delete files, create certain special files\n" - "and so on.\n" - "\n" - "When you have finished adding files, hit ^D or type 'exit' to\n" - "exit the shell and return to the mount-local program.\n" - "\n", - SIZE_MB); + printf ( + "\n" + "The *current directory* is a FUSE filesystem backed by the disk\n" + "image which is managed by libguestfs. Any files or directories\n" + "you copy into here (up to %d MB) will be saved into the disk\n" + "image. You can also delete files, create certain special files\n" + "and so on.\n" + "\n" + "When you have finished adding files, hit ^D or type 'exit' to\n" + "exit the shell and return to the mount-local program.\n" + "\n", + SIZE_MB); shell = getenv ("SHELL"); if (!shell) @@ -140,7 +142,7 @@ main (int argc, char *argv[]) else { /* Set a magic prompt. We only know how to do this for bash. */ p = strrchr (shell, '/'); - if (p && strcmp (p+1, "bash") == 0) { + if (p && strcmp (p + 1, "bash") == 0) { size_t len = 64 + strlen (shell); char *buf; @@ -149,7 +151,8 @@ main (int argc, char *argv[]) perror ("malloc"); _exit (EXIT_FAILURE); } - snprintf (buf, len, "PS1='mount-local-shell> ' %s --norc -i", shell); + snprintf (buf, len, "PS1='mount-local-shell> ' %s --norc -i", + shell); r = system (buf); free (buf); } else @@ -157,9 +160,9 @@ main (int argc, char *argv[]) } if (r == -1) { fprintf (stderr, "error: failed to run sub-shell (%s) " - "(is $SHELL set correctly?)\n", + "(is $SHELL set correctly?)\n", shell); - //FALLTHROUGH + // FALLTHROUGH } if (chdir ("/") == -1) @@ -191,15 +194,16 @@ main (int argc, char *argv[]) guestfs_close (g); - printf ("\n" - "Any files or directories that you copied in have been saved into\n" - "the disk image called '%s'.\n" - "\n" - "Try opening the disk image with guestfish to see those files:\n" - "\n" - " guestfish -a %s -m /dev/sda1\n" - "\n", - argv[1], argv[1]); + printf ( + "\n" + "Any files or directories that you copied in have been saved into\n" + "the disk image called '%s'.\n" + "\n" + "Try opening the disk image with guestfish to see those files:\n" + "\n" + " guestfish -a %s -m /dev/sda1\n" + "\n", + argv[1], argv[1]); exit (EXIT_SUCCESS); } diff --git a/examples/virt-dhcp-address.c b/examples/virt-dhcp-address.c index df06ebe..bf8ade4 100644 --- a/examples/virt-dhcp-address.c +++ b/examples/virt-dhcp-address.c @@ -23,7 +23,8 @@ static size_t count_strings (char *const *argv); static void free_strings (char **argv); static void mount_disks (guestfs_h *g, char *root); static void print_dhcp_address (guestfs_h *g, char *root); -static void print_dhcp_address_linux (guestfs_h *g, char *root, const char *logfile); +static void print_dhcp_address_linux (guestfs_h *g, char *root, + const char *logfile); static void print_dhcp_address_windows (guestfs_h *g, char *root); int @@ -34,9 +35,10 @@ main (int argc, char *argv[]) char **roots, *root; if (argc < 2) { - fprintf (stderr, - "Usage: virt-dhcp-address disk.img [disk.img [...]]\n" - "Note that all disks must come from a single virtual machine.\n"); + fprintf ( + stderr, + "Usage: virt-dhcp-address disk.img [disk.img [...]]\n" + "Note that all disks must come from a single virtual machine.\n"); exit (EXIT_FAILURE); } @@ -46,12 +48,13 @@ main (int argc, char *argv[]) exit (EXIT_FAILURE); } - for (i = 1; i < (size_t) argc; ++i) { + for (i = 1; i < (size_t)argc; ++i) { /* Attach the disk image(s) read-only to libguestfs. */ - if (guestfs_add_drive_opts (g, argv[i], - /* GUESTFS_ADD_DRIVE_OPTS_FORMAT, "raw", */ - GUESTFS_ADD_DRIVE_OPTS_READONLY, 1, - -1) /* this marks end of optional arguments */ + if (guestfs_add_drive_opts ( + g, argv[i], + /* GUESTFS_ADD_DRIVE_OPTS_FORMAT, "raw", */ + GUESTFS_ADD_DRIVE_OPTS_READONLY, 1, + -1) /* this marks end of optional arguments */ == -1) exit (EXIT_FAILURE); } @@ -110,7 +113,7 @@ mount_disks (guestfs_h *g, char *root) /* Ignore failures from this call, since bogus entries can * appear in the guest's /etc/fstab. */ - guestfs_mount_ro (g, mountpoints[i+1], mountpoints[i]); + guestfs_mount_ro (g, mountpoints[i + 1], mountpoints[i]); } free_strings (mountpoints); @@ -135,25 +138,24 @@ print_dhcp_address (guestfs_h *g, char *root) strcmp (guest_distro, "rhel") == 0 || strcmp (guest_distro, "redhat-based") == 0) { print_dhcp_address_linux (g, root, "/var/log/messages"); - } - else if (strcmp (guest_distro, "debian") == 0 || - strcmp (guest_distro, "ubuntu") == 0) { + } else if (strcmp (guest_distro, "debian") == 0 || + strcmp (guest_distro, "ubuntu") == 0) { print_dhcp_address_linux (g, root, "/var/log/syslog"); - } - else { - fprintf (stderr, "virt-dhcp-address: don't know how to get DHCP address from '%s'\n", + } else { + fprintf (stderr, "virt-dhcp-address: don't know how to get DHCP " + "address from '%s'\n", guest_distro); exit (EXIT_FAILURE); } free (guest_distro); - } - else if (strcmp (guest_type, "windows") == 0) { + } else if (strcmp (guest_type, "windows") == 0) { print_dhcp_address_windows (g, root); - } - else { - fprintf (stderr, "virt-dhcp-address: don't know how to get DHCP address from '%s'\n", - guest_type); + } else { + fprintf ( + stderr, + "virt-dhcp-address: don't know how to get DHCP address from '%s'\n", + guest_type); exit (EXIT_FAILURE); } @@ -169,19 +171,20 @@ print_dhcp_address_linux (guestfs_h *g, char *root, const char *logfile) size_t len; lines = guestfs_grep_opts (g, "dhclient.*: bound to ", logfile, - GUESTFS_GREP_OPTS_EXTENDED, 1, - -1); + GUESTFS_GREP_OPTS_EXTENDED, 1, -1); if (lines == NULL) exit (EXIT_FAILURE); len = count_strings (lines); if (len == 0) { - fprintf (stderr, "virt-dhcp-address: cannot find DHCP address for this guest.\n"); + fprintf ( + stderr, + "virt-dhcp-address: cannot find DHCP address for this guest.\n"); exit (EXIT_FAILURE); } /* Only want the last message. */ - p = strstr (lines[len-1], "bound to "); + p = strstr (lines[len - 1], "bound to "); assert (p); p += 9; len = strcspn (p, " "); @@ -205,7 +208,7 @@ print_dhcp_address_windows (guestfs_h *g, char *root_fs) /* Locate the SYSTEM hive case-sensitive path. */ system_path = - guestfs_case_sensitive_path (g, "/windows/system32/config/system"); + guestfs_case_sensitive_path (g, "/windows/system32/config/system"); if (!system_path) exit (EXIT_FAILURE); @@ -238,7 +241,11 @@ print_dhcp_address_windows (guestfs_h *g, char *root_fs) exit (EXIT_FAILURE); if (node == 0) { - fprintf (stderr, "virt-dhcp-address: HKLM\\System\\%s\\Services\\Tcpip\\Parameters\\Interfaces not found.", controlset); + fprintf (stderr, "virt-dhcp-address: " + "HKLM\\System\\%" + "s\\Services\\Tcpip\\Parameters\\Interfaces not " + "found.", + controlset); exit (EXIT_FAILURE); } @@ -258,7 +265,9 @@ print_dhcp_address_windows (guestfs_h *g, char *root_fs) } if (value == 0) { - fprintf (stderr, "virt-dhcp-address: cannot find DHCP address for this guest.\n"); + fprintf ( + stderr, + "virt-dhcp-address: cannot find DHCP address for this guest.\n"); exit (EXIT_FAILURE); } @@ -282,8 +291,8 @@ print_dhcp_address_windows (guestfs_h *g, char *root_fs) static int compare_keys_len (const void *p1, const void *p2) { - const char *key1 = * (char * const *) p1; - const char *key2 = * (char * const *) p2; + const char *key1 = *(char *const *)p1; + const char *key2 = *(char *const *)p2; return strlen (key1) - strlen (key2); } diff --git a/fish/alloc.c b/fish/alloc.c index 7ec6a15..0bcc73f 100644 --- a/fish/alloc.c +++ b/fish/alloc.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -49,7 +50,8 @@ int run_sparse (const char *cmd, size_t argc, char *argv[]) { if (argc != 2) { - fprintf (stderr, _("use 'sparse file size' to create a sparse image\n")); + fprintf (stderr, + _("use 'sparse file size' to create a sparse image\n")); return -1; } @@ -71,15 +73,14 @@ alloc_disk (const char *filename, const char *size_str, int add, int sparse) if (parse_size (size_str, &size) == -1) return -1; - if (guestfs_disk_create (g, filename, "raw", (int64_t) size, + if (guestfs_disk_create (g, filename, "raw", (int64_t)size, GUESTFS_DISK_CREATE_PREALLOCATION, prealloc, -1) == -1) return -1; if (add) { - if (guestfs_add_drive_opts (g, filename, - GUESTFS_ADD_DRIVE_OPTS_FORMAT, "raw", - -1) == -1) { + if (guestfs_add_drive_opts (g, filename, GUESTFS_ADD_DRIVE_OPTS_FORMAT, + "raw", -1) == -1) { unlink (filename); return -1; } @@ -96,9 +97,8 @@ parse_size (const char *str, off_t *size_rtn) xerr = xstrtoull (str, NULL, 0, &size, "0kKMGTPEZY"); if (xerr != LONGINT_OK) { - fprintf (stderr, - _("%s: invalid integer parameter (%s returned %u)\n"), - "parse_size", "xstrtoull", xerr); + fprintf (stderr, _("%s: invalid integer parameter (%s returned %u)\n"), + "parse_size", "xstrtoull", xerr); return -1; } diff --git a/fish/cmds-gperf.h b/fish/cmds-gperf.h index bcb3b5d..da7ec17 100644 --- a/fish/cmds-gperf.h +++ b/fish/cmds-gperf.h @@ -22,10 +22,11 @@ /* There is one of these structures for each individual command that * guestfish can execute. */ -struct command_entry { - const char *name; /* Short name. */ - const char *help; /* Online help. */ - const char *synopsis; /* Synopsis. */ +struct command_entry +{ + const char *name; /* Short name. */ + const char *help; /* Online help. */ + const char *synopsis; /* Synopsis. */ /* The run_* function. */ int (*run) (const char *cmd, size_t argc, char *argv[]); @@ -35,11 +36,13 @@ struct command_entry { * Multiple rows in this table can and do point to a single command * entry. This is used to implement aliases. */ -struct command_table { +struct command_table +{ char *name; struct command_entry *entry; }; -const struct command_table *lookup_fish_command (register const char *str, register unsigned int len); +const struct command_table *lookup_fish_command (register const char *str, + register unsigned int len); #endif /* FISH_CMDS_GPERF_H */ diff --git a/fish/config.c b/fish/config.c index 4463d9f..6780ee3 100644 --- a/fish/config.c +++ b/fish/config.c @@ -62,10 +62,11 @@ read_config_from_file (const char *filename) */ if (config_read (&conf, fp) == CONFIG_FALSE) { - fprintf (stderr, - _("%s: %s: line %d: error parsing configuration file: %s\n"), - guestfs_int_program_name, filename, config_error_line (&conf), - config_error_text (&conf)); + fprintf ( + stderr, + _("%s: %s: line %d: error parsing configuration file: %s\n"), + guestfs_int_program_name, filename, config_error_line (&conf), + config_error_text (&conf)); exit (EXIT_FAILURE); } @@ -100,7 +101,8 @@ parse_config (void) CLEANUP_FREE char *path = NULL; const char *dir = xdg_config_dirs[i - 1]; - if (asprintf (&path, "%s/libguestfs/" GLOBAL_CONFIG_FILENAME, dir) == -1) + if (asprintf (&path, "%s/libguestfs/" GLOBAL_CONFIG_FILENAME, dir) == + -1) error (EXIT_FAILURE, errno, "asprintf"); read_config_from_file (path); @@ -131,7 +133,8 @@ parse_config (void) xdg_env = getenv ("XDG_CONFIG_HOME"); if (xdg_env == NULL) { - if (asprintf (&path, "%s/.config/libguestfs/" GLOBAL_CONFIG_FILENAME, + if (asprintf (&path, + "%s/.config/libguestfs/" GLOBAL_CONFIG_FILENAME, home_copy) == -1) error (EXIT_FAILURE, errno, "asprintf"); } else { @@ -153,7 +156,8 @@ parse_config (void) /* if (verbose) fprintf (stderr, - _("%s: compiled without libconfig, guestfish configuration file ignored\n"), + _("%s: compiled without libconfig, guestfish configuration file + ignored\n"), guestfs_int_program_name); */ } diff --git a/fish/copy.c b/fish/copy.c index e5655e1..1e45a78 100644 --- a/fish/copy.c +++ b/fish/copy.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -33,19 +34,19 @@ run_copy_in (const char *cmd, size_t argc, char *argv[]) CLEANUP_FREE char *remote = NULL; if (argc < 2) { - fprintf (stderr, - _("use 'copy-in <local> [<local>...] <remotedir>' to copy files into the image\n")); + fprintf (stderr, _("use 'copy-in <local> [<local>...] <remotedir>' to " + "copy files into the image\n")); return -1; } /* Remote directory is always the last arg. * Allow "win:" prefix on remote. */ - remote = win_prefix (argv[argc-1]); + remote = win_prefix (argv[argc - 1]); if (remote == NULL) return -1; - int nr_locals = argc-1; + int nr_locals = argc - 1; /* Upload each local one at a time using copy-in. */ int i; @@ -62,14 +63,14 @@ int run_copy_out (const char *cmd, size_t argc, char *argv[]) { if (argc < 2) { - fprintf (stderr, - _("use 'copy-out <remote> [<remote>...] <localdir>' to copy files out of the image\n")); + fprintf (stderr, _("use 'copy-out <remote> [<remote>...] <localdir>' " + "to copy files out of the image\n")); return -1; } /* Local directory is always the last arg. */ - const char *local = argv[argc-1]; - int nr_remotes = argc-1; + const char *local = argv[argc - 1]; + int nr_remotes = argc - 1; /* Download each remote one at a time using copy-out. */ int i, r; diff --git a/fish/destpaths.c b/fish/destpaths.c index 31dd6a9..51c5849 100644 --- a/fish/destpaths.c +++ b/fish/destpaths.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -45,7 +46,7 @@ sizeof (ptrdiff_t) <= sizeof (size_t), so do not bother to test for exactly-SIZE_MAX allocations on such hosts; this avoids a test and branch when S is known to be 1. */ -# define xalloc_oversized(n, s) \ +#define xalloc_oversized(n, s) \ ((size_t) (sizeof (ptrdiff_t) <= sizeof (size_t) ? -1 : -2) / (s) < (n)) #endif @@ -55,7 +56,8 @@ int complete_dest_paths = 1; -struct word { +struct word +{ char *name; int is_dir; }; @@ -75,8 +77,8 @@ free_words (struct word *words, size_t nr_words) static int compare_words (const void *vp1, const void *vp2) { - const struct word *w1 = (const struct word *) vp1; - const struct word *w2 = (const struct word *) vp2; + const struct word *w1 = (const struct word *)vp1; + const struct word *w2 = (const struct word *)vp2; return strcmp (w1->name, w2->name); } #endif @@ -96,40 +98,42 @@ complete_dest_paths_generator (const char *text, int state) len = strlen (text); index = 0; - if (words) free_words (words, nr_words); + if (words) + free_words (words, nr_words); words = NULL; nr_words = 0; guestfs_push_error_handler (g, NULL, NULL); - /* Silently do nothing if an allocation fails */ -#define APPEND_STRS_AND_FREE \ - do { \ - if (strs) { \ - size_t i; \ - size_t n = guestfs_int_count_strings (strs); \ - \ - if ( n > 0 && ! xalloc_oversized (nr_words + n, sizeof (struct word))) { \ - struct word *w; \ - w = realloc (words, sizeof (struct word) * (nr_words + n)); \ - \ - if (w == NULL) { \ - free_words (words, nr_words); \ - words = NULL; \ - nr_words = 0; \ - } else { \ - words = w; \ - for (i = 0; i < n; ++i) { \ - words[nr_words].name = strs[i]; \ - words[nr_words].is_dir = 0; \ - nr_words++; \ - } \ - } \ - } \ - free (strs); \ - } \ - } while (0) +/* Silently do nothing if an allocation fails */ +#define APPEND_STRS_AND_FREE \ + do { \ + if (strs) { \ + size_t i; \ + size_t n = guestfs_int_count_strings (strs); \ + \ + if (n > 0 && \ + !xalloc_oversized (nr_words + n, sizeof (struct word))) { \ + struct word *w; \ + w = realloc (words, sizeof (struct word) * (nr_words + n)); \ + \ + if (w == NULL) { \ + free_words (words, nr_words); \ + words = NULL; \ + nr_words = 0; \ + } else { \ + words = w; \ + for (i = 0; i < n; ++i) { \ + words[nr_words].name = strs[i]; \ + words[nr_words].is_dir = 0; \ + nr_words++; \ + } \ + } \ + } \ + free (strs); \ + } \ + } while (0) /* Is it a device? */ if (len < 5 || STREQLEN (text, "/dev/", 5)) { @@ -179,23 +183,25 @@ complete_dest_paths_generator (const char *text, int state) else err = asprintf (&p, "%s/%s", dir, dirents->val[i].name); if (err >= 0) { - if (!xalloc_oversized (nr_words+1, sizeof (struct word))) { + if (!xalloc_oversized (nr_words + 1, + sizeof (struct word))) { struct word *w; - w = realloc (words, sizeof (struct word) * (nr_words+1)); + w = realloc (words, + sizeof (struct word) * (nr_words + 1)); if (w == NULL) { free_words (words, nr_words); words = NULL; nr_words = 0; - } - else { + } else { words = w; words[nr_words].name = p; - if (dirents->val[i].ftyp == 'u' - || dirents->val[i].ftyp == 'l' - || dirents->val[i].ftyp == '?') { - int is_dir = guestfs_is_dir_opts (g, words[nr_words].name, - GUESTFS_IS_DIR_OPTS_FOLLOWSYMLINKS, 1, -1); + if (dirents->val[i].ftyp == 'u' || + dirents->val[i].ftyp == 'l' || + dirents->val[i].ftyp == '?') { + int is_dir = guestfs_is_dir_opts ( + g, words[nr_words].name, + GUESTFS_IS_DIR_OPTS_FOLLOWSYMLINKS, 1, -1); words[nr_words].is_dir = is_dir; } else words[nr_words].is_dir = dirents->val[i].ftyp == 'd'; @@ -241,9 +247,8 @@ complete_dest_paths_generator (const char *text, int state) if (cic_var && STREQ (cic_var, "off")) cic = 0; - int matches = - cic ? STRCASEEQLEN (word->name, text, len) - : STREQLEN (word->name, text, len); + int matches = cic ? STRCASEEQLEN (word->name, text, len) + : STREQLEN (word->name, text, len); if (matches) { if (word->is_dir) diff --git a/fish/display.c b/fish/display.c index a1781c5..4f78cde 100644 --- a/fish/display.c +++ b/fish/display.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> diff --git a/fish/domain.c b/fish/domain.c index d3be8e7..966c686 100644 --- a/fish/domain.c +++ b/fish/domain.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -32,7 +33,7 @@ int add_libvirt_drives (guestfs_h *g, const char *guest) { - struct guestfs_add_domain_argv optargs = { .bitmask = 0 }; + struct guestfs_add_domain_argv optargs = {.bitmask = 0 }; if (libvirt_uri) { optargs.bitmask |= GUESTFS_ADD_DOMAIN_LIBVIRTURI_BITMASK; diff --git a/fish/echo.c b/fish/echo.c index 810243b..ae15c89 100644 --- a/fish/echo.c +++ b/fish/echo.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -30,7 +31,8 @@ run_echo (const char *cmd, size_t argc, char *argv[]) size_t i; for (i = 0; i < argc; ++i) { - if (i > 0) printf (" "); + if (i > 0) + printf (" "); printf ("%s", argv[i]); } printf ("\n"); diff --git a/fish/edit.c b/fish/edit.c index bf9fdb5..95e5b4c 100644 --- a/fish/edit.c +++ b/fish/edit.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -55,7 +56,8 @@ run_edit (const char *cmd, size_t argc, char *argv[]) if (remotefilename == NULL) return -1; - r = edit_file_editor (g, remotefilename, editor, NULL, 0 /* not verbose */); + r = edit_file_editor (g, remotefilename, editor, NULL, + 0 /* not verbose */); return r == -1 ? -1 : 0; } diff --git a/fish/events.c b/fish/events.c index 8660fc4..0a085e9 100644 --- a/fish/events.c +++ b/fish/events.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -40,12 +41,13 @@ /* The hash table maps names to multiple (linked list of) event handlers. */ static Hash_table *event_handlers; -struct entry { - struct entry *next; /* Next entry in linked list. */ - char *name; /* Event name. */ - char *command; /* Shell script / command that runs. */ - uint64_t event_bitmask; /* Events this is registered for. */ - int eh; /* Event handle (from guestfs_set_event_callback). */ +struct entry +{ + struct entry *next; /* Next entry in linked list. */ + char *name; /* Event name. */ + char *command; /* Shell script / command that runs. */ + uint64_t event_bitmask; /* Events this is registered for. */ + int eh; /* Event handle (from guestfs_set_event_callback). */ }; static void @@ -80,7 +82,7 @@ init_event_handlers (void) { assert (event_handlers == NULL); event_handlers = - hash_initialize (64, NULL, entry_hash, entry_compare, entry_free); + hash_initialize (64, NULL, entry_hash, entry_compare, entry_free); } void @@ -92,13 +94,9 @@ free_event_handlers (void) } static void -do_event_handler (guestfs_h *g, - void *opaque, - uint64_t event, - int event_handle, - int flags, - const char *buf, size_t buf_len, - const uint64_t *array, size_t array_len) +do_event_handler (guestfs_h *g, void *opaque, uint64_t event, + int event_handle, int flags, const char *buf, + size_t buf_len, const uint64_t *array, size_t array_len) { pid_t pid; CLEANUP_FREE const char **argv = NULL; @@ -119,7 +117,7 @@ do_event_handler (guestfs_h *g, return; } - if (pid == 0) { /* Child process. */ + if (pid == 0) { /* Child process. */ char *str; shell = getenv ("SHELL"); @@ -153,7 +151,7 @@ do_event_handler (guestfs_h *g, argv[i++] = NULL; - execvp (argv[0], (void *) argv); + execvp (argv[0], (void *)argv); perror (argv[0]); _exit (EXIT_FAILURE); @@ -170,8 +168,8 @@ run_event (const char *cmd, size_t argc, char *argv[]) struct entry *entry = NULL, *old_entry; if (argc != 3) { - fprintf (stderr, - _("use 'event <name> <eventset> <script>' to register an event handler\n")); + fprintf (stderr, _("use 'event <name> <eventset> <script>' to " + "register an event handler\n")); goto error; } @@ -197,16 +195,16 @@ run_event (const char *cmd, size_t argc, char *argv[]) goto error; } - entry->eh = - guestfs_set_event_callback (g, do_event_handler, - entry->event_bitmask, 0, entry); + entry->eh = guestfs_set_event_callback (g, do_event_handler, + entry->event_bitmask, 0, entry); if (entry->eh == -1) goto error; - r = hash_insert_if_absent (event_handlers, entry, (const void **) &old_entry); + r = hash_insert_if_absent (event_handlers, entry, + (const void **)&old_entry); if (r == -1) goto error; - if (r == 0) { /* old_entry set to existing entry */ + if (r == 0) { /* old_entry set to existing entry */ entry->next = old_entry->next; /* XXX are we allowed to update the old entry? */ old_entry->next = entry; @@ -214,7 +212,7 @@ run_event (const char *cmd, size_t argc, char *argv[]) return 0; - error: +error: if (entry) { if (entry->eh >= 0) guestfs_delete_event_callback (g, entry->eh); @@ -234,12 +232,13 @@ run_delete_event (const char *cmd, size_t argc, char *argv[]) return -1; } - const struct entry key = { .name = argv[0] }; + const struct entry key = {.name = argv[0] }; struct entry *entry, *p; entry = hash_delete (event_handlers, &key); if (!entry) { - fprintf (stderr, _("delete-event: %s: no such event handler\n"), argv[0]); + fprintf (stderr, _("delete-event: %s: no such event handler\n"), + argv[0]); return -1; } @@ -288,8 +287,7 @@ int run_list_events (const char *cmd, size_t argc, char *argv[]) { if (argc != 0) { - fprintf (stderr, - _("use 'list-events' to list event handlers\n")); + fprintf (stderr, _("use 'list-events' to list event handlers\n")); return -1; } diff --git a/fish/file-edit.c b/fish/file-edit.c index 713b741..333b9ae 100644 --- a/fish/file-edit.c +++ b/fish/file-edit.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -36,9 +37,10 @@ #include "guestfs-internal-frontend.h" -static int do_download (guestfs_h *g, const char *filename, char **tempfile); -static int do_upload (guestfs_h *g, const char *filename, const char *tempfile, - const char *backup_extension); +static int do_download (guestfs_h *g, const char *filename, + char **tempfile); +static int do_upload (guestfs_h *g, const char *filename, + const char *tempfile, const char *backup_extension); static char *generate_random_name (const char *filename); static char *generate_backup_name (const char *filename, const char *backup_extension); @@ -142,18 +144,17 @@ edit_file_perl (guestfs_h *g, const char *filename, const char *perl_expr, setenv ("virt_edit_expr", perl_expr, 1); /* Call out to a canned Perl script. */ - if (asprintf (&cmd, - "perl -e '" - "$lineno = 0; " - "$expr = $ENV{virt_edit_expr}; " - "while (<STDIN>) { " - " $lineno++; " - " eval $expr; " - " die if $@; " - " print STDOUT $_ or die \"print: $!\"; " - "} " - "close STDOUT or die \"close: $!\"; " - "' < %s > %s", + if (asprintf (&cmd, "perl -e '" + "$lineno = 0; " + "$expr = $ENV{virt_edit_expr}; " + "while (<STDIN>) { " + " $lineno++; " + " eval $expr; " + " die if $@; " + " print STDOUT $_ or die \"print: $!\"; " + "} " + "close STDOUT or die \"close: $!\"; " + "' < %s > %s", tmpfilename, outfile) == -1) { perror ("asprintf"); return -1; @@ -252,7 +253,7 @@ do_upload (guestfs_h *g, const char *fn, const char *tempfile, * file to match the old file (RHBZ#788641). */ if (guestfs_copy_attributes (g, filename, newname, - GUESTFS_COPY_ATTRIBUTES_ALL, 1, -1) == -1) + GUESTFS_COPY_ATTRIBUTES_ALL, 1, -1) == -1) return -1; /* Backup or overwrite the file. */ @@ -275,7 +276,8 @@ do_upload (guestfs_h *g, const char *fn, const char *tempfile, static char random_char (void) { - const char c[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; + const char c[] = + "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; return c[random () % (sizeof c - 1)]; } diff --git a/fish/file-edit.h b/fish/file-edit.h index cd92e5a..8ed18f5 100644 --- a/fish/file-edit.h +++ b/fish/file-edit.h @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #ifndef FISH_FILE_EDIT_H @@ -33,8 +34,8 @@ * the file (e.g. the user closed the editor without saving). */ extern int edit_file_editor (guestfs_h *g, const char *filename, - const char *editor, const char *backup_extension, - int verbose); + const char *editor, + const char *backup_extension, int verbose); /** * Edit 'filename' running the specified 'perl_expr' using Perl. diff --git a/fish/fish.c b/fish/fish.c index bfb4f82..4bc78d0 100644 --- a/fish/fish.c +++ b/fish/fish.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -50,7 +51,8 @@ #include "ignore-value.h" /* Return from parse_command_line. See description below. */ -struct parsed_command { +struct parsed_command +{ int status; char *pipe; char *cmd; @@ -64,7 +66,8 @@ static void interactive (void); static void shell_script (void); static void script (int prompt); static void cmdline (char *argv[], size_t optind, size_t argc); -static struct parsed_command parse_command_line (char *buf, int *exit_on_error_rtn); +static struct parsed_command parse_command_line (char *buf, + int *exit_on_error_rtn); static ssize_t parse_quoted_string (char *p); static int execute_and_inline (const char *cmd, int exit_on_error); static void error_cb (guestfs_h *g, void *data, const char *msg); @@ -99,63 +102,67 @@ int is_interactive = 0; const char *input_file = NULL; int input_lineno = 0; -static void __attribute__((noreturn)) -usage (int status) +static void __attribute__ ((noreturn)) usage (int status) { if (status != EXIT_SUCCESS) fprintf (stderr, _("Try `%s --help' for more information.\n"), guestfs_int_program_name); else { - printf (_("%s: guest filesystem shell\n" - "%s lets you edit virtual machine filesystems\n" - "Copyright (C) 2009-2016 Red Hat Inc.\n" - "Usage:\n" - " %s [--options] cmd [: cmd : cmd ...]\n" - "Options:\n" - " -h|--cmd-help List available commands\n" - " -h|--cmd-help cmd Display detailed help on 'cmd'\n" - " -a|--add image Add image\n" - " -c|--connect uri Specify libvirt URI for -d option\n" - " --csh Make --listen csh-compatible\n" - " -d|--domain guest Add disks from libvirt guest\n" - " --echo-keys Don't turn off echo for passphrases\n" - " -f|--file file Read commands from file\n" - " --format[=raw|..] Force disk format for -a option\n" - " -i|--inspector Automatically mount filesystems\n" - " --keys-from-stdin Read passphrases from stdin\n" - " --listen Listen for remote commands\n" - " --live Connect to a live virtual machine\n" - " -m|--mount dev[:mnt[:opts[:fstype]]]\n" - " Mount dev on mnt (if omitted, /)\n" - " --network Enable network\n" - " -N|--new [filename=]type\n" - " Create prepared disk (test<N>.img or filename)\n" - " -n|--no-sync Don't autosync\n" - " --no-dest-paths Don't tab-complete paths from guest fs\n" - " --pipe-error Pipe commands can detect write errors\n" - " --progress-bars Enable progress bars even when not interactive\n" - " --no-progress-bars Disable progress bars\n" - " --remote[=pid] Send commands to remote %s\n" - " -r|--ro Mount read-only\n" - " --selinux Enable SELinux support\n" - " -v|--verbose Verbose messages\n" - " -V|--version Display version and exit\n" - " -w|--rw Mount read-write\n" - " -x Echo each command before executing it\n" - "\n" - "To examine a disk image, ISO, hard disk, filesystem etc:\n" - " %s [--ro|--rw] -i -a /path/to/disk.img\n" - "or\n" - " %s [--ro|--rw] -i -d name-of-libvirt-domain\n" - "\n" - "--ro recommended to avoid any writes to the disk image. If -i option fails\n" - "run again without -i and use 'run' + 'list-filesystems' + 'mount' cmds.\n" - "\n" - "For more information, see the manpage %s(1).\n"), - guestfs_int_program_name, guestfs_int_program_name, - guestfs_int_program_name, guestfs_int_program_name, - guestfs_int_program_name, guestfs_int_program_name, - guestfs_int_program_name); + printf ( + _("%s: guest filesystem shell\n" + "%s lets you edit virtual machine filesystems\n" + "Copyright (C) 2009-2016 Red Hat Inc.\n" + "Usage:\n" + " %s [--options] cmd [: cmd : cmd ...]\n" + "Options:\n" + " -h|--cmd-help List available commands\n" + " -h|--cmd-help cmd Display detailed help on 'cmd'\n" + " -a|--add image Add image\n" + " -c|--connect uri Specify libvirt URI for -d option\n" + " --csh Make --listen csh-compatible\n" + " -d|--domain guest Add disks from libvirt guest\n" + " --echo-keys Don't turn off echo for passphrases\n" + " -f|--file file Read commands from file\n" + " --format[=raw|..] Force disk format for -a option\n" + " -i|--inspector Automatically mount filesystems\n" + " --keys-from-stdin Read passphrases from stdin\n" + " --listen Listen for remote commands\n" + " --live Connect to a live virtual machine\n" + " -m|--mount dev[:mnt[:opts[:fstype]]]\n" + " Mount dev on mnt (if omitted, /)\n" + " --network Enable network\n" + " -N|--new [filename=]type\n" + " Create prepared disk (test<N>.img or " + "filename)\n" + " -n|--no-sync Don't autosync\n" + " --no-dest-paths Don't tab-complete paths from guest fs\n" + " --pipe-error Pipe commands can detect write errors\n" + " --progress-bars Enable progress bars even when not " + "interactive\n" + " --no-progress-bars Disable progress bars\n" + " --remote[=pid] Send commands to remote %s\n" + " -r|--ro Mount read-only\n" + " --selinux Enable SELinux support\n" + " -v|--verbose Verbose messages\n" + " -V|--version Display version and exit\n" + " -w|--rw Mount read-write\n" + " -x Echo each command before executing it\n" + "\n" + "To examine a disk image, ISO, hard disk, filesystem etc:\n" + " %s [--ro|--rw] -i -a /path/to/disk.img\n" + "or\n" + " %s [--ro|--rw] -i -d name-of-libvirt-domain\n" + "\n" + "--ro recommended to avoid any writes to the disk image. If -i " + "option fails\n" + "run again without -i and use 'run' + 'list-filesystems' + " + "'mount' cmds.\n" + "\n" + "For more information, see the manpage %s(1).\n"), + guestfs_int_program_name, guestfs_int_program_name, + guestfs_int_program_name, guestfs_int_program_name, + guestfs_int_program_name, guestfs_int_program_name, + guestfs_int_program_name); } exit (status); } @@ -239,10 +246,11 @@ main (int argc, char *argv[]) for (;;) { c = getopt_long (argc, argv, options, long_options, &option_index); - if (c == -1) break; + if (c == -1) + break; switch (c) { - case 0: /* options which are long only */ + case 0: /* options which are long only */ if (STREQ (long_options[option_index].name, "long-options")) display_long_options (long_options); else if (STREQ (long_options[option_index].name, "short-options")) @@ -264,11 +272,13 @@ main (int argc, char *argv[]) } else if (STREQ (long_options[option_index].name, "selinux")) { if (guestfs_set_selinux (g, 1) == -1) exit (EXIT_FAILURE); - } else if (STREQ (long_options[option_index].name, "keys-from-stdin")) { + } else if (STREQ (long_options[option_index].name, + "keys-from-stdin")) { keys_from_stdin = 1; } else if (STREQ (long_options[option_index].name, "progress-bars")) { override_progress_bars = 1; - } else if (STREQ (long_options[option_index].name, "no-progress-bars")) { + } else if (STREQ (long_options[option_index].name, + "no-progress-bars")) { override_progress_bars = 0; } else if (STREQ (long_options[option_index].name, "echo-keys")) { echo_keys = 1; @@ -286,8 +296,7 @@ main (int argc, char *argv[]) } else if (STREQ (long_options[option_index].name, "no-dest-paths")) { complete_dest_paths = 0; } else - error (EXIT_FAILURE, 0, - _("unknown long option: %s (%d)"), + error (EXIT_FAILURE, 0, _("unknown long option: %s (%d)"), long_options[option_index].name, option_index); break; @@ -304,7 +313,8 @@ main (int argc, char *argv[]) break; case 'D': - fprintf (stderr, _("%s: warning: -D option is deprecated, use --no-dest-paths instead\n"), + fprintf (stderr, _("%s: warning: -D option is deprecated, use " + "--no-dest-paths instead\n"), guestfs_int_program_name); complete_dest_paths = 0; break; @@ -343,10 +353,8 @@ main (int argc, char *argv[]) case 'N': { char *p; - if (STRCASEEQ (optarg, "list") || - STRCASEEQ (optarg, "help") || - STRCASEEQ (optarg, "h") || - STRCASEEQ (optarg, "?")) { + if (STRCASEEQ (optarg, "list") || STRCASEEQ (optarg, "help") || + STRCASEEQ (optarg, "h") || STRCASEEQ (optarg, "?")) { list_prepared_drives (); exit (EXIT_SUCCESS); } @@ -358,7 +366,7 @@ main (int argc, char *argv[]) p = strchr (optarg, '='); if (p != NULL) { *p = '\0'; - p = p+1; + p = p + 1; drv->N.filename = strdup (optarg); if (drv->N.filename == NULL) error (EXIT_FAILURE, errno, "strdup"); @@ -441,7 +449,7 @@ main (int argc, char *argv[]) error (EXIT_FAILURE, errno, "strdup"); drv->next = drvs; drvs = drv; - } else { /* simulate -d option */ + } else { /* simulate -d option */ drv = calloc (1, sizeof (struct drv)); if (!drv) error (EXIT_FAILURE, errno, "calloc"); @@ -477,7 +485,8 @@ main (int argc, char *argv[]) exit (EXIT_FAILURE); } - if (launch () == -1) exit (EXIT_FAILURE); + if (launch () == -1) + exit (EXIT_FAILURE); if (inspector) inspect_mount (); @@ -509,7 +518,7 @@ main (int argc, char *argv[]) /* -f (file) parameter? */ if (file) { close (0); - if (open (file, O_RDONLY|O_CLOEXEC) == -1) + if (open (file, O_RDONLY | O_CLOEXEC) == -1) error (EXIT_FAILURE, errno, "open: %s", file); } @@ -526,10 +535,9 @@ main (int argc, char *argv[]) input_lineno = 0; /* Decide if we display progress bars. */ - progress_bars = - override_progress_bars >= 0 - ? override_progress_bars - : (optind >= argc && is_interactive); + progress_bars = override_progress_bars >= 0 + ? override_progress_bars + : (optind >= argc && is_interactive); if (progress_bars) { bar = progress_bar_init (0); @@ -546,8 +554,7 @@ main (int argc, char *argv[]) interactive (); else shell_script (); - } - else + } else cmdline (argv, optind, argc); if (guestfs_shutdown (g) == -1) @@ -555,7 +562,7 @@ main (int argc, char *argv[]) guestfs_close (g); - out_after_handle_close: +out_after_handle_close: cleanup_readline (); if (progress_bars) @@ -612,7 +619,7 @@ static char *ps1 = NULL; /* GUESTFISH_PS1 */ static char *ps_output = NULL; /* GUESTFISH_OUTPUT */ static char *ps_init = NULL; /* GUESTFISH_INIT */ static char *ps_restore = NULL; /* GUESTFISH_RESTORE */ -#endif /* HAVE_LIBREADLINE */ +#endif /* HAVE_LIBREADLINE */ static char *line_read = NULL; static char * @@ -630,7 +637,7 @@ rl_gets (int prompt) p = ps1 ? decode_ps1 (ps1) : NULL; line_read = readline (ps1 ? p : FISH); - if (ps_output) { /* GUESTFISH_OUTPUT */ + if (ps_output) { /* GUESTFISH_OUTPUT */ CLEANUP_FREE char *po = decode_ps1 (ps_output); printf ("%s", po); } @@ -646,12 +653,14 @@ rl_gets (int prompt) static char buf[8192]; size_t len; - if (prompt) printf (FISH); + if (prompt) + printf (FISH); line_read = fgets (buf, sizeof buf, stdin); if (line_read) { len = strlen (line_read); - if (len > 0 && buf[len-1] == '\n') buf[len-1] = '\0'; + if (len > 0 && buf[len - 1] == '\n') + buf[len - 1] = '\0'; } return line_read; @@ -667,7 +676,7 @@ script (int prompt) if (prompt) { #ifdef HAVE_LIBREADLINE - if (ps_init) { /* GUESTFISH_INIT */ + if (ps_init) { /* GUESTFISH_INIT */ CLEANUP_FREE char *pi = decode_ps1 (ps_init); printf ("%s", pi); } @@ -703,8 +712,10 @@ script (int prompt) if (pcmd.status == -1 && exit_on_error) exit (EXIT_FAILURE); if (pcmd.status == 1) { - if (issue_command (pcmd.cmd, pcmd.argv, pcmd.pipe, exit_on_error) == -1) { - if (exit_on_error) exit (EXIT_FAILURE); + if (issue_command (pcmd.cmd, pcmd.argv, pcmd.pipe, exit_on_error) == + -1) { + if (exit_on_error) + exit (EXIT_FAILURE); } } } @@ -712,7 +723,7 @@ script (int prompt) #ifdef HAVE_LIBREADLINE if (prompt) { printf ("\n"); - if (ps_restore) { /* GUESTFISH_RESTORE */ + if (ps_restore) { /* GUESTFISH_RESTORE */ CLEANUP_FREE char *pr = decode_ps1 (ps_restore); printf ("%s", pr); } @@ -747,7 +758,7 @@ parse_command_line (char *buf, int *exit_on_error_rtn) */ memset (&pcmd, 0, sizeof pcmd); - again: +again: /* Skip any initial whitespace before the command. */ while (*buf && c_isspace (*buf)) buf++; @@ -765,10 +776,9 @@ parse_command_line (char *buf, int *exit_on_error_rtn) /* If the next character is '!' then pass the whole lot to system(3). */ if (*buf == '!') { - r = system (buf+1); - if (r == -1 || - (WIFSIGNALED (r) && - (WTERMSIG (r) == SIGINT || WTERMSIG (r) == SIGQUIT)) || + r = system (buf + 1); + if (r == -1 || (WIFSIGNALED (r) && + (WTERMSIG (r) == SIGINT || WTERMSIG (r) == SIGQUIT)) || WEXITSTATUS (r) != 0) pcmd.status = -1; else @@ -814,7 +824,7 @@ parse_command_line (char *buf, int *exit_on_error_rtn) } buf[len] = '\0'; - p = &buf[len+1]; + p = &buf[len + 1]; p += strspn (p, " \t"); /* Get the parameters. */ @@ -831,23 +841,24 @@ parse_command_line (char *buf, int *exit_on_error_rtn) pcmd.status = -1; return pcmd; } - if (p[len+1] && (p[len+1] != ' ' && p[len+1] != '\t')) { + if (p[len + 1] && (p[len + 1] != ' ' && p[len + 1] != '\t')) { fprintf (stderr, _("%s: command arguments not separated by whitespace\n"), guestfs_int_program_name); pcmd.status = -1; return pcmd; } - pend = p[len+1] ? &p[len+2] : &p[len+1]; + pend = p[len + 1] ? &p[len + 2] : &p[len + 1]; } else if (*p == '\'') { p++; len = strcspn (p, "'"); if (p[len] == '\0') { - fprintf (stderr, _("%s: unterminated single quote\n"), guestfs_int_program_name); + fprintf (stderr, _("%s: unterminated single quote\n"), + guestfs_int_program_name); pcmd.status = -1; return pcmd; } - if (p[len+1] && (p[len+1] != ' ' && p[len+1] != '\t')) { + if (p[len + 1] && (p[len + 1] != ' ' && p[len + 1] != '\t')) { fprintf (stderr, _("%s: command arguments not separated by whitespace\n"), guestfs_int_program_name); @@ -855,10 +866,10 @@ parse_command_line (char *buf, int *exit_on_error_rtn) return pcmd; } p[len] = '\0'; - pend = p[len+1] ? &p[len+2] : &p[len+1]; + pend = p[len + 1] ? &p[len + 2] : &p[len + 1]; } else if (*p == '|') { *p = '\0'; - pcmd.pipe = p+1; + pcmd.pipe = p + 1; continue; } else if (*p != ' ' && *p != '\t') { /* If the first character is a ~ then note that this parameter @@ -869,7 +880,7 @@ parse_command_line (char *buf, int *exit_on_error_rtn) len = strcspn (p, " \t"); if (p[len]) { p[len] = '\0'; - pend = &p[len+1]; + pend = &p[len + 1]; } else pend = &p[len]; } else { @@ -890,7 +901,8 @@ parse_command_line (char *buf, int *exit_on_error_rtn) } if (i == argv_len) { - fprintf (stderr, _("%s: too many arguments\n"), guestfs_int_program_name); + fprintf (stderr, _("%s: too many arguments\n"), + guestfs_int_program_name); pcmd.status = -1; return pcmd; } @@ -905,10 +917,14 @@ static int hexdigit (char d) { switch (d) { - case '0'...'9': return d - '0'; - case 'a'...'f': return d - 'a' + 10; - case 'A'...'F': return d - 'A' + 10; - default: return -1; + case '0' ... '9': + return d - '0'; + case 'a' ... 'f': + return d - 'a' + 10; + case 'A' ... 'F': + return d - 'A' + 10; + default: + return -1; } } @@ -926,55 +942,75 @@ parse_quoted_string (char *p) int m = 1, c; switch (p[1]) { - case '\\': break; - case 'a': *p = '\a'; break; - case 'b': *p = '\b'; break; - case 'f': *p = '\f'; break; - case 'n': *p = '\n'; break; - case 'r': *p = '\r'; break; - case 't': *p = '\t'; break; - case 'v': *p = '\v'; break; - case '"': *p = '"'; break; - case '\'': *p = '\''; break; - case '?': *p = '?'; break; + case '\\': + break; + case 'a': + *p = '\a'; + break; + case 'b': + *p = '\b'; + break; + case 'f': + *p = '\f'; + break; + case 'n': + *p = '\n'; + break; + case 'r': + *p = '\r'; + break; + case 't': + *p = '\t'; + break; + case 'v': + *p = '\v'; + break; + case '"': + *p = '"'; + break; + case '\'': + *p = '\''; + break; + case '?': + *p = '?'; + break; - case '0'...'7': /* octal escape - always 3 digits */ + case '0' ... '7': /* octal escape - always 3 digits */ m = 3; - if (p[2] >= '0' && p[2] <= '7' && - p[3] >= '0' && p[3] <= '7') { + if (p[2] >= '0' && p[2] <= '7' && p[3] >= '0' && p[3] <= '7') { c = (p[1] - '0') * 0100 + (p[2] - '0') * 010 + (p[3] - '0'); if (c < 1 || c > 255) goto error; *p = c; - } - else + } else goto error; break; - case 'x': /* hex escape - always 2 digits */ + case 'x': /* hex escape - always 2 digits */ m = 3; if (c_isxdigit (p[2]) && c_isxdigit (p[3])) { c = hexdigit (p[2]) * 0x10 + hexdigit (p[3]); if (c < 1 || c > 255) goto error; *p = c; - } - else + } else goto error; break; default: error: - fprintf (stderr, _("%s: invalid escape sequence in string (starting at offset %d)\n"), - guestfs_int_program_name, (int) (p - start)); + fprintf (stderr, _("%s: invalid escape sequence in string " + "(starting at offset %d)\n"), + guestfs_int_program_name, (int)(p - start)); return -1; } - memmove (p+1, p+1+m, strlen (p+1+m) + 1); + memmove (p + 1, p + 1 + m, strlen (p + 1 + m) + 1); } } if (!*p) { - fprintf (stderr, _("%s: unterminated double quote\n"), guestfs_int_program_name); + fprintf (stderr, _("%s: unterminated double quote\n"), + guestfs_int_program_name); return -1; } @@ -1003,15 +1039,17 @@ execute_and_inline (const char *cmd, int global_exit_on_error) exit_on_error = global_exit_on_error; /* Chomp final line ending which parse_command_line would not expect. */ - if (n > 0 && line[n-1] == '\n') - line[n-1] = '\0'; + if (n > 0 && line[n - 1] == '\n') + line[n - 1] = '\0'; pcmd = parse_command_line (line, &exit_on_error); if (pcmd.status == -1 && exit_on_error) exit (EXIT_FAILURE); if (pcmd.status == 1) { - if (issue_command (pcmd.cmd, pcmd.argv, pcmd.pipe, exit_on_error) == -1) { - if (exit_on_error) exit (EXIT_FAILURE); + if (issue_command (pcmd.cmd, pcmd.argv, pcmd.pipe, exit_on_error) == + -1) { + if (exit_on_error) + exit (EXIT_FAILURE); } } } @@ -1033,7 +1071,8 @@ cmdline (char *argv[], size_t optind, size_t argc) exit_on_error = 1; - if (optind >= argc) return; + if (optind >= argc) + return; cmd = argv[optind++]; if (STREQ (cmd, ":")) @@ -1054,13 +1093,15 @@ cmdline (char *argv[], size_t optind, size_t argc) optind++; if (optind == argc) { - if (issue_command (cmd, params, NULL, exit_on_error) == -1 && exit_on_error) + if (issue_command (cmd, params, NULL, exit_on_error) == -1 && + exit_on_error) exit (EXIT_FAILURE); } else { argv[optind] = NULL; - if (issue_command (cmd, params, NULL, exit_on_error) == -1 && exit_on_error) + if (issue_command (cmd, params, NULL, exit_on_error) == -1 && + exit_on_error) exit (EXIT_FAILURE); - cmdline (argv, optind+1, argc); + cmdline (argv, optind + 1, argc); } } @@ -1101,7 +1142,7 @@ issue_command (const char *cmd, char *argv[], const char *pipecmd, return -1; } - if (pid == 0) { /* Child process. */ + if (pid == 0) { /* Child process. */ close (fd[1]); if (dup2 (fd[0], 0) < 0) { perror ("dup2 of stdin failed"); @@ -1143,14 +1184,11 @@ issue_command (const char *cmd, char *argv[], const char *pipecmd, r = 0; } else r = display_command (argv[0]); - } - else if (STRCASEEQ (cmd, "quit") || - STRCASEEQ (cmd, "exit") || - STRCASEEQ (cmd, "q")) { + } else if (STRCASEEQ (cmd, "quit") || STRCASEEQ (cmd, "exit") || + STRCASEEQ (cmd, "q")) { quit = 1; r = 0; - } - else + } else r = run_action (cmd, argc, argv); /* Always flush stdout after every command, so that messages, results @@ -1192,10 +1230,9 @@ void list_builtin_commands (void) { /* help and quit should appear at the top */ - printf ("%-20s %s\n", - "help", _("display a list of commands or help on a command")); - printf ("%-20s %s\n", - "quit", _("quit guestfish")); + printf ("%-20s %s\n", "help", + _("display a list of commands or help on a command")); + printf ("%-20s %s\n", "quit", _("quit guestfish")); /* actions are printed after this (see list_commands) */ } @@ -1210,16 +1247,14 @@ display_builtin_command (const char *cmd) " help cmd\n" " help\n")); return 0; - } - else if (STRCASEEQ (cmd, "quit") || - STRCASEEQ (cmd, "exit") || - STRCASEEQ (cmd, "q")) { + } else if (STRCASEEQ (cmd, "quit") || STRCASEEQ (cmd, "exit") || + STRCASEEQ (cmd, "q")) { printf (_("quit - quit guestfish\n" " quit\n")); return 0; - } - else { - fprintf (stderr, _("%s: command not known, use -h to list all commands\n"), + } else { + fprintf (stderr, + _("%s: command not known, use -h to list all commands\n"), cmd); return -1; } @@ -1244,8 +1279,8 @@ extended_help_message (void) static void error_cb (guestfs_h *g, void *data, const char *msg) { - fprintf (stderr, _("%s:%d: libguestfs: error: %s\n"), - input_file, input_lineno, msg); + fprintf (stderr, _("%s:%d: libguestfs: error: %s\n"), input_file, + input_lineno, msg); } void @@ -1263,7 +1298,7 @@ print_table (char *const *argv) size_t i; for (i = 0; argv[i] != NULL; i += 2) - printf ("%s: %s\n", argv[i], argv[i+1]); + printf ("%s: %s\n", argv[i], argv[i + 1]); } /* Free strings from a non-NULL terminated char** */ @@ -1294,7 +1329,8 @@ parse_string_list (const char *str) * or contain embedded single-quoted sections: * This' is a sing'l'e to'ken * - * The latter may seem over-complicated, but it's what a normal shell does. + * The latter may seem over-complicated, but it's what a normal shell + * does. * Not doing it risks surprising somebody. * * This outer loop is over complete tokens. @@ -1308,9 +1344,12 @@ parse_string_list (const char *str) char in_quote = 0; - /* This loop is over token 'fragments'. A token can be in multiple bits if - * it contains single quotes. We also treat both sides of an escaped quote - * as separate fragments because we can't just copy it: we have to remove + /* This loop is over token 'fragments'. A token can be in multiple bits + * if + * it contains single quotes. We also treat both sides of an escaped + * quote + * as separate fragments because we can't just copy it: we have to + * remove * the \. */ while (*p && (!c_isblank (*p) || in_quote)) { @@ -1322,7 +1361,8 @@ parse_string_list (const char *str) in_quote = !in_quote; /* Skip the quote */ - p++; end++; + p++; + end++; } /* If we're in a quote, look for an end quote */ @@ -1348,12 +1388,12 @@ parse_string_list (const char *str) tok = tok_new; /* Check if we stopped on an escaped quote */ - if ('\'' == *end && end != p && *(end-1) == '\\') { + if ('\'' == *end && end != p && *(end - 1) == '\\') { /* Add everything before \' to the token */ memcpy (&tok[tok_end], p, end - p - 1); /* Add the quote */ - tok[tok_len-1] = '\''; + tok[tok_len - 1] = '\''; /* Already processed the quote */ p = end + 1; @@ -1386,13 +1426,13 @@ parse_string_list (const char *str) char **argv_new = realloc (argv, sizeof (*argv) * argv_len); if (NULL == argv_new) { perror ("realloc"); - free_n_strings (argv, argv_len-1); + free_n_strings (argv, argv_len - 1); free (tok); exit (EXIT_FAILURE); } argv = argv_new; - argv[argv_len-1] = tok; + argv[argv_len - 1] = tok; } } @@ -1401,12 +1441,12 @@ parse_string_list (const char *str) char **argv_new = realloc (argv, sizeof (*argv) * argv_len); if (NULL == argv_new) { perror ("realloc"); - free_n_strings (argv, argv_len-1); + free_n_strings (argv, argv_len - 1); exit (EXIT_FAILURE); } argv = argv_new; - argv[argv_len-1] = NULL; + argv[argv_len - 1] = NULL; return argv; } @@ -1430,14 +1470,14 @@ initialize_readline (void) * provide default values which can be overridden by the user if * they wish. */ - (void) rl_variable_bind ("completion-ignore-case", "on"); + (void)rl_variable_bind ("completion-ignore-case", "on"); /* Set up the history file. */ str = getenv ("HOME"); if (str) { snprintf (histfile, sizeof histfile, "%s/.guestfish", str); using_history (); - (void) read_history (histfile); + (void)read_history (histfile); } /* Set up the prompt. */ @@ -1474,7 +1514,7 @@ cleanup_readline (void) int fd; if (histfile[0] != '\0') { - fd = open (histfile, O_WRONLY|O_CREAT|O_NOCTTY|O_CLOEXEC, 0600); + fd = open (histfile, O_WRONLY | O_CREAT | O_NOCTTY | O_CLOEXEC, 0600); if (fd == -1) { perror (histfile); return; @@ -1482,9 +1522,9 @@ cleanup_readline (void) close (fd); #ifdef HAVE_APPEND_HISTORY - (void) append_history (nr_history_lines, histfile); + (void)append_history (nr_history_lines, histfile); #else - (void) write_history (histfile); + (void)write_history (histfile); #endif clear_history (); } @@ -1519,8 +1559,8 @@ decode_ps1 (const char *str) error (EXIT_FAILURE, errno, "malloc"); for (i = j = 0; i < len; ++i) { - if (str[i] == '\\') { /* Start of an escape sequence. */ - if (i < len-1) + if (str[i] == '\\') { /* Start of an escape sequence. */ + if (i < len - 1) i++; switch (str[i]) { case '\\': @@ -1544,7 +1584,7 @@ decode_ps1 (const char *str) case 'r': ret[j++] = '\r'; break; - case '0'...'7': + case '0' ... '7': ret[j++] = decode_ps1_octal (str, &i); i--; break; @@ -1556,13 +1596,12 @@ decode_ps1 (const char *str) default: ret[j++] = '?'; } - } - else + } else ret[j++] = str[i]; } ret[j] = '\0'; - return ret; /* caller frees */ + return ret; /* caller frees */ } static int @@ -1599,7 +1638,7 @@ decode_ps1_hex (const char *s, size_t *i) lim--; } - if (lim == 2) /* \x not followed by any hex digits */ + if (lim == 2) /* \x not followed by any hex digits */ return '?'; return ret; @@ -1639,7 +1678,8 @@ win_prefix (const char *path) char *ret; size_t i; - /* If there is not a "win:..." prefix on the path, return strdup'd string. */ + /* If there is not a "win:..." prefix on the path, return strdup'd string. + */ if (STRCASENEQLEN (path, "win:", 4)) { ret = strdup (path); if (ret == NULL) @@ -1656,15 +1696,13 @@ win_prefix (const char *path) ret = win_prefix_drive_letter (drive_letter, path + 2); if (ret == NULL) return NULL; - } - else if (!*path) { + } else if (!*path) { ret = strdup ("/"); if (ret == NULL) { perror ("strdup"); return NULL; } - } - else { + } else { ret = strdup (path); if (ret == NULL) { perror ("strdup"); @@ -1698,13 +1736,16 @@ win_prefix_drive_letter (char drive_letter, const char *path) if (roots == NULL) return NULL; if (roots[0] == NULL) { - fprintf (stderr, _("%s: to use Windows drive letters, you must inspect the guest (\"-i\" option or run \"inspect-os\" command)\n"), + fprintf (stderr, + _("%s: to use Windows drive letters, you must inspect the " + "guest (\"-i\" option or run \"inspect-os\" command)\n"), guestfs_int_program_name); return NULL; } drives = guestfs_inspect_get_drive_mappings (g, roots[0]); if (drives == NULL || drives[0] == NULL) { - fprintf (stderr, _("%s: to use Windows drive letters, this must be a Windows guest\n"), + fprintf (stderr, _("%s: to use Windows drive letters, this must be a " + "Windows guest\n"), guestfs_int_program_name); return NULL; } @@ -1712,13 +1753,14 @@ win_prefix_drive_letter (char drive_letter, const char *path) device = NULL; for (i = 0; drives[i] != NULL; i += 2) { if (c_tolower (drives[i][0]) == drive_letter && drives[i][1] == '\0') { - device = drives[i+1]; + device = drives[i + 1]; break; } } if (device == NULL) { - fprintf (stderr, _("%s: drive '%c:' not found. To list available drives do:\n inspect-get-drive-mappings %s\n"), + fprintf (stderr, _("%s: drive '%c:' not found. To list available " + "drives do:\n inspect-get-drive-mappings %s\n"), guestfs_int_program_name, drive_letter, roots[0]); return NULL; } @@ -1731,20 +1773,21 @@ win_prefix_drive_letter (char drive_letter, const char *path) mountpoint = NULL; for (i = 0; mountpoints[i] != NULL; i += 2) { if (STREQ (mountpoints[i], device)) { - mountpoint = mountpoints[i+1]; + mountpoint = mountpoints[i + 1]; break; } } if (mountpoint == NULL) { - fprintf (stderr, _("%s: to access '%c:', mount %s first. One way to do this is:\n umount-all\n mount %s /\n"), + fprintf (stderr, _("%s: to access '%c:', mount %s first. One way to " + "do this is:\n umount-all\n mount %s /\n"), guestfs_int_program_name, drive_letter, device, device); return NULL; } /* Rewrite the path, eg. if C: => /c then C:/foo => /c/foo */ - if (asprintf (&ret, "%s%s%s", - mountpoint, STRNEQ (mountpoint, "/") ? "/" : "", path) == -1) { + if (asprintf (&ret, "%s%s%s", mountpoint, + STRNEQ (mountpoint, "/") ? "/" : "", path) == -1) { perror ("asprintf"); return NULL; } @@ -1770,8 +1813,7 @@ file_in (const char *arg) perror ("strdup"); return NULL; } - } - else if (STRPREFIX (arg, "-<<")) { + } else if (STRPREFIX (arg, "-<<")) { const char *endmarker = &arg[3]; if (*endmarker == '\0') { fprintf (stderr, "%s: missing end marker in -<< expression\n", @@ -1781,8 +1823,7 @@ file_in (const char *arg) ret = file_in_heredoc (endmarker); if (ret == NULL) return NULL; - } - else { + } else { ret = strdup (arg); if (!ret) { perror ("strdup"); @@ -1832,11 +1873,12 @@ file_in_heredoc (const char *endmarker) size_t blen = strlen (buffer); if (STREQLEN (buffer, endmarker, markerlen) && (blen == markerlen || - (blen == markerlen+1 && buffer[markerlen] == '\n'))) + (blen == markerlen + 1 && buffer[markerlen] == '\n'))) goto found_end; if (xwrite (fd, buffer, blen) == -1) { - if (!write_error) perror ("write"); + if (!write_error) + perror ("write"); write_error = 1; /* continue reading up to the end marker */ } @@ -1849,7 +1891,7 @@ file_in_heredoc (const char *endmarker) guestfs_int_program_name, endmarker); goto error2; - found_end: +found_end: if (write_error) { close (fd); goto error2; @@ -1862,10 +1904,10 @@ file_in_heredoc (const char *endmarker) return file_in_tmpfile; - error2: +error2: unlink (file_in_tmpfile); - error1: +error1: free (file_in_tmpfile); file_in_tmpfile = NULL; return NULL; @@ -1909,10 +1951,9 @@ file_out (const char *arg) /* Callback which displays a progress bar. */ void -progress_callback (guestfs_h *g, void *data, - uint64_t event, int event_handle, int flags, - const char *buf, size_t buf_len, - const uint64_t *array, size_t array_len) +progress_callback (guestfs_h *g, void *data, uint64_t event, + int event_handle, int flags, const char *buf, + size_t buf_len, const uint64_t *array, size_t array_len) { if (array_len < 4) return; diff --git a/fish/fish.h b/fish/fish.h index df22e34..5bb0265 100644 --- a/fish/fish.h +++ b/fish/fish.h @@ -36,7 +36,8 @@ extern int remote_control_csh; extern const char *libvirt_uri; extern int input_lineno; -extern int issue_command (const char *cmd, char *argv[], const char *pipe, int rc_exit_on_error_flag); +extern int issue_command (const char *cmd, char *argv[], const char *pipe, + int rc_exit_on_error_flag); extern void list_builtin_commands (void); extern int display_builtin_command (const char *cmd); extern void print_strings (char *const *argv); @@ -49,7 +50,10 @@ extern char *file_in (const char *arg); extern void free_file_in (char *s); extern char *file_out (const char *arg); extern void extended_help_message (void); -extern void progress_callback (guestfs_h *g, void *data, uint64_t event, int event_handle, int flags, const char *buf, size_t buf_len, const uint64_t *array, size_t array_len); +extern void progress_callback (guestfs_h *g, void *data, uint64_t event, + int event_handle, int flags, const char *buf, + size_t buf_len, const uint64_t *array, + size_t array_len); /* in cmds.c (auto-generated) */ extern void list_commands (void); @@ -71,15 +75,16 @@ extern void free_event_handlers (void); extern int event_bitmask_of_event_set (const char *arg, uint64_t *); /* in alloc.c */ -extern int alloc_disk (const char *filename, const char *size, - int add, int sparse); +extern int alloc_disk (const char *filename, const char *size, int add, + int sparse); extern int parse_size (const char *str, off_t *size_rtn); /* in help.c */ extern void display_help (void); /* in prep.c */ -struct prep_data { +struct prep_data +{ const struct prep *prep; const char *orig_type_string; char **params; @@ -90,7 +95,9 @@ extern prep_data *create_prepared_file (const char *type_string, const char *filename); extern void prepare_drive (const char *filename, prep_data *data, const char *device); -extern void prep_error (prep_data *data, const char *filename, const char *fs, ...) __attribute__((noreturn, format (printf,3,4))); +extern void prep_error (prep_data *data, const char *filename, + const char *fs, ...) + __attribute__ ((noreturn, format (printf, 3, 4))); extern void free_prep_data (void *data); /* in prep_lv.c */ @@ -107,8 +114,6 @@ extern char *try_tilde_expansion (char *path); /* This should just list all the built-in commands so they can * be added to the generated auto-completion code. */ -#define BUILTIN_COMMANDS_FOR_COMPLETION \ - "help", \ - "quit", "exit", "q" +#define BUILTIN_COMMANDS_FOR_COMPLETION "help", "quit", "exit", "q" #endif /* FISH_H */ diff --git a/fish/glob.c b/fish/glob.c index 5bf1ad6..82e964f 100644 --- a/fish/glob.c +++ b/fish/glob.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -34,10 +35,12 @@ static char **expand_pathname (guestfs_h *g, const char *path); static char **expand_devicename (guestfs_h *g, const char *device); -static int add_strings_matching (char **pp, const char *glob, char ***ret, size_t *size_r); +static int add_strings_matching (char **pp, const char *glob, char ***ret, + size_t *size_r); static int add_string (const char *str, char ***ret, size_t *size_r); static char **single_element_list (const char *element); -static int glob_issue (char *cmd, size_t argc, char ***globs, size_t *posn, size_t *count, int *r); +static int glob_issue (char *cmd, size_t argc, char ***globs, size_t *posn, + size_t *count, int *r); int run_glob (const char *cmd, size_t argc, char *argv[]) @@ -120,8 +123,8 @@ run_glob (const char *cmd, size_t argc, char *argv[]) goto error; } - /* Free resources. */ - error: +/* Free resources. */ +error: for (i = 1; i < argc; ++i) if (globs[i]) guestfs_int_free_string_list (globs[i]); @@ -134,8 +137,9 @@ expand_pathname (guestfs_h *g, const char *path) char **pp; pp = guestfs_glob_expand (g, path); - if (pp == NULL) { /* real error in glob_expand */ - fprintf (stderr, _("glob: guestfs_glob_expand call failed: %s\n"), path); + if (pp == NULL) { /* real error in glob_expand */ + fprintf (stderr, _("glob: guestfs_glob_expand call failed: %s\n"), + path); return NULL; } @@ -179,24 +183,32 @@ expand_devicename (guestfs_h *g, const char *device) const char *lvm2[] = { "lvm2", NULL }; pp = guestfs_list_devices (g); - if (pp == NULL) goto error; - if (add_strings_matching (pp, device, &ret, &size) == -1) goto error; + if (pp == NULL) + goto error; + if (add_strings_matching (pp, device, &ret, &size) == -1) + goto error; guestfs_int_free_string_list (pp); pp = guestfs_list_partitions (g); - if (pp == NULL) goto error; - if (add_strings_matching (pp, device, &ret, &size) == -1) goto error; + if (pp == NULL) + goto error; + if (add_strings_matching (pp, device, &ret, &size) == -1) + goto error; guestfs_int_free_string_list (pp); pp = guestfs_list_md_devices (g); - if (pp == NULL) goto error; - if (add_strings_matching (pp, device, &ret, &size) == -1) goto error; + if (pp == NULL) + goto error; + if (add_strings_matching (pp, device, &ret, &size) == -1) + goto error; guestfs_int_free_string_list (pp); - if (guestfs_feature_available (g, (char **) lvm2)) { + if (guestfs_feature_available (g, (char **)lvm2)) { pp = guestfs_lvs (g); - if (pp == NULL) goto error; - if (add_strings_matching (pp, device, &ret, &size) == -1) goto error; + if (pp == NULL) + goto error; + if (add_strings_matching (pp, device, &ret, &size) == -1) + goto error; guestfs_int_free_string_list (pp); pp = NULL; } @@ -206,7 +218,7 @@ expand_devicename (guestfs_h *g, const char *device) ret = single_element_list (device); return ret; - error: +error: if (pp) guestfs_int_free_string_list (pp); if (ret) @@ -221,8 +233,8 @@ expand_devicename (guestfs_h *g, const char *device) * size. */ static int -add_strings_matching (char **pp, const char *glob, - char ***ret, size_t *size_r) +add_strings_matching (char **pp, const char *glob, char ***ret, + size_t *size_r) { size_t i; int r; @@ -230,17 +242,16 @@ add_strings_matching (char **pp, const char *glob, for (i = 0; pp[i] != NULL; ++i) { errno = 0; r = fnmatch (glob, pp[i], FNM_PATHNAME); - if (r == 0) { /* matches - add it */ + if (r == 0) { /* matches - add it */ if (add_string (pp[i], ret, size_r) == -1) return -1; - } - else if (r != FNM_NOMATCH) { /* error */ + } else if (r != FNM_NOMATCH) { /* error */ /* I checked the glibc impl and it returns random negative * numbers for errors. It doesn't always set errno. Do our * best here to record the error state. */ - fprintf (stderr, "glob: fnmatch: error (r = %d, errno = %d)\n", - r, errno); + fprintf (stderr, "glob: fnmatch: error (r = %d, errno = %d)\n", r, + errno); return -1; } } @@ -297,14 +308,13 @@ single_element_list (const char *element) } static int -glob_issue (char *cmd, size_t argc, - char ***globs, size_t *posn, size_t *count, - int *r) +glob_issue (char *cmd, size_t argc, char ***globs, size_t *posn, + size_t *count, int *r) { size_t i; CLEANUP_FREE char **argv = NULL; - argv = malloc (sizeof (char *) * (argc+1)); + argv = malloc (sizeof (char *) * (argc + 1)); if (argv == NULL) { perror ("malloc"); return -1; @@ -313,20 +323,20 @@ glob_issue (char *cmd, size_t argc, argv[0] = cmd; argv[argc] = NULL; - again: +again: for (i = 1; i < argc; ++i) argv[i] = globs[i][posn[i]]; if (issue_command (argv[0], &argv[1], NULL, 0) == -1) - *r = -1; /* ... but don't exit */ + *r = -1; /* ... but don't exit */ - for (i = argc-1; i >= 1; --i) { + for (i = argc - 1; i >= 1; --i) { posn[i]++; if (posn[i] < count[i]) break; posn[i] = 0; } - if (i == 0) /* All done. */ + if (i == 0) /* All done. */ return 0; goto again; diff --git a/fish/help.c b/fish/help.c index cf00dce..f62949b 100644 --- a/fish/help.c +++ b/fish/help.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -35,25 +36,23 @@ void display_help (void) { if (guestfs_is_config (g)) - printf (_( -"Add disk images to examine using the -a or -d options, or the 'add' command.\n" -"Or create a new disk image using -N, or the 'alloc' or 'sparse' commands.\n" -"Once you have done this, use the 'run' command.\n" - )); + printf (_("Add disk images to examine using the -a or -d options, or " + "the 'add' command.\n" + "Or create a new disk image using -N, or the 'alloc' or " + "'sparse' commands.\n" + "Once you have done this, use the 'run' command.\n")); else - printf (_( -"Find out what filesystems are available using 'list-filesystems' and then\n" -"mount them to examine or modify the contents using 'mount-ro' or\n" -"'mount'.\n" - )); + printf (_ ( + "Find out what filesystems are available using 'list-filesystems' " + "and then\n" + "mount them to examine or modify the contents using 'mount-ro' or\n" + "'mount'.\n")); printf ("\n"); - printf (_( -"For more information about a command, use 'help cmd'.\n" -"\n" -"To read the manual, type 'man'.\n" - )); + printf (_("For more information about a command, use 'help cmd'.\n" + "\n" + "To read the manual, type 'man'.\n")); printf ("\n"); } diff --git a/fish/hexedit.c b/fish/hexedit.c index e30352f..d28e92c 100644 --- a/fish/hexedit.c +++ b/fish/hexedit.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -49,37 +50,36 @@ run_hexedit (const char *cmd, size_t argc, char *argv[]) return -1; if (size == 0) { - fprintf (stderr, - _("hexedit: %s is a zero length file or device\n"), filename); + fprintf (stderr, _("hexedit: %s is a zero length file or device\n"), + filename); return -1; } off_t start; off_t max; - if (argc == 1) { /* hexedit device */ + if (argc == 1) { /* hexedit device */ /* Check we're not going to download a huge file. */ if (size > MAX_DOWNLOAD_SIZE) { - fprintf (stderr, - _("hexedit: %s is larger than %s. You must supply a limit using\n" - " 'hexedit %s <max>' (eg. 'hexedit %s 1M') or a range using\n" - " 'hexedit %s <start> <max>'.\n"), - filename, MAX_DOWNLOAD_SIZE_TEXT, - filename, filename, - filename); + fprintf ( + stderr, + _("hexedit: %s is larger than %s. You must supply a limit " + "using\n" + " 'hexedit %s <max>' (eg. 'hexedit %s 1M') or a range using\n" + " 'hexedit %s <start> <max>'.\n"), + filename, MAX_DOWNLOAD_SIZE_TEXT, filename, filename, filename); return -1; } start = 0; max = size; - } - else { - if (argc == 3) { /* hexedit device start max */ + } else { + if (argc == 3) { /* hexedit device start max */ if (parse_size (argv[1], &start) == -1) return -1; if (parse_size (argv[2], &max) == -1) return -1; - } else { /* hexedit device max */ + } else { /* hexedit device max */ start = 0; if (parse_size (argv[1], &max) == -1) return -1; @@ -187,8 +187,7 @@ get_size (const char *filename) size = guestfs_blockdev_getsize64 (g, filename); if (size == -1) return -1; - } - else { + } else { size = guestfs_filesize (g, filename); if (size == -1) return -1; @@ -197,5 +196,5 @@ get_size (const char *filename) /* This case should be safe because we always compile with * 64 bit file offsets. */ - return (off_t) size; + return (off_t)size; } diff --git a/fish/inspect.c b/fish/inspect.c index 97e46ae..3d6fdd1 100644 --- a/fish/inspect.c +++ b/fish/inspect.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -28,7 +29,8 @@ #include "guestfs.h" -/* These definitions ensure we get all extern definitions from the header. */ +/* These definitions ensure we get all extern definitions from the header. + */ #define COMPILING_GUESTFISH 1 #define COMPILING_VIRT_INSPECTOR 1 #include "options.h" @@ -41,16 +43,16 @@ static char *root = NULL; static int compare_keys_len (const void *p1, const void *p2) { - const char *key1 = * (char * const *) p1; - const char *key2 = * (char * const *) p2; + const char *key1 = *(char *const *)p1; + const char *key2 = *(char *const *)p2; return strlen (key1) - strlen (key2); } static int compare_keys (const void *p1, const void *p2) { - const char *key1 = * (char * const *) p1; - const char *key2 = * (char * const *) p2; + const char *key1 = *(char *const *)p1; + const char *key2 = *(char *const *)p2; return strcasecmp (key1, key2); } @@ -71,43 +73,50 @@ inspect_mount_handle (guestfs_h *g) exit (EXIT_FAILURE); if (roots[0] == NULL) { - fprintf (stderr, - _("%s: no operating system was found on this disk\n" - "\n" - "If using guestfish '-i' option, remove this option and instead\n" - "use the commands 'run' followed by 'list-filesystems'.\n" - "You can then mount filesystems you want by hand using the\n" - "'mount' or 'mount-ro' command.\n" - "\n" - "If using guestmount '-i', remove this option and choose the\n" - "filesystem(s) you want to see by manually adding '-m' option(s).\n" - "Use 'virt-filesystems' to see what filesystems are available.\n" - "\n" - "If using other virt tools, this disk image won't work\n" - "with these tools. Use the guestfish equivalent commands\n" - "(see the virt tool manual page).\n"), - guestfs_int_program_name); + fprintf ( + stderr, + _("%s: no operating system was found on this disk\n" + "\n" + "If using guestfish '-i' option, remove this option and " + "instead\n" + "use the commands 'run' followed by 'list-filesystems'.\n" + "You can then mount filesystems you want by hand using the\n" + "'mount' or 'mount-ro' command.\n" + "\n" + "If using guestmount '-i', remove this option and choose the\n" + "filesystem(s) you want to see by manually adding '-m' " + "option(s).\n" + "Use 'virt-filesystems' to see what filesystems are available.\n" + "\n" + "If using other virt tools, this disk image won't work\n" + "with these tools. Use the guestfish equivalent commands\n" + "(see the virt tool manual page).\n"), + guestfs_int_program_name); guestfs_int_free_string_list (roots); exit (EXIT_FAILURE); } if (roots[1] != NULL) { - fprintf (stderr, - _("%s: multi-boot operating systems are not supported\n" - "\n" - "If using guestfish '-i' option, remove this option and instead\n" - "use the commands 'run' followed by 'list-filesystems'.\n" - "You can then mount filesystems you want by hand using the\n" - "'mount' or 'mount-ro' command.\n" - "\n" - "If using guestmount '-i', remove this option and choose the\n" - "filesystem(s) you want to see by manually adding '-m' option(s).\n" - "Use 'virt-filesystems' to see what filesystems are available.\n" - "\n" - "If using other virt tools, multi-boot operating systems won't work\n" - "with these tools. Use the guestfish equivalent commands\n" - "(see the virt tool manual page).\n"), - guestfs_int_program_name); + fprintf ( + stderr, + _("%s: multi-boot operating systems are not supported\n" + "\n" + "If using guestfish '-i' option, remove this option and " + "instead\n" + "use the commands 'run' followed by 'list-filesystems'.\n" + "You can then mount filesystems you want by hand using the\n" + "'mount' or 'mount-ro' command.\n" + "\n" + "If using guestmount '-i', remove this option and choose the\n" + "filesystem(s) you want to see by manually adding '-m' " + "option(s).\n" + "Use 'virt-filesystems' to see what filesystems are available.\n" + "\n" + "If using other virt tools, multi-boot operating systems won't " + "work\n" + "with these tools. Use the guestfish equivalent commands\n" + "(see the virt tool manual page).\n"), + guestfs_int_program_name); guestfs_int_free_string_list (roots); exit (EXIT_FAILURE); } @@ -125,7 +134,7 @@ void inspect_mount_root (guestfs_h *g, const char *root) { CLEANUP_FREE_STRING_LIST char **mountpoints = - guestfs_inspect_get_mountpoints (g, root); + guestfs_inspect_get_mountpoints (g, root); if (mountpoints == NULL) exit (EXIT_FAILURE); @@ -133,17 +142,16 @@ inspect_mount_root (guestfs_h *g, const char *root) * mounting the filesystems in the correct order. */ qsort (mountpoints, guestfs_int_count_strings (mountpoints) / 2, - 2 * sizeof (char *), - compare_keys_len); + 2 * sizeof (char *), compare_keys_len); size_t i; size_t mount_errors = 0; for (i = 0; mountpoints[i] != NULL; i += 2) { int r; if (!read_only) - r = guestfs_mount (g, mountpoints[i+1], mountpoints[i]); + r = guestfs_mount (g, mountpoints[i + 1], mountpoints[i]); else - r = guestfs_mount_ro (g, mountpoints[i+1], mountpoints[i]); + r = guestfs_mount_ro (g, mountpoints[i + 1], mountpoints[i]); if (r == -1) { /* If the "/" filesystem could not be mounted, give up, else * just count the errors and print a warning. @@ -155,7 +163,8 @@ inspect_mount_root (guestfs_h *g, const char *root) } if (mount_errors) - fprintf (stderr, _("%s: some filesystems could not be mounted (ignored)\n"), + fprintf (stderr, + _("%s: some filesystems could not be mounted (ignored)\n"), guestfs_int_program_name); } @@ -179,18 +188,17 @@ print_inspect_prompt (void) /* Sort by key. */ qsort (mountpoints, guestfs_int_count_strings (mountpoints) / 2, - 2 * sizeof (char *), - compare_keys); + 2 * sizeof (char *), compare_keys); for (i = 0; mountpoints[i] != NULL; i += 2) { /* Try to make the device name canonical for printing, but don't * worry if this fails. */ CLEANUP_FREE char *dev = - guestfs_canonical_device_name (g, mountpoints[i+1]); + guestfs_canonical_device_name (g, mountpoints[i + 1]); - printf (_("%s mounted on %s\n"), - dev ? dev : mountpoints[i+1], mountpoints[i]); + printf (_("%s mounted on %s\n"), dev ? dev : mountpoints[i + 1], + mountpoints[i]); } } diff --git a/fish/keys.c b/fish/keys.c index 4749cfc..edadb19 100644 --- a/fish/keys.c +++ b/fish/keys.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -77,10 +78,10 @@ read_key (const char *param) } /* Remove the terminating \n if there is one. */ - if (len > 0 && ret[len-1] == '\n') - ret[len-1] = '\0'; + if (len > 0 && ret[len - 1] == '\n') + ret[len - 1] = '\0'; - error: +error: /* Restore echo, close file descriptor. */ if (tty && tcset) { printf ("\n"); diff --git a/fish/lcd.c b/fish/lcd.c index 8fa669c..c3979f9 100644 --- a/fish/lcd.c +++ b/fish/lcd.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> diff --git a/fish/man.c b/fish/man.c index 85b7a82..2a15d85 100644 --- a/fish/man.c +++ b/fish/man.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -33,12 +34,14 @@ int run_man (const char *cmd, size_t argc, char *argv[]) { if (argc != 0) { - fprintf (stderr, _("use 'man' without parameters to open the manual\n")); + fprintf (stderr, + _("use 'man' without parameters to open the manual\n")); return -1; } /* We have to restore SIGPIPE to the default action around the - * external 'man' command to avoid the warning 'gzip: stdout: Broken pipe'. + * external 'man' command to avoid the warning 'gzip: stdout: Broken + * pipe'. */ struct sigaction sa, old_sa; memset (&sa, 0, sizeof sa); @@ -55,9 +58,8 @@ run_man (const char *cmd, size_t argc, char *argv[]) char status_string[80]; fprintf (stderr, "%s\n", - guestfs_int_exit_status_to_string (r, "man", - status_string, - sizeof status_string)); + guestfs_int_exit_status_to_string (r, "man", status_string, + sizeof status_string)); return -1; } diff --git a/fish/more.c b/fish/more.c index cb46836..9e8d476 100644 --- a/fish/more.c +++ b/fish/more.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> diff --git a/fish/options.c b/fish/options.c index cc3d4c0..f984d44 100644 --- a/fish/options.c +++ b/fish/options.c @@ -55,8 +55,7 @@ option_a (const char *arg, const char *format, struct drv **drvsp) drv->a.format = format; free (uri.protocol); - } - else { + } else { /* Remote storage. */ drv->type = drv_uri; drv->nr_drives = -1; @@ -98,8 +97,7 @@ add_drives_handle (guestfs_h *g, struct drv *drv, char next_drive) struct guestfs_add_drive_opts_argv ad_optargs; if (next_drive > 'z') { - fprintf (stderr, - _("%s: too many drives added on the command line\n"), + fprintf (stderr, _("%s: too many drives added on the command line\n"), guestfs_int_program_name); exit (EXIT_FAILURE); } @@ -187,8 +185,7 @@ add_drives_handle (guestfs_h *g, struct drv *drv, char next_drive) case drv_N: /* -N option is not affected by --ro */ r = guestfs_add_drive_opts (g, drv->N.filename, - GUESTFS_ADD_DRIVE_OPTS_FORMAT, "raw", - -1); + GUESTFS_ADD_DRIVE_OPTS_FORMAT, "raw", -1); if (r == -1) exit (EXIT_FAILURE); @@ -216,7 +213,9 @@ add_drives_handle (guestfs_h *g, struct drv *drv, char next_drive) return next_drive; } -static void display_mountpoints_on_failure (const char *mp_device, const char *user_supplied_options); +static void +display_mountpoints_on_failure (const char *mp_device, + const char *user_supplied_options); /* List is built in reverse order, so mount them in reverse order. */ void @@ -239,8 +238,7 @@ mount_mps (struct mp *mp) r = guestfs_mount_vfs (g, options, mp->fstype, mp->device, mp->mountpoint); else - r = guestfs_mount_options (g, options, mp->device, - mp->mountpoint); + r = guestfs_mount_options (g, options, mp->device, mp->mountpoint); if (r == -1) { display_mountpoints_on_failure (mp->device, mp->options); exit (EXIT_FAILURE); @@ -265,11 +263,15 @@ display_mountpoints_on_failure (const char *mp_device, guestfs_int_program_name, mp_device); if (user_supplied_options) - fprintf (stderr, _("%s: Check mount(8) man page to ensure options '%s'\n" - "%s: are supported by the filesystem that is being mounted.\n"), - guestfs_int_program_name, user_supplied_options, guestfs_int_program_name); + fprintf ( + stderr, + _("%s: Check mount(8) man page to ensure options '%s'\n" + "%s: are supported by the filesystem that is being mounted.\n"), + guestfs_int_program_name, user_supplied_options, + guestfs_int_program_name); - fprintf (stderr, _("%s: Did you mean to mount one of these filesystems?\n"), + fprintf (stderr, + _("%s: Did you mean to mount one of these filesystems?\n"), guestfs_int_program_name); for (i = 0; fses[i] != NULL; i += 2) { @@ -283,8 +285,8 @@ display_mountpoints_on_failure (const char *mp_device, if (subvolume == NULL && guestfs_last_errno (g) != EINVAL) { fprintf (stderr, _("%s: cannot determine the subvolume for %s: %s (%d)\n"), - guestfs_int_program_name, fses[i], - guestfs_last_error (g), guestfs_last_errno (g)); + guestfs_int_program_name, fses[i], guestfs_last_error (g), + guestfs_last_errno (g)); exit (EXIT_FAILURE); } @@ -299,14 +301,15 @@ display_mountpoints_on_failure (const char *mp_device, } fprintf (stderr, "%s: \t%s (%s)\n", guestfs_int_program_name, - p ? p : fses[i], fses[i+1]); + p ? p : fses[i], fses[i + 1]); } } void free_drives (struct drv *drv) { - if (!drv) return; + if (!drv) + return; free_drives (drv->next); free (drv->device); @@ -339,7 +342,7 @@ free_drives (struct drv *drv) /* nothing */ break; #endif - default: ; /* keep GCC happy */ + default:; /* keep GCC happy */ } free (drv); } @@ -347,7 +350,8 @@ free_drives (struct drv *drv) void free_mps (struct mp *mp) { - if (!mp) return; + if (!mp) + return; free_mps (mp->next); /* The drive and mountpoint fields are not allocated @@ -378,7 +382,8 @@ void display_long_options (const struct option *long_options) { while (long_options->name) { - if (STRNEQ (long_options->name, "long-options") && STRNEQ (long_options->name, "short-options")) + if (STRNEQ (long_options->name, "long-options") && + STRNEQ (long_options->name, "short-options")) printf ("--%s\n", long_options->name); long_options++; } diff --git a/fish/options.h b/fish/options.h index bbe38aa..4a74701 100644 --- a/fish/options.h +++ b/fish/options.h @@ -39,37 +39,41 @@ extern const char *libvirt_uri; /* List of drives added via -a, -d or -N options. NB: Unused fields * in this struct MUST be zeroed, ie. use calloc, not malloc. */ -struct drv { +struct drv +{ struct drv *next; - char *device; /* Device name inside the appliance (eg. /dev/sda). - * This is filled in when we add the drives in - * add_drives. Note that guests (-d option) may - * have multiple drives, in which case this is the - * first drive, and nr_drives is the number of - * drives used. - */ - int nr_drives; /* number of drives for this guest */ + char *device; /* Device name inside the appliance (eg. /dev/sda). + * This is filled in when we add the drives in + * add_drives. Note that guests (-d option) may + * have multiple drives, in which case this is the + * first drive, and nr_drives is the number of + * drives used. + */ + int nr_drives; /* number of drives for this guest */ enum { - drv_a, /* -a option (without URI) */ - drv_uri, /* -a option (with URI) */ - drv_d, /* -d option */ + drv_a, /* -a option (without URI) */ + drv_uri, /* -a option (with URI) */ + drv_d, /* -d option */ #if COMPILING_GUESTFISH - drv_N, /* -N option (guestfish only) */ + drv_N, /* -N option (guestfish only) */ #endif #if COMPILING_VIRT_RESCUE - drv_scratch, /* --scratch option (virt-rescue only) */ + drv_scratch, /* --scratch option (virt-rescue only) */ #endif } type; - union { - struct { - char *filename; /* disk filename */ - const char *format; /* format (NULL == autodetect) */ - const char *cachemode;/* cachemode (NULL == default) */ - const char *discard; /* discard (NULL == disable) */ + union + { + struct + { + char *filename; /* disk filename */ + const char *format; /* format (NULL == autodetect) */ + const char *cachemode; /* cachemode (NULL == default) */ + const char *discard; /* discard (NULL == disable) */ } a; - struct { + struct + { char *path; /* disk path */ char *protocol; /* protocol (eg. "nbd") */ char **server; /* server(s) - can be NULL */ @@ -78,19 +82,22 @@ struct drv { const char *format; /* format (NULL == autodetect) */ const char *orig_uri; /* original URI (for error messages etc.) */ } uri; - struct { - char *guest; /* guest name */ + struct + { + char *guest; /* guest name */ } d; #if COMPILING_GUESTFISH - struct { - char *filename; /* disk filename (testX.img) */ - void *data; /* prepared type */ - void (*data_free)(void*); /* function to free 'data' */ + struct + { + char *filename; /* disk filename (testX.img) */ + void *data; /* prepared type */ + void (*data_free) (void *); /* function to free 'data' */ } N; #endif #if COMPILING_VIRT_RESCUE - struct { - int64_t size; /* size of the disk in bytes */ + struct + { + int64_t size; /* size of the disk in bytes */ } scratch; #endif }; @@ -101,7 +108,8 @@ struct drv { void *opaque; }; -struct mp { +struct mp +{ struct mp *next; char *device; char *mountpoint; @@ -133,114 +141,109 @@ extern void inspect_mount_root (guestfs_h *g, const char *root); extern char *read_key (const char *param); /* in options.c */ -extern void option_a (const char *arg, const char *format, struct drv **drvsp); +extern void option_a (const char *arg, const char *format, + struct drv **drvsp); extern void option_d (const char *arg, struct drv **drvsp); -extern char add_drives_handle (guestfs_h *g, struct drv *drv, char next_drive); +extern char add_drives_handle (guestfs_h *g, struct drv *drv, + char next_drive); #define add_drives(drv, next_drive) add_drives_handle (g, drv, next_drive) extern void mount_mps (struct mp *mp); extern void free_drives (struct drv *drv); extern void free_mps (struct mp *mp); -extern void display_short_options (const char *) __attribute__((noreturn)); -extern void display_long_options (const struct option *) __attribute__((noreturn)); - -#define OPTION_a \ - do { \ - option_a (optarg, format, &drvs); \ - format_consumed = true; \ +extern void display_short_options (const char *) __attribute__ ((noreturn)); +extern void display_long_options (const struct option *) + __attribute__ ((noreturn)); + +#define OPTION_a \ + do { \ + option_a (optarg, format, &drvs); \ + format_consumed = true; \ } while (0) -#define OPTION_A \ - do { \ - option_a (optarg, format, &drvs2); \ - format_consumed = true; \ +#define OPTION_A \ + do { \ + option_a (optarg, format, &drvs2); \ + format_consumed = true; \ } while (0) -#define OPTION_c \ - libvirt_uri = optarg +#define OPTION_c libvirt_uri = optarg -#define OPTION_d \ - option_d (optarg, &drvs) +#define OPTION_d option_d (optarg, &drvs) -#define OPTION_D \ - option_d (optarg, &drvs2) +#define OPTION_D option_d (optarg, &drvs2) -#define OPTION_format \ - do { \ - if (!optarg || STREQ (optarg, "")) \ - format = NULL; \ - else \ - format = optarg; \ - format_consumed = false; \ +#define OPTION_format \ + do { \ + if (!optarg || STREQ (optarg, "")) \ + format = NULL; \ + else \ + format = optarg; \ + format_consumed = false; \ } while (0) -#define OPTION_i \ - inspector = 1 - -#define OPTION_m \ - mp = malloc (sizeof (struct mp)); \ - if (!mp) \ - error (EXIT_FAILURE, errno, "malloc"); \ - mp->fstype = NULL; \ - mp->options = NULL; \ - mp->mountpoint = (char *) "/"; \ - p = strchr (optarg, ':'); \ - if (p) { \ - *p = '\0'; \ - p++; \ - mp->mountpoint = p; \ - p = strchr (p, ':'); \ - if (p) { \ - *p = '\0'; \ - p++; \ - mp->options = p; \ - p = strchr (p, ':'); \ - if (p) { \ - *p = '\0'; \ - p++; \ - mp->fstype = p; \ - } \ - } \ - } \ - mp->device = optarg; \ - mp->next = mps; \ +#define OPTION_i inspector = 1 + +#define OPTION_m \ + mp = malloc (sizeof (struct mp)); \ + if (!mp) \ + error (EXIT_FAILURE, errno, "malloc"); \ + mp->fstype = NULL; \ + mp->options = NULL; \ + mp->mountpoint = (char *)"/"; \ + p = strchr (optarg, ':'); \ + if (p) { \ + *p = '\0'; \ + p++; \ + mp->mountpoint = p; \ + p = strchr (p, ':'); \ + if (p) { \ + *p = '\0'; \ + p++; \ + mp->options = p; \ + p = strchr (p, ':'); \ + if (p) { \ + *p = '\0'; \ + p++; \ + mp->fstype = p; \ + } \ + } \ + } \ + mp->device = optarg; \ + mp->next = mps; \ mps = mp -#define OPTION_n \ - guestfs_set_autosync (g, 0) +#define OPTION_n guestfs_set_autosync (g, 0) -#define OPTION_r \ - read_only = 1 +#define OPTION_r read_only = 1 -#define OPTION_v \ - verbose++; \ +#define OPTION_v \ + verbose++; \ guestfs_set_verbose (g, verbose) -#define OPTION_V \ - { \ - printf ("%s %s\n", \ - guestfs_int_program_name, \ - PACKAGE_VERSION_FULL); \ - exit (EXIT_SUCCESS); \ +#define OPTION_V \ + { \ + printf ("%s %s\n", guestfs_int_program_name, PACKAGE_VERSION_FULL); \ + exit (EXIT_SUCCESS); \ } -#define OPTION_w \ - if (read_only) { \ - fprintf (stderr, _("%s: cannot mix --ro and --rw options\n"), \ - guestfs_int_program_name); \ - exit (EXIT_FAILURE); \ +#define OPTION_w \ + if (read_only) { \ + fprintf (stderr, _("%s: cannot mix --ro and --rw options\n"), \ + guestfs_int_program_name); \ + exit (EXIT_FAILURE); \ } -#define OPTION_x \ - guestfs_set_trace (g, 1) +#define OPTION_x guestfs_set_trace (g, 1) -#define CHECK_OPTION_format_consumed \ - do { \ - if (!format_consumed) { \ - fprintf (stderr, \ - _("%s: --format parameter must appear before -a parameter\n"), \ - guestfs_int_program_name); \ - exit (EXIT_FAILURE); \ - } \ +#define CHECK_OPTION_format_consumed \ + do { \ + if (!format_consumed) { \ + fprintf ( \ + stderr, \ + _("%s: --format parameter must appear before -a parameter\n"), \ + guestfs_int_program_name); \ + exit (EXIT_FAILURE); \ + } \ } while (0) #endif /* OPTIONS_H */ diff --git a/fish/prep-boot.c b/fish/prep-boot.c index 45a5a8f..c1cfd88 100644 --- a/fish/prep-boot.c +++ b/fish/prep-boot.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -38,7 +39,8 @@ prep_prelaunch_bootroot (const char *filename, prep_data *data) } void -prep_postlaunch_bootroot (const char *filename, prep_data *data, const char *device) +prep_postlaunch_bootroot (const char *filename, prep_data *data, + const char *device) { off_t bootsize; if (parse_size (data->params[3], &bootsize) == -1) @@ -53,12 +55,12 @@ prep_postlaunch_bootroot (const char *filename, prep_data *data, const char *dev prep_error (data, filename, _("failed to partition disk: %s"), guestfs_last_error (g)); - off_t lastbootsect = 64 + bootsize/sector - 1; + off_t lastbootsect = 64 + bootsize / sector - 1; if (guestfs_part_add (g, device, "primary", 64, lastbootsect) == -1) prep_error (data, filename, _("failed to add boot partition: %s"), guestfs_last_error (g)); - if (guestfs_part_add (g, device, "primary", lastbootsect+1, -64) == -1) + if (guestfs_part_add (g, device, "primary", lastbootsect + 1, -64) == -1) prep_error (data, filename, _("failed to add root partition: %s"), guestfs_last_error (g)); @@ -81,14 +83,16 @@ void prep_prelaunch_bootrootlv (const char *filename, prep_data *data) { if (vg_lv_parse (data->params[0], NULL, NULL) == -1) - prep_error (data, filename, _("incorrect format for LV name, use '/dev/VG/LV'")); + prep_error (data, filename, + _("incorrect format for LV name, use '/dev/VG/LV'")); if (alloc_disk (filename, data->params[3], 0, 1) == -1) prep_error (data, filename, _("failed to allocate disk")); } void -prep_postlaunch_bootrootlv (const char *filename, prep_data *data, const char *device) +prep_postlaunch_bootrootlv (const char *filename, prep_data *data, + const char *device) { off_t bootsize; if (parse_size (data->params[4], &bootsize) == -1) @@ -103,19 +107,20 @@ prep_postlaunch_bootrootlv (const char *filename, prep_data *data, const char *d prep_error (data, filename, _("failed to partition disk: %s"), guestfs_last_error (g)); - off_t lastbootsect = 64 + bootsize/sector - 1; + off_t lastbootsect = 64 + bootsize / sector - 1; if (guestfs_part_add (g, device, "primary", 64, lastbootsect) == -1) prep_error (data, filename, _("failed to add boot partition: %s"), guestfs_last_error (g)); - if (guestfs_part_add (g, device, "primary", lastbootsect+1, -64) == -1) + if (guestfs_part_add (g, device, "primary", lastbootsect + 1, -64) == -1) prep_error (data, filename, _("failed to add root partition: %s"), guestfs_last_error (g)); CLEANUP_FREE char *vg; CLEANUP_FREE char *lv; if (vg_lv_parse (data->params[0], &vg, &lv) == -1) - prep_error (data, filename, _("incorrect format for LV name, use '/dev/VG/LV'")); + prep_error (data, filename, + _("incorrect format for LV name, use '/dev/VG/LV'")); CLEANUP_FREE char *part; if (asprintf (&part, "%s1", device) == -1) @@ -128,13 +133,13 @@ prep_postlaunch_bootrootlv (const char *filename, prep_data *data, const char *d if (asprintf (&part2, "%s2", device) == -1) error (EXIT_FAILURE, errno, "asprintf"); if (guestfs_pvcreate (g, part2) == -1) - prep_error (data, filename, _("failed to create PV: %s: %s"), - part2, guestfs_last_error (g)); + prep_error (data, filename, _("failed to create PV: %s: %s"), part2, + guestfs_last_error (g)); char *parts[] = { part2, NULL }; if (guestfs_vgcreate (g, vg, parts) == -1) - prep_error (data, filename, _("failed to create VG: %s: %s"), - vg, guestfs_last_error (g)); + prep_error (data, filename, _("failed to create VG: %s: %s"), vg, + guestfs_last_error (g)); /* Create the largest possible LV. */ if (guestfs_lvcreate_free (g, lv, vg, 100) == -1) diff --git a/fish/prep-disk.c b/fish/prep-disk.c index 246b9f1..d9f884e 100644 --- a/fish/prep-disk.c +++ b/fish/prep-disk.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -36,7 +37,8 @@ prep_prelaunch_disk (const char *filename, prep_data *data) } void -prep_postlaunch_disk (const char *filename, prep_data *data, const char *device) +prep_postlaunch_disk (const char *filename, prep_data *data, + const char *device) { /* nothing */ } diff --git a/fish/prep-fs.c b/fish/prep-fs.c index 6670aa6..0645e29 100644 --- a/fish/prep-fs.c +++ b/fish/prep-fs.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -38,7 +39,8 @@ prep_prelaunch_fs (const char *filename, prep_data *data) } void -prep_postlaunch_fs (const char *filename, prep_data *data, const char *device) +prep_postlaunch_fs (const char *filename, prep_data *data, + const char *device) { if (guestfs_part_disk (g, device, data->params[2]) == -1) prep_error (data, filename, _("failed to partition disk: %s"), diff --git a/fish/prep-lv.c b/fish/prep-lv.c index 93de9ae..4050f50 100644 --- a/fish/prep-lv.c +++ b/fish/prep-lv.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -50,7 +51,7 @@ vg_lv_parse (const char *device, char **vg, char **lv) } if (lv) { - *lv = strdup (p+1); + *lv = strdup (p + 1); if (*lv == NULL) error (EXIT_FAILURE, errno, "strndup"); } @@ -62,14 +63,16 @@ void prep_prelaunch_lv (const char *filename, prep_data *data) { if (vg_lv_parse (data->params[0], NULL, NULL) == -1) - prep_error (data, filename, _("incorrect format for LV name, use '/dev/VG/LV'")); + prep_error (data, filename, + _("incorrect format for LV name, use '/dev/VG/LV'")); if (alloc_disk (filename, data->params[1], 0, 1) == -1) prep_error (data, filename, _("failed to allocate disk")); } void -prep_postlaunch_lv (const char *filename, prep_data *data, const char *device) +prep_postlaunch_lv (const char *filename, prep_data *data, + const char *device) { if (guestfs_part_disk (g, device, data->params[2]) == -1) prep_error (data, filename, _("failed to partition disk: %s"), @@ -78,20 +81,21 @@ prep_postlaunch_lv (const char *filename, prep_data *data, const char *device) CLEANUP_FREE char *vg; CLEANUP_FREE char *lv; if (vg_lv_parse (data->params[0], &vg, &lv) == -1) - prep_error (data, filename, _("incorrect format for LV name, use '/dev/VG/LV'")); + prep_error (data, filename, + _("incorrect format for LV name, use '/dev/VG/LV'")); CLEANUP_FREE char *part; if (asprintf (&part, "%s1", device) == -1) error (EXIT_FAILURE, errno, "asprintf"); if (guestfs_pvcreate (g, part) == -1) - prep_error (data, filename, _("failed to create PV: %s: %s"), - part, guestfs_last_error (g)); + prep_error (data, filename, _("failed to create PV: %s: %s"), part, + guestfs_last_error (g)); char *parts[] = { part, NULL }; if (guestfs_vgcreate (g, vg, parts) == -1) - prep_error (data, filename, _("failed to create VG: %s: %s"), - vg, guestfs_last_error (g)); + prep_error (data, filename, _("failed to create VG: %s: %s"), vg, + guestfs_last_error (g)); /* Create the largest possible LV. */ if (guestfs_lvcreate_free (g, lv, vg, 100) == -1) @@ -103,14 +107,16 @@ void prep_prelaunch_lvfs (const char *filename, prep_data *data) { if (vg_lv_parse (data->params[0], NULL, NULL) == -1) - prep_error (data, filename, _("incorrect format for LV name, use '/dev/VG/LV'")); + prep_error (data, filename, + _("incorrect format for LV name, use '/dev/VG/LV'")); if (alloc_disk (filename, data->params[2], 0, 1) == -1) prep_error (data, filename, _("failed to allocate disk")); } void -prep_postlaunch_lvfs (const char *filename, prep_data *data, const char *device) +prep_postlaunch_lvfs (const char *filename, prep_data *data, + const char *device) { if (guestfs_part_disk (g, device, data->params[3]) == -1) prep_error (data, filename, _("failed to partition disk: %s"), @@ -119,20 +125,21 @@ prep_postlaunch_lvfs (const char *filename, prep_data *data, const char *device) CLEANUP_FREE char *vg; CLEANUP_FREE char *lv; if (vg_lv_parse (data->params[0], &vg, &lv) == -1) - prep_error (data, filename, _("incorrect format for LV name, use '/dev/VG/LV'")); + prep_error (data, filename, + _("incorrect format for LV name, use '/dev/VG/LV'")); CLEANUP_FREE char *part; if (asprintf (&part, "%s1", device) == -1) error (EXIT_FAILURE, errno, "asprintf"); if (guestfs_pvcreate (g, part) == -1) - prep_error (data, filename, _("failed to create PV: %s: %s"), - part, guestfs_last_error (g)); + prep_error (data, filename, _("failed to create PV: %s: %s"), part, + guestfs_last_error (g)); char *parts[] = { part, NULL }; if (guestfs_vgcreate (g, vg, parts) == -1) - prep_error (data, filename, _("failed to create VG: %s: %s"), - vg, guestfs_last_error (g)); + prep_error (data, filename, _("failed to create VG: %s: %s"), vg, + guestfs_last_error (g)); /* Create the largest possible LV. */ if (guestfs_lvcreate_free (g, lv, vg, 100) == -1) diff --git a/fish/prep-part.c b/fish/prep-part.c index 83363f5..9611a62 100644 --- a/fish/prep-part.c +++ b/fish/prep-part.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -36,7 +37,8 @@ prep_prelaunch_part (const char *filename, prep_data *data) } void -prep_postlaunch_part (const char *filename, prep_data *data, const char *device) +prep_postlaunch_part (const char *filename, prep_data *data, + const char *device) { if (guestfs_part_disk (g, device, data->params[1]) == -1) prep_error (data, filename, _("failed to partition disk: %s"), diff --git a/fish/prep.c b/fish/prep.c index b8976e9..9635577 100644 --- a/fish/prep.c +++ b/fish/prep.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -55,10 +56,8 @@ guestfish -N %-8s - %s\n\ printf ("\n"); for (j = 0; j < preps[i].nr_params; ++j) { printf (" "); - printf (_("<%s> %s (default: %s)\n"), - preps[i].params[j].pname, - preps[i].params[j].pdesc, - preps[i].params[j].pdefault); + printf (_("<%s> %s (default: %s)\n"), preps[i].params[j].pname, + preps[i].params[j].pdesc, preps[i].params[j].pdefault); } } @@ -119,11 +118,12 @@ Use 'guestfish -N help' to list possible values for the -N parameter.\n"), error (EXIT_FAILURE, errno, "malloc"); for (i = 0; i < data->prep->nr_params; ++i) - data->params[i] = (char *) data->prep->params[i].pdefault; + data->params[i] = (char *)data->prep->params[i].pdefault; /* Parse the optional parameters. */ const char *p = type_string + len; - if (*p) p++; /* skip colon char */ + if (*p) + p++; /* skip colon char */ i = 0; while (*p) { @@ -133,7 +133,8 @@ Use 'guestfish -N help' to list possible values for the -N parameter.\n"), error (EXIT_FAILURE, errno, "strndup"); p += len; - if (*p) p++; /* skip colon char */ + if (*p) + p++; /* skip colon char */ i++; } @@ -145,8 +146,7 @@ Use 'guestfish -N help' to list possible values for the -N parameter.\n"), * is just used for error messages. */ void -prepare_drive (const char *filename, prep_data *data, - const char *device) +prepare_drive (const char *filename, prep_data *data, const char *device) { if (data->prep->postlaunch) data->prep->postlaunch (filename, data, device); @@ -155,9 +155,10 @@ prepare_drive (const char *filename, prep_data *data, void prep_error (prep_data *data, const char *filename, const char *fs, ...) { - fprintf (stderr, - _("guestfish: error creating prepared disk image '%s' on '%s': "), - data->orig_type_string, filename); + fprintf ( + stderr, + _("guestfish: error creating prepared disk image '%s' on '%s': "), + data->orig_type_string, filename); va_list args; va_start (args, fs); diff --git a/fish/progress.c b/fish/progress.c index 363419e..e05a062 100644 --- a/fish/progress.c +++ b/fish/progress.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -49,9 +50,10 @@ extern const char *UP; * http://en.wikipedia.org/wiki/Standard_deviation#Rapid_calculation_methods * Checked in a test program against answers given by Wolfram Alpha. */ -struct rmsd { - double a; /* mean */ - double i; /* number of samples */ +struct rmsd +{ + double a; /* mean */ + double i; /* number of samples */ double q; }; @@ -87,14 +89,15 @@ rmsd_get_standard_deviation (const struct rmsd *r) return sqrt (r->q / (r->i - 1.0)); } -struct progress_bar { - double start; /* start time of command */ - size_t count; /* number of progress notifications per cmd */ - struct rmsd rmsd; /* running mean and standard deviation */ +struct progress_bar +{ + double start; /* start time of command */ + size_t count; /* number of progress notifications per cmd */ + struct rmsd rmsd; /* running mean and standard deviation */ int have_terminfo; int utf8_mode; int machine_readable; - FILE *fp; /* output device, only used when !dumb mode */ + FILE *fp; /* output device, only used when !dumb mode */ }; struct progress_bar * @@ -174,19 +177,19 @@ spinner (struct progress_bar *bar, size_t count) * I prefer something which doesn't point, just spins. */ /* Black pointing triangle. */ - //static const char *us[] = { "\u25b2", "\u25b6", "\u25bc", "\u25c0" }; + // static const char *us[] = { "\u25b2", "\u25b6", "\u25bc", "\u25c0" }; /* White pointing triangle. */ - //static const char *us[] = { "\u25b3", "\u25b7", "\u25bd", "\u25c1" }; + // static const char *us[] = { "\u25b3", "\u25b7", "\u25bd", "\u25c1" }; /* Circle with half black. */ static const char *us[] = { "\u25d0", "\u25d3", "\u25d1", "\u25d2" }; /* White square white quadrant. */ - //static const char *us[] = { "\u25f0", "\u25f3", "\u25f2", "\u25f1" }; + // static const char *us[] = { "\u25f0", "\u25f3", "\u25f2", "\u25f1" }; /* White circle white quadrant. */ - //static const char *us[] = { "\u25f4", "\u25f7", "\u25f6", "\u25f5" }; + // static const char *us[] = { "\u25f4", "\u25f7", "\u25f6", "\u25f5" }; /* Black triangle. */ - //static const char *us[] = { "\u25e2", "\u25e3", "\u25e4", "\u25e5" }; + // static const char *us[] = { "\u25e2", "\u25e3", "\u25e4", "\u25e5" }; /* Spinning arrow in 8 directions. */ - //static const char *us[] = { "\u2190", "\u2196", "\u2191", "\u2197", + // static const char *us[] = { "\u2190", "\u2196", "\u2191", "\u2197", // "\u2192", "\u2198", "\u2193", "\u2199" }; /* ASCII spinner. */ @@ -198,8 +201,7 @@ spinner (struct progress_bar *bar, size_t count) if (bar->utf8_mode) { s = us; n = sizeof us / sizeof us[0]; - } - else { + } else { s = as; n = sizeof as / sizeof as[0]; } @@ -237,7 +239,7 @@ estimate_remaining_time (struct progress_bar *bar, double ratio) double mean = rmsd_get_mean (&bar->rmsd); double sd = rmsd_get_standard_deviation (&bar->rmsd); - if (fabs (total_time - mean) >= 2.0*sd) + if (fabs (total_time - mean) >= 2.0 * sd) return -1.0; /* Don't return early estimates. */ @@ -265,8 +267,8 @@ estimate_remaining_time (struct progress_bar *bar, double ratio) #define COLS_OVERHEAD 15 void -progress_bar_set (struct progress_bar *bar, - uint64_t position, uint64_t total) +progress_bar_set (struct progress_bar *bar, uint64_t position, + uint64_t total) { size_t i, cols; int pulse_mode; @@ -279,10 +281,12 @@ progress_bar_set (struct progress_bar *bar, printf ("%" PRIu64 "/%" PRIu64 "\n", position, total); fflush (stdout); } else { - cols = tgetnum ((char *) "co"); - if (cols < 32) goto dumb; + cols = tgetnum ((char *)"co"); + if (cols < 32) + goto dumb; - /* Send progress bar output to /dev/tty if we could open it, else stdout. */ + /* Send progress bar output to /dev/tty if we could open it, else + * stdout. */ fp = bar->fp; if (!fp) fp = stdout; @@ -301,17 +305,18 @@ progress_bar_set (struct progress_bar *bar, /* Find out if we're in "pulse mode". */ pulse_mode = position == 0 && total == 1; - ratio = (double) position / total; - if (ratio < 0) ratio = 0; else if (ratio > 1) ratio = 1; + ratio = (double)position / total; + if (ratio < 0) + ratio = 0; + else if (ratio > 1) + ratio = 1; if (pulse_mode) { fprintf (fp, "%s --- ", spinner (bar, bar->count)); - } - else if (ratio < 1) { + } else if (ratio < 1) { int percent = 100.0 * ratio; fprintf (fp, "%s%3d%% ", spinner (bar, bar->count), percent); - } - else { + } else { fputs (" 100% ", fp); } @@ -321,20 +326,22 @@ progress_bar_set (struct progress_bar *bar, s_dash = "\u2550"; s_close = "\u27e7"; } else { - s_open = "["; s_dot = "#"; s_dash = "-"; s_close = "]"; + s_open = "["; + s_dot = "#"; + s_dash = "-"; + s_close = "]"; } fputs (s_open, fp); if (!pulse_mode) { - size_t dots = ratio * (double) (cols - COLS_OVERHEAD); + size_t dots = ratio * (double)(cols - COLS_OVERHEAD); for (i = 0; i < dots; ++i) fputs (s_dot, fp); for (i = dots; i < cols - COLS_OVERHEAD; ++i) fputs (s_dash, fp); - } - else { /* "Pulse mode": the progress bar just pulses. */ + } else { /* "Pulse mode": the progress bar just pulses. */ for (i = 0; i < cols - COLS_OVERHEAD; ++i) { int cc = (bar->count * 3 - i) % (cols - COLS_OVERHEAD); if (cc >= 0 && cc <= 3) @@ -368,8 +375,7 @@ progress_bar_set (struct progress_bar *bar, double ignore; int ss = floor (modf (estimate, &ignore) * 60.); fprintf (fp, "%02d:%02d", mm, ss); - } - else /* < 0 means estimate was not meaningful */ + } else /* < 0 means estimate was not meaningful */ fputs ("--:--", fp); fputc ('\n', fp); diff --git a/fish/progress.h b/fish/progress.h index 4fc0eaf..17b7526 100644 --- a/fish/progress.h +++ b/fish/progress.h @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -36,7 +37,8 @@ extern void progress_bar_reset (struct progress_bar *); /* This should be called from the progress bar callback. It displays * the progress bar. */ -extern void progress_bar_set (struct progress_bar *, uint64_t position, uint64_t total); +extern void progress_bar_set (struct progress_bar *, uint64_t position, + uint64_t total); /* Free up progress bar handle and resources. */ extern void progress_bar_free (struct progress_bar *); diff --git a/fish/rc.c b/fish/rc.c index ad673f8..220486d 100644 --- a/fish/rc.c +++ b/fish/rc.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -41,7 +42,7 @@ /* Because this is a Unix domain socket, the total path length must be * under 108 bytes. */ -#define SOCKET_DIR "/tmp/.guestfish-%ju" /* euid */ +#define SOCKET_DIR "/tmp/.guestfish-%ju" /* euid */ #define SOCKET_PATH "/tmp/.guestfish-%ju/socket-%ju" /* euid, pid */ static void @@ -53,18 +54,17 @@ create_sockdir (void) struct stat statbuf; /* Create the directory, and ensure it is owned by the user. */ - snprintf (dir, sizeof dir, SOCKET_DIR, (uintmax_t) euid); + snprintf (dir, sizeof dir, SOCKET_DIR, (uintmax_t)euid); r = mkdir (dir, 0700); if (r == -1 && errno != EEXIST) error: - error (EXIT_FAILURE, errno, "%s", dir); + error (EXIT_FAILURE, errno, "%s", dir); if (lstat (dir, &statbuf) == -1) goto error; - if (!S_ISDIR (statbuf.st_mode) || - (statbuf.st_mode & 0777) != 0700 || + if (!S_ISDIR (statbuf.st_mode) || (statbuf.st_mode & 0777) != 0700 || statbuf.st_uid != euid) { - fprintf (stderr, - _("guestfish: '%s' is not a directory or has insecure owner or permissions\n"), + fprintf (stderr, _("guestfish: '%s' is not a directory or has " + "insecure owner or permissions\n"), dir); exit (EXIT_FAILURE); } @@ -78,7 +78,7 @@ create_sockpath (pid_t pid, char *sockpath, size_t len, create_sockdir (); - snprintf (sockpath, len, SOCKET_PATH, (uintmax_t) euid, (uintmax_t) pid); + snprintf (sockpath, len, SOCKET_PATH, (uintmax_t)euid, (uintmax_t)pid); addr->sun_family = AF_UNIX; strcpy (addr->sun_path, sockpath); @@ -90,8 +90,8 @@ static void receive_stdout (int s) { static struct cmsghdr *cmptr = NULL, *h; - struct msghdr msg; - struct iovec iov[1]; + struct msghdr msg; + struct iovec iov[1]; /* Our 1 byte buffer */ char buf[1]; @@ -109,20 +109,20 @@ receive_stdout (int s) /* Initialise the msghdr to receive zero byte */ iov[0].iov_base = buf; - iov[0].iov_len = 1; - msg.msg_iov = iov; - msg.msg_iovlen = 1; + iov[0].iov_len = 1; + msg.msg_iov = iov; + msg.msg_iovlen = 1; /* Initialise the control data */ - msg.msg_control = cmptr; - msg.msg_controllen = controllen; + msg.msg_control = cmptr; + msg.msg_controllen = controllen; /* Read a message from the socket */ ssize_t n = recvmsg (s, &msg, 0); if (n < 0) error (EXIT_FAILURE, errno, "recvmsg stdout fd"); - h = CMSG_FIRSTHDR(&msg); + h = CMSG_FIRSTHDR (&msg); if (NULL == h) { fprintf (stderr, "didn't receive a stdout file descriptor\n"); } @@ -142,22 +142,22 @@ static void send_stdout (int s) { static struct cmsghdr *cmptr = NULL; - struct msghdr msg; - struct iovec iov[1]; + struct msghdr msg; + struct iovec iov[1]; /* Our 1 byte dummy buffer */ char buf[1]; /* Don't specify a destination */ memset (&msg, 0, sizeof msg); - msg.msg_name = NULL; + msg.msg_name = NULL; msg.msg_namelen = 0; /* Initialise the msghdr to send zero byte */ iov[0].iov_base = buf; - iov[0].iov_len = 1; - msg.msg_iov = iov; - msg.msg_iovlen = 1; + iov[0].iov_len = 1; + msg.msg_iov = iov; + msg.msg_iovlen = 1; /* Initialize the zero byte */ buf[0] = 0; @@ -169,12 +169,12 @@ send_stdout (int s) error (EXIT_FAILURE, errno, "malloc"); } cmptr->cmsg_level = SOL_SOCKET; - cmptr->cmsg_type = SCM_RIGHTS; - cmptr->cmsg_len = controllen; + cmptr->cmsg_type = SCM_RIGHTS; + cmptr->cmsg_len = controllen; /* Add control header to the message */ - msg.msg_control = cmptr; - msg.msg_controllen = controllen; + msg.msg_control = cmptr; + msg.msg_controllen = controllen; /* Add STDOUT to the control data */ void *data = CMSG_DATA (cmptr); @@ -248,11 +248,11 @@ rc_listen (void) pid = getpid (); create_sockpath (pid, sockpath, sizeof sockpath, &addr); - sock = socket (AF_UNIX, SOCK_STREAM|SOCK_CLOEXEC, 0); + sock = socket (AF_UNIX, SOCK_STREAM | SOCK_CLOEXEC, 0); if (sock == -1) error (EXIT_FAILURE, errno, "socket"); unlink (sockpath); - if (bind (sock, (struct sockaddr *) &addr, sizeof addr) == -1) + if (bind (sock, (struct sockaddr *)&addr, sizeof addr) == -1) error (EXIT_FAILURE, errno, "bind: %s", sockpath); if (listen (sock, 4) == -1) error (EXIT_FAILURE, errno, "listen: %s", sockpath); @@ -269,29 +269,32 @@ rc_listen (void) if (s == -1) perror ("accept"); else { - receive_stdout(s); + receive_stdout (s); fp = fdopen (s, "r+"); xdrstdio_create (&xdr, fp, XDR_DECODE); if (!xdr_guestfish_hello (&xdr, &hello)) { - fprintf (stderr, _("guestfish: protocol error: could not read 'hello' message\n")); + fprintf (stderr, _("guestfish: protocol error: could not read " + "'hello' message\n")); goto error; } if (STRNEQ (hello.vers, PACKAGE_VERSION)) { - fprintf (stderr, _("guestfish: protocol error: version mismatch, server version '%s' does not match client version '%s'. The two versions must match exactly.\n"), - PACKAGE_VERSION, - hello.vers); - xdr_free ((xdrproc_t) xdr_guestfish_hello, (char *) &hello); + fprintf (stderr, + _("guestfish: protocol error: version mismatch, server " + "version '%s' does not match client version '%s'. The " + "two versions must match exactly.\n"), + PACKAGE_VERSION, hello.vers); + xdr_free ((xdrproc_t)xdr_guestfish_hello, (char *)&hello); goto error; } - xdr_free ((xdrproc_t) xdr_guestfish_hello, (char *) &hello); + xdr_free ((xdrproc_t)xdr_guestfish_hello, (char *)&hello); while (xdr_guestfish_call (&xdr, &call)) { /* We have to extend and NULL-terminate the argv array. */ argc = call.args.args_len; - argv = realloc (call.args.args_val, (argc+1) * sizeof (char *)); + argv = realloc (call.args.args_val, (argc + 1) * sizeof (char *)); if (argv == NULL) error (EXIT_FAILURE, errno, "realloc"); call.args.args_val = argv; @@ -307,7 +310,7 @@ rc_listen (void) /* Run the command. */ reply.r = issue_command (call.cmd, argv, NULL, 0); - xdr_free ((xdrproc_t) xdr_guestfish_call, (char *) &call); + xdr_free ((xdrproc_t)xdr_guestfish_call, (char *)&call); /* RHBZ#802389: If the command is quit, close the handle right * away. Note that the main while loop will exit preventing @@ -320,7 +323,7 @@ rc_listen (void) /* Send the reply. */ xdrstdio_create (&xdr2, fp, XDR_ENCODE); - (void) xdr_guestfish_reply (&xdr2, &reply); + (void)xdr_guestfish_reply (&xdr2, &reply); xdr_destroy (&xdr2); /* Exit on error? */ @@ -331,15 +334,16 @@ rc_listen (void) } error: - xdr_destroy (&xdr); /* NB. This doesn't close 'fp'. */ - fclose (fp); /* Closes the underlying socket 's'. */ + xdr_destroy (&xdr); /* NB. This doesn't close 'fp'. */ + fclose (fp); /* Closes the underlying socket 's'. */ } } unlink (sockpath); close (sock); - /* This returns to 'fish.c', where it jumps to global cleanups and exits. */ + /* This returns to 'fish.c', where it jumps to global cleanups and exits. + */ } /* Remote control client. */ @@ -359,37 +363,42 @@ rc_remote (int pid, const char *cmd, size_t argc, char *argv[], memset (&reply, 0, sizeof reply); /* This is fine as long as we never try to xdr_free this struct. */ - hello.vers = (char *) PACKAGE_VERSION; + hello.vers = (char *)PACKAGE_VERSION; /* Check the other end is still running. */ if (kill (pid, 0) == -1) { - fprintf (stderr, _("guestfish: remote: looks like the server is not running\n")); + fprintf ( + stderr, + _("guestfish: remote: looks like the server is not running\n")); return -1; } create_sockpath (pid, sockpath, sizeof sockpath, &addr); - sock = socket (AF_UNIX, SOCK_STREAM|SOCK_CLOEXEC, 0); + sock = socket (AF_UNIX, SOCK_STREAM | SOCK_CLOEXEC, 0); if (sock == -1) { perror ("socket"); return -1; } - if (connect (sock, (struct sockaddr *) &addr, sizeof addr) == -1) { + if (connect (sock, (struct sockaddr *)&addr, sizeof addr) == -1) { perror (sockpath); - fprintf (stderr, _("guestfish: remote: looks like the server is not running\n")); + fprintf ( + stderr, + _("guestfish: remote: looks like the server is not running\n")); close (sock); return -1; } - send_stdout(sock); + send_stdout (sock); /* Send the greeting. */ fp = fdopen (sock, "r+"); xdrstdio_create (&xdr, fp, XDR_ENCODE); if (!xdr_guestfish_hello (&xdr, &hello)) { - fprintf (stderr, _("guestfish: protocol error: could not send initial greeting to server\n")); + fprintf (stderr, _("guestfish: protocol error: could not send initial " + "greeting to server\n")); xdr_destroy (&xdr); fclose (fp); return -1; @@ -398,12 +407,13 @@ rc_remote (int pid, const char *cmd, size_t argc, char *argv[], /* Send the command. The server supports reading multiple commands * per connection, but this code only ever sends one command. */ - call.cmd = (char *) cmd; + call.cmd = (char *)cmd; call.args.args_len = argc; call.args.args_val = argv; call.exit_on_error = exit_on_error; if (!xdr_guestfish_call (&xdr, &call)) { - fprintf (stderr, _("guestfish: protocol error: could not send initial greeting to server\n")); + fprintf (stderr, _("guestfish: protocol error: could not send initial " + "greeting to server\n")); xdr_destroy (&xdr); fclose (fp); return -1; @@ -414,7 +424,8 @@ rc_remote (int pid, const char *cmd, size_t argc, char *argv[], xdrstdio_create (&xdr, fp, XDR_DECODE); if (!xdr_guestfish_reply (&xdr, &reply)) { - fprintf (stderr, _("guestfish: protocol error: could not decode reply from server\n")); + fprintf (stderr, _("guestfish: protocol error: could not decode reply " + "from server\n")); xdr_destroy (&xdr); fclose (fp); return -1; diff --git a/fish/reopen.c b/fish/reopen.c index ffe5509..5785835 100644 --- a/fish/reopen.c +++ b/fish/reopen.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -49,7 +50,8 @@ run_reopen (const char *cmd, size_t argc, char *argv[]) */ g2 = guestfs_create (); if (g2 == NULL) { - fprintf (stderr, _("reopen: guestfs_create: failed to create handle\n")); + fprintf (stderr, + _("reopen: guestfs_create: failed to create handle\n")); return -1; } diff --git a/fish/setenv.c b/fish/setenv.c index 5c6c08f..a5b0e91 100644 --- a/fish/setenv.c +++ b/fish/setenv.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -32,7 +33,8 @@ run_setenv (const char *cmd, size_t argc, char *argv[]) const char *value; if (argc != 2) { - fprintf (stderr, _("use '%s VAR value' to set an environment variable\n"), + fprintf (stderr, + _("use '%s VAR value' to set an environment variable\n"), cmd); return -1; } diff --git a/fish/supported.c b/fish/supported.c index f54aee1..9934f21 100644 --- a/fish/supported.c +++ b/fish/supported.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -53,7 +54,7 @@ run_supported (const char *cmd, size_t argc, char *argv[]) int r = guestfs_available (g, gg); const char *str = r == 0 ? _("yes") : _("no"); - printf ("%*s %s\n", (int) len, groups[i], str); + printf ("%*s %s\n", (int)len, groups[i], str); } /* Restore error handler. */ diff --git a/fish/tilde.c b/fish/tilde.c index 0d7dfa2..3394b92 100644 --- a/fish/tilde.c +++ b/fish/tilde.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -43,9 +44,9 @@ try_tilde_expansion (char *str) assert (str[0] == '~'); /* Expand "~" to current user's home directory. */ - if (str[1] == '\0') /* ~ */ + if (str[1] == '\0') /* ~ */ return expand_home (str, NULL); - else if (str[1] == '/') /* ~/... */ + else if (str[1] == '/') /* ~/... */ return expand_home (str, &str[1]); /* Try expanding the part up to the following '\0' or '/' as a @@ -54,7 +55,7 @@ try_tilde_expansion (char *str) else { const char *home, *rest; size_t len = strcspn (&str[1], "/"); - rest = &str[1+len]; + rest = &str[1 + len]; home = find_home_for_username (&str[1], len); diff --git a/fish/time.c b/fish/time.c index 3d1c7bc..1bc28f0 100644 --- a/fish/time.c +++ b/fish/time.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -45,12 +46,11 @@ run_time (const char *cmd, size_t argc, char *argv[]) gettimeofday (&end_t, NULL); - start_us = (int64_t) start_t.tv_sec * 1000000 + start_t.tv_usec; - end_us = (int64_t) end_t.tv_sec * 1000000 + end_t.tv_usec; + start_us = (int64_t)start_t.tv_sec * 1000000 + start_t.tv_usec; + end_us = (int64_t)end_t.tv_sec * 1000000 + end_t.tv_usec; elapsed_us = end_us - start_us; - printf ("elapsed time: %d.%02d seconds\n", - (int) (elapsed_us / 1000000), - (int) ((elapsed_us / 10000) % 100)); + printf ("elapsed time: %d.%02d seconds\n", (int)(elapsed_us / 1000000), + (int)((elapsed_us / 10000) % 100)); return 0; } diff --git a/fish/uri.c b/fish/uri.c index 33e820c..c973d1d 100644 --- a/fish/uri.c +++ b/fish/uri.c @@ -34,7 +34,9 @@ #include "uri.h" static int is_uri (const char *arg); -static int parse (const char *arg, char **path_ret, char **protocol_ret, char ***server_ret, char **username_ret, char **password_ret); +static int parse (const char *arg, char **path_ret, char **protocol_ret, + char ***server_ret, char **username_ret, + char **password_ret); static char *query_get (xmlURIPtr uri, const char *search_name); static int make_server (xmlURIPtr uri, const char *socket, char ***ret); @@ -51,8 +53,7 @@ parse_uri (const char *arg, struct uri *uri_ret) if (is_uri (arg)) { if (parse (arg, &path, &protocol, &server, &username, &password) == -1) return -1; - } - else { + } else { /* Ordinary file. */ path = strdup (arg); if (!path) { @@ -128,14 +129,16 @@ parse (const char *arg, char **path_ret, char **protocol_ret, socket = query_get (uri, "socket"); if (uri->server && STRNEQ (uri->server, "") && socket) { - fprintf (stderr, _("%s: %s: cannot both a server name and a socket query parameter\n"), + fprintf (stderr, _("%s: %s: cannot both a server name and a socket " + "query parameter\n"), guestfs_int_program_name, arg); return -1; } /* Is this needed? XXX if (socket && socket[0] != '/') { - fprintf (stderr, _("%s: --add %s: socket query parameter must be an absolute path\n"), + fprintf (stderr, _("%s: --add %s: socket query parameter must be an + absolute path\n"), guestfs_int_program_name, arg); return -1; } @@ -157,8 +160,8 @@ parse (const char *arg, char **path_ret, char **protocol_ret, if (uri->user && STRNEQ (uri->user, "")) { char *p = strchr (uri->user, ':'); if (p != NULL) { - if (STRNEQ (p+1, "")) { - *password_ret = strdup (p+1); + if (STRNEQ (p + 1, "")) { + *password_ret = strdup (p + 1); if (*password_ret == NULL) { perror ("strdup: password"); free (*protocol_ret); @@ -185,10 +188,8 @@ parse (const char *arg, char **path_ret, char **protocol_ret, */ path = uri->path; if (path && path[0] == '/' && - (STREQ (uri->scheme, "gluster") || - STREQ (uri->scheme, "iscsi") || - STREQ (uri->scheme, "rbd") || - STREQ (uri->scheme, "sheepdog"))) + (STREQ (uri->scheme, "gluster") || STREQ (uri->scheme, "iscsi") || + STREQ (uri->scheme, "rbd") || STREQ (uri->scheme, "sheepdog"))) path++; *path_ret = strdup (path ? path : ""); @@ -224,13 +225,14 @@ query_get (xmlURIPtr uri, const char *search_name) /* Find the next separator, or end of the string. */ end = strchr (query, '&'); if (!end) - end = strchr(query, ';'); + end = strchr (query, ';'); if (!end) end = query + strlen (query); /* Find the first '=' character between here and end. */ - eq = strchr(query, '='); - if (eq && eq >= end) eq = NULL; + eq = strchr (query, '='); + if (eq && eq >= end) + eq = NULL; /* Empty section (eg. "&&"). */ if (end == query) @@ -241,14 +243,16 @@ query_get (xmlURIPtr uri, const char *search_name) */ else if (!eq) { name = xmlURIUnescapeString (query, end - query, NULL); - if (!name) goto no_memory; + if (!name) + goto no_memory; } /* Or if we have "name=" here (works around annoying * problem when calling xmlURIUnescapeString with len = 0). */ - else if (eq+1 == end) { + else if (eq + 1 == end) { name = xmlURIUnescapeString (query, eq - query, NULL); - if (!name) goto no_memory; + if (!name) + goto no_memory; } /* If the '=' character is at the beginning then we have * "=value" and consistent with CGI.pm we _ignore_ this. @@ -261,7 +265,7 @@ query_get (xmlURIPtr uri, const char *search_name) name = xmlURIUnescapeString (query, eq - query, NULL); if (!name) goto no_memory; - value = xmlURIUnescapeString (eq+1, end - (eq+1), NULL); + value = xmlURIUnescapeString (eq + 1, end - (eq + 1), NULL); if (!value) { goto no_memory; } @@ -288,7 +292,7 @@ query_get (xmlURIPtr uri, const char *search_name) /* search_name not found */ return NULL; - no_memory: +no_memory: perror ("malloc"); return NULL; } @@ -310,8 +314,7 @@ make_server (xmlURIPtr uri, const char *socket, char ***ret) perror ("asprintf"); return -1; } - } - else { + } else { if (asprintf (&server, "tcp:%s:%d", uri->server, uri->port) == -1) { perror ("asprintf"); return -1; diff --git a/fish/uri.h b/fish/uri.h index 9202a70..d7d004c 100644 --- a/fish/uri.h +++ b/fish/uri.h @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -21,12 +22,13 @@ #ifndef FISH_URI_H #define FISH_URI_H -struct uri { - char *path; /* disk path */ - char *protocol; /* protocol (eg. "file", "nbd") */ - char **server; /* server(s) - can be NULL */ - char *username; /* username - can be NULL */ - char *password; /* password - can be NULL */ +struct uri +{ + char *path; /* disk path */ + char *protocol; /* protocol (eg. "file", "nbd") */ + char **server; /* server(s) - can be NULL */ + char *username; /* username - can be NULL */ + char *password; /* password - can be NULL */ }; /* Parse the '-a' option parameter 'arg', and place the result in diff --git a/fish/windows.c b/fish/windows.c index 0634406..bc2cc69 100644 --- a/fish/windows.c +++ b/fish/windows.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -49,7 +50,8 @@ is_windows (guestfs_h *g, const char *root) } char * -windows_path (guestfs_h *g, const char *root, const char *path, int readonly) +windows_path (guestfs_h *g, const char *root, const char *path, + int readonly) { char *ret; size_t i; @@ -62,13 +64,11 @@ windows_path (guestfs_h *g, const char *root, const char *path, int readonly) ret = strdup (path + 2); if (ret == NULL) error (EXIT_FAILURE, errno, "strdup"); - } - else if (!*path) { + } else if (!*path) { ret = strdup ("/"); if (ret == NULL) error (EXIT_FAILURE, errno, "strdup"); - } - else { + } else { ret = strdup (path); if (ret == NULL) error (EXIT_FAILURE, errno, "strdup"); @@ -96,9 +96,10 @@ mount_drive_letter (guestfs_h *g, char drive_letter, const char *root, /* Resolve the drive letter using the drive mappings table. */ CLEANUP_FREE_STRING_LIST char **drives = - guestfs_inspect_get_drive_mappings (g, root); + guestfs_inspect_get_drive_mappings (g, root); if (drives == NULL || drives[0] == NULL) { - fprintf (stderr, _("%s: to use Windows drive letters, this must be a Windows guest\n"), + fprintf (stderr, _("%s: to use Windows drive letters, this must be a " + "Windows guest\n"), guestfs_int_program_name); exit (EXIT_FAILURE); } @@ -106,7 +107,7 @@ mount_drive_letter (guestfs_h *g, char drive_letter, const char *root, device = NULL; for (i = 0; drives[i] != NULL; i += 2) { if (c_tolower (drives[i][0]) == drive_letter && drives[i][1] == '\0') { - device = drives[i+1]; + device = drives[i + 1]; break; } } diff --git a/fish/windows.h b/fish/windows.h index f684784..f8d2570 100644 --- a/fish/windows.h +++ b/fish/windows.h @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #ifndef FISH_WINDOWS_H diff --git a/format/format.c b/format/format.c index 4aa31de..fa4fc84 100644 --- a/format/format.c +++ b/format/format.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -56,11 +57,10 @@ static void parse_vg_lv (const char *lvm); static int do_format (void); static int do_rescan (char **devices); -static void __attribute__((noreturn)) -usage (int status) +static void __attribute__ ((noreturn)) usage (int status) { char *warning = - _("IMPORTANT NOTE: This program ERASES ALL DATA on disks."); + _("IMPORTANT NOTE: This program ERASES ALL DATA on disks."); if (status != EXIT_SUCCESS) fprintf (stderr, _("Try `%s --help' for more information.\n%s\n"), @@ -88,9 +88,8 @@ usage (int status) "For more information, see the manpage %s(1).\n" "\n" "%s\n\n"), - guestfs_int_program_name, warning, - guestfs_int_program_name, guestfs_int_program_name, - warning); + guestfs_int_program_name, warning, guestfs_int_program_name, + guestfs_int_program_name, warning); } exit (status); } @@ -133,10 +132,11 @@ main (int argc, char *argv[]) for (;;) { c = getopt_long (argc, argv, options, long_options, &option_index); - if (c == -1) break; + if (c == -1) + break; switch (c) { - case 0: /* options which are long only */ + case 0: /* options which are long only */ if (STREQ (long_options[option_index].name, "long-options")) display_long_options (long_options); else if (STREQ (long_options[option_index].name, "short-options")) @@ -159,8 +159,7 @@ main (int argc, char *argv[]) lv = strdup ("LV"); if (!vg || !lv) error (EXIT_FAILURE, errno, "strdup"); - } - else if (STREQ (optarg, "none")) + } else if (STREQ (optarg, "none")) vg = lv = NULL; else parse_vg_lv (optarg); @@ -176,8 +175,7 @@ main (int argc, char *argv[]) } else if (STREQ (long_options[option_index].name, "label")) { label = optarg; } else - error (EXIT_FAILURE, 0, - _("unknown long option: %s (%d)"), + error (EXIT_FAILURE, 0, _("unknown long option: %s (%d)"), long_options[option_index].name, option_index); break; @@ -242,7 +240,7 @@ main (int argc, char *argv[]) exit (EXIT_FAILURE); /* Test if the wipefs API is available. */ - have_wipefs = guestfs_feature_available (g, (char **) wipefs); + have_wipefs = guestfs_feature_available (g, (char **)wipefs); /* Perform the format. */ retry = do_format (); @@ -261,8 +259,7 @@ main (int argc, char *argv[]) exit (EXIT_FAILURE); guestfs_close (g); g = g2; - } - else + } else /* Failed. */ error (EXIT_FAILURE, 0, _("failed to rescan the disks after two attempts. This\n" @@ -301,7 +298,7 @@ parse_vg_lv (const char *lvm) error (EXIT_FAILURE, errno, "strdup"); } else cannot_parse: - error (EXIT_FAILURE, 0, _("cannot parse --lvm option (%s)"), lvm); + error (EXIT_FAILURE, 0, _("cannot parse --lvm option (%s)"), lvm); if (strchr (vg, '/') || strchr (lv, '/')) goto cannot_parse; @@ -313,8 +310,7 @@ do_format (void) { size_t i; - CLEANUP_FREE_STRING_LIST char **devices = - guestfs_list_devices (g); + CLEANUP_FREE_STRING_LIST char **devices = guestfs_list_devices (g); if (devices == NULL) exit (EXIT_FAILURE); @@ -328,8 +324,7 @@ do_format (void) if (guestfs_zero (g, devices[i]) == -1) exit (EXIT_FAILURE); } - } - else /* wipe */ { + } else /* wipe */ { for (i = 0; devices[i] != NULL; ++i) { if (guestfs_zero_device (g, devices[i]) == -1) exit (EXIT_FAILURE); @@ -356,12 +351,14 @@ do_format (void) const char *ptype = partition; int64_t dev_size; - /* If partition has the magic value "DEFAULT", choose either MBR or GPT.*/ + /* If partition has the magic value "DEFAULT", choose either MBR or + * GPT.*/ if (STREQ (partition, "DEFAULT")) { dev_size = guestfs_blockdev_getsize64 (g, devices[i]); if (dev_size == -1) exit (EXIT_FAILURE); - ptype = dev_size < INT64_C(2)*1024*1024*1024*1024 ? "mbr" : "gpt"; + ptype = dev_size < INT64_C (2) * 1024 * 1024 * 1024 * 1024 ? "mbr" + : "gpt"; } if (guestfs_part_disk (g, devices[i], ptype) == -1) @@ -416,7 +413,7 @@ do_format (void) } if (filesystem) { - struct guestfs_mkfs_opts_argv optargs = { .bitmask = 0 }; + struct guestfs_mkfs_opts_argv optargs = {.bitmask = 0 }; if (label) { optargs.label = label; diff --git a/fuse/guestmount.c b/fuse/guestmount.c index fc03a9c..323ecec 100644 --- a/fuse/guestmount.c +++ b/fuse/guestmount.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #define FUSE_USE_VERSION 26 @@ -53,8 +54,8 @@ static int write_pid_file (const char *pid_file, pid_t pid); static void fuse_opt_add_opt_escaped (char **opts, const char *opt) { - unsigned oldlen = *opts ? strlen(*opts) : 0; - char *d = realloc (*opts, oldlen + 1 + strlen(opt) * 2 + 1); + unsigned oldlen = *opts ? strlen (*opts) : 0; + char *d = realloc (*opts, oldlen + 1 + strlen (opt) * 2 + 1); if (!d) error (EXIT_FAILURE, errno, "realloc"); @@ -83,54 +84,55 @@ int keys_from_stdin = 0; int echo_keys = 0; const char *libvirt_uri; -static void __attribute__((noreturn)) -fuse_help (void) +static void __attribute__ ((noreturn)) fuse_help (void) { static struct fuse_operations null_operations; const char *tmp_argv[] = { guestfs_int_program_name, "--help", NULL }; - fuse_main (2, (char **) tmp_argv, &null_operations, NULL); + fuse_main (2, (char **)tmp_argv, &null_operations, NULL); exit (EXIT_SUCCESS); } -static void __attribute__((noreturn)) -usage (int status) +static void __attribute__ ((noreturn)) usage (int status) { if (status != EXIT_SUCCESS) fprintf (stderr, _("Try `%s --help' for more information.\n"), guestfs_int_program_name); else { - printf (_("%s: FUSE module for libguestfs\n" - "%s lets you mount a virtual machine filesystem\n" - "Copyright (C) 2009-2016 Red Hat Inc.\n" - "Usage:\n" - " %s [--options] mountpoint\n" - "Options:\n" - " -a|--add image Add image\n" - " -c|--connect uri Specify libvirt URI for -d option\n" - " --dir-cache-timeout Set readdir cache timeout (default 5 sec)\n" - " -d|--domain guest Add disks from libvirt guest\n" - " --echo-keys Don't turn off echo for passphrases\n" - " --fd=FD Write to pipe FD when mountpoint is ready\n" - " --format[=raw|..] Force disk format for -a option\n" - " --fuse-help Display extra FUSE options\n" - " -i|--inspector Automatically mount filesystems\n" - " --help Display help message and exit\n" - " --keys-from-stdin Read passphrases from stdin\n" - " --live Connect to a live virtual machine\n" - " -m|--mount dev[:mnt[:opts[:fstype]] Mount dev on mnt (if omitted, /)\n" - " --no-fork Don't daemonize\n" - " -n|--no-sync Don't autosync\n" - " -o|--option opt Pass extra option to FUSE\n" - " --pid-file filename Write PID to filename\n" - " -r|--ro Mount read-only\n" - " --selinux Enable SELinux support\n" - " -v|--verbose Verbose messages\n" - " -V|--version Display version and exit\n" - " -w|--rw Mount read-write\n" - " -x|--trace Trace guestfs API calls\n" - ), - guestfs_int_program_name, guestfs_int_program_name, - guestfs_int_program_name); + printf ( + _("%s: FUSE module for libguestfs\n" + "%s lets you mount a virtual machine filesystem\n" + "Copyright (C) 2009-2016 Red Hat Inc.\n" + "Usage:\n" + " %s [--options] mountpoint\n" + "Options:\n" + " -a|--add image Add image\n" + " -c|--connect uri Specify libvirt URI for -d option\n" + " --dir-cache-timeout Set readdir cache timeout (default 5 " + "sec)\n" + " -d|--domain guest Add disks from libvirt guest\n" + " --echo-keys Don't turn off echo for passphrases\n" + " --fd=FD Write to pipe FD when mountpoint is " + "ready\n" + " --format[=raw|..] Force disk format for -a option\n" + " --fuse-help Display extra FUSE options\n" + " -i|--inspector Automatically mount filesystems\n" + " --help Display help message and exit\n" + " --keys-from-stdin Read passphrases from stdin\n" + " --live Connect to a live virtual machine\n" + " -m|--mount dev[:mnt[:opts[:fstype]] Mount dev on mnt (if " + "omitted, /)\n" + " --no-fork Don't daemonize\n" + " -n|--no-sync Don't autosync\n" + " -o|--option opt Pass extra option to FUSE\n" + " --pid-file filename Write PID to filename\n" + " -r|--ro Mount read-only\n" + " --selinux Enable SELinux support\n" + " -v|--verbose Verbose messages\n" + " -V|--version Display version and exit\n" + " -w|--rw Mount read-write\n" + " -x|--trace Trace guestfs API calls\n"), + guestfs_int_program_name, guestfs_int_program_name, + guestfs_int_program_name); } exit (status); } @@ -212,10 +214,11 @@ main (int argc, char *argv[]) for (;;) { c = getopt_long (argc, argv, options, long_options, &option_index); - if (c == -1) break; + if (c == -1) + break; switch (c) { - case 0: /* options which are long only */ + case 0: /* options which are long only */ if (STREQ (long_options[option_index].name, "long-options")) display_long_options (long_options); else if (STREQ (long_options[option_index].name, "short-options")) @@ -229,7 +232,8 @@ main (int argc, char *argv[]) exit (EXIT_FAILURE); } else if (STREQ (long_options[option_index].name, "format")) { OPTION_format; - } else if (STREQ (long_options[option_index].name, "keys-from-stdin")) { + } else if (STREQ (long_options[option_index].name, + "keys-from-stdin")) { keys_from_stdin = 1; } else if (STREQ (long_options[option_index].name, "echo-keys")) { echo_keys = 1; @@ -244,8 +248,7 @@ main (int argc, char *argv[]) error (EXIT_FAILURE, 0, _("unable to parse --fd option value: %s"), optarg); } else - error (EXIT_FAILURE, 0, - _("unknown long option: %s (%d)"), + error (EXIT_FAILURE, 0, _("unknown long option: %s (%d)"), long_options[option_index].name, option_index); break; @@ -312,17 +315,20 @@ main (int argc, char *argv[]) /* Check we have the right options. */ if (!live) { if (!drvs || !(mps || inspector)) - error (EXIT_FAILURE, 0, - _("must have at least one -a/-d and at least one -m/-i option")); + error ( + EXIT_FAILURE, 0, + _("must have at least one -a/-d and at least one -m/-i option")); } else { size_t count_d = 0, count_other = 0; struct drv *drv; if (read_only) - error (EXIT_FAILURE, 0, _("--live is not compatible with --ro option")); + error (EXIT_FAILURE, 0, + _("--live is not compatible with --ro option")); if (inspector) - error (EXIT_FAILURE, 0, _("--live is not compatible with -i option")); + error (EXIT_FAILURE, 0, + _("--live is not compatible with -i option")); /* --live: make sure there was one -d option and no -a options */ for (drv = drvs; drv; drv = drv->next) { @@ -337,11 +343,12 @@ main (int argc, char *argv[]) _("with --live, you must use exactly one -d option")); if (count_other != 0) - error (EXIT_FAILURE, 0, _("--live is not compatible with -a option")); + error (EXIT_FAILURE, 0, + _("--live is not compatible with -a option")); } /* We'd better have a mountpoint. */ - if (optind+1 != argc) + if (optind + 1 != argc) error (EXIT_FAILURE, 0, _("you must specify a mountpoint in the host filesystem")); @@ -394,7 +401,7 @@ main (int argc, char *argv[]) if (pid == -1) error (EXIT_FAILURE, errno, "fork"); - if (pid != 0) { /* parent */ + if (pid != 0) { /* parent */ if (write_pid_file (pid_file, pid) == -1) _exit (EXIT_FAILURE); if (write_pipe_fd (pipe_fd) == -1) @@ -417,8 +424,7 @@ main (int argc, char *argv[]) if (fd > 2) close (fd); } - } - else { + } else { /* not forking, write PID file and pipe FD anyway */ if (write_pid_file (pid_file, getpid ()) == -1) exit (EXIT_FAILURE); diff --git a/fuse/guestunmount.c b/fuse/guestunmount.c index 06db4ef..eeff0df 100644 --- a/fuse/guestunmount.c +++ b/fuse/guestunmount.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -46,27 +47,26 @@ static bool quiet = false; static size_t retries = 5; static bool verbose = false; -static void __attribute__((noreturn)) -usage (int status) +static void __attribute__ ((noreturn)) usage (int status) { if (status != EXIT_SUCCESS) fprintf (stderr, _("Try `%s --help' for more information.\n"), guestfs_int_program_name); else { - printf (_("%s: clean up a mounted filesystem\n" - "Copyright (C) 2013 Red Hat Inc.\n" - "Usage:\n" - " %s [--fd=FD] mountpoint\n" - "Options:\n" - " --fd=FD Pipe file descriptor to monitor\n" - " --help Display help message and exit\n" - " -q|--quiet Don't print fusermount errors\n" - " --no-retry Don't retry fusermount\n" - " --retry=N Retry fusermount N times (default: 5)\n" - " -v|--verbose Verbose messages\n" - " -V|--version Display version and exit\n" - ), - guestfs_int_program_name, guestfs_int_program_name); + printf ( + _("%s: clean up a mounted filesystem\n" + "Copyright (C) 2013 Red Hat Inc.\n" + "Usage:\n" + " %s [--fd=FD] mountpoint\n" + "Options:\n" + " --fd=FD Pipe file descriptor to monitor\n" + " --help Display help message and exit\n" + " -q|--quiet Don't print fusermount errors\n" + " --no-retry Don't retry fusermount\n" + " --retry=N Retry fusermount N times (default: 5)\n" + " -v|--verbose Verbose messages\n" + " -V|--version Display version and exit\n"), + guestfs_int_program_name, guestfs_int_program_name); } exit (status); } @@ -78,14 +78,10 @@ main (int argc, char *argv[]) static const char *options = "qv?V"; static const struct option long_options[] = { - { "fd", 1, 0, 0 }, - { "help", 0, 0, HELP_OPTION }, - { "quiet", 0, 0, 'q' }, - { "no-retry", 0, 0, 0 }, - { "retry", 1, 0, 0 }, - { "verbose", 0, 0, 'v' }, - { "version", 0, 0, 'V' }, - { 0, 0, 0, 0 } + { "fd", 1, 0, 0 }, { "help", 0, 0, HELP_OPTION }, + { "quiet", 0, 0, 'q' }, { "no-retry", 0, 0, 0 }, + { "retry", 1, 0, 0 }, { "verbose", 0, 0, 'v' }, + { "version", 0, 0, 'V' }, { 0, 0, 0, 0 } }; int c, fd = -1; @@ -102,10 +98,11 @@ main (int argc, char *argv[]) for (;;) { c = getopt_long (argc, argv, options, long_options, &option_index); - if (c == -1) break; + if (c == -1) + break; switch (c) { - case 0: /* options which are long only */ + case 0: /* options which are long only */ if (STREQ (long_options[option_index].name, "fd")) { if (sscanf (optarg, "%d", &fd) != 1 || fd < 0) { fprintf (stderr, _("%s: cannot parse fd option '%s'\n"), @@ -116,13 +113,15 @@ main (int argc, char *argv[]) retries = 0; } else if (STREQ (long_options[option_index].name, "retry")) { if (sscanf (optarg, "%zu", &retries) != 1 || retries >= 64) { - fprintf (stderr, _("%s: cannot parse retries option or value is too large '%s'\n"), + fprintf (stderr, _("%s: cannot parse retries option or value is " + "too large '%s'\n"), guestfs_int_program_name, optarg); exit (EXIT_FAILURE); } } else { fprintf (stderr, _("%s: unknown long option: %s (%d)\n"), - guestfs_int_program_name, long_options[option_index].name, option_index); + guestfs_int_program_name, long_options[option_index].name, + option_index); exit (EXIT_FAILURE); } break; @@ -148,10 +147,11 @@ main (int argc, char *argv[]) } /* We'd better have a mountpoint. */ - if (optind+1 != argc) { - fprintf (stderr, - _("%s: you must specify a mountpoint in the host filesystem\n"), - guestfs_int_program_name); + if (optind + 1 != argc) { + fprintf ( + stderr, + _("%s: you must specify a mountpoint in the host filesystem\n"), + guestfs_int_program_name); exit (EXIT_FAILURE); } @@ -175,8 +175,7 @@ main (int argc, char *argv[]) if (poll (&pollfd, 1, -1) == -1) { if (errno != EAGAIN && errno != EINTR) error (EXIT_FAILURE, errno, "poll"); - } - else { + } else { if ((pollfd.revents & POLLHUP) != 0) break; } @@ -186,7 +185,7 @@ main (int argc, char *argv[]) /* Unmount the filesystem. We may have to try a few times. */ for (i = 0; i <= retries; ++i) { if (i > 0) - sleep (1 << (i-1)); + sleep (1 << (i - 1)); free (error_str); error_str = NULL; @@ -195,8 +194,7 @@ main (int argc, char *argv[]) goto done; /* Did fusermount fail because the mountpoint is not mounted? */ - if (error_str && - strstr (error_str, "fusermount: entry for") != NULL) { + if (error_str && strstr (error_str, "fusermount: entry for") != NULL) { goto not_mounted; } } @@ -211,8 +209,8 @@ main (int argc, char *argv[]) exit (2); - /* not mounted */ - not_mounted: +/* not mounted */ +not_mounted: if (!quiet) fprintf (stderr, _("%s: %s is not mounted: %s\n"), guestfs_int_program_name, mountpoint, error_str); @@ -221,8 +219,8 @@ main (int argc, char *argv[]) exit (3); - /* success */ - done: +/* success */ +done: exit (EXIT_SUCCESS); } @@ -246,7 +244,7 @@ do_fusermount (const char *mountpoint, char **error_rtn) if (pid == -1) error (EXIT_FAILURE, errno, "fork"); - if (pid == 0) { /* Child - run fusermount. */ + if (pid == 0) { /* Child - run fusermount. */ close (fd[0]); dup2 (fd[1], 1); dup2 (fd[1], 2); @@ -292,8 +290,8 @@ do_fusermount (const char *mountpoint, char **error_rtn) if (buf) { /* Remove any trailing \n from the error message. */ - while (len > 0 && buf[len-1] == '\n') { - buf[len-1] = '\0'; + while (len > 0 && buf[len - 1] == '\n') { + buf[len - 1] = '\0'; len--; } @@ -310,7 +308,7 @@ do_fusermount (const char *mountpoint, char **error_rtn) fprintf (stderr, "%s\n", buf); *error_rtn = buf; - return 1; /* fusermount or exec failed */ + return 1; /* fusermount or exec failed */ } if (verbose) @@ -318,7 +316,7 @@ do_fusermount (const char *mountpoint, char **error_rtn) guestfs_int_program_name); free (buf); - return 0; /* fusermount successful */ + return 0; /* fusermount successful */ } /* Try running 'fuser' on the mountpoint. This is for information @@ -333,7 +331,7 @@ do_fuser (const char *mountpoint) if (pid == -1) error (EXIT_FAILURE, errno, "fork"); - if (pid == 0) { /* Child - run fuser. */ + if (pid == 0) { /* Child - run fuser. */ #ifdef __linux__ execlp (FUSER, "fuser", "-v", "-m", mountpoint, NULL); #else diff --git a/fuse/test-fuse.c b/fuse/test-fuse.c index 35d75d5..f0a8cc1 100644 --- a/fuse/test-fuse.c +++ b/fuse/test-fuse.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ /* This used to be a shell script test, but using C gives us finer @@ -56,7 +57,7 @@ static guestfs_h *g; -#define SIZE INT64_C(1024*1024*1024) +#define SIZE INT64_C (1024 * 1024 * 1024) /* NB: Must be a path that does not need quoting. */ static char mountpoint[] = "/tmp/testfuseXXXXXX"; @@ -102,12 +103,14 @@ main (int argc, char *argv[]) exit (EXIT_FAILURE); /* Test features. */ - acl_available = guestfs_feature_available (g, (char **) acl_group); - if (acl_available == -1) exit (EXIT_FAILURE); + acl_available = guestfs_feature_available (g, (char **)acl_group); + if (acl_available == -1) + exit (EXIT_FAILURE); linuxxattrs_available = - guestfs_feature_available (g, (char **) linuxxattrs_group); - if (linuxxattrs_available == -1) exit (EXIT_FAILURE); + guestfs_feature_available (g, (char **)linuxxattrs_group); + if (linuxxattrs_available == -1) + exit (EXIT_FAILURE); create_initial_filesystem (); @@ -117,9 +120,8 @@ main (int argc, char *argv[]) /* Mount the filesystem on the host using FUSE. */ debug_calls = guestfs_get_trace (g); - if (guestfs_mount_local (g, mountpoint, - GUESTFS_MOUNT_LOCAL_DEBUGCALLS, debug_calls, - -1) == -1) + if (guestfs_mount_local (g, mountpoint, GUESTFS_MOUNT_LOCAL_DEBUGCALLS, + debug_calls, -1) == -1) exit (EXIT_FAILURE); /* Fork to run the next part of the test. */ @@ -127,7 +129,7 @@ main (int argc, char *argv[]) if (pid == -1) error (EXIT_FAILURE, errno, "fork"); - if (pid == 0) { /* Child. */ + if (pid == 0) { /* Child. */ /* Move into the mountpoint for the tests. */ if (chdir (mountpoint) == -1) { perror (mountpoint); @@ -155,7 +157,8 @@ main (int argc, char *argv[]) fflush (stdout); r = system (cmd); if (!WIFEXITED (r) || WEXITSTATUS (r) != EXIT_SUCCESS) - fprintf (stderr, "%s: warning: guestunmount command failed\n", argv[0]); + fprintf (stderr, "%s: warning: guestunmount command failed\n", + argv[0]); _exit (res == 0 ? EXIT_SUCCESS : EXIT_FAILURE); } @@ -184,7 +187,8 @@ main (int argc, char *argv[]) guestfs_close (g); /* Did the child process fail? */ - exit (!WIFEXITED (r) || WEXITSTATUS (r) != 0 ? EXIT_FAILURE : EXIT_SUCCESS); + exit (!WIFEXITED (r) || WEXITSTATUS (r) != 0 ? EXIT_FAILURE + : EXIT_SUCCESS); } /* Create a filesystem with some initial content. */ @@ -197,9 +201,8 @@ create_initial_filesystem (void) /* Use ext4 because it supports modern features. Use >= 256 byte * inodes because these support nanosecond timestamps. */ - if (guestfs_mkfs_opts (g, "ext4", "/dev/sda1", - GUESTFS_MKFS_OPTS_INODE, 256, - -1) == -1) + if (guestfs_mkfs_opts (g, "ext4", "/dev/sda1", GUESTFS_MKFS_OPTS_INODE, + 256, -1) == -1) exit (EXIT_FAILURE); if (guestfs_mount_options (g, "acl,user_xattr", "/dev/sda1", "/") == -1) @@ -218,7 +221,8 @@ create_initial_filesystem (void) if (guestfs_touch (g, "/user_xattr") == -1) exit (EXIT_FAILURE); - if (guestfs_setxattr (g, "user.test", "hello123", 8, "/user_xattr") == -1) + if (guestfs_setxattr (g, "user.test", "hello123", 8, "/user_xattr") == + -1) exit (EXIT_FAILURE); } @@ -237,8 +241,8 @@ static int test_fuse (void) { int stage = 0; -#define STAGE(fs,...) \ - printf ("%02d: " fs "\n", ++stage, ##__VA_ARGS__); \ +#define STAGE(fs, ...) \ + printf ("%02d: " fs "\n", ++stage, ##__VA_ARGS__); \ fflush (stdout) FILE *fp; char *line = NULL; @@ -319,7 +323,8 @@ test_fuse (void) return -1; } if (statbuf.st_size != 0) { - fprintf (stderr, "'empty' has invalid size (%d)\n", (int) statbuf.st_size); + fprintf (stderr, "'empty' has invalid size (%d)\n", + (int)statbuf.st_size); return -1; } @@ -328,12 +333,13 @@ test_fuse (void) return -1; } if ((statbuf.st_mode & 0777) != 0644) { - fprintf (stderr, "'hello.txt' has invalid mode (%o)\n", statbuf.st_mode); + fprintf (stderr, "'hello.txt' has invalid mode (%o)\n", + statbuf.st_mode); return -1; } if (statbuf.st_size != 5) { fprintf (stderr, "'hello.txt' has invalid size (%d)\n", - (int) statbuf.st_size); + (int)statbuf.st_size); return -1; } @@ -342,12 +348,13 @@ test_fuse (void) return -1; } if ((statbuf.st_mode & 0777) != 0644) { - fprintf (stderr, "'world.txt' has invalid mode (%o)\n", statbuf.st_mode); + fprintf (stderr, "'world.txt' has invalid mode (%o)\n", + statbuf.st_mode); return -1; } if (statbuf.st_size != 11) { fprintf (stderr, "'world.txt' has invalid size (%d)\n", - (int) statbuf.st_size); + (int)statbuf.st_size); return -1; } @@ -403,7 +410,7 @@ test_fuse (void) } if (statbuf.st_nlink != 1) { fprintf (stderr, "nlink of 'hello.txt' was %d (expected 1)\n", - (int) statbuf.st_nlink); + (int)statbuf.st_nlink); return -1; } @@ -418,7 +425,7 @@ test_fuse (void) } if (statbuf.st_nlink != 2) { fprintf (stderr, "nlink of 'link' was %d (expected 2)\n", - (int) statbuf.st_nlink); + (int)statbuf.st_nlink); return -1; } @@ -428,7 +435,7 @@ test_fuse (void) } if (statbuf.st_nlink != 2) { fprintf (stderr, "nlink of 'hello.txt' was %d (expected 2)\n", - (int) statbuf.st_nlink); + (int)statbuf.st_nlink); return -1; } @@ -542,7 +549,7 @@ test_fuse (void) } if (statbuf.st_size != u) { fprintf (stderr, "unexpected size: was %u expected %u\n", - (unsigned) statbuf.st_size, u); + (unsigned)statbuf.st_size, u); return -1; } } @@ -553,15 +560,16 @@ test_fuse (void) STAGE ("checking utimes"); - fd = open ("timestamp", O_WRONLY|O_CREAT|O_TRUNC|O_NOCTTY|O_CLOEXEC, 0644); + fd = open ("timestamp", + O_WRONLY | O_CREAT | O_TRUNC | O_NOCTTY | O_CLOEXEC, 0644); if (fd == -1) { perror ("open: timestamp"); return -1; } close (fd); - tv[0].tv_sec = 23; /* atime */ + tv[0].tv_sec = 23; /* atime */ tv[0].tv_usec = 45; - tv[1].tv_sec = 67; /* mtime */ + tv[1].tv_sec = 67; /* mtime */ tv[1].tv_usec = 89; if (utimes ("timestamp", tv) == -1) { perror ("utimes: timestamp"); @@ -571,26 +579,25 @@ test_fuse (void) perror ("fstat: timestamp"); return -1; } - if (statbuf.st_atime != 23 || - statbuf.st_atim.tv_nsec != 45000 || - statbuf.st_mtime != 67 || - statbuf.st_mtim.tv_nsec != 89000) { + if (statbuf.st_atime != 23 || statbuf.st_atim.tv_nsec != 45000 || + statbuf.st_mtime != 67 || statbuf.st_mtim.tv_nsec != 89000) { fprintf (stderr, "utimes did not set time (%d/%d/%d/%d)\n", - (int) statbuf.st_atime, (int) statbuf.st_atim.tv_nsec, - (int) statbuf.st_mtime, (int) statbuf.st_mtim.tv_nsec); + (int)statbuf.st_atime, (int)statbuf.st_atim.tv_nsec, + (int)statbuf.st_mtime, (int)statbuf.st_mtim.tv_nsec); return -1; } STAGE ("checking utimens"); - fd = open ("timestamp", O_WRONLY|O_CREAT|O_TRUNC|O_NOCTTY|O_CLOEXEC, 0644); + fd = open ("timestamp", + O_WRONLY | O_CREAT | O_TRUNC | O_NOCTTY | O_CLOEXEC, 0644); if (fd == -1) { perror ("open: timestamp"); return -1; } - ts[0].tv_sec = 12; /* atime */ + ts[0].tv_sec = 12; /* atime */ ts[0].tv_nsec = 34; - ts[1].tv_sec = 56; /* mtime */ + ts[1].tv_sec = 56; /* mtime */ ts[1].tv_nsec = 78; if (futimens (fd, ts) == -1) { perror ("futimens: timestamp"); @@ -602,13 +609,11 @@ test_fuse (void) close (fd); return -1; } - if (statbuf.st_atime != 12 || - statbuf.st_atim.tv_nsec != 34 || - statbuf.st_mtime != 56 || - statbuf.st_mtim.tv_nsec != 78) { + if (statbuf.st_atime != 12 || statbuf.st_atim.tv_nsec != 34 || + statbuf.st_mtime != 56 || statbuf.st_mtim.tv_nsec != 78) { fprintf (stderr, "utimens did not set time (%d/%d/%d/%d)\n", - (int) statbuf.st_atime, (int) statbuf.st_atim.tv_nsec, - (int) statbuf.st_mtime, (int) statbuf.st_mtim.tv_nsec); + (int)statbuf.st_atime, (int)statbuf.st_atim.tv_nsec, + (int)statbuf.st_mtime, (int)statbuf.st_mtim.tv_nsec); close (fd); return -1; } @@ -658,16 +663,19 @@ test_fuse (void) STAGE ("checking POSIX ACL read operation"); acl = acl_get_file ("acl", ACL_TYPE_ACCESS); - if (acl == (acl_t) NULL) { + if (acl == (acl_t)NULL) { perror ("acl_get_file: acl"); return -1; } - acl_text = acl_to_any_text (acl, NULL, '\n', TEXT_SOME_EFFECTIVE | TEXT_NUMERIC_IDS); + acl_text = acl_to_any_text (acl, NULL, '\n', + TEXT_SOME_EFFECTIVE | TEXT_NUMERIC_IDS); if (acl_text == NULL) { perror ("acl_to_any_text: acl"); return -1; } - if (STRNEQ (acl_text, "user::rwx\nuser:500:r--\ngroup::rwx\nmask::rwx\nother::r-x")) { + if (STRNEQ ( + acl_text, + "user::rwx\nuser:500:r--\ngroup::rwx\nmask::rwx\nother::r-x")) { fprintf (stderr, "unexpected acl: %s\n", acl_text); return -1; } @@ -686,7 +694,8 @@ test_fuse (void) return -1; } if (r != 8 || memcmp (buf, "hello123", r) != 0) { - fprintf (stderr, "user.test xattr on file user_xattr was incorrect\n"); + fprintf (stderr, + "user.test xattr on file user_xattr was incorrect\n"); return -1; } } diff --git a/fuse/test-guestmount-fd.c b/fuse/test-guestmount-fd.c index 5f358bb..eb1af7f 100644 --- a/fuse/test-guestmount-fd.c +++ b/fuse/test-guestmount-fd.c @@ -88,16 +88,14 @@ main (int argc, char *argv[]) if (pid == -1) error (EXIT_FAILURE, errno, "fork"); - if (pid == 0) { /* child - guestmount */ + if (pid == 0) { /* child - guestmount */ char fd_str[64]; close (pipefd[0]); snprintf (fd_str, sizeof fd_str, "%d", pipefd[1]); - execlp (GUESTMOUNT_BINARY, - "guestmount", - "--fd", fd_str, "--no-fork", + execlp (GUESTMOUNT_BINARY, "guestmount", "--fd", fd_str, "--no-fork", "--ro", "-a", TEST_IMAGE, "-i", MOUNTPOINT, NULL); perror ("execlp"); _exit (EXIT_FAILURE); @@ -122,7 +120,8 @@ main (int argc, char *argv[]) /* Check that the test image was mounted. */ if (access (TEST_FILE, R_OK) == -1) { - fprintf (stderr, "%s: test failed because test image is not mounted and ready.", + fprintf (stderr, + "%s: test failed because test image is not mounted and ready.", guestfs_int_program_name); ignore_value (rmdir (MOUNTPOINT)); exit (EXIT_FAILURE); @@ -135,8 +134,8 @@ main (int argc, char *argv[]) fprintf (stderr, "%s: test failed: %s\n", guestfs_int_program_name, guestfs_int_exit_status_to_string (r, GUESTUNMOUNT_BINARY, - status_string, - sizeof status_string)); + status_string, + sizeof status_string)); ignore_value (rmdir (MOUNTPOINT)); exit (EXIT_FAILURE); } @@ -153,11 +152,10 @@ main (int argc, char *argv[]) if (!WIFEXITED (status) || WEXITSTATUS (status) != 0) { char status_string[80]; - fprintf (stderr, "%s: test failed: %s\n", - guestfs_int_program_name, + fprintf (stderr, "%s: test failed: %s\n", guestfs_int_program_name, guestfs_int_exit_status_to_string (status, GUESTMOUNT_BINARY, - status_string, - sizeof status_string)); + status_string, + sizeof status_string)); ignore_value (rmdir (MOUNTPOINT)); exit (EXIT_FAILURE); } diff --git a/fuse/test-guestunmount-fd.c b/fuse/test-guestunmount-fd.c index a937893..9f339f2 100644 --- a/fuse/test-guestunmount-fd.c +++ b/fuse/test-guestunmount-fd.c @@ -69,7 +69,7 @@ main (int argc, char *argv[]) if (pid == -1) error (EXIT_FAILURE, errno, "fork"); - if (pid == 0) { /* child - guestunmount */ + if (pid == 0) { /* child - guestunmount */ char fd_str[64]; close (pipefd[1]); @@ -95,9 +95,8 @@ main (int argc, char *argv[]) char status_string[80]; fprintf (stderr, "%s: test failed: %s\n", guestfs_int_program_name, - guestfs_int_exit_status_to_string (r, "guestunmount", - status_string, - sizeof status_string)); + guestfs_int_exit_status_to_string ( + r, "guestunmount", status_string, sizeof status_string)); exit (EXIT_FAILURE); } @@ -113,11 +112,12 @@ main (int argc, char *argv[]) if (!WIFEXITED (status) || WEXITSTATUS (status) != 3) { char status_string[80]; - fprintf (stderr, "%s: test failed: guestunmount didn't return status code 3; %s\n", - guestfs_int_program_name, - guestfs_int_exit_status_to_string (status, "guestunmount", - status_string, - sizeof status_string)); + fprintf ( + stderr, + "%s: test failed: guestunmount didn't return status code 3; %s\n", + guestfs_int_program_name, + guestfs_int_exit_status_to_string ( + status, "guestunmount", status_string, sizeof status_string)); exit (EXIT_FAILURE); } diff --git a/inspector/inspector.c b/inspector/inspector.c index 2519816..923a2a4 100644 --- a/inspector/inspector.c +++ b/inspector/inspector.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -63,35 +64,37 @@ static void output_drive_mappings (xmlTextWriterPtr xo, char *root); static void output_applications (xmlTextWriterPtr xo, char *root); static void do_xpath (const char *query); -static void __attribute__((noreturn)) -usage (int status) +static void __attribute__ ((noreturn)) usage (int status) { if (status != EXIT_SUCCESS) fprintf (stderr, _("Try `%s --help' for more information.\n"), guestfs_int_program_name); else { - printf (_("%s: display information about a virtual machine\n" - "Copyright (C) 2010 Red Hat Inc.\n" - "Usage:\n" - " %s [--options] -d domname file [file ...]\n" - " %s [--options] -a disk.img [-a disk.img ...] file [file ...]\n" - "Options:\n" - " -a|--add image Add image\n" - " -c|--connect uri Specify libvirt URI for -d option\n" - " -d|--domain guest Add disks from libvirt guest\n" - " --echo-keys Don't turn off echo for passphrases\n" - " --format[=raw|..] Force disk format for -a option\n" - " --help Display brief help\n" - " --keys-from-stdin Read passphrases from stdin\n" - " --no-applications Do not output the installed applications\n" - " --no-icon Do not output the guest icon\n" - " -v|--verbose Verbose messages\n" - " -V|--version Display version and exit\n" - " -x Trace libguestfs API calls\n" - " --xpath query Perform an XPath query\n" - "For more information, see the manpage %s(1).\n"), - guestfs_int_program_name, guestfs_int_program_name, - guestfs_int_program_name, guestfs_int_program_name); + printf ( + _("%s: display information about a virtual machine\n" + "Copyright (C) 2010 Red Hat Inc.\n" + "Usage:\n" + " %s [--options] -d domname file [file ...]\n" + " %s [--options] -a disk.img [-a disk.img ...] file [file " + "...]\n" + "Options:\n" + " -a|--add image Add image\n" + " -c|--connect uri Specify libvirt URI for -d option\n" + " -d|--domain guest Add disks from libvirt guest\n" + " --echo-keys Don't turn off echo for passphrases\n" + " --format[=raw|..] Force disk format for -a option\n" + " --help Display brief help\n" + " --keys-from-stdin Read passphrases from stdin\n" + " --no-applications Do not output the installed " + "applications\n" + " --no-icon Do not output the guest icon\n" + " -v|--verbose Verbose messages\n" + " -V|--version Display version and exit\n" + " -x Trace libguestfs API calls\n" + " --xpath query Perform an XPath query\n" + "For more information, see the manpage %s(1).\n"), + guestfs_int_program_name, guestfs_int_program_name, + guestfs_int_program_name, guestfs_int_program_name); } exit (status); } @@ -136,10 +139,11 @@ main (int argc, char *argv[]) for (;;) { c = getopt_long (argc, argv, options, long_options, &option_index); - if (c == -1) break; + if (c == -1) + break; switch (c) { - case 0: /* options which are long only */ + case 0: /* options which are long only */ if (STREQ (long_options[option_index].name, "long-options")) display_long_options (long_options); else if (STREQ (long_options[option_index].name, "short-options")) @@ -152,14 +156,15 @@ main (int argc, char *argv[]) OPTION_format; } else if (STREQ (long_options[option_index].name, "xpath")) { xpath = optarg; - } else if (STREQ (long_options[option_index].name, "no-applications")) { + } else if (STREQ (long_options[option_index].name, + "no-applications")) { inspect_apps = 0; } else if (STREQ (long_options[option_index].name, "no-icon")) { inspect_icon = 0; } else { fprintf (stderr, _("%s: unknown long option: %s (%d)\n"), - guestfs_int_program_name, - long_options[option_index].name, option_index); + guestfs_int_program_name, long_options[option_index].name, + option_index); exit (EXIT_FAILURE); } break; @@ -212,7 +217,7 @@ main (int argc, char *argv[]) error (EXIT_FAILURE, errno, "strdup"); drv->next = drvs; drvs = drv; - } else { /* simulate -d option */ + } else { /* simulate -d option */ drv = calloc (1, sizeof (struct drv)); if (!drv) error (EXIT_FAILURE, errno, "calloc"); @@ -278,7 +283,15 @@ main (int argc, char *argv[]) CLEANUP_FREE_STRING_LIST char **roots = guestfs_inspect_os (g); if (roots == NULL) error (EXIT_FAILURE, 0, - _("no operating system could be detected inside this disk image.\n\nThis may be because the file is not a disk image, or is not a virtual machine\nimage, or because the OS type is not understood by libguestfs.\n\nNOTE for Red Hat Enterprise Linux 6 users: for Windows guest support you must\ninstall the separate libguestfs-winsupport package.\n\nIf you feel this is an error, please file a bug report including as much\ninformation about the disk image as possible.\n")); + _("no operating system could be detected inside this disk " + "image.\n\nThis may be because the file is not a disk " + "image, or is not a virtual machine\nimage, or because the " + "OS type is not understood by libguestfs.\n\nNOTE for Red " + "Hat Enterprise Linux 6 users: for Windows guest support " + "you must\ninstall the separate libguestfs-winsupport " + "package.\n\nIf you feel this is an error, please file a " + "bug report including as much\ninformation about the disk " + "image as possible.\n")); output (roots); } @@ -288,9 +301,10 @@ main (int argc, char *argv[]) exit (EXIT_SUCCESS); } -#define XMLERROR(code,e) do { \ - if ((e) == (code)) \ - error (EXIT_FAILURE, errno, _("XML write error at \"%s\""), #e); \ +#define XMLERROR(code, e) \ + do { \ + if ((e) == (code)) \ + error (EXIT_FAILURE, errno, _("XML write error at \"%s\""), #e); \ } while (0) static void @@ -321,7 +335,8 @@ output_roots (xmlTextWriterPtr xo, char **roots) { size_t i; - XMLERROR (-1, xmlTextWriterStartElement (xo, BAD_CAST "operatingsystems")); + XMLERROR (-1, + xmlTextWriterStartElement (xo, BAD_CAST "operatingsystems")); for (i = 0; roots[i] != NULL; ++i) output_root (xo, roots[i]); XMLERROR (-1, xmlTextWriterEndElement (xo)); @@ -341,67 +356,73 @@ output_root (xmlTextWriterPtr xo, char *root) canonical_root = guestfs_canonical_device_name (g, root); if (canonical_root == NULL) exit (EXIT_FAILURE); - XMLERROR (-1, - xmlTextWriterWriteElement (xo, BAD_CAST "root", BAD_CAST canonical_root)); + XMLERROR (-1, xmlTextWriterWriteElement (xo, BAD_CAST "root", + BAD_CAST canonical_root)); free (canonical_root); str = guestfs_inspect_get_type (g, root); - if (!str) exit (EXIT_FAILURE); + if (!str) + exit (EXIT_FAILURE); if (STRNEQ (str, "unknown")) - XMLERROR (-1, - xmlTextWriterWriteElement (xo, BAD_CAST "name", BAD_CAST str)); + XMLERROR ( + -1, xmlTextWriterWriteElement (xo, BAD_CAST "name", BAD_CAST str)); free (str); str = guestfs_inspect_get_arch (g, root); - if (!str) exit (EXIT_FAILURE); + if (!str) + exit (EXIT_FAILURE); if (STRNEQ (str, "unknown")) - XMLERROR (-1, - xmlTextWriterWriteElement (xo, BAD_CAST "arch", BAD_CAST str)); + XMLERROR ( + -1, xmlTextWriterWriteElement (xo, BAD_CAST "arch", BAD_CAST str)); free (str); str = guestfs_inspect_get_distro (g, root); - if (!str) exit (EXIT_FAILURE); + if (!str) + exit (EXIT_FAILURE); if (STRNEQ (str, "unknown")) - XMLERROR (-1, - xmlTextWriterWriteElement (xo, BAD_CAST "distro", BAD_CAST str)); + XMLERROR (-1, xmlTextWriterWriteElement (xo, BAD_CAST "distro", + BAD_CAST str)); free (str); str = guestfs_inspect_get_product_name (g, root); - if (!str) exit (EXIT_FAILURE); + if (!str) + exit (EXIT_FAILURE); if (STRNEQ (str, "unknown")) - XMLERROR (-1, - xmlTextWriterWriteElement (xo, BAD_CAST "product_name", BAD_CAST str)); + XMLERROR (-1, xmlTextWriterWriteElement (xo, BAD_CAST "product_name", + BAD_CAST str)); free (str); str = guestfs_inspect_get_product_variant (g, root); - if (!str) exit (EXIT_FAILURE); + if (!str) + exit (EXIT_FAILURE); if (STRNEQ (str, "unknown")) - XMLERROR (-1, - xmlTextWriterWriteElement (xo, BAD_CAST "product_variant", BAD_CAST str)); + XMLERROR (-1, xmlTextWriterWriteElement (xo, BAD_CAST "product_variant", + BAD_CAST str)); free (str); i = guestfs_inspect_get_major_version (g, root); snprintf (buf, sizeof buf, "%d", i); - XMLERROR (-1, - xmlTextWriterWriteElement (xo, BAD_CAST "major_version", BAD_CAST buf)); + XMLERROR (-1, xmlTextWriterWriteElement (xo, BAD_CAST "major_version", + BAD_CAST buf)); i = guestfs_inspect_get_minor_version (g, root); snprintf (buf, sizeof buf, "%d", i); - XMLERROR (-1, - xmlTextWriterWriteElement (xo, BAD_CAST "minor_version", BAD_CAST buf)); + XMLERROR (-1, xmlTextWriterWriteElement (xo, BAD_CAST "minor_version", + BAD_CAST buf)); str = guestfs_inspect_get_package_format (g, root); - if (!str) exit (EXIT_FAILURE); + if (!str) + exit (EXIT_FAILURE); if (STRNEQ (str, "unknown")) - XMLERROR (-1, - xmlTextWriterWriteElement (xo, BAD_CAST "package_format", BAD_CAST str)); + XMLERROR (-1, xmlTextWriterWriteElement (xo, BAD_CAST "package_format", + BAD_CAST str)); free (str); str = guestfs_inspect_get_package_management (g, root); - if (!str) exit (EXIT_FAILURE); + if (!str) + exit (EXIT_FAILURE); if (STRNEQ (str, "unknown")) - XMLERROR (-1, - xmlTextWriterWriteElement (xo, BAD_CAST "package_management", - BAD_CAST str)); + XMLERROR (-1, xmlTextWriterWriteElement ( + xo, BAD_CAST "package_management", BAD_CAST str)); free (str); /* inspect-get-windows-systemroot will fail with non-windows guests, @@ -411,52 +432,48 @@ output_root (xmlTextWriterPtr xo, char *root) guestfs_push_error_handler (g, NULL, NULL); str = guestfs_inspect_get_windows_systemroot (g, root); if (str) - XMLERROR (-1, - xmlTextWriterWriteElement (xo, BAD_CAST "windows_systemroot", - BAD_CAST str)); + XMLERROR (-1, xmlTextWriterWriteElement ( + xo, BAD_CAST "windows_systemroot", BAD_CAST str)); free (str); str = guestfs_inspect_get_windows_current_control_set (g, root); if (str) - XMLERROR (-1, - xmlTextWriterWriteElement (xo, BAD_CAST "windows_current_control_set", - BAD_CAST str)); + XMLERROR (-1, xmlTextWriterWriteElement (xo, BAD_CAST + "windows_current_control_set", + BAD_CAST str)); free (str); guestfs_pop_error_handler (g); str = guestfs_inspect_get_hostname (g, root); - if (!str) exit (EXIT_FAILURE); + if (!str) + exit (EXIT_FAILURE); if (STRNEQ (str, "unknown")) - XMLERROR (-1, - xmlTextWriterWriteElement (xo, BAD_CAST "hostname", - BAD_CAST str)); + XMLERROR (-1, xmlTextWriterWriteElement (xo, BAD_CAST "hostname", + BAD_CAST str)); free (str); str = guestfs_inspect_get_format (g, root); - if (!str) exit (EXIT_FAILURE); + if (!str) + exit (EXIT_FAILURE); if (STRNEQ (str, "unknown")) - XMLERROR (-1, - xmlTextWriterWriteElement (xo, BAD_CAST "format", - BAD_CAST str)); + XMLERROR (-1, xmlTextWriterWriteElement (xo, BAD_CAST "format", + BAD_CAST str)); free (str); r = guestfs_inspect_is_live (g, root); if (r > 0) { - XMLERROR (-1, - xmlTextWriterStartElement (xo, BAD_CAST "live")); + XMLERROR (-1, xmlTextWriterStartElement (xo, BAD_CAST "live")); XMLERROR (-1, xmlTextWriterEndElement (xo)); } r = guestfs_inspect_is_netinst (g, root); if (r > 0) { - XMLERROR (-1, - xmlTextWriterStartElement (xo, BAD_CAST "netinst")); + XMLERROR (-1, xmlTextWriterStartElement (xo, BAD_CAST "netinst")); XMLERROR (-1, xmlTextWriterEndElement (xo)); } r = guestfs_inspect_is_multipart (g, root); if (r > 0) { - XMLERROR (-1, - xmlTextWriterStartElement (xo, BAD_CAST "multipart")); + XMLERROR (-1, xmlTextWriterStartElement (xo, BAD_CAST "multipart")); XMLERROR (-1, xmlTextWriterEndElement (xo)); } @@ -479,10 +496,10 @@ output_root (xmlTextWriterPtr xo, char *root) /* Don't return favicon. RHEL 7 and Fedora have crappy 16x16 * favicons in the base distro. */ - str = guestfs_inspect_get_icon (g, root, &size, - GUESTFS_INSPECT_GET_ICON_FAVICON, 0, - -1); - if (!str) exit (EXIT_FAILURE); + str = guestfs_inspect_get_icon ( + g, root, &size, GUESTFS_INSPECT_GET_ICON_FAVICON, 0, -1); + if (!str) + exit (EXIT_FAILURE); if (size > 0) { XMLERROR (-1, xmlTextWriterStartElement (xo, BAD_CAST "icon")); XMLERROR (-1, xmlTextWriterWriteBase64 (xo, str, 0, size)); @@ -505,8 +522,8 @@ output_root (xmlTextWriterPtr xo, char *root) static int compare_keys (const void *p1, const void *p2) { - const char *key1 = * (char * const *) p1; - const char *key2 = * (char * const *) p2; + const char *key1 = *(char *const *)p1; + const char *key2 = *(char *const *)p2; return strcmp (key1, key2); } @@ -514,8 +531,8 @@ compare_keys (const void *p1, const void *p2) static int compare_keys_nocase (const void *p1, const void *p2) { - const char *key1 = * (char * const *) p1; - const char *key2 = * (char * const *) p2; + const char *key1 = *(char *const *)p1; + const char *key2 = *(char *const *)p2; return strcasecmp (key1, key2); } @@ -523,8 +540,8 @@ compare_keys_nocase (const void *p1, const void *p2) static int compare_keys_len (const void *p1, const void *p2) { - const char *key1 = * (char * const *) p1; - const char *key2 = * (char * const *) p2; + const char *key1 = *(char *const *)p1; + const char *key2 = *(char *const *)p2; int c; c = strlen (key1) - strlen (key2); @@ -540,7 +557,7 @@ output_mountpoints (xmlTextWriterPtr xo, char *root) size_t i; CLEANUP_FREE_STRING_LIST char **mountpoints = - guestfs_inspect_get_mountpoints (g, root); + guestfs_inspect_get_mountpoints (g, root); if (mountpoints == NULL) exit (EXIT_FAILURE); @@ -548,22 +565,20 @@ output_mountpoints (xmlTextWriterPtr xo, char *root) * output is stable. */ qsort (mountpoints, guestfs_int_count_strings (mountpoints) / 2, - 2 * sizeof (char *), - compare_keys_len); + 2 * sizeof (char *), compare_keys_len); XMLERROR (-1, xmlTextWriterStartElement (xo, BAD_CAST "mountpoints")); for (i = 0; mountpoints[i] != NULL; i += 2) { - CLEANUP_FREE char *p = guestfs_canonical_device_name (g, mountpoints[i+1]); + CLEANUP_FREE char *p = + guestfs_canonical_device_name (g, mountpoints[i + 1]); if (!p) exit (EXIT_FAILURE); - XMLERROR (-1, - xmlTextWriterStartElement (xo, BAD_CAST "mountpoint")); + XMLERROR (-1, xmlTextWriterStartElement (xo, BAD_CAST "mountpoint")); XMLERROR (-1, xmlTextWriterWriteAttribute (xo, BAD_CAST "dev", BAD_CAST p)); - XMLERROR (-1, - xmlTextWriterWriteString (xo, BAD_CAST mountpoints[i])); + XMLERROR (-1, xmlTextWriterWriteString (xo, BAD_CAST mountpoints[i])); XMLERROR (-1, xmlTextWriterEndElement (xo)); } @@ -577,13 +592,13 @@ output_filesystems (xmlTextWriterPtr xo, char *root) size_t i; CLEANUP_FREE_STRING_LIST char **filesystems = - guestfs_inspect_get_filesystems (g, root); + guestfs_inspect_get_filesystems (g, root); if (filesystems == NULL) exit (EXIT_FAILURE); /* Sort by name so the output is stable. */ - qsort (filesystems, guestfs_int_count_strings (filesystems), sizeof (char *), - compare_keys); + qsort (filesystems, guestfs_int_count_strings (filesystems), + sizeof (char *), compare_keys); XMLERROR (-1, xmlTextWriterStartElement (xo, BAD_CAST "filesystems")); @@ -593,31 +608,28 @@ output_filesystems (xmlTextWriterPtr xo, char *root) exit (EXIT_FAILURE); XMLERROR (-1, xmlTextWriterStartElement (xo, BAD_CAST "filesystem")); - XMLERROR (-1, - xmlTextWriterWriteAttribute (xo, BAD_CAST "dev", BAD_CAST str)); + XMLERROR ( + -1, xmlTextWriterWriteAttribute (xo, BAD_CAST "dev", BAD_CAST str)); free (str); guestfs_push_error_handler (g, NULL, NULL); str = guestfs_vfs_type (g, filesystems[i]); if (str && str[0]) - XMLERROR (-1, - xmlTextWriterWriteElement (xo, BAD_CAST "type", - BAD_CAST str)); + XMLERROR (-1, xmlTextWriterWriteElement (xo, BAD_CAST "type", + BAD_CAST str)); free (str); str = guestfs_vfs_label (g, filesystems[i]); if (str && str[0]) - XMLERROR (-1, - xmlTextWriterWriteElement (xo, BAD_CAST "label", - BAD_CAST str)); + XMLERROR (-1, xmlTextWriterWriteElement (xo, BAD_CAST "label", + BAD_CAST str)); free (str); str = guestfs_vfs_uuid (g, filesystems[i]); if (str && str[0]) - XMLERROR (-1, - xmlTextWriterWriteElement (xo, BAD_CAST "uuid", - BAD_CAST str)); + XMLERROR (-1, xmlTextWriterWriteElement (xo, BAD_CAST "uuid", + BAD_CAST str)); free (str); guestfs_pop_error_handler (g); @@ -645,24 +657,20 @@ output_drive_mappings (xmlTextWriterPtr xo, char *root) return; /* Sort by key. */ - qsort (drive_mappings, - guestfs_int_count_strings (drive_mappings) / 2, 2 * sizeof (char *), - compare_keys_nocase); + qsort (drive_mappings, guestfs_int_count_strings (drive_mappings) / 2, + 2 * sizeof (char *), compare_keys_nocase); XMLERROR (-1, xmlTextWriterStartElement (xo, BAD_CAST "drive_mappings")); for (i = 0; drive_mappings[i] != NULL; i += 2) { - str = guestfs_canonical_device_name (g, drive_mappings[i+1]); + str = guestfs_canonical_device_name (g, drive_mappings[i + 1]); if (!str) exit (EXIT_FAILURE); - XMLERROR (-1, - xmlTextWriterStartElement (xo, BAD_CAST "drive_mapping")); - XMLERROR (-1, - xmlTextWriterWriteAttribute (xo, BAD_CAST "name", - BAD_CAST drive_mappings[i])); - XMLERROR (-1, - xmlTextWriterWriteString (xo, BAD_CAST str)); + XMLERROR (-1, xmlTextWriterStartElement (xo, BAD_CAST "drive_mapping")); + XMLERROR (-1, xmlTextWriterWriteAttribute (xo, BAD_CAST "name", + BAD_CAST drive_mappings[i])); + XMLERROR (-1, xmlTextWriterWriteString (xo, BAD_CAST str)); XMLERROR (-1, xmlTextWriterEndElement (xo)); free (str); @@ -680,7 +688,7 @@ output_applications (xmlTextWriterPtr xo, char *root) * applications, so if it returns NULL then it's a real error. */ CLEANUP_FREE_APPLICATION2_LIST struct guestfs_application2_list *apps = - guestfs_inspect_list_applications2 (g, root); + guestfs_inspect_list_applications2 (g, root); if (apps == NULL) exit (EXIT_FAILURE); @@ -695,55 +703,56 @@ output_applications (xmlTextWriterPtr xo, char *root) BAD_CAST apps->val[i].app2_name)); if (apps->val[i].app2_display_name && apps->val[i].app2_display_name[0]) - XMLERROR (-1, - xmlTextWriterWriteElement (xo, BAD_CAST "display_name", - BAD_CAST apps->val[i].app2_display_name)); + XMLERROR (-1, xmlTextWriterWriteElement ( + xo, BAD_CAST "display_name", + BAD_CAST apps->val[i].app2_display_name)); if (apps->val[i].app2_epoch != 0) { char buf[32]; snprintf (buf, sizeof buf, "%d", apps->val[i].app2_epoch); - XMLERROR (-1, - xmlTextWriterWriteElement (xo, BAD_CAST "epoch", BAD_CAST buf)); + XMLERROR (-1, xmlTextWriterWriteElement (xo, BAD_CAST "epoch", + BAD_CAST buf)); } if (apps->val[i].app2_version && apps->val[i].app2_version[0]) - XMLERROR (-1, - xmlTextWriterWriteElement (xo, BAD_CAST "version", - BAD_CAST apps->val[i].app2_version)); + XMLERROR (-1, xmlTextWriterWriteElement ( + xo, BAD_CAST "version", + BAD_CAST apps->val[i].app2_version)); if (apps->val[i].app2_release && apps->val[i].app2_release[0]) - XMLERROR (-1, - xmlTextWriterWriteElement (xo, BAD_CAST "release", - BAD_CAST apps->val[i].app2_release)); + XMLERROR (-1, xmlTextWriterWriteElement ( + xo, BAD_CAST "release", + BAD_CAST apps->val[i].app2_release)); if (apps->val[i].app2_arch && apps->val[i].app2_arch[0]) - XMLERROR (-1, - xmlTextWriterWriteElement (xo, BAD_CAST "arch", - BAD_CAST apps->val[i].app2_arch)); + XMLERROR ( + -1, xmlTextWriterWriteElement (xo, BAD_CAST "arch", + BAD_CAST apps->val[i].app2_arch)); if (apps->val[i].app2_install_path && apps->val[i].app2_install_path[0]) - XMLERROR (-1, - xmlTextWriterWriteElement (xo, BAD_CAST "install_path", - BAD_CAST apps->val[i].app2_install_path)); + XMLERROR (-1, xmlTextWriterWriteElement ( + xo, BAD_CAST "install_path", + BAD_CAST apps->val[i].app2_install_path)); if (apps->val[i].app2_publisher && apps->val[i].app2_publisher[0]) - XMLERROR (-1, - xmlTextWriterWriteElement (xo, BAD_CAST "publisher", - BAD_CAST apps->val[i].app2_publisher)); + XMLERROR (-1, xmlTextWriterWriteElement ( + xo, BAD_CAST "publisher", + BAD_CAST apps->val[i].app2_publisher)); if (apps->val[i].app2_url && apps->val[i].app2_url[0]) XMLERROR (-1, - xmlTextWriterWriteElement (xo, BAD_CAST "url", - BAD_CAST apps->val[i].app2_url)); - if (apps->val[i].app2_source_package && apps->val[i].app2_source_package[0]) - XMLERROR (-1, - xmlTextWriterWriteElement (xo, BAD_CAST "source_package", - BAD_CAST apps->val[i].app2_source_package)); + xmlTextWriterWriteElement (xo, BAD_CAST "url", + BAD_CAST apps->val[i].app2_url)); + if (apps->val[i].app2_source_package && + apps->val[i].app2_source_package[0]) + XMLERROR (-1, xmlTextWriterWriteElement ( + xo, BAD_CAST "source_package", + BAD_CAST apps->val[i].app2_source_package)); if (apps->val[i].app2_summary && apps->val[i].app2_summary[0]) - XMLERROR (-1, - xmlTextWriterWriteElement (xo, BAD_CAST "summary", - BAD_CAST apps->val[i].app2_summary)); + XMLERROR (-1, xmlTextWriterWriteElement ( + xo, BAD_CAST "summary", + BAD_CAST apps->val[i].app2_summary)); if (apps->val[i].app2_description && apps->val[i].app2_description[0]) - XMLERROR (-1, - xmlTextWriterWriteElement (xo, BAD_CAST "description", - BAD_CAST apps->val[i].app2_description)); + XMLERROR (-1, xmlTextWriterWriteElement ( + xo, BAD_CAST "description", + BAD_CAST apps->val[i].app2_description)); XMLERROR (-1, xmlTextWriterEndElement (xo)); } @@ -787,7 +796,7 @@ do_xpath (const char *query) if (saveCtx == NULL) error (EXIT_FAILURE, 0, _("xmlSaveToFd failed")); - for (i = 0; i < (size_t) nodes->nodeNr; ++i) { + for (i = 0; i < (size_t)nodes->nodeNr; ++i) { CLEANUP_XMLFREEDOC xmlDocPtr wrdoc = xmlNewDoc (BAD_CAST "1.0"); if (wrdoc == NULL) error (EXIT_FAILURE, 0, _("xmlNewDoc failed")); @@ -806,10 +815,10 @@ do_xpath (const char *query) break; case XPATH_STRING: - r = (char *) xpathObj->stringval; + r = (char *)xpathObj->stringval; printf ("%s", r); i = strlen (r); - if (i > 0 && r[i-1] != '\n') + if (i > 0 && r[i - 1] != '\n') printf ("\n"); break; @@ -822,7 +831,7 @@ do_xpath (const char *query) case XPATH_USERS: case XPATH_XSLT_TREE: default: - r = (char *) xmlXPathCastToString (xpathObj); + r = (char *)xmlXPathCastToString (xpathObj); printf ("%s\n", r); free (r); } diff --git a/make-fs/make-fs.c b/make-fs/make-fs.c index 42e7e82..a4597e4 100644 --- a/make-fs/make-fs.c +++ b/make-fs/make-fs.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -47,29 +48,22 @@ int live; int read_only; int verbose; -static const char *format = "raw", *label = NULL, - *partition = NULL, *size_str = NULL, *type = "ext2"; +static const char *format = "raw", *label = NULL, *partition = NULL, + *size_str = NULL, *type = "ext2"; enum { HELP_OPTION = CHAR_MAX + 1 }; static const char *options = "F:s:t:Vvx"; static const struct option long_options[] = { { "debug", 0, 0, 'v' }, /* for compat with Perl tool */ - { "floppy", 0, 0, 0 }, - { "format", 1, 0, 'F' }, - { "help", 0, 0, HELP_OPTION }, - { "label", 1, 0, 0 }, - { "long-options", 0, 0, 0 }, - { "partition", 2, 0, 0 }, - { "short-options", 0, 0, 0 }, - { "size", 1, 0, 's' }, - { "type", 1, 0, 't' }, - { "verbose", 0, 0, 'v' }, - { "version", 0, 0, 'V' }, - { 0, 0, 0, 0 } + { "floppy", 0, 0, 0 }, { "format", 1, 0, 'F' }, + { "help", 0, 0, HELP_OPTION }, { "label", 1, 0, 0 }, + { "long-options", 0, 0, 0 }, { "partition", 2, 0, 0 }, + { "short-options", 0, 0, 0 }, { "size", 1, 0, 's' }, + { "type", 1, 0, 't' }, { "verbose", 0, 0, 'v' }, + { "version", 0, 0, 'V' }, { 0, 0, 0, 0 } }; -static void __attribute__((noreturn)) -usage (int status) +static void __attribute__ ((noreturn)) usage (int status) { if (status != EXIT_SUCCESS) fprintf (stderr, _("Try `%s --help' for more information.\n"), @@ -118,32 +112,28 @@ main (int argc, char *argv[]) for (;;) { c = getopt_long (argc, argv, options, long_options, &option_index); - if (c == -1) break; + if (c == -1) + break; switch (c) { - case 0: /* options which are long only */ + case 0: /* options which are long only */ if (STREQ (long_options[option_index].name, "long-options")) { display_long_options (long_options); - } - else if (STREQ (long_options[option_index].name, "short-options")) { + } else if (STREQ (long_options[option_index].name, "short-options")) { display_short_options (options); - } - else if (STREQ (long_options[option_index].name, "floppy")) { + } else if (STREQ (long_options[option_index].name, "floppy")) { size_str = "1440K"; partition = "mbr"; type = "vfat"; - } - else if (STREQ (long_options[option_index].name, "label")) { + } else if (STREQ (long_options[option_index].name, "label")) { label = optarg; - } - else if (STREQ (long_options[option_index].name, "partition")) { + } else if (STREQ (long_options[option_index].name, "partition")) { if (optarg == NULL) partition = "mbr"; else partition = optarg; } else - error (EXIT_FAILURE, 0, - _("unknown long option: %s (%d)"), + error (EXIT_FAILURE, 0, _("unknown long option: %s (%d)"), long_options[option_index].name, option_index); break; @@ -180,13 +170,14 @@ main (int argc, char *argv[]) } if (optind + 2 != argc) { - fprintf (stderr, - _("%s: missing input and output arguments on the command line\n"), - guestfs_int_program_name); + fprintf ( + stderr, + _("%s: missing input and output arguments on the command line\n"), + guestfs_int_program_name); usage (EXIT_FAILURE); } - if (do_make_fs (argv[optind], argv[optind+1]) == -1) + if (do_make_fs (argv[optind], argv[optind + 1]) == -1) exit (EXIT_FAILURE); exit (EXIT_SUCCESS); @@ -198,10 +189,11 @@ check_ntfs_available (void) const char *ntfs_features[] = { "ntfs3g", "ntfsprogs", NULL }; if (STREQ (type, "ntfs") && - guestfs_feature_available (g, (char **) ntfs_features) == 0) { - fprintf (stderr, - _("%s: NTFS support was disabled when libguestfs was compiled\n"), - guestfs_int_program_name); + guestfs_feature_available (g, (char **)ntfs_features) == 0) { + fprintf ( + stderr, + _("%s: NTFS support was disabled when libguestfs was compiled\n"), + guestfs_int_program_name); return -1; } @@ -215,7 +207,8 @@ print_stats (guestfs_h *g, const char *before_or_after) if (!verbose) return; - CLEANUP_FREE_STATVFS struct guestfs_statvfs *stats = guestfs_statvfs (g, "/"); + CLEANUP_FREE_STATVFS struct guestfs_statvfs *stats = + guestfs_statvfs (g, "/"); if (stats) { fprintf (stderr, "%s uploading:\n", before_or_after); fprintf (stderr, " bsize = %" PRIi64 "\n", stats->bsize); @@ -258,7 +251,7 @@ exec_command (char **argv, const char *file) } /* Child process. */ - fd = open (file, O_WRONLY|O_NOCTTY); + fd = open (file, O_WRONLY | O_NOCTTY); if (fd == -1) { perror (file); _exit (EXIT_FAILURE); @@ -425,7 +418,7 @@ estimate_input (const char *input, uint64_t *estimate_rtn, char **ifmt_rtn) argv[4] = input; argv[5] = NULL; - if (exec_command ((char **) argv, tmpfile) == -1) + if (exec_command ((char **)argv, tmpfile) == -1) return -1; fp = fopen (tmpfile, "r"); @@ -439,18 +432,18 @@ estimate_input (const char *input, uint64_t *estimate_rtn, char **ifmt_rtn) } if (sscanf (line, "%" SCNu64, estimate_rtn) != 1) { - fprintf (stderr, _("%s: cannot parse the output of 'du' command: %s\n"), + fprintf (stderr, + _("%s: cannot parse the output of 'du' command: %s\n"), guestfs_int_program_name, line); return -1; } - } - else { + } else { argv[0] = "file"; argv[1] = "-bsLz"; argv[2] = input; argv[3] = NULL; - if (exec_command ((char **) argv, tmpfile) == -1) + if (exec_command ((char **)argv, tmpfile) == -1) return -1; fp = fopen (tmpfile, "r"); @@ -464,8 +457,8 @@ estimate_input (const char *input, uint64_t *estimate_rtn, char **ifmt_rtn) } len = strlen (line); - if (len > 0 && line[len-1] == '\n') - line[len-1] = '\0'; + if (len > 0 && line[len - 1] == '\n') + line[len - 1] = '\0'; *ifmt_rtn = strdup (line); if (*ifmt_rtn == NULL) { @@ -474,7 +467,8 @@ estimate_input (const char *input, uint64_t *estimate_rtn, char **ifmt_rtn) } if (strstr (line, "tar archive") == NULL) { - fprintf (stderr, _("%s: %s: input is not a directory, tar archive or compressed tar archive\n"), + fprintf (stderr, _("%s: %s: input is not a directory, tar archive " + "or compressed tar archive\n"), guestfs_int_program_name, input); return -1; } @@ -485,36 +479,32 @@ estimate_input (const char *input, uint64_t *estimate_rtn, char **ifmt_rtn) argv[1] = "-c"; argv[2] = input; argv[3] = NULL; - } - else if (strstr (line, "gzip compressed")) { + } else if (strstr (line, "gzip compressed")) { argv[0] = "gzip"; argv[1] = "-cd"; argv[2] = input; argv[3] = NULL; - } - else if (strstr (line, "bzip2 compressed")) { + } else if (strstr (line, "bzip2 compressed")) { argv[0] = "bzip2"; argv[1] = "-cd"; argv[2] = input; argv[3] = NULL; - } - else if (strstr (line, "xz compressed")) { + } else if (strstr (line, "xz compressed")) { argv[0] = "xz"; argv[1] = "-cd"; argv[2] = input; argv[3] = NULL; - } - else { - fprintf (stderr, _("%s: %s: unknown compressed input format (%s)\n"), + } else { + fprintf (stderr, + _("%s: %s: unknown compressed input format (%s)\n"), guestfs_int_program_name, input, line); return -1; } *estimate_rtn = 0; - if (exec_command_count_output ((char **) argv, estimate_rtn) == -1) + if (exec_command_count_output ((char **)argv, estimate_rtn) == -1) return -1; - } - else { + } else { /* Plain tar file, just get the size directly. Tar files have * a 512 byte block size (compared with typically 1K or 4K for * filesystems) so this isn't very accurate. @@ -534,8 +524,8 @@ estimate_input (const char *input, uint64_t *estimate_rtn, char **ifmt_rtn) * the PID is returned so that callers can wait on it. */ static int -prepare_input (const char *input, const char *ifmt, - char **ifile_rtn, int *fd_rtn, pid_t *pid_rtn) +prepare_input (const char *input, const char *ifmt, char **ifile_rtn, + int *fd_rtn, pid_t *pid_rtn) { const char *argv[7]; @@ -551,53 +541,47 @@ prepare_input (const char *input, const char *ifmt, argv[5] = "."; argv[6] = NULL; - if (bg_command ((char **) argv, fd_rtn, pid_rtn) == -1) + if (bg_command ((char **)argv, fd_rtn, pid_rtn) == -1) return -1; if (asprintf (ifile_rtn, "/dev/fd/%d", *fd_rtn) == -1) { perror ("asprintf"); return -1; } - } - else { + } else { if (strstr (ifmt, "compress")) { if (strstr (ifmt, "compress'd")) { argv[0] = "uncompress"; argv[1] = "-c"; argv[2] = input; argv[3] = NULL; - } - else if (strstr (ifmt, "gzip compressed")) { + } else if (strstr (ifmt, "gzip compressed")) { argv[0] = "gzip"; argv[1] = "-cd"; argv[2] = input; argv[3] = NULL; - } - else if (strstr (ifmt, "bzip2 compressed")) { + } else if (strstr (ifmt, "bzip2 compressed")) { argv[0] = "bzip2"; argv[1] = "-cd"; argv[2] = input; argv[3] = NULL; - } - else if (strstr (ifmt, "xz compressed")) { + } else if (strstr (ifmt, "xz compressed")) { argv[0] = "xz"; argv[1] = "-cd"; argv[2] = input; argv[3] = NULL; - } - else + } else /* Shouldn't happen - see estimate_input above. */ abort (); - if (bg_command ((char **) argv, fd_rtn, pid_rtn) == -1) + if (bg_command ((char **)argv, fd_rtn, pid_rtn) == -1) return -1; if (asprintf (ifile_rtn, "/dev/fd/%d", *fd_rtn) == -1) { perror ("asprintf"); return -1; } - } - else { + } else { /* Plain tar file, read directly from the file. */ *ifile_rtn = strdup (input); if (*ifile_rtn == NULL) { @@ -629,7 +613,8 @@ parse_size (const char *str, uint64_t estimate, uint64_t *size_rtn) if (xerr != LONGINT_OK) { fprintf (stderr, _("%s: %s: invalid size parameter '%s' (%s returned %u)\n"), - guestfs_int_program_name, "parse_size", str, "xstrtoull", xerr); + guestfs_int_program_name, "parse_size", str, "xstrtoull", + xerr); return -1; } @@ -669,11 +654,11 @@ do_make_fs (const char *input, const char *output_str) if (verbose) { fprintf (stderr, "input format = %s\n", ifmt); fprintf (stderr, "estimate = %" PRIu64 " bytes " - "(%" PRIu64 " 1K blocks, %" PRIu64 " 4K blocks)\n", + "(%" PRIu64 " 1K blocks, %" PRIu64 " 4K blocks)\n", estimate, estimate / 1024, estimate / 4096); } - estimate += 256 * 1024; /* For superblocks &c. */ + estimate += 256 * 1024; /* For superblocks &c. */ if (STRPREFIX (type, "ext") && type[3] >= '3') { /* For ext3+, add some more for the journal. */ @@ -698,9 +683,8 @@ do_make_fs (const char *input, const char *output_str) /* Calculate the output size. */ if (size_str == NULL) size = estimate; - else - if (parse_size (size_str, estimate, &size) == -1) - return -1; + else if (parse_size (size_str, estimate, &size) == -1) + return -1; /* Create the output disk. */ optargs.bitmask = 0; @@ -711,9 +695,8 @@ do_make_fs (const char *input, const char *output_str) if (guestfs_disk_create_argv (g, output, format, size, &optargs) == -1) return -1; - if (guestfs_add_drive_opts (g, output, - GUESTFS_ADD_DRIVE_OPTS_FORMAT, format, - -1) == -1) + if (guestfs_add_drive_opts (g, output, GUESTFS_ADD_DRIVE_OPTS_FORMAT, + format, -1) == -1) return -1; if (guestfs_launch (g) == -1) @@ -740,7 +723,8 @@ do_make_fs (const char *input, const char *output_str) */ if (STREQ (partition, "mbr") || STREQ (partition, "msdos")) { if (STREQ (type, "msdos")) - /* According to Wikipedia. However I have not actually tried this. */ + /* According to Wikipedia. However I have not actually tried this. + */ mbr_id = 0x1; else if (STREQ (type, "vfat") || STREQ (type, "fat")) mbr_id = 0xb; @@ -763,7 +747,7 @@ do_make_fs (const char *input, const char *output_str) /* Create the filesystem. */ if (STRNEQ (type, "btrfs")) { int r; - struct guestfs_mkfs_opts_argv optargs = { .bitmask = 0 }; + struct guestfs_mkfs_opts_argv optargs = {.bitmask = 0 }; if (label) { optargs.label = label; @@ -776,29 +760,31 @@ do_make_fs (const char *input, const char *output_str) if (r == -1) { /* Provide more guidance in the error message (RHBZ#823883). */ - fprintf (stderr, "%s: 'mkfs' (create filesystem) operation failed: %s\n", + fprintf (stderr, + "%s: 'mkfs' (create filesystem) operation failed: %s\n", guestfs_int_program_name, guestfs_last_error (g)); if (STREQ (type, "fat")) - fprintf (stderr, "Instead of 'fat', try 'vfat' (long filenames) or 'msdos' (short filenames).\n"); + fprintf (stderr, "Instead of 'fat', try 'vfat' (long filenames) or " + "'msdos' (short filenames).\n"); else fprintf (stderr, "Is '%s' a correct filesystem type?\n", type); return -1; } - } - else { + } else { const char *devs[] = { dev, NULL }; - struct guestfs_mkfs_btrfs_argv optargs = { .bitmask = 0 }; + struct guestfs_mkfs_btrfs_argv optargs = {.bitmask = 0 }; optargs.datatype = "single"; optargs.metadata = "single"; - optargs.bitmask |= GUESTFS_MKFS_BTRFS_DATATYPE_BITMASK | GUESTFS_MKFS_BTRFS_METADATA_BITMASK; + optargs.bitmask |= GUESTFS_MKFS_BTRFS_DATATYPE_BITMASK | + GUESTFS_MKFS_BTRFS_METADATA_BITMASK; if (label) { optargs.label = label; optargs.bitmask |= GUESTFS_MKFS_BTRFS_LABEL_BITMASK; } - if (guestfs_mkfs_btrfs_argv (g, (char **) devs, &optargs) == -1) + if (guestfs_mkfs_btrfs_argv (g, (char **)devs, &optargs) == -1) return -1; } @@ -834,7 +820,8 @@ do_make_fs (const char *input, const char *output_str) return -1; } if (!WIFEXITED (status) || WEXITSTATUS (status) != 0) { - fprintf (stderr, _("%s: subprocess failed\n"), guestfs_int_program_name); + fprintf (stderr, _("%s: subprocess failed\n"), + guestfs_int_program_name); return -1; } } diff --git a/mllib/fsync-c.c b/mllib/fsync-c.c index 72e74ef..898d069 100644 --- a/mllib/fsync-c.c +++ b/mllib/fsync-c.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -32,8 +33,8 @@ #ifdef HAVE_CAML_UNIXSUPPORT_H #include <caml/unixsupport.h> #else -#define Nothing ((value) 0) -extern void unix_error (int errcode, char * cmdname, value arg) Noreturn; +#define Nothing ((value)0) +extern void unix_error (int errcode, char *cmdname, value arg) Noreturn; #endif /* OCaml doesn't bind any *sync* calls. */ @@ -69,16 +70,16 @@ guestfs_int_mllib_fsync_file (value filenamev) /* Note to do fsync you have to open for write. */ fd = open (filename, O_RDWR); if (fd == -1) - unix_error (errno, (char *) "open", filenamev); + unix_error (errno, (char *)"open", filenamev); if (fsync (fd) == -1) { err = errno; close (fd); - unix_error (err, (char *) "fsync", filenamev); + unix_error (err, (char *)"fsync", filenamev); } if (close (fd) == -1) - unix_error (errno, (char *) "close", filenamev); + unix_error (errno, (char *)"close", filenamev); CAMLreturn (Val_unit); } diff --git a/mllib/mkdtemp-c.c b/mllib/mkdtemp-c.c index a31e3a7..805e2e1 100644 --- a/mllib/mkdtemp-c.c +++ b/mllib/mkdtemp-c.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -30,8 +31,8 @@ #ifdef HAVE_CAML_UNIXSUPPORT_H #include <caml/unixsupport.h> #else -#define Nothing ((value) 0) -extern void unix_error (int errcode, char * cmdname, value arg) Noreturn; +#define Nothing ((value)0) +extern void unix_error (int errcode, char *cmdname, value arg) Noreturn; #endif #pragma GCC diagnostic ignored "-Wmissing-prototypes" @@ -45,11 +46,11 @@ guestfs_int_mllib_mkdtemp (value val_pattern) pattern = strdup (String_val (val_pattern)); if (pattern == NULL) - unix_error (errno, (char *) "strdup", val_pattern); + unix_error (errno, (char *)"strdup", val_pattern); ret = mkdtemp (pattern); if (ret == NULL) - unix_error (errno, (char *) "mkdtemp", val_pattern); + unix_error (errno, (char *)"mkdtemp", val_pattern); rv = caml_copy_string (ret); free (pattern); diff --git a/mllib/progress-c.c b/mllib/progress-c.c index 8e5efd3..afcb542 100644 --- a/mllib/progress-c.c +++ b/mllib/progress-c.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -35,7 +36,7 @@ #pragma GCC diagnostic ignored "-Wmissing-prototypes" -#define Bar_val(v) (*((struct progress_bar **)Data_custom_val(v))) +#define Bar_val(v) (*((struct progress_bar **)Data_custom_val (v))) static void progress_bar_finalize (value barv) @@ -47,7 +48,7 @@ progress_bar_finalize (value barv) } static struct custom_operations progress_bar_custom_operations = { - (char *) "progress_bar_custom_operations", + (char *)"progress_bar_custom_operations", progress_bar_finalize, custom_compare_default, custom_hash_default, @@ -95,8 +96,8 @@ guestfs_int_mllib_progress_bar_reset (value barv) /* NB: "noalloc" function. */ value -guestfs_int_mllib_progress_bar_set (value barv, - value positionv, value totalv) +guestfs_int_mllib_progress_bar_set (value barv, value positionv, + value totalv) { struct progress_bar *bar = Bar_val (barv); uint64_t position = Int64_val (positionv); diff --git a/mllib/uri-c.c b/mllib/uri-c.c index f3af817..a05b1b7 100644 --- a/mllib/uri-c.c +++ b/mllib/uri-c.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -63,12 +64,11 @@ guestfs_int_mllib_parse_uri (value argv /* arg value, not an array! */) /* server : string array option */ if (uri.server) { - ssv = caml_copy_string_array ((const char **) uri.server); + ssv = caml_copy_string_array ((const char **)uri.server); guestfs_int_free_string_list (uri.server); ov = caml_alloc (1, 0); Store_field (ov, 0, ssv); - } - else + } else ov = Val_int (0); Store_field (rv, 2, ov); @@ -78,8 +78,7 @@ guestfs_int_mllib_parse_uri (value argv /* arg value, not an array! */) free (uri.username); ov = caml_alloc (1, 0); Store_field (ov, 0, sv); - } - else + } else ov = Val_int (0); Store_field (rv, 3, ov); @@ -89,8 +88,7 @@ guestfs_int_mllib_parse_uri (value argv /* arg value, not an array! */) free (uri.password); ov = caml_alloc (1, 0); Store_field (ov, 0, sv); - } - else + } else ov = Val_int (0); Store_field (rv, 4, ov); diff --git a/ocaml/guestfs-c.c b/ocaml/guestfs-c.c index edb4646..7eac4b4 100644 --- a/ocaml/guestfs-c.c +++ b/ocaml/guestfs-c.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include <config.h> @@ -38,28 +39,35 @@ #ifdef HAVE_CAML_UNIXSUPPORT_H #include <caml/unixsupport.h> #else -#define Nothing ((value) 0) -extern void unix_error (int errcode, char * cmdname, value arg) Noreturn; +#define Nothing ((value)0) +extern void unix_error (int errcode, char *cmdname, value arg) Noreturn; #endif #include "guestfs-c.h" static value **get_all_event_callbacks (guestfs_h *g, size_t *len_rtn); -static void event_callback_wrapper (guestfs_h *g, void *data, uint64_t event, int event_handle, int flags, const char *buf, size_t buf_len, const uint64_t *array, size_t array_len); +static void event_callback_wrapper (guestfs_h *g, void *data, + uint64_t event, int event_handle, + int flags, const char *buf, + size_t buf_len, const uint64_t *array, + size_t array_len); /* This macro was added in OCaml 3.10. Backport for earlier versions. */ #ifndef CAMLreturnT -#define CAMLreturnT(type, result) do{ \ - type caml__temp_result = (result); \ - caml_local_roots = caml__frame; \ - return (caml__temp_result); \ - }while(0) +#define CAMLreturnT(type, result) \ + do { \ + type caml__temp_result = (result); \ + caml_local_roots = caml__frame; \ + return (caml__temp_result); \ + } while (0) #endif /* These prototypes are solely to quiet gcc warning. */ -value guestfs_int_ocaml_create (value environmentv, value close_on_exitv, value unitv); +value guestfs_int_ocaml_create (value environmentv, value close_on_exitv, + value unitv); value guestfs_int_ocaml_close (value gv); -value guestfs_int_ocaml_set_event_callback (value gv, value closure, value events); +value guestfs_int_ocaml_set_event_callback (value gv, value closure, + value events); value guestfs_int_ocaml_delete_event_callback (value gv, value eh); value guestfs_int_ocaml_event_to_string (value events); value guestfs_int_ocaml_last_errno (value gv); @@ -94,7 +102,7 @@ guestfs_finalize (value gv) } static struct custom_operations guestfs_custom_operations = { - (char *) "guestfs_custom_operations", + (char *)"guestfs_custom_operations", guestfs_finalize, custom_compare_default, custom_hash_default, @@ -108,8 +116,8 @@ Val_guestfs (guestfs_h *g) CAMLparam0 (); CAMLlocal1 (rv); - rv = caml_alloc_custom (&guestfs_custom_operations, - sizeof (guestfs_h *), 0, 1); + rv = caml_alloc_custom (&guestfs_custom_operations, sizeof (guestfs_h *), + 0, 1); Guestfs_val (rv) = g; CAMLreturn (rv); @@ -145,15 +153,15 @@ guestfs_int_ocaml_raise_closed (const char *func) /* Guestfs.create */ value -guestfs_int_ocaml_create (value environmentv, value close_on_exitv, value unitv) +guestfs_int_ocaml_create (value environmentv, value close_on_exitv, + value unitv) { CAMLparam3 (environmentv, close_on_exitv, unitv); CAMLlocal1 (gv); unsigned flags = 0; guestfs_h *g; - if (environmentv != Val_int (0) && - !Bool_val (Field (environmentv, 0))) + if (environmentv != Val_int (0) && !Bool_val (Field (environmentv, 0))) flags |= GUESTFS_CREATE_NO_ENVIRONMENT; if (close_on_exitv != Val_int (0) && @@ -194,10 +202,12 @@ guestfs_int_ocaml_strings_val (guestfs_h *g, value sv) size_t i; r = malloc (sizeof (char *) * (Wosize_val (sv) + 1)); - if (r == NULL) caml_raise_out_of_memory (); + if (r == NULL) + caml_raise_out_of_memory (); for (i = 0; i < Wosize_val (sv); ++i) { r[i] = strdup (String_val (Field (sv, i))); - if (r[i] == NULL) caml_raise_out_of_memory (); + if (r[i] == NULL) + caml_raise_out_of_memory (); } r[i] = NULL; @@ -210,7 +220,7 @@ event_bitmask_of_event_list (value events) uint64_t r = 0; while (events != Val_int (0)) { - r |= UINT64_C(1) << Int_val (Field (events, 0)); + r |= UINT64_C (1) << Int_val (Field (events, 0)); events = Field (events, 1); } @@ -231,11 +241,12 @@ guestfs_int_ocaml_set_event_callback (value gv, value closure, value events) event_bitmask = event_bitmask_of_event_list (events); value *root = malloc (sizeof *root); - if (root == NULL) caml_raise_out_of_memory (); + if (root == NULL) + caml_raise_out_of_memory (); *root = closure; - eh = guestfs_set_event_callback (g, event_callback_wrapper, - event_bitmask, 0, root); + eh = guestfs_set_event_callback (g, event_callback_wrapper, event_bitmask, + 0, root); if (eh == -1) { free (root); @@ -286,7 +297,7 @@ guestfs_int_ocaml_event_to_string (value events) r = guestfs_event_to_string (event_bitmask); if (r == NULL) - unix_error (errno, (char *) "Guestfs.event_to_string", Nothing); + unix_error (errno, (char *)"Guestfs.event_to_string", Nothing); rv = caml_copy_string (r); free (r); @@ -312,7 +323,8 @@ get_all_event_callbacks (guestfs_h *g, size_t *len_rtn) /* Copy them into the return array. */ r = malloc (sizeof (value *) * (*len_rtn)); - if (r == NULL) caml_raise_out_of_memory (); + if (r == NULL) + caml_raise_out_of_memory (); i = 0; root = guestfs_first_private (g, &key); @@ -340,13 +352,10 @@ event_bitmask_to_event (uint64_t event) } static void -event_callback_wrapper_locked (guestfs_h *g, - void *data, - uint64_t event, - int event_handle, - int flags, - const char *buf, size_t buf_len, - const uint64_t *array, size_t array_len) +event_callback_wrapper_locked (guestfs_h *g, void *data, uint64_t event, + int event_handle, int flags, const char *buf, + size_t buf_len, const uint64_t *array, + size_t array_len) { CAMLparam0 (); CAMLlocal4 (evv, ehv, bufv, arrayv); @@ -369,7 +378,7 @@ event_callback_wrapper_locked (guestfs_h *g, value args[4] = { evv, ehv, bufv, arrayv }; - rv = caml_callbackN_exn (*(value*)data, 4, args); + rv = caml_callbackN_exn (*(value *)data, 4, args); /* Callbacks shouldn't throw exceptions. There's not much we can do * except to print it. @@ -383,21 +392,18 @@ event_callback_wrapper_locked (guestfs_h *g, } static void -event_callback_wrapper (guestfs_h *g, - void *data, - uint64_t event, - int event_handle, - int flags, - const char *buf, size_t buf_len, - const uint64_t *array, size_t array_len) +event_callback_wrapper (guestfs_h *g, void *data, uint64_t event, + int event_handle, int flags, const char *buf, + size_t buf_len, const uint64_t *array, + size_t array_len) { /* Ensure we are holding the GC lock before any GC operations are * possible. (RHBZ#725824) */ caml_leave_blocking_section (); - event_callback_wrapper_locked (g, data, event, event_handle, flags, - buf, buf_len, array, array_len); + event_callback_wrapper_locked (g, data, event, event_handle, flags, buf, + buf_len, array, array_len); caml_enter_blocking_section (); } diff --git a/ocaml/guestfs-c.h b/ocaml/guestfs-c.h index b99aceb..b86a3c3 100644 --- a/ocaml/guestfs-c.h +++ b/ocaml/guestfs-c.h @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #ifndef GUESTFS_OCAML_C_H @@ -21,11 +22,10 @@ #include "guestfs-internal-frontend.h" -#define Guestfs_val(v) (*((guestfs_h **)Data_custom_val(v))) -extern void guestfs_int_ocaml_raise_error (guestfs_h *g, const char *func) - Noreturn; -extern void guestfs_int_ocaml_raise_closed (const char *func) - Noreturn; +#define Guestfs_val(v) (*((guestfs_h **)Data_custom_val (v))) +extern void guestfs_int_ocaml_raise_error (guestfs_h *g, + const char *func) Noreturn; +extern void guestfs_int_ocaml_raise_closed (const char *func) Noreturn; extern char **guestfs_int_ocaml_strings_val (guestfs_h *g, value sv); #endif /* GUESTFS_OCAML_C_H */ diff --git a/p2v/about-authors.c b/p2v/about-authors.c index 005dc87..7c18547 100644 --- a/p2v/about-authors.c +++ b/p2v/about-authors.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -22,12 +23,10 @@ /* The list of authors of virt-p2v and virt-v2v, for the About dialog. */ -const char *authors[] = { - "Matthew Booth", - "John Eckersberg", - "Richard W.M. Jones", - "Mike Latimer", - "Pino Toscano", - "Tingting Zheng", - NULL -}; +const char *authors[] = { "Matthew Booth", + "John Eckersberg", + "Richard W.M. Jones", + "Mike Latimer", + "Pino Toscano", + "Tingting Zheng", + NULL }; diff --git a/p2v/about-license.c b/p2v/about-license.c index e8c9412..3fe5d5b 100644 --- a/p2v/about-license.c +++ b/p2v/about-license.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -23,16 +24,17 @@ /* The license of virt-p2v, for the About dialog. */ const char *gplv2plus = - "This program is free software; you can redistribute it and/or modify\n" - "it under the terms of the GNU General Public License as published by\n" - "the Free Software Foundation; either version 2 of the License, or\n" - "(at your option) any later version.\n" - "\n" - "This program is distributed in the hope that it will be useful,\n" - "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" - "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" - "GNU General Public License for more details.\n" - "\n" - "You should have received a copy of the GNU General Public License\n" - "along with this program; if not, write to the Free Software\n" - "Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"; + "This program is free software; you can redistribute it and/or modify\n" + "it under the terms of the GNU General Public License as published by\n" + "the Free Software Foundation; either version 2 of the License, or\n" + "(at your option) any later version.\n" + "\n" + "This program is distributed in the hope that it will be useful,\n" + "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" + "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" + "GNU General Public License for more details.\n" + "\n" + "You should have received a copy of the GNU General Public License\n" + "along with this program; if not, write to the Free Software\n" + "Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA " + "02110-1301 USA.\n"; diff --git a/p2v/config.c b/p2v/config.c index 9c0d76f..3052f6e 100644 --- a/p2v/config.c +++ b/p2v/config.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -116,8 +117,8 @@ print_config (struct config *config, FILE *fp) size_t i; fprintf (fp, "local version . %s\n", PACKAGE_VERSION); - fprintf (fp, "remote version . %d.%d.%d\n", - v2v_major, v2v_minor, v2v_release); + fprintf (fp, "remote version . %d.%d.%d\n", v2v_major, v2v_minor, + v2v_release); fprintf (fp, "remote debugging %s\n", config->verbose ? "true" : "false"); fprintf (fp, "conversion server %s\n", @@ -126,11 +127,11 @@ print_config (struct config *config, FILE *fp) fprintf (fp, "username . . . . %s\n", config->username ? config->username : "none"); fprintf (fp, "password . . . . %s\n", - config->password && strlen (config->password) > 0 ? "***" : "none"); + config->password && strlen (config->password) > 0 ? "***" + : "none"); fprintf (fp, "identity URL . . %s\n", config->identity_url ? config->identity_url : "none"); - fprintf (fp, "sudo . . . . . . %s\n", - config->sudo ? "true" : "false"); + fprintf (fp, "sudo . . . . . . %s\n", config->sudo ? "true" : "false"); fprintf (fp, "guest name . . . %s\n", config->guestname ? config->guestname : "none"); fprintf (fp, "vcpus . . . . . %d\n", config->vcpus); @@ -138,7 +139,7 @@ print_config (struct config *config, FILE *fp) fprintf (fp, "flags . . . . . %s%s%s\n", config->flags & FLAG_ACPI ? " acpi" : "", config->flags & FLAG_APIC ? " apic" : "", - config->flags & FLAG_PAE ? " pae" : ""); + config->flags & FLAG_PAE ? " pae" : ""); fprintf (fp, "disks . . . . . "); if (config->disks != NULL) { for (i = 0; config->disks[i] != NULL; ++i) @@ -167,10 +168,17 @@ print_config (struct config *config, FILE *fp) config->output ? config->output : "none"); fprintf (fp, "output alloc . . "); switch (config->output_allocation) { - case OUTPUT_ALLOCATION_NONE: fprintf (fp, "none"); break; - case OUTPUT_ALLOCATION_SPARSE: fprintf (fp, "sparse"); break; - case OUTPUT_ALLOCATION_PREALLOCATED: fprintf (fp, "preallocated"); break; - default: fprintf (fp, "unknown? (%d)", config->output_allocation); + case OUTPUT_ALLOCATION_NONE: + fprintf (fp, "none"); + break; + case OUTPUT_ALLOCATION_SPARSE: + fprintf (fp, "sparse"); + break; + case OUTPUT_ALLOCATION_PREALLOCATED: + fprintf (fp, "preallocated"); + break; + default: + fprintf (fp, "unknown? (%d)", config->output_allocation); } fprintf (fp, "\n"); fprintf (fp, "output conn . . %s\n", diff --git a/p2v/conversion.c b/p2v/conversion.c index 103073e..823e413 100644 --- a/p2v/conversion.c +++ b/p2v/conversion.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -72,11 +73,12 @@ xmlBufferDetach (xmlBufferPtr buf) #define WAIT_QEMU_NBD_TIMEOUT 10 /* Data per NBD connection / physical disk. */ -struct data_conn { - mexp_h *h; /* miniexpect handle to ssh */ - pid_t nbd_pid; /* qemu pid */ - int nbd_local_port; /* local NBD port on physical machine */ - int nbd_remote_port; /* remote NBD port on conversion server */ +struct data_conn +{ + mexp_h *h; /* miniexpect handle to ssh */ + pid_t nbd_pid; /* qemu pid */ + int nbd_local_port; /* local NBD port on physical machine */ + int nbd_remote_port; /* remote NBD port on conversion server */ }; static int send_quoted (mexp_h *, const char *s); @@ -84,12 +86,13 @@ static pid_t start_qemu_nbd (int nbd_local_port, const char *device); static int wait_qemu_nbd (int nbd_local_port, int timeout_seconds); static void cleanup_data_conns (struct data_conn *data_conns, size_t nr); static char *generate_libvirt_xml (struct config *, struct data_conn *); -static const char *map_interface_to_network (struct config *, const char *interface); +static const char *map_interface_to_network (struct config *, + const char *interface); static char *conversion_error; static void set_conversion_error (const char *fs, ...) - __attribute__((format(printf,1,2))); + __attribute__ ((format (printf, 1, 2))); static void set_conversion_error (const char *fs, ...) @@ -171,7 +174,8 @@ start_conversion (struct config *config, time_t now; struct tm tm; mexp_h *control_h = NULL; - char dmesg_cmd[] = "dmesg > /tmp/dmesg.XXXXXX", *dmesg_file = &dmesg_cmd[8]; + char dmesg_cmd[] = "dmesg > /tmp/dmesg.XXXXXX", + *dmesg_file = &dmesg_cmd[8]; CLEANUP_FREE char *dmesg = NULL; int fd, r; @@ -200,20 +204,21 @@ start_conversion (struct config *config, if (notify_ui) { CLEANUP_FREE char *msg; - if (asprintf (&msg, - _("Opening data connection for %s ..."), + if (asprintf (&msg, _("Opening data connection for %s ..."), config->disks[i]) == -1) error (EXIT_FAILURE, errno, "asprintf"); notify_ui (NOTIFY_STATUS, msg); } - data_conns[i].h = open_data_connection (config, - &data_conns[i].nbd_local_port, - &data_conns[i].nbd_remote_port); + data_conns[i].h = + open_data_connection (config, &data_conns[i].nbd_local_port, + &data_conns[i].nbd_remote_port); if (data_conns[i].h == NULL) { const char *err = get_ssh_error (); - set_conversion_error ("could not open data connection over SSH to the conversion server: %s", err); + set_conversion_error ("could not open data connection over SSH to " + "the conversion server: %s", + err); goto out; } @@ -224,23 +229,23 @@ start_conversion (struct config *config, cleanup_data_conns (data_conns, nr_disks); exit (EXIT_FAILURE); } - } - else if (asprintf (&device, "/dev/%s", config->disks[i]) == -1) { + } else if (asprintf (&device, "/dev/%s", config->disks[i]) == -1) { perror ("asprintf"); cleanup_data_conns (data_conns, nr_disks); exit (EXIT_FAILURE); } #if DEBUG_STDERR - fprintf (stderr, - "%s: data connection for %s: SSH remote port %d, local port %d\n", - guestfs_int_program_name, device, - data_conns[i].nbd_remote_port, data_conns[i].nbd_local_port); + fprintf ( + stderr, + "%s: data connection for %s: SSH remote port %d, local port %d\n", + guestfs_int_program_name, device, data_conns[i].nbd_remote_port, + data_conns[i].nbd_local_port); #endif /* Start qemu-nbd listening on the given port number. */ data_conns[i].nbd_pid = - start_qemu_nbd (data_conns[i].nbd_local_port, device); + start_qemu_nbd (data_conns[i].nbd_local_port, device); if (data_conns[i].nbd_pid == 0) goto out; @@ -259,15 +264,14 @@ start_conversion (struct config *config, */ time (&now); gmtime_r (&now, &tm); - if (asprintf (&remote_dir, - "/tmp/virt-p2v-%04d%02d%02d-XXXXXXXX", + if (asprintf (&remote_dir, "/tmp/virt-p2v-%04d%02d%02d-XXXXXXXX", tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday) == -1) { perror ("asprintf"); cleanup_data_conns (data_conns, nr_disks); exit (EXIT_FAILURE); } len = strlen (remote_dir); - guestfs_int_random_string (&remote_dir[len-8], 8); + guestfs_int_random_string (&remote_dir[len - 8], 8); if (notify_ui) notify_ui (NOTIFY_LOG_DIR, remote_dir); @@ -277,7 +281,8 @@ start_conversion (struct config *config, goto out; #if DEBUG_STDERR - fprintf (stderr, "%s: libvirt XML:\n%s", guestfs_int_program_name, libvirt_xml); + fprintf (stderr, "%s: libvirt XML:\n%s", guestfs_int_program_name, + libvirt_xml); #endif /* Get the output from the 'dmesg' command. We will store this @@ -300,17 +305,20 @@ start_conversion (struct config *config, } ignore_value (read_whole_file (dmesg_file, &dmesg, NULL)); - skip_dmesg: +skip_dmesg: /* Open the control connection and start conversion */ if (notify_ui) notify_ui (NOTIFY_STATUS, _("Setting up the control connection ...")); - control_h = start_remote_connection (config, remote_dir, libvirt_xml, dmesg); + control_h = + start_remote_connection (config, remote_dir, libvirt_xml, dmesg); if (control_h == NULL) { const char *err = get_ssh_error (); - set_conversion_error ("could not open control connection over SSH to the conversion server: %s", err); + set_conversion_error ("could not open control connection over SSH to " + "the conversion server: %s", + err); goto out; } @@ -328,7 +336,7 @@ start_conversion (struct config *config, set_conversion_error ("mexp_printf: virt-v2v command: %m"); goto out; } - if (config->output) { /* -o */ + if (config->output) { /* -o */ if (mexp_printf (control_h, " -o ") == -1) goto printf_fail; if (send_quoted (control_h, config->output) == -1) @@ -349,7 +357,7 @@ start_conversion (struct config *config, default: abort (); } - if (config->output_format) { /* -of */ + if (config->output_format) { /* -of */ if (mexp_printf (control_h, " -of ") == -1) goto printf_fail; if (send_quoted (control_h, config->output_format) == -1) @@ -389,12 +397,12 @@ start_conversion (struct config *config, if (r == -1) { /* See comment about this in miniexpect.c. */ if (errno == EIO) - break; /* EOF */ + break; /* EOF */ set_conversion_error ("read: %m"); goto out; } if (r == 0) - break; /* EOF */ + break; /* EOF */ buf[r] = '\0'; if (notify_ui) notify_ui (NOTIFY_REMOTE_MESSAGE, buf); @@ -411,13 +419,12 @@ start_conversion (struct config *config, notify_ui (NOTIFY_STATUS, _("Control connection closed by remote.")); ret = 0; - out: +out: if (control_h) { if ((status = mexp_close (control_h)) == -1) { set_conversion_error ("mexp_close: %m"); ret = -1; - } else if (ret == 0 && - WIFEXITED (status) && + } else if (ret == 0 && WIFEXITED (status) && WEXITSTATUS (status) != 0) { set_conversion_error ("virt-v2v exited with status %d", WEXITSTATUS (status)); @@ -478,19 +485,17 @@ start_qemu_nbd (int port, const char *device) return 0; } - if (pid == 0) { /* Child. */ + if (pid == 0) { /* Child. */ close (0); open ("/dev/null", O_RDONLY); - execlp ("qemu-nbd", - "qemu-nbd", - "-r", /* readonly (vital!) */ - "-p", port_str, /* listening port */ - "-t", /* persistent */ - "-f", "raw", /* force raw format */ - "-b", "localhost", /* listen only on loopback interface */ - "--cache=unsafe", /* use unsafe caching for speed */ - device, /* a device like /dev/sda */ + execlp ("qemu-nbd", "qemu-nbd", "-r", /* readonly (vital!) */ + "-p", port_str, /* listening port */ + "-t", /* persistent */ + "-f", "raw", /* force raw format */ + "-b", "localhost", /* listen only on loopback interface */ + "--cache=unsafe", /* use unsafe caching for speed */ + device, /* a device like /dev/sda */ NULL); perror ("qemu-nbd"); _exit (EXIT_FAILURE); @@ -507,7 +512,8 @@ start_qemu_nbd (int port, const char *device) static int bind_source_port (int sockfd, int family, int source_port); static int -connect_with_source_port (const char *hostname, int dest_port, int source_port) +connect_with_source_port (const char *hostname, int dest_port, + int source_port) { struct addrinfo hints; struct addrinfo *results, *rp; @@ -518,15 +524,15 @@ connect_with_source_port (const char *hostname, int dest_port, int source_port) snprintf (dest_port_str, sizeof dest_port_str, "%d", dest_port); memset (&hints, 0, sizeof hints); - hints.ai_family = AF_UNSPEC; /* allow IPv4 or IPv6 */ + hints.ai_family = AF_UNSPEC; /* allow IPv4 or IPv6 */ hints.ai_socktype = SOCK_STREAM; hints.ai_flags = AI_NUMERICSERV; /* numeric dest port number */ hints.ai_protocol = 0; /* any protocol */ r = getaddrinfo (hostname, dest_port_str, &hints, &results); if (r != 0) { - set_conversion_error ("getaddrinfo: %s/%s: %s", - hostname, dest_port_str, gai_strerror (r)); + set_conversion_error ("getaddrinfo: %s/%s: %s", hostname, dest_port_str, + gai_strerror (r)); return -1; } @@ -540,8 +546,8 @@ connect_with_source_port (const char *hostname, int dest_port, int source_port) * that is in TIME_WAIT from a prior run. Handle that gracefully * with SO_REUSEADDR. */ - if (setsockopt (sockfd, SOL_SOCKET, SO_REUSEADDR, - &reuseaddr, sizeof reuseaddr) == -1) + if (setsockopt (sockfd, SOL_SOCKET, SO_REUSEADDR, &reuseaddr, + sizeof reuseaddr) == -1) perror ("warning: setsockopt"); /* Need to bind the source port. */ @@ -602,7 +608,7 @@ bind_source_port (int sockfd, int family, int source_port) freeaddrinfo (results); return -1; - bound: +bound: freeaddrinfo (results); return 0; } @@ -613,8 +619,8 @@ wait_qemu_nbd (int nbd_local_port, int timeout_seconds) int sockfd = -1; int result = -1; time_t start_t, now_t; - struct timespec half_sec = { .tv_sec = 0, .tv_nsec = 500000000 }; - struct timeval timeout = { .tv_usec = 0 }; + struct timespec half_sec = {.tv_sec = 0, .tv_nsec = 500000000 }; + struct timeval timeout = {.tv_usec = 0 }; char magic[8]; /* NBDMAGIC */ size_t bytes_read = 0; ssize_t recvd; @@ -636,7 +642,7 @@ wait_qemu_nbd (int nbd_local_port, int timeout_seconds) * https://bugzilla.redhat.com/show_bug.cgi?id=1167774#c9 */ sockfd = connect_with_source_port ("localhost", nbd_local_port, - nbd_local_port+1); + nbd_local_port + 1); if (sockfd >= 0) break; @@ -665,7 +671,7 @@ wait_qemu_nbd (int nbd_local_port, int timeout_seconds) } result = 0; - cleanup: +cleanup: close (sockfd); return result; @@ -696,61 +702,66 @@ cleanup_data_conns (struct data_conn *data_conns, size_t nr) /* Macros "inspired" by src/launch-libvirt.c */ /* <element */ -#define start_element(element) \ - if (xmlTextWriterStartElement (xo, BAD_CAST (element)) == -1) { \ - set_conversion_error ("xmlTextWriterStartElement: %m"); \ - return NULL; \ - } \ +#define start_element(element) \ + if (xmlTextWriterStartElement (xo, BAD_CAST (element)) == -1) { \ + set_conversion_error ("xmlTextWriterStartElement: %m"); \ + return NULL; \ + } \ do /* finish current </element> */ -#define end_element() \ - while (0); \ - do { \ - if (xmlTextWriterEndElement (xo) == -1) { \ - set_conversion_error ("xmlTextWriterEndElement: %m"); \ - return NULL; \ - } \ +#define end_element() \ + while (0) \ + ; \ + do { \ + if (xmlTextWriterEndElement (xo) == -1) { \ + set_conversion_error ("xmlTextWriterEndElement: %m"); \ + return NULL; \ + } \ } while (0) /* <element/> */ -#define empty_element(element) \ - do { start_element(element) {} end_element (); } while (0) +#define empty_element(element) \ + do { \ + start_element (element) {} \ + end_element (); \ + } while (0) /* key=value attribute of the current element. */ -#define attribute(key,value) \ - if (xmlTextWriterWriteAttribute (xo, BAD_CAST (key), BAD_CAST (value)) == -1) { \ - set_conversion_error ("xmlTextWriterWriteAttribute: %m"); \ - return NULL; \ +#define attribute(key, value) \ + if (xmlTextWriterWriteAttribute (xo, BAD_CAST (key), \ + BAD_CAST (value)) == -1) { \ + set_conversion_error ("xmlTextWriterWriteAttribute: %m"); \ + return NULL; \ } /* key=value, but value is a printf-style format string. */ -#define attribute_format(key,fs,...) \ - if (xmlTextWriterWriteFormatAttribute (xo, BAD_CAST (key), \ - fs, ##__VA_ARGS__) == -1) { \ - set_conversion_error ("xmlTextWriterWriteFormatAttribute: %m"); \ - return NULL; \ +#define attribute_format(key, fs, ...) \ + if (xmlTextWriterWriteFormatAttribute (xo, BAD_CAST (key), fs, \ + ##__VA_ARGS__) == -1) { \ + set_conversion_error ("xmlTextWriterWriteFormatAttribute: %m"); \ + return NULL; \ } /* A string, eg. within an element. */ -#define string(str) \ - if (xmlTextWriterWriteString (xo, BAD_CAST (str)) == -1) { \ - set_conversion_error ("xmlTextWriterWriteString: %m"); \ - return NULL; \ +#define string(str) \ + if (xmlTextWriterWriteString (xo, BAD_CAST (str)) == -1) { \ + set_conversion_error ("xmlTextWriterWriteString: %m"); \ + return NULL; \ } /* A string, using printf-style formatting. */ -#define string_format(fs,...) \ - if (xmlTextWriterWriteFormatString (xo, fs, ##__VA_ARGS__) == -1) { \ - set_conversion_error ("xmlTextWriterWriteFormatString: %m"); \ - return NULL; \ +#define string_format(fs, ...) \ + if (xmlTextWriterWriteFormatString (xo, fs, ##__VA_ARGS__) == -1) { \ + set_conversion_error ("xmlTextWriterWriteFormatString: %m"); \ + return NULL; \ } /* An XML comment. */ -#define comment(str) \ - if (xmlTextWriterWriteComment (xo, BAD_CAST (str)) == -1) { \ - set_conversion_error ("xmlTextWriterWriteComment: %m"); \ - return NULL; \ +#define comment(str) \ + if (xmlTextWriterWriteComment (xo, BAD_CAST (str)) == -1) { \ + set_conversion_error ("xmlTextWriterWriteComment: %m"); \ + return NULL; \ } /* Write the libvirt XML for this physical machine. Note this is not @@ -796,53 +807,66 @@ generate_libvirt_xml (struct config *config, struct data_conn *data_conns) memkb = config->memory / 1024; - comment - (" NOTE!\n" - "\n" - " This libvirt XML is generated by the virt-p2v front end, in\n" - " order to communicate with the backend virt-v2v process running\n" - " on the conversion server. It is a minimal description of the\n" - " physical machine. If the target of the conversion is libvirt,\n" - " then virt-v2v will generate the real target libvirt XML, which\n" - " has only a little to do with the XML in this file.\n" - "\n" - " TL;DR: Don't try to load this XML into libvirt. "); + comment ( + " NOTE!\n" + "\n" + " This libvirt XML is generated by the virt-p2v front end, in\n" + " order to communicate with the backend virt-v2v process running\n" + " on the conversion server. It is a minimal description of the\n" + " physical machine. If the target of the conversion is libvirt,\n" + " then virt-v2v will generate the real target libvirt XML, which\n" + " has only a little to do with the XML in this file.\n" + "\n" + " TL;DR: Don't try to load this XML into libvirt. "); - start_element ("domain") { + start_element ("domain") + { attribute ("type", "physical"); - start_element ("name") { - string (config->guestname); - } end_element (); + start_element ("name") { string (config->guestname); } + end_element (); - start_element ("memory") { + start_element ("memory") + { attribute ("unit", "KiB"); string_format ("%" PRIu64, memkb); - } end_element (); + } + end_element (); - start_element ("currentMemory") { + start_element ("currentMemory") + { attribute ("unit", "KiB"); string_format ("%" PRIu64, memkb); - } end_element (); + } + end_element (); - start_element ("vcpu") { - string_format ("%d", config->vcpus); - } end_element (); + start_element ("vcpu") { string_format ("%d", config->vcpus); } + end_element (); - start_element ("os") { - start_element ("type") { + start_element ("os") + { + start_element ("type") + { attribute ("arch", host_cpu); string ("hvm"); - } end_element (); - } end_element (); + } + end_element (); + } + end_element (); - start_element ("features") { - if (config->flags & FLAG_ACPI) empty_element ("acpi"); - if (config->flags & FLAG_APIC) empty_element ("apic"); - if (config->flags & FLAG_PAE) empty_element ("pae"); - } end_element (); + start_element ("features") + { + if (config->flags & FLAG_ACPI) + empty_element ("acpi"); + if (config->flags & FLAG_APIC) + empty_element ("apic"); + if (config->flags & FLAG_PAE) + empty_element ("pae"); + } + end_element (); - start_element ("devices") { + start_element ("devices") + { for (i = 0; config->disks[i] != NULL; ++i) { char target_dev[64]; @@ -858,40 +882,57 @@ generate_libvirt_xml (struct config *config, struct data_conn *data_conns) goto target_sd; } - start_element ("disk") { + start_element ("disk") + { attribute ("type", "network"); attribute ("device", "disk"); - start_element ("driver") { + start_element ("driver") + { attribute ("name", "qemu"); attribute ("type", "raw"); - } end_element (); - start_element ("source") { + } + end_element (); + start_element ("source") + { attribute ("protocol", "nbd"); - start_element ("host") { + start_element ("host") + { attribute ("name", "localhost"); - attribute_format ("port", "%d", data_conns[i].nbd_remote_port); - } end_element (); - } end_element (); - start_element ("target") { + attribute_format ("port", "%d", + data_conns[i].nbd_remote_port); + } + end_element (); + } + end_element (); + start_element ("target") + { attribute ("dev", target_dev); /* XXX Need to set bus to "ide" or "scsi" here. */ - } end_element (); - } end_element (); + } + end_element (); + } + end_element (); } if (config->removable) { for (i = 0; config->removable[i] != NULL; ++i) { - start_element ("disk") { + start_element ("disk") + { attribute ("type", "network"); attribute ("device", "cdrom"); - start_element ("driver") { + start_element ("driver") + { attribute ("name", "qemu"); attribute ("type", "raw"); - } end_element (); - start_element ("target") { + } + end_element (); + start_element ("target") + { attribute ("dev", config->removable[i]); - } end_element (); - } end_element (); + } + end_element (); + } + end_element (); } } @@ -902,7 +943,7 @@ generate_libvirt_xml (struct config *config, struct data_conn *data_conns) CLEANUP_FREE char *mac = NULL; target_network = - map_interface_to_network (config, config->interfaces[i]); + map_interface_to_network (config, config->interfaces[i]); if (asprintf (&mac_filename, "/sys/class/net/%s/address", config->interfaces[i]) == -1) @@ -910,36 +951,41 @@ generate_libvirt_xml (struct config *config, struct data_conn *data_conns) if (g_file_get_contents (mac_filename, &mac, NULL, NULL)) { size_t len = strlen (mac); - if (len > 0 && mac[len-1] == '\n') - mac[len-1] = '\0'; + if (len > 0 && mac[len - 1] == '\n') + mac[len - 1] = '\0'; } - start_element ("interface") { + start_element ("interface") + { attribute ("type", "network"); - start_element ("source") { + start_element ("source") + { attribute ("network", target_network); - } end_element (); - start_element ("target") { + } + end_element (); + start_element ("target") + { attribute ("dev", config->interfaces[i]); - } end_element (); + } + end_element (); if (mac) { - start_element ("mac") { - attribute ("address", mac); - } end_element (); + start_element ("mac") { attribute ("address", mac); } + end_element (); } - } end_element (); + } + end_element (); } } - - } end_element (); /* </devices> */ - - } end_element (); /* </domain> */ + } + end_element (); /* </devices> */ + } + end_element (); /* </domain> */ if (xmlTextWriterEndDocument (xo) == -1) { set_conversion_error ("xmlTextWriterEndDocument: %m"); return NULL; } - ret = (char *) xmlBufferDetach (xb); /* caller frees */ + ret = (char *)xmlBufferDetach (xb); /* caller frees */ if (ret == NULL) { set_conversion_error ("xmlBufferDetach: %m"); return NULL; @@ -972,7 +1018,7 @@ map_interface_to_network (struct config *config, const char *interface) len = strlen (interface); if (STRPREFIX (config->network_map[i], interface) && config->network_map[i][len] == ':') - return &config->network_map[i][len+1]; + return &config->network_map[i][len + 1]; } /* No mapping found. */ diff --git a/p2v/gui.c b/p2v/gui.c index 625c6eb..04853f2 100644 --- a/p2v/gui.c +++ b/p2v/gui.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -33,7 +34,8 @@ #include <pthread.h> -#pragma GCC diagnostic ignored "-Wstrict-prototypes" /* error in <gtk.h> */ +#pragma GCC diagnostic ignored "-Wstrict-prototypes" /* error in <gtk.h> \ + */ #include <gtk/gtk.h> #include "ignore-value.h" @@ -52,25 +54,19 @@ static void show_running_dialog (void); static void set_info_label (void); /* The connection dialog. */ -static GtkWidget *conn_dlg, - *server_entry, *port_entry, - *username_entry, *password_entry, *identity_entry, *sudo_button, - *spinner_hbox, *spinner, *spinner_message, *next_button; +static GtkWidget *conn_dlg, *server_entry, *port_entry, *username_entry, + *password_entry, *identity_entry, *sudo_button, *spinner_hbox, *spinner, + *spinner_message, *next_button; /* The conversion dialog. */ -static GtkWidget *conv_dlg, - *guestname_entry, *vcpus_entry, *memory_entry, - *vcpus_warning, *memory_warning, *target_warning_label, - *o_combo, *oc_entry, *os_entry, *of_entry, *oa_combo, - *info_label, - *debug_button, - *disks_list, *removable_list, *interfaces_list, - *start_button; +static GtkWidget *conv_dlg, *guestname_entry, *vcpus_entry, *memory_entry, + *vcpus_warning, *memory_warning, *target_warning_label, *o_combo, + *oc_entry, *os_entry, *of_entry, *oa_combo, *info_label, *debug_button, + *disks_list, *removable_list, *interfaces_list, *start_button; /* The running dialog which is displayed when virt-v2v is running. */ -static GtkWidget *run_dlg, - *v2v_output_sw, *v2v_output, *log_label, *status_label, - *cancel_button, *reboot_button; +static GtkWidget *run_dlg, *v2v_output_sw, *v2v_output, *log_label, + *status_label, *cancel_button, *reboot_button; /* The entry point from the main program. * Note that gtk_init etc have already been called in main. @@ -120,48 +116,49 @@ create_connection_dialog (struct config *config) gtk_window_set_resizable (GTK_WINDOW (conn_dlg), FALSE); /* The main dialog area. */ - intro = gtk_label_new (_("Connect to a virt-v2v conversion server over SSH:")); + intro = gtk_label_new ( + _("Connect to a virt-v2v conversion server over SSH:")); gtk_label_set_line_wrap (GTK_LABEL (intro), TRUE); gtk_misc_set_padding (GTK_MISC (intro), 10, 10); table = gtk_table_new (7, 2, FALSE); server_label = gtk_label_new (_("Conversion server:")); gtk_misc_set_alignment (GTK_MISC (server_label), 1., 0.5); - gtk_table_attach (GTK_TABLE (table), server_label, - 0, 1, 0, 1, GTK_FILL, GTK_FILL, 4, 4); + gtk_table_attach (GTK_TABLE (table), server_label, 0, 1, 0, 1, GTK_FILL, + GTK_FILL, 4, 4); server_entry = gtk_entry_new (); if (config->server != NULL) gtk_entry_set_text (GTK_ENTRY (server_entry), config->server); - gtk_table_attach (GTK_TABLE (table), server_entry, - 1, 2, 0, 1, GTK_FILL, GTK_FILL, 4, 4); + gtk_table_attach (GTK_TABLE (table), server_entry, 1, 2, 0, 1, GTK_FILL, + GTK_FILL, 4, 4); port_label = gtk_label_new (_("SSH port:")); gtk_misc_set_alignment (GTK_MISC (port_label), 1., 0.5); - gtk_table_attach (GTK_TABLE (table), port_label, - 0, 1, 1, 2, GTK_FILL, GTK_FILL, 4, 4); + gtk_table_attach (GTK_TABLE (table), port_label, 0, 1, 1, 2, GTK_FILL, + GTK_FILL, 4, 4); port_entry = gtk_entry_new (); gtk_entry_set_width_chars (GTK_ENTRY (port_entry), 6); snprintf (port_str, sizeof port_str, "%d", config->port); gtk_entry_set_text (GTK_ENTRY (port_entry), port_str); - gtk_table_attach (GTK_TABLE (table), port_entry, - 1, 2, 1, 2, GTK_FILL, GTK_FILL, 4, 4); + gtk_table_attach (GTK_TABLE (table), port_entry, 1, 2, 1, 2, GTK_FILL, + GTK_FILL, 4, 4); username_label = gtk_label_new (_("User name:")); gtk_misc_set_alignment (GTK_MISC (username_label), 1., 0.5); - gtk_table_attach (GTK_TABLE (table), username_label, - 0, 1, 2, 3, GTK_FILL, GTK_FILL, 4, 4); + gtk_table_attach (GTK_TABLE (table), username_label, 0, 1, 2, 3, GTK_FILL, + GTK_FILL, 4, 4); username_entry = gtk_entry_new (); if (config->username != NULL) gtk_entry_set_text (GTK_ENTRY (username_entry), config->username); else gtk_entry_set_text (GTK_ENTRY (username_entry), "root"); - gtk_table_attach (GTK_TABLE (table), username_entry, - 1, 2, 2, 3, GTK_FILL, GTK_FILL, 4, 4); + gtk_table_attach (GTK_TABLE (table), username_entry, 1, 2, 2, 3, GTK_FILL, + GTK_FILL, 4, 4); password_label = gtk_label_new (_("Password:")); gtk_misc_set_alignment (GTK_MISC (password_label), 1., 0.5); - gtk_table_attach (GTK_TABLE (table), password_label, - 0, 1, 3, 4, GTK_FILL, GTK_FILL, 4, 4); + gtk_table_attach (GTK_TABLE (table), password_label, 0, 1, 3, 4, GTK_FILL, + GTK_FILL, 4, 4); password_entry = gtk_entry_new (); gtk_entry_set_visibility (GTK_ENTRY (password_entry), FALSE); #ifdef GTK_INPUT_PURPOSE_PASSWORD @@ -170,32 +167,33 @@ create_connection_dialog (struct config *config) #endif if (config->password != NULL) gtk_entry_set_text (GTK_ENTRY (password_entry), config->password); - gtk_table_attach (GTK_TABLE (table), password_entry, - 1, 2, 3, 4, GTK_FILL, GTK_FILL, 4, 4); + gtk_table_attach (GTK_TABLE (table), password_entry, 1, 2, 3, 4, GTK_FILL, + GTK_FILL, 4, 4); identity_label = gtk_label_new (_("SSH Identity URL:")); gtk_misc_set_alignment (GTK_MISC (identity_label), 1., 0.5); - gtk_table_attach (GTK_TABLE (table), identity_label, - 0, 1, 4, 5, GTK_FILL, GTK_FILL, 4, 4); + gtk_table_attach (GTK_TABLE (table), identity_label, 0, 1, 4, 5, GTK_FILL, + GTK_FILL, 4, 4); identity_entry = gtk_entry_new (); if (config->identity_url != NULL) gtk_entry_set_text (GTK_ENTRY (identity_entry), config->identity_url); - gtk_table_attach (GTK_TABLE (table), identity_entry, - 1, 2, 4, 5, GTK_FILL, GTK_FILL, 4, 4); + gtk_table_attach (GTK_TABLE (table), identity_entry, 1, 2, 4, 5, GTK_FILL, + GTK_FILL, 4, 4); identity_tip_label = gtk_label_new (NULL); gtk_label_set_markup (GTK_LABEL (identity_tip_label), - _("<i>If using password authentication, leave the SSH Identity URL blank</i>")); + _("<i>If using password authentication, leave the " + "SSH Identity URL blank</i>")); gtk_label_set_line_wrap (GTK_LABEL (identity_tip_label), TRUE); - gtk_table_attach (GTK_TABLE (table), identity_tip_label, - 1, 2, 5, 6, GTK_FILL, GTK_FILL, 4, 4); + gtk_table_attach (GTK_TABLE (table), identity_tip_label, 1, 2, 5, 6, + GTK_FILL, GTK_FILL, 4, 4); - sudo_button = - gtk_check_button_new_with_label (_("Use sudo when running virt-v2v")); + sudo_button = gtk_check_button_new_with_label ( + _("Use sudo when running virt-v2v")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (sudo_button), config->sudo); - gtk_table_attach (GTK_TABLE (table), sudo_button, - 1, 2, 6, 7, GTK_FILL, GTK_FILL, 4, 4); + gtk_table_attach (GTK_TABLE (table), sudo_button, 1, 2, 6, 7, GTK_FILL, + GTK_FILL, 4, 4); test_hbox = gtk_hbox_new (FALSE, 0); test = gtk_button_new_with_label (_("Test connection")); @@ -207,29 +205,29 @@ create_connection_dialog (struct config *config) spinner_message = gtk_label_new (NULL); gtk_label_set_line_wrap (GTK_LABEL (spinner_message), TRUE); gtk_misc_set_padding (GTK_MISC (spinner_message), 10, 10); - gtk_box_pack_start (GTK_BOX (spinner_hbox), spinner_message, TRUE, TRUE, 0); + gtk_box_pack_start (GTK_BOX (spinner_hbox), spinner_message, TRUE, TRUE, + 0); - gtk_box_pack_start (GTK_BOX (GTK_DIALOG (conn_dlg)->vbox), - intro, TRUE, TRUE, 0); - gtk_box_pack_start (GTK_BOX (GTK_DIALOG (conn_dlg)->vbox), - table, TRUE, TRUE, 0); - gtk_box_pack_start (GTK_BOX (GTK_DIALOG (conn_dlg)->vbox), - test_hbox, FALSE, FALSE, 0); - gtk_box_pack_start (GTK_BOX (GTK_DIALOG (conn_dlg)->vbox), - spinner_hbox, TRUE, TRUE, 0); + gtk_box_pack_start (GTK_BOX (GTK_DIALOG (conn_dlg)->vbox), intro, TRUE, + TRUE, 0); + gtk_box_pack_start (GTK_BOX (GTK_DIALOG (conn_dlg)->vbox), table, TRUE, + TRUE, 0); + gtk_box_pack_start (GTK_BOX (GTK_DIALOG (conn_dlg)->vbox), test_hbox, + FALSE, FALSE, 0); + gtk_box_pack_start (GTK_BOX (GTK_DIALOG (conn_dlg)->vbox), spinner_hbox, + TRUE, TRUE, 0); /* Buttons. */ - gtk_dialog_add_buttons (GTK_DIALOG (conn_dlg), - _("Configure network ..."), 1, - _("About virt-p2v " PACKAGE_VERSION " ..."), 2, - _("Next"), 3, - NULL); + gtk_dialog_add_buttons ( + GTK_DIALOG (conn_dlg), _("Configure network ..."), 1, + _("About virt-p2v " PACKAGE_VERSION " ..."), 2, _("Next"), 3, NULL); - next_button = gtk_dialog_get_widget_for_response (GTK_DIALOG (conn_dlg), 3); + next_button = + gtk_dialog_get_widget_for_response (GTK_DIALOG (conn_dlg), 3); gtk_widget_set_sensitive (next_button, FALSE); configure_network = - gtk_dialog_get_widget_for_response (GTK_DIALOG (conn_dlg), 1); + gtk_dialog_get_widget_for_response (GTK_DIALOG (conn_dlg), 1); about = gtk_dialog_get_widget_for_response (GTK_DIALOG (conn_dlg), 2); /* Signals. */ @@ -282,23 +280,27 @@ test_connection_clicked (GtkWidget *w, gpointer data) errors++; } port_str = gtk_entry_get_text (GTK_ENTRY (port_entry)); - if (sscanf (port_str, "%d", &config->port) != 1 || - config->port <= 0 || config->port >= 65536) { - gtk_label_set_text (GTK_LABEL (spinner_message), - _("error: Invalid port number. If in doubt, use \"22\".")); + if (sscanf (port_str, "%d", &config->port) != 1 || config->port <= 0 || + config->port >= 65536) { + gtk_label_set_text ( + GTK_LABEL (spinner_message), + _("error: Invalid port number. If in doubt, use \"22\".")); gtk_widget_grab_focus (port_entry); errors++; } free (config->username); - config->username = strdup (gtk_entry_get_text (GTK_ENTRY (username_entry))); + config->username = + strdup (gtk_entry_get_text (GTK_ENTRY (username_entry))); if (STREQ (config->username, "")) { - gtk_label_set_text (GTK_LABEL (spinner_message), - _("error: No user name. If in doubt, use \"root\".")); + gtk_label_set_text ( + GTK_LABEL (spinner_message), + _("error: No user name. If in doubt, use \"root\".")); gtk_widget_grab_focus (username_entry); errors++; } free (config->password); - config->password = strdup (gtk_entry_get_text (GTK_ENTRY (password_entry))); + config->password = + strdup (gtk_entry_get_text (GTK_ENTRY (password_entry))); free (config->identity_url); identity_str = gtk_entry_get_text (GTK_ENTRY (identity_entry)); @@ -308,7 +310,8 @@ test_connection_clicked (GtkWidget *w, gpointer data) config->identity_url = NULL; config->identity_file_needs_update = 1; - config->sudo = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (sudo_button)); + config->sudo = + gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (sudo_button)); if (errors) return; @@ -339,8 +342,9 @@ test_connection_thread (void *data) int r; gdk_threads_enter (); - gtk_label_set_text (GTK_LABEL (spinner_message), - _("Testing the connection to the conversion server ...")); + gtk_label_set_text ( + GTK_LABEL (spinner_message), + _("Testing the connection to the conversion server ...")); gtk_spinner_start (GTK_SPINNER (spinner)); gdk_threads_leave (); @@ -358,12 +362,12 @@ test_connection_thread (void *data) gtk_label_set_text (GTK_LABEL (spinner_message), err); /* Disable the Next button. */ gtk_widget_set_sensitive (next_button, FALSE); - } - else { + } else { /* Connection is good. */ gtk_label_set_text (GTK_LABEL (spinner_message), _("Connected to the conversion server.\n" - "Press the \"Next\" button to configure the conversion process.")); + "Press the \"Next\" button to configure the " + "conversion process.")); /* Enable the Next button. */ gtk_widget_set_sensitive (next_button, TRUE); gtk_widget_grab_focus (next_button); @@ -386,15 +390,12 @@ configure_network_button_clicked (GtkWidget *w, gpointer data) static void about_button_clicked (GtkWidget *w, gpointer data) { - gtk_show_about_dialog (GTK_WINDOW (conn_dlg), - "program-name", guestfs_int_program_name, - "version", PACKAGE_VERSION " (" host_cpu ")", - "copyright", "\u00A9 2009-2016 Red Hat Inc.", - "comments", "Convert a physical machine to use KVM", - "license", gplv2plus, - "website", "http://libguestfs.org/", - "authors", authors, - NULL); + gtk_show_about_dialog ( + GTK_WINDOW (conn_dlg), "program-name", guestfs_int_program_name, + "version", PACKAGE_VERSION " (" host_cpu ")", "copyright", + "\u00A9 2009-2016 Red Hat Inc.", "comments", + "Convert a physical machine to use KVM", "license", gplv2plus, + "website", "http://libguestfs.org/", "authors", authors, NULL); } /* The connection dialog Next button has been clicked. */ @@ -411,9 +412,13 @@ connection_next_clicked (GtkWidget *w, gpointer data) static void populate_disks (GtkTreeView *disks_list); static void populate_removable (GtkTreeView *removable_list); static void populate_interfaces (GtkTreeView *interfaces_list); -static void toggled (GtkCellRendererToggle *cell, gchar *path_str, gpointer data); -static void network_edited_callback (GtkCellRendererToggle *cell, gchar *path_str, gchar *new_text, gpointer data); -static gboolean maybe_identify_click (GtkWidget *interfaces_list, GdkEventButton *event, gpointer data); +static void toggled (GtkCellRendererToggle *cell, gchar *path_str, + gpointer data); +static void network_edited_callback (GtkCellRendererToggle *cell, + gchar *path_str, gchar *new_text, + gpointer data); +static gboolean maybe_identify_click (GtkWidget *interfaces_list, + GdkEventButton *event, gpointer data); static void set_disks_from_ui (struct config *); static void set_removable_from_ui (struct config *); static void set_interfaces_from_ui (struct config *); @@ -483,42 +488,42 @@ create_conversion_dialog (struct config *config) target_tbl = gtk_table_new (3, 3, FALSE); guestname_label = gtk_label_new (_("Name:")); gtk_misc_set_alignment (GTK_MISC (guestname_label), 1., 0.5); - gtk_table_attach (GTK_TABLE (target_tbl), guestname_label, - 0, 1, 0, 1, GTK_FILL, GTK_FILL, 1, 1); + gtk_table_attach (GTK_TABLE (target_tbl), guestname_label, 0, 1, 0, 1, + GTK_FILL, GTK_FILL, 1, 1); guestname_entry = gtk_entry_new (); if (config->guestname != NULL) gtk_entry_set_text (GTK_ENTRY (guestname_entry), config->guestname); - gtk_table_attach (GTK_TABLE (target_tbl), guestname_entry, - 1, 2, 0, 1, GTK_FILL, GTK_FILL, 1, 1); + gtk_table_attach (GTK_TABLE (target_tbl), guestname_entry, 1, 2, 0, 1, + GTK_FILL, GTK_FILL, 1, 1); vcpus_label = gtk_label_new (_("# vCPUs:")); gtk_misc_set_alignment (GTK_MISC (vcpus_label), 1., 0.5); - gtk_table_attach (GTK_TABLE (target_tbl), vcpus_label, - 0, 1, 1, 2, GTK_FILL, GTK_FILL, 1, 1); + gtk_table_attach (GTK_TABLE (target_tbl), vcpus_label, 0, 1, 1, 2, + GTK_FILL, GTK_FILL, 1, 1); vcpus_entry = gtk_entry_new (); snprintf (vcpus_str, sizeof vcpus_str, "%d", config->vcpus); gtk_entry_set_text (GTK_ENTRY (vcpus_entry), vcpus_str); - gtk_table_attach (GTK_TABLE (target_tbl), vcpus_entry, - 1, 2, 1, 2, GTK_FILL, GTK_FILL, 1, 1); + gtk_table_attach (GTK_TABLE (target_tbl), vcpus_entry, 1, 2, 1, 2, + GTK_FILL, GTK_FILL, 1, 1); vcpus_warning = gtk_image_new_from_stock (GTK_STOCK_DIALOG_WARNING, GTK_ICON_SIZE_BUTTON); - gtk_table_attach (GTK_TABLE (target_tbl), vcpus_warning, - 2, 3, 1, 2, 0, 0, 1, 1); + gtk_table_attach (GTK_TABLE (target_tbl), vcpus_warning, 2, 3, 1, 2, 0, 0, + 1, 1); memory_label = gtk_label_new (_("Memory (MB):")); gtk_misc_set_alignment (GTK_MISC (memory_label), 1., 0.5); - gtk_table_attach (GTK_TABLE (target_tbl), memory_label, - 0, 1, 2, 3, GTK_FILL, GTK_FILL, 1, 1); + gtk_table_attach (GTK_TABLE (target_tbl), memory_label, 0, 1, 2, 3, + GTK_FILL, GTK_FILL, 1, 1); memory_entry = gtk_entry_new (); snprintf (memory_str, sizeof memory_str, "%" PRIu64, config->memory / 1024 / 1024); gtk_entry_set_text (GTK_ENTRY (memory_entry), memory_str); - gtk_table_attach (GTK_TABLE (target_tbl), memory_entry, - 1, 2, 2, 3, GTK_FILL, GTK_FILL, 1, 1); + gtk_table_attach (GTK_TABLE (target_tbl), memory_entry, 1, 2, 2, 3, + GTK_FILL, GTK_FILL, 1, 1); memory_warning = gtk_image_new_from_stock (GTK_STOCK_DIALOG_WARNING, GTK_ICON_SIZE_BUTTON); - gtk_table_attach (GTK_TABLE (target_tbl), memory_warning, - 2, 3, 2, 3, 0, 0, 1, 1); + gtk_table_attach (GTK_TABLE (target_tbl), memory_warning, 2, 3, 2, 3, 0, + 0, 1, 1); gtk_box_pack_start (GTK_BOX (target_vbox), target_tbl, TRUE, TRUE, 0); @@ -527,7 +532,8 @@ create_conversion_dialog (struct config *config) gtk_label_set_line_wrap_mode (GTK_LABEL (target_warning_label), PANGO_WRAP_WORD); gtk_widget_set_size_request (target_warning_label, -1, 7 * 16); - gtk_box_pack_end (GTK_BOX (target_vbox), target_warning_label, TRUE, TRUE, 0); + gtk_box_pack_end (GTK_BOX (target_vbox), target_warning_label, TRUE, TRUE, + 0); gtk_container_add (GTK_CONTAINER (target_frame), target_vbox); @@ -539,54 +545,70 @@ create_conversion_dialog (struct config *config) output_tbl = gtk_table_new (5, 2, FALSE); o_label = gtk_label_new (_("Output to (-o):")); gtk_misc_set_alignment (GTK_MISC (o_label), 1., 0.5); - gtk_table_attach (GTK_TABLE (output_tbl), o_label, - 0, 1, 0, 1, GTK_FILL, GTK_FILL, 1, 1); + gtk_table_attach (GTK_TABLE (output_tbl), o_label, 0, 1, 0, 1, GTK_FILL, + GTK_FILL, 1, 1); o_combo = gtk_combo_box_text_new (); - gtk_widget_set_tooltip_markup (o_combo, _("<b>libvirt</b> means send the converted guest to libvirt-managed KVM on the conversion server. <b>local</b> means put it in a directory on the conversion server. <b>rhev</b> means write it to RHEV-M/oVirt. <b>glance</b> means write it to OpenStack Glance. See the virt-v2v(1) manual page for more information about output options.")); + gtk_widget_set_tooltip_markup ( + o_combo, + _("<b>libvirt</b> means send the converted guest to libvirt-managed " + "KVM on the conversion server. <b>local</b> means put it in a " + "directory on the conversion server. <b>rhev</b> means write it " + "to RHEV-M/oVirt. <b>glance</b> means write it to OpenStack " + "Glance. See the virt-v2v(1) manual page for more information " + "about output options.")); repopulate_output_combo (config); - gtk_table_attach (GTK_TABLE (output_tbl), o_combo, - 1, 2, 0, 1, GTK_FILL, GTK_FILL, 1, 1); + gtk_table_attach (GTK_TABLE (output_tbl), o_combo, 1, 2, 0, 1, GTK_FILL, + GTK_FILL, 1, 1); oc_label = gtk_label_new (_("Output conn. (-oc):")); gtk_misc_set_alignment (GTK_MISC (oc_label), 1., 0.5); - gtk_table_attach (GTK_TABLE (output_tbl), oc_label, - 0, 1, 1, 2, GTK_FILL, GTK_FILL, 1, 1); + gtk_table_attach (GTK_TABLE (output_tbl), oc_label, 0, 1, 1, 2, GTK_FILL, + GTK_FILL, 1, 1); oc_entry = gtk_entry_new (); - gtk_widget_set_tooltip_markup (oc_entry, _("For <b>libvirt</b> only, the libvirt connection URI, or leave blank to add the guest to the default libvirt instance on the conversion server. For others, leave this field blank.")); + gtk_widget_set_tooltip_markup ( + oc_entry, + _("For <b>libvirt</b> only, the libvirt connection URI, or leave " + "blank to add the guest to the default libvirt instance on the " + "conversion server. For others, leave this field blank.")); if (config->output_connection != NULL) gtk_entry_set_text (GTK_ENTRY (oc_entry), config->output_connection); - gtk_table_attach (GTK_TABLE (output_tbl), oc_entry, - 1, 2, 1, 2, GTK_FILL, GTK_FILL, 1, 1); + gtk_table_attach (GTK_TABLE (output_tbl), oc_entry, 1, 2, 1, 2, GTK_FILL, + GTK_FILL, 1, 1); os_label = gtk_label_new (_("Output storage (-os):")); gtk_misc_set_alignment (GTK_MISC (os_label), 1., 0.5); - gtk_table_attach (GTK_TABLE (output_tbl), os_label, - 0, 1, 2, 3, GTK_FILL, GTK_FILL, 1, 1); + gtk_table_attach (GTK_TABLE (output_tbl), os_label, 0, 1, 2, 3, GTK_FILL, + GTK_FILL, 1, 1); os_entry = gtk_entry_new (); - gtk_widget_set_tooltip_markup (os_entry, _("For <b>local</b>, put the directory name on the conversion server. For <b>rhev</b>, put the Export Storage Domain (server:/mountpoint). For others, leave this field blank.")); + gtk_widget_set_tooltip_markup ( + os_entry, + _("For <b>local</b>, put the directory name on the conversion " + "server. For <b>rhev</b>, put the Export Storage Domain " + "(server:/mountpoint). For others, leave this field blank.")); if (config->output_storage != NULL) gtk_entry_set_text (GTK_ENTRY (os_entry), config->output_storage); - gtk_table_attach (GTK_TABLE (output_tbl), os_entry, - 1, 2, 2, 3, GTK_FILL, GTK_FILL, 1, 1); + gtk_table_attach (GTK_TABLE (output_tbl), os_entry, 1, 2, 2, 3, GTK_FILL, + GTK_FILL, 1, 1); of_label = gtk_label_new (_("Output format (-of):")); gtk_misc_set_alignment (GTK_MISC (of_label), 1., 0.5); - gtk_table_attach (GTK_TABLE (output_tbl), of_label, - 0, 1, 3, 4, GTK_FILL, GTK_FILL, 1, 1); + gtk_table_attach (GTK_TABLE (output_tbl), of_label, 0, 1, 3, 4, GTK_FILL, + GTK_FILL, 1, 1); of_entry = gtk_entry_new (); - gtk_widget_set_tooltip_markup (of_entry, _("The output disk format, typically <b>raw</b> or <b>qcow2</b>. If blank, defaults to <b>raw</b>.")); + gtk_widget_set_tooltip_markup ( + of_entry, _("The output disk format, typically <b>raw</b> or " + "<b>qcow2</b>. If blank, defaults to <b>raw</b>.")); if (config->output_format != NULL) gtk_entry_set_text (GTK_ENTRY (of_entry), config->output_format); - gtk_table_attach (GTK_TABLE (output_tbl), of_entry, - 1, 2, 3, 4, GTK_FILL, GTK_FILL, 1, 1); + gtk_table_attach (GTK_TABLE (output_tbl), of_entry, 1, 2, 3, 4, GTK_FILL, + GTK_FILL, 1, 1); oa_label = gtk_label_new (_("Output allocation (-oa):")); gtk_misc_set_alignment (GTK_MISC (oa_label), 1., 0.5); - gtk_table_attach (GTK_TABLE (output_tbl), oa_label, - 0, 1, 4, 5, GTK_FILL, GTK_FILL, 1, 1); + gtk_table_attach (GTK_TABLE (output_tbl), oa_label, 0, 1, 4, 5, GTK_FILL, + GTK_FILL, 1, 1); oa_combo = gtk_combo_box_text_new (); - gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (oa_combo), - "sparse"); + gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (oa_combo), "sparse"); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (oa_combo), "preallocated"); switch (config->output_allocation) { @@ -597,12 +619,12 @@ create_conversion_dialog (struct config *config) gtk_combo_box_set_active (GTK_COMBO_BOX (oa_combo), 0); break; } - gtk_table_attach (GTK_TABLE (output_tbl), oa_combo, - 1, 2, 4, 5, GTK_FILL, GTK_FILL, 1, 1); + gtk_table_attach (GTK_TABLE (output_tbl), oa_combo, 1, 2, 4, 5, GTK_FILL, + GTK_FILL, 1, 1); - debug_button = - gtk_check_button_new_with_label (_("Enable server-side debugging\n" - "(This is saved in /tmp on the conversion server)")); + debug_button = gtk_check_button_new_with_label ( + _("Enable server-side debugging\n" + "(This is saved in /tmp on the conversion server)")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (debug_button), config->verbose); @@ -652,10 +674,12 @@ create_conversion_dialog (struct config *config) /* See maybe_identify_click below for what we're doing. */ g_signal_connect (interfaces_list, "button-press-event", G_CALLBACK (maybe_identify_click), NULL); - gtk_widget_set_tooltip_markup (interfaces_list, _("Left click on an interface name to flash the light on the physical interface.")); + gtk_widget_set_tooltip_markup ( + interfaces_list, _("Left click on an interface name to flash the " + "light on the physical interface.")); populate_interfaces (GTK_TREE_VIEW (interfaces_list)); - gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (interfaces_sw), - interfaces_list); + gtk_scrolled_window_add_with_viewport ( + GTK_SCROLLED_WINDOW (interfaces_sw), interfaces_list); gtk_container_add (GTK_CONTAINER (interfaces_frame), interfaces_sw); /* Pack the top level dialog. */ @@ -665,20 +689,20 @@ create_conversion_dialog (struct config *config) gtk_box_pack_start (GTK_BOX (right_vbox), disks_frame, TRUE, TRUE, 0); gtk_box_pack_start (GTK_BOX (right_vbox), removable_frame, TRUE, TRUE, 0); - gtk_box_pack_start (GTK_BOX (right_vbox), interfaces_frame, TRUE, TRUE, 0); + gtk_box_pack_start (GTK_BOX (right_vbox), interfaces_frame, TRUE, TRUE, + 0); gtk_box_pack_start (GTK_BOX (hbox), left_vbox, TRUE, TRUE, 0); gtk_box_pack_start (GTK_BOX (hbox), right_vbox, TRUE, TRUE, 0); - gtk_box_pack_start (GTK_BOX (GTK_DIALOG (conv_dlg)->vbox), - hbox, TRUE, TRUE, 0); + gtk_box_pack_start (GTK_BOX (GTK_DIALOG (conv_dlg)->vbox), hbox, TRUE, + TRUE, 0); /* Buttons. */ - gtk_dialog_add_buttons (GTK_DIALOG (conv_dlg), - _("Back"), 1, - _("Start conversion"), 2, - NULL); + gtk_dialog_add_buttons (GTK_DIALOG (conv_dlg), _("Back"), 1, + _("Start conversion"), 2, NULL); back = gtk_dialog_get_widget_for_response (GTK_DIALOG (conv_dlg), 1); - start_button = gtk_dialog_get_widget_for_response (GTK_DIALOG (conv_dlg), 2); + start_button = + gtk_dialog_get_widget_for_response (GTK_DIALOG (conv_dlg), 2); /* Signals. */ g_signal_connect_swapped (G_OBJECT (conv_dlg), "destroy", @@ -719,9 +743,8 @@ set_info_label (void) if (!v2v_major) r = asprintf (&text, _("virt-p2v (client) %s"), PACKAGE_VERSION); else - r = asprintf (&text, - _("virt-p2v (client) %s\n" - "virt-v2v (conversion server) %d.%d.%d"), + r = asprintf (&text, _("virt-p2v (client) %s\n" + "virt-v2v (conversion server) %d.%d.%d"), PACKAGE_VERSION, v2v_major, v2v_minor, v2v_release); if (r == -1) { perror ("asprintf"); @@ -742,7 +765,8 @@ repopulate_output_combo (struct config *config) if (config && config->output) output = strdup (config->output); else - output = gtk_combo_box_text_get_active_text (GTK_COMBO_BOX_TEXT (o_combo)); + output = + gtk_combo_box_text_get_active_text (GTK_COMBO_BOX_TEXT (o_combo)); /* Remove existing rows in o_combo. */ model = gtk_combo_box_get_model (GTK_COMBO_BOX (o_combo)); @@ -752,7 +776,8 @@ repopulate_output_combo (struct config *config) * a standard set of drivers. */ if (output_drivers == NULL) { - gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (o_combo), "libvirt"); + gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (o_combo), + "libvirt"); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (o_combo), "local"); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (o_combo), "rhev"); if (output == NULL || STREQ (output, "libvirt")) @@ -771,8 +796,7 @@ repopulate_output_combo (struct config *config) for (i = 0; output_drivers[i] != NULL; ++i) if (STREQ (output, output_drivers[i])) gtk_combo_box_set_active (GTK_COMBO_BOX (o_combo), i); - } - else + } else gtk_combo_box_set_active (GTK_COMBO_BOX (o_combo), 0); } } @@ -781,14 +805,14 @@ static void populate_disks (GtkTreeView *disks_list) { GtkListStore *disks_store; - GtkCellRenderer *disks_col_convert, *disks_col_device, - *disks_col_size, *disks_col_model; + GtkCellRenderer *disks_col_convert, *disks_col_device, *disks_col_size, + *disks_col_model; GtkTreeIter iter; size_t i; - disks_store = gtk_list_store_new (NUM_DISKS_COLS, - G_TYPE_BOOLEAN, G_TYPE_STRING, - G_TYPE_STRING, G_TYPE_STRING); + disks_store = + gtk_list_store_new (NUM_DISKS_COLS, G_TYPE_BOOLEAN, G_TYPE_STRING, + G_TYPE_STRING, G_TYPE_STRING); if (all_disks != NULL) { for (i = 0; all_disks[i] != NULL; ++i) { CLEANUP_FREE char *size_filename = NULL; @@ -798,12 +822,12 @@ populate_disks (GtkTreeView *disks_list) CLEANUP_FREE char *model = NULL; uint64_t size; - if (asprintf (&size_filename, "/sys/block/%s/size", - all_disks[i]) == -1) + if (asprintf (&size_filename, "/sys/block/%s/size", all_disks[i]) == + -1) error (EXIT_FAILURE, errno, "asprintf"); if (g_file_get_contents (size_filename, &size_str, NULL, NULL) && sscanf (size_str, "%" SCNu64, &size) == 1) { - size /= 2*1024*1024; /* size from kernel is given in sectors? */ + size /= 2 * 1024 * 1024; /* size from kernel is given in sectors? */ if (asprintf (&size_gb, "%" PRIu64, size) == -1) error (EXIT_FAILURE, errno, "asprintf"); } @@ -814,55 +838,39 @@ populate_disks (GtkTreeView *disks_list) if (g_file_get_contents (model_filename, &model, NULL, NULL)) { /* Need to chomp trailing \n from the content. */ size_t len = strlen (model); - if (len > 0 && model[len-1] == '\n') - model[len-1] = '\0'; + if (len > 0 && model[len - 1] == '\n') + model[len - 1] = '\0'; } else { model = strdup (""); } gtk_list_store_append (disks_store, &iter); - gtk_list_store_set (disks_store, &iter, - DISKS_COL_CONVERT, TRUE, - DISKS_COL_DEVICE, all_disks[i], - DISKS_COL_SIZE, size_gb, - DISKS_COL_MODEL, model, - -1); + gtk_list_store_set (disks_store, &iter, DISKS_COL_CONVERT, TRUE, + DISKS_COL_DEVICE, all_disks[i], DISKS_COL_SIZE, + size_gb, DISKS_COL_MODEL, model, -1); } } - gtk_tree_view_set_model (disks_list, - GTK_TREE_MODEL (disks_store)); + gtk_tree_view_set_model (disks_list, GTK_TREE_MODEL (disks_store)); gtk_tree_view_set_headers_visible (disks_list, TRUE); disks_col_convert = gtk_cell_renderer_toggle_new (); - gtk_tree_view_insert_column_with_attributes (disks_list, - -1, - _("Convert"), - disks_col_convert, - "active", DISKS_COL_CONVERT, - NULL); + gtk_tree_view_insert_column_with_attributes ( + disks_list, -1, _("Convert"), disks_col_convert, "active", + DISKS_COL_CONVERT, NULL); disks_col_device = gtk_cell_renderer_text_new (); - gtk_tree_view_insert_column_with_attributes (disks_list, - -1, - _("Device"), - disks_col_device, - "text", DISKS_COL_DEVICE, - NULL); + gtk_tree_view_insert_column_with_attributes (disks_list, -1, _("Device"), + disks_col_device, "text", + DISKS_COL_DEVICE, NULL); disks_col_size = gtk_cell_renderer_text_new (); - gtk_tree_view_insert_column_with_attributes (disks_list, - -1, - _("Size (GB)"), - disks_col_size, - "text", DISKS_COL_SIZE, - NULL); + gtk_tree_view_insert_column_with_attributes ( + disks_list, -1, _("Size (GB)"), disks_col_size, "text", + DISKS_COL_SIZE, NULL); disks_col_model = gtk_cell_renderer_text_new (); - gtk_tree_view_insert_column_with_attributes (disks_list, - -1, - _("Model"), - disks_col_model, - "text", DISKS_COL_MODEL, - NULL); + gtk_tree_view_insert_column_with_attributes (disks_list, -1, _("Model"), + disks_col_model, "text", + DISKS_COL_MODEL, NULL); - g_signal_connect (disks_col_convert, "toggled", - G_CALLBACK (toggled), disks_store); + g_signal_connect (disks_col_convert, "toggled", G_CALLBACK (toggled), + disks_store); } static void @@ -873,37 +881,29 @@ populate_removable (GtkTreeView *removable_list) GtkTreeIter iter; size_t i; - removable_store = gtk_list_store_new (NUM_REMOVABLE_COLS, - G_TYPE_BOOLEAN, G_TYPE_STRING); + removable_store = gtk_list_store_new (NUM_REMOVABLE_COLS, G_TYPE_BOOLEAN, + G_TYPE_STRING); if (all_removable != NULL) { for (i = 0; all_removable[i] != NULL; ++i) { gtk_list_store_append (removable_store, &iter); - gtk_list_store_set (removable_store, &iter, - REMOVABLE_COL_CONVERT, TRUE, - REMOVABLE_COL_DEVICE, all_removable[i], - -1); + gtk_list_store_set (removable_store, &iter, REMOVABLE_COL_CONVERT, + TRUE, REMOVABLE_COL_DEVICE, all_removable[i], -1); } } gtk_tree_view_set_model (removable_list, GTK_TREE_MODEL (removable_store)); gtk_tree_view_set_headers_visible (removable_list, TRUE); removable_col_convert = gtk_cell_renderer_toggle_new (); - gtk_tree_view_insert_column_with_attributes (removable_list, - -1, - _("Convert"), - removable_col_convert, - "active", REMOVABLE_COL_CONVERT, - NULL); + gtk_tree_view_insert_column_with_attributes ( + removable_list, -1, _("Convert"), removable_col_convert, "active", + REMOVABLE_COL_CONVERT, NULL); removable_col_device = gtk_cell_renderer_text_new (); - gtk_tree_view_insert_column_with_attributes (removable_list, - -1, - _("Device"), - removable_col_device, - "text", REMOVABLE_COL_DEVICE, - NULL); + gtk_tree_view_insert_column_with_attributes ( + removable_list, -1, _("Device"), removable_col_device, "text", + REMOVABLE_COL_DEVICE, NULL); - g_signal_connect (removable_col_convert, "toggled", - G_CALLBACK (toggled), removable_store); + g_signal_connect (removable_col_convert, "toggled", G_CALLBACK (toggled), + removable_store); } static void @@ -911,13 +911,12 @@ populate_interfaces (GtkTreeView *interfaces_list) { GtkListStore *interfaces_store; GtkCellRenderer *interfaces_col_convert, *interfaces_col_device, - *interfaces_col_network; + *interfaces_col_network; GtkTreeIter iter; size_t i; - interfaces_store = gtk_list_store_new (NUM_INTERFACES_COLS, - G_TYPE_BOOLEAN, G_TYPE_STRING, - G_TYPE_STRING); + interfaces_store = gtk_list_store_new ( + NUM_INTERFACES_COLS, G_TYPE_BOOLEAN, G_TYPE_STRING, G_TYPE_STRING); if (all_interfaces) { for (i = 0; all_interfaces[i] != NULL; ++i) { const char *if_name = all_interfaces[i]; @@ -931,10 +930,10 @@ populate_interfaces (GtkTreeView *interfaces_list) "%s\n" "%s" "</small>\n" - "<small><u><span foreground=\"blue\">Identify interface</span></u></small>", - if_name, - if_addr ? : _("Unknown"), - if_vendor ? : _("Unknown")) == -1) + "<small><u><span foreground=\"blue\">Identify " + "interface</span></u></small>", + if_name, if_addr ?: _("Unknown"), + if_vendor ?: _("Unknown")) == -1) error (EXIT_FAILURE, errno, "asprintf"); gtk_list_store_append (interfaces_store, &iter); @@ -945,40 +944,30 @@ populate_interfaces (GtkTreeView *interfaces_list) */ INTERFACES_COL_CONVERT, i == 0, INTERFACES_COL_DEVICE, device_descr, - INTERFACES_COL_NETWORK, "default", - -1); + INTERFACES_COL_NETWORK, "default", -1); } } gtk_tree_view_set_model (interfaces_list, GTK_TREE_MODEL (interfaces_store)); gtk_tree_view_set_headers_visible (interfaces_list, TRUE); interfaces_col_convert = gtk_cell_renderer_toggle_new (); - gtk_tree_view_insert_column_with_attributes (interfaces_list, - -1, - _("Convert"), - interfaces_col_convert, - "active", INTERFACES_COL_CONVERT, - NULL); + gtk_tree_view_insert_column_with_attributes ( + interfaces_list, -1, _("Convert"), interfaces_col_convert, "active", + INTERFACES_COL_CONVERT, NULL); gtk_cell_renderer_set_alignment (interfaces_col_convert, 0.5, 0.0); interfaces_col_device = gtk_cell_renderer_text_new (); - gtk_tree_view_insert_column_with_attributes (interfaces_list, - -1, - _("Device"), - interfaces_col_device, - "markup", INTERFACES_COL_DEVICE, - NULL); + gtk_tree_view_insert_column_with_attributes ( + interfaces_list, -1, _("Device"), interfaces_col_device, "markup", + INTERFACES_COL_DEVICE, NULL); gtk_cell_renderer_set_alignment (interfaces_col_device, 0.5, 0.0); interfaces_col_network = gtk_cell_renderer_text_new (); - gtk_tree_view_insert_column_with_attributes (interfaces_list, - -1, - _("Connect to virtual network"), - interfaces_col_network, - "text", INTERFACES_COL_NETWORK, - NULL); + gtk_tree_view_insert_column_with_attributes ( + interfaces_list, -1, _("Connect to virtual network"), + interfaces_col_network, "text", INTERFACES_COL_NETWORK, NULL); gtk_cell_renderer_set_alignment (interfaces_col_network, 0.5, 0.0); - g_signal_connect (interfaces_col_convert, "toggled", - G_CALLBACK (toggled), interfaces_store); + g_signal_connect (interfaces_col_convert, "toggled", G_CALLBACK (toggled), + interfaces_store); g_object_set (interfaces_col_network, "editable", TRUE, NULL); g_signal_connect (interfaces_col_network, "edited", @@ -996,7 +985,8 @@ toggled (GtkCellRendererToggle *cell, gchar *path_str, gpointer data) gtk_tree_model_get_iter (model, &iter, path); gtk_tree_model_get (model, &iter, 0 /* CONVERT */, &v, -1); v ^= 1; - gtk_list_store_set (GTK_LIST_STORE (model), &iter, 0 /* CONVERT */, v, -1); + gtk_list_store_set (GTK_LIST_STORE (model), &iter, 0 /* CONVERT */, v, + -1); gtk_tree_path_free (path); } @@ -1014,8 +1004,8 @@ network_edited_callback (GtkCellRendererToggle *cell, gchar *path_str, path = gtk_tree_path_new_from_string (path_str); gtk_tree_model_get_iter (model, &iter, path); - gtk_list_store_set (GTK_LIST_STORE (model), &iter, - INTERFACES_COL_NETWORK, new_text, -1); + gtk_list_store_set (GTK_LIST_STORE (model), &iter, INTERFACES_COL_NETWORK, + new_text, -1); gtk_tree_path_free (path); } @@ -1030,7 +1020,7 @@ static gboolean maybe_identify_click (GtkWidget *interfaces_list, GdkEventButton *event, gpointer data) { - gboolean ret = FALSE; /* Did we handle this event? */ + gboolean ret = FALSE; /* Did we handle this event? */ /* Single left click only. */ if (event->type == GDK_BUTTON_PRESS && event->button == 1) { @@ -1038,14 +1028,14 @@ maybe_identify_click (GtkWidget *interfaces_list, GdkEventButton *event, GtkTreeViewColumn *column; if (gtk_tree_view_get_path_at_pos (GTK_TREE_VIEW (interfaces_list), - event->x, event->y, - &path, &column, NULL, NULL)) { + event->x, event->y, &path, &column, + NULL, NULL)) { GList *cols; gint column_index; /* Get column index. */ cols = gtk_tree_view_get_columns (GTK_TREE_VIEW (interfaces_list)); - column_index = g_list_index (cols, (gpointer) column); + column_index = g_list_index (cols, (gpointer)column); g_list_free (cols); if (column_index == INTERFACES_COL_DEVICE) { @@ -1069,7 +1059,7 @@ maybe_identify_click (GtkWidget *interfaces_list, GdkEventButton *event, free (cmd); - ret = TRUE; /* We handled this event. */ + ret = TRUE; /* We handled this event. */ } gtk_tree_path_free (path); @@ -1156,9 +1146,8 @@ set_network_map_from_ui (struct config *config) model = gtk_tree_view_get_model (list); guestfs_int_free_string_list (config->network_map); - config->network_map = - malloc ((1 + guestfs_int_count_strings (all_interfaces)) - * sizeof (char *)); + config->network_map = malloc ( + (1 + guestfs_int_count_strings (all_interfaces)) * sizeof (char *)); if (config->network_map == NULL) error (EXIT_FAILURE, errno, "malloc"); i = j = 0; @@ -1168,8 +1157,8 @@ set_network_map_from_ui (struct config *config) gtk_tree_model_get (model, &iter, INTERFACES_COL_NETWORK, &s, -1); if (s) { assert (all_interfaces[i] != NULL); - if (asprintf (&config->network_map[j], "%s:%s", - all_interfaces[i], s) == -1) + if (asprintf (&config->network_map[j], "%s:%s", all_interfaces[i], + s) == -1) error (EXIT_FAILURE, errno, "asprintf"); ++j; } @@ -1201,7 +1190,7 @@ conversion_back_clicked (GtkWidget *w, gpointer data) #define MAX_SUPPORTED_MEMORY_MB (UINT64_C (4000 * 1024)) static char *concat_warning (char *warning, const char *fs, ...) - __attribute__((format (printf,2,3))); + __attribute__ ((format (printf, 2, 3))); static char * concat_warning (char *warning, const char *fs, ...) @@ -1215,11 +1204,11 @@ concat_warning (char *warning, const char *fs, ...) warning = strdup (""); if (warning == NULL) malloc_fail: - error (EXIT_FAILURE, errno, "malloc"); + error (EXIT_FAILURE, errno, "malloc"); } len = strlen (warning); - if (len > 0 && warning[len-1] != '\n' && fs[0] != '\n') { + if (len > 0 && warning[len - 1] != '\n' && fs[0] != '\n') { warning = concat_warning (warning, "\n"); len = strlen (warning); } @@ -1227,11 +1216,13 @@ concat_warning (char *warning, const char *fs, ...) va_start (args, fs); r = vasprintf (&msg, fs, args); va_end (args); - if (r == -1) goto malloc_fail; + if (r == -1) + goto malloc_fail; len2 = strlen (msg); warning = realloc (warning, len + len2 + 1); - if (warning == NULL) goto malloc_fail; + if (warning == NULL) + goto malloc_fail; memcpy (&warning[len], msg, len2 + 1); free (msg); @@ -1251,29 +1242,30 @@ vcpus_or_memory_check_callback (GtkWidget *w, gpointer data) if (vcpus > MAX_SUPPORTED_VCPUS) { gtk_widget_show (vcpus_warning); - warning = concat_warning (warning, - _("Number of virtual CPUs is larger than what is supported for KVM (max: %d)."), - MAX_SUPPORTED_VCPUS); - } - else + warning = + concat_warning (warning, _("Number of virtual CPUs is larger than " + "what is supported for KVM (max: %d)."), + MAX_SUPPORTED_VCPUS); + } else gtk_widget_hide (vcpus_warning); if (memory > MAX_SUPPORTED_MEMORY_MB * 1024 * 1024) { gtk_widget_show (memory_warning); warning = concat_warning (warning, - _("Memory size is larger than what is supported for KVM (max: %" PRIu64 ")."), + _("Memory size is larger than what is " + "supported for KVM (max: %" PRIu64 ")."), MAX_SUPPORTED_MEMORY_MB); - } - else + } else gtk_widget_hide (memory_warning); if (warning != NULL) { - warning = concat_warning (warning, - _("If you ignore this warning, conversion can still succeed, but the guest may not work or may not be supported on the target.")); + warning = concat_warning ( + warning, _("If you ignore this warning, conversion can still " + "succeed, but the guest may not work or may not be " + "supported on the target.")); gtk_label_set_text (GTK_LABEL (target_warning_label), warning); - } - else + } else gtk_label_set_text (GTK_LABEL (target_warning_label), ""); } @@ -1313,7 +1305,8 @@ static void add_v2v_output_2 (const char *msg, size_t len); static void *start_conversion_thread (void *data); static void cancel_conversion_clicked (GtkWidget *w, gpointer data); static void reboot_clicked (GtkWidget *w, gpointer data); -static gboolean close_running_dialog (GtkWidget *w, GdkEvent *event, gpointer data); +static gboolean close_running_dialog (GtkWidget *w, GdkEvent *event, + gpointer data); static void create_running_dialog (void) @@ -1340,21 +1333,21 @@ create_running_dialog (void) gtk_container_add (GTK_CONTAINER (v2v_output_sw), v2v_output); - gtk_box_pack_start (GTK_BOX (GTK_DIALOG (run_dlg)->vbox), - v2v_output_sw, TRUE, TRUE, 0); - gtk_box_pack_start (GTK_BOX (GTK_DIALOG (run_dlg)->vbox), - log_label, TRUE, TRUE, 0); - gtk_box_pack_start (GTK_BOX (GTK_DIALOG (run_dlg)->vbox), - status_label, TRUE, TRUE, 0); + gtk_box_pack_start (GTK_BOX (GTK_DIALOG (run_dlg)->vbox), v2v_output_sw, + TRUE, TRUE, 0); + gtk_box_pack_start (GTK_BOX (GTK_DIALOG (run_dlg)->vbox), log_label, TRUE, + TRUE, 0); + gtk_box_pack_start (GTK_BOX (GTK_DIALOG (run_dlg)->vbox), status_label, + TRUE, TRUE, 0); /* Buttons. */ - gtk_dialog_add_buttons (GTK_DIALOG (run_dlg), - _("Cancel conversion"), 1, - _("Reboot"), 2, - NULL); - cancel_button = gtk_dialog_get_widget_for_response (GTK_DIALOG (run_dlg), 1); + gtk_dialog_add_buttons (GTK_DIALOG (run_dlg), _("Cancel conversion"), 1, + _("Reboot"), 2, NULL); + cancel_button = + gtk_dialog_get_widget_for_response (GTK_DIALOG (run_dlg), 1); gtk_widget_set_sensitive (cancel_button, FALSE); - reboot_button = gtk_dialog_get_widget_for_response (GTK_DIALOG (run_dlg), 2); + reboot_button = + gtk_dialog_get_widget_for_response (GTK_DIALOG (run_dlg), 2); gtk_widget_set_sensitive (reboot_button, FALSE); /* Signals. */ @@ -1386,11 +1379,10 @@ set_log_dir (const char *remote_dir) { CLEANUP_FREE char *msg; - if (asprintf (&msg, - _("Log files and debug information " - "is saved to this directory " - "on the conversion server:\n" - "%s"), + if (asprintf (&msg, _("Log files and debug information " + "is saved to this directory " + "on the conversion server:\n" + "%s"), remote_dir ? remote_dir : "") == -1) error (EXIT_FAILURE, errno, "asprintf"); @@ -1421,14 +1413,14 @@ add_v2v_output (const char *msg) for (p0 = p = msg; *p; ++p) { linelen++; if (*p == '\n' || linelen > 1024) { - add_v2v_output_2 (p0, p-p0+1); + add_v2v_output_2 (p0, p - p0 + 1); if (*p != '\n') add_v2v_output_2 ("\n", 1); linelen = 0; - p0 = p+1; + p0 = p + 1; } } - add_v2v_output_2 (p0, p-p0); + add_v2v_output_2 (p0, p - p0); } static void @@ -1444,8 +1436,8 @@ add_v2v_output_2 (const char *msg, size_t len) /* Scroll to the end of the buffer. */ gtk_text_buffer_get_end_iter (buf, &iter); - gtk_text_view_scroll_to_iter (GTK_TEXT_VIEW (v2v_output), &iter, - 0, FALSE, 0., 1.); + gtk_text_view_scroll_to_iter (GTK_TEXT_VIEW (v2v_output), &iter, 0, FALSE, + 0., 1.); } /* User clicked the Start conversion button. */ @@ -1463,13 +1455,13 @@ start_conversion_clicked (GtkWidget *w, gpointer data) /* Unpack dialog fields and check them. */ free (config->guestname); - config->guestname = strdup (gtk_entry_get_text (GTK_ENTRY (guestname_entry))); + config->guestname = + strdup (gtk_entry_get_text (GTK_ENTRY (guestname_entry))); if (STREQ (config->guestname, "")) { dlg = gtk_message_dialog_new (GTK_WINDOW (conv_dlg), GTK_DIALOG_DESTROY_WITH_PARENT, - GTK_MESSAGE_ERROR, - GTK_BUTTONS_OK, + GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, _("The guest \"Name\" field is empty.")); gtk_window_set_title (GTK_WINDOW (dlg), _("Error")); gtk_dialog_run (GTK_DIALOG (dlg)); @@ -1482,19 +1474,19 @@ start_conversion_clicked (GtkWidget *w, gpointer data) config->memory = get_memory_from_conv_dlg (); config->verbose = - gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (debug_button)); + gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (debug_button)); /* Get the list of disks to be converted. */ set_disks_from_ui (config); /* The list of disks must be non-empty. */ - if (config->disks == NULL || guestfs_int_count_strings (config->disks) == 0) { - dlg = gtk_message_dialog_new (GTK_WINDOW (conv_dlg), - GTK_DIALOG_DESTROY_WITH_PARENT, - GTK_MESSAGE_ERROR, - GTK_BUTTONS_OK, - _("No disks were selected for conversion.\n" - "At least one fixed hard disk must be selected.\n")); + if (config->disks == NULL || + guestfs_int_count_strings (config->disks) == 0) { + dlg = gtk_message_dialog_new ( + GTK_WINDOW (conv_dlg), GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, + _("No disks were selected for conversion.\n" + "At least one fixed hard disk must be selected.\n")); gtk_window_set_title (GTK_WINDOW (dlg), _("Error")); gtk_dialog_run (GTK_DIALOG (dlg)); gtk_widget_destroy (dlg); @@ -1509,7 +1501,7 @@ start_conversion_clicked (GtkWidget *w, gpointer data) /* Output selection. */ free (config->output); config->output = - gtk_combo_box_text_get_active_text (GTK_COMBO_BOX_TEXT (o_combo)); + gtk_combo_box_text_get_active_text (GTK_COMBO_BOX_TEXT (o_combo)); config->output_allocation = OUTPUT_ALLOCATION_NONE; str2 = gtk_combo_box_text_get_active_text (GTK_COMBO_BOX_TEXT (oa_combo)); @@ -1577,20 +1569,18 @@ start_conversion_thread (void *data) dlg = gtk_message_dialog_new (GTK_WINDOW (run_dlg), GTK_DIALOG_DESTROY_WITH_PARENT, - GTK_MESSAGE_ERROR, - GTK_BUTTONS_OK, + GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, _("Conversion failed: %s"), err); gtk_window_set_title (GTK_WINDOW (dlg), _("Conversion failed")); gtk_dialog_run (GTK_DIALOG (dlg)); gtk_widget_destroy (dlg); - } - else { + } else { dlg = gtk_message_dialog_new (GTK_WINDOW (run_dlg), GTK_DIALOG_DESTROY_WITH_PARENT, - GTK_MESSAGE_INFO, - GTK_BUTTONS_OK, + GTK_MESSAGE_INFO, GTK_BUTTONS_OK, _("The conversion was successful.")); - gtk_window_set_title (GTK_WINDOW (dlg), _("Conversion was successful")); + gtk_window_set_title (GTK_WINDOW (dlg), + _("Conversion was successful")); gtk_dialog_run (GTK_DIALOG (dlg)); gtk_widget_destroy (dlg); } @@ -1643,8 +1633,7 @@ close_running_dialog (GtkWidget *w, GdkEvent *event, gpointer data) if (conversion_is_running ()) { cancel_conversion (); return TRUE; - } - else + } else /* Conversion is not running, so this will delete the dialog. */ return FALSE; } diff --git a/p2v/kernel-cmdline.c b/p2v/kernel-cmdline.c index ee4c0e9..5d850e7 100644 --- a/p2v/kernel-cmdline.c +++ b/p2v/kernel-cmdline.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ /* Read /proc/cmdline. @@ -46,15 +47,15 @@ add_null (char ***argv, size_t *lenp) *argv = realloc (*argv, *lenp * sizeof (char *)); if (*argv == NULL) error (EXIT_FAILURE, errno, "realloc"); - (*argv)[(*lenp)-1] = NULL; + (*argv)[(*lenp) - 1] = NULL; } static void add_string (char ***argv, size_t *lenp, const char *str, size_t len) { add_null (argv, lenp); - (*argv)[(*lenp)-1] = strndup (str, len); - if ((*argv)[(*lenp)-1] == NULL) + (*argv)[(*lenp) - 1] = strndup (str, len); + if ((*argv)[(*lenp) - 1] == NULL) error (EXIT_FAILURE, errno, "strndup"); } @@ -64,59 +65,51 @@ parse_cmdline_string (const char *cmdline) char **ret = NULL; size_t len = 0; const char *p, *key = NULL, *value = NULL; - enum { - KEY_START = 0, - KEY, - VALUE_START, - VALUE, - VALUE_QUOTED - } state = 0; + enum { KEY_START = 0, KEY, VALUE_START, VALUE, VALUE_QUOTED } state = 0; for (p = cmdline; *p; p++) { switch (state) { - case KEY_START: /* looking for the start of a key */ - if (*p == ' ') continue; + case KEY_START: /* looking for the start of a key */ + if (*p == ' ') + continue; key = p; state = KEY; break; - case KEY: /* reading key */ + case KEY: /* reading key */ if (*p == ' ') { - add_string (&ret, &len, key, p-key); + add_string (&ret, &len, key, p - key); add_string (&ret, &len, "", 0); state = KEY_START; - } - else if (*p == '=') { - add_string (&ret, &len, key, p-key); + } else if (*p == '=') { + add_string (&ret, &len, key, p - key); state = VALUE_START; } break; - case VALUE_START: /* looking for the start of a value */ + case VALUE_START: /* looking for the start of a value */ if (*p == ' ') { add_string (&ret, &len, "", 0); state = KEY_START; - } - else if (*p == '"') { - value = p+1; + } else if (*p == '"') { + value = p + 1; state = VALUE_QUOTED; - } - else { + } else { value = p; state = VALUE; } break; - case VALUE: /* reading unquoted value */ + case VALUE: /* reading unquoted value */ if (*p == ' ') { - add_string (&ret, &len, value, p-value); + add_string (&ret, &len, value, p - value); state = KEY_START; } break; - case VALUE_QUOTED: /* reading quoted value */ + case VALUE_QUOTED: /* reading quoted value */ if (*p == '"') { - add_string (&ret, &len, value, p-value); + add_string (&ret, &len, value, p - value); state = KEY_START; } break; @@ -124,21 +117,24 @@ parse_cmdline_string (const char *cmdline) } switch (state) { - case KEY_START: break; - case KEY: /* key followed by end of string */ - add_string (&ret, &len, key, p-key); + case KEY_START: + break; + case KEY: /* key followed by end of string */ + add_string (&ret, &len, key, p - key); add_string (&ret, &len, "", 0); break; - case VALUE_START: /* key= followed by end of string */ + case VALUE_START: /* key= followed by end of string */ add_string (&ret, &len, "", 0); break; - case VALUE: /* key=value followed by end of string */ - add_string (&ret, &len, value, p-value); + case VALUE: /* key=value followed by end of string */ + add_string (&ret, &len, value, p - value); break; - case VALUE_QUOTED: /* unterminated key="value" */ - fprintf (stderr, "%s: warning: unterminated quoted string on kernel command line\n", - guestfs_int_program_name); - add_string (&ret, &len, value, p-value); + case VALUE_QUOTED: /* unterminated key="value" */ + fprintf ( + stderr, + "%s: warning: unterminated quoted string on kernel command line\n", + guestfs_int_program_name); + add_string (&ret, &len, value, p - value); } add_null (&ret, &len); @@ -169,8 +165,8 @@ parse_proc_cmdline (void) */ len = strlen (cmdline); - if (len >= 1 && cmdline[len-1] == '\n') - cmdline[len-1] = '\0'; + if (len >= 1 && cmdline[len - 1] == '\n') + cmdline[len - 1] = '\0'; return parse_cmdline_string (cmdline); } @@ -182,7 +178,7 @@ get_cmdline_key (char **argv, const char *key) for (i = 0; argv[i] != NULL; i += 2) { if (STREQ (argv[i], key)) - return argv[i+1]; + return argv[i + 1]; } /* Not found. */ diff --git a/p2v/kernel.c b/p2v/kernel.c index fb52785..cc8576e 100644 --- a/p2v/kernel.c +++ b/p2v/kernel.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ /* Kernel-driven configuration, non-interactive. */ @@ -36,10 +37,12 @@ #include "p2v.h" static void notify_ui_callback (int type, const char *data); -static void run_command (int verbose, const char *stage, const char *command); +static void run_command (int verbose, const char *stage, + const char *command); void -kernel_configuration (struct config *config, char **cmdline, int cmdline_source) +kernel_configuration (struct config *config, char **cmdline, + int cmdline_source) { const char *p; @@ -118,15 +121,15 @@ kernel_configuration (struct config *config, char **cmdline, int cmdline_source) error (EXIT_FAILURE, 0, "cannot parse p2v.memory from kernel command line"); config->memory *= 1024; - if (mem_code == 'M' || mem_code == 'm' - || mem_code == 'G' || mem_code == 'g') + if (mem_code == 'M' || mem_code == 'm' || mem_code == 'G' || + mem_code == 'g') config->memory *= 1024; if (mem_code == 'G' || mem_code == 'g') config->memory *= 1024; - if (mem_code != 'M' && mem_code != 'm' - && mem_code != 'G' && mem_code != 'g') - error (EXIT_FAILURE, 0, - "p2v.memory on kernel command line must be followed by 'G' or 'M'"); + if (mem_code != 'M' && mem_code != 'm' && mem_code != 'G' && + mem_code != 'g') + error (EXIT_FAILURE, 0, "p2v.memory on kernel command line must be " + "followed by 'G' or 'M'"); } p = get_cmdline_key (cmdline, "p2v.disks"); @@ -200,7 +203,8 @@ kernel_configuration (struct config *config, char **cmdline, int cmdline_source) config->output_storage = strdup (p); } - /* Undocumented command line tool used for testing command line parsing. */ + /* Undocumented command line tool used for testing command line parsing. + */ p = get_cmdline_key (cmdline, "p2v.dump_config_and_exit"); if (p) { print_config (config, stdout); @@ -208,10 +212,12 @@ kernel_configuration (struct config *config, char **cmdline, int cmdline_source) } /* Some disks must have been specified for conversion. */ - if (config->disks == NULL || guestfs_int_count_strings (config->disks) == 0) + if (config->disks == NULL || + guestfs_int_count_strings (config->disks) == 0) error (EXIT_FAILURE, 0, "no non-removable disks were discovered on this machine.\n" - "virt-p2v looked in /sys/block and in p2v.disks on the kernel command line.\n" + "virt-p2v looked in /sys/block and in p2v.disks on the kernel " + "command line.\n" "This is a fatal error and virt-p2v cannot continue."); /* Perform the conversion in text mode. */ @@ -242,7 +248,8 @@ notify_ui_callback (int type, const char *data) { switch (type) { case NOTIFY_LOG_DIR: - printf ("%s: remote log directory location: %s\n", guestfs_int_program_name, data); + printf ("%s: remote log directory location: %s\n", + guestfs_int_program_name, data); break; case NOTIFY_REMOTE_MESSAGE: @@ -276,6 +283,6 @@ run_command (int verbose, const char *stage, const char *command) if (r == -1) error (EXIT_FAILURE, errno, "system: %s", command); if ((WIFEXITED (r) && WEXITSTATUS (r) != 0) || !WIFEXITED (r)) - error (EXIT_FAILURE, 0, - "%s: unexpected failure of external command", stage); + error (EXIT_FAILURE, 0, "%s: unexpected failure of external command", + stage); } diff --git a/p2v/main.c b/p2v/main.c index abec9bf..81d5197 100644 --- a/p2v/main.c +++ b/p2v/main.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -33,7 +34,8 @@ #include <sys/types.h> #include <sys/stat.h> -#pragma GCC diagnostic ignored "-Wstrict-prototypes" /* error in <gtk.h> */ +#pragma GCC diagnostic ignored "-Wstrict-prototypes" /* error in <gtk.h> \ + */ #include <gtk/gtk.h> #include "p2v.h" @@ -49,35 +51,33 @@ static int cpuinfo_flags (void); enum { HELP_OPTION = CHAR_MAX + 1 }; static const char *options = "Vv"; -static const struct option long_options[] = { - { "help", 0, 0, HELP_OPTION }, - { "cmdline", 1, 0, 0 }, - { "long-options", 0, 0, 0 }, - { "short-options", 0, 0, 0 }, - { "verbose", 0, 0, 'v' }, - { "version", 0, 0, 'V' }, - { 0, 0, 0, 0 } -}; +static const struct option long_options[] = { { "help", 0, 0, HELP_OPTION }, + { "cmdline", 1, 0, 0 }, + { "long-options", 0, 0, 0 }, + { "short-options", 0, 0, 0 }, + { "verbose", 0, 0, 'v' }, + { "version", 0, 0, 'V' }, + { 0, 0, 0, 0 } }; -static void __attribute__((noreturn)) -usage (int status) +static void __attribute__ ((noreturn)) usage (int status) { if (status != EXIT_SUCCESS) fprintf (stderr, _("Try `%s --help' for more information.\n"), guestfs_int_program_name); else { - printf (_("%s: Convert a physical machine to use KVM\n" - "Copyright (C) 2009-2016 Red Hat Inc.\n" - "Usage:\n" - " %s [--options]\n" - "Options:\n" - " --help Display brief help\n" - " --cmdline=CMDLINE Used to debug command line parsing\n" - " -v|--verbose Verbose messages\n" - " -V|--version Display version and exit\n" - "For more information, see the manpage %s(1).\n"), - guestfs_int_program_name, guestfs_int_program_name, - guestfs_int_program_name); + printf ( + _("%s: Convert a physical machine to use KVM\n" + "Copyright (C) 2009-2016 Red Hat Inc.\n" + "Usage:\n" + " %s [--options]\n" + "Options:\n" + " --help Display brief help\n" + " --cmdline=CMDLINE Used to debug command line parsing\n" + " -v|--verbose Verbose messages\n" + " -V|--version Display version and exit\n" + "For more information, see the manpage %s(1).\n"), + guestfs_int_program_name, guestfs_int_program_name, + guestfs_int_program_name); } exit (status); } @@ -98,7 +98,8 @@ static void display_long_options (const struct option *long_options) { while (long_options->name) { - if (STRNEQ (long_options->name, "long-options") && STRNEQ (long_options->name, "short-options")) + if (STRNEQ (long_options->name, "long-options") && + STRNEQ (long_options->name, "short-options")) printf ("--%s\n", long_options->name); long_options++; } @@ -119,7 +120,7 @@ main (int argc, char *argv[]) bindtextdomain (PACKAGE, LOCALEBASEDIR); textdomain (PACKAGE); -#if ! GLIB_CHECK_VERSION(2,32,0) +#if !GLIB_CHECK_VERSION(2, 32, 0) /* In glib2 < 2.32 you had to call g_thread_init(). In later glib2 * that is not required and should not be called. */ @@ -132,23 +133,22 @@ main (int argc, char *argv[]) for (;;) { c = getopt_long (argc, argv, options, long_options, &option_index); - if (c == -1) break; + if (c == -1) + break; switch (c) { - case 0: /* options which are long only */ + case 0: /* options which are long only */ if (STREQ (long_options[option_index].name, "long-options")) { display_long_options (long_options); - } - else if (STREQ (long_options[option_index].name, "short-options")) { + } else if (STREQ (long_options[option_index].name, "short-options")) { display_short_options (options); - } - else if (STREQ (long_options[option_index].name, "cmdline")) { + } else if (STREQ (long_options[option_index].name, "cmdline")) { cmdline = parse_cmdline_string (optarg); cmdline_source = CMDLINE_SOURCE_COMMAND_LINE; - } - else { + } else { fprintf (stderr, _("%s: unknown long option: %s (%d)\n"), - guestfs_int_program_name, long_options[option_index].name, option_index); + guestfs_int_program_name, long_options[option_index].name, + option_index); exit (EXIT_FAILURE); } break; @@ -158,9 +158,8 @@ main (int argc, char *argv[]) break; case 'V': - printf ("%s %s%s\n", - guestfs_int_program_name, - PACKAGE_VERSION, PACKAGE_VERSION_EXTRA); + printf ("%s %s%s\n", guestfs_int_program_name, PACKAGE_VERSION, + PACKAGE_VERSION_EXTRA); exit (EXIT_SUCCESS); case HELP_OPTION: @@ -201,7 +200,8 @@ main (int argc, char *argv[]) if (!gui_possible) { fprintf (stderr, _("%s: gtk_init_check returned false, indicating that\n" - "a GUI is not possible on this host. Check X11, $DISPLAY etc.\n"), + "a GUI is not possible on this host. Check X11, " + "$DISPLAY etc.\n"), guestfs_int_program_name); exit (EXIT_FAILURE); } @@ -246,8 +246,7 @@ set_config_defaults (struct config *config) if (i == -1) { perror ("sysconf: _SC_NPROCESSORS_ONLN"); config->vcpus = 1; - } - else if (i == 0) + } else if (i == 0) config->vcpus = 1; else config->vcpus = i; @@ -256,16 +255,14 @@ set_config_defaults (struct config *config) if (i == -1) { perror ("sysconf: _SC_PHYS_PAGES"); config->memory = 1024 * 1024 * 1024; - } - else + } else config->memory = i; - i = sysconf (_SC_PAGESIZE); + i = sysconf (_SC_PAGESIZE); if (i == -1) { perror ("sysconf: _SC_PAGESIZE"); config->memory *= 4096; - } - else + } else config->memory *= i; /* Round up the default memory to a power of 2, since the kernel @@ -307,8 +304,8 @@ set_config_defaults (struct config *config) static int compare (const void *vp1, const void *vp2) { - char * const *p1 = (char * const *) vp1; - char * const *p2 = (char * const *) vp2; + char *const *p1 = (char *const *)vp1; + char *const *p2 = (char *const *)vp2; return strcmp (*p1, *p2); } @@ -324,8 +321,8 @@ partition_parent (dev_t part_dev) unsigned parent_major, parent_minor; if (asprintf (&path, "/sys/dev/block/%ju:%ju/../dev", - (uintmax_t) major (part_dev), - (uintmax_t) minor (part_dev)) == -1) + (uintmax_t)major (part_dev), + (uintmax_t)minor (part_dev)) == -1) error (EXIT_FAILURE, errno, "asprintf"); fp = fopen (path, "r"); @@ -398,12 +395,11 @@ find_all_disks (void) for (;;) { errno = 0; d = readdir (dir); - if (!d) break; + if (!d) + break; - if (STRPREFIX (d->d_name, "cciss!") || - STRPREFIX (d->d_name, "hd") || - STRPREFIX (d->d_name, "sd") || - STRPREFIX (d->d_name, "ubd") || + if (STRPREFIX (d->d_name, "cciss!") || STRPREFIX (d->d_name, "hd") || + STRPREFIX (d->d_name, "sd") || STRPREFIX (d->d_name, "ubd") || STRPREFIX (d->d_name, "vd")) { char *p; @@ -416,21 +412,21 @@ find_all_disks (void) if (!all_disks) error (EXIT_FAILURE, errno, "realloc"); - all_disks[nr_disks-1] = strdup (d->d_name); + all_disks[nr_disks - 1] = strdup (d->d_name); /* cciss device /dev/cciss/c0d0 will be /sys/block/cciss!c0d0 */ - p = strchr (all_disks[nr_disks-1], '!'); - if (p) *p = '/'; + p = strchr (all_disks[nr_disks - 1], '!'); + if (p) + *p = '/'; all_disks[nr_disks] = NULL; - } - else if (STRPREFIX (d->d_name, "sr")) { + } else if (STRPREFIX (d->d_name, "sr")) { nr_removable++; - all_removable = realloc (all_removable, - sizeof (char *) * (nr_removable + 1)); + all_removable = + realloc (all_removable, sizeof (char *) * (nr_removable + 1)); if (!all_removable) error (EXIT_FAILURE, errno, "realloc"); - all_removable[nr_removable-1] = strdup (d->d_name); + all_removable[nr_removable - 1] = strdup (d->d_name); all_removable[nr_removable] = NULL; } } @@ -466,23 +462,22 @@ find_all_interfaces (void) for (;;) { errno = 0; d = readdir (dir); - if (!d) break; + if (!d) + break; /* For systemd predictable names, see: * http://cgit.freedesktop.org/systemd/systemd/tree/src/udev/udev-builtin-net_i... * biosdevname is also a possibility here. * Ignore PPP, SLIP, WWAN, bridges, etc. */ - if (STRPREFIX (d->d_name, "em") || - STRPREFIX (d->d_name, "en") || - STRPREFIX (d->d_name, "eth") || - STRPREFIX (d->d_name, "wl")) { + if (STRPREFIX (d->d_name, "em") || STRPREFIX (d->d_name, "en") || + STRPREFIX (d->d_name, "eth") || STRPREFIX (d->d_name, "wl")) { nr_interfaces++; all_interfaces = - realloc (all_interfaces, sizeof (char *) * (nr_interfaces + 1)); + realloc (all_interfaces, sizeof (char *) * (nr_interfaces + 1)); if (!all_interfaces) error (EXIT_FAILURE, errno, "realloc"); - all_interfaces[nr_interfaces-1] = strdup (d->d_name); + all_interfaces[nr_interfaces - 1] = strdup (d->d_name); all_interfaces[nr_interfaces] = NULL; } } @@ -513,11 +508,11 @@ cpuinfo_flags (void) /* Get the flags, one per line. */ cmd = "< /proc/cpuinfo " #if defined(__arm__) - "grep ^Features" + "grep ^Features" #else - "grep ^flags" + "grep ^flags" #endif - " | awk '{ for (i = 3; i <= NF; ++i) { print $i }; exit }'"; + " | awk '{ for (i = 3; i <= NF; ++i) { print $i }; exit }'"; fp = popen (cmd, "re"); if (fp == NULL) { @@ -526,8 +521,8 @@ cpuinfo_flags (void) } while (errno = 0, (len = getline (&flag, &buflen, fp)) != -1) { - if (len > 0 && flag[len-1] == '\n') - flag[len-1] = '\0'; + if (len > 0 && flag[len - 1] == '\n') + flag[len - 1] = '\0'; if (STREQ (flag, "acpi")) ret |= FLAG_ACPI; diff --git a/p2v/miniexpect.c b/p2v/miniexpect.c index e1a184c..4c58a95 100644 --- a/p2v/miniexpect.c +++ b/p2v/miniexpect.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include <config.h> @@ -106,19 +107,19 @@ mexp_spawnl (const char *file, const char *arg, ...) argv = malloc (sizeof (char *)); if (argv == NULL) return NULL; - argv[0] = (char *) arg; + argv[0] = (char *)arg; va_start (args, arg); for (i = 1; arg != NULL; ++i) { arg = va_arg (args, const char *); - new_argv = realloc (argv, sizeof (char *) * (i+1)); + new_argv = realloc (argv, sizeof (char *) * (i + 1)); if (new_argv == NULL) { free (argv); va_end (args); return NULL; } argv = new_argv; - argv[i] = (char *) arg; + argv[i] = (char *)arg; } h = mexp_spawnv (file, argv); @@ -136,7 +137,7 @@ mexp_spawnv (const char *file, char **argv) char slave[1024]; pid_t pid = 0; - fd = posix_openpt (O_RDWR|O_NOCTTY); + fd = posix_openpt (O_RDWR | O_NOCTTY); if (fd == -1) goto error; @@ -159,7 +160,7 @@ mexp_spawnv (const char *file, char **argv) if (pid == -1) goto error; - if (pid == 0) { /* Child. */ + if (pid == 0) { /* Child. */ struct termios terminal_settings; int slave_fd; @@ -200,7 +201,7 @@ mexp_spawnv (const char *file, char **argv) h->pid = pid; return h; - error: +error: err = errno; if (fd >= 0) close (fd); @@ -213,7 +214,8 @@ mexp_spawnv (const char *file, char **argv) } enum mexp_status -mexp_expect (mexp_h *h, const mexp_regexp *regexps, int *ovector, int ovecsize) +mexp_expect (mexp_h *h, const mexp_regexp *regexps, int *ovector, + int ovecsize) { time_t start_t, now_t; int timeout; @@ -230,7 +232,8 @@ mexp_expect (mexp_h *h, const mexp_regexp *regexps, int *ovector, int ovecsize) /* See the comment in the manual about h->next_match. We have * some data remaining in the buffer, so begin by matching that. */ - memmove (&h->buffer[0], &h->buffer[h->next_match], h->len - h->next_match); + memmove (&h->buffer[0], &h->buffer[h->next_match], + h->len - h->next_match); h->len -= h->next_match; h->buffer[h->len] = '\0'; h->next_match = -1; @@ -247,8 +250,7 @@ mexp_expect (mexp_h *h, const mexp_regexp *regexps, int *ovector, int ovecsize) timeout = h->timeout - ((now_t - start_t) * 1000); if (timeout < 0) timeout = 0; - } - else + } else timeout = 0; pfds[0].fd = h->fd; @@ -311,10 +313,8 @@ mexp_expect (mexp_h *h, const mexp_regexp *regexps, int *ovector, int ovecsize) for (i = 0; regexps[i].r > 0; ++i) { int options = regexps[i].options | PCRE_PARTIAL_SOFT; - r = pcre_exec (regexps[i].re, regexps[i].extra, - h->buffer, (int)h->len, 0, - options, - ovector, ovecsize); + r = pcre_exec (regexps[i].re, regexps[i].extra, h->buffer, + (int)h->len, 0, options, ovector, ovecsize); h->pcre_error = r; if (r >= 0) { diff --git a/p2v/miniexpect.h b/p2v/miniexpect.h index 192d180..7d559a8 100644 --- a/p2v/miniexpect.h +++ b/p2v/miniexpect.h @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ /* ** NOTE ** All API documentation is in the manual page. @@ -34,7 +35,8 @@ #include <pcre.h> /* This handle is created per subprocess that is spawned. */ -struct mexp_h { +struct mexp_h +{ int fd; pid_t pid; int timeout; @@ -71,7 +73,8 @@ extern mexp_h *mexp_spawnl (const char *file, const char *arg, ...); extern int mexp_close (mexp_h *h); /* Expect. */ -struct mexp_regexp { +struct mexp_regexp +{ int r; const pcre *re; const pcre_extra *extra; @@ -80,16 +83,16 @@ struct mexp_regexp { typedef struct mexp_regexp mexp_regexp; enum mexp_status { - MEXP_EOF = 0, - MEXP_ERROR = -1, + MEXP_EOF = 0, + MEXP_ERROR = -1, MEXP_PCRE_ERROR = -2, - MEXP_TIMEOUT = -3, + MEXP_TIMEOUT = -3, }; -extern int mexp_expect (mexp_h *h, const mexp_regexp *regexps, - int *ovector, int ovecsize); +extern int mexp_expect (mexp_h *h, const mexp_regexp *regexps, int *ovector, + int ovecsize); extern int mexp_printf (mexp_h *h, const char *fs, ...) - __attribute__((format(printf,2,3))); + __attribute__ ((format (printf, 2, 3))); #endif /* MINIEXPECT_H_ */ diff --git a/p2v/p2v.h b/p2v/p2v.h index 0123da8..61cc194 100644 --- a/p2v/p2v.h +++ b/p2v/p2v.h @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #ifndef P2V_H @@ -53,7 +54,8 @@ extern char **all_removable; extern char **all_interfaces; /* config.c */ -struct config { +struct config +{ int verbose; char *server; int port; @@ -80,10 +82,10 @@ struct config { #define FLAG_ACPI 1 #define FLAG_APIC 2 -#define FLAG_PAE 4 +#define FLAG_PAE 4 -#define OUTPUT_ALLOCATION_NONE 0 -#define OUTPUT_ALLOCATION_SPARSE 1 +#define OUTPUT_ALLOCATION_NONE 0 +#define OUTPUT_ALLOCATION_SPARSE 1 #define OUTPUT_ALLOCATION_PREALLOCATED 2 extern struct config *new_config (void); @@ -100,24 +102,31 @@ extern const char *get_cmdline_key (char **cmdline, const char *key); #define CMDLINE_SOURCE_PROC_CMDLINE 2 /* /proc/cmdline */ /* kernel.c */ -extern void kernel_configuration (struct config *, char **cmdline, int cmdline_source); +extern void kernel_configuration (struct config *, char **cmdline, + int cmdline_source); /* gui.c */ extern void gui_application (struct config *); /* conversion.c */ -extern int start_conversion (struct config *, void (*notify_ui) (int type, const char *data)); -#define NOTIFY_LOG_DIR 1 /* location of remote log directory */ -#define NOTIFY_REMOTE_MESSAGE 2 /* log message from remote virt-v2v */ -#define NOTIFY_STATUS 3 /* stage in conversion process */ +extern int start_conversion (struct config *, + void (*notify_ui) (int type, + const char *data)); +#define NOTIFY_LOG_DIR 1 /* location of remote log directory */ +#define NOTIFY_REMOTE_MESSAGE 2 /* log message from remote virt-v2v */ +#define NOTIFY_STATUS 3 /* stage in conversion process */ extern const char *get_conversion_error (void); extern void cancel_conversion (void); extern int conversion_is_running (void); /* ssh.c */ extern int test_connection (struct config *); -extern mexp_h *open_data_connection (struct config *, int *local_port, int *remote_port); -extern mexp_h *start_remote_connection (struct config *, const char *remote_dir, const char *libvirt_xml, const char *dmesg); +extern mexp_h *open_data_connection (struct config *, int *local_port, + int *remote_port); +extern mexp_h *start_remote_connection (struct config *, + const char *remote_dir, + const char *libvirt_xml, + const char *dmesg); extern const char *get_ssh_error (void); /* utils.c */ @@ -126,7 +135,8 @@ extern char *get_if_vendor (const char *if_name, int truncate); extern void wait_network_online (const struct config *); /* whole-file.c */ -extern int read_whole_file (const char *filename, char **data_r, size_t *size_r); +extern int read_whole_file (const char *filename, char **data_r, + size_t *size_r); /* virt-v2v version and features (read from remote). */ extern int v2v_major; diff --git a/p2v/ssh.c b/p2v/ssh.c index 7158e70..f3aa5c6 100644 --- a/p2v/ssh.c +++ b/p2v/ssh.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ /* This file handles the ssh connections to the conversion server. @@ -66,7 +67,7 @@ char **output_drivers = NULL; static char *ssh_error; static void set_ssh_error (const char *fs, ...) - __attribute__((format(printf,1,2))); + __attribute__ ((format (printf, 1, 2))); static void set_ssh_error (const char *fs, ...) @@ -93,8 +94,8 @@ get_ssh_error (void) return ssh_error; } -static void compile_regexps (void) __attribute__((constructor)); -static void free_regexps (void) __attribute__((destructor)); +static void compile_regexps (void) __attribute__ ((constructor)); +static void free_regexps (void) __attribute__ ((destructor)); static pcre *password_re; static pcre *prompt_re; @@ -111,30 +112,30 @@ compile_regexps (void) int offset; int p; - /* These regexps are always used for partial matching. In pcre < 8 - * there were limitations on the regexps possible for partial - * matching, so fail if that is true here. In pcre >= 8, all - * regexps can be used in a partial match. - */ -#define CHECK_PARTIAL_OK(pattern, re) \ - do { \ - pcre_fullinfo ((re), NULL, PCRE_INFO_OKPARTIAL, &p); \ - if (p != 1) { \ - fprintf (stderr, "%s: %s:%d: internal error: pattern '%s' cannot be used for partial matching\n", \ - guestfs_int_program_name, \ - __FILE__, __LINE__, (pattern)); \ - abort (); \ - } \ +/* These regexps are always used for partial matching. In pcre < 8 + * there were limitations on the regexps possible for partial + * matching, so fail if that is true here. In pcre >= 8, all + * regexps can be used in a partial match. + */ +#define CHECK_PARTIAL_OK(pattern, re) \ + do { \ + pcre_fullinfo ((re), NULL, PCRE_INFO_OKPARTIAL, &p); \ + if (p != 1) { \ + fprintf (stderr, "%s: %s:%d: internal error: pattern '%s' cannot " \ + "be used for partial matching\n", \ + guestfs_int_program_name, __FILE__, __LINE__, (pattern)); \ + abort (); \ + } \ } while (0) -#define COMPILE(re,pattern,options) \ - do { \ - re = pcre_compile ((pattern), (options), &err, &offset, NULL); \ - if (re == NULL) { \ - ignore_value (write (2, err, strlen (err))); \ - abort (); \ - } \ - CHECK_PARTIAL_OK ((pattern), re); \ +#define COMPILE(re, pattern, options) \ + do { \ + re = pcre_compile ((pattern), (options), &err, &offset, NULL); \ + if (re == NULL) { \ + ignore_value (write (2, err, strlen (err))); \ + abort (); \ + } \ + CHECK_PARTIAL_OK ((pattern), re); \ } while (0) COMPILE (password_re, "assword", 0); @@ -142,10 +143,10 @@ compile_regexps (void) * start_ssh function below. */ COMPILE (prompt_re, - "###((?:[0123456789abcdefghijklmnopqrstuvwxyz]){8})### ", 0); + "###((?:[0123456789abcdefghijklmnopqrstuvwxyz]){8})### ", 0); COMPILE (version_re, "virt-v2v ([1-9](?:\\d)*)\\.([1-9](?:\\d)*)\\.(0|[1-9](?:\\d)*)", - 0); + 0); COMPILE (feature_libguestfs_rewrite_re, "libguestfs-rewrite", 0); COMPILE (feature_input_re, "input:((?:\\w)*)", 0); COMPILE (feature_output_re, "output:((?:\\w)*)", 0); @@ -185,21 +186,34 @@ curl_download (const char *url, const char *local_file) len = strlen (url); for (i = 0; i < len; ++i) { switch (url[i]) { - case '\\': fprintf (fp, "\\\\"); break; - case '"': fprintf (fp, "\\\""); break; - case '\t': fprintf (fp, "\\t"); break; - case '\n': fprintf (fp, "\\n"); break; - case '\r': fprintf (fp, "\\r"); break; - case '\v': fprintf (fp, "\\v"); break; - default: fputc (url[i], fp); + case '\\': + fprintf (fp, "\\\\"); + break; + case '"': + fprintf (fp, "\\\""); + break; + case '\t': + fprintf (fp, "\\t"); + break; + case '\n': + fprintf (fp, "\\n"); + break; + case '\r': + fprintf (fp, "\\r"); + break; + case '\v': + fprintf (fp, "\\v"); + break; + default: + fputc (url[i], fp); } } fprintf (fp, "\"\n"); fclose (fp); /* Run curl to download the URL to a file. */ - if (asprintf (&curl_cmd, "curl -f -o %s -K %s", - local_file, curl_config_file) == -1) + if (asprintf (&curl_cmd, "curl -f -o %s -K %s", local_file, + curl_config_file) == -1) error (EXIT_FAILURE, errno, "asprintf"); r = system (curl_cmd); @@ -214,8 +228,7 @@ curl_download (const char *url, const char *local_file) */ set_ssh_error ("%s: curl error %d", url, WEXITSTATUS (r)); return -1; - } - else if (!WIFEXITED (r)) { + } else if (!WIFEXITED (r)) { set_ssh_error ("curl subprocess got a signal (%d)", r); return -1; } @@ -230,8 +243,7 @@ cache_ssh_identity (struct config *config) int fd; /* If it doesn't need downloading, return. */ - if (config->identity_url == NULL || - !config->identity_file_needs_update) + if (config->identity_url == NULL || !config->identity_file_needs_update) return 0; /* Generate a random filename. */ @@ -291,19 +303,18 @@ start_ssh (struct config *config, char **extra_args, int wait_prompt) j = 0; args[j++] = "ssh"; - args[j++] = "-p"; /* Port. */ + args[j++] = "-p"; /* Port. */ snprintf (port_str, sizeof port_str, "%d", config->port); args[j++] = port_str; - args[j++] = "-l"; /* Username. */ + args[j++] = "-l"; /* Username. */ args[j++] = config->username ? config->username : "root"; - args[j++] = "-o"; /* Host key will always be novel. */ + args[j++] = "-o"; /* Host key will always be novel. */ args[j++] = "StrictHostKeyChecking=no"; if (using_password_auth) { /* Only use password authentication. */ args[j++] = "-o"; args[j++] = "PreferredAuthentications=keyboard-interactive,password"; - } - else { + } else { /* Use identity file (private key). */ args[j++] = "-o"; args[j++] = "PreferredAuthentications=publickey"; @@ -314,23 +325,21 @@ start_ssh (struct config *config, char **extra_args, int wait_prompt) for (i = 0; extra_args[i] != NULL; ++i) args[j++] = extra_args[i]; } - args[j++] = config->server; /* Conversion server. */ + args[j++] = config->server; /* Conversion server. */ args[j++] = NULL; assert (j == nr_args); - h = mexp_spawnv ("ssh", (char **) args); + h = mexp_spawnv ("ssh", (char **)args); if (h == NULL) return NULL; - if (using_password_auth && - config->password && strlen (config->password) > 0) { + if (using_password_auth && config->password && + strlen (config->password) > 0) { /* Wait for the password prompt. */ - switch (mexp_expect (h, - (mexp_regexp[]) { - { 100, .re = password_re }, - { 0 } - }, ovector, ovecsize)) { - case 100: /* Got password prompt. */ + switch (mexp_expect ( + h, (mexp_regexp[]){ { 100, .re = password_re }, { 0 } }, ovector, + ovecsize)) { + case 100: /* Got password prompt. */ if (mexp_printf (h, "%s\n", config->password) == -1) { set_ssh_error ("mexp_printf: %m"); mexp_close (h); @@ -393,18 +402,17 @@ start_ssh (struct config *config, char **extra_args, int wait_prompt) return NULL; } - /* Wait for the prompt. */ + /* Wait for the prompt. */ wait_again: - switch (mexp_expect (h, - (mexp_regexp[]) { - { 100, .re = password_re }, - { 101, .re = prompt_re }, - { 0 } - }, ovector, ovecsize)) { - case 100: /* Got password prompt unexpectedly. */ + switch (mexp_expect (h, (mexp_regexp[]){ { 100, .re = password_re }, + { 101, .re = prompt_re }, + { 0 } }, + ovector, ovecsize)) { + case 100: /* Got password prompt unexpectedly. */ if (mexp_printf (h, "%s\n", config->password) == -1) { mexp_close (h); - set_ssh_error ("unexpected password prompt: probably the password supplied is wrong"); + set_ssh_error ("unexpected password prompt: probably the password " + "supplied is wrong"); return NULL; } break; @@ -413,8 +421,8 @@ start_ssh (struct config *config, char **extra_args, int wait_prompt) /* Got a prompt. However it might be an earlier prompt. If it * doesn't match the PS1 string we sent, then repeat the expect. */ - r = pcre_get_substring (h->buffer, ovector, - mexp_get_pcre_error (h), 1, &matched); + r = pcre_get_substring (h->buffer, ovector, mexp_get_pcre_error (h), + 1, &matched); if (r < 0) error (EXIT_FAILURE, 0, "PCRE error reading substring (%d)", r); r = STREQ (magic, matched); @@ -447,10 +455,11 @@ start_ssh (struct config *config, char **extra_args, int wait_prompt) } mexp_close (h); - set_ssh_error ("failed to synchronize with remote shell after 60 seconds"); + set_ssh_error ( + "failed to synchronize with remote shell after 60 seconds"); return NULL; - got_prompt: +got_prompt: mexp_set_timeout_ms (h, saved_timeout); return h; @@ -464,7 +473,8 @@ int test_connection (struct config *config) { mexp_h *h; - CLEANUP_FREE char *major_str = NULL, *minor_str = NULL, *release_str = NULL; + CLEANUP_FREE char *major_str = NULL, *minor_str = NULL, + *release_str = NULL; int feature_libguestfs_rewrite = 0; int status; const int ovecsize = 12; @@ -479,11 +489,11 @@ test_connection (struct config *config) */ v2v_major = v2v_minor = v2v_release = 0; - /* Send 'virt-v2v --version' command and hope we get back a version string. + /* Send 'virt-v2v --version' command and hope we get back a version + * string. * Note old virt-v2v did not understand -V option. */ - if (mexp_printf (h, - "%svirt-v2v --version\n", + if (mexp_printf (h, "%svirt-v2v --version\n", config->sudo ? "sudo " : "") == -1) { set_ssh_error ("mexp_printf: %m"); mexp_close (h); @@ -491,16 +501,15 @@ test_connection (struct config *config) } for (;;) { - switch (mexp_expect (h, - (mexp_regexp[]) { - { 100, .re = version_re }, - { 101, .re = prompt_re }, - { 0 } - }, ovector, ovecsize)) { - case 100: /* Got version string. */ - major_str = strndup (&h->buffer[ovector[2]], ovector[3]-ovector[2]); - minor_str = strndup (&h->buffer[ovector[4]], ovector[5]-ovector[4]); - release_str = strndup (&h->buffer[ovector[6]], ovector[7]-ovector[6]); + switch (mexp_expect (h, (mexp_regexp[]){ { 100, .re = version_re }, + { 101, .re = prompt_re }, + { 0 } }, + ovector, ovecsize)) { + case 100: /* Got version string. */ + major_str = strndup (&h->buffer[ovector[2]], ovector[3] - ovector[2]); + minor_str = strndup (&h->buffer[ovector[4]], ovector[5] - ovector[4]); + release_str = + strndup (&h->buffer[ovector[6]], ovector[7] - ovector[6]); sscanf (major_str, "%d", &v2v_major); sscanf (minor_str, "%d", &v2v_minor); sscanf (release_str, "%d", &v2v_release); @@ -518,12 +527,13 @@ test_connection (struct config *config) } break; - case 101: /* Got the prompt. */ + case 101: /* Got the prompt. */ goto end_of_version; case MEXP_EOF: mexp_close (h); - set_ssh_error ("unexpected end of file waiting virt-v2v --version output"); + set_ssh_error ( + "unexpected end of file waiting virt-v2v --version output"); return -1; case MEXP_TIMEOUT: @@ -542,7 +552,7 @@ test_connection (struct config *config) return -1; } } - end_of_version: +end_of_version: /* Got the prompt but no version number. */ if (v2v_major == 0) { @@ -556,7 +566,8 @@ test_connection (struct config *config) if (v2v_major != 1) { mexp_close (h); set_ssh_error ("virt-v2v major version is not 1 (major = %d), " - "this version of virt-p2v is not compatible", v2v_major); + "this version of virt-p2v is not compatible", + v2v_major); return -1; } @@ -569,7 +580,8 @@ test_connection (struct config *config) mexp_close (h); set_ssh_error ("virt-v2v version is < 1.28 (major = %d, minor = %d), " "you must upgrade to virt-v2v >= 1.28 on " - "the conversion server", v2v_major, v2v_minor); + "the conversion server", + v2v_major, v2v_minor); return -1; } @@ -589,36 +601,36 @@ test_connection (struct config *config) } for (;;) { - switch (mexp_expect (h, - (mexp_regexp[]) { - { 100, .re = feature_libguestfs_rewrite_re }, - { 101, .re = feature_input_re }, - { 102, .re = feature_output_re }, - { 103, .re = prompt_re }, - { 0 } - }, ovector, ovecsize)) { - case 100: /* libguestfs-rewrite. */ + switch (mexp_expect ( + h, (mexp_regexp[]){ { 100, .re = feature_libguestfs_rewrite_re }, + { 101, .re = feature_input_re }, + { 102, .re = feature_output_re }, + { 103, .re = prompt_re }, + { 0 } }, + ovector, ovecsize)) { + case 100: /* libguestfs-rewrite. */ feature_libguestfs_rewrite = 1; break; case 101: /* input:<driver-name> corresponds to an -i option in virt-v2v. */ add_input_driver (&h->buffer[ovector[2]], - (size_t) (ovector[3]-ovector[2])); + (size_t) (ovector[3] - ovector[2])); break; case 102: /* output:<driver-name> corresponds to an -o option in virt-v2v. */ add_output_driver (&h->buffer[ovector[2]], - (size_t) (ovector[3]-ovector[2])); + (size_t) (ovector[3] - ovector[2])); break; - case 103: /* Got prompt, so end of output. */ + case 103: /* Got prompt, so end of output. */ goto end_of_machine_readable; case MEXP_EOF: mexp_close (h); - set_ssh_error ("unexpected end of file waiting virt-v2v --machine-readable output"); + set_ssh_error ("unexpected end of file waiting virt-v2v " + "--machine-readable output"); return -1; case MEXP_TIMEOUT: @@ -637,7 +649,7 @@ test_connection (struct config *config) return -1; } } - end_of_machine_readable: +end_of_machine_readable: if (!feature_libguestfs_rewrite) { mexp_close (h); @@ -680,7 +692,8 @@ test_connection (struct config *config) if (WIFSIGNALED (status) && WTERMSIG (status) == SIGHUP) return 0; /* not an error */ if (!WIFEXITED (status) || WEXITSTATUS (status) != 0) { - set_ssh_error ("unexpected close status from ssh subprocess (%d)", status); + set_ssh_error ("unexpected close status from ssh subprocess (%d)", + status); return -1; } return 0; @@ -698,18 +711,18 @@ add_option (const char *type, char ***drivers, const char *name, size_t len) n++; - *drivers = realloc (*drivers, (n+1) * sizeof (char *)); + *drivers = realloc (*drivers, (n + 1) * sizeof (char *)); if (*drivers == NULL) error (EXIT_FAILURE, errno, "malloc"); - (*drivers)[n-1] = strndup (name, len); - if ((*drivers)[n-1] == NULL) + (*drivers)[n - 1] = strndup (name, len); + if ((*drivers)[n - 1] == NULL) error (EXIT_FAILURE, errno, "strndup"); (*drivers)[n] = NULL; #if DEBUG_STDERR fprintf (stderr, "%s: remote virt-v2v supports %s driver %s\n", - guestfs_int_program_name, type, (*drivers)[n-1]); + guestfs_int_program_name, type, (*drivers)[n - 1]); #endif } @@ -731,34 +744,30 @@ add_output_driver (const char *name, size_t len) static int nbd_local_port = 50123; mexp_h * -open_data_connection (struct config *config, int *local_port, int *remote_port) +open_data_connection (struct config *config, int *local_port, + int *remote_port) { mexp_h *h; char remote_arg[32]; - const char *extra_args[] = { - "-R", remote_arg, - "-N", - NULL - }; + const char *extra_args[] = { "-R", remote_arg, "-N", NULL }; CLEANUP_FREE char *port_str = NULL; const int ovecsize = 12; int ovector[ovecsize]; - snprintf (remote_arg, sizeof remote_arg, "0:localhost:%d", nbd_local_port); + snprintf (remote_arg, sizeof remote_arg, "0:localhost:%d", + nbd_local_port); *local_port = nbd_local_port; nbd_local_port++; - h = start_ssh (config, (char **) extra_args, 0); + h = start_ssh (config, (char **)extra_args, 0); if (h == NULL) return NULL; switch (mexp_expect (h, - (mexp_regexp[]) { - { 100, .re = portfwd_re }, - { 0 } - }, ovector, ovecsize)) { - case 100: /* Ephemeral port. */ - port_str = strndup (&h->buffer[ovector[2]], ovector[3]-ovector[2]); + (mexp_regexp[]){ { 100, .re = portfwd_re }, { 0 } }, + ovector, ovecsize)) { + case 100: /* Ephemeral port. */ + port_str = strndup (&h->buffer[ovector[2]], ovector[3] - ovector[2]); if (port_str == NULL) { set_ssh_error ("not enough memory for strndup"); mexp_close (h); @@ -803,11 +812,9 @@ wait_for_prompt (mexp_h *h) int ovector[ovecsize]; switch (mexp_expect (h, - (mexp_regexp[]) { - { 100, .re = prompt_re }, - { 0 } - }, ovector, ovecsize)) { - case 100: /* Got the prompt. */ + (mexp_regexp[]){ { 100, .re = prompt_re }, { 0 } }, + ovector, ovecsize)) { + case 100: /* Got the prompt. */ return 0; case MEXP_EOF: @@ -831,9 +838,8 @@ wait_for_prompt (mexp_h *h) } mexp_h * -start_remote_connection (struct config *config, - const char *remote_dir, const char *libvirt_xml, - const char *dmesg) +start_remote_connection (struct config *config, const char *remote_dir, + const char *libvirt_xml, const char *dmesg) { mexp_h *h; char magic[9]; @@ -856,9 +862,10 @@ start_remote_connection (struct config *config, if (wait_for_prompt (h) == -1) goto error; - /* Write some useful config information to files in the remote directory. */ - if (mexp_printf (h, "echo '%s' > %s/name\n", - config->guestname, remote_dir) == -1) { + /* Write some useful config information to files in the remote directory. + */ + if (mexp_printf (h, "echo '%s' > %s/name\n", config->guestname, + remote_dir) == -1) { set_ssh_error ("mexp_printf: %m"); goto error; } @@ -875,13 +882,10 @@ start_remote_connection (struct config *config, goto error; /* Upload the guest libvirt XML to the remote directory. */ - if (mexp_printf (h, - "cat > '%s/physical.xml' << '__%s__'\n" - "%s" - "__%s__\n", - remote_dir, magic, - libvirt_xml, - magic) == -1) { + if (mexp_printf (h, "cat > '%s/physical.xml' << '__%s__'\n" + "%s" + "__%s__\n", + remote_dir, magic, libvirt_xml, magic) == -1) { set_ssh_error ("mexp_printf: %m"); goto error; } @@ -891,14 +895,11 @@ start_remote_connection (struct config *config, if (dmesg != NULL) { /* Upload the physical host dmesg to the remote directory. */ - if (mexp_printf (h, - "cat > '%s/dmesg' << '__%s__'\n" - "%s" - "\n" - "__%s__\n", - remote_dir, magic, - dmesg, - magic) == -1) { + if (mexp_printf (h, "cat > '%s/dmesg' << '__%s__'\n" + "%s" + "\n" + "__%s__\n", + remote_dir, magic, dmesg, magic) == -1) { set_ssh_error ("mexp_printf: %m"); goto error; } @@ -909,7 +910,7 @@ start_remote_connection (struct config *config, return h; - error: +error: mexp_close (h); return NULL; } diff --git a/p2v/utils.c b/p2v/utils.c index 183e406..fcb0b22 100644 --- a/p2v/utils.c +++ b/p2v/utils.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -32,12 +33,12 @@ #include "p2v.h" -#define CHOMP(line,len) \ - do { \ - if ((len) > 0 && (line)[(len)-1] == '\n') { \ - (line)[(len)-1] = '\0'; \ - len--; \ - } \ +#define CHOMP(line, len) \ + do { \ + if ((len) > 0 && (line)[(len)-1] == '\n') { \ + (line)[(len)-1] = '\0'; \ + len--; \ + } \ } while (0) /* Return contents of /sys/class/net/<if_name>/address (if found). */ @@ -121,7 +122,7 @@ get_if_vendor (const char *if_name, int truncate) n--; } - memmove (&line[0], &line[i], n+1 /* copy trailing \0 */); + memmove (&line[0], &line[i], n + 1 /* copy trailing \0 */); /* Truncate? */ if (truncate > 0 && n > truncate) diff --git a/p2v/whole-file.c b/p2v/whole-file.c index 90df716..37cd20a 100644 --- a/p2v/whole-file.c +++ b/p2v/whole-file.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include <config.h> @@ -40,7 +41,7 @@ read_whole_file (const char *filename, char **data_r, size_t *size_r) ssize_t r; struct stat statbuf; - fd = open (filename, O_RDONLY|O_CLOEXEC); + fd = open (filename, O_RDONLY | O_CLOEXEC); if (fd == -1) { fprintf (stderr, "open: %s: %m\n", filename); return -1; diff --git a/python/guestfs-py-byhand.c b/python/guestfs-py-byhand.c index b200dc6..b02a132 100644 --- a/python/guestfs-py-byhand.c +++ b/python/guestfs-py-byhand.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ /* This file contains a small number of functions that are written by @@ -42,7 +43,7 @@ guestfs_int_py_create (PyObject *self, PyObject *args) guestfs_h *g; unsigned flags; - if (!PyArg_ParseTuple (args, (char *) "I:guestfs_create", &flags)) + if (!PyArg_ParseTuple (args, (char *)"I:guestfs_create", &flags)) return NULL; g = guestfs_create_flags (flags); if (g == NULL) { @@ -66,7 +67,7 @@ guestfs_int_py_close (PyObject *self, PyObject *args) size_t i, len; PyObject **callbacks; - if (!PyArg_ParseTuple (args, (char *) "O:guestfs_close", &py_g)) + if (!PyArg_ParseTuple (args, (char *)"O:guestfs_close", &py_g)) return NULL; g = get_handle (py_g); @@ -94,13 +95,12 @@ guestfs_int_py_close (PyObject *self, PyObject *args) /* http://docs.python.org/release/2.5.2/ext/callingPython.html */ static void -guestfs_int_py_event_callback_wrapper (guestfs_h *g, - void *callback, - uint64_t event, - int event_handle, - int flags, - const char *buf, size_t buf_len, - const uint64_t *array, size_t array_len) +guestfs_int_py_event_callback_wrapper (guestfs_h *g, void *callback, + uint64_t event, int event_handle, + int flags, const char *buf, + size_t buf_len, + const uint64_t *array, + size_t array_len) { PyGILState_STATE py_save = PyGILState_UNLOCKED; PyObject *py_callback = callback; @@ -117,9 +117,8 @@ guestfs_int_py_event_callback_wrapper (guestfs_h *g, } /* XXX As with Perl we don't pass the guestfs_h handle here. */ - args = Py_BuildValue ("(Kis#O)", - (unsigned PY_LONG_LONG) event, event_handle, - buf, buf_len, py_array); + args = Py_BuildValue ("(Kis#O)", (unsigned PY_LONG_LONG)event, + event_handle, buf, buf_len, py_array); if (PyEval_ThreadsInitialized ()) py_save = PyGILState_Ensure (); @@ -149,14 +148,13 @@ guestfs_int_py_set_event_callback (PyObject *self, PyObject *args) PyObject *py_eh; char key[64]; - if (!PyArg_ParseTuple (args, (char *) "OOK:guestfs_set_event_callback", + if (!PyArg_ParseTuple (args, (char *)"OOK:guestfs_set_event_callback", &py_g, &py_callback, &events)) return NULL; if (!PyCallable_Check (py_callback)) { - PyErr_SetString (PyExc_TypeError, - "callback parameter is not callable " - "(eg. lambda or function)"); + PyErr_SetString (PyExc_TypeError, "callback parameter is not callable " + "(eg. lambda or function)"); return NULL; } @@ -179,7 +177,7 @@ guestfs_int_py_set_event_callback (PyObject *self, PyObject *args) snprintf (key, sizeof key, "_python_event_%d", eh); guestfs_set_private (g, key, py_callback); - py_eh = PyLong_FromLong ((long) eh); + py_eh = PyLong_FromLong ((long)eh); return py_eh; } @@ -192,7 +190,7 @@ guestfs_int_py_delete_event_callback (PyObject *self, PyObject *args) PyObject *py_callback; char key[64]; - if (!PyArg_ParseTuple (args, (char *) "Oi:guestfs_delete_event_callback", + if (!PyArg_ParseTuple (args, (char *)"Oi:guestfs_delete_event_callback", &py_g, &eh)) return NULL; g = get_handle (py_g); @@ -216,7 +214,7 @@ guestfs_int_py_event_to_string (PyObject *self, PyObject *args) char *str; PyObject *py_r; - if (!PyArg_ParseTuple (args, (char *) "K", &events)) + if (!PyArg_ParseTuple (args, (char *)"K", &events)) return NULL; str = guestfs_event_to_string (events); diff --git a/python/guestfs-py.h b/python/guestfs-py.h index da5f483..2c27374 100644 --- a/python/guestfs-py.h +++ b/python/guestfs-py.h @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #ifndef guestfs_py_h @@ -29,9 +30,9 @@ typedef int Py_ssize_t; #endif #ifndef HAVE_PYCAPSULE_NEW -typedef struct { - PyObject_HEAD - guestfs_h *g; +typedef struct +{ + PyObject_HEAD guestfs_h *g; } Pyguestfs_Object; #endif @@ -41,9 +42,9 @@ get_handle (PyObject *obj) assert (obj); assert (obj != Py_None); #ifndef HAVE_PYCAPSULE_NEW - return ((Pyguestfs_Object *) obj)->g; + return ((Pyguestfs_Object *)obj)->g; #else - return (guestfs_h*) PyCapsule_GetPointer(obj, "guestfs_h"); + return (guestfs_h *)PyCapsule_GetPointer (obj, "guestfs_h"); #endif } @@ -52,17 +53,20 @@ put_handle (guestfs_h *g) { assert (g); #ifndef HAVE_PYCAPSULE_NEW - return - PyCObject_FromVoidPtrAndDesc ((void *) g, (char *) "guestfs_h", NULL); + return PyCObject_FromVoidPtrAndDesc ((void *)g, (char *)"guestfs_h", + NULL); #else - return PyCapsule_New ((void *) g, "guestfs_h", NULL); + return PyCapsule_New ((void *)g, "guestfs_h", NULL); #endif } extern PyObject *guestfs_int_py_create (PyObject *self, PyObject *args); extern PyObject *guestfs_int_py_close (PyObject *self, PyObject *args); -extern PyObject *guestfs_int_py_set_event_callback (PyObject *self, PyObject *args); -extern PyObject *guestfs_int_py_delete_event_callback (PyObject *self, PyObject *args); -extern PyObject *guestfs_int_py_event_to_string (PyObject *self, PyObject *args); +extern PyObject *guestfs_int_py_set_event_callback (PyObject *self, + PyObject *args); +extern PyObject *guestfs_int_py_delete_event_callback (PyObject *self, + PyObject *args); +extern PyObject *guestfs_int_py_event_to_string (PyObject *self, + PyObject *args); #endif /* guestfs_py_h */ diff --git a/rescue/rescue.c b/rescue/rescue.c index c46c775..7d19c7e 100644 --- a/rescue/rescue.c +++ b/rescue/rescue.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -50,39 +51,39 @@ int echo_keys = 0; const char *libvirt_uri = NULL; int inspector = 0; -static void __attribute__((noreturn)) -usage (int status) +static void __attribute__ ((noreturn)) usage (int status) { if (status != EXIT_SUCCESS) fprintf (stderr, _("Try `%s --help' for more information.\n"), guestfs_int_program_name); else { - printf (_("%s: Run a rescue shell on a virtual machine\n" - "Copyright (C) 2009-2016 Red Hat Inc.\n" - "Usage:\n" - " %s [--options] -d domname\n" - " %s [--options] -a disk.img [-a disk.img ...]\n" - "Options:\n" - " -a|--add image Add image\n" - " --append kernelopts Append kernel options\n" - " -c|--connect uri Specify libvirt URI for -d option\n" - " -d|--domain guest Add disks from libvirt guest\n" - " --format[=raw|..] Force disk format for -a option\n" - " --help Display brief help\n" - " -m|--memsize MB Set memory size in megabytes\n" - " --network Enable network\n" - " -r|--ro Access read-only\n" - " --scratch[=N] Add scratch disk(s)\n" - " --selinux Enable SELinux\n" - " --smp N Enable SMP with N >= 2 virtual CPUs\n" - " --suggest Suggest mount commands for this guest\n" - " -v|--verbose Verbose messages\n" - " -V|--version Display version and exit\n" - " -w|--rw Mount read-write\n" - " -x Trace libguestfs API calls\n" - "For more information, see the manpage %s(1).\n"), - guestfs_int_program_name, guestfs_int_program_name, - guestfs_int_program_name, guestfs_int_program_name); + printf ( + _("%s: Run a rescue shell on a virtual machine\n" + "Copyright (C) 2009-2016 Red Hat Inc.\n" + "Usage:\n" + " %s [--options] -d domname\n" + " %s [--options] -a disk.img [-a disk.img ...]\n" + "Options:\n" + " -a|--add image Add image\n" + " --append kernelopts Append kernel options\n" + " -c|--connect uri Specify libvirt URI for -d option\n" + " -d|--domain guest Add disks from libvirt guest\n" + " --format[=raw|..] Force disk format for -a option\n" + " --help Display brief help\n" + " -m|--memsize MB Set memory size in megabytes\n" + " --network Enable network\n" + " -r|--ro Access read-only\n" + " --scratch[=N] Add scratch disk(s)\n" + " --selinux Enable SELinux\n" + " --smp N Enable SMP with N >= 2 virtual CPUs\n" + " --suggest Suggest mount commands for this guest\n" + " -v|--verbose Verbose messages\n" + " -V|--version Display version and exit\n" + " -w|--rw Mount read-write\n" + " -x Trace libguestfs API calls\n" + "For more information, see the manpage %s(1).\n"), + guestfs_int_program_name, guestfs_int_program_name, + guestfs_int_program_name, guestfs_int_program_name); } exit (status); } @@ -138,10 +139,11 @@ main (int argc, char *argv[]) for (;;) { c = getopt_long (argc, argv, options, long_options, &option_index); - if (c == -1) break; + if (c == -1) + break; switch (c) { - case 0: /* options which are long only */ + case 0: /* options which are long only */ if (STREQ (long_options[option_index].name, "long-options")) display_long_options (long_options); else if (STREQ (long_options[option_index].name, "short-options")) @@ -160,8 +162,8 @@ main (int argc, char *argv[]) error (EXIT_FAILURE, 0, _("could not parse --smp parameter '%s'"), optarg); if (smp < 1) - error (EXIT_FAILURE, 0, - _("--smp parameter '%s' should be >= 1"), optarg); + error (EXIT_FAILURE, 0, _("--smp parameter '%s' should be >= 1"), + optarg); } else if (STREQ (long_options[option_index].name, "suggest")) { suggest = 1; } else if (STREQ (long_options[option_index].name, "scratch")) { @@ -178,8 +180,7 @@ main (int argc, char *argv[]) add_scratch_disks (n, &drvs); } } else - error (EXIT_FAILURE, 0, - _("unknown long option: %s (%d)"), + error (EXIT_FAILURE, 0, _("unknown long option: %s (%d)"), long_options[option_index].name, option_index); break; @@ -197,8 +198,8 @@ main (int argc, char *argv[]) case 'm': if (sscanf (optarg, "%d", &memsize) != 1) - error (EXIT_FAILURE, 0, - _("could not parse memory size '%s'"), optarg); + error (EXIT_FAILURE, 0, _("could not parse memory size '%s'"), + optarg); break; case 'r': @@ -245,7 +246,7 @@ main (int argc, char *argv[]) error (EXIT_FAILURE, errno, "strdup"); drv->next = drvs; drvs = drv; - } else { /* simulate -d option */ + } else { /* simulate -d option */ drv = calloc (1, sizeof (struct drv)); if (!drv) error (EXIT_FAILURE, errno, "calloc"); @@ -294,10 +295,11 @@ main (int argc, char *argv[]) */ CLEANUP_FREE char *backend = guestfs_get_backend (g); if (backend) { - if (STREQ (backend, "libvirt") || - STRPREFIX (backend, "libvirt:")) { - fprintf (stderr, _("%s: warning: virt-rescue doesn't work with the libvirt backend\n" - "at the moment. As a workaround, forcing backend = 'direct'.\n"), + if (STREQ (backend, "libvirt") || STRPREFIX (backend, "libvirt:")) { + fprintf (stderr, _("%s: warning: virt-rescue doesn't work with " + "the libvirt backend\n" + "at the moment. As a workaround, forcing " + "backend = 'direct'.\n"), guestfs_int_program_name); if (guestfs_set_backend (g, "direct") == -1) exit (EXIT_FAILURE); @@ -320,9 +322,8 @@ main (int argc, char *argv[]) /* Kernel command line must include guestfs_rescue=1 (see * appliance/init) as well as other options. */ - CLEANUP_FREE char *append_full = xasprintf ("guestfs_rescue=1%s%s", - append ? " " : "", - append ? append : ""); + CLEANUP_FREE char *append_full = xasprintf ( + "guestfs_rescue=1%s%s", append ? " " : "", append ? append : ""); if (guestfs_set_append (g, append_full) == -1) exit (EXIT_FAILURE); } @@ -354,8 +355,8 @@ static void suggest_filesystems (void); static int compare_keys_len (const void *p1, const void *p2) { - const char *key1 = * (char * const *) p1; - const char *key2 = * (char * const *) p2; + const char *key1 = *(char *const *)p1; + const char *key2 = *(char *const *)p2; return strlen (key1) - strlen (key2); } @@ -396,8 +397,10 @@ do_suggestion (struct drv *drvs) return; } - printf (_("This disk contains one or more operating systems. You can use these mount\n" - "commands in virt-rescue (at the ><rescue> prompt) to mount the filesystems.\n\n")); + printf (_("This disk contains one or more operating systems. You can " + "use these mount\n" + "commands in virt-rescue (at the ><rescue> prompt) to mount " + "the filesystems.\n\n")); for (i = 0; roots[i] != NULL; ++i) { CLEANUP_FREE_STRING_LIST char **mps = NULL; @@ -414,9 +417,8 @@ do_suggestion (struct drv *drvs) printf (_("# %s is the root of a %s operating system\n" "# type: %s, distro: %s, version: %d.%d\n" "# %s\n\n"), - roots[i], type ? : "unknown", - type ? : "unknown", distro ? : "unknown", major, minor, - product_name ? : ""); + roots[i], type ?: "unknown", type ?: "unknown", + distro ?: "unknown", major, minor, product_name ?: ""); mps = guestfs_inspect_get_mountpoints (g, roots[i]); if (mps == NULL) @@ -429,7 +431,7 @@ do_suggestion (struct drv *drvs) compare_keys_len); for (j = 0; mps[j] != NULL; j += 2) - printf ("mount %s /sysroot%s\n", mps[j+1], mps[j]); + printf ("mount %s /sysroot%s\n", mps[j + 1], mps[j]); /* If it's Linux, print the bind-mounts and a chroot command. */ if (type && STREQ (type, "linux")) { @@ -458,33 +460,38 @@ suggest_filesystems (void) if (fses == NULL) exit (EXIT_FAILURE); - /* Count how many are not swap or unknown. Possibly we should try - * mounting to see which are mountable, but that has a high - * probability of breaking. - */ +/* Count how many are not swap or unknown. Possibly we should try + * mounting to see which are mountable, but that has a high + * probability of breaking. + */ #define TEST_MOUNTABLE(fs) STRNEQ ((fs), "swap") && STRNEQ ((fs), "unknown") count = 0; for (i = 0; fses[i] != NULL; i += 2) { - if (TEST_MOUNTABLE (fses[i+1])) + if (TEST_MOUNTABLE (fses[i + 1])) count++; } if (count == 0) { - printf (_("This disk contains no mountable filesystems that we recognize.\n\n" - "However you can still use virt-rescue on the disk image, to try to mount\n" - "filesystems that are not recognized by libguestfs, or to create partitions,\n" - "logical volumes and filesystems on a blank disk.\n")); + printf (_ ( + "This disk contains no mountable filesystems that we recognize.\n\n" + "However you can still use virt-rescue on the disk image, to try " + "to mount\n" + "filesystems that are not recognized by libguestfs, or to create " + "partitions,\n" + "logical volumes and filesystems on a blank disk.\n")); return; } - printf (_("This disk contains one or more filesystems, but we don't recognize any\n" - "operating system. You can use these mount commands in virt-rescue (at the\n" + printf (_("This disk contains one or more filesystems, but we don't " + "recognize any\n" + "operating system. You can use these mount commands in " + "virt-rescue (at the\n" "><rescue> prompt) to mount these filesystems.\n\n")); for (i = 0; fses[i] != NULL; i += 2) { - printf (_("# %s has type '%s'\n"), fses[i], fses[i+1]); + printf (_("# %s has type '%s'\n"), fses[i], fses[i + 1]); - if (TEST_MOUNTABLE (fses[i+1])) + if (TEST_MOUNTABLE (fses[i + 1])) printf ("mount %s /sysroot\n", fses[i]); printf ("\n"); diff --git a/sparsify/statvfs-c.c b/sparsify/statvfs-c.c index 76bff0b..ca0a21e 100644 --- a/sparsify/statvfs-c.c +++ b/sparsify/statvfs-c.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -43,7 +44,7 @@ virt_sparsify_statvfs_free_space (value pathv) caml_failwith ("statvfs"); } - free_space = (int64_t) buf.f_bsize * buf.f_bavail; + free_space = (int64_t)buf.f_bsize * buf.f_bavail; rv = caml_copy_int64 (free_space); CAMLreturn (rv); diff --git a/src/actions-support.c b/src/actions-support.c index baf375f..e192165 100644 --- a/src/actions-support.c +++ b/src/actions-support.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ /* Helper functions for the actions defined in src/actions.c */ @@ -30,25 +31,26 @@ /* Check the return message from a call for validity. */ int guestfs_int_check_reply_header (guestfs_h *g, - const struct guestfs_message_header *hdr, - unsigned int proc_nr, unsigned int serial) + const struct guestfs_message_header *hdr, + unsigned int proc_nr, unsigned int serial) { if (hdr->prog != GUESTFS_PROGRAM) { error (g, "wrong program (%u/%d)", hdr->prog, GUESTFS_PROGRAM); return -1; } if (hdr->vers != GUESTFS_PROTOCOL_VERSION) { - error (g, "wrong protocol version (%u/%d)", - hdr->vers, GUESTFS_PROTOCOL_VERSION); + error (g, "wrong protocol version (%u/%d)", hdr->vers, + GUESTFS_PROTOCOL_VERSION); return -1; } if (hdr->direction != GUESTFS_DIRECTION_REPLY) { - error (g, "unexpected message direction (%d/%d)", - (int) hdr->direction, GUESTFS_DIRECTION_REPLY); + error (g, "unexpected message direction (%d/%d)", (int)hdr->direction, + GUESTFS_DIRECTION_REPLY); return -1; } if (hdr->proc != proc_nr) { - error (g, "unexpected procedure number (%d/%u)", (int) hdr->proc, proc_nr); + error (g, "unexpected procedure number (%d/%u)", (int)hdr->proc, + proc_nr); return -1; } if (hdr->serial != serial) { @@ -64,7 +66,8 @@ int guestfs_int_check_appliance_up (guestfs_h *g, const char *caller) { if (g->state == CONFIG || g->state == LAUNCHING) { - error (g, "%s: call launch before using this function\n(in guestfish, don't forget to use the 'run' command)", + error (g, "%s: call launch before using this function\n(in guestfish, " + "don't forget to use the 'run' command)", caller); return -1; } @@ -95,7 +98,8 @@ guestfs_int_trace_send_line (guestfs_h *g, struct trace_buffer *tb) if (tb->opened) { fclose (tb->fp); tb->fp = NULL; - guestfs_int_call_callbacks_message (g, GUESTFS_EVENT_TRACE, tb->buf, tb->len); + guestfs_int_call_callbacks_message (g, GUESTFS_EVENT_TRACE, tb->buf, + tb->len); free (tb->buf); tb->buf = NULL; } diff --git a/src/alloc.c b/src/alloc.c index d6f70c2..512e84c 100644 --- a/src/alloc.c +++ b/src/alloc.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include <config.h> @@ -30,7 +31,8 @@ void * guestfs_int_safe_malloc (guestfs_h *g, size_t nbytes) { void *ptr = malloc (nbytes); - if (nbytes > 0 && !ptr) g->abort_cb (); + if (nbytes > 0 && !ptr) + g->abort_cb (); return ptr; } @@ -46,10 +48,11 @@ guestfs_int_safe_malloc (guestfs_h *g, size_t nbytes) sizeof (ptrdiff_t) <= sizeof (size_t), so do not bother to test for exactly-SIZE_MAX allocations on such hosts; this avoids a test and branch when S is known to be 1. */ -# define xalloc_oversized(n, s) \ +#define xalloc_oversized(n, s) \ ((size_t) (sizeof (ptrdiff_t) <= sizeof (size_t) ? -1 : -2) / (s) < (n)) -/* Technically we should add an autoconf test for this, testing for the desired +/* Technically we should add an autoconf test for this, testing for the + desired functionality, like what's done in gnulib, but for now, this is fine. */ #if defined(__GLIBC__) #define HAVE_GNU_CALLOC (__GLIBC__ >= 2) @@ -68,8 +71,8 @@ guestfs_int_safe_calloc (guestfs_h *g, size_t n, size_t s) proper overflow checks. But omit overflow and size-zero tests if HAVE_GNU_CALLOC, since GNU calloc catches overflow and never returns NULL if successful. */ - if ((! HAVE_GNU_CALLOC && xalloc_oversized (n, s)) - || (! (p = calloc (n, s)) && (HAVE_GNU_CALLOC || n != 0))) + if ((!HAVE_GNU_CALLOC && xalloc_oversized (n, s)) || + (!(p = calloc (n, s)) && (HAVE_GNU_CALLOC || n != 0))) g->abort_cb (); return p; } @@ -78,7 +81,8 @@ void * guestfs_int_safe_realloc (guestfs_h *g, void *ptr, size_t nbytes) { void *p = realloc (ptr, nbytes); - if (nbytes > 0 && !p) g->abort_cb (); + if (nbytes > 0 && !p) + g->abort_cb (); return p; } @@ -86,7 +90,8 @@ char * guestfs_int_safe_strdup (guestfs_h *g, const char *str) { char *s = strdup (str); - if (!s) g->abort_cb (); + if (!s) + g->abort_cb (); return s; } @@ -94,7 +99,8 @@ char * guestfs_int_safe_strndup (guestfs_h *g, const char *str, size_t n) { char *s = strndup (str, n); - if (!s) g->abort_cb (); + if (!s) + g->abort_cb (); return s; } @@ -102,7 +108,8 @@ void * guestfs_int_safe_memdup (guestfs_h *g, const void *ptr, size_t size) { void *p = malloc (size); - if (!p) g->abort_cb (); + if (!p) + g->abort_cb (); memcpy (p, ptr, size); return p; } diff --git a/src/appliance.c b/src/appliance.c index 864761f..3cf112c 100644 --- a/src/appliance.c +++ b/src/appliance.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include <config.h> @@ -37,15 +38,28 @@ static const char *kernel_name = "vmlinuz." host_cpu; static const char *initrd_name = "initramfs." host_cpu ".img"; -static int build_appliance (guestfs_h *g, char **kernel, char **initrd, char **appliance); -static int find_path (guestfs_h *g, int (*pred) (guestfs_h *g, const char *pelem, void *data), void *data, char **pelem); -static int dir_contains_file (guestfs_h *g, const char *dir, const char *file); +static int build_appliance (guestfs_h *g, char **kernel, char **initrd, + char **appliance); +static int find_path (guestfs_h *g, + int (*pred) (guestfs_h *g, const char *pelem, + void *data), + void *data, char **pelem); +static int dir_contains_file (guestfs_h *g, const char *dir, + const char *file); static int dir_contains_files (guestfs_h *g, const char *dir, ...); -static int contains_old_style_appliance (guestfs_h *g, const char *path, void *data); -static int contains_fixed_appliance (guestfs_h *g, const char *path, void *data); -static int contains_supermin_appliance (guestfs_h *g, const char *path, void *data); -static int build_supermin_appliance (guestfs_h *g, const char *supermin_path, uid_t uid, char **kernel, char **initrd, char **appliance); -static int run_supermin_build (guestfs_h *g, const char *lockfile, const char *appliancedir, const char *supermin_path); +static int contains_old_style_appliance (guestfs_h *g, const char *path, + void *data); +static int contains_fixed_appliance (guestfs_h *g, const char *path, + void *data); +static int contains_supermin_appliance (guestfs_h *g, const char *path, + void *data); +static int build_supermin_appliance (guestfs_h *g, + const char *supermin_path, uid_t uid, + char **kernel, char **initrd, + char **appliance); +static int run_supermin_build (guestfs_h *g, const char *lockfile, + const char *appliancedir, + const char *supermin_path); /* Locate or build the appliance. * @@ -91,10 +105,8 @@ static int run_supermin_build (guestfs_h *g, const char *lockfile, const char *a * subdirectory. */ int -guestfs_int_build_appliance (guestfs_h *g, - char **kernel_rtn, - char **initrd_rtn, - char **appliance_rtn) +guestfs_int_build_appliance (guestfs_h *g, char **kernel_rtn, + char **initrd_rtn, char **appliance_rtn) { char *kernel = NULL, *initrd = NULL, *appliance = NULL; @@ -111,9 +123,7 @@ guestfs_int_build_appliance (guestfs_h *g, } static int -build_appliance (guestfs_h *g, - char **kernel, - char **initrd, +build_appliance (guestfs_h *g, char **kernel, char **initrd, char **appliance) { int r; @@ -128,8 +138,8 @@ build_appliance (guestfs_h *g, if (r == 1) /* Step (2): build supermin appliance. */ - return build_supermin_appliance (g, supermin_path, uid, - kernel, initrd, appliance); + return build_supermin_appliance (g, supermin_path, uid, kernel, initrd, + appliance); /* Step (3). */ r = find_path (g, contains_fixed_appliance, NULL, &path); @@ -162,7 +172,8 @@ build_appliance (guestfs_h *g, return 0; } - error (g, _("cannot find any suitable libguestfs supermin, fixed or old-style appliance on LIBGUESTFS_PATH (search path: %s)"), + error (g, _("cannot find any suitable libguestfs supermin, fixed or " + "old-style appliance on LIBGUESTFS_PATH (search path: %s)"), g->path); return -1; } @@ -176,9 +187,8 @@ contains_old_style_appliance (guestfs_h *g, const char *path, void *data) static int contains_fixed_appliance (guestfs_h *g, const char *path, void *data) { - return dir_contains_files (g, path, - "README.fixed", - "kernel", "initrd", "root", NULL); + return dir_contains_files (g, path, "README.fixed", "kernel", "initrd", + "root", NULL); } static int @@ -194,17 +204,16 @@ contains_supermin_appliance (guestfs_h *g, const char *path, void *data) * -1 = error (aborts launch) */ static int -build_supermin_appliance (guestfs_h *g, - const char *supermin_path, - uid_t uid, - char **kernel, char **initrd, +build_supermin_appliance (guestfs_h *g, const char *supermin_path, + uid_t uid, char **kernel, char **initrd, char **appliance) { CLEANUP_FREE char *tmpdir = guestfs_get_cachedir (g); - CLEANUP_FREE char *cachedir = NULL, *lockfile = NULL, *appliancedir = NULL; + CLEANUP_FREE char *cachedir = NULL, *lockfile = NULL, + *appliancedir = NULL; struct stat statbuf; - cachedir = safe_asprintf (g, "%s/.guestfs-%ju", tmpdir, (uintmax_t) uid); + cachedir = safe_asprintf (g, "%s/.guestfs-%ju", tmpdir, (uintmax_t)uid); lockfile = safe_asprintf (g, "%s/lock", cachedir); appliancedir = safe_asprintf (g, "%s/appliance.d", cachedir); @@ -218,21 +227,23 @@ build_supermin_appliance (guestfs_h *g, return 0; if (statbuf.st_uid != uid) { error (g, _("security: cached appliance %s is not owned by UID %ju"), - cachedir, (uintmax_t) uid); + cachedir, (uintmax_t)uid); return -1; } if (!S_ISDIR (statbuf.st_mode)) { - error (g, _("security: cached appliance %s is not a directory (mode %o)"), + error (g, + _("security: cached appliance %s is not a directory (mode %o)"), cachedir, statbuf.st_mode); return -1; } if ((statbuf.st_mode & 0022) != 0) { - error (g, _("security: cached appliance %s is writable by group or other (mode %o)"), + error (g, _("security: cached appliance %s is writable by group or " + "other (mode %o)"), cachedir, statbuf.st_mode); return -1; } - (void) utimes (cachedir, NULL); + (void)utimes (cachedir, NULL); debug (g, "begin building supermin appliance"); /* Build the appliance if it needs to be built. */ @@ -249,8 +260,8 @@ build_supermin_appliance (guestfs_h *g, *appliance = safe_asprintf (g, "%s/root", appliancedir); /* Touch the files so they don't get deleted (as they are in /var/tmp). */ - (void) utimes (*kernel, NULL); - (void) utimes (*initrd, NULL); + (void)utimes (*kernel, NULL); + (void)utimes (*initrd, NULL); /* Checking backend != "uml" is a big hack. UML encodes the mtime * of the original backing file (in this case, the appliance) in the @@ -265,7 +276,7 @@ build_supermin_appliance (guestfs_h *g, * XXX */ if (STRNEQ (g->backend, "uml")) - (void) utimes (*appliance, NULL); + (void)utimes (*appliance, NULL); return 0; } @@ -274,14 +285,12 @@ build_supermin_appliance (guestfs_h *g, * appliance. */ static int -run_supermin_build (guestfs_h *g, - const char *lockfile, - const char *appliancedir, - const char *supermin_path) +run_supermin_build (guestfs_h *g, const char *lockfile, + const char *appliancedir, const char *supermin_path) { CLEANUP_CMD_CLOSE struct command *cmd = guestfs_int_new_command (g); int r; -#if 0 /* not supported in supermin 5 yet XXX */ +#if 0 /* not supported in supermin 5 yet XXX */ uid_t uid = getuid (); uid_t euid = geteuid (); gid_t gid = getgid (); @@ -339,8 +348,7 @@ run_supermin_build (guestfs_h *g, static int find_path (guestfs_h *g, int (*pred) (guestfs_h *g, const char *pelem, void *data), - void *data, - char **pelem_ret) + void *data, char **pelem_ret) { size_t len; int r; @@ -365,7 +373,7 @@ find_path (guestfs_h *g, return -1; } - if (r != 0) /* predicate matched */ + if (r != 0) /* predicate matched */ return 1; free (*pelem_ret); @@ -435,10 +443,11 @@ guestfs_int_get_uefi (guestfs_h *g, char **code, char **vars) for (i = 0; guestfs_int_aavmf_firmware[i] != NULL; i += 2) { const char *codefile = guestfs_int_aavmf_firmware[i]; - const char *varsfile = guestfs_int_aavmf_firmware[i+1]; + const char *varsfile = guestfs_int_aavmf_firmware[i + 1]; if (access (codefile, R_OK) == 0 && access (varsfile, R_OK) == 0) { - CLEANUP_CMD_CLOSE struct command *copycmd = guestfs_int_new_command (g); + CLEANUP_CMD_CLOSE struct command *copycmd = + guestfs_int_new_command (g); char *varst; int r; diff --git a/src/available.c b/src/available.c index ae0bd84..13bfc85 100644 --- a/src/available.c +++ b/src/available.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include <config.h> @@ -43,11 +44,11 @@ find_or_cache_feature (guestfs_h *g, const char *group) res = guestfs_internal_feature_available (g, group); if (res < 0) - return 0; /* internal_feature_available sent an error. */ + return 0; /* internal_feature_available sent an error. */ g->features = - safe_realloc (g, g->features, - (g->nr_features+1) * sizeof (struct cached_feature)); + safe_realloc (g, g->features, + (g->nr_features + 1) * sizeof (struct cached_feature)); f = &g->features[g->nr_features]; ++g->nr_features; f->group = safe_strdup (g, group); diff --git a/src/canonical-name.c b/src/canonical-name.c index 8b5f493..a6b679b 100644 --- a/src/canonical-name.c +++ b/src/canonical-name.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include <config.h> @@ -34,19 +35,17 @@ guestfs_impl_canonical_device_name (guestfs_h *g, const char *device) /* /dev/hd etc. */ if (STRPREFIX (device, "/dev/") && - strchr (device+5, '/') == NULL && /* not an LV name */ - ((len = strcspn (device+5, "d")) > 0 && len <= 2)) { - ret = safe_asprintf (g, "/dev/sd%s", &device[5+len+1]); - } - else if (STRPREFIX (device, "/dev/mapper/") || - STRPREFIX (device, "/dev/dm-")) { + strchr (device + 5, '/') == NULL && /* not an LV name */ + ((len = strcspn (device + 5, "d")) > 0 && len <= 2)) { + ret = safe_asprintf (g, "/dev/sd%s", &device[5 + len + 1]); + } else if (STRPREFIX (device, "/dev/mapper/") || + STRPREFIX (device, "/dev/dm-")) { /* XXX hide errors */ ret = guestfs_lvm_canonical_lv_name (g, device); if (ret == NULL) ret = safe_strdup (g, device); - } - else + } else ret = safe_strdup (g, device); - return ret; /* caller frees */ + return ret; /* caller frees */ } diff --git a/src/cleanup.c b/src/cleanup.c index 71c26ec..423c28b 100644 --- a/src/cleanup.c +++ b/src/cleanup.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include <config.h> @@ -40,7 +41,7 @@ void guestfs_int_cleanup_free (void *ptr) { - free (* (void **) ptr); + free (*(void **)ptr); } void @@ -52,7 +53,7 @@ guestfs_int_cleanup_free_string_list (char ***ptr) void guestfs_int_cleanup_hash_free (void *ptr) { - Hash_table *h = * (Hash_table **) ptr; + Hash_table *h = *(Hash_table **)ptr; if (h) hash_free (h); @@ -72,7 +73,7 @@ guestfs_int_cleanup_unlink_free (char **ptr) void guestfs_int_cleanup_xmlBufferFree (void *ptr) { - xmlBufferPtr xb = * (xmlBufferPtr *) ptr; + xmlBufferPtr xb = *(xmlBufferPtr *)ptr; if (xb) xmlBufferFree (xb); @@ -81,7 +82,7 @@ guestfs_int_cleanup_xmlBufferFree (void *ptr) void guestfs_int_cleanup_xmlFreeDoc (void *ptr) { - xmlDocPtr doc = * (xmlDocPtr *) ptr; + xmlDocPtr doc = *(xmlDocPtr *)ptr; if (doc) xmlFreeDoc (doc); @@ -90,7 +91,7 @@ guestfs_int_cleanup_xmlFreeDoc (void *ptr) void guestfs_int_cleanup_xmlFreeURI (void *ptr) { - xmlURIPtr uri = * (xmlURIPtr *) ptr; + xmlURIPtr uri = *(xmlURIPtr *)ptr; if (uri) xmlFreeURI (uri); @@ -99,7 +100,7 @@ guestfs_int_cleanup_xmlFreeURI (void *ptr) void guestfs_int_cleanup_xmlFreeTextWriter (void *ptr) { - xmlTextWriterPtr xo = * (xmlTextWriterPtr *) ptr; + xmlTextWriterPtr xo = *(xmlTextWriterPtr *)ptr; if (xo) xmlFreeTextWriter (xo); @@ -108,7 +109,7 @@ guestfs_int_cleanup_xmlFreeTextWriter (void *ptr) void guestfs_int_cleanup_xmlXPathFreeContext (void *ptr) { - xmlXPathContextPtr ctx = * (xmlXPathContextPtr *) ptr; + xmlXPathContextPtr ctx = *(xmlXPathContextPtr *)ptr; if (ctx) xmlXPathFreeContext (ctx); @@ -117,7 +118,7 @@ guestfs_int_cleanup_xmlXPathFreeContext (void *ptr) void guestfs_int_cleanup_xmlXPathFreeObject (void *ptr) { - xmlXPathObjectPtr obj = * (xmlXPathObjectPtr *) ptr; + xmlXPathObjectPtr obj = *(xmlXPathObjectPtr *)ptr; if (obj) xmlXPathFreeObject (obj); @@ -126,7 +127,7 @@ guestfs_int_cleanup_xmlXPathFreeObject (void *ptr) void guestfs_int_cleanup_fclose (void *ptr) { - FILE *f = * (FILE **) ptr; + FILE *f = *(FILE **)ptr; if (f) fclose (f); @@ -135,7 +136,7 @@ guestfs_int_cleanup_fclose (void *ptr) void guestfs_int_cleanup_pclose (void *ptr) { - FILE *f = * (FILE **) ptr; + FILE *f = *(FILE **)ptr; if (f) pclose (f); diff --git a/src/command.c b/src/command.c index 866847d..afcb346 100644 --- a/src/command.c +++ b/src/command.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ /* Wrapper for running external command, loosely based on libvirt's @@ -95,20 +96,25 @@ enum command_style { struct command; -static void add_line_buffer (struct command *cmd, const char *buf, size_t len); +static void add_line_buffer (struct command *cmd, const char *buf, + size_t len); static void close_line_buffer (struct command *cmd); -static void add_unbuffered (struct command *cmd, const char *buf, size_t len); -static void add_whole_buffer (struct command *cmd, const char *buf, size_t len); +static void add_unbuffered (struct command *cmd, const char *buf, + size_t len); +static void add_whole_buffer (struct command *cmd, const char *buf, + size_t len); static void close_whole_buffer (struct command *cmd); -struct buffering { +struct buffering +{ char *buffer; size_t len; void (*add_data) (struct command *cmd, const char *buf, size_t len); void (*close_data) (struct command *cmd); }; -struct child_rlimits { +struct child_rlimits +{ struct child_rlimits *next; int resource; long limit; @@ -119,11 +125,13 @@ struct command guestfs_h *g; enum command_style style; - union { + union + { /* COMMAND_STYLE_EXECV */ struct stringsbuf argv; /* COMMAND_STYLE_SYSTEM */ - struct { + struct + { char *str; size_t len, alloc; } string; @@ -226,7 +234,8 @@ add_string (struct command *cmd, const char *str, size_t len) cmd->string.alloc = 256; else cmd->string.alloc += MAX (cmd->string.alloc, len); - cmd->string.str = safe_realloc (cmd->g, cmd->string.str, cmd->string.alloc); + cmd->string.str = + safe_realloc (cmd->g, cmd->string.str, cmd->string.alloc); } memcpy (&cmd->string.str[cmd->string.len], str, len); @@ -249,10 +258,7 @@ guestfs_int_cmd_add_string_quoted (struct command *cmd, const char *str) add_string (cmd, "\"", 1); for (; *str; str++) { - if (*str == '$' || - *str == '`' || - *str == '\\' || - *str == '"') + if (*str == '$' || *str == '`' || *str == '\\' || *str == '"') add_string (cmd, "\\", 1); add_string (cmd, str, 1); } @@ -289,16 +295,13 @@ guestfs_int_cmd_set_stdout_callback (struct command *cmd, if ((flags & 3) == CMD_STDOUT_FLAG_LINE_BUFFER) { cmd->outbuf.add_data = add_line_buffer; cmd->outbuf.close_data = close_line_buffer; - } - else if ((flags & 3) == CMD_STDOUT_FLAG_UNBUFFERED) { + } else if ((flags & 3) == CMD_STDOUT_FLAG_UNBUFFERED) { cmd->outbuf.add_data = add_unbuffered; cmd->outbuf.close_data = NULL; - } - else if ((flags & 3) == CMD_STDOUT_FLAG_WHOLE_BUFFER) { + } else if ((flags & 3) == CMD_STDOUT_FLAG_WHOLE_BUFFER) { cmd->outbuf.add_data = add_whole_buffer; cmd->outbuf.close_data = close_whole_buffer; - } - else + } else abort (); } @@ -348,7 +351,8 @@ guestfs_int_cmd_set_child_callback (struct command *cmd, * consume lots of space or time. */ void -guestfs_int_cmd_set_child_rlimit (struct command *cmd, int resource, long limit) +guestfs_int_cmd_set_child_rlimit (struct command *cmd, int resource, + long limit) { struct child_rlimits *p; @@ -359,7 +363,6 @@ guestfs_int_cmd_set_child_rlimit (struct command *cmd, int resource, long limit) cmd->child_rlimits = p; } - /* Finish off the command by either NULL-terminating the argv array or * adding a terminating \0 to the string, or die with an internal * error if no command has been added. @@ -389,15 +392,14 @@ debug_command (struct command *cmd) switch (cmd->style) { case COMMAND_STYLE_EXECV: debug (cmd->g, "command: run: %s", cmd->argv.argv[0]); - last = cmd->argv.size-1; /* omit final NULL pointer */ + last = cmd->argv.size - 1; /* omit final NULL pointer */ for (i = 1; i < last; ++i) { - if (i < last-1 && - cmd->argv.argv[i][0] == '-' && cmd->argv.argv[i+1][0] != '-') { - debug (cmd->g, "command: run: \\ %s %s", - cmd->argv.argv[i], cmd->argv.argv[i+1]); + if (i < last - 1 && cmd->argv.argv[i][0] == '-' && + cmd->argv.argv[i + 1][0] != '-') { + debug (cmd->g, "command: run: \\ %s %s", cmd->argv.argv[i], + cmd->argv.argv[i + 1]); i++; - } - else + } else debug (cmd->g, "command: run: \\ %s", cmd->argv.argv[i]); } break; @@ -411,7 +413,7 @@ debug_command (struct command *cmd) } } -static void run_child (struct command *cmd) __attribute__((noreturn)); +static void run_child (struct command *cmd) __attribute__ ((noreturn)); static int run_command (struct command *cmd) @@ -419,7 +421,8 @@ run_command (struct command *cmd) int errorfd[2] = { -1, -1 }; int outfd[2] = { -1, -1 }; - /* Set up a pipe to capture command output and send it to the error log. */ + /* Set up a pipe to capture command output and send it to the error log. + */ if (cmd->capture_errors) { if (pipe2 (errorfd, O_CLOEXEC) == -1) { perrorf (cmd->g, "pipe2"); @@ -479,9 +482,9 @@ run_command (struct command *cmd) dup2 (1, 2); run_child (cmd); - /*NOTREACHED*/ +/*NOTREACHED*/ - error: +error: if (errorfd[0] >= 0) close (errorfd[0]); if (errorfd[1] >= 0) @@ -525,7 +528,7 @@ run_child (struct command *cmd) if (max_fd == -1) max_fd = 1024; if (max_fd > 65536) - max_fd = 65536; /* bound the amount of work we do here */ + max_fd = 65536; /* bound the amount of work we do here */ for (fd = 3; fd < max_fd; ++fd) close (fd); } @@ -533,7 +536,8 @@ run_child (struct command *cmd) /* Clean up the environment. */ setenv ("LC_ALL", "C", 1); - /* Set the umask for all subcommands to something sensible (RHBZ#610880). */ + /* Set the umask for all subcommands to something sensible (RHBZ#610880). + */ umask (022); if (cmd->child_callback) { @@ -542,8 +546,7 @@ run_child (struct command *cmd) } #ifdef HAVE_SETRLIMIT - for (child_rlimit = cmd->child_rlimits; - child_rlimit != NULL; + for (child_rlimit = cmd->child_rlimits; child_rlimit != NULL; child_rlimit = child_rlimit->next) { rlimit.rlim_cur = rlimit.rlim_max = child_rlimit->limit; if (setrlimit (child_rlimit->resource, &rlimit) == -1) { @@ -585,9 +588,8 @@ run_child (struct command *cmd) if (WIFEXITED (r)) _exit (WEXITSTATUS (r)); fprintf (stderr, "%s\n", - guestfs_int_exit_status_to_string (r, cmd->string.str, - status_string, - sizeof status_string)); + guestfs_int_exit_status_to_string ( + r, cmd->string.str, status_string, sizeof status_string)); _exit (EXIT_FAILURE); case COMMAND_STYLE_NOT_SELECTED: @@ -626,7 +628,7 @@ loop (struct command *cmd) while (nr_fds > 0) { rset2 = rset; - r = select (maxfd+1, &rset2, NULL, NULL, NULL); + r = select (maxfd + 1, &rset2, NULL, NULL, NULL); if (r == -1) { if (errno == EINTR || errno == EAGAIN) continue; @@ -646,8 +648,7 @@ loop (struct command *cmd) FD_CLR (cmd->errorfd, &rset); cmd->errorfd = -1; nr_fds--; - } - else if (n == -1) { + } else if (n == -1) { perrorf (cmd->g, "read: errorfd"); close (cmd->errorfd); FD_CLR (cmd->errorfd, &rset); @@ -664,8 +665,7 @@ loop (struct command *cmd) if (n > 0) { if (cmd->outbuf.add_data) cmd->outbuf.add_data (cmd, buf, n); - } - else if (n == 0) { + } else if (n == 0) { if (cmd->outbuf.close_data) cmd->outbuf.close_data (cmd); if (close (cmd->outfd) == -1) @@ -673,8 +673,7 @@ loop (struct command *cmd) FD_CLR (cmd->outfd, &rset); cmd->outfd = -1; nr_fds--; - } - else if (n == -1) { + } else if (n == -1) { perrorf (cmd->g, "read: outfd"); close (cmd->outfd); FD_CLR (cmd->outfd, &rset); @@ -754,9 +753,12 @@ guestfs_int_cmd_pipe_run (struct command *cmd, const char *mode) assert (!cmd->stdout_callback); assert (!cmd->stderr_to_stdout); - if (STREQ (mode, "r")) r_mode = 1; - else if (STREQ (mode, "w")) r_mode = 0; - else abort (); + if (STREQ (mode, "r")) + r_mode = 1; + else if (STREQ (mode, "w")) + r_mode = 0; + else + abort (); if (pipe2 (fd, O_CLOEXEC) == -1) { perrorf (cmd->g, "pipe2"); @@ -770,10 +772,10 @@ guestfs_int_cmd_pipe_run (struct command *cmd, const char *mode) if (guestfs_int_lazy_make_tmpdir (cmd->g) == -1) goto error; - cmd->error_file = - safe_asprintf (cmd->g, "%s/cmderr.%d", cmd->g->tmpdir, ++cmd->g->unique); + cmd->error_file = safe_asprintf (cmd->g, "%s/cmderr.%d", cmd->g->tmpdir, + ++cmd->g->unique); errfd = open (cmd->error_file, - O_WRONLY|O_CREAT|O_NOCTTY|O_TRUNC|O_CLOEXEC, 0600); + O_WRONLY | O_CREAT | O_NOCTTY | O_TRUNC | O_CLOEXEC, 0600); if (errfd == -1) { perrorf (cmd->g, "open: %s", cmd->error_file); goto error; @@ -793,8 +795,7 @@ guestfs_int_cmd_pipe_run (struct command *cmd, const char *mode) if (r_mode) { close (fd[1]); ret = fd[0]; - } - else { + } else { close (fd[0]); ret = fd[1]; } @@ -810,17 +811,16 @@ guestfs_int_cmd_pipe_run (struct command *cmd, const char *mode) close (fd[0]); dup2 (fd[1], 1); close (fd[1]); - } - else { + } else { close (fd[1]); dup2 (fd[0], 0); close (fd[0]); } run_child (cmd); - /*NOTREACHED*/ +/*NOTREACHED*/ - error: +error: if (errfd >= 0) close (errfd); if (fd[0] >= 0) @@ -853,13 +853,14 @@ guestfs_int_cmd_get_pipe_errors (struct command *cmd) assert (cmd->error_file != NULL); - if (guestfs_int_read_whole_file (cmd->g, cmd->error_file, &ret, NULL) == -1) + if (guestfs_int_read_whole_file (cmd->g, cmd->error_file, &ret, NULL) == + -1) return NULL; /* If the file ends with \n characters, trim them. */ len = strlen (ret); - while (len > 0 && ret[len-1] == '\n') { - ret[len-1] = '\0'; + while (len > 0 && ret[len - 1] == '\n') { + ret[len - 1] = '\0'; len--; } @@ -930,15 +931,13 @@ process_line_buffer (struct command *cmd, int closed) while (cmd->outbuf.len > 0) { /* Length of the next line. */ p = strchr (cmd->outbuf.buffer, '\n'); - if (p != NULL) { /* Got a whole line. */ + if (p != NULL) { /* Got a whole line. */ len = p - cmd->outbuf.buffer; newlen = cmd->outbuf.len - len - 1; - } - else if (closed) { /* Consume rest of input even if no \n found. */ + } else if (closed) { /* Consume rest of input even if no \n found. */ len = cmd->outbuf.len; newlen = 0; - } - else /* Need to wait for more input. */ + } else /* Need to wait for more input. */ break; /* Call the callback with the next line. */ @@ -995,13 +994,14 @@ add_whole_buffer (struct command *cmd, const char *buf, size_t len) /* Append the new content to the end of the current buffer. */ oldlen = cmd->outbuf.len; cmd->outbuf.len += len; - cmd->outbuf.buffer = safe_realloc (g, cmd->outbuf.buffer, cmd->outbuf.len); + cmd->outbuf.buffer = + safe_realloc (g, cmd->outbuf.buffer, cmd->outbuf.len); memcpy (cmd->outbuf.buffer + oldlen, buf, len); } static void close_whole_buffer (struct command *cmd) { - cmd->stdout_callback (cmd->g, cmd->stdout_data, - cmd->outbuf.buffer, cmd->outbuf.len); + cmd->stdout_callback (cmd->g, cmd->stdout_data, cmd->outbuf.buffer, + cmd->outbuf.len); } diff --git a/src/conn-socket.c b/src/conn-socket.c index 633946c..57e6358 100644 --- a/src/conn-socket.c +++ b/src/conn-socket.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ /* Connection module for regular POSIX sockets. */ @@ -28,7 +29,7 @@ #include <errno.h> #include <poll.h> #include <sys/stat.h> -#include <sys/socket.h> /* accept4 */ +#include <sys/socket.h> /* accept4 */ #include <sys/types.h> #include <assert.h> #include <libintl.h> @@ -38,11 +39,12 @@ #include "guestfs.h" #include "guestfs-internal.h" -struct connection_socket { +struct connection_socket +{ const struct connection_ops *ops; - int console_sock; /* Appliance console (for debug info). */ - int daemon_sock; /* Daemon communications socket. */ + int console_sock; /* Appliance console (for debug info). */ + int daemon_sock; /* Daemon communications socket. */ /* Socket for accepting a connection from the daemon. Only used * before and during accept_connection. @@ -50,12 +52,13 @@ struct connection_socket { int daemon_accept_sock; }; -static int handle_log_message (guestfs_h *g, struct connection_socket *conn); +static int handle_log_message (guestfs_h *g, + struct connection_socket *conn); static int accept_connection (guestfs_h *g, struct connection *connv) { - struct connection_socket *conn = (struct connection_socket *) connv; + struct connection_socket *conn = (struct connection_socket *)connv; int sock = -1; time_t start_t, now_t; int timeout_ms; @@ -94,7 +97,7 @@ accept_connection (guestfs_h *g, struct connection *connv) return -1; } - if (r == 0) { /* timeout reached */ + if (r == 0) { /* timeout reached */ guestfs_int_launch_timeout (g); return -1; } @@ -138,7 +141,7 @@ static ssize_t read_data (guestfs_h *g, struct connection *connv, void *bufv, size_t len) { char *buf = bufv; - struct connection_socket *conn = (struct connection_socket *) connv; + struct connection_socket *conn = (struct connection_socket *)connv; size_t original_len = len; if (conn->daemon_sock == -1) { @@ -212,7 +215,7 @@ read_data (guestfs_h *g, struct connection *connv, void *bufv, size_t len) static int can_read_data (guestfs_h *g, struct connection *connv) { - struct connection_socket *conn = (struct connection_socket *) connv; + struct connection_socket *conn = (struct connection_socket *)connv; struct pollfd fd; int r; @@ -225,7 +228,7 @@ can_read_data (guestfs_h *g, struct connection *connv) fd.events = POLLIN; fd.revents = 0; - again: +again: r = poll (&fd, 1, 0); if (r == -1) { if (errno == EINTR || errno == EAGAIN) @@ -238,11 +241,11 @@ can_read_data (guestfs_h *g, struct connection *connv) } static ssize_t -write_data (guestfs_h *g, struct connection *connv, - const void *bufv, size_t len) +write_data (guestfs_h *g, struct connection *connv, const void *bufv, + size_t len) { const char *buf = bufv; - struct connection_socket *conn = (struct connection_socket *) connv; + struct connection_socket *conn = (struct connection_socket *)connv; size_t original_len = len; if (conn->daemon_sock == -1) { @@ -311,8 +314,7 @@ write_data (guestfs_h *g, struct connection *connv, * -1 = error */ static int -handle_log_message (guestfs_h *g, - struct connection_socket *conn) +handle_log_message (guestfs_h *g, struct connection_socket *conn) { CLEANUP_FREE char *buf = safe_malloc (g, BUFSIZ); ssize_t n; @@ -361,8 +363,8 @@ handle_log_message (guestfs_h *g, * We can't even be sure that console_sock is a socket or that * it's writable. */ - ignore_value (write (conn->console_sock, dsr_reply, - sizeof dsr_reply - 1)); + ignore_value ( + write (conn->console_sock, dsr_reply, sizeof dsr_reply - 1)); /* Additionally, because of a bug in sgabios, it will still pause * unless you write at least 14 bytes, so we have to pad the * reply. We can't pad with NULs since sgabios's input routine @@ -382,7 +384,7 @@ handle_log_message (guestfs_h *g, static void free_conn_socket (guestfs_h *g, struct connection *connv) { - struct connection_socket *conn = (struct connection_socket *) connv; + struct connection_socket *conn = (struct connection_socket *)connv; if (conn->console_sock >= 0) close (conn->console_sock); @@ -412,9 +414,8 @@ static struct connection_ops ops = { * free_connection. */ struct connection * -guestfs_int_new_conn_socket_listening (guestfs_h *g, - int daemon_accept_sock, - int console_sock) +guestfs_int_new_conn_socket_listening (guestfs_h *g, int daemon_accept_sock, + int console_sock) { struct connection_socket *conn; @@ -442,7 +443,7 @@ guestfs_int_new_conn_socket_listening (guestfs_h *g, conn->daemon_sock = -1; conn->daemon_accept_sock = daemon_accept_sock; - return (struct connection *) conn; + return (struct connection *)conn; } /* Create a new socket connection, connected. @@ -451,9 +452,8 @@ guestfs_int_new_conn_socket_listening (guestfs_h *g, * and promises not to call accept_connection. */ struct connection * -guestfs_int_new_conn_socket_connected (guestfs_h *g, - int daemon_sock, - int console_sock) +guestfs_int_new_conn_socket_connected (guestfs_h *g, int daemon_sock, + int console_sock) { struct connection_socket *conn; @@ -481,5 +481,5 @@ guestfs_int_new_conn_socket_connected (guestfs_h *g, conn->daemon_sock = daemon_sock; conn->daemon_accept_sock = -1; - return (struct connection *) conn; + return (struct connection *)conn; } diff --git a/src/copy-in-out.c b/src/copy-in-out.c index 50831be..8a08be2 100644 --- a/src/copy-in-out.c +++ b/src/copy-in-out.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -32,11 +33,13 @@ #include "guestfs-internal.h" #include "guestfs-internal-actions.h" -static int split_path (guestfs_h *g, char *buf, size_t buf_size, const char *path, const char **dirname, const char **basename); +static int split_path (guestfs_h *g, char *buf, size_t buf_size, + const char *path, const char **dirname, + const char **basename); int -guestfs_impl_copy_in (guestfs_h *g, - const char *localpath, const char *remotedir) +guestfs_impl_copy_in (guestfs_h *g, const char *localpath, + const char *remotedir) { CLEANUP_CMD_CLOSE struct command *cmd = guestfs_int_new_command (g); int fd; @@ -48,7 +51,8 @@ guestfs_impl_copy_in (guestfs_h *g, struct stat statbuf; if (stat (localpath, &statbuf) == -1) { - error (g, _("source '%s' does not exist (or cannot be read)"), localpath); + error (g, _("source '%s' does not exist (or cannot be read)"), + localpath); return -1; } @@ -102,7 +106,8 @@ guestfs_impl_copy_in (guestfs_h *g, return 0; } -struct copy_out_child_data { +struct copy_out_child_data +{ const char *localdir; const char *basename; }; @@ -110,7 +115,7 @@ struct copy_out_child_data { static int child_setup (guestfs_h *g, void *data) { - struct copy_out_child_data d = *(struct copy_out_child_data *) data; + struct copy_out_child_data d = *(struct copy_out_child_data *)data; if (chdir (d.localdir) == -1) { perror (d.localdir); @@ -131,14 +136,13 @@ child_setup (guestfs_h *g, void *data) } int -guestfs_impl_copy_out (guestfs_h *g, - const char *remotepath, const char *localdir) +guestfs_impl_copy_out (guestfs_h *g, const char *remotepath, + const char *localdir) { struct stat statbuf; int r; - if (stat (localdir, &statbuf) == -1 || - ! (S_ISDIR (statbuf.st_mode))) { + if (stat (localdir, &statbuf) == -1 || !(S_ISDIR (statbuf.st_mode))) { error (g, _("target '%s' is not a directory"), localdir); return -1; } @@ -150,7 +154,7 @@ guestfs_impl_copy_out (guestfs_h *g, if (r == -1) return -1; - if (r == 1) { /* is file */ + if (r == 1) { /* is file */ CLEANUP_FREE char *filename = NULL; size_t buf_len = strlen (remotepath) + 1; CLEANUP_FREE char *buf = safe_malloc (g, buf_len); @@ -165,7 +169,7 @@ guestfs_impl_copy_out (guestfs_h *g, } if (guestfs_download (g, remotepath, filename) == -1) return -1; - } else { /* not a regular file */ + } else { /* not a regular file */ CLEANUP_CMD_CLOSE struct command *cmd = guestfs_int_new_command (g); struct copy_out_child_data data; char fdbuf[64]; @@ -237,34 +241,41 @@ guestfs_impl_copy_out (guestfs_h *g, * (eg. path == "/") then this can return dirname as NULL. */ static int -split_path (guestfs_h *g, char *buf, size_t buf_size, - const char *path, const char **dirname, const char **basename) +split_path (guestfs_h *g, char *buf, size_t buf_size, const char *path, + const char **dirname, const char **basename) { size_t len = strlen (path); if (len == 0 || len > buf_size - 1) { - error (g, _("error: argument is zero length or longer than maximum permitted")); + error (g, _("error: argument is zero length or longer than maximum " + "permitted")); return -1; } strcpy (buf, path); - if (len >= 2 && buf[len-1] == '/') { - buf[len-1] = '\0'; + if (len >= 2 && buf[len - 1] == '/') { + buf[len - 1] = '\0'; len--; } char *p = strrchr (buf, '/'); - if (p && p > buf) { /* "foo/bar" */ + if (p && p > buf) { /* "foo/bar" */ *p = '\0'; p++; - if (dirname) *dirname = buf; - if (basename) *basename = p; - } else if (p && p == buf) { /* "/foo" */ - if (dirname) *dirname = "/"; - if (basename) *basename = buf+1; + if (dirname) + *dirname = buf; + if (basename) + *basename = p; + } else if (p && p == buf) { /* "/foo" */ + if (dirname) + *dirname = "/"; + if (basename) + *basename = buf + 1; } else { - if (dirname) *dirname = NULL; - if (basename) *basename = buf; + if (dirname) + *dirname = NULL; + if (basename) + *basename = buf; } return 0; diff --git a/src/create.c b/src/create.c index 355e814..929a9f5 100644 --- a/src/create.c +++ b/src/create.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include <config.h> @@ -40,19 +41,25 @@ #include "guestfs-internal.h" #include "guestfs-internal-actions.h" -static int disk_create_raw (guestfs_h *g, const char *filename, int64_t size, const struct guestfs_disk_create_argv *optargs); -static int disk_create_qcow2 (guestfs_h *g, const char *filename, int64_t size, const char *backingfile, const struct guestfs_disk_create_argv *optargs); +static int disk_create_raw (guestfs_h *g, const char *filename, + int64_t size, + const struct guestfs_disk_create_argv *optargs); +static int +disk_create_qcow2 (guestfs_h *g, const char *filename, int64_t size, + const char *backingfile, + const struct guestfs_disk_create_argv *optargs); static char *qemu_escape_param (guestfs_h *g, const char *param); int guestfs_impl_disk_create (guestfs_h *g, const char *filename, - const char *format, int64_t size, - const struct guestfs_disk_create_argv *optargs) + const char *format, int64_t size, + const struct guestfs_disk_create_argv *optargs) { const char *backingfile; - backingfile = optargs->bitmask & GUESTFS_DISK_CREATE_BACKINGFILE_BITMASK ? - optargs->backingfile : NULL; + backingfile = optargs->bitmask & GUESTFS_DISK_CREATE_BACKINGFILE_BITMASK + ? optargs->backingfile + : NULL; /* Ensure size is valid. */ if (backingfile) { @@ -78,12 +85,10 @@ guestfs_impl_disk_create (guestfs_h *g, const char *filename, } if (disk_create_raw (g, filename, size, optargs) == -1) return -1; - } - else if (STREQ (format, "qcow2")) { + } else if (STREQ (format, "qcow2")) { if (disk_create_qcow2 (g, filename, size, backingfile, optargs) == -1) return -1; - } - else { + } else { /* Be conservative about what formats we support, since we don't * want to make unlimited promises through the API. We can always * add more later. @@ -100,13 +105,13 @@ disk_create_raw_block (guestfs_h *g, const char *filename) { int fd; - fd = open (filename, O_WRONLY|O_NOCTTY|O_CLOEXEC, 0666); + fd = open (filename, O_WRONLY | O_NOCTTY | O_CLOEXEC, 0666); if (fd == -1) { perrorf (g, _("cannot open block device: %s"), filename); return -1; } - /* Just discard blocks, if possible. However don't try too hard. */ +/* Just discard blocks, if possible. However don't try too hard. */ #if defined(BLKGETSIZE64) && defined(BLKDISCARD) uint64_t size; uint64_t range[2]; @@ -171,21 +176,21 @@ disk_create_raw (guestfs_h *g, const char *filename, int64_t size, return disk_create_raw_block (g, filename); } - fd = open (filename, O_WRONLY|O_CREAT|O_NOCTTY|O_TRUNC|O_CLOEXEC, 0666); + fd = open (filename, O_WRONLY | O_CREAT | O_NOCTTY | O_TRUNC | O_CLOEXEC, + 0666); if (fd == -1) { perrorf (g, _("cannot create raw file: %s"), filename); return -1; } - if (!allocated) { /* Sparse file. */ + if (!allocated) { /* Sparse file. */ if (ftruncate (fd, size) == -1) { perrorf (g, _("%s: truncate"), filename); close (fd); unlink (filename); return -1; } - } - else { /* Allocated file. */ + } else { /* Allocated file. */ #ifdef HAVE_POSIX_FALLOCATE int err; @@ -198,7 +203,8 @@ disk_create_raw (guestfs_h *g, const char *filename, int64_t size, return -1; } #else - /* Slow emulation of posix_fallocate on platforms which don't have it. */ + /* Slow emulation of posix_fallocate on platforms which don't have it. + */ char buffer[BUFSIZ]; size_t remaining = size; size_t n; @@ -229,7 +235,8 @@ disk_create_raw (guestfs_h *g, const char *filename, int64_t size, return 0; } -/* http://graphics.stanford.edu/~seander/bithacks.html#DetermineIfPowerOf2 */ +/* http://graphics.stanford.edu/~seander/bithacks.html#DetermineIfPowerOf2 + */ static int is_power_of_2 (unsigned v) { @@ -265,8 +272,7 @@ disk_create_qcow2 (guestfs_h *g, const char *orig_filename, int64_t size, /* Conservative whitelist. This can be extended with other * valid formats as required. */ - if (STRNEQ (backingformat, "raw") && - STRNEQ (backingformat, "qcow2") && + if (STRNEQ (backingformat, "raw") && STRNEQ (backingformat, "qcow2") && STRNEQ (backingformat, "vmdk")) { error (g, _("invalid value for backingformat parameter '%s'"), backingformat); @@ -280,7 +286,9 @@ disk_create_qcow2 (guestfs_h *g, const char *orig_filename, int64_t size, else if (STREQ (optargs->preallocation, "metadata")) preallocation = "metadata"; else if (STREQ (optargs->preallocation, "full")) - /* Ugh: https://lists.gnu.org/archive/html/qemu-devel/2014-08/msg03863.html */ + /* Ugh: + * https://lists.gnu.org/archive/html/qemu-devel/2014-08/msg03863.html + */ preallocation = "falloc"; else { error (g, _("invalid value for preallocation parameter '%s'"), @@ -298,7 +306,7 @@ disk_create_qcow2 (guestfs_h *g, const char *orig_filename, int64_t size, if (optargs->bitmask & GUESTFS_DISK_CREATE_CLUSTERSIZE_BITMASK) { clustersize = optargs->clustersize; if (clustersize < 512 || clustersize > 2097152 || - !is_power_of_2 ((unsigned) clustersize)) { + !is_power_of_2 ((unsigned)clustersize)) { error (g, _("invalid value for clustersize parameter '%d'"), clustersize); return -1; @@ -319,7 +327,8 @@ disk_create_qcow2 (guestfs_h *g, const char *orig_filename, int64_t size, if (backingformat) guestfs_int_add_sprintf (g, &optionsv, "backing_fmt=%s", backingformat); if (preallocation) - guestfs_int_add_sprintf (g, &optionsv, "preallocation=%s", preallocation); + guestfs_int_add_sprintf (g, &optionsv, "preallocation=%s", + preallocation); if (compat) guestfs_int_add_sprintf (g, &optionsv, "compat=%s", compat); if (clustersize >= 0) @@ -327,7 +336,8 @@ disk_create_qcow2 (guestfs_h *g, const char *orig_filename, int64_t size, guestfs_int_end_stringsbuf (g, &optionsv); if (optionsv.size > 1) { - CLEANUP_FREE char *options = guestfs_int_join_strings (",", optionsv.argv); + CLEANUP_FREE char *options = + guestfs_int_join_strings (",", optionsv.argv); guestfs_int_cmd_add_arg (cmd, "-o"); guestfs_int_cmd_add_arg (cmd, options); } @@ -353,7 +363,7 @@ qemu_escape_param (guestfs_h *g, const char *param) size_t i, len = strlen (param); char *p, *ret; - ret = p = safe_malloc (g, len*2 + 1); /* max length of escaped name*/ + ret = p = safe_malloc (g, len * 2 + 1); /* max length of escaped name*/ for (i = 0; i < len; ++i) { *p++ = param[i]; if (param[i] == ',') diff --git a/src/dbdump.c b/src/dbdump.c index 7c17ce6..f203dd6 100644 --- a/src/dbdump.c +++ b/src/dbdump.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include <config.h> @@ -33,16 +34,23 @@ #if defined(DB_DUMP) -static void read_db_dump_line (guestfs_h *g, void *datav, const char *line, size_t len); -static unsigned char *convert_hex_to_binary (guestfs_h *g, const char *hex, size_t hexlen, size_t *binlen_rtn); +static void read_db_dump_line (guestfs_h *g, void *datav, const char *line, + size_t len); +static unsigned char *convert_hex_to_binary (guestfs_h *g, const char *hex, + size_t hexlen, + size_t *binlen_rtn); -struct cb_data { +struct cb_data +{ guestfs_int_db_dump_callback callback; void *opaque; - enum { reading_header, - reading_key, reading_value, - reading_finished, - reading_failed } state; + enum { + reading_header, + reading_key, + reading_value, + reading_finished, + reading_failed + } state; unsigned char *key; size_t keylen; }; @@ -52,9 +60,8 @@ struct cb_data { * database format. */ int -guestfs_int_read_db_dump (guestfs_h *g, - const char *dumpfile, void *opaque, - guestfs_int_db_dump_callback callback) +guestfs_int_read_db_dump (guestfs_h *g, const char *dumpfile, void *opaque, + guestfs_int_db_dump_callback callback) { struct cb_data data; CLEANUP_CMD_CLOSE struct command *cmd = guestfs_int_new_command (g); @@ -103,11 +110,11 @@ read_db_dump_line (guestfs_h *g, void *datav, const char *line, size_t len) data->state = reading_key; return; - /* Read the key, value pairs using a state machine. They are - * prefixed with a space and printed as hex strings, so convert - * those strings to binary. Pass the strings up to the callback - * function. - */ + /* Read the key, value pairs using a state machine. They are + * prefixed with a space and printed as hex strings, so convert + * those strings to binary. Pass the strings up to the callback + * function. + */ case reading_key: if (STRPREFIX (line, "DATA=END")) { data->state = reading_finished; @@ -115,12 +122,13 @@ read_db_dump_line (guestfs_h *g, void *datav, const char *line, size_t len) } if (len < 1 || line[0] != ' ') { - debug (g, _("unexpected line from db_dump command, no space prefix")); + debug (g, + _("unexpected line from db_dump command, no space prefix")); data->state = reading_failed; return; } - data->key = convert_hex_to_binary (g, &line[1], len-1, &data->keylen); + data->key = convert_hex_to_binary (g, &line[1], len - 1, &data->keylen); if (data->key == NULL) { data->state = reading_failed; return; @@ -134,19 +142,20 @@ read_db_dump_line (guestfs_h *g, void *datav, const char *line, size_t len) size_t valuelen; if (len < 1 || line[0] != ' ') { - debug (g, _("unexpected line from db_dump command, no space prefix")); + debug (g, + _("unexpected line from db_dump command, no space prefix")); data->state = reading_failed; return; } - value = convert_hex_to_binary (g, &line[1], len-1, &valuelen); + value = convert_hex_to_binary (g, &line[1], len - 1, &valuelen); if (value == NULL) { data->state = reading_failed; return; } - if (data->callback (g, data->key, data->keylen, - value, valuelen, data->opaque) == -1) { + if (data->callback (g, data->key, data->keylen, value, valuelen, + data->opaque) == -1) { data->state = reading_failed; return; } @@ -166,13 +175,13 @@ convert_hex_octet (const char *h) int r; switch (h[0]) { - case 'a'...'f': + case 'a' ... 'f': r = (h[0] - 'a' + 10) << 4; break; - case 'A'...'F': + case 'A' ... 'F': r = (h[0] - 'A' + 10) << 4; break; - case '0'...'9': + case '0' ... '9': r = (h[0] - '0') << 4; break; default: @@ -180,13 +189,13 @@ convert_hex_octet (const char *h) } switch (h[1]) { - case 'a'...'f': + case 'a' ... 'f': r |= h[1] - 'a' + 10; break; - case 'A'...'F': + case 'A' ... 'F': r |= h[1] - 'A' + 10; break; - case '0'...'9': + case '0' ... '9': r |= h[1] - '0'; break; default: @@ -205,18 +214,19 @@ convert_hex_to_binary (guestfs_h *g, const char *hex, size_t hexlen, size_t i, o; int b; - if (hexlen > 0 && hex[hexlen-1] == '\n') + if (hexlen > 0 && hex[hexlen - 1] == '\n') hexlen--; binlen = hexlen / 2; bin = safe_malloc (g, binlen); - for (i = o = 0; i+1 < hexlen && o < binlen; i += 2, ++o) { + for (i = o = 0; i + 1 < hexlen && o < binlen; i += 2, ++o) { b = convert_hex_octet (&hex[i]); if (b >= 0) bin[o] = b; else { - error (g, _("unexpected non-hex digits in output of db_dump command")); + error (g, + _("unexpected non-hex digits in output of db_dump command")); free (bin); return NULL; } diff --git a/src/drives.c b/src/drives.c index 385cf04..1e06de3 100644 --- a/src/drives.c +++ b/src/drives.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ /* Drives added are stored in an array in the handle. Code here @@ -42,11 +43,12 @@ /* Helper struct to hold all the data needed when creating a new * drive. */ -struct drive_create_data { +struct drive_create_data +{ enum drive_protocol protocol; struct drive_server *servers; size_t nr_servers; - const char *exportname; /* File name or path to the resource. */ + const char *exportname; /* File name or path to the resource. */ const char *username; const char *secret; bool readonly; @@ -94,8 +96,7 @@ create_overlay (guestfs_h *g, struct drive *drv) /* Create and free the 'drive' struct. */ static struct drive * -create_drive_file (guestfs_h *g, - const struct drive_create_data *data) +create_drive_file (guestfs_h *g, const struct drive_create_data *data) { struct drive *drv = safe_calloc (g, 1, sizeof *drv); @@ -106,8 +107,10 @@ create_drive_file (guestfs_h *g, drv->readonly = data->readonly; drv->iface = data->iface ? safe_strdup (g, data->iface) : NULL; drv->name = data->name ? safe_strdup (g, data->name) : NULL; - drv->disk_label = data->disk_label ? safe_strdup (g, data->disk_label) : NULL; - drv->cachemode = data->cachemode ? safe_strdup (g, data->cachemode) : NULL; + drv->disk_label = + data->disk_label ? safe_strdup (g, data->disk_label) : NULL; + drv->cachemode = + data->cachemode ? safe_strdup (g, data->cachemode) : NULL; drv->discard = data->discard; drv->copyonread = data->copyonread; @@ -116,7 +119,8 @@ create_drive_file (guestfs_h *g, /* Don't double-free the servers in free_drive_struct, since * they are owned by the caller along this error path. */ - drv->src.servers = NULL; drv->src.nr_servers = 0; + drv->src.servers = NULL; + drv->src.nr_servers = 0; free_drive_struct (drv); return NULL; } @@ -126,8 +130,7 @@ create_drive_file (guestfs_h *g, } static struct drive * -create_drive_non_file (guestfs_h *g, - const struct drive_create_data *data) +create_drive_non_file (guestfs_h *g, const struct drive_create_data *data) { struct drive *drv = safe_calloc (g, 1, sizeof *drv); @@ -135,15 +138,18 @@ create_drive_non_file (guestfs_h *g, drv->src.servers = data->servers; drv->src.nr_servers = data->nr_servers; drv->src.u.exportname = safe_strdup (g, data->exportname); - drv->src.username = data->username ? safe_strdup (g, data->username) : NULL; + drv->src.username = + data->username ? safe_strdup (g, data->username) : NULL; drv->src.secret = data->secret ? safe_strdup (g, data->secret) : NULL; drv->src.format = data->format ? safe_strdup (g, data->format) : NULL; drv->readonly = data->readonly; drv->iface = data->iface ? safe_strdup (g, data->iface) : NULL; drv->name = data->name ? safe_strdup (g, data->name) : NULL; - drv->disk_label = data->disk_label ? safe_strdup (g, data->disk_label) : NULL; - drv->cachemode = data->cachemode ? safe_strdup (g, data->cachemode) : NULL; + drv->disk_label = + data->disk_label ? safe_strdup (g, data->disk_label) : NULL; + drv->cachemode = + data->cachemode ? safe_strdup (g, data->cachemode) : NULL; drv->discard = data->discard; drv->copyonread = data->copyonread; @@ -152,7 +158,8 @@ create_drive_non_file (guestfs_h *g, /* Don't double-free the servers in free_drive_struct, since * they are owned by the caller along this error path. */ - drv->src.servers = NULL; drv->src.nr_servers = 0; + drv->src.servers = NULL; + drv->src.nr_servers = 0; free_drive_struct (drv); return NULL; } @@ -162,8 +169,7 @@ create_drive_non_file (guestfs_h *g, } static struct drive * -create_drive_curl (guestfs_h *g, - const struct drive_create_data *data) +create_drive_curl (guestfs_h *g, const struct drive_create_data *data) { if (data->nr_servers != 1) { error (g, _("curl: you must specify exactly one server")); @@ -190,15 +196,16 @@ create_drive_curl (guestfs_h *g, } static struct drive * -create_drive_gluster (guestfs_h *g, - const struct drive_create_data *data) +create_drive_gluster (guestfs_h *g, const struct drive_create_data *data) { if (data->username != NULL) { - error (g, _("gluster: you cannot specify a username with this protocol")); + error (g, + _("gluster: you cannot specify a username with this protocol")); return NULL; } if (data->secret != NULL) { - error (g, _("gluster: you cannot specify a secret with this protocol")); + error (g, + _("gluster: you cannot specify a secret with this protocol")); return NULL; } @@ -208,7 +215,9 @@ create_drive_gluster (guestfs_h *g, } if (STREQ (data->exportname, "")) { - error (g, _("gluster: volume name parameter should not be an empty string")); + error ( + g, + _("gluster: volume name parameter should not be an empty string")); return NULL; } @@ -233,8 +242,7 @@ nbd_port (void) } static struct drive * -create_drive_nbd (guestfs_h *g, - const struct drive_create_data *data) +create_drive_nbd (guestfs_h *g, const struct drive_create_data *data) { if (data->username != NULL) { error (g, _("nbd: you cannot specify a username with this protocol")); @@ -257,8 +265,7 @@ create_drive_nbd (guestfs_h *g, } static struct drive * -create_drive_rbd (guestfs_h *g, - const struct drive_create_data *data) +create_drive_rbd (guestfs_h *g, const struct drive_create_data *data) { size_t i; @@ -275,7 +282,8 @@ create_drive_rbd (guestfs_h *g, } if (STREQ (data->exportname, "")) { - error (g, _("rbd: image name parameter should not be an empty string")); + error (g, + _("rbd: image name parameter should not be an empty string")); return NULL; } @@ -288,17 +296,19 @@ create_drive_rbd (guestfs_h *g, } static struct drive * -create_drive_sheepdog (guestfs_h *g, - const struct drive_create_data *data) +create_drive_sheepdog (guestfs_h *g, const struct drive_create_data *data) { size_t i; if (data->username != NULL) { - error (g, _("sheepdog: you cannot specify a username with this protocol")); + error ( + g, + _("sheepdog: you cannot specify a username with this protocol")); return NULL; } if (data->secret != NULL) { - error (g, _("sheepdog: you cannot specify a secret with this protocol")); + error (g, + _("sheepdog: you cannot specify a secret with this protocol")); return NULL; } @@ -315,7 +325,8 @@ create_drive_sheepdog (guestfs_h *g, } if (STREQ (data->exportname, "")) { - error (g, _("sheepdog: volume parameter should not be an empty string")); + error (g, + _("sheepdog: volume parameter should not be an empty string")); return NULL; } @@ -328,8 +339,7 @@ create_drive_sheepdog (guestfs_h *g, } static struct drive * -create_drive_ssh (guestfs_h *g, - const struct drive_create_data *data) +create_drive_ssh (guestfs_h *g, const struct drive_create_data *data) { if (data->nr_servers != 1) { error (g, _("ssh: you must specify exactly one server")); @@ -361,8 +371,7 @@ create_drive_ssh (guestfs_h *g, } static struct drive * -create_drive_iscsi (guestfs_h *g, - const struct drive_create_data *data) +create_drive_iscsi (guestfs_h *g, const struct drive_create_data *data) { if (data->nr_servers != 1) { error (g, _("iscsi: you must specify exactly one server")); @@ -397,8 +406,7 @@ create_drive_iscsi (guestfs_h *g, * a null drive. */ static struct drive * -create_drive_dev_null (guestfs_h *g, - struct drive_create_data *data) +create_drive_dev_null (guestfs_h *g, struct drive_create_data *data) { CLEANUP_FREE char *tmpfile = NULL; @@ -430,8 +438,11 @@ create_drive_dev_null (guestfs_h *g, static struct drive * create_drive_dummy (guestfs_h *g) { - /* A special drive struct that is used as a dummy slot for the appliance. */ - struct drive_create_data data = { 0, }; + /* A special drive struct that is used as a dummy slot for the appliance. + */ + struct drive_create_data data = { + 0, + }; data.exportname = ""; return create_drive_file (g, &data); } @@ -465,18 +476,30 @@ const char * guestfs_int_drive_protocol_to_string (enum drive_protocol protocol) { switch (protocol) { - case drive_protocol_file: return "file"; - case drive_protocol_ftp: return "ftp"; - case drive_protocol_ftps: return "ftps"; - case drive_protocol_gluster: return "gluster"; - case drive_protocol_http: return "http"; - case drive_protocol_https: return "https"; - case drive_protocol_iscsi: return "iscsi"; - case drive_protocol_nbd: return "nbd"; - case drive_protocol_rbd: return "rbd"; - case drive_protocol_sheepdog: return "sheepdog"; - case drive_protocol_ssh: return "ssh"; - case drive_protocol_tftp: return "tftp"; + case drive_protocol_file: + return "file"; + case drive_protocol_ftp: + return "ftp"; + case drive_protocol_ftps: + return "ftps"; + case drive_protocol_gluster: + return "gluster"; + case drive_protocol_http: + return "http"; + case drive_protocol_https: + return "https"; + case drive_protocol_iscsi: + return "iscsi"; + case drive_protocol_nbd: + return "nbd"; + case drive_protocol_rbd: + return "rbd"; + case drive_protocol_sheepdog: + return "sheepdog"; + case drive_protocol_ssh: + return "ssh"; + case drive_protocol_tftp: + return "tftp"; } abort (); } @@ -487,24 +510,19 @@ guestfs_int_drive_protocol_to_string (enum drive_protocol protocol) static char * drive_to_string (guestfs_h *g, const struct drive *drv) { - return safe_asprintf - (g, "%s%s%s%s protocol=%s%s%s%s%s%s%s%s%s%s%s", - drv->src.u.path, - drv->readonly ? " readonly" : "", - drv->src.format ? " format=" : "", - drv->src.format ? : "", - guestfs_int_drive_protocol_to_string (drv->src.protocol), - drv->iface ? " iface=" : "", - drv->iface ? : "", - drv->name ? " name=" : "", - drv->name ? : "", - drv->disk_label ? " label=" : "", - drv->disk_label ? : "", - drv->cachemode ? " cache=" : "", - drv->cachemode ? : "", - drv->discard == discard_disable ? "" : - drv->discard == discard_enable ? " discard=enable" : " discard=besteffort", - drv->copyonread ? " copyonread" : ""); + return safe_asprintf ( + g, "%s%s%s%s protocol=%s%s%s%s%s%s%s%s%s%s%s", drv->src.u.path, + drv->readonly ? " readonly" : "", drv->src.format ? " format=" : "", + drv->src.format ?: "", + guestfs_int_drive_protocol_to_string (drv->src.protocol), + drv->iface ? " iface=" : "", drv->iface ?: "", + drv->name ? " name=" : "", drv->name ?: "", + drv->disk_label ? " label=" : "", drv->disk_label ?: "", + drv->cachemode ? " cache=" : "", drv->cachemode ?: "", + drv->discard == discard_disable ? "" : drv->discard == discard_enable + ? " discard=enable" + : " discard=besteffort", + drv->copyonread ? " copyonread" : ""); } /* Add struct drive to the g->drives vector at the given index. */ @@ -514,7 +532,7 @@ add_drive_to_handle_at (guestfs_h *g, struct drive *d, size_t drv_index) if (drv_index >= g->nr_drives) { g->drives = safe_realloc (g, g->drives, sizeof (struct drive *) * (drv_index + 1)); - while (g->nr_drives < drv_index+1) { + while (g->nr_drives < drv_index + 1) { g->drives[g->nr_drives] = NULL; g->nr_drives++; } @@ -549,9 +567,7 @@ guestfs_int_free_drives (guestfs_h *g) struct drive *drv; size_t i; - ITER_DRIVES (g, i, drv) { - free_drive_struct (drv); - } + ITER_DRIVES (g, i, drv) { free_drive_struct (drv); } free (g->drives); @@ -610,8 +626,8 @@ valid_hostname (const char *str) while (len > 0) { char c = *str++; len--; - if (!c_isalnum (c) && - c != '-' && c != '.' && c != ':' && c != '[' && c != ']') + if (!c_isalnum (c) && c != '-' && c != '.' && c != ':' && c != '[' && + c != ']') return 0; } return 1; @@ -627,7 +643,8 @@ valid_port (int port) } static int -parse_one_server (guestfs_h *g, const char *server, struct drive_server *ret) +parse_one_server (guestfs_h *g, const char *server, + struct drive_server *ret) { char *hostname; char *port_str; @@ -653,11 +670,11 @@ parse_one_server (guestfs_h *g, const char *server, struct drive_server *ret) return -1; } ret->transport = drive_transport_unix; - ret->u.socket = safe_strdup (g, server+5); + ret->u.socket = safe_strdup (g, server + 5); ret->port = 0; return 0; } - skip_unix: +skip_unix: if (match2 (g, server, re_hostname_port, &hostname, &port_str)) { if (sscanf (port_str, "%d", &port) != 1 || !valid_port (port)) { @@ -718,8 +735,9 @@ parse_servers (guestfs_h *g, char *const *strs, } int -guestfs_impl_add_drive_opts (guestfs_h *g, const char *filename, - const struct guestfs_add_drive_opts_argv *optargs) +guestfs_impl_add_drive_opts ( + guestfs_h *g, const char *filename, + const struct guestfs_add_drive_opts_argv *optargs) { struct drive_create_data data; const char *protocol; @@ -731,17 +749,23 @@ guestfs_impl_add_drive_opts (guestfs_h *g, const char *filename, data.exportname = filename; data.readonly = optargs->bitmask & GUESTFS_ADD_DRIVE_OPTS_READONLY_BITMASK - ? optargs->readonly : false; + ? optargs->readonly + : false; data.format = optargs->bitmask & GUESTFS_ADD_DRIVE_OPTS_FORMAT_BITMASK - ? optargs->format : NULL; + ? optargs->format + : NULL; data.iface = optargs->bitmask & GUESTFS_ADD_DRIVE_OPTS_IFACE_BITMASK - ? optargs->iface : NULL; + ? optargs->iface + : NULL; data.name = optargs->bitmask & GUESTFS_ADD_DRIVE_OPTS_NAME_BITMASK - ? optargs->name : NULL; + ? optargs->name + : NULL; data.disk_label = optargs->bitmask & GUESTFS_ADD_DRIVE_OPTS_LABEL_BITMASK - ? optargs->label : NULL; + ? optargs->label + : NULL; protocol = optargs->bitmask & GUESTFS_ADD_DRIVE_OPTS_PROTOCOL_BITMASK - ? optargs->protocol : "file"; + ? optargs->protocol + : "file"; if (optargs->bitmask & GUESTFS_ADD_DRIVE_OPTS_SERVER_BITMASK) { ssize_t r = parse_servers (g, optargs->server, &data.servers); if (r == -1) @@ -749,11 +773,15 @@ guestfs_impl_add_drive_opts (guestfs_h *g, const char *filename, data.nr_servers = r; } data.username = optargs->bitmask & GUESTFS_ADD_DRIVE_OPTS_USERNAME_BITMASK - ? optargs->username : NULL; + ? optargs->username + : NULL; data.secret = optargs->bitmask & GUESTFS_ADD_DRIVE_OPTS_SECRET_BITMASK - ? optargs->secret : NULL; - data.cachemode = optargs->bitmask & GUESTFS_ADD_DRIVE_OPTS_CACHEMODE_BITMASK - ? optargs->cachemode : NULL; + ? optargs->secret + : NULL; + data.cachemode = + optargs->bitmask & GUESTFS_ADD_DRIVE_OPTS_CACHEMODE_BITMASK + ? optargs->cachemode + : NULL; if (optargs->bitmask & GUESTFS_ADD_DRIVE_OPTS_DISCARD_BITMASK) { if (STREQ (optargs->discard, "disable")) @@ -763,17 +791,18 @@ guestfs_impl_add_drive_opts (guestfs_h *g, const char *filename, else if (STREQ (optargs->discard, "besteffort")) data.discard = discard_besteffort; else { - error (g, _("discard parameter must be 'disable', 'enable' or 'besteffort'")); + error (g, _("discard parameter must be 'disable', 'enable' or " + "'besteffort'")); free_drive_servers (data.servers, data.nr_servers); return -1; } - } - else + } else data.discard = discard_disable; data.copyonread = - optargs->bitmask & GUESTFS_ADD_DRIVE_OPTS_COPYONREAD_BITMASK - ? optargs->copyonread : false; + optargs->bitmask & GUESTFS_ADD_DRIVE_OPTS_COPYONREAD_BITMASK + ? optargs->copyonread + : false; if (data.readonly && data.discard == discard_enable) { error (g, _("discard support cannot be enabled on read-only drives")); @@ -783,24 +812,27 @@ guestfs_impl_add_drive_opts (guestfs_h *g, const char *filename, if (data.format && !valid_format_iface (data.format)) { error (g, _("%s parameter is empty or contains disallowed characters"), - "format"); + "format"); free_drive_servers (data.servers, data.nr_servers); return -1; } if (data.iface && !valid_format_iface (data.iface)) { error (g, _("%s parameter is empty or contains disallowed characters"), - "iface"); + "iface"); free_drive_servers (data.servers, data.nr_servers); return -1; } if (data.disk_label && !valid_disk_label (data.disk_label)) { - error (g, _("label parameter is empty, too long, or contains disallowed characters")); + error (g, _("label parameter is empty, too long, or contains " + "disallowed characters")); free_drive_servers (data.servers, data.nr_servers); return -1; } if (data.cachemode && - !(STREQ (data.cachemode, "writeback") || STREQ (data.cachemode, "unsafe"))) { - error (g, _("cachemode parameter must be 'writeback' (default) or 'unsafe'")); + !(STREQ (data.cachemode, "writeback") || + STREQ (data.cachemode, "unsafe"))) { + error (g, _("cachemode parameter must be 'writeback' (default) or " + "'unsafe'")); free_drive_servers (data.servers, data.nr_servers); return -1; } @@ -833,52 +865,40 @@ guestfs_impl_add_drive_opts (guestfs_h *g, const char *filename, drv = create_drive_file (g, &data); } - } - else if (STREQ (protocol, "ftp")) { + } else if (STREQ (protocol, "ftp")) { data.protocol = drive_protocol_ftp; drv = create_drive_curl (g, &data); - } - else if (STREQ (protocol, "ftps")) { + } else if (STREQ (protocol, "ftps")) { data.protocol = drive_protocol_ftps; drv = create_drive_curl (g, &data); - } - else if (STREQ (protocol, "gluster")) { + } else if (STREQ (protocol, "gluster")) { data.protocol = drive_protocol_gluster; drv = create_drive_gluster (g, &data); - } - else if (STREQ (protocol, "http")) { + } else if (STREQ (protocol, "http")) { data.protocol = drive_protocol_http; drv = create_drive_curl (g, &data); - } - else if (STREQ (protocol, "https")) { + } else if (STREQ (protocol, "https")) { data.protocol = drive_protocol_https; drv = create_drive_curl (g, &data); - } - else if (STREQ (protocol, "iscsi")) { + } else if (STREQ (protocol, "iscsi")) { data.protocol = drive_protocol_iscsi; drv = create_drive_iscsi (g, &data); - } - else if (STREQ (protocol, "nbd")) { + } else if (STREQ (protocol, "nbd")) { data.protocol = drive_protocol_nbd; drv = create_drive_nbd (g, &data); - } - else if (STREQ (protocol, "rbd")) { + } else if (STREQ (protocol, "rbd")) { data.protocol = drive_protocol_rbd; drv = create_drive_rbd (g, &data); - } - else if (STREQ (protocol, "sheepdog")) { + } else if (STREQ (protocol, "sheepdog")) { data.protocol = drive_protocol_sheepdog; drv = create_drive_sheepdog (g, &data); - } - else if (STREQ (protocol, "ssh")) { + } else if (STREQ (protocol, "ssh")) { data.protocol = drive_protocol_ssh; drv = create_drive_ssh (g, &data); - } - else if (STREQ (protocol, "tftp")) { + } else if (STREQ (protocol, "tftp")) { data.protocol = drive_protocol_tftp; drv = create_drive_curl (g, &data); - } - else { + } else { error (g, _("unknown protocol '%s'"), protocol); drv = NULL; /*FALLTHROUGH*/ } @@ -897,7 +917,8 @@ guestfs_impl_add_drive_opts (guestfs_h *g, const char *filename, /* ... else, hotplugging case. */ if (!g->backend_ops->hot_add_drive) { - error (g, _("the current backend does not support hotplugging drives")); + error (g, + _("the current backend does not support hotplugging drives")); free_drive_struct (drv); return -1; } @@ -915,8 +936,8 @@ guestfs_impl_add_drive_opts (guestfs_h *g, const char *filename, drv_index = i; /* Hot-add the drive. */ - if (g->backend_ops->hot_add_drive (g, g->backend_data, - drv, drv_index) == -1) { + if (g->backend_ops->hot_add_drive (g, g->backend_data, drv, drv_index) == + -1) { free_drive_struct (drv); return -1; } @@ -935,8 +956,7 @@ int guestfs_impl_add_drive_ro (guestfs_h *g, const char *filename) { const struct guestfs_add_drive_opts_argv optargs = { - .bitmask = GUESTFS_ADD_DRIVE_OPTS_READONLY_BITMASK, - .readonly = true, + .bitmask = GUESTFS_ADD_DRIVE_OPTS_READONLY_BITMASK, .readonly = true, }; return guestfs_add_drive_opts_argv (g, filename, &optargs); @@ -944,11 +964,10 @@ guestfs_impl_add_drive_ro (guestfs_h *g, const char *filename) int guestfs_impl_add_drive_with_if (guestfs_h *g, const char *filename, - const char *iface) + const char *iface) { const struct guestfs_add_drive_opts_argv optargs = { - .bitmask = GUESTFS_ADD_DRIVE_OPTS_IFACE_BITMASK, - .iface = iface, + .bitmask = GUESTFS_ADD_DRIVE_OPTS_IFACE_BITMASK, .iface = iface, }; return guestfs_add_drive_opts_argv (g, filename, &optargs); @@ -956,11 +975,11 @@ guestfs_impl_add_drive_with_if (guestfs_h *g, const char *filename, int guestfs_impl_add_drive_ro_with_if (guestfs_h *g, const char *filename, - const char *iface) + const char *iface) { const struct guestfs_add_drive_opts_argv optargs = { - .bitmask = GUESTFS_ADD_DRIVE_OPTS_IFACE_BITMASK - | GUESTFS_ADD_DRIVE_OPTS_READONLY_BITMASK, + .bitmask = GUESTFS_ADD_DRIVE_OPTS_IFACE_BITMASK | + GUESTFS_ADD_DRIVE_OPTS_READONLY_BITMASK, .iface = iface, .readonly = true, }; @@ -969,10 +988,11 @@ guestfs_impl_add_drive_ro_with_if (guestfs_h *g, const char *filename, } int -guestfs_impl_add_drive_scratch (guestfs_h *g, int64_t size, - const struct guestfs_add_drive_scratch_argv *optargs) +guestfs_impl_add_drive_scratch ( + guestfs_h *g, int64_t size, + const struct guestfs_add_drive_scratch_argv *optargs) { - struct guestfs_add_drive_opts_argv add_drive_optargs = { .bitmask = 0 }; + struct guestfs_add_drive_opts_argv add_drive_optargs = {.bitmask = 0 }; CLEANUP_FREE char *filename = NULL; /* Some parameters we always set. */ @@ -1026,26 +1046,27 @@ guestfs_impl_remove_drive (guestfs_h *g, const char *label) size_t i; struct drive *drv; - ITER_DRIVES (g, i, drv) { + ITER_DRIVES (g, i, drv) + { if (drv->disk_label && STREQ (label, drv->disk_label)) goto found; } error (g, _("disk with label '%s' not found"), label); return -1; - found: - if (g->state == CONFIG) { /* Not hotplugging. */ +found: + if (g->state == CONFIG) { /* Not hotplugging. */ free_drive_struct (drv); g->nr_drives--; for (; i < g->nr_drives; ++i) - g->drives[i] = g->drives[i+1]; + g->drives[i] = g->drives[i + 1]; return 0; - } - else { /* Hotplugging. */ + } else { /* Hotplugging. */ if (!g->backend_ops->hot_remove_drive) { - error (g, _("the current backend does not support hotplugging drives")); + error (g, + _("the current backend does not support hotplugging drives")); return -1; } @@ -1057,7 +1078,7 @@ guestfs_impl_remove_drive (guestfs_h *g, const char *label) free_drive_struct (drv); g->drives[i] = NULL; - if (i == g->nr_drives-1) + if (i == g->nr_drives - 1) g->nr_drives--; if (guestfs_internal_hot_remove_drive (g, label) == -1) @@ -1096,13 +1117,14 @@ guestfs_impl_debug_drives (guestfs_h *g) DECLARE_STRINGSBUF (ret); struct drive *drv; - ITER_DRIVES (g, i, drv) { + ITER_DRIVES (g, i, drv) + { guestfs_int_add_string_nodup (g, &ret, drive_to_string (g, drv)); } guestfs_int_end_stringsbuf (g, &ret); - return ret.argv; /* caller frees */ + return ret.argv; /* caller frees */ } static void diff --git a/src/errors.c b/src/errors.c index c85aed5..2a91d35 100644 --- a/src/errors.c +++ b/src/errors.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include <config.h> @@ -65,7 +66,8 @@ guestfs_int_warning (guestfs_h *g, const char *fs, ...) len = vasprintf (&msg, fs, args); va_end (args); - if (len < 0) return; + if (len < 0) + return; guestfs_int_call_callbacks_message (g, GUESTFS_EVENT_WARNING, msg, len); } @@ -89,7 +91,8 @@ guestfs_int_debug (guestfs_h *g, const char *fs, ...) len = vasprintf (&msg, fs, args); va_end (args); - if (len < 0) return; + if (len < 0) + return; guestfs_int_call_callbacks_message (g, GUESTFS_EVENT_LIBRARY, msg, len); } @@ -109,7 +112,8 @@ guestfs_int_trace (guestfs_h *g, const char *fs, ...) len = vasprintf (&msg, fs, args); va_end (args); - if (len < 0) return; + if (len < 0) + return; guestfs_int_call_callbacks_message (g, GUESTFS_EVENT_TRACE, msg, len); } @@ -125,13 +129,15 @@ guestfs_int_error_errno (guestfs_h *g, int errnum, const char *fs, ...) err = vasprintf (&msg, fs, args); va_end (args); - if (err < 0) return; + if (err < 0) + return; /* set_last_error first so that the callback can access the error * message and errno through the handle if it wishes. */ set_last_error (g, errnum, msg); - if (g->error_cb) g->error_cb (g, g->error_cb_data, msg); + if (g->error_cb) + g->error_cb (g, g->error_cb_data, msg); } void @@ -147,7 +153,8 @@ guestfs_int_perrorf (guestfs_h *g, const char *fs, ...) err = vasprintf (&msg, fs, args); va_end (args); - if (err < 0) return; + if (err < 0) + return; strerror_r (errnum, buf, sizeof buf); @@ -159,7 +166,8 @@ guestfs_int_perrorf (guestfs_h *g, const char *fs, ...) * message and errno through the handle if it wishes. */ set_last_error (g, errnum, msg); - if (g->error_cb) g->error_cb (g, g->error_cb_data, msg); + if (g->error_cb) + g->error_cb (g, g->error_cb_data, msg); } void @@ -175,8 +183,8 @@ guestfs_get_out_of_memory_handler (guestfs_h *g) } void -guestfs_set_error_handler (guestfs_h *g, - guestfs_error_handler_cb cb, void *data) +guestfs_set_error_handler (guestfs_h *g, guestfs_error_handler_cb cb, + void *data) { g->error_cb = cb; g->error_cb_data = data; @@ -185,13 +193,14 @@ guestfs_set_error_handler (guestfs_h *g, guestfs_error_handler_cb guestfs_get_error_handler (guestfs_h *g, void **data_rtn) { - if (data_rtn) *data_rtn = g->error_cb_data; + if (data_rtn) + *data_rtn = g->error_cb_data; return g->error_cb; } void -guestfs_push_error_handler (guestfs_h *g, - guestfs_error_handler_cb cb, void *data) +guestfs_push_error_handler (guestfs_h *g, guestfs_error_handler_cb cb, + void *data) { struct error_cb_stack *old_stack; @@ -215,8 +224,7 @@ guestfs_pop_error_handler (guestfs_h *g) g->error_cb_stack->error_cb_data); free (g->error_cb_stack); g->error_cb_stack = next_stack; - } - else + } else guestfs_int_init_error_handler (g); } @@ -253,14 +261,13 @@ guestfs_int_print_BufferIn (FILE *out, const char *buf, size_t buf_size) if (c_isprint (buf[i])) fputc (buf[i], out); else - fprintf (out, "\\x%02x", (unsigned char) buf[i]); + fprintf (out, "\\x%02x", (unsigned char)buf[i]); } fputc ('"', out); if (orig_size > buf_size) - fprintf (out, - _("<truncated, original size %zu bytes>"), orig_size); + fprintf (out, _("<truncated, original size %zu bytes>"), orig_size); } void @@ -271,12 +278,13 @@ guestfs_int_print_BufferOut (FILE *out, const char *buf, size_t buf_size) /* Some standard error messages for common failures. */ -#define DEBUG_ADVICE \ - "Do:\n" \ - " export LIBGUESTFS_DEBUG=1 LIBGUESTFS_TRACE=1\n" \ - "and run the command again. For further information, read:\n" \ - " http://libguestfs.org/guestfs-faq.1.html#debugging-libguestfs\n" \ - "You can also run 'libguestfs-test-tool' and post the *complete* output\n" \ +#define DEBUG_ADVICE \ + "Do:\n" \ + " export LIBGUESTFS_DEBUG=1 LIBGUESTFS_TRACE=1\n" \ + "and run the command again. For further information, read:\n" \ + " http://libguestfs.org/guestfs-faq.1.html#debugging-libguestfs\n" \ + "You can also run 'libguestfs-test-tool' and post the *complete* " \ + "output\n" \ "into a bug report or message to the libguestfs mailing list." /* Launch failed. Since this is the most common error seen by people @@ -290,10 +298,9 @@ guestfs_int_launch_failed_error (guestfs_h *g) if (g->verbose) error (g, _("guestfs_launch failed, see earlier error messages")); else - error (g, _( - "guestfs_launch failed.\n" - "This usually means the libguestfs appliance failed to start or crashed.\n" - DEBUG_ADVICE)); + error (g, _("guestfs_launch failed.\n" + "This usually means the libguestfs appliance failed to " + "start or crashed.\n" DEBUG_ADVICE)); } /* As above, but for crashes that occur after launch. */ @@ -301,12 +308,12 @@ void guestfs_int_unexpected_close_error (guestfs_h *g) { if (g->verbose) - error (g, _("appliance closed the connection unexpectedly, see earlier error messages")); + error (g, _("appliance closed the connection unexpectedly, see " + "earlier error messages")); else - error (g, _( - "appliance closed the connection unexpectedly.\n" - "This usually means the libguestfs appliance crashed.\n" - DEBUG_ADVICE)); + error (g, _("appliance closed the connection unexpectedly.\n" + "This usually means the libguestfs appliance " + "crashed.\n" DEBUG_ADVICE)); } /* As above, but for appliance kernel hanging. */ @@ -316,16 +323,16 @@ guestfs_int_launch_timeout (guestfs_h *g) if (g->verbose) error (g, _("appliance launch timed out, see earlier error messages")); else - error (g, _( - "appliance launch timed out.\n" - "This usually means the kernel or appliance hung during launch.\n" - DEBUG_ADVICE)); + error (g, _("appliance launch timed out.\n" + "This usually means the kernel or appliance hung during " + "launch.\n" DEBUG_ADVICE)); } /* External command failed. */ void guestfs_int_external_command_failed (guestfs_h *g, int status, - const char *cmd_name, const char *extra) + const char *cmd_name, + const char *extra) { size_t len = 80 + strlen (cmd_name); CLEANUP_FREE char *status_string = safe_malloc (g, len); @@ -336,19 +343,18 @@ guestfs_int_external_command_failed (guestfs_h *g, int status, if (!extra) error (g, _("%s, see debug messages above"), status_string); else - error (g, _("%s: %s: %s, see debug messages above"), - cmd_name, extra, status_string); - } - else { + error (g, _("%s: %s: %s, see debug messages above"), cmd_name, extra, + status_string); + } else { if (!extra) error (g, _("%s.\n" - "To see full error messages you may need to enable debugging.\n" - DEBUG_ADVICE), + "To see full error messages you may need to enable " + "debugging.\n" DEBUG_ADVICE), status_string); else error (g, _("%s: %s: %s.\n" - "To see full error messages you may need to enable debugging.\n" - DEBUG_ADVICE), + "To see full error messages you may need to enable " + "debugging.\n" DEBUG_ADVICE), cmd_name, extra, status_string); } } diff --git a/src/events.c b/src/events.c index 2d065b8..6243bef 100644 --- a/src/events.c +++ b/src/events.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include <config.h> @@ -29,11 +30,8 @@ #include "guestfs-internal.h" int -guestfs_set_event_callback (guestfs_h *g, - guestfs_event_callback cb, - uint64_t event_bitmask, - int flags, - void *opaque) +guestfs_set_event_callback (guestfs_h *g, guestfs_event_callback cb, + uint64_t event_bitmask, int flags, void *opaque) { int event_handle; @@ -52,10 +50,9 @@ guestfs_set_event_callback (guestfs_h *g, return -1; } - event_handle = (int) g->nr_events; - g->events = - safe_realloc (g, g->events, - (g->nr_events+1) * sizeof (struct event)); + event_handle = (int)g->nr_events; + g->events = safe_realloc (g, g->events, + (g->nr_events + 1) * sizeof (struct event)); g->nr_events++; g->events[event_handle].event_bitmask = event_bitmask; @@ -69,7 +66,7 @@ guestfs_set_event_callback (guestfs_h *g, void guestfs_delete_event_callback (guestfs_h *g, int event_handle) { - if (event_handle < 0 || event_handle >= (int) g->nr_events) + if (event_handle < 0 || event_handle >= (int)g->nr_events) return; /* Set the event_bitmask to 0, which will ensure that this callback @@ -83,7 +80,7 @@ guestfs_delete_event_callback (guestfs_h *g, int event_handle) * problem that this structure is not well-suited to handling large * numbers of event handlers. */ - if ((unsigned) event_handle == g->nr_events-1) + if ((unsigned)event_handle == g->nr_events - 1) g->nr_events--; } @@ -96,7 +93,8 @@ guestfs_int_call_callbacks_void (guestfs_h *g, uint64_t event) for (i = 0; i < g->nr_events; ++i) if ((g->events[i].event_bitmask & event) != 0) - g->events[i].cb (g, g->events[i].opaque, event, i, 0, NULL, 0, NULL, 0); + g->events[i].cb (g, g->events[i].opaque, event, i, 0, NULL, 0, NULL, + 0); /* All events with payload type void are discarded if no callback * was registered. @@ -105,14 +103,14 @@ guestfs_int_call_callbacks_void (guestfs_h *g, uint64_t event) void guestfs_int_call_callbacks_message (guestfs_h *g, uint64_t event, - const char *buf, size_t buf_len) + const char *buf, size_t buf_len) { size_t i, count = 0; for (i = 0; i < g->nr_events; ++i) if ((g->events[i].event_bitmask & event) != 0) { - g->events[i].cb (g, g->events[i].opaque, event, i, 0, - buf, buf_len, NULL, 0); + g->events[i].cb (g, g->events[i].opaque, event, i, 0, buf, buf_len, + NULL, 0); count++; } @@ -124,12 +122,9 @@ guestfs_int_call_callbacks_message (guestfs_h *g, uint64_t event, if (count > 0) return; - if ((event == GUESTFS_EVENT_APPLIANCE || - event == GUESTFS_EVENT_LIBRARY || - event == GUESTFS_EVENT_WARNING || - event == GUESTFS_EVENT_TRACE) && - (g->verbose || - event == GUESTFS_EVENT_WARNING || + if ((event == GUESTFS_EVENT_APPLIANCE || event == GUESTFS_EVENT_LIBRARY || + event == GUESTFS_EVENT_WARNING || event == GUESTFS_EVENT_TRACE) && + (g->verbose || event == GUESTFS_EVENT_WARNING || event == GUESTFS_EVENT_TRACE)) { bool from_appliance = event == GUESTFS_EVENT_APPLIANCE; size_t i0; @@ -154,34 +149,34 @@ guestfs_int_call_callbacks_message (guestfs_h *g, uint64_t event, } } - /* Special or non-printing characters in the buffer must be - * escaped (RHBZ#731744). The buffer can contain any 8 bit - * character, even \0. - * - * Handling of \n and \r characters is complex: - * - * Case 1: Messages from the appliance: These messages already - * contain \n and \r characters at logical positions, so we just - * echo those out directly. - * - * Case 2: Messages from other sources: These messages should NOT - * contain \n or \r. If they do, it is escaped. However we also - * need to print a real end of line after these messages. - * - * RHBZ#802109: Because stderr is usually not buffered, avoid - * single 'putc' calls (which translate to a 1 byte write), and - * try to send longest possible strings in single fwrite calls - * (thanks to Jim Meyering for the basic approach). - */ -#define NO_ESCAPING(c) \ - (c_isprint ((c)) || (from_appliance && ((c) == '\n' || (c) == '\r'))) +/* Special or non-printing characters in the buffer must be + * escaped (RHBZ#731744). The buffer can contain any 8 bit + * character, even \0. + * + * Handling of \n and \r characters is complex: + * + * Case 1: Messages from the appliance: These messages already + * contain \n and \r characters at logical positions, so we just + * echo those out directly. + * + * Case 2: Messages from other sources: These messages should NOT + * contain \n or \r. If they do, it is escaped. However we also + * need to print a real end of line after these messages. + * + * RHBZ#802109: Because stderr is usually not buffered, avoid + * single 'putc' calls (which translate to a 1 byte write), and + * try to send longest possible strings in single fwrite calls + * (thanks to Jim Meyering for the basic approach). + */ +#define NO_ESCAPING(c) \ + (c_isprint ((c)) || (from_appliance && ((c) == '\n' || (c) == '\r'))) for (i = 0; i < buf_len; ++i) { if (NO_ESCAPING (buf[i])) { i0 = i; while (i < buf_len && NO_ESCAPING (buf[i])) ++i; - fwrite (&buf[i0], 1, i-i0, stderr); + fwrite (&buf[i0], 1, i - i0, stderr); /* Adjust i so that next time around the loop, the next * non-printing character will be displayed. */ @@ -189,16 +184,32 @@ guestfs_int_call_callbacks_message (guestfs_h *g, uint64_t event, --i; } else { switch (buf[i]) { - case '\0': fputs ("\\0", stderr); break; - case '\a': fputs ("\\a", stderr); break; - case '\b': fputs ("\\b", stderr); break; - case '\f': fputs ("\\f", stderr); break; - case '\n': fputs ("\\n", stderr); break; - case '\r': fputs ("\\r", stderr); break; - case '\t': fputs ("\\t", stderr); break; - case '\v': fputs ("\\v", stderr); break; + case '\0': + fputs ("\\0", stderr); + break; + case '\a': + fputs ("\\a", stderr); + break; + case '\b': + fputs ("\\b", stderr); + break; + case '\f': + fputs ("\\f", stderr); + break; + case '\n': + fputs ("\\n", stderr); + break; + case '\r': + fputs ("\\r", stderr); + break; + case '\t': + fputs ("\\t", stderr); + break; + case '\v': + fputs ("\\v", stderr); + break; default: - fprintf (stderr, "\\x%x", (unsigned char) buf[i]); + fprintf (stderr, "\\x%x", (unsigned char)buf[i]); } } } @@ -210,14 +221,14 @@ guestfs_int_call_callbacks_message (guestfs_h *g, uint64_t event, void guestfs_int_call_callbacks_array (guestfs_h *g, uint64_t event, - const uint64_t *array, size_t array_len) + const uint64_t *array, size_t array_len) { size_t i; for (i = 0; i < g->nr_events; ++i) if ((g->events[i].event_bitmask & event) != 0) - g->events[i].cb (g, g->events[i].opaque, event, i, 0, - NULL, 0, array, array_len); + g->events[i].cb (g, g->events[i].opaque, event, i, 0, NULL, 0, array, + array_len); /* All events with payload type array are discarded if no callback * was registered. @@ -233,10 +244,8 @@ guestfs_int_call_callbacks_array (guestfs_h *g, uint64_t event, */ static void -replace_old_style_event_callback (guestfs_h *g, - guestfs_event_callback cb, - uint64_t event_bitmask, - void *opaque, +replace_old_style_event_callback (guestfs_h *g, guestfs_event_callback cb, + uint64_t event_bitmask, void *opaque, void *opaque2) { size_t i; @@ -263,12 +272,11 @@ replace_old_style_event_callback (guestfs_h *g, return; /* see above */ /* i == g->nr_events */ - g->events = - safe_realloc (g, g->events, - (g->nr_events+1) * sizeof (struct event)); + g->events = safe_realloc (g, g->events, + (g->nr_events + 1) * sizeof (struct event)); g->nr_events++; - replace: +replace: g->events[i].event_bitmask = event_bitmask; g->events[i].cb = cb; g->events[i].opaque = opaque; @@ -276,39 +284,33 @@ replace_old_style_event_callback (guestfs_h *g, } static void -log_message_callback_wrapper (guestfs_h *g, - void *opaque, - uint64_t event, - int event_handle, - int flags, - const char *buf, size_t buf_len, - const uint64_t *array, size_t array_len) +log_message_callback_wrapper (guestfs_h *g, void *opaque, uint64_t event, + int event_handle, int flags, const char *buf, + size_t buf_len, const uint64_t *array, + size_t array_len) { guestfs_log_message_cb cb = g->events[event_handle].opaque2; /* Note that the old callback declared the message buffer as * (char *, int). I sure hope message buffers aren't too large * and that callers aren't writing to them. XXX */ - cb (g, opaque, (char *) buf, (int) buf_len); + cb (g, opaque, (char *)buf, (int)buf_len); } void -guestfs_set_log_message_callback (guestfs_h *g, - guestfs_log_message_cb cb, void *opaque) +guestfs_set_log_message_callback (guestfs_h *g, guestfs_log_message_cb cb, + void *opaque) { replace_old_style_event_callback (g, log_message_callback_wrapper, - GUESTFS_EVENT_APPLIANCE, - opaque, cb); + GUESTFS_EVENT_APPLIANCE, opaque, cb); } static void -subprocess_quit_callback_wrapper (guestfs_h *g, - void *opaque, - uint64_t event, - int event_handle, - int flags, - const char *buf, size_t buf_len, - const uint64_t *array, size_t array_len) +subprocess_quit_callback_wrapper (guestfs_h *g, void *opaque, + uint64_t event, int event_handle, + int flags, const char *buf, + size_t buf_len, const uint64_t *array, + size_t array_len) { guestfs_subprocess_quit_cb cb = g->events[event_handle].opaque2; cb (g, opaque); @@ -316,76 +318,64 @@ subprocess_quit_callback_wrapper (guestfs_h *g, void guestfs_set_subprocess_quit_callback (guestfs_h *g, - guestfs_subprocess_quit_cb cb, void *opaque) + guestfs_subprocess_quit_cb cb, + void *opaque) { replace_old_style_event_callback (g, subprocess_quit_callback_wrapper, - GUESTFS_EVENT_SUBPROCESS_QUIT, - opaque, cb); + GUESTFS_EVENT_SUBPROCESS_QUIT, opaque, + cb); } static void -launch_done_callback_wrapper (guestfs_h *g, - void *opaque, - uint64_t event, - int event_handle, - int flags, - const char *buf, size_t buf_len, - const uint64_t *array, size_t array_len) +launch_done_callback_wrapper (guestfs_h *g, void *opaque, uint64_t event, + int event_handle, int flags, const char *buf, + size_t buf_len, const uint64_t *array, + size_t array_len) { guestfs_launch_done_cb cb = g->events[event_handle].opaque2; cb (g, opaque); } void -guestfs_set_launch_done_callback (guestfs_h *g, - guestfs_launch_done_cb cb, void *opaque) +guestfs_set_launch_done_callback (guestfs_h *g, guestfs_launch_done_cb cb, + void *opaque) { replace_old_style_event_callback (g, launch_done_callback_wrapper, - GUESTFS_EVENT_LAUNCH_DONE, - opaque, cb); + GUESTFS_EVENT_LAUNCH_DONE, opaque, cb); } static void -close_callback_wrapper (guestfs_h *g, - void *opaque, - uint64_t event, - int event_handle, - int flags, - const char *buf, size_t buf_len, - const uint64_t *array, size_t array_len) +close_callback_wrapper (guestfs_h *g, void *opaque, uint64_t event, + int event_handle, int flags, const char *buf, + size_t buf_len, const uint64_t *array, + size_t array_len) { guestfs_close_cb cb = g->events[event_handle].opaque2; cb (g, opaque); } void -guestfs_set_close_callback (guestfs_h *g, - guestfs_close_cb cb, void *opaque) +guestfs_set_close_callback (guestfs_h *g, guestfs_close_cb cb, void *opaque) { replace_old_style_event_callback (g, close_callback_wrapper, - GUESTFS_EVENT_CLOSE, - opaque, cb); + GUESTFS_EVENT_CLOSE, opaque, cb); } static void -progress_callback_wrapper (guestfs_h *g, - void *opaque, - uint64_t event, - int event_handle, - int flags, - const char *buf, size_t buf_len, - const uint64_t *array, size_t array_len) +progress_callback_wrapper (guestfs_h *g, void *opaque, uint64_t event, + int event_handle, int flags, const char *buf, + size_t buf_len, const uint64_t *array, + size_t array_len) { guestfs_progress_cb cb = g->events[event_handle].opaque2; assert (array_len >= 4); - cb (g, opaque, (int) array[0], (int) array[1], array[2], array[3]); + cb (g, opaque, (int)array[0], (int)array[1], array[2], array[3]); } void -guestfs_set_progress_callback (guestfs_h *g, - guestfs_progress_cb cb, void *opaque) +guestfs_set_progress_callback (guestfs_h *g, guestfs_progress_cb cb, + void *opaque) { replace_old_style_event_callback (g, progress_callback_wrapper, - GUESTFS_EVENT_PROGRESS, - opaque, cb); + GUESTFS_EVENT_PROGRESS, opaque, cb); } diff --git a/src/file.c b/src/file.c index d57c4e1..be18d72 100644 --- a/src/file.c +++ b/src/file.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include <config.h> @@ -36,8 +37,8 @@ static int compare (const void *vp1, const void *vp2) { - char * const *p1 = (char * const *) vp1; - char * const *p2 = (char * const *) vp2; + char *const *p1 = (char *const *)vp1; + char *const *p2 = (char *const *)vp2; return strcmp (*p1, *p2); } @@ -52,11 +53,12 @@ sort_strings (char **argv, size_t len) * then it is updated with the pointer to the list of remaining names. */ static char ** -take_strings (guestfs_h *g, char *const *names, size_t n, char *const **lastp) +take_strings (guestfs_h *g, char *const *names, size_t n, + char *const **lastp) { size_t i; - char **ret = safe_malloc (g, (n+1) * sizeof (char *)); + char **ret = safe_malloc (g, (n + 1) * sizeof (char *)); for (i = 0; names[i] != NULL && i < n; ++i) ret[i] = names[i]; @@ -94,7 +96,7 @@ guestfs_impl_read_file (guestfs_h *g, const char *path, size_t *size_r) if (guestfs_download (g, path, tmpfile) == -1) goto err; - fd = open (tmpfile, O_RDONLY|O_CLOEXEC); + fd = open (tmpfile, O_RDONLY | O_CLOEXEC); if (fd == -1) { perrorf (g, "open: %s", tmpfile); goto err; @@ -106,7 +108,8 @@ guestfs_impl_read_file (guestfs_h *g, const char *path, size_t *size_r) goto err; } - /* Don't use safe_malloc, because we want to return an errno to the caller. */ + /* Don't use safe_malloc, because we want to return an errno to the + * caller. */ size = statbuf.st_size; ret = malloc (size + 1); if (!ret) { @@ -132,7 +135,7 @@ guestfs_impl_read_file (guestfs_h *g, const char *path, size_t *size_r) *size_r = size; return ret; - err: +err: free (ret); if (fd >= 0) close (fd); @@ -160,7 +163,7 @@ guestfs_impl_read_lines (guestfs_h *g, const char *file) for (i = 0; i < size; ++i) if (buf[i] == '\n') count++; - if (size > 0 && buf[size-1] != '\n') + if (size > 0 && buf[size - 1] != '\n') count++; ret = malloc ((count + 1) * sizeof (char *)); @@ -175,8 +178,8 @@ guestfs_impl_read_lines (guestfs_h *g, const char *file) for (i = 0; i < size; ++i) { if (buf[i] == '\n') { buf[i] = '\0'; - if (i+1 < size) - ret[count++] = &buf[i+1]; + if (i + 1 < size) + ret[count++] = &buf[i + 1]; } } } @@ -192,13 +195,13 @@ guestfs_impl_read_lines (guestfs_h *g, const char *file) goto err; } len = strlen (ret[i]); - if (len > 0 && ret[i][len-1] == '\r') - ret[i][len-1] = '\0'; + if (len > 0 && ret[i][len - 1] == '\r') + ret[i][len - 1] = '\0'; } return ret; - err: +err: free (ret); return NULL; } @@ -221,7 +224,7 @@ guestfs_impl_find (guestfs_h *g, const char *directory) if (guestfs_find0 (g, directory, tmpfile) == -1) goto err; - fd = open (tmpfile, O_RDONLY|O_CLOEXEC); + fd = open (tmpfile, O_RDONLY | O_CLOEXEC); if (fd == -1) { perrorf (g, "open: %s", tmpfile); goto err; @@ -233,7 +236,8 @@ guestfs_impl_find (guestfs_h *g, const char *directory) goto err; } - /* Don't use safe_malloc, because we want to return an errno to the caller. */ + /* Don't use safe_malloc, because we want to return an errno to the + * caller. */ size = statbuf.st_size; buf = malloc (size); if (!buf) { @@ -272,7 +276,7 @@ guestfs_impl_find (guestfs_h *g, const char *directory) ret[count++] = buf; for (i = 0; i < size; ++i) { if (buf[i] == '\0') - ret[count++] = &buf[i+1]; + ret[count++] = &buf[i + 1]; } ret[--count] = NULL; @@ -291,9 +295,9 @@ guestfs_impl_find (guestfs_h *g, const char *directory) sort_strings (ret, count); - return ret; /* caller frees */ + return ret; /* caller frees */ - err: +err: free (ret); if (fd >= 0) close (fd); @@ -301,9 +305,8 @@ guestfs_impl_find (guestfs_h *g, const char *directory) } static int -write_or_append (guestfs_h *g, const char *path, - const char *content, size_t size, - int append) +write_or_append (guestfs_h *g, const char *path, const char *content, + size_t size, int append) { CLEANUP_UNLINK_FREE char *tmpfile = NULL; int fd = -1; @@ -312,10 +315,10 @@ write_or_append (guestfs_h *g, const char *path, /* If the content is small enough, use guestfs_internal_write{,_append} * since that call is more efficient. */ - if (size <= 2*1024*1024) - return - (!append ? guestfs_internal_write : guestfs_internal_write_append) - (g, path, content, size); + if (size <= 2 * 1024 * 1024) + return (!append + ? guestfs_internal_write + : guestfs_internal_write_append) (g, path, content, size); if (guestfs_int_lazy_make_tmpdir (g) == -1) goto err; @@ -323,7 +326,7 @@ write_or_append (guestfs_h *g, const char *path, /* Write the content out to a temporary file. */ tmpfile = safe_asprintf (g, "%s/write%d", g->tmpdir, ++g->unique); - fd = open (tmpfile, O_WRONLY|O_CREAT|O_NOCTTY|O_CLOEXEC, 0600); + fd = open (tmpfile, O_WRONLY | O_CREAT | O_NOCTTY | O_CLOEXEC, 0600); if (fd == -1) { perrorf (g, "open: %s", tmpfile); goto err; @@ -343,8 +346,7 @@ write_or_append (guestfs_h *g, const char *path, if (!append) { if (guestfs_upload (g, tmpfile, path) == -1) goto err; - } - else { + } else { /* XXX Should have an 'upload-append' call to make this atomic. */ filesize = guestfs_filesize (g, path); if (filesize == -1) @@ -355,22 +357,22 @@ write_or_append (guestfs_h *g, const char *path, return 0; - err: +err: if (fd >= 0) close (fd); return -1; } int -guestfs_impl_write (guestfs_h *g, const char *path, - const char *content, size_t size) +guestfs_impl_write (guestfs_h *g, const char *path, const char *content, + size_t size) { return write_or_append (g, path, content, size, 0); } int guestfs_impl_write_append (guestfs_h *g, const char *path, - const char *content, size_t size) + const char *content, size_t size) { return write_or_append (g, path, content, size, 1); } @@ -378,7 +380,7 @@ guestfs_impl_write_append (guestfs_h *g, const char *path, #define LSTATNSLIST_MAX 1000 struct guestfs_statns_list * -guestfs_impl_lstatnslist (guestfs_h *g, const char *dir, char * const*names) +guestfs_impl_lstatnslist (guestfs_h *g, const char *dir, char *const *names) { size_t len = guestfs_int_count_strings (names); size_t old_len; @@ -394,7 +396,8 @@ guestfs_impl_lstatnslist (guestfs_h *g, const char *dir, char * const*names) /* Note we don't need to free up the strings because take_strings * does not do a deep copy. */ - CLEANUP_FREE char **first = take_strings (g, names, LSTATNSLIST_MAX, &names); + CLEANUP_FREE char **first = + take_strings (g, names, LSTATNSLIST_MAX, &names); len = len <= LSTATNSLIST_MAX ? 0 : len - LSTATNSLIST_MAX; @@ -436,7 +439,8 @@ guestfs_impl_lxattrlist (guestfs_h *g, const char *dir, char *const *names) /* Note we don't need to free up the strings because take_strings * does not do a deep copy. */ - CLEANUP_FREE char **first = take_strings (g, names, LXATTRLIST_MAX, &names); + CLEANUP_FREE char **first = + take_strings (g, names, LXATTRLIST_MAX, &names); len = len <= LXATTRLIST_MAX ? 0 : len - LXATTRLIST_MAX; xattrs = guestfs_internal_lxattrlist (g, dir, first); @@ -455,7 +459,8 @@ guestfs_impl_lxattrlist (guestfs_h *g, const char *dir, char *const *names) /* We have to make a deep copy of the attribute name and value. */ ret->val[old_len].attrname = safe_strdup (g, xattrs->val[i].attrname); - ret->val[old_len].attrval = safe_malloc (g, xattrs->val[i].attrval_len); + ret->val[old_len].attrval = + safe_malloc (g, xattrs->val[i].attrval_len); ret->val[old_len].attrval_len = xattrs->val[i].attrval_len; memcpy (ret->val[old_len].attrval, xattrs->val[i].attrval, xattrs->val[i].attrval_len); @@ -468,7 +473,8 @@ guestfs_impl_lxattrlist (guestfs_h *g, const char *dir, char *const *names) #define READLINK_MAX 1000 char ** -guestfs_impl_readlinklist (guestfs_h *g, const char *dir, char *const *names) +guestfs_impl_readlinklist (guestfs_h *g, const char *dir, + char *const *names) { size_t len = guestfs_int_count_strings (names); size_t old_len, ret_len = 0; @@ -480,7 +486,8 @@ guestfs_impl_readlinklist (guestfs_h *g, const char *dir, char *const *names) * deep copy. */ CLEANUP_FREE char **links = NULL; - CLEANUP_FREE char **first = take_strings (g, names, READLINK_MAX, &names); + CLEANUP_FREE char **first = + take_strings (g, names, READLINK_MAX, &names); len = len <= READLINK_MAX ? 0 : len - READLINK_MAX; links = guestfs_internal_readlinklist (g, dir, first); @@ -495,11 +502,11 @@ guestfs_impl_readlinklist (guestfs_h *g, const char *dir, char *const *names) old_len = ret_len; ret_len += guestfs_int_count_strings (links); ret = safe_realloc (g, ret, ret_len * sizeof (char *)); - memcpy (&ret[old_len], links, (ret_len-old_len) * sizeof (char *)); + memcpy (&ret[old_len], links, (ret_len - old_len) * sizeof (char *)); } /* NULL-terminate the list. */ - ret = safe_realloc (g, ret, (ret_len+1) * sizeof (char *)); + ret = safe_realloc (g, ret, (ret_len + 1) * sizeof (char *)); ret[ret_len] = NULL; return ret; @@ -523,7 +530,7 @@ guestfs_impl_ls (guestfs_h *g, const char *directory) if (guestfs_ls0 (g, directory, tmpfile) == -1) goto err; - fd = open (tmpfile, O_RDONLY|O_CLOEXEC); + fd = open (tmpfile, O_RDONLY | O_CLOEXEC); if (fd == -1) { perrorf (g, "open: %s", tmpfile); goto err; @@ -535,7 +542,8 @@ guestfs_impl_ls (guestfs_h *g, const char *directory) goto err; } - /* Don't use safe_malloc, because we want to return an errno to the caller. */ + /* Don't use safe_malloc, because we want to return an errno to the + * caller. */ size = statbuf.st_size; buf = malloc (size); if (!buf) { @@ -573,7 +581,7 @@ guestfs_impl_ls (guestfs_h *g, const char *directory) ret[count++] = buf; for (i = 0; i < size; ++i) { if (buf[i] == '\0') - ret[count++] = &buf[i+1]; + ret[count++] = &buf[i + 1]; } ret[--count] = NULL; @@ -592,9 +600,9 @@ guestfs_impl_ls (guestfs_h *g, const char *directory) sort_strings (ret, count); - return ret; /* caller frees */ + return ret; /* caller frees */ - err: +err: free (ret); if (fd >= 0) close (fd); @@ -631,7 +639,7 @@ guestfs_impl_stat (guestfs_h *g, const char *path) ret = safe_malloc (g, sizeof *ret); statns_to_old_stat (r, ret); - return ret; /* caller frees */ + return ret; /* caller frees */ } struct guestfs_stat * @@ -646,11 +654,11 @@ guestfs_impl_lstat (guestfs_h *g, const char *path) ret = safe_malloc (g, sizeof *ret); statns_to_old_stat (r, ret); - return ret; /* caller frees */ + return ret; /* caller frees */ } struct guestfs_stat_list * -guestfs_impl_lstatlist (guestfs_h *g, const char *dir, char * const*names) +guestfs_impl_lstatlist (guestfs_h *g, const char *dir, char *const *names) { CLEANUP_FREE_STATNS_LIST struct guestfs_statns_list *r; struct guestfs_stat_list *ret; diff --git a/src/filearch.c b/src/filearch.c index 5985b73..c674f59 100644 --- a/src/filearch.c +++ b/src/filearch.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include <config.h> @@ -39,31 +40,34 @@ #if defined(HAVE_LIBMAGIC) -# ifdef HAVE_ATTRIBUTE_CLEANUP -# define CLEANUP_MAGIC_T_FREE __attribute__((cleanup(cleanup_magic_t_free))) +#ifdef HAVE_ATTRIBUTE_CLEANUP +#define CLEANUP_MAGIC_T_FREE \ + __attribute__ ((cleanup (cleanup_magic_t_free))) static void cleanup_magic_t_free (void *ptr) { - magic_t m = *(magic_t *) ptr; + magic_t m = *(magic_t *)ptr; if (m) magic_close (m); } -# else -# define CLEANUP_MAGIC_T_FREE -# endif +#else +#define CLEANUP_MAGIC_T_FREE +#endif -COMPILE_REGEXP (re_file_elf, - "ELF.*(MSB|LSB).*(?:executable|shared object|relocatable), (.+?),", 0) +COMPILE_REGEXP ( + re_file_elf, + "ELF.*(MSB|LSB).*(?:executable|shared object|relocatable), (.+?),", 0) COMPILE_REGEXP (re_elf_ppc64, ".*64.*PowerPC", 0) /* Convert output from 'file' command on ELF files to the canonical * architecture string. Caller must free the result. */ static char * -canonical_elf_arch (guestfs_h *g, const char *endianness, const char *elf_arch) +canonical_elf_arch (guestfs_h *g, const char *endianness, + const char *elf_arch) { const char *r; char *ret; @@ -91,8 +95,7 @@ canonical_elf_arch (guestfs_h *g, const char *endianness, const char *elf_arch) error (g, "file_architecture: unknown endianness '%s'", endianness); return NULL; } - } - else if (strstr (elf_arch, "PowerPC")) + } else if (strstr (elf_arch, "PowerPC")) r = "ppc"; else if (strstr (elf_arch, "ARM aarch64")) r = "aarch64"; @@ -164,15 +167,9 @@ magic_for_file (guestfs_h *g, const char *filename, bool *loading_ok, /* Download and uncompress the cpio file to find binaries within. */ static const char *initrd_binaries[] = { - "bin/ls", - "bin/rm", - "bin/modprobe", - "sbin/modprobe", - "bin/sh", - "bin/bash", - "bin/dash", - "bin/nash", - NULL + "bin/ls", "bin/rm", "bin/modprobe", + "sbin/modprobe", "bin/sh", "bin/bash", + "bin/dash", "bin/nash", NULL }; static char * @@ -202,8 +199,8 @@ cpio_arch (guestfs_h *g, const char *file, const char *path) /* Security: Refuse to download initrd if it is huge. */ size = guestfs_filesize (g, path); if (size == -1 || size > 100000000) { - error (g, _("size of %s unreasonable (%" PRIi64 " bytes)"), - path, size); + error (g, _("size of %s unreasonable (%" PRIi64 " bytes)"), path, + size); goto out; } @@ -218,7 +215,7 @@ cpio_arch (guestfs_h *g, const char *file, const char *path) /* Construct a command to extract named binaries from the initrd file. */ guestfs_int_cmd_add_string_unquoted (cmd, "cd "); - guestfs_int_cmd_add_string_quoted (cmd, dir); + guestfs_int_cmd_add_string_quoted (cmd, dir); guestfs_int_cmd_add_string_unquoted (cmd, " && "); guestfs_int_cmd_add_string_unquoted (cmd, method); guestfs_int_cmd_add_string_unquoted (cmd, " initrd | cpio --quiet -id"); @@ -237,7 +234,7 @@ cpio_arch (guestfs_h *g, const char *file, const char *path) for (i = 0; initrd_binaries[i] != NULL; ++i) { CLEANUP_FREE char *bin = - safe_asprintf (g, "%s/%s", dir, initrd_binaries[i]); + safe_asprintf (g, "%s/%s", dir, initrd_binaries[i]); if (is_regular_file (bin)) { bool loading_ok, matched; @@ -247,9 +244,10 @@ cpio_arch (guestfs_h *g, const char *file, const char *path) goto out; } } - error (g, "file_architecture: could not determine architecture of cpio archive"); + error (g, "file_architecture: could not determine architecture of cpio " + "archive"); - out: +out: guestfs_int_recursive_remove_dir (g, dir); return ret; @@ -274,8 +272,8 @@ compressed_file_arch (guestfs_h *g, const char *path, const char *method) /* Security: Refuse to download file if it is huge. */ size = guestfs_filesize (g, path); if (size == -1 || size > 10000000) { - error (g, _("size of %s unreasonable (%" PRIi64 " bytes)"), - path, size); + error (g, _("size of %s unreasonable (%" PRIi64 " bytes)"), path, + size); goto out; } @@ -307,9 +305,10 @@ compressed_file_arch (guestfs_h *g, const char *path, const char *method) ret = magic_for_file (g, tempfile_extracted, NULL, &matched); if (!matched) - error (g, "file_architecture: could not determine architecture of compressed file"); + error (g, "file_architecture: could not determine architecture of " + "compressed file"); - out: +out: guestfs_int_recursive_remove_dir (g, dir); return ret; @@ -345,21 +344,23 @@ guestfs_impl_file_architecture (guestfs_h *g, const char *path) else error (g, "file_architecture: unknown architecture: %s", path); - return ret; /* caller frees */ + return ret; /* caller frees */ } #else /* no libmagic at compile time */ /* XXX Should be an optgroup. */ -#define NOT_IMPL(r) \ - error (g, _("file-architecture API not available since this version of libguestfs was compiled without the libmagic library")); \ +#define NOT_IMPL(r) \ + error (g, \ + _("file-architecture API not available since this version of " \ + "libguestfs was compiled without the libmagic library")); \ return r char * guestfs_impl_file_architecture (guestfs_h *g, const char *path) { - NOT_IMPL(NULL); + NOT_IMPL (NULL); } #endif /* no libmagic at compile time */ diff --git a/src/fuse.c b/src/fuse.c index cb8274f..7cb8de3 100644 --- a/src/fuse.c +++ b/src/fuse.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include <config.h> @@ -55,39 +56,43 @@ static int init_dir_caches (guestfs_h *); static void free_dir_caches (guestfs_h *); static void dir_cache_remove_all_expired (guestfs_h *, time_t now); static void dir_cache_invalidate (guestfs_h *, const char *path); -static int lsc_insert (guestfs_h *, const char *path, const char *name, time_t now, struct stat const *statbuf); -static int xac_insert (guestfs_h *, const char *path, const char *name, time_t now, struct guestfs_xattr_list *xattrs); -static int rlc_insert (guestfs_h *, const char *path, const char *name, time_t now, char *link); +static int lsc_insert (guestfs_h *, const char *path, const char *name, + time_t now, struct stat const *statbuf); +static int xac_insert (guestfs_h *, const char *path, const char *name, + time_t now, struct guestfs_xattr_list *xattrs); +static int rlc_insert (guestfs_h *, const char *path, const char *name, + time_t now, char *link); static const struct stat *lsc_lookup (guestfs_h *, const char *pathname); -static const struct guestfs_xattr_list *xac_lookup (guestfs_h *, const char *pathname); +static const struct guestfs_xattr_list *xac_lookup (guestfs_h *, + const char *pathname); static const char *rlc_lookup (guestfs_h *, const char *pathname); /* This lock protects access to g->localmountpoint. */ gl_lock_define_initialized (static, mount_local_lock); -#define DECL_G() guestfs_h *g = fuse_get_context()->private_data -#define DEBUG_CALL(fs,...) \ - if (g->ml_debug_calls) { \ - debug (g, \ - "%s: %s (" fs ")", \ - g->localmountpoint, __func__, ## __VA_ARGS__); \ +#define DECL_G() guestfs_h *g = fuse_get_context ()->private_data +#define DEBUG_CALL(fs, ...) \ + if (g->ml_debug_calls) { \ + debug (g, "%s: %s (" fs ")", g->localmountpoint, __func__, \ + ##__VA_ARGS__); \ } -#define RETURN_ERRNO \ - do { \ - int ret_errno = guestfs_last_errno (g); \ - \ - /* 0 doesn't mean "no error". It means the errno was not \ - * captured. Therefore we have to substitute an errno here. \ - */ \ - if (ret_errno == 0) \ - ret_errno = EINVAL; \ - \ - return -ret_errno; \ +#define RETURN_ERRNO \ + do { \ + int ret_errno = guestfs_last_errno (g); \ + \ + /* 0 doesn't mean "no error". It means the errno was not \ + * captured. Therefore we have to substitute an errno here. \ + */ \ + if (ret_errno == 0) \ + ret_errno = EINVAL; \ + \ + return -ret_errno; \ } while (0) static struct guestfs_xattr_list * -copy_xattr_list (guestfs_h *g, const struct guestfs_xattr *first, size_t num) +copy_xattr_list (guestfs_h *g, const struct guestfs_xattr *first, + size_t num) { struct guestfs_xattr_list *xattrs; size_t i; @@ -125,7 +130,7 @@ mount_local_readdir (const char *path, void *buf, fuse_fill_dir_t filler, char **names; CLEANUP_FREE_DIRENT_LIST struct guestfs_dirent_list *ents = NULL; DECL_G (); - DEBUG_CALL ("%s, %p, %ld", path, buf, (long) offset); + DEBUG_CALL ("%s, %p, %ld", path, buf, (long)offset); time (&now); @@ -141,16 +146,31 @@ mount_local_readdir (const char *path, void *buf, fuse_fill_dir_t filler, stat.st_ino = ents->val[i].ino; switch (ents->val[i].ftyp) { - case 'b': stat.st_mode = S_IFBLK; break; - case 'c': stat.st_mode = S_IFCHR; break; - case 'd': stat.st_mode = S_IFDIR; break; - case 'f': stat.st_mode = S_IFIFO; break; - case 'l': stat.st_mode = S_IFLNK; break; - case 'r': stat.st_mode = S_IFREG; break; - case 's': stat.st_mode = S_IFSOCK; break; + case 'b': + stat.st_mode = S_IFBLK; + break; + case 'c': + stat.st_mode = S_IFCHR; + break; + case 'd': + stat.st_mode = S_IFDIR; + break; + case 'f': + stat.st_mode = S_IFIFO; + break; + case 'l': + stat.st_mode = S_IFLNK; + break; + case 'r': + stat.st_mode = S_IFREG; + break; + case 's': + stat.st_mode = S_IFSOCK; + break; case 'u': case '?': - default: stat.st_mode = 0; + default: + stat.st_mode = 0; } /* Copied from the example, which also ignores 'offset'. I'm @@ -221,7 +241,8 @@ mount_local_readdir (const char *path, void *buf, fuse_fill_dir_t filler, ++i; first = &xattrs->val[i]; num = 0; - for (; i < xattrs->len && strlen (xattrs->val[i].attrname) > 0; ++i) + for (; i < xattrs->len && strlen (xattrs->val[i].attrname) > 0; + ++i) num++; copy = copy_xattr_list (g, first, num); @@ -243,7 +264,7 @@ mount_local_readdir (const char *path, void *buf, fuse_fill_dir_t filler, /* which is why we have to free links[i] here. */ free (links[i]); } - free (links); /* free the array, not the strings */ + free (links); /* free the array, not the strings */ } free (names); @@ -328,36 +349,35 @@ mount_local_access (const char *path, int mask) if (fuse->uid != 0) { if (mask & R_OK) ok = ok && - ( fuse->uid == statbuf.st_uid ? statbuf.st_mode & S_IRUSR - : fuse->gid == statbuf.st_gid ? statbuf.st_mode & S_IRGRP - : statbuf.st_mode & S_IROTH); + (fuse->uid == statbuf.st_uid + ? statbuf.st_mode & S_IRUSR + : fuse->gid == statbuf.st_gid ? statbuf.st_mode & S_IRGRP + : statbuf.st_mode & S_IROTH); if (mask & W_OK) ok = ok && - ( fuse->uid == statbuf.st_uid ? statbuf.st_mode & S_IWUSR - : fuse->gid == statbuf.st_gid ? statbuf.st_mode & S_IWGRP - : statbuf.st_mode & S_IWOTH); + (fuse->uid == statbuf.st_uid + ? statbuf.st_mode & S_IWUSR + : fuse->gid == statbuf.st_gid ? statbuf.st_mode & S_IWGRP + : statbuf.st_mode & S_IWOTH); if (mask & X_OK) ok = ok && - ( fuse->uid == statbuf.st_uid ? statbuf.st_mode & S_IXUSR - : fuse->gid == statbuf.st_gid ? statbuf.st_mode & S_IXGRP - : statbuf.st_mode & S_IXOTH); + (fuse->uid == statbuf.st_uid + ? statbuf.st_mode & S_IXUSR + : fuse->gid == statbuf.st_gid ? statbuf.st_mode & S_IXGRP + : statbuf.st_mode & S_IXOTH); } debug (g, "%s: " - "testing access mask%s%s%s%s: " - "caller UID:GID = %ju:%ju, " - "file UID:GID = %ju:%ju, " - "file mode = %o, " - "result = %s", - path, - mask & R_OK ? " R_OK" : "", - mask & W_OK ? " W_OK" : "", - mask & X_OK ? " X_OK" : "", - mask == 0 ? " 0" : "", - (uintmax_t) fuse->uid, (uintmax_t) fuse->gid, - (uintmax_t) statbuf.st_uid, (uintmax_t) statbuf.st_gid, - statbuf.st_mode, - ok ? "OK" : "EACCESS"); + "testing access mask%s%s%s%s: " + "caller UID:GID = %ju:%ju, " + "file UID:GID = %ju:%ju, " + "file mode = %o, " + "result = %s", + path, mask & R_OK ? " R_OK" : "", mask & W_OK ? " W_OK" : "", + mask & X_OK ? " X_OK" : "", mask == 0 ? " 0" : "", + (uintmax_t)fuse->uid, (uintmax_t)fuse->gid, + (uintmax_t)statbuf.st_uid, (uintmax_t)statbuf.st_gid, + statbuf.st_mode, ok ? "OK" : "EACCESS"); return ok ? 0 : -EACCES; } @@ -390,7 +410,7 @@ mount_local_readlink (const char *path, char *buf, size_t size) buf[len] = '\0'; if (free_it) { - char *tmp = (char *) r; + char *tmp = (char *)r; free (tmp); } @@ -402,9 +422,10 @@ mount_local_mknod (const char *path, mode_t mode, dev_t rdev) { int r; DECL_G (); - DEBUG_CALL ("%s, 0%o, 0x%jx", path, mode, (uintmax_t) rdev); + DEBUG_CALL ("%s, 0%o, 0x%jx", path, mode, (uintmax_t)rdev); - if (g->ml_read_only) return -EROFS; + if (g->ml_read_only) + return -EROFS; dir_cache_invalidate (g, path); @@ -422,7 +443,8 @@ mount_local_mkdir (const char *path, mode_t mode) DECL_G (); DEBUG_CALL ("%s, 0%o", path, mode); - if (g->ml_read_only) return -EROFS; + if (g->ml_read_only) + return -EROFS; dir_cache_invalidate (g, path); @@ -440,7 +462,8 @@ mount_local_unlink (const char *path) DECL_G (); DEBUG_CALL ("%s", path); - if (g->ml_read_only) return -EROFS; + if (g->ml_read_only) + return -EROFS; dir_cache_invalidate (g, path); @@ -458,7 +481,8 @@ mount_local_rmdir (const char *path) DECL_G (); DEBUG_CALL ("%s", path); - if (g->ml_read_only) return -EROFS; + if (g->ml_read_only) + return -EROFS; dir_cache_invalidate (g, path); @@ -476,7 +500,8 @@ mount_local_symlink (const char *from, const char *to) DECL_G (); DEBUG_CALL ("%s, %s", from, to); - if (g->ml_read_only) return -EROFS; + if (g->ml_read_only) + return -EROFS; dir_cache_invalidate (g, to); @@ -494,7 +519,8 @@ mount_local_rename (const char *from, const char *to) DECL_G (); DEBUG_CALL ("%s, %s", from, to); - if (g->ml_read_only) return -EROFS; + if (g->ml_read_only) + return -EROFS; dir_cache_invalidate (g, from); dir_cache_invalidate (g, to); @@ -513,7 +539,8 @@ mount_local_link (const char *from, const char *to) DECL_G (); DEBUG_CALL ("%s, %s", from, to); - if (g->ml_read_only) return -EROFS; + if (g->ml_read_only) + return -EROFS; dir_cache_invalidate (g, from); dir_cache_invalidate (g, to); @@ -532,7 +559,8 @@ mount_local_chmod (const char *path, mode_t mode) DECL_G (); DEBUG_CALL ("%s, 0%o", path, mode); - if (g->ml_read_only) return -EROFS; + if (g->ml_read_only) + return -EROFS; dir_cache_invalidate (g, path); @@ -548,9 +576,10 @@ mount_local_chown (const char *path, uid_t uid, gid_t gid) { int r; DECL_G (); - DEBUG_CALL ("%s, %ju, %ju", path, (uintmax_t) uid, (uintmax_t) gid); + DEBUG_CALL ("%s, %ju, %ju", path, (uintmax_t)uid, (uintmax_t)gid); - if (g->ml_read_only) return -EROFS; + if (g->ml_read_only) + return -EROFS; dir_cache_invalidate (g, path); @@ -566,9 +595,10 @@ mount_local_truncate (const char *path, off_t size) { int r; DECL_G (); - DEBUG_CALL ("%s, %ld", path, (long) size); + DEBUG_CALL ("%s, %ld", path, (long)size); - if (g->ml_read_only) return -EROFS; + if (g->ml_read_only) + return -EROFS; dir_cache_invalidate (g, path); @@ -586,10 +616,11 @@ mount_local_utimens (const char *path, const struct timespec ts[2]) time_t atsecs, mtsecs; long atnsecs, mtnsecs; DECL_G (); - DEBUG_CALL ("%s, [{ %ld, %ld }, { %ld, %ld }]", - path, ts[0].tv_sec, ts[0].tv_nsec, ts[1].tv_sec, ts[1].tv_nsec); + DEBUG_CALL ("%s, [{ %ld, %ld }, { %ld, %ld }]", path, ts[0].tv_sec, + ts[0].tv_nsec, ts[1].tv_sec, ts[1].tv_nsec); - if (g->ml_read_only) return -EROFS; + if (g->ml_read_only) + return -EROFS; dir_cache_invalidate (g, path); @@ -630,7 +661,7 @@ mount_local_open (const char *path, struct fuse_file_info *fi) { int flags = fi->flags & O_ACCMODE; DECL_G (); - DEBUG_CALL ("%s, 0%o", path, (unsigned) fi->flags); + DEBUG_CALL ("%s, 0%o", path, (unsigned)fi->flags); if (g->ml_read_only && flags != O_RDONLY) return -EROFS; @@ -646,7 +677,7 @@ mount_local_read (const char *path, char *buf, size_t size, off_t offset, size_t rsize; const size_t limit = 2 * 1024 * 1024; DECL_G (); - DEBUG_CALL ("%s, %p, %zu, %ld", path, buf, size, (long) offset); + DEBUG_CALL ("%s, %p, %zu, %ld", path, buf, size, (long)offset); /* The guestfs protocol limits size to somewhere over 2MB. We just * reduce the requested size here accordingly and push the problem @@ -678,9 +709,10 @@ mount_local_write (const char *path, const char *buf, size_t size, const size_t limit = 2 * 1024 * 1024; int r; DECL_G (); - DEBUG_CALL ("%s, %p, %zu, %ld", path, buf, size, (long) offset); + DEBUG_CALL ("%s, %p, %zu, %ld", path, buf, size, (long)offset); - if (g->ml_read_only) return -EROFS; + if (g->ml_read_only) + return -EROFS; dir_cache_invalidate (g, path); @@ -751,13 +783,14 @@ mount_local_fsync (const char *path, int isdatasync, static int mount_local_setxattr (const char *path, const char *name, const char *value, - size_t size, int flags) + size_t size, int flags) { int r; DECL_G (); DEBUG_CALL ("%s, %s, %p, %zu", path, name, value, size); - if (g->ml_read_only) return -EROFS; + if (g->ml_read_only) + return -EROFS; dir_cache_invalidate (g, path); @@ -798,7 +831,7 @@ mount_local_getxattr (const char *path, const char *name, char *value, break; } - if (i == xattrs->len) { /* not found */ + if (i == xattrs->len) { /* not found */ r = -ENOATTR; goto out; } @@ -824,9 +857,9 @@ mount_local_getxattr (const char *path, const char *name, char *value, } memcpy (value, xattrs->val[i].attrval, sz); - out: +out: if (free_attrs) - guestfs_free_xattr_list ((struct guestfs_xattr_list *) xattrs); + guestfs_free_xattr_list ((struct guestfs_xattr_list *)xattrs); return r; } @@ -884,21 +917,22 @@ mount_local_listxattr (const char *path, char *list, size_t size) } } - out: +out: if (free_attrs) - guestfs_free_xattr_list ((struct guestfs_xattr_list *) xattrs); + guestfs_free_xattr_list ((struct guestfs_xattr_list *)xattrs); return r; } static int -mount_local_removexattr(const char *path, const char *name) +mount_local_removexattr (const char *path, const char *name) { int r; DECL_G (); DEBUG_CALL ("%s, %s", path, name); - if (g->ml_read_only) return -EROFS; + if (g->ml_read_only) + return -EROFS; dir_cache_invalidate (g, path); @@ -910,7 +944,7 @@ mount_local_removexattr(const char *path, const char *name) } static int -mount_local_flush(const char *path, struct fuse_file_info *fi) +mount_local_flush (const char *path, struct fuse_file_info *fi) { DECL_G (); DEBUG_CALL ("%s", path); @@ -924,37 +958,37 @@ mount_local_flush(const char *path, struct fuse_file_info *fi) } static struct fuse_operations mount_local_operations = { - .getattr = mount_local_getattr, - .access = mount_local_access, - .readlink = mount_local_readlink, - .readdir = mount_local_readdir, - .mknod = mount_local_mknod, - .mkdir = mount_local_mkdir, - .symlink = mount_local_symlink, - .unlink = mount_local_unlink, - .rmdir = mount_local_rmdir, - .rename = mount_local_rename, - .link = mount_local_link, - .chmod = mount_local_chmod, - .chown = mount_local_chown, - .truncate = mount_local_truncate, - .utimens = mount_local_utimens, - .open = mount_local_open, - .read = mount_local_read, - .write = mount_local_write, - .statfs = mount_local_statfs, - .release = mount_local_release, - .fsync = mount_local_fsync, - .setxattr = mount_local_setxattr, - .getxattr = mount_local_getxattr, - .listxattr = mount_local_listxattr, - .removexattr = mount_local_removexattr, - .flush = mount_local_flush, + .getattr = mount_local_getattr, + .access = mount_local_access, + .readlink = mount_local_readlink, + .readdir = mount_local_readdir, + .mknod = mount_local_mknod, + .mkdir = mount_local_mkdir, + .symlink = mount_local_symlink, + .unlink = mount_local_unlink, + .rmdir = mount_local_rmdir, + .rename = mount_local_rename, + .link = mount_local_link, + .chmod = mount_local_chmod, + .chown = mount_local_chown, + .truncate = mount_local_truncate, + .utimens = mount_local_utimens, + .open = mount_local_open, + .read = mount_local_read, + .write = mount_local_write, + .statfs = mount_local_statfs, + .release = mount_local_release, + .fsync = mount_local_fsync, + .setxattr = mount_local_setxattr, + .getxattr = mount_local_getxattr, + .listxattr = mount_local_listxattr, + .removexattr = mount_local_removexattr, + .flush = mount_local_flush, }; int guestfs_impl_mount_local (guestfs_h *g, const char *localmountpoint, - const struct guestfs_mount_local_argv *optargs) + const struct guestfs_mount_local_argv *optargs) { const char *t; struct fuse_args args = FUSE_ARGS_INIT (0, NULL); @@ -1022,9 +1056,8 @@ guestfs_impl_mount_local (guestfs_h *g, const char *localmountpoint, debug (g, "%s: fuse_new", __func__); /* Create the FUSE handle. */ - g->fuse = fuse_new (ch, &args, - &mount_local_operations, sizeof mount_local_operations, - g); + g->fuse = fuse_new (ch, &args, &mount_local_operations, + sizeof mount_local_operations, g); if (!g->fuse) { perrorf (g, _("fuse_new: %s"), localmountpoint); fuse_unmount (localmountpoint, ch); @@ -1066,7 +1099,9 @@ guestfs_impl_mount_local_run (guestfs_h *g) r = guestfs_exists (g, "/"); guestfs_pop_error_handler (g); if (r == -1) { - error (g, _("you must call 'guestfs_mount' first to mount a filesystem on '/'.\nNote: '%s' is still mounted. Use 'guestunmount %s' to clean up."), + error (g, _("you must call 'guestfs_mount' first to mount a " + "filesystem on '/'.\nNote: '%s' is still mounted. Use " + "'guestunmount %s' to clean up."), g->localmountpoint, g->localmountpoint); return -1; } @@ -1095,14 +1130,14 @@ void guestfs_int_free_fuse (guestfs_h *g) { if (g->fuse) - fuse_destroy (g->fuse); /* also closes the channel */ + fuse_destroy (g->fuse); /* also closes the channel */ g->fuse = NULL; free_dir_caches (g); } int guestfs_impl_umount_local (guestfs_h *g, - const struct guestfs_umount_local_argv *optargs) + const struct guestfs_umount_local_argv *optargs) { const char *retry; int r; @@ -1169,22 +1204,26 @@ guestfs_impl_umount_local (guestfs_h *g, * if you like. */ -struct entry_common { - char *pathname; /* full path to the file */ - time_t timeout; /* when this entry expires */ +struct entry_common +{ + char *pathname; /* full path to the file */ + time_t timeout; /* when this entry expires */ }; -struct lsc_entry { /* lstat cache entry */ +struct lsc_entry +{ /* lstat cache entry */ struct entry_common c; - struct stat statbuf; /* statbuf */ + struct stat statbuf; /* statbuf */ }; -struct xac_entry { /* xattr cache entry */ +struct xac_entry +{ /* xattr cache entry */ struct entry_common c; struct guestfs_xattr_list *xattrs; }; -struct rlc_entry { /* readlink cache entry */ +struct rlc_entry +{ /* readlink cache entry */ struct entry_common c; char *link; }; @@ -1264,7 +1303,8 @@ free_dir_caches (guestfs_h *g) g->rlc_ht = NULL; } -struct gen_remove_data { +struct gen_remove_data +{ time_t now; Hash_table *ht; Hash_data_freer freer; @@ -1311,8 +1351,8 @@ dir_cache_remove_all_expired (guestfs_h *g, time_t now) } static int -gen_replace (guestfs_h *g, Hash_table *ht, - struct entry_common *new_entry, Hash_data_freer freer) +gen_replace (guestfs_h *g, Hash_table *ht, struct entry_common *new_entry, + Hash_data_freer freer) { struct entry_common *old_entry; @@ -1331,8 +1371,7 @@ gen_replace (guestfs_h *g, Hash_table *ht, } static int -lsc_insert (guestfs_h *g, - const char *path, const char *name, time_t now, +lsc_insert (guestfs_h *g, const char *path, const char *name, time_t now, struct stat const *statbuf) { struct lsc_entry *entry; @@ -1360,12 +1399,11 @@ lsc_insert (guestfs_h *g, entry->c.timeout = now + g->ml_dir_cache_timeout; - return gen_replace (g, g->lsc_ht, (struct entry_common *) entry, lsc_free); + return gen_replace (g, g->lsc_ht, (struct entry_common *)entry, lsc_free); } static int -xac_insert (guestfs_h *g, - const char *path, const char *name, time_t now, +xac_insert (guestfs_h *g, const char *path, const char *name, time_t now, struct guestfs_xattr_list *xattrs) { struct xac_entry *entry; @@ -1393,12 +1431,11 @@ xac_insert (guestfs_h *g, entry->c.timeout = now + g->ml_dir_cache_timeout; - return gen_replace (g, g->xac_ht, (struct entry_common *) entry, xac_free); + return gen_replace (g, g->xac_ht, (struct entry_common *)entry, xac_free); } static int -rlc_insert (guestfs_h *g, - const char *path, const char *name, time_t now, +rlc_insert (guestfs_h *g, const char *path, const char *name, time_t now, char *link) { struct rlc_entry *entry; @@ -1426,13 +1463,13 @@ rlc_insert (guestfs_h *g, entry->c.timeout = now + g->ml_dir_cache_timeout; - return gen_replace (g, g->rlc_ht, (struct entry_common *) entry, rlc_free); + return gen_replace (g, g->rlc_ht, (struct entry_common *)entry, rlc_free); } static const struct stat * lsc_lookup (guestfs_h *g, const char *pathname) { - const struct entry_common key = { .pathname = (char *) pathname }; + const struct entry_common key = {.pathname = (char *)pathname }; struct lsc_entry *entry; time_t now; @@ -1448,7 +1485,7 @@ lsc_lookup (guestfs_h *g, const char *pathname) static const struct guestfs_xattr_list * xac_lookup (guestfs_h *g, const char *pathname) { - const struct entry_common key = { .pathname = (char *) pathname }; + const struct entry_common key = {.pathname = (char *)pathname }; struct xac_entry *entry; time_t now; @@ -1464,7 +1501,7 @@ xac_lookup (guestfs_h *g, const char *pathname) static const char * rlc_lookup (guestfs_h *g, const char *pathname) { - const struct entry_common key = { .pathname = (char *) pathname }; + const struct entry_common key = {.pathname = (char *)pathname }; struct rlc_entry *entry; time_t now; @@ -1480,7 +1517,7 @@ rlc_lookup (guestfs_h *g, const char *pathname) static void gen_remove (Hash_table *ht, const char *pathname, Hash_data_freer freer) { - const struct entry_common key = { .pathname = (char *) pathname }; + const struct entry_common key = {.pathname = (char *)pathname }; struct entry_common *entry; entry = hash_delete (ht, &key); @@ -1498,14 +1535,14 @@ dir_cache_invalidate (guestfs_h *g, const char *path) #else /* !HAVE_FUSE */ -#define FUSE_NOT_SUPPORTED() \ - NOT_SUPPORTED (g, -1, _("FUSE is not supported in this build of " \ - "libguestfs because libfuse was not found " \ +#define FUSE_NOT_SUPPORTED() \ + NOT_SUPPORTED (g, -1, _("FUSE is not supported in this build of " \ + "libguestfs because libfuse was not found " \ "when libguestfs was compiled")) int guestfs_impl_mount_local (guestfs_h *g, const char *localmountpoint, - const struct guestfs_mount_local_argv *optargs) + const struct guestfs_mount_local_argv *optargs) { FUSE_NOT_SUPPORTED (); } @@ -1518,7 +1555,7 @@ guestfs_impl_mount_local_run (guestfs_h *g) int guestfs_impl_umount_local (guestfs_h *g, - const struct guestfs_umount_local_argv *optargs) + const struct guestfs_umount_local_argv *optargs) { FUSE_NOT_SUPPORTED (); } diff --git a/src/guestfs-internal-all.h b/src/guestfs-internal-all.h index af30e58..810cd65 100644 --- a/src/guestfs-internal-all.h +++ b/src/guestfs-internal-all.h @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ /* NB: This contains ONLY definitions which are shared by libguestfs @@ -25,40 +26,43 @@ /* This is also defined in <guestfs.h>, so don't redefine it. */ #if defined(__GNUC__) && !defined(GUESTFS_GCC_VERSION) -# define GUESTFS_GCC_VERSION \ - (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) +#define GUESTFS_GCC_VERSION \ + (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) #endif -#if !defined(__attribute__) && defined(__GNUC__) && GUESTFS_GCC_VERSION < 20800 /* gcc < 2.8 */ -# define __attribute__(x) /* empty */ +#if !defined(__attribute__) && defined(__GNUC__) && \ + GUESTFS_GCC_VERSION < 20800 /* gcc < 2.8 */ +#define __attribute__(x) /* empty */ #endif #ifndef ATTRIBUTE_UNUSED -# define ATTRIBUTE_UNUSED __attribute__ ((__unused__)) +#define ATTRIBUTE_UNUSED __attribute__ ((__unused__)) #endif -#define STREQ(a,b) (strcmp((a),(b)) == 0) -#define STRCASEEQ(a,b) (strcasecmp((a),(b)) == 0) -#define STRNEQ(a,b) (strcmp((a),(b)) != 0) -#define STRCASENEQ(a,b) (strcasecmp((a),(b)) != 0) -#define STREQLEN(a,b,n) (strncmp((a),(b),(n)) == 0) -#define STRCASEEQLEN(a,b,n) (strncasecmp((a),(b),(n)) == 0) -#define STRNEQLEN(a,b,n) (strncmp((a),(b),(n)) != 0) -#define STRCASENEQLEN(a,b,n) (strncasecmp((a),(b),(n)) != 0) -#define STRPREFIX(a,b) (strncmp((a),(b),strlen((b))) == 0) -#define STRCASEPREFIX(a,b) (strncasecmp((a),(b),strlen((b))) == 0) -#define STRSUFFIX(a,b) (strlen((a)) >= strlen((b)) && STREQ((a)+strlen((a))-strlen((b)),(b))) +#define STREQ(a, b) (strcmp ((a), (b)) == 0) +#define STRCASEEQ(a, b) (strcasecmp ((a), (b)) == 0) +#define STRNEQ(a, b) (strcmp ((a), (b)) != 0) +#define STRCASENEQ(a, b) (strcasecmp ((a), (b)) != 0) +#define STREQLEN(a, b, n) (strncmp ((a), (b), (n)) == 0) +#define STRCASEEQLEN(a, b, n) (strncasecmp ((a), (b), (n)) == 0) +#define STRNEQLEN(a, b, n) (strncmp ((a), (b), (n)) != 0) +#define STRCASENEQLEN(a, b, n) (strncasecmp ((a), (b), (n)) != 0) +#define STRPREFIX(a, b) (strncmp ((a), (b), strlen ((b))) == 0) +#define STRCASEPREFIX(a, b) (strncasecmp ((a), (b), strlen ((b))) == 0) +#define STRSUFFIX(a, b) \ + (strlen ((a)) >= strlen ((b)) && \ + STREQ ((a) + strlen ((a)) - strlen ((b)), (b))) #ifndef SOCK_CLOEXEC #define SOCK_CLOEXEC 0 #endif #ifndef MAX -#define MAX(a,b) ((a)>(b)?(a):(b)) +#define MAX(a, b) ((a) > (b) ? (a) : (b)) #endif #ifndef MIN -#define MIN(a,b) ((a)<(b)?(a):(b)) +#define MIN(a, b) ((a) < (b) ? (a) : (b)) #endif #ifdef __APPLE__ @@ -68,28 +72,23 @@ /* Macro which compiles the regexp once when the program/library is * loaded, and frees it when the library is unloaded. */ -#define COMPILE_REGEXP(name,pattern,options) \ - static void compile_regexp_##name (void) __attribute__((constructor)); \ - static void free_regexp_##name (void) __attribute__((destructor)); \ - static pcre *name; \ - \ - static void \ - compile_regexp_##name (void) \ - { \ - const char *err; \ - int offset; \ - name = pcre_compile ((pattern), (options), &err, &offset, NULL); \ - if (name == NULL) { \ - ignore_value (write (2, err, strlen (err))); \ - abort (); \ - } \ - } \ - \ - static void \ - free_regexp_##name (void) \ - { \ - pcre_free (name); \ - } +#define COMPILE_REGEXP(name, pattern, options) \ + static void compile_regexp_##name (void) __attribute__ ((constructor)); \ + static void free_regexp_##name (void) __attribute__ ((destructor)); \ + static pcre *name; \ + \ + static void compile_regexp_##name (void) \ + { \ + const char *err; \ + int offset; \ + name = pcre_compile ((pattern), (options), &err, &offset, NULL); \ + if (name == NULL) { \ + ignore_value (write (2, err, strlen (err))); \ + abort (); \ + } \ + } \ + \ + static void free_regexp_##name (void) { pcre_free (name); } /* The type field of a parsed mountable. * @@ -98,9 +97,9 @@ */ typedef enum { - MOUNTABLE_DEVICE, /* A bare device */ - MOUNTABLE_BTRFSVOL, /* A btrfs subvolume: device + volume */ - MOUNTABLE_PATH /* An already mounted path: device = path */ + MOUNTABLE_DEVICE, /* A bare device */ + MOUNTABLE_BTRFSVOL, /* A btrfs subvolume: device + volume */ + MOUNTABLE_PATH /* An already mounted path: device = path */ } mountable_type_t; #endif /* GUESTFS_INTERNAL_ALL_H_ */ diff --git a/src/guestfs-internal-frontend.h b/src/guestfs-internal-frontend.h index 7f10906..8c889b7 100644 --- a/src/guestfs-internal-frontend.h +++ b/src/guestfs-internal-frontend.h @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ /* NB: This contains ONLY definitions which are shared by libguestfs @@ -32,31 +33,33 @@ #include "guestfs-internal-all.h" -#define _(str) dgettext(PACKAGE, (str)) -#define N_(str) dgettext(PACKAGE, (str)) +#define _(str) dgettext (PACKAGE, (str)) +#define N_(str) dgettext (PACKAGE, (str)) #ifdef HAVE_ATTRIBUTE_CLEANUP -#define CLEANUP_FREE __attribute__((cleanup(guestfs_int_cleanup_free))) -#define CLEANUP_FREE_STRING_LIST \ - __attribute__((cleanup(guestfs_int_cleanup_free_string_list))) -#define CLEANUP_HASH_FREE \ - __attribute__((cleanup(guestfs_int_cleanup_hash_free))) -#define CLEANUP_UNLINK_FREE \ - __attribute__((cleanup(guestfs_int_cleanup_unlink_free))) -#define CLEANUP_XMLBUFFERFREE \ - __attribute__((cleanup(guestfs_int_cleanup_xmlBufferFree))) -#define CLEANUP_XMLFREEDOC \ - __attribute__((cleanup(guestfs_int_cleanup_xmlFreeDoc))) -#define CLEANUP_XMLFREEURI \ - __attribute__((cleanup(guestfs_int_cleanup_xmlFreeURI))) -#define CLEANUP_XMLFREETEXTWRITER \ - __attribute__((cleanup(guestfs_int_cleanup_xmlFreeTextWriter))) -#define CLEANUP_XMLXPATHFREECONTEXT \ - __attribute__((cleanup(guestfs_int_cleanup_xmlXPathFreeContext))) -#define CLEANUP_XMLXPATHFREEOBJECT \ - __attribute__((cleanup(guestfs_int_cleanup_xmlXPathFreeObject))) -#define CLEANUP_FCLOSE __attribute__((cleanup(guestfs_int_cleanup_fclose))) -#define CLEANUP_PCLOSE __attribute__((cleanup(guestfs_int_cleanup_pclose))) +#define CLEANUP_FREE __attribute__ ((cleanup (guestfs_int_cleanup_free))) +#define CLEANUP_FREE_STRING_LIST \ + __attribute__ ((cleanup (guestfs_int_cleanup_free_string_list))) +#define CLEANUP_HASH_FREE \ + __attribute__ ((cleanup (guestfs_int_cleanup_hash_free))) +#define CLEANUP_UNLINK_FREE \ + __attribute__ ((cleanup (guestfs_int_cleanup_unlink_free))) +#define CLEANUP_XMLBUFFERFREE \ + __attribute__ ((cleanup (guestfs_int_cleanup_xmlBufferFree))) +#define CLEANUP_XMLFREEDOC \ + __attribute__ ((cleanup (guestfs_int_cleanup_xmlFreeDoc))) +#define CLEANUP_XMLFREEURI \ + __attribute__ ((cleanup (guestfs_int_cleanup_xmlFreeURI))) +#define CLEANUP_XMLFREETEXTWRITER \ + __attribute__ ((cleanup (guestfs_int_cleanup_xmlFreeTextWriter))) +#define CLEANUP_XMLXPATHFREECONTEXT \ + __attribute__ ((cleanup (guestfs_int_cleanup_xmlXPathFreeContext))) +#define CLEANUP_XMLXPATHFREEOBJECT \ + __attribute__ ((cleanup (guestfs_int_cleanup_xmlXPathFreeObject))) +#define CLEANUP_FCLOSE \ + __attribute__ ((cleanup (guestfs_int_cleanup_fclose))) +#define CLEANUP_PCLOSE \ + __attribute__ ((cleanup (guestfs_int_cleanup_pclose))) #else #define CLEANUP_FREE #define CLEANUP_FREE_STRING_LIST @@ -79,7 +82,10 @@ extern char *guestfs_int_concat_strings (char *const *); extern char **guestfs_int_copy_string_list (char *const *); extern char *guestfs_int_join_strings (const char *sep, char *const *); extern char **guestfs_int_split_string (char sep, const char *); -extern char *guestfs_int_exit_status_to_string (int status, const char *cmd_name, char *buffer, size_t buflen); +extern char *guestfs_int_exit_status_to_string (int status, + const char *cmd_name, + char *buffer, + size_t buflen); extern int guestfs_int_random_string (char *ret, size_t len); extern char *guestfs_int_drive_name (size_t index, char *ret); extern ssize_t guestfs_int_drive_index (const char *); @@ -113,36 +119,38 @@ extern void guestfs_int_cleanup_pclose (void *ptr); * that want to use 'guestfs_int_program_name'. */ #if HAVE_DECL_PROGRAM_INVOCATION_SHORT_NAME == 1 -# define guestfs_int_program_name program_invocation_short_name +#define guestfs_int_program_name program_invocation_short_name #elif HAVE_GETPROGNAME -# define guestfs_int_program_name getprogname() +#define guestfs_int_program_name getprogname () #else -# define guestfs_int_program_name "libguestfs" +#define guestfs_int_program_name "libguestfs" #endif /* Close all file descriptors matching the condition. */ -#define close_file_descriptors(cond) do { \ - int max_fd = sysconf (_SC_OPEN_MAX); \ - int fd; \ - if (max_fd == -1) \ - max_fd = 1024; \ - if (max_fd > 65536) \ - max_fd = 65536; /* bound the amount of work we do here */ \ - for (fd = 0; fd < max_fd; ++fd) { \ - if (cond) \ - close (fd); \ - } \ +#define close_file_descriptors(cond) \ + do { \ + int max_fd = sysconf (_SC_OPEN_MAX); \ + int fd; \ + if (max_fd == -1) \ + max_fd = 1024; \ + if (max_fd > 65536) \ + max_fd = 65536; /* bound the amount of work we do here */ \ + for (fd = 0; fd < max_fd; ++fd) { \ + if (cond) \ + close (fd); \ + } \ } while (0) /* Not all language bindings know how to deal with Pointer arguments. * Those that don't will use this macro which complains noisily and * returns NULL. */ -#define POINTER_NOT_IMPLEMENTED(type) \ - ( \ - fprintf (stderr, "*** WARNING: this language binding does not support conversion of Pointer(%s), so the current function will always fail. Patches to fix this should be sent to the libguestfs upstream mailing list.\n", \ - type), \ - NULL \ -) +#define POINTER_NOT_IMPLEMENTED(type) \ + (fprintf (stderr, "*** WARNING: this language binding does not support " \ + "conversion of Pointer(%s), so the current function " \ + "will always fail. Patches to fix this should be " \ + "sent to the libguestfs upstream mailing list.\n", \ + type), \ + NULL) #endif /* GUESTFS_INTERNAL_FRONTEND_H_ */ diff --git a/src/guestfs-internal.h b/src/guestfs-internal.h index 61f384c..6fc9aec 100644 --- a/src/guestfs-internal.h +++ b/src/guestfs-internal.h @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #ifndef GUESTFS_INTERNAL_H_ @@ -21,7 +22,7 @@ #include <stdbool.h> -#include <rpc/types.h> /* Needed on libc's different than glibc. */ +#include <rpc/types.h> /* Needed on libc's different than glibc. */ #include <rpc/xdr.h> #include <pcre.h> @@ -34,9 +35,9 @@ #define MIN_LIBVIRT_MAJOR 0 #define MIN_LIBVIRT_MINOR 10 #define MIN_LIBVIRT_MICRO 2 /* XXX patches in > 2 already */ -#define MIN_LIBVIRT_VERSION (MIN_LIBVIRT_MAJOR * 1000000 + \ - MIN_LIBVIRT_MINOR * 1000 + \ - MIN_LIBVIRT_MICRO) +#define MIN_LIBVIRT_VERSION \ + (MIN_LIBVIRT_MAJOR * 1000000 + MIN_LIBVIRT_MINOR * 1000 + \ + MIN_LIBVIRT_MICRO) #ifdef HAVE_LIBVIRT #include <libvirt/libvirt.h> @@ -52,15 +53,14 @@ #if ENABLE_PROBES #include <sys/sdt.h> /* NB: The 'name' parameter is a literal identifier, NOT a string! */ -#define TRACE0(name) DTRACE_PROBE(guestfs, name) -#define TRACE1(name, arg1) \ - DTRACE_PROBE(guestfs, name, (arg1)) -#define TRACE2(name, arg1, arg2) \ - DTRACE_PROBE(guestfs, name, (arg1), (arg2)) -#define TRACE3(name, arg1, arg2, arg3) \ - DTRACE_PROBE(guestfs, name, (arg1), (arg2), (arg3)) -#define TRACE4(name, arg1, arg2, arg3, arg4) \ - DTRACE_PROBE(guestfs, name, (arg1), (arg2), (arg3), (arg4)) +#define TRACE0(name) DTRACE_PROBE (guestfs, name) +#define TRACE1(name, arg1) DTRACE_PROBE (guestfs, name, (arg1)) +#define TRACE2(name, arg1, arg2) \ + DTRACE_PROBE (guestfs, name, (arg1), (arg2)) +#define TRACE3(name, arg1, arg2, arg3) \ + DTRACE_PROBE (guestfs, name, (arg1), (arg2), (arg3)) +#define TRACE4(name, arg1, arg2, arg3, arg4) \ + DTRACE_PROBE (guestfs, name, (arg1), (arg2), (arg3), (arg4)) #else /* !ENABLE_PROBES */ #define TRACE0(name) #define TRACE1(name, arg1) @@ -77,8 +77,8 @@ * creating device nodes. */ #ifdef __powerpc__ -# define DEFAULT_MEMSIZE 768 -# define MIN_MEMSIZE 256 +#define DEFAULT_MEMSIZE 768 +#define MIN_MEMSIZE 256 #endif /* Kernel 3.19 is unable to uncompress the initramfs on aarch64 unless @@ -87,16 +87,16 @@ * common on aarch64, treat this like the ppc case above. */ #ifdef __aarch64__ -# define DEFAULT_MEMSIZE 768 -# define MIN_MEMSIZE 256 +#define DEFAULT_MEMSIZE 768 +#define MIN_MEMSIZE 256 #endif /* The default and minimum memory size for most users. */ #ifndef DEFAULT_MEMSIZE -# define DEFAULT_MEMSIZE 500 +#define DEFAULT_MEMSIZE 500 #endif #ifndef MIN_MEMSIZE -# define MIN_MEMSIZE 128 +#define MIN_MEMSIZE 128 #endif /* Timeout waiting for appliance to come up (seconds). @@ -105,7 +105,7 @@ * configurable. Also it interacts with libguestfs-test-tool -t * option. */ -#define APPLIANCE_TIMEOUT (20*60) /* 20 mins */ +#define APPLIANCE_TIMEOUT (20 * 60) /* 20 mins */ /* Some limits on what the inspection code will read, for safety. */ @@ -121,15 +121,15 @@ * create a lot of metadata so we really need to be careful about * those. */ -#define MAX_SMALL_FILE_SIZE (2 * 1000 * 1000) -#define MAX_AUGEAS_FILE_SIZE (100 * 1000) +#define MAX_SMALL_FILE_SIZE (2 * 1000 * 1000) +#define MAX_AUGEAS_FILE_SIZE (100 * 1000) /* Maximum RPM or dpkg database we will download to /tmp. RPM * 'Packages' database can get very large: 70 MB is roughly the * standard size for a new Fedora install, and after lots of package * installation/removal I have seen well over 100 MB databases. */ -#define MAX_PKG_DB_SIZE (300 * 1000 * 1000) +#define MAX_PKG_DB_SIZE (300 * 1000 * 1000) /* Maximum size of Windows explorer.exe. 2.6MB on Windows 7. */ #define MAX_WINDOWS_EXPLORER_SIZE (4 * 1000 * 1000) @@ -163,11 +163,11 @@ /* Guestfs handle and associated structures. */ /* State. */ -enum state { CONFIG = 0, LAUNCHING = 1, READY = 2, - NO_HANDLE = 0xebadebad }; +enum state { CONFIG = 0, LAUNCHING = 1, READY = 2, NO_HANDLE = 0xebadebad }; /* Event. */ -struct event { +struct event +{ uint64_t event_bitmask; guestfs_event_callback cb; void *opaque; @@ -195,36 +195,40 @@ enum drive_protocol { }; enum drive_transport { - drive_transport_none = 0, /* no transport specified */ - drive_transport_tcp, /* +tcp */ - drive_transport_unix, /* +unix */ + drive_transport_none = 0, /* no transport specified */ + drive_transport_tcp, /* +tcp */ + drive_transport_unix, /* +unix */ /* XXX In theory gluster+rdma could be supported here, but * I have no idea what gluster+rdma URLs would look like. */ }; -struct drive_server { +struct drive_server +{ enum drive_transport transport; /* This field is always non-NULL. */ - union { - char *hostname; /* hostname or IP address as a string */ - char *socket; /* Unix domain socket */ + union + { + char *hostname; /* hostname or IP address as a string */ + char *socket; /* Unix domain socket */ } u; - int port; /* port number */ + int port; /* port number */ }; -struct drive_source { +struct drive_source +{ enum drive_protocol protocol; /* Format (eg. raw, qcow2). NULL = autodetect. */ char *format; /* This field is always non-NULL. It may be an empty string. */ - union { - char *path; /* path to file (file) */ - char *exportname; /* name of export (nbd) */ + union + { + char *path; /* path to file (file) */ + char *exportname; /* name of export (nbd) */ } u; /* For network transports, zero or more servers can be specified here. @@ -247,7 +251,8 @@ enum discard { }; /* There is one 'struct drive' per drive, including hot-plugged drives. */ -struct drive { +struct drive +{ /* Original source of the drive, eg. file:..., http:... */ struct drive_source src; @@ -272,15 +277,17 @@ struct drive { }; /* Extra hv parameters (from guestfs_config). */ -struct hv_param { +struct hv_param +{ struct hv_param *next; char *hv_param; - char *hv_value; /* May be NULL. */ + char *hv_value; /* May be NULL. */ }; /* Backend operations. */ -struct backend_ops { +struct backend_ops +{ /* Size (in bytes) of the per-handle data structure needed by this * backend. The data pointer is allocated and freed by libguestfs * and passed to the functions in the 'void *data' parameter. @@ -305,15 +312,18 @@ struct backend_ops { int (*max_disks) (guestfs_h *g, void *data); /* Hotplugging drives. */ - int (*hot_add_drive) (guestfs_h *g, void *data, struct drive *drv, size_t drv_index); - int (*hot_remove_drive) (guestfs_h *g, void *data, struct drive *drv, size_t drv_index); + int (*hot_add_drive) (guestfs_h *g, void *data, struct drive *drv, + size_t drv_index); + int (*hot_remove_drive) (guestfs_h *g, void *data, struct drive *drv, + size_t drv_index); }; /* Connection module. A 'connection' represents the appliance console * connection plus the daemon connection. It hides the underlying * representation (POSIX sockets, virStreamPtr). */ -struct connection { +struct connection +{ const struct connection_ops *ops; /* In the real struct, private data used by each connection module @@ -321,8 +331,10 @@ struct connection { */ }; -struct connection_ops { - /* Close everything and free the connection struct and any internal data. */ +struct connection_ops +{ + /* Close everything and free the connection struct and any internal data. + */ void (*free_connection) (guestfs_h *g, struct connection *); /* Accept the connection (back to us) from the daemon. @@ -343,24 +355,29 @@ struct connection_ops { * return 0 to mean that the appliance closed the connection or * otherwise went away. -1 means there's an error. */ - ssize_t (*read_data) (guestfs_h *g, struct connection *, void *buf, size_t len); - ssize_t (*write_data) (guestfs_h *g, struct connection *, const void *buf, size_t len); + ssize_t (*read_data) (guestfs_h *g, struct connection *, void *buf, + size_t len); + ssize_t (*write_data) (guestfs_h *g, struct connection *, const void *buf, + size_t len); - /* Test if data is available to read on the daemon socket, without blocking. + /* Test if data is available to read on the daemon socket, without + * blocking. * Returns: 1 = yes, 0 = no, -1 = error */ int (*can_read_data) (guestfs_h *g, struct connection *); }; /* Stack of old error handlers. */ -struct error_cb_stack { - struct error_cb_stack *next; +struct error_cb_stack +{ + struct error_cb_stack *next; guestfs_error_handler_cb error_cb; - void * error_cb_data; + void *error_cb_data; }; /* Cached queried features. */ -struct cached_feature { +struct cached_feature +{ char *group; int result; }; @@ -368,31 +385,31 @@ struct cached_feature { /* The libguestfs handle. */ struct guestfs_h { - struct guestfs_h *next; /* Linked list of open handles. */ - enum state state; /* See the state machine diagram in guestfs(3)*/ + struct guestfs_h *next; /* Linked list of open handles. */ + enum state state; /* See the state machine diagram in guestfs(3)*/ /**** Configuration of the handle. ****/ - bool verbose; /* Debugging. */ - bool trace; /* Trace calls. */ - bool autosync; /* Autosync. */ - bool direct_mode; /* Direct mode. */ - bool recovery_proc; /* Create a recovery process. */ - bool enable_network; /* Enable the network. */ - bool selinux; /* selinux enabled? */ - bool pgroup; /* Create process group for children? */ - bool close_on_exit; /* Is this handle on the atexit list? */ + bool verbose; /* Debugging. */ + bool trace; /* Trace calls. */ + bool autosync; /* Autosync. */ + bool direct_mode; /* Direct mode. */ + bool recovery_proc; /* Create a recovery process. */ + bool enable_network; /* Enable the network. */ + bool selinux; /* selinux enabled? */ + bool pgroup; /* Create process group for children? */ + bool close_on_exit; /* Is this handle on the atexit list? */ - int smp; /* If > 1, -smp flag passed to hv. */ - int memsize; /* Size of RAM (megabytes). */ + int smp; /* If > 1, -smp flag passed to hv. */ + int memsize; /* Size of RAM (megabytes). */ - char *path; /* Path to the appliance. */ - char *hv; /* Hypervisor (HV) binary. */ - char *append; /* Append to kernel command line. */ + char *path; /* Path to the appliance. */ + char *hv; /* Hypervisor (HV) binary. */ + char *append; /* Append to kernel command line. */ - struct hv_param *hv_params; /* Extra hv parameters. */ + struct hv_param *hv_params; /* Extra hv parameters. */ - char *program; /* Program name. */ - char *identifier; /* Handle identifier. */ + char *program; /* Program name. */ + char *identifier; /* Handle identifier. */ /* Array of drives added by add-drive* APIs. * @@ -414,20 +431,20 @@ struct guestfs_h struct drive **drives; size_t nr_drives; -#define ITER_DRIVES(g,i,drv) \ - for (i = 0; i < (g)->nr_drives; ++i) \ +#define ITER_DRIVES(g, i, drv) \ + for (i = 0; i < (g)->nr_drives; ++i) \ if (((drv) = (g)->drives[i]) != NULL) /* Backend. NB: Use guestfs_int_set_backend to change the backend. */ - char *backend; /* The full string, always non-NULL. */ - char *backend_arg; /* Pointer to the argument part. */ + char *backend; /* The full string, always non-NULL. */ + char *backend_arg; /* Pointer to the argument part. */ const struct backend_ops *backend_ops; - void *backend_data; /* Per-handle data. */ - char **backend_settings; /* Backend settings (can be NULL). */ + void *backend_data; /* Per-handle data. */ + char **backend_settings; /* Backend settings (can be NULL). */ /**** Runtime information. ****/ - char *last_error; /* Last error on handle. */ - int last_errnum; /* errno, or 0 if there was no errno */ + char *last_error; /* Last error on handle. */ + int last_errnum; /* errno, or 0 if there was no errno */ /* Temporary and cache directories. */ /* The actual temporary directory - this is not created with the @@ -436,18 +453,19 @@ struct guestfs_h char *tmpdir; char *sockdir; /* Environment variables that affect tmpdir/cachedir/sockdir locations. */ - char *env_tmpdir; /* $TMPDIR (NULL if not set) */ - char *env_runtimedir; /* $XDG_RUNTIME_DIR (NULL if not set)*/ + char *env_tmpdir; /* $TMPDIR (NULL if not set) */ + char *env_runtimedir; /* $XDG_RUNTIME_DIR (NULL if not set)*/ char *int_tmpdir; /* $LIBGUESTFS_TMPDIR or guestfs_set_tmpdir or NULL */ - char *int_cachedir; /* $LIBGUESTFS_CACHEDIR or guestfs_set_cachedir or NULL */ + char *int_cachedir; /* $LIBGUESTFS_CACHEDIR or guestfs_set_cachedir or + NULL */ /* Error handler, plus stack of old error handlers. */ - guestfs_error_handler_cb error_cb; - void * error_cb_data; - struct error_cb_stack *error_cb_stack; + guestfs_error_handler_cb error_cb; + void *error_cb_data; + struct error_cb_stack *error_cb_stack; /* Out of memory error handler. */ - guestfs_abort_cb abort_cb; + guestfs_abort_cb abort_cb; /* Events. */ struct event *events; @@ -468,7 +486,7 @@ struct guestfs_h */ int user_cancel; - struct timeval launch_t; /* The time that we called guestfs_launch. */ + struct timeval launch_t; /* The time that we called guestfs_launch. */ /* Used by bindtests. */ FILE *test_fp; @@ -480,7 +498,7 @@ struct guestfs_h int unique; /*** Protocol. ***/ - struct connection *conn; /* Connection to appliance. */ + struct connection *conn; /* Connection to appliance. */ int msg_next_serial; #if HAVE_FUSE @@ -490,11 +508,11 @@ struct guestfs_h int ml_dir_cache_timeout; /* Directory cache timeout. */ Hash_table *lsc_ht, *xac_ht, *rlc_ht; /* Directory cache. */ int ml_read_only; /* If mounted read-only. */ - int ml_debug_calls; /* Extra debug info on each FUSE call. */ + int ml_debug_calls; /* Extra debug info on each FUSE call. */ #endif #ifdef HAVE_LIBVIRT_BACKEND - /* Used by src/libvirt-auth.c. */ +/* Used by src/libvirt-auth.c. */ #define NR_CREDENTIAL_TYPES 9 unsigned int nr_supported_credentials; int supported_credentials[NR_CREDENTIAL_TYPES]; @@ -590,7 +608,8 @@ enum inspect_os_package_management { OS_PACKAGE_MANAGEMENT_APK, }; -struct inspect_fs { +struct inspect_fs +{ int is_root; char *mountable; enum inspect_os_type type; @@ -614,7 +633,8 @@ struct inspect_fs { size_t nr_fstab; }; -struct inspect_fstab_entry { +struct inspect_fstab_entry +{ char *mountable; char *mountpoint; }; @@ -624,19 +644,24 @@ struct guestfs_message_error; struct guestfs_progress; /* handle.c */ -extern int guestfs_int_get_backend_setting_bool (guestfs_h *g, const char *name); +extern int guestfs_int_get_backend_setting_bool (guestfs_h *g, + const char *name); /* alloc.c */ extern void *guestfs_int_safe_malloc (guestfs_h *g, size_t nbytes); extern void *guestfs_int_safe_calloc (guestfs_h *g, size_t n, size_t s); extern char *guestfs_int_safe_strdup (guestfs_h *g, const char *str); -extern void *guestfs_int_safe_memdup (guestfs_h *g, const void *ptr, size_t size); -extern void *guestfs_int_safe_realloc (guestfs_h *g, void *ptr, size_t nbytes); +extern void *guestfs_int_safe_memdup (guestfs_h *g, const void *ptr, + size_t size); +extern void *guestfs_int_safe_realloc (guestfs_h *g, void *ptr, + size_t nbytes); extern char *guestfs_int_safe_strdup (guestfs_h *g, const char *str); -extern char *guestfs_int_safe_strndup (guestfs_h *g, const char *str, size_t n); -extern void *guestfs_int_safe_memdup (guestfs_h *g, const void *ptr, size_t size); +extern char *guestfs_int_safe_strndup (guestfs_h *g, const char *str, + size_t n); +extern void *guestfs_int_safe_memdup (guestfs_h *g, const void *ptr, + size_t size); extern char *guestfs_int_safe_asprintf (guestfs_h *g, const char *fs, ...) - __attribute__((format (printf,2,3))); + __attribute__ ((format (printf, 2, 3))); #define safe_calloc guestfs_int_safe_calloc #define safe_malloc guestfs_int_safe_malloc @@ -649,59 +674,82 @@ extern char *guestfs_int_safe_asprintf (guestfs_h *g, const char *fs, ...) /* errors.c */ extern void guestfs_int_init_error_handler (guestfs_h *g); -extern void guestfs_int_error_errno (guestfs_h *g, int errnum, const char *fs, ...) - __attribute__((format (printf,3,4))); +extern void guestfs_int_error_errno (guestfs_h *g, int errnum, + const char *fs, ...) + __attribute__ ((format (printf, 3, 4))); extern void guestfs_int_perrorf (guestfs_h *g, const char *fs, ...) - __attribute__((format (printf,2,3))); + __attribute__ ((format (printf, 2, 3))); extern void guestfs_int_warning (guestfs_h *g, const char *fs, ...) - __attribute__((format (printf,2,3))); + __attribute__ ((format (printf, 2, 3))); extern void guestfs_int_debug (guestfs_h *g, const char *fs, ...) - __attribute__((format (printf,2,3))); + __attribute__ ((format (printf, 2, 3))); extern void guestfs_int_trace (guestfs_h *g, const char *fs, ...) - __attribute__((format (printf,2,3))); + __attribute__ ((format (printf, 2, 3))); -extern void guestfs_int_print_BufferIn (FILE *out, const char *buf, size_t buf_size); -extern void guestfs_int_print_BufferOut (FILE *out, const char *buf, size_t buf_size); +extern void guestfs_int_print_BufferIn (FILE *out, const char *buf, + size_t buf_size); +extern void guestfs_int_print_BufferOut (FILE *out, const char *buf, + size_t buf_size); -#define error(g,...) guestfs_int_error_errno((g),0,__VA_ARGS__) +#define error(g, ...) guestfs_int_error_errno ((g), 0, __VA_ARGS__) #define perrorf guestfs_int_perrorf -#define warning(g,...) guestfs_int_warning((g),__VA_ARGS__) -#define debug(g,...) \ - do { if ((g)->verbose) guestfs_int_debug ((g),__VA_ARGS__); } while (0) +#define warning(g, ...) guestfs_int_warning ((g), __VA_ARGS__) +#define debug(g, ...) \ + do { \ + if ((g)->verbose) \ + guestfs_int_debug ((g), __VA_ARGS__); \ + } while (0) -#define NOT_SUPPORTED(g,errcode,...) \ - do { \ - guestfs_int_error_errno ((g), ENOTSUP, __VA_ARGS__); \ - return (errcode); \ - } \ - while (0) +#define NOT_SUPPORTED(g, errcode, ...) \ + do { \ + guestfs_int_error_errno ((g), ENOTSUP, __VA_ARGS__); \ + return (errcode); \ + } while (0) extern void guestfs_int_launch_failed_error (guestfs_h *g); extern void guestfs_int_unexpected_close_error (guestfs_h *g); extern void guestfs_int_launch_timeout (guestfs_h *g); -extern void guestfs_int_external_command_failed (guestfs_h *g, int status, const char *cmd_name, const char *extra); +extern void guestfs_int_external_command_failed (guestfs_h *g, int status, + const char *cmd_name, + const char *extra); /* actions-support.c */ -struct trace_buffer { +struct trace_buffer +{ FILE *fp; char *buf; size_t len; bool opened; }; -extern int guestfs_int_check_reply_header (guestfs_h *g, const struct guestfs_message_header *hdr, unsigned int proc_nr, unsigned int serial); -extern int guestfs_int_check_appliance_up (guestfs_h *g, const char *caller); +extern int +guestfs_int_check_reply_header (guestfs_h *g, + const struct guestfs_message_header *hdr, + unsigned int proc_nr, unsigned int serial); +extern int guestfs_int_check_appliance_up (guestfs_h *g, + const char *caller); extern void guestfs_int_trace_open (struct trace_buffer *tb); -extern void guestfs_int_trace_send_line (guestfs_h *g, struct trace_buffer *tb); +extern void guestfs_int_trace_send_line (guestfs_h *g, + struct trace_buffer *tb); /* match.c */ -extern int guestfs_int_match (guestfs_h *g, const char *str, const pcre *re); -extern char *guestfs_int_match1 (guestfs_h *g, const char *str, const pcre *re); -extern int guestfs_int_match2 (guestfs_h *g, const char *str, const pcre *re, char **ret1, char **ret2); -extern int guestfs_int_match3 (guestfs_h *g, const char *str, const pcre *re, char **ret1, char **ret2, char **ret3); -extern int guestfs_int_match4 (guestfs_h *g, const char *str, const pcre *re, char **ret1, char **ret2, char **ret3, char **ret4); -extern int guestfs_int_match6 (guestfs_h *g, const char *str, const pcre *re, char **ret1, char **ret2, char **ret3, char **ret4, char **ret5, char **ret6); +extern int guestfs_int_match (guestfs_h *g, const char *str, + const pcre *re); +extern char *guestfs_int_match1 (guestfs_h *g, const char *str, + const pcre *re); +extern int guestfs_int_match2 (guestfs_h *g, const char *str, + const pcre *re, char **ret1, char **ret2); +extern int guestfs_int_match3 (guestfs_h *g, const char *str, + const pcre *re, char **ret1, char **ret2, + char **ret3); +extern int guestfs_int_match4 (guestfs_h *g, const char *str, + const pcre *re, char **ret1, char **ret2, + char **ret3, char **ret4); +extern int guestfs_int_match6 (guestfs_h *g, const char *str, + const pcre *re, char **ret1, char **ret2, + char **ret3, char **ret4, char **ret5, + char **ret6); #define match guestfs_int_match #define match1 guestfs_int_match1 @@ -711,123 +759,192 @@ extern int guestfs_int_match6 (guestfs_h *g, const char *str, const pcre *re, ch #define match6 guestfs_int_match6 /* stringsbuf.c */ -struct stringsbuf { +struct stringsbuf +{ char **argv; size_t size; size_t alloc; }; -#define DECLARE_STRINGSBUF(v) \ - struct stringsbuf (v) = { .argv = NULL, .size = 0, .alloc = 0 } +#define DECLARE_STRINGSBUF(v) \ + struct stringsbuf (v) = {.argv = NULL, .size = 0, .alloc = 0 } -extern void guestfs_int_add_string_nodup (guestfs_h *g, struct stringsbuf *sb, char *str); -extern void guestfs_int_add_string (guestfs_h *g, struct stringsbuf *sb, const char *str); -extern void guestfs_int_add_sprintf (guestfs_h *g, struct stringsbuf *sb, const char *fs, ...) - __attribute__((format (printf,3,4))); -extern void guestfs_int_end_stringsbuf (guestfs_h *g, struct stringsbuf *sb); +extern void guestfs_int_add_string_nodup (guestfs_h *g, + struct stringsbuf *sb, char *str); +extern void guestfs_int_add_string (guestfs_h *g, struct stringsbuf *sb, + const char *str); +extern void guestfs_int_add_sprintf (guestfs_h *g, struct stringsbuf *sb, + const char *fs, ...) + __attribute__ ((format (printf, 3, 4))); +extern void guestfs_int_end_stringsbuf (guestfs_h *g, + struct stringsbuf *sb); extern void guestfs_int_free_stringsbuf (struct stringsbuf *sb); #ifdef HAVE_ATTRIBUTE_CLEANUP -#define CLEANUP_FREE_STRINGSBUF __attribute__((cleanup(guestfs_int_cleanup_free_stringsbuf))) +#define CLEANUP_FREE_STRINGSBUF \ + __attribute__ ((cleanup (guestfs_int_cleanup_free_stringsbuf))) #else #define CLEANUP_FREE_STRINGSBUF #endif extern void guestfs_int_cleanup_free_stringsbuf (struct stringsbuf *sb); /* proto.c */ -extern int guestfs_int_send (guestfs_h *g, int proc_nr, uint64_t progress_hint, uint64_t optargs_bitmask, xdrproc_t xdrp, char *args); -extern int guestfs_int_recv (guestfs_h *g, const char *fn, struct guestfs_message_header *hdr, struct guestfs_message_error *err, xdrproc_t xdrp, char *ret); +extern int guestfs_int_send (guestfs_h *g, int proc_nr, + uint64_t progress_hint, + uint64_t optargs_bitmask, xdrproc_t xdrp, + char *args); +extern int guestfs_int_recv (guestfs_h *g, const char *fn, + struct guestfs_message_header *hdr, + struct guestfs_message_error *err, + xdrproc_t xdrp, char *ret); extern int guestfs_int_recv_discard (guestfs_h *g, const char *fn); extern int guestfs_int_send_file (guestfs_h *g, const char *filename); extern int guestfs_int_recv_file (guestfs_h *g, const char *filename); -extern int guestfs_int_recv_from_daemon (guestfs_h *g, uint32_t *size_rtn, void **buf_rtn); -extern void guestfs_int_progress_message_callback (guestfs_h *g, const struct guestfs_progress *message); -extern void guestfs_int_log_message_callback (guestfs_h *g, const char *buf, size_t len); +extern int guestfs_int_recv_from_daemon (guestfs_h *g, uint32_t *size_rtn, + void **buf_rtn); +extern void guestfs_int_progress_message_callback ( + guestfs_h *g, const struct guestfs_progress *message); +extern void guestfs_int_log_message_callback (guestfs_h *g, const char *buf, + size_t len); /* conn-socket.c */ -extern struct connection *guestfs_int_new_conn_socket_listening (guestfs_h *g, int daemon_accept_sock, int console_sock); -extern struct connection *guestfs_int_new_conn_socket_connected (guestfs_h *g, int daemon_sock, int console_sock); +extern struct connection * +guestfs_int_new_conn_socket_listening (guestfs_h *g, int daemon_accept_sock, + int console_sock); +extern struct connection * +guestfs_int_new_conn_socket_connected (guestfs_h *g, int daemon_sock, + int console_sock); /* events.c */ extern void guestfs_int_call_callbacks_void (guestfs_h *g, uint64_t event); -extern void guestfs_int_call_callbacks_message (guestfs_h *g, uint64_t event, const char *buf, size_t buf_len); -extern void guestfs_int_call_callbacks_array (guestfs_h *g, uint64_t event, const uint64_t *array, size_t array_len); +extern void guestfs_int_call_callbacks_message (guestfs_h *g, + uint64_t event, + const char *buf, + size_t buf_len); +extern void guestfs_int_call_callbacks_array (guestfs_h *g, uint64_t event, + const uint64_t *array, + size_t array_len); /* tmpdirs.c */ extern int guestfs_int_set_env_tmpdir (guestfs_h *g, const char *tmpdir); -extern int guestfs_int_set_env_runtimedir (guestfs_h *g, const char *runtimedir); +extern int guestfs_int_set_env_runtimedir (guestfs_h *g, + const char *runtimedir); extern int guestfs_int_lazy_make_tmpdir (guestfs_h *g); extern int guestfs_int_lazy_make_sockdir (guestfs_h *g); extern void guestfs_int_remove_tmpdir (guestfs_h *g); extern void guestfs_int_remove_sockdir (guestfs_h *g); -extern void guestfs_int_recursive_remove_dir (guestfs_h *g, const char *dir); +extern void guestfs_int_recursive_remove_dir (guestfs_h *g, + const char *dir); /* whole-file.c */ -extern int guestfs_int_read_whole_file (guestfs_h *g, const char *filename, char **data_r, size_t *size_r); +extern int guestfs_int_read_whole_file (guestfs_h *g, const char *filename, + char **data_r, size_t *size_r); /* drives.c */ extern size_t guestfs_int_checkpoint_drives (guestfs_h *g); extern void guestfs_int_rollback_drives (guestfs_h *g, size_t); extern void guestfs_int_add_dummy_appliance_drive (guestfs_h *g); extern void guestfs_int_free_drives (guestfs_h *g); -extern const char *guestfs_int_drive_protocol_to_string (enum drive_protocol protocol); +extern const char * +guestfs_int_drive_protocol_to_string (enum drive_protocol protocol); /* appliance.c */ -extern int guestfs_int_build_appliance (guestfs_h *g, char **kernel, char **initrd, char **appliance); +extern int guestfs_int_build_appliance (guestfs_h *g, char **kernel, + char **initrd, char **appliance); extern int guestfs_int_get_uefi (guestfs_h *g, char **code, char **vars); /* launch.c */ -extern int64_t guestfs_int_timeval_diff (const struct timeval *x, const struct timeval *y); +extern int64_t guestfs_int_timeval_diff (const struct timeval *x, + const struct timeval *y); extern void guestfs_int_launch_send_progress (guestfs_h *g, int perdozen); -extern char *guestfs_int_appliance_command_line (guestfs_h *g, const char *appliance_dev, int flags); +extern char *guestfs_int_appliance_command_line (guestfs_h *g, + const char *appliance_dev, + int flags); #define APPLIANCE_COMMAND_LINE_IS_TCG 1 const char *guestfs_int_get_cpu_model (int kvm); -int guestfs_int_create_socketname (guestfs_h *g, const char *filename, char (*sockname)[UNIX_PATH_MAX]); -extern void guestfs_int_register_backend (const char *name, const struct backend_ops *); +int guestfs_int_create_socketname (guestfs_h *g, const char *filename, + char (*sockname)[UNIX_PATH_MAX]); +extern void guestfs_int_register_backend (const char *name, + const struct backend_ops *); extern int guestfs_int_set_backend (guestfs_h *g, const char *method); /* inspect.c */ extern void guestfs_int_free_inspect_info (guestfs_h *g); -extern char *guestfs_int_download_to_tmp (guestfs_h *g, struct inspect_fs *fs, const char *filename, const char *basename, uint64_t max_size); -extern struct inspect_fs *guestfs_int_search_for_root (guestfs_h *g, const char *root); +extern char *guestfs_int_download_to_tmp (guestfs_h *g, + struct inspect_fs *fs, + const char *filename, + const char *basename, + uint64_t max_size); +extern struct inspect_fs *guestfs_int_search_for_root (guestfs_h *g, + const char *root); extern int guestfs_int_is_partition (guestfs_h *g, const char *partition); /* inspect-fs.c */ extern int guestfs_int_is_file_nocase (guestfs_h *g, const char *); extern int guestfs_int_is_dir_nocase (guestfs_h *g, const char *); extern int guestfs_int_check_for_filesystem_on (guestfs_h *g, - const char *mountable); + const char *mountable); extern int guestfs_int_parse_unsigned_int (guestfs_h *g, const char *str); -extern int guestfs_int_parse_unsigned_int_ignore_trailing (guestfs_h *g, const char *str); -extern int guestfs_int_parse_major_minor (guestfs_h *g, struct inspect_fs *fs); -extern char *guestfs_int_first_line_of_file (guestfs_h *g, const char *filename); -extern int guestfs_int_first_egrep_of_file (guestfs_h *g, const char *filename, const char *eregex, int iflag, char **ret); -extern void guestfs_int_check_package_format (guestfs_h *g, struct inspect_fs *fs); -extern void guestfs_int_check_package_management (guestfs_h *g, struct inspect_fs *fs); -extern void guestfs_int_merge_fs_inspections (guestfs_h *g, struct inspect_fs *dst, struct inspect_fs *src); +extern int guestfs_int_parse_unsigned_int_ignore_trailing (guestfs_h *g, + const char *str); +extern int guestfs_int_parse_major_minor (guestfs_h *g, + struct inspect_fs *fs); +extern char *guestfs_int_first_line_of_file (guestfs_h *g, + const char *filename); +extern int guestfs_int_first_egrep_of_file (guestfs_h *g, + const char *filename, + const char *eregex, int iflag, + char **ret); +extern void guestfs_int_check_package_format (guestfs_h *g, + struct inspect_fs *fs); +extern void guestfs_int_check_package_management (guestfs_h *g, + struct inspect_fs *fs); +extern void guestfs_int_merge_fs_inspections (guestfs_h *g, + struct inspect_fs *dst, + struct inspect_fs *src); /* inspect-fs-unix.c */ -extern int guestfs_int_check_linux_root (guestfs_h *g, struct inspect_fs *fs); -extern int guestfs_int_check_freebsd_root (guestfs_h *g, struct inspect_fs *fs); -extern int guestfs_int_check_netbsd_root (guestfs_h *g, struct inspect_fs *fs); -extern int guestfs_int_check_openbsd_root (guestfs_h *g, struct inspect_fs *fs); -extern int guestfs_int_check_hurd_root (guestfs_h *g, struct inspect_fs *fs); -extern int guestfs_int_check_minix_root (guestfs_h *g, struct inspect_fs *fs); -extern int guestfs_int_check_coreos_root (guestfs_h *g, struct inspect_fs *fs); -extern int guestfs_int_check_coreos_usr (guestfs_h *g, struct inspect_fs *fs); +extern int guestfs_int_check_linux_root (guestfs_h *g, + struct inspect_fs *fs); +extern int guestfs_int_check_freebsd_root (guestfs_h *g, + struct inspect_fs *fs); +extern int guestfs_int_check_netbsd_root (guestfs_h *g, + struct inspect_fs *fs); +extern int guestfs_int_check_openbsd_root (guestfs_h *g, + struct inspect_fs *fs); +extern int guestfs_int_check_hurd_root (guestfs_h *g, + struct inspect_fs *fs); +extern int guestfs_int_check_minix_root (guestfs_h *g, + struct inspect_fs *fs); +extern int guestfs_int_check_coreos_root (guestfs_h *g, + struct inspect_fs *fs); +extern int guestfs_int_check_coreos_usr (guestfs_h *g, + struct inspect_fs *fs); /* inspect-fs-windows.c */ -extern char *guestfs_int_case_sensitive_path_silently (guestfs_h *g, const char *); -extern char * guestfs_int_get_windows_systemroot (guestfs_h *g); -extern int guestfs_int_check_windows_root (guestfs_h *g, struct inspect_fs *fs, char *windows_systemroot); +extern char *guestfs_int_case_sensitive_path_silently (guestfs_h *g, + const char *); +extern char *guestfs_int_get_windows_systemroot (guestfs_h *g); +extern int guestfs_int_check_windows_root (guestfs_h *g, + struct inspect_fs *fs, + char *windows_systemroot); /* inspect-fs-cd.c */ -extern int guestfs_int_check_installer_root (guestfs_h *g, struct inspect_fs *fs); -extern int guestfs_int_check_installer_iso (guestfs_h *g, struct inspect_fs *fs, const char *device); +extern int guestfs_int_check_installer_root (guestfs_h *g, + struct inspect_fs *fs); +extern int guestfs_int_check_installer_iso (guestfs_h *g, + struct inspect_fs *fs, + const char *device); /* dbdump.c */ -typedef int (*guestfs_int_db_dump_callback) (guestfs_h *g, const unsigned char *key, size_t keylen, const unsigned char *value, size_t valuelen, void *opaque); -extern int guestfs_int_read_db_dump (guestfs_h *g, const char *dumpfile, void *opaque, guestfs_int_db_dump_callback callback); +typedef int (*guestfs_int_db_dump_callback) (guestfs_h *g, + const unsigned char *key, + size_t keylen, + const unsigned char *value, + size_t valuelen, void *opaque); +extern int guestfs_int_read_db_dump (guestfs_h *g, const char *dumpfile, + void *opaque, + guestfs_int_db_dump_callback callback); /* lpj.c */ extern int guestfs_int_get_lpj (guestfs_h *g); @@ -839,11 +956,14 @@ extern void guestfs_int_free_fuse (guestfs_h *g); /* libvirt-auth.c */ #ifdef HAVE_LIBVIRT -extern virConnectPtr guestfs_int_open_libvirt_connection (guestfs_h *g, const char *uri, unsigned int flags); +extern virConnectPtr +guestfs_int_open_libvirt_connection (guestfs_h *g, const char *uri, + unsigned int flags); #endif /* osinfo.c */ -struct osinfo { +struct osinfo +{ /* Data provided by libosinfo database. */ enum inspect_os_type type; enum inspect_os_distro distro; @@ -866,27 +986,38 @@ struct osinfo { pcre *re_publisher_id; pcre *re_application_id; }; -extern int guestfs_int_osinfo_map (guestfs_h *g, const struct guestfs_isoinfo *isoinfo, const struct osinfo **osinfo_ret); +extern int guestfs_int_osinfo_map (guestfs_h *g, + const struct guestfs_isoinfo *isoinfo, + const struct osinfo **osinfo_ret); /* command.c */ struct command; -typedef void (*cmd_stdout_callback) (guestfs_h *g, void *data, const char *line, size_t len); +typedef void (*cmd_stdout_callback) (guestfs_h *g, void *data, + const char *line, size_t len); typedef int (*cmd_child_callback) (guestfs_h *g, void *data); extern struct command *guestfs_int_new_command (guestfs_h *g); extern void guestfs_int_cmd_add_arg (struct command *, const char *arg); -extern void guestfs_int_cmd_add_arg_format (struct command *, const char *fs, ...) - __attribute__((format (printf,2,3))); -extern void guestfs_int_cmd_add_string_unquoted (struct command *, const char *str); -extern void guestfs_int_cmd_add_string_quoted (struct command *, const char *str); -extern void guestfs_int_cmd_set_stdout_callback (struct command *, cmd_stdout_callback stdout_callback, void *data, unsigned flags); -#define CMD_STDOUT_FLAG_LINE_BUFFER 0 -#define CMD_STDOUT_FLAG_UNBUFFERED 1 -#define CMD_STDOUT_FLAG_WHOLE_BUFFER 2 +extern void guestfs_int_cmd_add_arg_format (struct command *, + const char *fs, ...) + __attribute__ ((format (printf, 2, 3))); +extern void guestfs_int_cmd_add_string_unquoted (struct command *, + const char *str); +extern void guestfs_int_cmd_add_string_quoted (struct command *, + const char *str); +extern void +guestfs_int_cmd_set_stdout_callback (struct command *, + cmd_stdout_callback stdout_callback, + void *data, unsigned flags); +#define CMD_STDOUT_FLAG_LINE_BUFFER 0 +#define CMD_STDOUT_FLAG_UNBUFFERED 1 +#define CMD_STDOUT_FLAG_WHOLE_BUFFER 2 extern void guestfs_int_cmd_set_stderr_to_stdout (struct command *); -extern void guestfs_int_cmd_set_child_rlimit (struct command *, int resource, long limit); +extern void guestfs_int_cmd_set_child_rlimit (struct command *, + int resource, long limit); extern void guestfs_int_cmd_clear_capture_errors (struct command *); extern void guestfs_int_cmd_clear_close_files (struct command *); -extern void guestfs_int_cmd_set_child_callback (struct command *, cmd_child_callback child_callback, void *data); +extern void guestfs_int_cmd_set_child_callback ( + struct command *, cmd_child_callback child_callback, void *data); extern int guestfs_int_cmd_run (struct command *); extern void guestfs_int_cmd_close (struct command *); extern int guestfs_int_cmd_pipe_run (struct command *cmd, const char *mode); @@ -894,23 +1025,27 @@ extern int guestfs_int_cmd_pipe_wait (struct command *cmd); extern char *guestfs_int_cmd_get_pipe_errors (struct command *cmd); #ifdef HAVE_ATTRIBUTE_CLEANUP -#define CLEANUP_CMD_CLOSE __attribute__((cleanup(guestfs_int_cleanup_cmd_close))) +#define CLEANUP_CMD_CLOSE \ + __attribute__ ((cleanup (guestfs_int_cleanup_cmd_close))) #else #define CLEANUP_CMD_CLOSE #endif extern void guestfs_int_cleanup_cmd_close (struct command **); /* launch-direct.c */ -extern char *guestfs_int_drive_source_qemu_param (guestfs_h *g, const struct drive_source *src); -extern bool guestfs_int_discard_possible (guestfs_h *g, struct drive *drv, unsigned long qemu_version); +extern char * +guestfs_int_drive_source_qemu_param (guestfs_h *g, + const struct drive_source *src); +extern bool guestfs_int_discard_possible (guestfs_h *g, struct drive *drv, + unsigned long qemu_version); /* launch-*.c constructors */ -void guestfs_int_init_direct_backend (void) __attribute__((constructor)); +void guestfs_int_init_direct_backend (void) __attribute__ ((constructor)); #ifdef HAVE_LIBVIRT_BACKEND -void guestfs_int_init_libvirt_backend (void) __attribute__((constructor)); +void guestfs_int_init_libvirt_backend (void) __attribute__ ((constructor)); #endif -void guestfs_int_init_uml_backend (void) __attribute__((constructor)); -void guestfs_int_init_unix_backend (void) __attribute__((constructor)); +void guestfs_int_init_uml_backend (void) __attribute__ ((constructor)); +void guestfs_int_init_unix_backend (void) __attribute__ ((constructor)); /* guid.c */ extern int guestfs_int_validate_guid (const char *); diff --git a/src/guid.c b/src/guid.c index a69f5ec..46aff44 100644 --- a/src/guid.c +++ b/src/guid.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include <config.h> @@ -28,7 +29,8 @@ #include "guestfs-internal.h" /* Check whether a string supposed to contain a GUID actually contains it. - * It can recognize strings either as '{21EC2020-3AEA-1069-A2DD-08002B30309D}' + * It can recognize strings either as + * '{21EC2020-3AEA-1069-A2DD-08002B30309D}' * or '21EC2020-3AEA-1069-A2DD-08002B30309D'. */ int @@ -40,7 +42,7 @@ guestfs_int_validate_guid (const char *str) case 36: break; case 38: - if (str[0] == '{' && str[len -1] == '}') { + if (str[0] == '{' && str[len - 1] == '}') { ++str; len -= 2; break; diff --git a/src/handle.c b/src/handle.c index 25d3c99..fda9b5f 100644 --- a/src/handle.c +++ b/src/handle.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include <config.h> @@ -48,7 +49,7 @@ gl_lock_define_initialized (static, init_lock); * multiple threads. Hence this constructor function which is called * when libguestfs is first loaded. */ -static void init_libguestfs (void) __attribute__((constructor)); +static void init_libguestfs (void) __attribute__ ((constructor)); static void init_libguestfs (void) @@ -77,7 +78,8 @@ guestfs_create_flags (unsigned flags, ...) guestfs_h *g; g = calloc (1, sizeof (*g)); - if (!g) return NULL; + if (!g) + return NULL; g->state = CONFIG; @@ -100,7 +102,8 @@ guestfs_create_flags (unsigned flags, ...) g->smp = 1; g->path = strdup (GUESTFS_DEFAULT_PATH); - if (!g->path) goto error; + if (!g->path) + goto error; #ifdef QEMU g->hv = strdup (QEMU); @@ -111,9 +114,10 @@ guestfs_create_flags (unsigned flags, ...) */ g->hv = strdup ("false"); #endif - if (!g->hv) goto error; + if (!g->hv) + goto error; - /* Get program name. */ +/* Get program name. */ #if HAVE_DECL_PROGRAM_INVOCATION_SHORT_NAME == 1 if (STRPREFIX (program_invocation_short_name, "lt-")) /* Remove libtool (lt-*) prefix from short name. */ @@ -123,13 +127,16 @@ guestfs_create_flags (unsigned flags, ...) #else g->program = strdup (""); #endif - if (!g->program) goto error; + if (!g->program) + goto error; g->identifier = strdup (""); - if (!g->identifier) goto error; + if (!g->identifier) + goto error; if (guestfs_int_set_backend (g, DEFAULT_BACKEND) == -1) { - warning (g, _("libguestfs was built with an invalid default backend, using 'direct' instead")); + warning (g, _("libguestfs was built with an invalid default backend, " + "using 'direct' instead")); if (guestfs_int_set_backend (g, "direct") == -1) { warning (g, _("'direct' backend does not work")); goto error; @@ -153,12 +160,12 @@ guestfs_create_flags (unsigned flags, ...) gl_lock_unlock (handles_lock); } - debug (g, "create: flags = %u, handle = %p, program = %s", - flags, g, g->program); + debug (g, "create: flags = %u, handle = %p, program = %s", flags, g, + g->program); return g; - error: +error: guestfs_int_free_string_list (g->backend_settings); free (g->backend); free (g->identifier); @@ -251,8 +258,7 @@ parse_environment (guestfs_h *g, if (str && STRNEQ (str, "")) { if (guestfs_set_backend (g, str) == -1) return -1; - } - else { + } else { str = do_getenv (data, "LIBGUESTFS_ATTACH_METHOD"); if (str && STRNEQ (str, "")) { if (guestfs_set_backend (g, str) == -1) @@ -262,7 +268,8 @@ parse_environment (guestfs_h *g, str = do_getenv (data, "LIBGUESTFS_BACKEND_SETTINGS"); if (str) { - CLEANUP_FREE_STRING_LIST char **settings = guestfs_int_split_string (':', str); + CLEANUP_FREE_STRING_LIST char **settings = + guestfs_int_split_string (':', str); if (settings == NULL) { perrorf (g, "split_string: malloc"); @@ -295,18 +302,18 @@ guestfs_impl_parse_environment (guestfs_h *g) static char * getenv_from_strings (const void *stringsv, const char *name) { - char **strings = (char **) stringsv; + char **strings = (char **)stringsv; size_t len = strlen (name); size_t i; for (i = 0; strings[i] != NULL; ++i) if (STRPREFIX (strings[i], name) && strings[i][len] == '=') - return &strings[i][len+1]; + return &strings[i][len + 1]; return NULL; } int -guestfs_impl_parse_environment_list (guestfs_h *g, char * const *strings) +guestfs_impl_parse_environment_list (guestfs_h *g, char *const *strings) { return parse_environment (g, getenv_from_strings, strings); } @@ -319,7 +326,8 @@ guestfs_close (guestfs_h *g) if (g->state == NO_HANDLE) { /* Not safe to call ANY callbacks here, so ... */ - fprintf (stderr, _("guestfs_close: called twice on the same handle\n")); + fprintf (stderr, + _("guestfs_close: called twice on the same handle\n")); return; } @@ -335,11 +343,11 @@ guestfs_close (guestfs_h *g) if (g->trace) { const char trace_msg[] = "close"; - guestfs_int_call_callbacks_message (g, GUESTFS_EVENT_TRACE, - trace_msg, strlen (trace_msg)); + guestfs_int_call_callbacks_message (g, GUESTFS_EVENT_TRACE, trace_msg, + strlen (trace_msg)); } - debug (g, "closing guestfs handle %p (state %d)", g, (int) g->state); + debug (g, "closing guestfs handle %p (state %d)", g, (int)g->state); if (g->state != CONFIG) shutdown_backend (g, 0); @@ -404,7 +412,7 @@ guestfs_close (guestfs_h *g) int64_t guestfs_impl_c_pointer (guestfs_h *g) { - return (int64_t) g; + return (int64_t)g; } #pragma GCC diagnostic pop @@ -463,7 +471,8 @@ shutdown_backend (guestfs_h *g, int check_for_errors) static void close_handles (void) { - while (handles) guestfs_close (handles); + while (handles) + guestfs_close (handles); } int @@ -498,9 +507,8 @@ guestfs_impl_set_path (guestfs_h *g, const char *path) free (g->path); g->path = NULL; - g->path = - path == NULL ? - safe_strdup (g, GUESTFS_DEFAULT_PATH) : safe_strdup (g, path); + g->path = path == NULL ? safe_strdup (g, GUESTFS_DEFAULT_PATH) + : safe_strdup (g, path); return 0; } @@ -523,11 +531,11 @@ guestfs_impl_set_qemu (guestfs_h *g, const char *qemu) #ifdef QEMU new_hv = safe_strdup (g, QEMU); #else - error (g, _("configured --without-qemu so calling guestfs_set_qemu with qemu == NULL is an error")); + error (g, _("configured --without-qemu so calling guestfs_set_qemu " + "with qemu == NULL is an error")); return -1; #endif - } - else + } else new_hv = safe_strdup (g, qemu); free (g->hv); @@ -576,7 +584,8 @@ int guestfs_impl_set_memsize (guestfs_h *g, int memsize) { if (memsize < MIN_MEMSIZE) { - error (g, _("too small value for memsize (must be at least %d)"), MIN_MEMSIZE); + error (g, _("too small value for memsize (must be at least %d)"), + MIN_MEMSIZE); return -1; } g->memsize = memsize; @@ -693,7 +702,8 @@ guestfs_impl_set_identifier (guestfs_h *g, const char *identifier) char c = identifier[i]; if (!c_isalnum (c) && c != '_' && c != '-') { - error (g, _("identifier must contain only alphanumeric characters, underscore or minus sign")); + error (g, _("identifier must contain only alphanumeric characters, " + "underscore or minus sign")); return -1; } } @@ -776,7 +786,7 @@ guestfs_impl_get_backend_settings (guestfs_h *g) return NULL; } - return ret; /* caller frees */ + return ret; /* caller frees */ } char * @@ -795,10 +805,10 @@ guestfs_impl_get_backend_setting (guestfs_h *g, const char *name) return safe_strdup (g, "1"); /* "name=...", return value */ if (STRPREFIX (settings[i], name) && settings[i][namelen] == '=') - return safe_strdup (g, &settings[i][namelen+1]); + return safe_strdup (g, &settings[i][namelen + 1]); } - not_found: +not_found: guestfs_int_error_errno (g, ESRCH, _("setting not found")); return NULL; } @@ -820,9 +830,10 @@ guestfs_impl_clear_backend_setting (guestfs_h *g, const char *name) count++; free (settings[i]); - /* We move all the following strings down one place, including the NULL. */ + /* We move all the following strings down one place, including the + * NULL. */ for (j = i; settings[j] != NULL; ++j) - settings[j] = settings[j+1]; + settings[j] = settings[j + 1]; i--; } @@ -832,7 +843,8 @@ guestfs_impl_clear_backend_setting (guestfs_h *g, const char *name) } int -guestfs_impl_set_backend_setting (guestfs_h *g, const char *name, const char *value) +guestfs_impl_set_backend_setting (guestfs_h *g, const char *name, + const char *value) { char *new_setting; size_t len; @@ -843,14 +855,13 @@ guestfs_impl_set_backend_setting (guestfs_h *g, const char *name, const char *va g->backend_settings = safe_malloc (g, sizeof (char *)); g->backend_settings[0] = NULL; len = 0; - } - else { + } else { ignore_value (guestfs_clear_backend_setting (g, name)); len = guestfs_int_count_strings (g->backend_settings); } g->backend_settings = - safe_realloc (g, g->backend_settings, (len+2) * sizeof (char *)); + safe_realloc (g, g->backend_settings, (len + 2) * sizeof (char *)); g->backend_settings[len++] = new_setting; g->backend_settings[len++] = NULL; diff --git a/src/info.c b/src/info.c index 9791730..c031c9b 100644 --- a/src/info.c +++ b/src/info.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include <config.h> @@ -45,12 +46,13 @@ #include "guestfs-internal-actions.h" #ifdef HAVE_ATTRIBUTE_CLEANUP -#define CLEANUP_YAJL_TREE_FREE __attribute__((cleanup(cleanup_yajl_tree_free))) +#define CLEANUP_YAJL_TREE_FREE \ + __attribute__ ((cleanup (cleanup_yajl_tree_free))) static void cleanup_yajl_tree_free (void *ptr) { - yajl_tree_free (* (yajl_val *) ptr); + yajl_tree_free (*(yajl_val *)ptr); } #else @@ -69,14 +71,14 @@ guestfs_impl_disk_format (guestfs_h *g, const char *filename) if (tree == NULL) return NULL; - if (! YAJL_IS_OBJECT (tree)) + if (!YAJL_IS_OBJECT (tree)) goto bad_type; - len = YAJL_GET_OBJECT(tree)->len; + len = YAJL_GET_OBJECT (tree)->len; for (i = 0; i < len; ++i) { - if (STREQ (YAJL_GET_OBJECT(tree)->keys[i], "format")) { + if (STREQ (YAJL_GET_OBJECT (tree)->keys[i], "format")) { const char *str; - yajl_val node = YAJL_GET_OBJECT(tree)->values[i]; + yajl_val node = YAJL_GET_OBJECT (tree)->values[i]; if (YAJL_IS_NULL (node)) goto bad_type; str = YAJL_GET_STRING (node); @@ -86,7 +88,7 @@ guestfs_impl_disk_format (guestfs_h *g, const char *filename) } } - bad_type: +bad_type: error (g, _("qemu-img info: JSON output did not contain 'format' key")); return NULL; } @@ -100,27 +102,30 @@ guestfs_impl_disk_virtual_size (guestfs_h *g, const char *filename) if (tree == NULL) return -1; - if (! YAJL_IS_OBJECT (tree)) + if (!YAJL_IS_OBJECT (tree)) goto bad_type; - len = YAJL_GET_OBJECT(tree)->len; + len = YAJL_GET_OBJECT (tree)->len; for (i = 0; i < len; ++i) { - if (STREQ (YAJL_GET_OBJECT(tree)->keys[i], "virtual-size")) { - yajl_val node = YAJL_GET_OBJECT(tree)->values[i]; + if (STREQ (YAJL_GET_OBJECT (tree)->keys[i], "virtual-size")) { + yajl_val node = YAJL_GET_OBJECT (tree)->values[i]; if (YAJL_IS_NULL (node)) goto bad_type; - if (! YAJL_IS_NUMBER (node)) + if (!YAJL_IS_NUMBER (node)) goto bad_type; - if (! YAJL_IS_INTEGER (node)) { - error (g, _("qemu-img info: 'virtual-size' is not representable as a 64 bit integer")); + if (!YAJL_IS_INTEGER (node)) { + error (g, _("qemu-img info: 'virtual-size' is not representable " + "as a 64 bit integer")); return -1; } return YAJL_GET_INTEGER (node); } } - bad_type: - error (g, _("qemu-img info: JSON output did not contain 'virtual-size' key")); +bad_type: + error ( + g, + _("qemu-img info: JSON output did not contain 'virtual-size' key")); return -1; } @@ -133,13 +138,13 @@ guestfs_impl_disk_has_backing_file (guestfs_h *g, const char *filename) if (tree == NULL) return -1; - if (! YAJL_IS_OBJECT (tree)) + if (!YAJL_IS_OBJECT (tree)) goto bad_type; - len = YAJL_GET_OBJECT(tree)->len; + len = YAJL_GET_OBJECT (tree)->len; for (i = 0; i < len; ++i) { - if (STREQ (YAJL_GET_OBJECT(tree)->keys[i], "backing-filename")) { - yajl_val node = YAJL_GET_OBJECT(tree)->values[i]; + if (STREQ (YAJL_GET_OBJECT (tree)->keys[i], "backing-filename")) { + yajl_val node = YAJL_GET_OBJECT (tree)->values[i]; /* Work on the assumption that if this field is null, it means * no backing file, rather than being an error. */ @@ -151,7 +156,7 @@ guestfs_impl_disk_has_backing_file (guestfs_h *g, const char *filename) return 0; /* no backing-filename key means no backing file */ - bad_type: +bad_type: error (g, _("qemu-img info: JSON output was not an object")); return -1; } @@ -159,8 +164,9 @@ guestfs_impl_disk_has_backing_file (guestfs_h *g, const char *filename) /* Run 'qemu-img info --output json filename', and parse the output * as JSON, returning a JSON tree and handling errors. */ -static void parse_json (guestfs_h *g, void *treevp, const char *input, size_t len); -#define PARSE_JSON_NO_OUTPUT ((void *) -1) +static void parse_json (guestfs_h *g, void *treevp, const char *input, + size_t len); +#define PARSE_JSON_NO_OUTPUT ((void *)-1) static yajl_val get_json_output (guestfs_h *g, const char *filename) @@ -209,15 +215,16 @@ get_json_output (guestfs_h *g, const char *filename) } if (tree == NULL) - return NULL; /* parse_json callback already set an error */ + return NULL; /* parse_json callback already set an error */ if (tree == PARSE_JSON_NO_OUTPUT) { /* If this ever happened, it would indicate a bug in 'qemu-img info'. */ - error (g, _("qemu-img info command produced no output, but didn't return an error status code")); + error (g, _("qemu-img info command produced no output, but didn't " + "return an error status code")); return NULL; } - return tree; /* caller must call yajl_tree_free (tree) */ + return tree; /* caller must call yajl_tree_free (tree) */ } /* Parse the JSON document printed by qemu-img info --output json. */ diff --git a/src/inspect-apps.c b/src/inspect-apps.c index e53d87c..3cf4840 100644 --- a/src/inspect-apps.c +++ b/src/inspect-apps.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include <config.h> @@ -33,11 +34,11 @@ #if defined __APPLE__ && defined __MACH__ /* Define/include necessary items on MacOS X */ #include <machine/endian.h> -#define __BIG_ENDIAN BIG_ENDIAN -#define __LITTLE_ENDIAN LITTLE_ENDIAN -#define __BYTE_ORDER BYTE_ORDER +#define __BIG_ENDIAN BIG_ENDIAN +#define __LITTLE_ENDIAN LITTLE_ENDIAN +#define __BYTE_ORDER BYTE_ORDER #include <libkern/OSByteOrder.h> -#define __bswap_32 OSSwapConstInt32 +#define __bswap_32 OSSwapConstInt32 #endif /* __APPLE__ */ #include "guestfs.h" @@ -45,13 +46,23 @@ #include "guestfs-internal-actions.h" #ifdef DB_DUMP -static struct guestfs_application2_list *list_applications_rpm (guestfs_h *g, struct inspect_fs *fs); +static struct guestfs_application2_list * +list_applications_rpm (guestfs_h *g, struct inspect_fs *fs); #endif -static struct guestfs_application2_list *list_applications_deb (guestfs_h *g, struct inspect_fs *fs); -static struct guestfs_application2_list *list_applications_pacman (guestfs_h *g, struct inspect_fs *fs); -static struct guestfs_application2_list *list_applications_apk (guestfs_h *g, struct inspect_fs *fs); -static struct guestfs_application2_list *list_applications_windows (guestfs_h *g, struct inspect_fs *fs); -static void add_application (guestfs_h *g, struct guestfs_application2_list *, const char *name, const char *display_name, int32_t epoch, const char *version, const char *release, const char *arch, const char *install_path, const char *publisher, const char *url, const char *description); +static struct guestfs_application2_list * +list_applications_deb (guestfs_h *g, struct inspect_fs *fs); +static struct guestfs_application2_list * +list_applications_pacman (guestfs_h *g, struct inspect_fs *fs); +static struct guestfs_application2_list * +list_applications_apk (guestfs_h *g, struct inspect_fs *fs); +static struct guestfs_application2_list * +list_applications_windows (guestfs_h *g, struct inspect_fs *fs); +static void +add_application (guestfs_h *g, struct guestfs_application2_list *, + const char *name, const char *display_name, int32_t epoch, + const char *version, const char *release, const char *arch, + const char *install_path, const char *publisher, + const char *url, const char *description); static void sort_applications (struct guestfs_application2_list *); /* The deprecated guestfs_inspect_list_applications call, which is now @@ -72,8 +83,7 @@ guestfs_impl_inspect_list_applications (guestfs_h *g, const char *root) /* Translate the structures from the new format to the old format. */ ret = safe_malloc (g, sizeof (struct guestfs_application_list)); ret->len = r->len; - ret->val = - safe_malloc (g, sizeof (struct guestfs_application) * r->len); + ret->val = safe_malloc (g, sizeof (struct guestfs_application) * r->len); for (i = 0; i < r->len; ++i) { ret->val[i].app_name = r->val[i].app2_name; ret->val[i].app_display_name = r->val[i].app2_display_name; @@ -95,7 +105,7 @@ guestfs_impl_inspect_list_applications (guestfs_h *g, const char *root) free (r->val[i].app2_spare3); free (r->val[i].app2_spare4); } - free (r->val); /* Must not free the other strings. */ + free (r->val); /* Must not free the other strings. */ free (r); return ret; @@ -135,10 +145,10 @@ guestfs_impl_inspect_list_applications2 (guestfs_h *g, const char *root) break; case OS_PACKAGE_FORMAT_PACMAN: - ret = list_applications_pacman (g, fs); - if (ret == NULL) - return NULL; - break; + ret = list_applications_pacman (g, fs); + if (ret == NULL) + return NULL; + break; case OS_PACKAGE_FORMAT_APK: ret = list_applications_apk (g, fs); @@ -149,8 +159,7 @@ guestfs_impl_inspect_list_applications2 (guestfs_h *g, const char *root) case OS_PACKAGE_FORMAT_EBUILD: case OS_PACKAGE_FORMAT_PISI: case OS_PACKAGE_FORMAT_PKGSRC: - case OS_PACKAGE_FORMAT_UNKNOWN: - ; /* nothing */ + case OS_PACKAGE_FORMAT_UNKNOWN:; /* nothing */ } break; @@ -165,8 +174,7 @@ guestfs_impl_inspect_list_applications2 (guestfs_h *g, const char *root) case OS_TYPE_NETBSD: case OS_TYPE_DOS: case OS_TYPE_OPENBSD: - case OS_TYPE_UNKNOWN: - ; /* nothing */ + case OS_TYPE_UNKNOWN:; /* nothing */ } } @@ -189,11 +197,13 @@ guestfs_impl_inspect_list_applications2 (guestfs_h *g, const char *root) /* This data comes from the Name database, and contains the application * names and the first 4 bytes of each link field. */ -struct rpm_names_list { +struct rpm_names_list +{ struct rpm_name *names; size_t len; }; -struct rpm_name { +struct rpm_name +{ char *name; char link[4]; }; @@ -217,10 +227,8 @@ compare_links (const void *av, const void *bv) } static int -read_rpm_name (guestfs_h *g, - const unsigned char *key, size_t keylen, - const unsigned char *value, size_t valuelen, - void *listv) +read_rpm_name (guestfs_h *g, const unsigned char *key, size_t keylen, + const unsigned char *value, size_t valuelen, void *listv) { struct rpm_names_list *list = listv; const unsigned char *link_p; @@ -236,7 +244,7 @@ read_rpm_name (guestfs_h *g, * entry. Add an entry onto list for all installed instances. */ for (link_p = value; link_p < value + valuelen; link_p += 8) { - name = safe_strndup (g, (const char *) key, keylen); + name = safe_strndup (g, (const char *)key, keylen); list->names = safe_realloc (g, list->names, (list->len + 1) * sizeof (struct rpm_name)); @@ -279,7 +287,7 @@ get_rpm_header_tag (guestfs_h *g, const unsigned char *header_start, if (header_len < 24) return NULL; - num_fields = be32toh (*(uint32_t *) header_start); + num_fields = be32toh (*(uint32_t *)header_start); store = header_start + 8 + (16 * num_fields); /* The first byte *after* the buffer. If you are here, you've gone @@ -287,8 +295,8 @@ get_rpm_header_tag (guestfs_h *g, const unsigned char *header_start, header_end = header_start + header_len; while (cursor < store && cursor <= header_end - 16) { - if (be32toh (*(uint32_t *) cursor) == tag) { - offset = be32toh(*(uint32_t *) (cursor + 8)); + if (be32toh (*(uint32_t *)cursor) == tag) { + offset = be32toh (*(uint32_t *)(cursor + 8)); if (store + offset >= header_end) return NULL; @@ -296,11 +304,11 @@ get_rpm_header_tag (guestfs_h *g, const unsigned char *header_start, switch (type) { case 's': - return safe_strndup (g, (const char *) (store + offset), max_len); + return safe_strndup (g, (const char *)(store + offset), max_len); case 'i': memset (iv, 0, sizeof iv); - memcpy (iv, (void *) (store + offset), + memcpy (iv, (void *)(store + offset), max_len > sizeof iv ? sizeof iv : max_len); return safe_memdup (g, iv, sizeof iv); @@ -314,21 +322,20 @@ get_rpm_header_tag (guestfs_h *g, const unsigned char *header_start, return NULL; } -struct read_package_data { +struct read_package_data +{ struct rpm_names_list *list; struct guestfs_application2_list *apps; }; static int -read_package (guestfs_h *g, - const unsigned char *key, size_t keylen, - const unsigned char *value, size_t valuelen, - void *datav) +read_package (guestfs_h *g, const unsigned char *key, size_t keylen, + const unsigned char *value, size_t valuelen, void *datav) { struct read_package_data *data = datav; struct rpm_name nkey, *entry; - CLEANUP_FREE char *version = NULL, *release = NULL, - *epoch_str = NULL, *arch = NULL; + CLEANUP_FREE char *version = NULL, *release = NULL, *epoch_str = NULL, + *arch = NULL; int32_t epoch; /* This function reads one (key, value) pair from the Packages @@ -347,7 +354,7 @@ read_package (guestfs_h *g, entry = bsearch (&nkey, data->list->names, data->list->len, sizeof (struct rpm_name), compare_links); if (!entry) - return 0; /* Not found - ignore it. */ + return 0; /* Not found - ignore it. */ /* We found a matching link entry, so that gives us the application * name (entry->name). Now we can get other data for this @@ -361,14 +368,14 @@ read_package (guestfs_h *g, /* The epoch is stored as big-endian integer. */ if (epoch_str) - epoch = be32toh (*(int32_t *) epoch_str); + epoch = be32toh (*(int32_t *)epoch_str); else epoch = 0; /* Add the application and what we know. */ if (version && release) - add_application (g, data->apps, entry->name, "", epoch, version, release, - arch ? arch : "", "", "", "", ""); + add_application (g, data->apps, entry->name, "", epoch, version, + release, arch ? arch : "", "", "", "", ""); return 0; } @@ -379,19 +386,17 @@ static struct guestfs_application2_list * list_applications_rpm (guestfs_h *g, struct inspect_fs *fs) { CLEANUP_FREE char *Name = NULL, *Packages = NULL; - struct rpm_names_list list = { .names = NULL, .len = 0 }; + struct rpm_names_list list = {.names = NULL, .len = 0 }; struct guestfs_application2_list *apps = NULL; struct read_package_data data; - Name = guestfs_int_download_to_tmp (g, fs, - "/var/lib/rpm/Name", "rpm_Name", - MAX_PKG_DB_SIZE); + Name = guestfs_int_download_to_tmp (g, fs, "/var/lib/rpm/Name", + "rpm_Name", MAX_PKG_DB_SIZE); if (Name == NULL) goto error; - Packages = guestfs_int_download_to_tmp (g, fs, - "/var/lib/rpm/Packages", "rpm_Packages", - MAX_PKG_DB_SIZE); + Packages = guestfs_int_download_to_tmp (g, fs, "/var/lib/rpm/Packages", + "rpm_Packages", MAX_PKG_DB_SIZE); if (Packages == NULL) goto error; @@ -417,7 +422,7 @@ list_applications_rpm (guestfs_h *g, struct inspect_fs *fs) return apps; - error: +error: free_rpm_names_list (&list); guestfs_free_application2_list (apps); @@ -435,11 +440,12 @@ list_applications_deb (guestfs_h *g, struct inspect_fs *fs) char line[1024]; size_t len; int32_t epoch = 0; - CLEANUP_FREE char *name = NULL, *version = NULL, *release = NULL, *arch = NULL; + CLEANUP_FREE char *name = NULL, *version = NULL, *release = NULL, + *arch = NULL; int installed_flag = 0; - status = guestfs_int_download_to_tmp (g, fs, "/var/lib/dpkg/status", "status", - MAX_PKG_DB_SIZE); + status = guestfs_int_download_to_tmp (g, fs, "/var/lib/dpkg/status", + "status", MAX_PKG_DB_SIZE); if (status == NULL) return NULL; @@ -463,26 +469,25 @@ list_applications_deb (guestfs_h *g, struct inspect_fs *fs) */ while (fgets (line, sizeof line, fp) != NULL) { len = strlen (line); - if (len > 0 && line[len-1] == '\n') { - line[len-1] = '\0'; + if (len > 0 && line[len - 1] == '\n') { + line[len - 1] = '\0'; len--; } if (STRPREFIX (line, "Package: ")) { free (name); name = safe_strdup (g, &line[9]); - } - else if (STRPREFIX (line, "Status: ")) { + } else if (STRPREFIX (line, "Status: ")) { installed_flag = strstr (&line[8], "installed") != NULL; - } - else if (STRPREFIX (line, "Version: ")) { + } else if (STRPREFIX (line, "Version: ")) { free (version); free (release); char *p1, *p2; p1 = strchr (&line[9], ':'); if (p1) { *p1++ = '\0'; - epoch = guestfs_int_parse_unsigned_int (g, &line[9]); /* -1 on error */ + epoch = + guestfs_int_parse_unsigned_int (g, &line[9]); /* -1 on error */ } else { p1 = &line[9]; epoch = 0; @@ -495,15 +500,13 @@ list_applications_deb (guestfs_h *g, struct inspect_fs *fs) release = NULL; } version = safe_strdup (g, p1); - } - else if (STRPREFIX (line, "Architecture: ")) { + } else if (STRPREFIX (line, "Architecture: ")) { free (arch); arch = safe_strdup (g, &line[14]); - } - else if (STREQ (line, "")) { + } else if (STREQ (line, "")) { if (installed_flag && name && version && (epoch >= 0)) - add_application (g, apps, name, "", epoch, version, release ? : "", - arch ? : "", "", "", "", ""); + add_application (g, apps, name, "", epoch, version, release ?: "", + arch ?: "", "", "", "", ""); free (name); free (version); free (release); @@ -520,7 +523,7 @@ list_applications_deb (guestfs_h *g, struct inspect_fs *fs) ret = apps; - out: +out: if (ret == NULL) guestfs_free_application2_list (apps); /* @@ -544,7 +547,8 @@ list_applications_pacman (guestfs_h *g, struct inspect_fs *fs) CLEANUP_FREE char *arch = NULL, *url = NULL; char **key = NULL, *rel = NULL, *ver = NULL, *p; int32_t epoch; - const size_t path_len = strlen ("/var/lib/pacman/local/") + strlen ("/desc"); + const size_t path_len = + strlen ("/var/lib/pacman/local/") + strlen ("/desc"); local_db = guestfs_readdir (g, "/var/lib/pacman/local"); if (local_db == NULL) @@ -558,17 +562,20 @@ list_applications_pacman (guestfs_h *g, struct inspect_fs *fs) for (i = 0; i < local_db->len; i++) { curr = &local_db->val[i]; - if (curr->ftyp != 'd' || STREQ (curr->name, ".") || STREQ (curr->name, "..")) + if (curr->ftyp != 'd' || STREQ (curr->name, ".") || + STREQ (curr->name, "..")) continue; free (fname); fname = safe_malloc (g, strlen (curr->name) + path_len + 1); sprintf (fname, "/var/lib/pacman/local/%s/desc", curr->name); free (desc_file); - desc_file = guestfs_int_download_to_tmp (g, fs, fname, curr->name, 8192); + desc_file = + guestfs_int_download_to_tmp (g, fs, fname, curr->name, 8192); /* The desc files are small (4K). If the desc file does not exist or is - * larger than the 8K limit we've used, the database is probably corrupted, + * larger than the 8K limit we've used, the database is probably + * corrupted, * but we'll continue with the next package anyway. */ if (desc_file == NULL) @@ -580,8 +587,8 @@ list_applications_pacman (guestfs_h *g, struct inspect_fs *fs) goto out; } - while ((len = getline(&line, &allocsize, fp)) != -1) { - if (len > 0 && line[len-1] == '\n') { + while ((len = getline (&line, &allocsize, fp)) != -1) { + if (len > 0 && line[len - 1] == '\n') { line[--len] = '\0'; } @@ -633,7 +640,7 @@ list_applications_pacman (guestfs_h *g, struct inspect_fs *fs) if ((epoch >= 0) && (ver[0] != '\0') && (rel[0] != '\0')) add_application (g, apps, name, "", epoch, ver, rel, arch, "", "", - url ? : "", desc ? : ""); + url ?: "", desc ?: ""); after_add_application: key = NULL; @@ -649,12 +656,11 @@ list_applications_pacman (guestfs_h *g, struct inspect_fs *fs) perrorf (g, "fclose: %s", desc_file); goto out; } - } ret = apps; - out: +out: if (ret == NULL) guestfs_free_application2_list (apps); @@ -670,8 +676,8 @@ list_applications_apk (guestfs_h *g, struct inspect_fs *fs) size_t allocsize = 0; ssize_t len; int32_t epoch = 0; - CLEANUP_FREE char *name = NULL, *version = NULL, *release = NULL, *arch = NULL, - *url = NULL, *description = NULL; + CLEANUP_FREE char *name = NULL, *version = NULL, *release = NULL, + *arch = NULL, *url = NULL, *description = NULL; installed = guestfs_int_download_to_tmp (g, fs, "/lib/apk/db/installed", "installed", MAX_PKG_DB_SIZE); @@ -693,8 +699,8 @@ list_applications_apk (guestfs_h *g, struct inspect_fs *fs) * a blank line. Each package line is <character>:<field>. */ while ((len = getline (&line, &allocsize, fp)) != -1) { - if (len > 0 && line[len-1] == '\n') { - line[len-1] = '\0'; + if (len > 0 && line[len - 1] == '\n') { + line[len - 1] = '\0'; --len; } @@ -706,8 +712,8 @@ list_applications_apk (guestfs_h *g, struct inspect_fs *fs) switch (line[0]) { case '\0': if (name && version && (epoch >= 0)) - add_application (g, apps, name, "", epoch, version, release ? : "", - arch ? : "", "", "", url ? : "", description ? : ""); + add_application (g, apps, name, "", epoch, version, release ?: "", + arch ?: "", "", "", url ?: "", description ?: ""); free (name); free (version); free (release); @@ -739,7 +745,8 @@ list_applications_apk (guestfs_h *g, struct inspect_fs *fs) p1 = strchr (&line[2], ':'); if (p1) { *p1++ = '\0'; - epoch = guestfs_int_parse_unsigned_int (g, &line[2]); /* -1 on error */ + epoch = + guestfs_int_parse_unsigned_int (g, &line[2]); /* -1 on error */ } else { p1 = &line[2]; epoch = 0; @@ -766,7 +773,7 @@ list_applications_apk (guestfs_h *g, struct inspect_fs *fs) ret = apps; - out: +out: if (ret == NULL) guestfs_free_application2_list (apps); /* @@ -776,13 +783,16 @@ list_applications_apk (guestfs_h *g, struct inspect_fs *fs) return ret; } -static void list_applications_windows_from_path (guestfs_h *g, struct guestfs_application2_list *apps, const char **path, size_t path_len); +static void +list_applications_windows_from_path (guestfs_h *g, + struct guestfs_application2_list *apps, + const char **path, size_t path_len); static struct guestfs_application2_list * list_applications_windows (guestfs_h *g, struct inspect_fs *fs) { - CLEANUP_FREE char *software = - safe_asprintf (g, "%s/system32/config/software", fs->windows_systemroot); + CLEANUP_FREE char *software = safe_asprintf ( + g, "%s/system32/config/software", fs->windows_systemroot); CLEANUP_FREE char *software_path; struct guestfs_application2_list *ret = NULL; @@ -790,8 +800,8 @@ list_applications_windows (guestfs_h *g, struct inspect_fs *fs) if (!software_path) return NULL; - if (guestfs_hivex_open (g, software_path, - GUESTFS_HIVEX_OPEN_VERBOSE, g->verbose, -1) == -1) + if (guestfs_hivex_open (g, software_path, GUESTFS_HIVEX_OPEN_VERBOSE, + g->verbose, -1) == -1) return NULL; /* Allocate apps list. */ @@ -800,18 +810,18 @@ list_applications_windows (guestfs_h *g, struct inspect_fs *fs) ret->val = NULL; /* Ordinary native applications. */ - const char *hivepath[] = - { "Microsoft", "Windows", "CurrentVersion", "Uninstall" }; - list_applications_windows_from_path (g, ret, hivepath, - sizeof hivepath / sizeof hivepath[0]); + const char *hivepath[] = { "Microsoft", "Windows", "CurrentVersion", + "Uninstall" }; + list_applications_windows_from_path ( + g, ret, hivepath, sizeof hivepath / sizeof hivepath[0]); /* 32-bit emulated Windows apps running on the WOW64 emulator. * http://support.microsoft.com/kb/896459 (RHBZ#692545). */ - const char *hivepath2[] = - { "WOW6432node", "Microsoft", "Windows", "CurrentVersion", "Uninstall" }; - list_applications_windows_from_path (g, ret, hivepath2, - sizeof hivepath2 / sizeof hivepath2[0]); + const char *hivepath2[] = { "WOW6432node", "Microsoft", "Windows", + "CurrentVersion", "Uninstall" }; + list_applications_windows_from_path ( + g, ret, hivepath2, sizeof hivepath2 / sizeof hivepath2[0]); guestfs_hivex_close (g); return ret; @@ -822,7 +832,8 @@ list_applications_windows_from_path (guestfs_h *g, struct guestfs_application2_list *apps, const char **path, size_t path_len) { - CLEANUP_FREE_HIVEX_NODE_LIST struct guestfs_hivex_node_list *children = NULL; + CLEANUP_FREE_HIVEX_NODE_LIST struct guestfs_hivex_node_list *children = + NULL; int64_t node; size_t i; @@ -846,7 +857,8 @@ list_applications_windows_from_path (guestfs_h *g, int64_t child = children->val[i].hivex_node_h; int64_t value; CLEANUP_FREE char *name = NULL, *display_name = NULL, *version = NULL, - *install_path = NULL, *publisher = NULL, *url = NULL, *comments = NULL; + *install_path = NULL, *publisher = NULL, *url = NULL, + *comments = NULL; /* Use the node name as a proxy for the package name in Linux. The * display name is not language-independent, so it cannot be used. @@ -875,13 +887,9 @@ list_applications_windows_from_path (guestfs_h *g, if (value) comments = guestfs_hivex_value_utf8 (g, value); - add_application (g, apps, name, display_name, 0, - version ? : "", - "", "", - install_path ? : "", - publisher ? : "", - url ? : "", - comments ? : ""); + add_application (g, apps, name, display_name, 0, version ?: "", "", + "", install_path ?: "", publisher ?: "", url ?: "", + comments ?: ""); } } } @@ -891,35 +899,36 @@ static void add_application (guestfs_h *g, struct guestfs_application2_list *apps, const char *name, const char *display_name, int32_t epoch, const char *version, const char *release, const char *arch, - const char *install_path, - const char *publisher, const char *url, - const char *description) + const char *install_path, const char *publisher, + const char *url, const char *description) { apps->len++; - apps->val = safe_realloc (g, apps->val, - apps->len * sizeof (struct guestfs_application2)); - apps->val[apps->len-1].app2_name = safe_strdup (g, name); - apps->val[apps->len-1].app2_display_name = safe_strdup (g, display_name); - apps->val[apps->len-1].app2_epoch = epoch; - apps->val[apps->len-1].app2_version = safe_strdup (g, version); - apps->val[apps->len-1].app2_release = safe_strdup (g, release); - apps->val[apps->len-1].app2_arch = safe_strdup (g, arch); - apps->val[apps->len-1].app2_install_path = safe_strdup (g, install_path); + apps->val = safe_realloc ( + g, apps->val, apps->len * sizeof (struct guestfs_application2)); + apps->val[apps->len - 1].app2_name = safe_strdup (g, name); + apps->val[apps->len - 1].app2_display_name = + safe_strdup (g, display_name); + apps->val[apps->len - 1].app2_epoch = epoch; + apps->val[apps->len - 1].app2_version = safe_strdup (g, version); + apps->val[apps->len - 1].app2_release = safe_strdup (g, release); + apps->val[apps->len - 1].app2_arch = safe_strdup (g, arch); + apps->val[apps->len - 1].app2_install_path = + safe_strdup (g, install_path); /* XXX Translated path is not implemented yet. */ - apps->val[apps->len-1].app2_trans_path = safe_strdup (g, ""); - apps->val[apps->len-1].app2_publisher = safe_strdup (g, publisher); - apps->val[apps->len-1].app2_url = safe_strdup (g, url); + apps->val[apps->len - 1].app2_trans_path = safe_strdup (g, ""); + apps->val[apps->len - 1].app2_publisher = safe_strdup (g, publisher); + apps->val[apps->len - 1].app2_url = safe_strdup (g, url); /* XXX The next two are not yet implemented for any package * format, but we could easily support them for rpm and deb. */ - apps->val[apps->len-1].app2_source_package = safe_strdup (g, ""); - apps->val[apps->len-1].app2_summary = safe_strdup (g, ""); - apps->val[apps->len-1].app2_description = safe_strdup (g, description); + apps->val[apps->len - 1].app2_source_package = safe_strdup (g, ""); + apps->val[apps->len - 1].app2_summary = safe_strdup (g, ""); + apps->val[apps->len - 1].app2_description = safe_strdup (g, description); /* XXX Reserved for future use. */ - apps->val[apps->len-1].app2_spare1 = safe_strdup (g, ""); - apps->val[apps->len-1].app2_spare2 = safe_strdup (g, ""); - apps->val[apps->len-1].app2_spare3 = safe_strdup (g, ""); - apps->val[apps->len-1].app2_spare4 = safe_strdup (g, ""); + apps->val[apps->len - 1].app2_spare1 = safe_strdup (g, ""); + apps->val[apps->len - 1].app2_spare2 = safe_strdup (g, ""); + apps->val[apps->len - 1].app2_spare3 = safe_strdup (g, ""); + apps->val[apps->len - 1].app2_spare4 = safe_strdup (g, ""); } /* Sort applications by name before returning the list. */ diff --git a/src/inspect-fs-cd.c b/src/inspect-fs-cd.c index b008f58..8db1861 100644 --- a/src/inspect-fs-cd.c +++ b/src/inspect-fs-cd.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include <config.h> @@ -55,11 +56,11 @@ check_debian_installer_root (guestfs_h *g, struct inspect_fs *fs) else if (STRPREFIX (fs->product_name, "Debian")) fs->distro = OS_DISTRO_DEBIAN; - (void) guestfs_int_parse_major_minor (g, fs); + (void)guestfs_int_parse_major_minor (g, fs); if (guestfs_is_file (g, "/.disk/cd_type") > 0) { CLEANUP_FREE char *cd_type = - guestfs_int_first_line_of_file (g, "/.disk/cd_type"); + guestfs_int_first_line_of_file (g, "/.disk/cd_type"); if (!cd_type) return -1; @@ -67,13 +68,11 @@ check_debian_installer_root (guestfs_h *g, struct inspect_fs *fs) STRPREFIX (cd_type, "full_cd/single")) { fs->is_multipart_disk = 0; fs->is_netinst_disk = 0; - } - else if (STRPREFIX (cd_type, "dvd") || - STRPREFIX (cd_type, "full_cd")) { + } else if (STRPREFIX (cd_type, "dvd") || + STRPREFIX (cd_type, "full_cd")) { fs->is_multipart_disk = 1; fs->is_netinst_disk = 0; - } - else if (STRPREFIX (cd_type, "not_complete")) { + } else if (STRPREFIX (cd_type, "not_complete")) { fs->is_multipart_disk = 0; fs->is_netinst_disk = 1; } @@ -181,8 +180,8 @@ check_fedora_installer_root (guestfs_h *g, struct inspect_fs *fs) fs->type = OS_TYPE_LINUX; - r = guestfs_int_first_egrep_of_file (g, "/.treeinfo", - "^family = Fedora$", 0, &str); + r = guestfs_int_first_egrep_of_file (g, "/.treeinfo", "^family = Fedora$", + 0, &str); if (r == -1) return -1; if (r > 0) { @@ -190,9 +189,8 @@ check_fedora_installer_root (guestfs_h *g, struct inspect_fs *fs) free (str); } - r = guestfs_int_first_egrep_of_file (g, "/.treeinfo", - "^family = Red Hat Enterprise Linux$", - 0, &str); + r = guestfs_int_first_egrep_of_file ( + g, "/.treeinfo", "^family = Red Hat Enterprise Linux$", 0, &str); if (r == -1) return -1; if (r > 0) { @@ -200,9 +198,8 @@ check_fedora_installer_root (guestfs_h *g, struct inspect_fs *fs) free (str); } - r = guestfs_int_first_egrep_of_file (g, "/.treeinfo", - "^family = Oracle Linux Server$", - 0, &str); + r = guestfs_int_first_egrep_of_file ( + g, "/.treeinfo", "^family = Oracle Linux Server$", 0, &str); if (r == -1) return -1; if (r > 0) { @@ -212,19 +209,20 @@ check_fedora_installer_root (guestfs_h *g, struct inspect_fs *fs) /* XXX should do major.minor before this */ r = guestfs_int_first_egrep_of_file (g, "/.treeinfo", - "^version = [[:digit:]]+", 0, &str); + "^version = [[:digit:]]+", 0, &str); if (r == -1) return -1; if (r > 0) { v = find_value (str); - fs->major_version = guestfs_int_parse_unsigned_int_ignore_trailing (g, v); + fs->major_version = + guestfs_int_parse_unsigned_int_ignore_trailing (g, v); free (str); if (fs->major_version == -1) return -1; } r = guestfs_int_first_egrep_of_file (g, "/.treeinfo", - "^arch = [-_[:alnum:]]+$", 0, &str); + "^arch = [-_[:alnum:]]+$", 0, &str); if (r == -1) return -1; if (r > 0) { @@ -234,7 +232,7 @@ check_fedora_installer_root (guestfs_h *g, struct inspect_fs *fs) } r = guestfs_int_first_egrep_of_file (g, "/.treeinfo", - "^discnum = [[:digit:]]+$", 0, &str); + "^discnum = [[:digit:]]+$", 0, &str); if (r == -1) return -1; if (r > 0) { @@ -245,8 +243,8 @@ check_fedora_installer_root (guestfs_h *g, struct inspect_fs *fs) return -1; } - r = guestfs_int_first_egrep_of_file (g, "/.treeinfo", - "^totaldiscs = [[:digit:]]+$", 0, &str); + r = guestfs_int_first_egrep_of_file ( + g, "/.treeinfo", "^totaldiscs = [[:digit:]]+$", 0, &str); if (r == -1) return -1; if (r > 0) { @@ -279,60 +277,61 @@ check_isolinux_installer_root (guestfs_h *g, struct inspect_fs *fs) fs->type = OS_TYPE_LINUX; - r = guestfs_int_first_egrep_of_file (g, "/isolinux/isolinux.cfg", - "^menu title Welcome to Fedora [[:digit:]]+", - 0, &str); + r = guestfs_int_first_egrep_of_file ( + g, "/isolinux/isolinux.cfg", + "^menu title Welcome to Fedora [[:digit:]]+", 0, &str); if (r == -1) return -1; if (r > 0) { fs->distro = OS_DISTRO_FEDORA; fs->major_version = - guestfs_int_parse_unsigned_int_ignore_trailing (g, &str[29]); + guestfs_int_parse_unsigned_int_ignore_trailing (g, &str[29]); free (str); if (fs->major_version == -1) return -1; } /* XXX parse major.minor */ - r = guestfs_int_first_egrep_of_file (g, "/isolinux/isolinux.cfg", - "^menu title Welcome to Red Hat Enterprise Linux [[:digit:]]+", - 0, &str); + r = guestfs_int_first_egrep_of_file ( + g, "/isolinux/isolinux.cfg", + "^menu title Welcome to Red Hat Enterprise Linux [[:digit:]]+", 0, + &str); if (r == -1) return -1; if (r > 0) { fs->distro = OS_DISTRO_RHEL; fs->major_version = - guestfs_int_parse_unsigned_int_ignore_trailing (g, &str[47]); + guestfs_int_parse_unsigned_int_ignore_trailing (g, &str[47]); free (str); if (fs->major_version == -1) return -1; } /* XXX parse major.minor */ - r = guestfs_int_first_egrep_of_file (g, "/isolinux/isolinux.cfg", - "^menu title Welcome to RHEL[[:digit:]]+", - 0, &str); + r = guestfs_int_first_egrep_of_file ( + g, "/isolinux/isolinux.cfg", + "^menu title Welcome to RHEL[[:digit:]]+", 0, &str); if (r == -1) return -1; if (r > 0) { fs->distro = OS_DISTRO_RHEL; fs->major_version = - guestfs_int_parse_unsigned_int_ignore_trailing (g, &str[26]); + guestfs_int_parse_unsigned_int_ignore_trailing (g, &str[26]); free (str); if (fs->major_version == -1) return -1; } /* XXX parse major.minor */ - r = guestfs_int_first_egrep_of_file (g, "/isolinux/isolinux.cfg", - "^menu title Welcome to Oracle Linux Server [[:digit:]]+", - 0, &str); + r = guestfs_int_first_egrep_of_file ( + g, "/isolinux/isolinux.cfg", + "^menu title Welcome to Oracle Linux Server [[:digit:]]+", 0, &str); if (r == -1) return -1; if (r > 0) { fs->distro = OS_DISTRO_ORACLE_LINUX; fs->major_version = - guestfs_int_parse_unsigned_int_ignore_trailing (g, &str[42]); + guestfs_int_parse_unsigned_int_ignore_trailing (g, &str[42]); free (str); if (fs->major_version == -1) return -1; @@ -350,16 +349,16 @@ static void trim_cr (char *str) { size_t n = strlen (str); - if (n > 0 && str[n-1] == '\r') - str[n-1] = '\0'; + if (n > 0 && str[n - 1] == '\r') + str[n - 1] = '\0'; } static void trim_quot (char *str) { size_t n = strlen (str); - if (n > 0 && str[n-1] == '"') - str[n-1] = '\0'; + if (n > 0 && str[n - 1] == '"') + str[n - 1] = '\0'; } static int @@ -373,41 +372,43 @@ check_w2k3_installer_root (guestfs_h *g, struct inspect_fs *fs, fs->type = OS_TYPE_WINDOWS; fs->distro = OS_DISTRO_WINDOWS; - r = guestfs_int_first_egrep_of_file (g, txtsetup, - "^productname[[:space:]]*=[[:space:]]*\"", 1, &str); + r = guestfs_int_first_egrep_of_file ( + g, txtsetup, "^productname[[:space:]]*=[[:space:]]*\"", 1, &str); if (r == -1) return -1; if (r > 0) { trim_cr (str); trim_quot (str); v = find_value (str); - fs->product_name = safe_strdup (g, v+1); + fs->product_name = safe_strdup (g, v + 1); free (str); } - r = guestfs_int_first_egrep_of_file (g, txtsetup, - "^majorversion[[:space:]]*=[[:space:]]*[[:digit:]]+", - 1, &str); + r = guestfs_int_first_egrep_of_file ( + g, txtsetup, "^majorversion[[:space:]]*=[[:space:]]*[[:digit:]]+", 1, + &str); if (r == -1) return -1; if (r > 0) { trim_cr (str); v = find_value (str); - fs->major_version = guestfs_int_parse_unsigned_int_ignore_trailing (g, v); + fs->major_version = + guestfs_int_parse_unsigned_int_ignore_trailing (g, v); free (str); if (fs->major_version == -1) return -1; } - r = guestfs_int_first_egrep_of_file (g, txtsetup, - "^minorversion[[:space:]]*=[[:space:]]*[[:digit:]]+", - 1, &str); + r = guestfs_int_first_egrep_of_file ( + g, txtsetup, "^minorversion[[:space:]]*=[[:space:]]*[[:digit:]]+", 1, + &str); if (r == -1) return -1; if (r > 0) { trim_cr (str); v = find_value (str); - fs->minor_version = guestfs_int_parse_unsigned_int_ignore_trailing (g, v); + fs->minor_version = + guestfs_int_parse_unsigned_int_ignore_trailing (g, v); free (str); if (fs->minor_version == -1) return -1; @@ -417,9 +418,8 @@ check_w2k3_installer_root (guestfs_h *g, struct inspect_fs *fs, * installation by default, although not necessarily the one that * the user will finally choose. */ - r = guestfs_int_first_egrep_of_file (g, txtsetup, - "^defaultpath[[:space:]]*=[[:space:]]*", - 1, &str); + r = guestfs_int_first_egrep_of_file ( + g, txtsetup, "^defaultpath[[:space:]]*=[[:space:]]*", 1, &str); if (r == -1) return -1; if (r > 0) { @@ -505,7 +505,7 @@ guestfs_int_check_installer_root (guestfs_h *g, struct inspect_fs *fs) */ int guestfs_int_check_installer_iso (guestfs_h *g, struct inspect_fs *fs, - const char *device) + const char *device) { CLEANUP_FREE_ISOINFO struct guestfs_isoinfo *isoinfo = NULL; const struct osinfo *osinfo; @@ -518,9 +518,9 @@ guestfs_int_check_installer_iso (guestfs_h *g, struct inspect_fs *fs, return 0; r = guestfs_int_osinfo_map (g, isoinfo, &osinfo); - if (r == -1) /* Fatal error. */ + if (r == -1) /* Fatal error. */ return -1; - if (r == 0) /* Could not locate any matching ISO. */ + if (r == 0) /* Could not locate any matching ISO. */ return 0; /* Otherwise we matched an ISO, so fill in the fs fields. */ @@ -530,7 +530,7 @@ guestfs_int_check_installer_iso (guestfs_h *g, struct inspect_fs *fs, fs->type = osinfo->type; fs->distro = osinfo->distro; fs->product_name = - osinfo->product_name ? safe_strdup (g, osinfo->product_name) : NULL; + osinfo->product_name ? safe_strdup (g, osinfo->product_name) : NULL; fs->major_version = osinfo->major_version; fs->minor_version = osinfo->minor_version; fs->arch = osinfo->arch ? safe_strdup (g, osinfo->arch) : NULL; diff --git a/src/inspect-fs-unix.c b/src/inspect-fs-unix.c index dab4370..598e10f 100644 --- a/src/inspect-fs-unix.c +++ b/src/inspect-fs-unix.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include <config.h> @@ -51,8 +52,7 @@ COMPILE_REGEXP (re_scientific_linux_no_minor, "Scientific Linux.*release (\\d+)", 0) COMPILE_REGEXP (re_oracle_linux_old, "Oracle Linux.*release (\\d+).*Update (\\d+)", 0) -COMPILE_REGEXP (re_oracle_linux, - "Oracle Linux.*release (\\d+)\\.(\\d+)", 0) +COMPILE_REGEXP (re_oracle_linux, "Oracle Linux.*release (\\d+)\\.(\\d+)", 0) COMPILE_REGEXP (re_oracle_linux_no_minor, "Oracle Linux.*release (\\d+)", 0) COMPILE_REGEXP (re_major_minor, "(\\d+)\\.(\\d+)", 0) COMPILE_REGEXP (re_xdev, "^/dev/(h|s|v|xv)d([a-z]+)(\\d*)$", 0) @@ -75,7 +75,9 @@ COMPILE_REGEXP (re_openbsd, "^OpenBSD (\\d+|\\?)\\.(\\d+|\\?)", 0) COMPILE_REGEXP (re_openbsd_duid, "^[0-9a-f]{16}\\.[a-z]", 0) COMPILE_REGEXP (re_openbsd_dev, "^/dev/(s|w)d([0-9])([a-z])$", 0) COMPILE_REGEXP (re_netbsd_dev, "^/dev/(l|s)d([0-9])([a-z])$", 0) -COMPILE_REGEXP (re_altlinux, " (?:(\\d+)(?:\\.(\\d+)(?:[\\.\\d]+)?)?)\\s+\\((?:[^)]+)\\)$", 0) +COMPILE_REGEXP ( + re_altlinux, + " (?:(\\d+)(?:\\.(\\d+)(?:[\\.\\d]+)?)?)\\s+\\((?:[^)]+)\\)$", 0) COMPILE_REGEXP (re_frugalware, "Frugalware (\\d+)\\.(\\d+)", 0) static void check_architecture (guestfs_h *g, struct inspect_fs *fs); @@ -88,32 +90,37 @@ static void add_fstab_entry (guestfs_h *g, struct inspect_fs *fs, static char *resolve_fstab_device (guestfs_h *g, const char *spec, Hash_table *md_map, enum inspect_os_type os_type); -static int inspect_with_augeas (guestfs_h *g, struct inspect_fs *fs, const char **configfiles, int (*f) (guestfs_h *, struct inspect_fs *)); +static int inspect_with_augeas (guestfs_h *g, struct inspect_fs *fs, + const char **configfiles, + int (*f) (guestfs_h *, + struct inspect_fs *)); /* Hash structure for uuid->path lookups */ -typedef struct md_uuid { +typedef struct md_uuid +{ uint32_t uuid[4]; char *path; } md_uuid; -static size_t uuid_hash(const void *x, size_t table_size); -static bool uuid_cmp(const void *x, const void *y); -static void md_uuid_free(void *x); +static size_t uuid_hash (const void *x, size_t table_size); +static bool uuid_cmp (const void *x, const void *y); +static void md_uuid_free (void *x); -static int parse_uuid(const char *str, uint32_t *uuid); +static int parse_uuid (const char *str, uint32_t *uuid); /* Hash structure for path(mdadm)->path(appliance) lookup */ -typedef struct { +typedef struct +{ char *mdadm; char *app; } mdadm_app; -static size_t mdadm_app_hash(const void *x, size_t table_size); -static bool mdadm_app_cmp(const void *x, const void *y); -static void mdadm_app_free(void *x); +static size_t mdadm_app_hash (const void *x, size_t table_size); +static bool mdadm_app_cmp (const void *x, const void *y); +static void mdadm_app_free (void *x); static ssize_t map_app_md_devices (guestfs_h *g, Hash_table **map); -static int map_md_devices(guestfs_h *g, Hash_table **map); +static int map_md_devices (guestfs_h *g, Hash_table **map); /* Set fs->product_name to the first line of the release file. */ static int @@ -126,7 +133,8 @@ parse_release_file (guestfs_h *g, struct inspect_fs *fs, if (STREQ (fs->product_name, "")) { free (fs->product_name); fs->product_name = NULL; - error (g, _("release file %s is empty or malformed"), release_filename); + error (g, _("release file %s is empty or malformed"), + release_filename); return -1; } return 0; @@ -181,12 +189,12 @@ parse_os_release (guestfs_h *g, struct inspect_fs *fs, const char *filename) ++value; value_len = strlen (line) - (value - line); - if (value_len > 1 && value[0] == '"' && value[value_len-1] == '"') { + if (value_len > 1 && value[0] == '"' && value[value_len - 1] == '"') { ++value; value_len -= 2; } -#define VALUE_IS(a) STREQLEN(value, a, value_len) +#define VALUE_IS(a) STREQLEN (value, a, value_len) if (STRPREFIX (line, "ID=")) { if (VALUE_IS ("alpine")) distro = OS_DISTRO_ALPINE_LINUX; @@ -234,7 +242,7 @@ parse_os_release (guestfs_h *g, struct inspect_fs *fs, const char *filename) return -1; } else { CLEANUP_FREE char *buf = - safe_asprintf (g, "%.*s", (int) value_len, value); + safe_asprintf (g, "%.*s", (int)value_len, value); major_version = guestfs_int_parse_unsigned_int (g, buf); /* Handle cases where VERSION_ID is not a number. */ if (major_version != -1) @@ -293,14 +301,16 @@ parse_os_release (guestfs_h *g, struct inspect_fs *fs, const char *filename) * DISTRIB_DESCRIPTION="Mandriva Linux 2010.1" * Mandriva also has a normal release file called /etc/mandriva-release. * - * CoreOS has a /etc/lsb-release link to /usr/share/coreos/lsb-release containing: + * CoreOS has a /etc/lsb-release link to /usr/share/coreos/lsb-release + * containing: * DISTRIB_ID=CoreOS * DISTRIB_RELEASE=647.0.0 * DISTRIB_CODENAME="Red Dog" * DISTRIB_DESCRIPTION="CoreOS 647.0.0" */ static int -parse_lsb_release (guestfs_h *g, struct inspect_fs *fs, const char *filename) +parse_lsb_release (guestfs_h *g, struct inspect_fs *fs, + const char *filename) { int64_t size; CLEANUP_FREE_STRING_LIST char **lines = NULL; @@ -325,32 +335,25 @@ parse_lsb_release (guestfs_h *g, struct inspect_fs *fs, const char *filename) return -1; for (i = 0; lines[i] != NULL; ++i) { - if (fs->distro == 0 && - STREQ (lines[i], "DISTRIB_ID=Ubuntu")) { + if (fs->distro == 0 && STREQ (lines[i], "DISTRIB_ID=Ubuntu")) { fs->distro = OS_DISTRO_UBUNTU; r = 1; - } - else if (fs->distro == 0 && - STREQ (lines[i], "DISTRIB_ID=LinuxMint")) { + } else if (fs->distro == 0 && + STREQ (lines[i], "DISTRIB_ID=LinuxMint")) { fs->distro = OS_DISTRO_LINUX_MINT; r = 1; - } - else if (fs->distro == 0 && - STREQ (lines[i], "DISTRIB_ID=MandrivaLinux")) { + } else if (fs->distro == 0 && + STREQ (lines[i], "DISTRIB_ID=MandrivaLinux")) { fs->distro = OS_DISTRO_MANDRIVA; r = 1; - } - else if (fs->distro == 0 && - STREQ (lines[i], "DISTRIB_ID=\"Mageia\"")) { + } else if (fs->distro == 0 && + STREQ (lines[i], "DISTRIB_ID=\"Mageia\"")) { fs->distro = OS_DISTRO_MAGEIA; r = 1; - } - else if (fs->distro == 0 && - STREQ (lines[i], "DISTRIB_ID=CoreOS")) { + } else if (fs->distro == 0 && STREQ (lines[i], "DISTRIB_ID=CoreOS")) { fs->distro = OS_DISTRO_COREOS; r = 1; - } - else if (STRPREFIX (lines[i], "DISTRIB_RELEASE=")) { + } else if (STRPREFIX (lines[i], "DISTRIB_RELEASE=")) { char *major, *minor; if (match2 (g, &lines[i][16], re_major_minor, &major, &minor)) { fs->major_version = guestfs_int_parse_unsigned_int (g, major); @@ -364,16 +367,14 @@ parse_lsb_release (guestfs_h *g, struct inspect_fs *fs, const char *filename) if (fs->minor_version == -1) return -1; } - } - else if (fs->product_name == NULL && - (STRPREFIX (lines[i], "DISTRIB_DESCRIPTION=\"") || - STRPREFIX (lines[i], "DISTRIB_DESCRIPTION='"))) { + } else if (fs->product_name == NULL && + (STRPREFIX (lines[i], "DISTRIB_DESCRIPTION=\"") || + STRPREFIX (lines[i], "DISTRIB_DESCRIPTION='"))) { size_t len = strlen (lines[i]) - 21 - 1; fs->product_name = safe_strndup (g, &lines[i][21], len); r = 1; - } - else if (fs->product_name == NULL && - STRPREFIX (lines[i], "DISTRIB_DESCRIPTION=")) { + } else if (fs->product_name == NULL && + STRPREFIX (lines[i], "DISTRIB_DESCRIPTION=")) { size_t len = strlen (lines[i]) - 20; fs->product_name = safe_strndup (g, &lines[i][20], len); r = 1; @@ -387,7 +388,8 @@ parse_lsb_release (guestfs_h *g, struct inspect_fs *fs, const char *filename) } static int -parse_suse_release (guestfs_h *g, struct inspect_fs *fs, const char *filename) +parse_suse_release (guestfs_h *g, struct inspect_fs *fs, + const char *filename) { int64_t size; char *major, *minor; @@ -417,8 +419,10 @@ parse_suse_release (guestfs_h *g, struct inspect_fs *fs, const char *filename) /* First line is dist release name */ fs->product_name = safe_strdup (g, lines[0]); - /* Match SLES first because openSuSE regex overlaps some SLES release strings */ - if (match (g, fs->product_name, re_sles) || match (g, fs->product_name, re_nld)) { + /* Match SLES first because openSuSE regex overlaps some SLES release + * strings */ + if (match (g, fs->product_name, re_sles) || + match (g, fs->product_name, re_nld)) { fs->distro = OS_DISTRO_SLES; /* Second line contains version string */ @@ -442,8 +446,7 @@ parse_suse_release (guestfs_h *g, struct inspect_fs *fs, const char *filename) free (minor); if (fs->minor_version == -1) goto out; - } - else if (match (g, fs->product_name, re_opensuse)) { + } else if (match (g, fs->product_name, re_opensuse)) { fs->distro = OS_DISTRO_OPENSUSE; /* Second line contains version string */ @@ -461,7 +464,7 @@ parse_suse_release (guestfs_h *g, struct inspect_fs *fs, const char *filename) r = 0; - out: +out: return r; } @@ -479,20 +482,22 @@ guestfs_int_check_linux_root (guestfs_h *g, struct inspect_fs *fs) fs->type = OS_TYPE_LINUX; if (guestfs_is_file_opts (g, "/etc/os-release", - GUESTFS_IS_FILE_OPTS_FOLLOWSYMLINKS, 1, -1) > 0) { + GUESTFS_IS_FILE_OPTS_FOLLOWSYMLINKS, 1, + -1) > 0) { r = parse_os_release (g, fs, "/etc/os-release"); - if (r == -1) /* error */ + if (r == -1) /* error */ return -1; - if (r == 1) /* ok - detected the release from this file */ + if (r == 1) /* ok - detected the release from this file */ goto skip_release_checks; } if (guestfs_is_file_opts (g, "/etc/lsb-release", - GUESTFS_IS_FILE_OPTS_FOLLOWSYMLINKS, 1, -1) > 0) { + GUESTFS_IS_FILE_OPTS_FOLLOWSYMLINKS, 1, + -1) > 0) { r = parse_lsb_release (g, fs, "/etc/lsb-release"); - if (r == -1) /* error */ + if (r == -1) /* error */ return -1; - if (r == 1) /* ok - detected the release from this file */ + if (r == 1) /* ok - detected the release from this file */ goto skip_release_checks; } @@ -500,7 +505,8 @@ guestfs_int_check_linux_root (guestfs_h *g, struct inspect_fs *fs) * checks need to be performed before the Red-Hat one. */ if (guestfs_is_file_opts (g, "/etc/oracle-release", - GUESTFS_IS_FILE_OPTS_FOLLOWSYMLINKS, 1, -1) > 0) { + GUESTFS_IS_FILE_OPTS_FOLLOWSYMLINKS, 1, + -1) > 0) { fs->distro = OS_DISTRO_ORACLE_LINUX; @@ -519,23 +525,24 @@ guestfs_int_check_linux_root (guestfs_h *g, struct inspect_fs *fs) free (minor); if (fs->minor_version == -1) return -1; - } else if ((major = match1 (g, fs->product_name, re_oracle_linux_no_minor)) != NULL) { + } else if ((major = match1 (g, fs->product_name, + re_oracle_linux_no_minor)) != NULL) { fs->major_version = guestfs_int_parse_unsigned_int (g, major); free (major); if (fs->major_version == -1) return -1; fs->minor_version = 0; } - } - else if (guestfs_is_file_opts (g, "/etc/centos-release", - GUESTFS_IS_FILE_OPTS_FOLLOWSYMLINKS, 1, -1) > 0) { + } else if (guestfs_is_file_opts (g, "/etc/centos-release", + GUESTFS_IS_FILE_OPTS_FOLLOWSYMLINKS, 1, + -1) > 0) { fs->distro = OS_DISTRO_CENTOS; if (parse_release_file (g, fs, "/etc/centos-release") == -1) return -1; if (match2 (g, fs->product_name, re_centos_old, &major, &minor) || - match2 (g, fs->product_name, re_centos, &major, &minor)) { + match2 (g, fs->product_name, re_centos, &major, &minor)) { fs->major_version = guestfs_int_parse_unsigned_int (g, major); free (major); if (fs->major_version == -1) { @@ -546,17 +553,17 @@ guestfs_int_check_linux_root (guestfs_h *g, struct inspect_fs *fs) free (minor); if (fs->minor_version == -1) return -1; - } - else if ((major = match1 (g, fs->product_name, re_centos_no_minor)) != NULL) { + } else if ((major = match1 (g, fs->product_name, re_centos_no_minor)) != + NULL) { fs->major_version = guestfs_int_parse_unsigned_int (g, major); free (major); if (fs->major_version == -1) return -1; fs->minor_version = 0; } - } - else if (guestfs_is_file_opts (g, "/etc/altlinux-release", - GUESTFS_IS_FILE_OPTS_FOLLOWSYMLINKS, 1, -1) > 0) { + } else if (guestfs_is_file_opts (g, "/etc/altlinux-release", + GUESTFS_IS_FILE_OPTS_FOLLOWSYMLINKS, 1, + -1) > 0) { fs->distro = OS_DISTRO_ALTLINUX; if (parse_release_file (g, fs, "/etc/altlinux-release") == -1) @@ -574,10 +581,11 @@ guestfs_int_check_linux_root (guestfs_h *g, struct inspect_fs *fs) if (fs->minor_version == -1) return -1; } - } - else if (guestfs_is_file_opts (g, "/etc/redhat-release", - GUESTFS_IS_FILE_OPTS_FOLLOWSYMLINKS, 1, -1) > 0) { - fs->distro = OS_DISTRO_REDHAT_BASED; /* Something generic Red Hat-like. */ + } else if (guestfs_is_file_opts (g, "/etc/redhat-release", + GUESTFS_IS_FILE_OPTS_FOLLOWSYMLINKS, 1, + -1) > 0) { + fs->distro = + OS_DISTRO_REDHAT_BASED; /* Something generic Red Hat-like. */ if (parse_release_file (g, fs, "/etc/redhat-release") == -1) return -1; @@ -588,9 +596,8 @@ guestfs_int_check_linux_root (guestfs_h *g, struct inspect_fs *fs) free (major); if (fs->major_version == -1) return -1; - } - else if (match2 (g, fs->product_name, re_rhel_old, &major, &minor) || - match2 (g, fs->product_name, re_rhel, &major, &minor)) { + } else if (match2 (g, fs->product_name, re_rhel_old, &major, &minor) || + match2 (g, fs->product_name, re_rhel, &major, &minor)) { fs->distro = OS_DISTRO_RHEL; fs->major_version = guestfs_int_parse_unsigned_int (g, major); free (major); @@ -602,17 +609,17 @@ guestfs_int_check_linux_root (guestfs_h *g, struct inspect_fs *fs) free (minor); if (fs->minor_version == -1) return -1; - } - else if ((major = match1 (g, fs->product_name, re_rhel_no_minor)) != NULL) { + } else if ((major = match1 (g, fs->product_name, re_rhel_no_minor)) != + NULL) { fs->distro = OS_DISTRO_RHEL; fs->major_version = guestfs_int_parse_unsigned_int (g, major); free (major); if (fs->major_version == -1) return -1; fs->minor_version = 0; - } - else if (match2 (g, fs->product_name, re_centos_old, &major, &minor) || - match2 (g, fs->product_name, re_centos, &major, &minor)) { + } else if (match2 (g, fs->product_name, re_centos_old, &major, + &minor) || + match2 (g, fs->product_name, re_centos, &major, &minor)) { fs->distro = OS_DISTRO_CENTOS; fs->major_version = guestfs_int_parse_unsigned_int (g, major); free (major); @@ -624,17 +631,18 @@ guestfs_int_check_linux_root (guestfs_h *g, struct inspect_fs *fs) free (minor); if (fs->minor_version == -1) return -1; - } - else if ((major = match1 (g, fs->product_name, re_centos_no_minor)) != NULL) { + } else if ((major = match1 (g, fs->product_name, re_centos_no_minor)) != + NULL) { fs->distro = OS_DISTRO_CENTOS; fs->major_version = guestfs_int_parse_unsigned_int (g, major); free (major); if (fs->major_version == -1) return -1; fs->minor_version = 0; - } - else if (match2 (g, fs->product_name, re_scientific_linux_old, &major, &minor) || - match2 (g, fs->product_name, re_scientific_linux, &major, &minor)) { + } else if (match2 (g, fs->product_name, re_scientific_linux_old, &major, + &minor) || + match2 (g, fs->product_name, re_scientific_linux, &major, + &minor)) { fs->distro = OS_DISTRO_SCIENTIFIC_LINUX; fs->major_version = guestfs_int_parse_unsigned_int (g, major); free (major); @@ -646,8 +654,8 @@ guestfs_int_check_linux_root (guestfs_h *g, struct inspect_fs *fs) free (minor); if (fs->minor_version == -1) return -1; - } - else if ((major = match1 (g, fs->product_name, re_scientific_linux_no_minor)) != NULL) { + } else if ((major = match1 (g, fs->product_name, + re_scientific_linux_no_minor)) != NULL) { fs->distro = OS_DISTRO_SCIENTIFIC_LINUX; fs->major_version = guestfs_int_parse_unsigned_int (g, major); free (major); @@ -655,9 +663,9 @@ guestfs_int_check_linux_root (guestfs_h *g, struct inspect_fs *fs) return -1; fs->minor_version = 0; } - } - else if (guestfs_is_file_opts (g, "/etc/debian_version", - GUESTFS_IS_FILE_OPTS_FOLLOWSYMLINKS, 1, -1) > 0) { + } else if (guestfs_is_file_opts (g, "/etc/debian_version", + GUESTFS_IS_FILE_OPTS_FOLLOWSYMLINKS, 1, + -1) > 0) { fs->distro = OS_DISTRO_DEBIAN; if (parse_release_file (g, fs, "/etc/debian_version") == -1) @@ -665,9 +673,9 @@ guestfs_int_check_linux_root (guestfs_h *g, struct inspect_fs *fs) if (guestfs_int_parse_major_minor (g, fs) == -1) return -1; - } - else if (guestfs_is_file_opts (g, "/etc/pardus-release", - GUESTFS_IS_FILE_OPTS_FOLLOWSYMLINKS, 1, -1) > 0) { + } else if (guestfs_is_file_opts (g, "/etc/pardus-release", + GUESTFS_IS_FILE_OPTS_FOLLOWSYMLINKS, 1, + -1) > 0) { fs->distro = OS_DISTRO_PARDUS; if (parse_release_file (g, fs, "/etc/pardus-release") == -1) @@ -675,17 +683,17 @@ guestfs_int_check_linux_root (guestfs_h *g, struct inspect_fs *fs) if (guestfs_int_parse_major_minor (g, fs) == -1) return -1; - } - else if (guestfs_is_file_opts (g, "/etc/arch-release", - GUESTFS_IS_FILE_OPTS_FOLLOWSYMLINKS, 1, -1) > 0) { + } else if (guestfs_is_file_opts (g, "/etc/arch-release", + GUESTFS_IS_FILE_OPTS_FOLLOWSYMLINKS, 1, + -1) > 0) { fs->distro = OS_DISTRO_ARCHLINUX; /* /etc/arch-release file is empty and I can't see a way to * determine the actual release or product string. */ - } - else if (guestfs_is_file_opts (g, "/etc/gentoo-release", - GUESTFS_IS_FILE_OPTS_FOLLOWSYMLINKS, 1, -1) > 0) { + } else if (guestfs_is_file_opts (g, "/etc/gentoo-release", + GUESTFS_IS_FILE_OPTS_FOLLOWSYMLINKS, 1, + -1) > 0) { fs->distro = OS_DISTRO_GENTOO; if (parse_release_file (g, fs, "/etc/gentoo-release") == -1) @@ -693,9 +701,9 @@ guestfs_int_check_linux_root (guestfs_h *g, struct inspect_fs *fs) if (guestfs_int_parse_major_minor (g, fs) == -1) return -1; - } - else if (guestfs_is_file_opts (g, "/etc/meego-release", - GUESTFS_IS_FILE_OPTS_FOLLOWSYMLINKS, 1, -1) > 0) { + } else if (guestfs_is_file_opts (g, "/etc/meego-release", + GUESTFS_IS_FILE_OPTS_FOLLOWSYMLINKS, 1, + -1) > 0) { fs->distro = OS_DISTRO_MEEGO; if (parse_release_file (g, fs, "/etc/meego-release") == -1) @@ -703,9 +711,9 @@ guestfs_int_check_linux_root (guestfs_h *g, struct inspect_fs *fs) if (guestfs_int_parse_major_minor (g, fs) == -1) return -1; - } - else if (guestfs_is_file_opts (g, "/etc/slackware-version", - GUESTFS_IS_FILE_OPTS_FOLLOWSYMLINKS, 1, -1) > 0) { + } else if (guestfs_is_file_opts (g, "/etc/slackware-version", + GUESTFS_IS_FILE_OPTS_FOLLOWSYMLINKS, 1, + -1) > 0) { fs->distro = OS_DISTRO_SLACKWARE; if (parse_release_file (g, fs, "/etc/slackware-version") == -1) @@ -713,9 +721,9 @@ guestfs_int_check_linux_root (guestfs_h *g, struct inspect_fs *fs) if (guestfs_int_parse_major_minor (g, fs) == -1) return -1; - } - else if (guestfs_is_file_opts (g, "/etc/ttylinux-target", - GUESTFS_IS_FILE_OPTS_FOLLOWSYMLINKS, 1, -1) > 0) { + } else if (guestfs_is_file_opts (g, "/etc/ttylinux-target", + GUESTFS_IS_FILE_OPTS_FOLLOWSYMLINKS, 1, + -1) > 0) { fs->distro = OS_DISTRO_TTYLINUX; if (parse_release_file (g, fs, "/etc/ttylinux-target") == -1) @@ -723,9 +731,9 @@ guestfs_int_check_linux_root (guestfs_h *g, struct inspect_fs *fs) if (guestfs_int_parse_major_minor (g, fs) == -1) return -1; - } - else if (guestfs_is_file_opts (g, "/etc/SuSE-release", - GUESTFS_IS_FILE_OPTS_FOLLOWSYMLINKS, 1, -1) > 0) { + } else if (guestfs_is_file_opts (g, "/etc/SuSE-release", + GUESTFS_IS_FILE_OPTS_FOLLOWSYMLINKS, 1, + -1) > 0) { fs->distro = OS_DISTRO_SUSE_BASED; if (parse_suse_release (g, fs, "/etc/SuSE-release") == -1) @@ -735,7 +743,8 @@ guestfs_int_check_linux_root (guestfs_h *g, struct inspect_fs *fs) /* CirrOS versions providing a own version file. */ else if (guestfs_is_file_opts (g, "/etc/cirros/version", - GUESTFS_IS_FILE_OPTS_FOLLOWSYMLINKS, 1, -1) > 0) { + GUESTFS_IS_FILE_OPTS_FOLLOWSYMLINKS, 1, + -1) > 0) { fs->distro = OS_DISTRO_CIRROS; if (parse_release_file (g, fs, "/etc/cirros/version") == -1) @@ -748,9 +757,11 @@ guestfs_int_check_linux_root (guestfs_h *g, struct inspect_fs *fs) * toolkit. It is used by specific distros such as Cirros. */ else if (guestfs_is_file_opts (g, "/etc/br-version", - GUESTFS_IS_FILE_OPTS_FOLLOWSYMLINKS, 1, -1) > 0) { + GUESTFS_IS_FILE_OPTS_FOLLOWSYMLINKS, 1, + -1) > 0) { if (guestfs_is_file_opts (g, "/usr/share/cirros/logo", - GUESTFS_IS_FILE_OPTS_FOLLOWSYMLINKS, 1, -1) > 0) + GUESTFS_IS_FILE_OPTS_FOLLOWSYMLINKS, 1, + -1) > 0) fs->distro = OS_DISTRO_CIRROS; else fs->distro = OS_DISTRO_BUILDROOT; @@ -761,9 +772,9 @@ guestfs_int_check_linux_root (guestfs_h *g, struct inspect_fs *fs) if (guestfs_int_parse_major_minor (g, fs) == -1) return -1; - } - else if (guestfs_is_file_opts (g, "/etc/alpine-release", - GUESTFS_IS_FILE_OPTS_FOLLOWSYMLINKS, 1, -1) > 0) { + } else if (guestfs_is_file_opts (g, "/etc/alpine-release", + GUESTFS_IS_FILE_OPTS_FOLLOWSYMLINKS, 1, + -1) > 0) { fs->distro = OS_DISTRO_ALPINE_LINUX; if (parse_release_file (g, fs, "/etc/alpine-release") == -1) @@ -771,9 +782,9 @@ guestfs_int_check_linux_root (guestfs_h *g, struct inspect_fs *fs) if (guestfs_int_parse_major_minor (g, fs) == -1) return -1; - } - else if (guestfs_is_file_opts (g, "/etc/frugalware-release", - GUESTFS_IS_FILE_OPTS_FOLLOWSYMLINKS, 1, -1) > 0) { + } else if (guestfs_is_file_opts (g, "/etc/frugalware-release", + GUESTFS_IS_FILE_OPTS_FOLLOWSYMLINKS, 1, + -1) > 0) { fs->distro = OS_DISTRO_FRUGALWARE; if (parse_release_file (g, fs, "/etc/frugalware-release") == -1) @@ -793,7 +804,7 @@ guestfs_int_check_linux_root (guestfs_h *g, struct inspect_fs *fs) } } - skip_release_checks:; +skip_release_checks:; /* Determine the architecture. */ check_architecture (g, fs); @@ -826,8 +837,8 @@ guestfs_int_check_freebsd_root (guestfs_h *g, struct inspect_fs *fs) * we'll use that anyway. */ - if (guestfs_is_file_opts (g, "/etc/motd", - GUESTFS_IS_FILE_OPTS_FOLLOWSYMLINKS, 1, -1) > 0) { + if (guestfs_is_file_opts ( + g, "/etc/motd", GUESTFS_IS_FILE_OPTS_FOLLOWSYMLINKS, 1, -1) > 0) { if (parse_release_file (g, fs, "/etc/motd") == -1) return -1; @@ -838,7 +849,8 @@ guestfs_int_check_freebsd_root (guestfs_h *g, struct inspect_fs *fs) /* Determine the architecture. */ check_architecture (g, fs); - /* We already know /etc/fstab exists because it's part of the test above. */ + /* We already know /etc/fstab exists because it's part of the test above. + */ const char *configfiles[] = { "/etc/fstab", NULL }; if (inspect_with_augeas (g, fs, configfiles, check_fstab) == -1) return -1; @@ -856,7 +868,8 @@ guestfs_int_check_netbsd_root (guestfs_h *g, struct inspect_fs *fs) { if (guestfs_is_file_opts (g, "/etc/release", - GUESTFS_IS_FILE_OPTS_FOLLOWSYMLINKS, 1, -1) > 0) { + GUESTFS_IS_FILE_OPTS_FOLLOWSYMLINKS, 1, + -1) > 0) { char *major, *minor; if (parse_release_file (g, fs, "/etc/release") == -1) return -1; @@ -882,7 +895,8 @@ guestfs_int_check_netbsd_root (guestfs_h *g, struct inspect_fs *fs) /* Determine the architecture. */ check_architecture (g, fs); - /* We already know /etc/fstab exists because it's part of the test above. */ + /* We already know /etc/fstab exists because it's part of the test above. + */ const char *configfiles[] = { "/etc/fstab", NULL }; if (inspect_with_augeas (g, fs, configfiles, check_fstab) == -1) return -1; @@ -898,8 +912,8 @@ guestfs_int_check_netbsd_root (guestfs_h *g, struct inspect_fs *fs) int guestfs_int_check_openbsd_root (guestfs_h *g, struct inspect_fs *fs) { - if (guestfs_is_file_opts (g, "/etc/motd", - GUESTFS_IS_FILE_OPTS_FOLLOWSYMLINKS, 1, -1) > 0) { + if (guestfs_is_file_opts ( + g, "/etc/motd", GUESTFS_IS_FILE_OPTS_FOLLOWSYMLINKS, 1, -1) > 0) { CLEANUP_FREE char *major = NULL, *minor = NULL; /* The first line of this file gets automatically updated at boot. */ @@ -931,7 +945,8 @@ guestfs_int_check_openbsd_root (guestfs_h *g, struct inspect_fs *fs) /* Determine the architecture. */ check_architecture (g, fs); - /* We already know /etc/fstab exists because it's part of the test above. */ + /* We already know /etc/fstab exists because it's part of the test above. + */ const char *configfiles[] = { "/etc/fstab", NULL }; if (inspect_with_augeas (g, fs, configfiles, check_fstab) == -1) return -1; @@ -952,7 +967,8 @@ guestfs_int_check_hurd_root (guestfs_h *g, struct inspect_fs *fs) fs->type = OS_TYPE_HURD; if (guestfs_is_file_opts (g, "/etc/debian_version", - GUESTFS_IS_FILE_OPTS_FOLLOWSYMLINKS, 1, -1) > 0) { + GUESTFS_IS_FILE_OPTS_FOLLOWSYMLINKS, 1, + -1) > 0) { fs->distro = OS_DISTRO_DEBIAN; if (parse_release_file (g, fs, "/etc/debian_version") == -1) @@ -989,7 +1005,8 @@ guestfs_int_check_minix_root (guestfs_h *g, struct inspect_fs *fs) fs->type = OS_TYPE_MINIX; if (guestfs_is_file_opts (g, "/etc/version", - GUESTFS_IS_FILE_OPTS_FOLLOWSYMLINKS, 1, -1) > 0) { + GUESTFS_IS_FILE_OPTS_FOLLOWSYMLINKS, 1, + -1) > 0) { char *major, *minor; if (parse_release_file (g, fs, "/etc/version") == -1) return -1; @@ -1059,22 +1076,24 @@ guestfs_int_check_coreos_usr (guestfs_h *g, struct inspect_fs *fs) fs->distro = OS_DISTRO_COREOS; if (guestfs_is_file_opts (g, "/lib/os-release", - GUESTFS_IS_FILE_OPTS_FOLLOWSYMLINKS, 1, -1) > 0) { + GUESTFS_IS_FILE_OPTS_FOLLOWSYMLINKS, 1, + -1) > 0) { r = parse_os_release (g, fs, "/lib/os-release"); - if (r == -1) /* error */ + if (r == -1) /* error */ return -1; - if (r == 1) /* ok - detected the release from this file */ + if (r == 1) /* ok - detected the release from this file */ goto skip_release_checks; } if (guestfs_is_file_opts (g, "/share/coreos/lsb-release", - GUESTFS_IS_FILE_OPTS_FOLLOWSYMLINKS, 1, -1) > 0) { + GUESTFS_IS_FILE_OPTS_FOLLOWSYMLINKS, 1, + -1) > 0) { r = parse_lsb_release (g, fs, "/share/coreos/lsb-release"); - if (r == -1) /* error */ + if (r == -1) /* error */ return -1; } - skip_release_checks:; +skip_release_checks:; /* Determine the architecture. */ check_architecture (g, fs); @@ -1090,8 +1109,8 @@ guestfs_int_check_coreos_usr (guestfs_h *g, struct inspect_fs *fs) static void check_architecture (guestfs_h *g, struct inspect_fs *fs) { - const char *binaries[] = - { "/bin/bash", "/bin/ls", "/bin/echo", "/bin/rm", "/bin/sh" }; + const char *binaries[] = { "/bin/bash", "/bin/ls", "/bin/echo", "/bin/rm", + "/bin/sh" }; size_t i; char *arch = NULL; @@ -1101,7 +1120,8 @@ check_architecture (guestfs_h *g, struct inspect_fs *fs) * then we can check the architecture of their target. */ if (guestfs_is_file_opts (g, binaries[i], - GUESTFS_IS_FILE_OPTS_FOLLOWSYMLINKS, 1, -1) > 0) { + GUESTFS_IS_FILE_OPTS_FOLLOWSYMLINKS, 1, + -1) > 0) { CLEANUP_FREE char *resolved = NULL; /* Ignore errors from realpath and file_architecture calls. */ @@ -1163,8 +1183,8 @@ check_hostname_unix (guestfs_h *g, struct inspect_fs *fs) if (!fs->hostname && guestfs_is_file (g, "/etc/sysconfig/network")) { const char *configfiles[] = { "/etc/sysconfig/network", NULL }; - if (inspect_with_augeas (g, fs, configfiles, - check_hostname_redhat) == -1) + if (inspect_with_augeas (g, fs, configfiles, check_hostname_redhat) == + -1) return -1; } break; @@ -1194,7 +1214,8 @@ check_hostname_unix (guestfs_h *g, struct inspect_fs *fs) case OS_TYPE_MINIX: if (guestfs_is_file (g, "/etc/hostname.file")) { - fs->hostname = guestfs_int_first_line_of_file (g, "/etc/hostname.file"); + fs->hostname = + guestfs_int_first_line_of_file (g, "/etc/hostname.file"); if (fs->hostname == NULL) return -1; if (STREQ (fs->hostname, "")) { @@ -1207,7 +1228,7 @@ check_hostname_unix (guestfs_h *g, struct inspect_fs *fs) case OS_TYPE_WINDOWS: /* not here, see check_windows_system_registry */ case OS_TYPE_DOS: case OS_TYPE_UNKNOWN: - /* nothing */; + /* nothing */; } return 0; @@ -1292,14 +1313,16 @@ check_fstab (guestfs_h *g, struct inspect_fs *fs) char augpath[256]; CLEANUP_HASH_FREE Hash_table *md_map = NULL; bool is_bsd = (fs->type == OS_TYPE_FREEBSD || - fs->type == OS_TYPE_NETBSD || - fs->type == OS_TYPE_OPENBSD); + fs->type == OS_TYPE_NETBSD || fs->type == OS_TYPE_OPENBSD); - /* Generate a map of MD device paths listed in /etc/mdadm.conf to MD device + /* Generate a map of MD device paths listed in /etc/mdadm.conf to MD + * device * paths in the guestfs appliance */ - if (map_md_devices (g, &md_map) == -1) return -1; + if (map_md_devices (g, &md_map) == -1) + return -1; - entries = guestfs_aug_match (g, "/files/etc/fstab/*[label() != '#comment']"); + entries = + guestfs_aug_match (g, "/files/etc/fstab/*[label() != '#comment']"); if (entries == NULL) return -1; @@ -1320,8 +1343,7 @@ check_fstab (guestfs_h *g, struct inspect_fs *fs) * discs. */ if ((STRPREFIX (spec, "/dev/fd") && c_isdigit (spec[7])) || - STREQ (spec, "/dev/floppy") || - STREQ (spec, "/dev/cdrom") || + STREQ (spec, "/dev/floppy") || STREQ (spec, "/dev/cdrom") || STRPREFIX (spec, "/dev/iso9660/")) continue; @@ -1331,14 +1353,10 @@ check_fstab (guestfs_h *g, struct inspect_fs *fs) return -1; /* Ignore certain mountpoints. */ - if (STRPREFIX (mp, "/dev/") || - STREQ (mp, "/dev") || - STRPREFIX (mp, "/media/") || - STRPREFIX (mp, "/proc/") || - STREQ (mp, "/proc") || - STRPREFIX (mp, "/selinux/") || - STREQ (mp, "/selinux") || - STRPREFIX (mp, "/sys/") || + if (STRPREFIX (mp, "/dev/") || STREQ (mp, "/dev") || + STRPREFIX (mp, "/media/") || STRPREFIX (mp, "/proc/") || + STREQ (mp, "/proc") || STRPREFIX (mp, "/selinux/") || + STREQ (mp, "/selinux") || STRPREFIX (mp, "/sys/") || STREQ (mp, "/sys")) continue; @@ -1358,7 +1376,8 @@ check_fstab (guestfs_h *g, struct inspect_fs *fs) /* Resolve guest block device names. */ mountable = resolve_fstab_device (g, spec, md_map, fs->type); else if (match (g, spec, re_openbsd_duid)) { - /* In OpenBSD's fstab you can specify partitions on a disk by appending a + /* In OpenBSD's fstab you can specify partitions on a disk by + * appending a * period and a partition letter to a Disklable Unique Identifier. The * DUID is a 16 hex digit field found in the OpenBSD's altered BSD * disklabel. For more info see here: @@ -1370,7 +1389,7 @@ check_fstab (guestfs_h *g, struct inspect_fs *fs) /* We cannot peep into disklables, we can only assume that this is the * first disk. */ - snprintf(device, 10, "%s%c", "/dev/sd0", part); + snprintf (device, 10, "%s%c", "/dev/sd0", part); mountable = resolve_fstab_device (g, device, md_map, fs->type); } @@ -1382,18 +1401,21 @@ check_fstab (guestfs_h *g, struct inspect_fs *fs) snprintf (augpath, sizeof augpath, "%s/vfstype", *entry); vfstype = guestfs_aug_get (g, augpath); - if (vfstype == NULL) return -1; + if (vfstype == NULL) + return -1; if (STREQ (vfstype, "btrfs")) { char **opt; snprintf (augpath, sizeof augpath, "%s/opt", *entry); CLEANUP_FREE_STRING_LIST char **opts = guestfs_aug_match (g, augpath); - if (opts == NULL) return -1; + if (opts == NULL) + return -1; for (opt = opts; *opt; opt++) { CLEANUP_FREE char *optname = guestfs_aug_get (g, augpath); - if (optname == NULL) return -1; + if (optname == NULL) + return -1; if (STREQ (optname, "subvol")) { CLEANUP_FREE char *subvol = NULL; @@ -1401,7 +1423,8 @@ check_fstab (guestfs_h *g, struct inspect_fs *fs) snprintf (augpath, sizeof augpath, "%s/value", *opt); subvol = guestfs_aug_get (g, augpath); - if (subvol == NULL) return -1; + if (subvol == NULL) + return -1; new = safe_asprintf (g, "btrfsvol:%s/%s", mountable, subvol); free (mountable); @@ -1425,8 +1448,8 @@ check_fstab (guestfs_h *g, struct inspect_fs *fs) * 'mp' is the mount point, which could also be 'swap' or 'none'. */ static void -add_fstab_entry (guestfs_h *g, struct inspect_fs *fs, - const char *mountable, const char *mountpoint) +add_fstab_entry (guestfs_h *g, struct inspect_fs *fs, const char *mountable, + const char *mountpoint) { /* Add this to the fstab entry in 'fs'. * Note these are further filtered by guestfs_inspect_get_mountpoints @@ -1440,16 +1463,17 @@ add_fstab_entry (guestfs_h *g, struct inspect_fs *fs, fs->fstab = p; fs->nr_fstab = n; - /* These are owned by the handle and freed by guestfs_int_free_inspect_info. */ - fs->fstab[n-1].mountable = safe_strdup (g, mountable); - fs->fstab[n-1].mountpoint = safe_strdup (g, mountpoint); + /* These are owned by the handle and freed by + * guestfs_int_free_inspect_info. */ + fs->fstab[n - 1].mountable = safe_strdup (g, mountable); + fs->fstab[n - 1].mountpoint = safe_strdup (g, mountpoint); debug (g, "fstab: mountable=%s mountpoint=%s", mountable, mountpoint); } /* Compute a uuid hash as a simple xor of of its 4 32bit components */ static size_t -uuid_hash(const void *x, size_t table_size) +uuid_hash (const void *x, size_t table_size) { const md_uuid *a = x; size_t h, i; @@ -1463,25 +1487,26 @@ uuid_hash(const void *x, size_t table_size) } static bool -uuid_cmp(const void *x, const void *y) +uuid_cmp (const void *x, const void *y) { const md_uuid *a = x; const md_uuid *b = y; size_t i; for (i = 0; i < 1; i++) { - if (a->uuid[i] != b->uuid[i]) return 0; + if (a->uuid[i] != b->uuid[i]) + return 0; } return 1; } static void -md_uuid_free(void *x) +md_uuid_free (void *x) { md_uuid *a = x; - free(a->path); - free(a); + free (a->path); + free (a); } /* Taken from parse_uuid in mdadm */ @@ -1514,7 +1539,8 @@ parse_uuid (const char *str, uint32_t *uuid) } hit++; } - if (hit == 32) return 0; + if (hit == 32) + return 0; return -1; } @@ -1528,20 +1554,24 @@ map_app_md_devices (guestfs_h *g, Hash_table **map) char **md; /* A hash mapping uuids to md device names */ - *map = hash_initialize(16, NULL, uuid_hash, uuid_cmp, md_uuid_free); - if (*map == NULL) g->abort_cb(); + *map = hash_initialize (16, NULL, uuid_hash, uuid_cmp, md_uuid_free); + if (*map == NULL) + g->abort_cb (); - mds = guestfs_list_md_devices(g); - if (mds == NULL) goto error; + mds = guestfs_list_md_devices (g); + if (mds == NULL) + goto error; for (md = mds; *md != NULL; md++) { char **i; CLEANUP_FREE_STRING_LIST char **detail = guestfs_md_detail (g, *md); - if (detail == NULL) goto error; + if (detail == NULL) + goto error; /* Iterate over keys until we find uuid */ for (i = detail; *i != NULL; i += 2) { - if (STREQ(*i, "uuid")) break; + if (STREQ (*i, "uuid")) + break; } /* We found it */ @@ -1551,52 +1581,54 @@ map_app_md_devices (guestfs_h *g, Hash_table **map) /* Next item is the uuid value */ i++; - entry = safe_malloc(g, sizeof(md_uuid)); - entry->path = safe_strdup(g, *md); + entry = safe_malloc (g, sizeof (md_uuid)); + entry->path = safe_strdup (g, *md); - if (parse_uuid(*i, entry->uuid) == -1) { + if (parse_uuid (*i, entry->uuid) == -1) { /* Invalid UUID is weird, but not fatal. */ - debug(g, "inspect-os: guestfs_md_detail returned invalid " - "uuid for %s: %s", *md, *i); - md_uuid_free(entry); + debug (g, "inspect-os: guestfs_md_detail returned invalid " + "uuid for %s: %s", + *md, *i); + md_uuid_free (entry); continue; } const void *matched = NULL; - switch (hash_insert_if_absent(*map, entry, &matched)) { + switch (hash_insert_if_absent (*map, entry, &matched)) { case -1: - g->abort_cb(); + g->abort_cb (); case 0: - /* Duplicate uuid in for md device is weird, but not fatal. */ - debug(g, "inspect-os: md devices %s and %s have the same uuid", - ((md_uuid *)matched)->path, entry->path); - md_uuid_free(entry); - break; + /* Duplicate uuid in for md device is weird, but not fatal. */ + debug (g, "inspect-os: md devices %s and %s have the same uuid", + ((md_uuid *)matched)->path, entry->path); + md_uuid_free (entry); + break; default: - n++; + n++; } } } return n; - error: - hash_free (*map); *map = NULL; +error: + hash_free (*map); + *map = NULL; return -1; } static size_t -mdadm_app_hash(const void *x, size_t table_size) +mdadm_app_hash (const void *x, size_t table_size) { const mdadm_app *a = x; - return hash_pjw(a->mdadm, table_size); + return hash_pjw (a->mdadm, table_size); } static bool -mdadm_app_cmp(const void *x, const void *y) +mdadm_app_cmp (const void *x, const void *y) { const mdadm_app *a = x; const mdadm_app *b = y; @@ -1605,18 +1637,18 @@ mdadm_app_cmp(const void *x, const void *y) } static void -mdadm_app_free(void *x) +mdadm_app_free (void *x) { mdadm_app *a = x; - free(a->mdadm); - free(a->app); - free(a); + free (a->mdadm); + free (a->app); + free (a); } /* Get a map of md device names in mdadm.conf to their device names in the * appliance */ static int -map_md_devices(guestfs_h *g, Hash_table **map) +map_md_devices (guestfs_h *g, Hash_table **map) { CLEANUP_HASH_FREE Hash_table *app_map = NULL; CLEANUP_FREE_STRING_LIST char **matches = NULL; @@ -1626,32 +1658,38 @@ map_md_devices(guestfs_h *g, Hash_table **map) /* Get a map of md device uuids to their device names in the appliance */ n_app_md_devices = map_app_md_devices (g, &app_map); - if (n_app_md_devices == -1) goto error; + if (n_app_md_devices == -1) + goto error; /* Nothing to do if there are no md devices */ if (n_app_md_devices == 0) return 0; /* Get all arrays listed in mdadm.conf */ - matches = guestfs_aug_match(g, "/files/etc/mdadm.conf/array"); - if (!matches) goto error; + matches = guestfs_aug_match (g, "/files/etc/mdadm.conf/array"); + if (!matches) + goto error; - /* Log a debug message if we've got md devices, but nothing in mdadm.conf */ + /* Log a debug message if we've got md devices, but nothing in mdadm.conf + */ if (matches[0] == NULL) { - debug(g, "Appliance has MD devices, but augeas returned no array matches " - "in mdadm.conf"); + debug (g, + "Appliance has MD devices, but augeas returned no array matches " + "in mdadm.conf"); return 0; } - *map = hash_initialize(16, NULL, mdadm_app_hash, mdadm_app_cmp, - mdadm_app_free); - if (!*map) g->abort_cb(); + *map = hash_initialize (16, NULL, mdadm_app_hash, mdadm_app_cmp, + mdadm_app_free); + if (!*map) + g->abort_cb (); for (char **m = matches; *m != NULL; m++) { /* Get device name and uuid for each array */ CLEANUP_FREE char *dev_path = safe_asprintf (g, "%s/devicename", *m); char *dev = guestfs_aug_get (g, dev_path); - if (!dev) goto error; + if (!dev) + goto error; CLEANUP_FREE char *uuid_path = safe_asprintf (g, "%s/uuid", *m); CLEANUP_FREE char *uuid = guestfs_aug_get (g, uuid_path); @@ -1664,32 +1702,32 @@ map_md_devices(guestfs_h *g, Hash_table **map) * uuid->appliance device map */ md_uuid mdadm; mdadm.path = dev; - if (parse_uuid(uuid, mdadm.uuid) == -1) { + if (parse_uuid (uuid, mdadm.uuid) == -1) { /* Invalid uuid. Weird, but not fatal. */ - debug(g, "inspect-os: mdadm.conf contains invalid uuid for %s: %s", - dev, uuid); + debug (g, "inspect-os: mdadm.conf contains invalid uuid for %s: %s", + dev, uuid); free (dev); continue; } /* If there's a corresponding uuid in the appliance, create a new * entry in the transitive map */ - md_uuid *app = hash_lookup(app_map, &mdadm); + md_uuid *app = hash_lookup (app_map, &mdadm); if (app) { - mdadm_app *entry = safe_malloc(g, sizeof(mdadm_app)); + mdadm_app *entry = safe_malloc (g, sizeof (mdadm_app)); entry->mdadm = dev; - entry->app = safe_strdup(g, app->path); + entry->app = safe_strdup (g, app->path); - switch (hash_insert_if_absent(*map, entry, NULL)) { + switch (hash_insert_if_absent (*map, entry, NULL)) { case -1: - g->abort_cb(); + g->abort_cb (); case 0: - /* Duplicate uuid in for md device is weird, but not fatal. */ - debug(g, "inspect-os: mdadm.conf contains multiple entries for %s", - app->path); - mdadm_app_free(entry); - continue; + /* Duplicate uuid in for md device is weird, but not fatal. */ + debug (g, "inspect-os: mdadm.conf contains multiple entries for %s", + app->path); + mdadm_app_free (entry); + continue; } } else free (dev); @@ -1697,8 +1735,9 @@ map_md_devices(guestfs_h *g, Hash_table **map) return 0; - error: - if (*map) hash_free (*map); +error: + if (*map) + hash_free (*map); return -1; } @@ -1725,7 +1764,8 @@ resolve_fstab_device_xdev (guestfs_h *g, const char *type, const char *disk, /* Check any hints we were passed for a non-heuristic mapping */ name = safe_asprintf (g, "%sd%s", type, disk); - ITER_DRIVES (g, i, drv) { + ITER_DRIVES (g, i, drv) + { if (drv->name && STREQ (drv->name, name)) { device = safe_asprintf (g, "%s%s", devices[i], part); if (!guestfs_int_is_partition (g, device)) { @@ -1746,11 +1786,13 @@ resolve_fstab_device_xdev (guestfs_h *g, const char *type, const char *disk, /* Calculate the numerical index of the disk */ i = disk[0] - 'a'; for (p = disk + 1; *p != '\0'; p++) { - i += 1; i *= 26; + i += 1; + i *= 26; i += *p - 'a'; } - /* Check the index makes sense wrt the number of disks the appliance has. + /* Check the index makes sense wrt the number of disks the appliance + * has. * If it does, map it to an appliance disk. */ if (i < count) { @@ -1767,8 +1809,8 @@ resolve_fstab_device_xdev (guestfs_h *g, const char *type, const char *disk, } static int -resolve_fstab_device_cciss (guestfs_h *g, const char *disk, const char *part, - char **device_ret) +resolve_fstab_device_cciss (guestfs_h *g, const char *disk, + const char *part, char **device_ret) { char *device; CLEANUP_FREE_STRING_LIST char **devices = NULL; @@ -1784,7 +1826,8 @@ resolve_fstab_device_cciss (guestfs_h *g, const char *disk, const char *part, return -1; /* Check any hints we were passed for a non-heuristic mapping */ - ITER_DRIVES (g, i, drv) { + ITER_DRIVES (g, i, drv) + { if (drv->name && STREQ (drv->name, disk)) { if (part) { device = safe_asprintf (g, "%s%s", devices[i], part); @@ -1793,8 +1836,7 @@ resolve_fstab_device_cciss (guestfs_h *g, const char *disk, const char *part, return 0; } *device_ret = device; - } - else + } else *device_ret = safe_strdup (g, devices[i]); break; } @@ -1868,35 +1910,33 @@ resolve_fstab_device (guestfs_h *g, const char *spec, Hash_table *md_map, * we have implemented lvm_canonical_lv_name in the daemon. */ device = guestfs_lvm_canonical_lv_name (g, spec); - } - else if (match3 (g, spec, re_xdev, &type, &disk, &part)) { + } else if (match3 (g, spec, re_xdev, &type, &disk, &part)) { r = resolve_fstab_device_xdev (g, type, disk, part, &device); free (type); free (disk); free (part); if (r == -1) return NULL; - } - else if (match2 (g, spec, re_cciss, &disk, &part)) { + } else if (match2 (g, spec, re_cciss, &disk, &part)) { r = resolve_fstab_device_cciss (g, disk, part, &device); free (disk); free (part); if (r == -1) return NULL; - } - else if (md_map && (disk = match1 (g, spec, re_mdN)) != NULL) { + } else if (md_map && (disk = match1 (g, spec, re_mdN)) != NULL) { mdadm_app entry; entry.mdadm = disk; mdadm_app *app = hash_lookup (md_map, &entry); - if (app) device = safe_strdup (g, app->app); + if (app) + device = safe_strdup (g, app->app); free (disk); - } - else if (match3 (g, spec, re_freebsd_gpt, &type, &disk, &part)) { + } else if (match3 (g, spec, re_freebsd_gpt, &type, &disk, &part)) { /* If the FreeBSD disk contains GPT partitions, the translation to Linux * device names is straight forward. Partitions on a virtio disk are - * prefixed with vtbd. IDE hard drives used to be prefixed with ad and now + * prefixed with vtbd. IDE hard drives used to be prefixed with ad and + * now * are with ada. */ int disk_i = guestfs_int_parse_unsigned_int (g, disk); @@ -1907,8 +1947,8 @@ resolve_fstab_device (guestfs_h *g, const char *spec, Hash_table *md_map, if (disk_i != -1 && disk_i <= 26 && part_i > 0 && part_i <= 128) device = safe_asprintf (g, "/dev/sd%c%d", disk_i + 'a', part_i); - } - else if (match4 (g, spec, re_freebsd_mbr, &type, &disk, &slice, &part)) { + } else if (match4 (g, spec, re_freebsd_mbr, &type, &disk, &slice, + &part)) { /* FreeBSD disks are organized quite differently. See: * http://www.freebsd.org/doc/handbook/disk-organization.html * FreeBSD "partitions" are exposed as quasi-extended partitions @@ -1924,17 +1964,17 @@ resolve_fstab_device (guestfs_h *g, const char *spec, Hash_table *md_map, free (part); if (part_i > 2) - /* Partition 'c' has the size of the enclosing slice. Not mapped under Linux. */ + /* Partition 'c' has the size of the enclosing slice. Not mapped under + * Linux. */ part_i -= 1; - if (disk_i != -1 && disk_i <= 26 && - slice_i > 0 && slice_i <= 1 /* > 4 .. see comment above */ && - part_i >= 0 && part_i < 25) { + if (disk_i != -1 && disk_i <= 26 && slice_i > 0 && + slice_i <= 1 /* > 4 .. see comment above */ && part_i >= 0 && + part_i < 25) { device = safe_asprintf (g, "/dev/sd%c%d", disk_i + 'a', part_i + 5); } - } - else if ((os_type == OS_TYPE_NETBSD) && - match3 (g, spec, re_netbsd_dev, &type, &disk, &part)) { + } else if ((os_type == OS_TYPE_NETBSD) && + match3 (g, spec, re_netbsd_dev, &type, &disk, &part)) { int disk_i = guestfs_int_parse_unsigned_int (g, disk); int part_i = part[0] - 'a'; /* counting from 0 */ free (type); @@ -1942,16 +1982,16 @@ resolve_fstab_device (guestfs_h *g, const char *spec, Hash_table *md_map, free (part); if (part_i > 3) - /* Partition 'c' is the disklabel partition and 'd' the hard disk itself. + /* Partition 'c' is the disklabel partition and 'd' the hard disk + * itself. * Not mapped under Linux. */ part_i -= 2; if (disk_i != -1 && part_i >= 0 && part_i < 24) device = safe_asprintf (g, "/dev/sd%c%d", disk_i + 'a', part_i + 5); - } - else if ((os_type == OS_TYPE_OPENBSD) && - match3 (g, spec, re_openbsd_dev, &type, &disk, &part)) { + } else if ((os_type == OS_TYPE_OPENBSD) && + match3 (g, spec, re_openbsd_dev, &type, &disk, &part)) { int disk_i = guestfs_int_parse_unsigned_int (g, disk); int part_i = part[0] - 'a'; /* counting from 0 */ free (type); @@ -1965,14 +2005,12 @@ resolve_fstab_device (guestfs_h *g, const char *spec, Hash_table *md_map, /* In OpenBSD MAXPARTITIONS is defined to 16 for all architectures */ if (disk_i != -1 && part_i >= 0 && part_i < 15) device = safe_asprintf (g, "/dev/sd%c%d", disk_i + 'a', part_i + 5); - } - else if ((part = match1 (g, spec, re_diskbyid)) != NULL) { + } else if ((part = match1 (g, spec, re_diskbyid)) != NULL) { r = resolve_fstab_device_diskbyid (g, part, &device); free (part); if (r == -1) return NULL; - } - else if (match3 (g, spec, re_hurd_dev, &type, &disk, &part)) { + } else if (match3 (g, spec, re_hurd_dev, &type, &disk, &part)) { /* Hurd disk devices are like /dev/hdNsM, where hdN is the * N-th disk and M is the M-th partition on that disk. * Turn the disk number into a letter-based identifier, so @@ -1995,7 +2033,8 @@ resolve_fstab_device (guestfs_h *g, const char *spec, Hash_table *md_map, return device; } -static char *make_augeas_path_expression (guestfs_h *g, const char **configfiles); +static char *make_augeas_path_expression (guestfs_h *g, + const char **configfiles); /* Call 'f' with Augeas opened and having parsed 'configfiles' (these * files must exist). As a security measure, this bails if any file @@ -2017,7 +2056,8 @@ inspect_with_augeas (guestfs_h *g, struct inspect_fs *fs, /* Security: Refuse to do this if a config file is too large. */ for (i = 0; configfiles[i] != NULL; ++i) { if (guestfs_is_file_opts (g, configfiles[i], - GUESTFS_IS_FILE_OPTS_FOLLOWSYMLINKS, 1, -1) == 0) + GUESTFS_IS_FILE_OPTS_FOLLOWSYMLINKS, 1, + -1) == 0) continue; size = guestfs_filesize (g, configfiles[i]); @@ -2031,7 +2071,8 @@ inspect_with_augeas (guestfs_h *g, struct inspect_fs *fs, } } - if (guestfs_aug_init (g, "/", 16|32 /* AUG_SAVE_NOOP|AUG_NO_LOAD */) == -1) + if (guestfs_aug_init (g, "/", 16 | 32 /* AUG_SAVE_NOOP|AUG_NO_LOAD */) == + -1) return -1; r = -1; @@ -2056,27 +2097,24 @@ inspect_with_augeas (guestfs_h *g, struct inspect_fs *fs, for (match = matches; *match != NULL; ++match) { for (i = 0; configfiles[i] != NULL; ++i) { CLEANUP_FREE char *errorpath = - safe_asprintf (g, "/augeas/files%s/error", configfiles[i]); + safe_asprintf (g, "/augeas/files%s/error", configfiles[i]); if (STREQ (*match, errorpath)) { /* Get the various error details. */ guestfs_push_error_handler (g, NULL, NULL); CLEANUP_FREE char *messagepath = - safe_asprintf (g, "%s/message", errorpath); + safe_asprintf (g, "%s/message", errorpath); CLEANUP_FREE char *message = guestfs_aug_get (g, messagepath); CLEANUP_FREE char *linepath = - safe_asprintf (g, "%s/line", errorpath); + safe_asprintf (g, "%s/line", errorpath); CLEANUP_FREE char *line = guestfs_aug_get (g, linepath); CLEANUP_FREE char *charpath = - safe_asprintf (g, "%s/char", errorpath); + safe_asprintf (g, "%s/char", errorpath); CLEANUP_FREE char *charp = guestfs_aug_get (g, charpath); guestfs_pop_error_handler (g); - error (g, _("%s:%s:%s: augeas parse failure: %s"), - configfiles[i], - line ? : "<none>", - charp ? : "<none>", - message ? : "<none>"); + error (g, _("%s:%s:%s: augeas parse failure: %s"), configfiles[i], + line ?: "<none>", charp ?: "<none>", message ?: "<none>"); goto out; } } @@ -2084,7 +2122,7 @@ inspect_with_augeas (guestfs_h *g, struct inspect_fs *fs, r = f (g, fs); - out: +out: guestfs_aug_close (g); return r; @@ -2100,13 +2138,14 @@ make_augeas_path_expression (guestfs_h *g, const char **configfiles) CLEANUP_FREE char *subexpr = NULL; char *ret; - nr_files = guestfs_int_count_strings ((char **) configfiles); + nr_files = guestfs_int_count_strings ((char **)configfiles); subexprs = safe_malloc (g, sizeof (char *) * (nr_files + 1)); for (i = 0; i < nr_files; ++i) { subexprs[i] = /* v NB trailing '/' after filename */ - safe_asprintf (g, "\"%s/\" !~ regexp('^') + glob(incl) + regexp('/.*')", - configfiles[i]); + safe_asprintf ( + g, "\"%s/\" !~ regexp('^') + glob(incl) + regexp('/.*')", + configfiles[i]); } subexprs[nr_files] = NULL; diff --git a/src/inspect-fs-windows.c b/src/inspect-fs-windows.c index 3ac9107..8b7be18 100644 --- a/src/inspect-fs-windows.c +++ b/src/inspect-fs-windows.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include <config.h> @@ -36,8 +37,8 @@ #if defined __APPLE__ && defined __MACH__ #include <libkern/OSByteOrder.h> -#define le32toh(x) OSSwapLittleToHostInt32(x) -#define le64toh(x) OSSwapLittleToHostInt64(x) +#define le32toh(x) OSSwapLittleToHostInt32 (x) +#define le64toh(x) OSSwapLittleToHostInt64 (x) #endif #include <pcre.h> @@ -51,15 +52,20 @@ COMPILE_REGEXP (re_windows_version, "^(\\d+)\\.(\\d+)", 0) COMPILE_REGEXP (re_boot_ini_os_header, "^\\[operating systems\\]\\s*$", 0) -COMPILE_REGEXP (re_boot_ini_os, - "^(multi|scsi)\\((\\d+)\\)disk\\((\\d+)\\)rdisk\\((\\d+)\\)partition\\((\\d+)\\)([^=]+)=", 0) +COMPILE_REGEXP (re_boot_ini_os, "^(multi|scsi)\\((\\d+)\\)disk\\((\\d+)\\)" + "rdisk\\((\\d+)\\)partition\\((\\d+)\\)([^=" + "]+)=", + 0) static int check_windows_arch (guestfs_h *g, struct inspect_fs *fs); -static int check_windows_software_registry (guestfs_h *g, struct inspect_fs *fs); -static int check_windows_system_registry (guestfs_h *g, struct inspect_fs *fs); +static int check_windows_software_registry (guestfs_h *g, + struct inspect_fs *fs); +static int check_windows_system_registry (guestfs_h *g, + struct inspect_fs *fs); static char *map_registry_disk_blob (guestfs_h *g, const void *blob); static char *map_registry_disk_blob_gpt (guestfs_h *g, const void *blob); -static char *extract_guid_from_registry_blob (guestfs_h *g, const void *blob); +static char *extract_guid_from_registry_blob (guestfs_h *g, + const void *blob); /* XXX Handling of boot.ini in the Perl version was pretty broken. It * essentially didn't do anything for modern Windows guests. @@ -104,12 +110,12 @@ char * guestfs_int_get_windows_systemroot (guestfs_h *g) { /* Check a predefined list of common windows system root locations */ - static const char *systemroots[] = - { "/windows", "/winnt", "/win32", "/win", "/reactos", NULL }; + static const char *systemroots[] = { "/windows", "/winnt", "/win32", + "/win", "/reactos", NULL }; for (size_t i = 0; i < sizeof systemroots / sizeof systemroots[0]; ++i) { char *systemroot = - guestfs_int_case_sensitive_path_silently (g, systemroots[i]); + guestfs_int_case_sensitive_path_silently (g, systemroots[i]); if (!systemroot) continue; @@ -125,10 +131,10 @@ guestfs_int_get_windows_systemroot (guestfs_h *g) /* If the fs contains boot.ini, check it for non-standard * systemroot locations */ CLEANUP_FREE char *boot_ini_path = - guestfs_int_case_sensitive_path_silently (g, "/boot.ini"); + guestfs_int_case_sensitive_path_silently (g, "/boot.ini"); if (boot_ini_path && guestfs_is_file (g, boot_ini_path) > 0) { CLEANUP_FREE_STRING_LIST char **boot_ini = - guestfs_read_lines (g, boot_ini_path); + guestfs_read_lines (g, boot_ini_path); if (!boot_ini) { debug (g, "error reading %s", boot_ini_path); return NULL; @@ -154,51 +160,52 @@ guestfs_int_get_windows_systemroot (guestfs_h *g) /* See http://support.microsoft.com/kb/102873 for a discussion * of what this line means */ - if (match6 (g, line, re_boot_ini_os, &controller_type, - &controller, &disk, &rdisk, &partition, &path)) - { - /* The Windows system root may be on any disk. However, there - * are currently (at least) 2 practical problems preventing us - * from locating it on another disk: - * - * 1. We don't have enough metadata about the disks we were - * given to know if what controller they were on and what - * index they had. - * - * 2. The way inspection of filesystems currently works, we - * can't mark another filesystem, which we may have already - * inspected, to be inspected for a specific Windows system - * root. - * - * Solving 1 properly would require a new API at a minimum. We - * might be able to fudge something practical without this, - * though, e.g. by looking at the <partition>th partition of - * every disk for the specific windows root. - * - * Solving 2 would probably require a significant refactoring - * of the way filesystems are inspected. We should probably do - * this some time. - * - * For the moment, we ignore all partition information and - * assume the system root is on the current partition. In - * practice, this will normally be correct. - */ + if (match6 (g, line, re_boot_ini_os, &controller_type, &controller, + &disk, &rdisk, &partition, &path)) { + /* The Windows system root may be on any disk. However, there + * are currently (at least) 2 practical problems preventing us + * from locating it on another disk: + * + * 1. We don't have enough metadata about the disks we were + * given to know if what controller they were on and what + * index they had. + * + * 2. The way inspection of filesystems currently works, we + * can't mark another filesystem, which we may have already + * inspected, to be inspected for a specific Windows system + * root. + * + * Solving 1 properly would require a new API at a minimum. We + * might be able to fudge something practical without this, + * though, e.g. by looking at the <partition>th partition of + * every disk for the specific windows root. + * + * Solving 2 would probably require a significant refactoring + * of the way filesystems are inspected. We should probably do + * this some time. + * + * For the moment, we ignore all partition information and + * assume the system root is on the current partition. In + * practice, this will normally be correct. + */ - /* Swap backslashes for forward slashes in the system root - * path */ - for (char *j = path; *j != '\0'; j++) { - if (*j == '\\') *j = '/'; - } + /* Swap backslashes for forward slashes in the system root + * path */ + for (char *j = path; *j != '\0'; j++) { + if (*j == '\\') + *j = '/'; + } - char *systemroot = guestfs_int_case_sensitive_path_silently (g, path); - if (systemroot && is_systemroot (g, systemroot)) { - debug (g, "windows %%SYSTEMROOT%% = %s", systemroot); + char *systemroot = + guestfs_int_case_sensitive_path_silently (g, path); + if (systemroot && is_systemroot (g, systemroot)) { + debug (g, "windows %%SYSTEMROOT%% = %s", systemroot); - return systemroot; - } else { - free (systemroot); - } - } + return systemroot; + } else { + free (systemroot); + } + } } } @@ -207,7 +214,7 @@ guestfs_int_get_windows_systemroot (guestfs_h *g) int guestfs_int_check_windows_root (guestfs_h *g, struct inspect_fs *fs, - char *const systemroot) + char *const systemroot) { fs->type = OS_TYPE_WINDOWS; fs->distro = OS_DISTRO_WINDOWS; @@ -233,10 +240,12 @@ static int check_windows_arch (guestfs_h *g, struct inspect_fs *fs) { CLEANUP_FREE char *cmd_exe = - safe_asprintf (g, "%s/system32/cmd.exe", fs->windows_systemroot); + safe_asprintf (g, "%s/system32/cmd.exe", fs->windows_systemroot); - /* Should exist because of previous check above in get_windows_systemroot. */ - CLEANUP_FREE char *cmd_exe_path = guestfs_case_sensitive_path (g, cmd_exe); + /* Should exist because of previous check above in get_windows_systemroot. + */ + CLEANUP_FREE char *cmd_exe_path = + guestfs_case_sensitive_path (g, cmd_exe); if (!cmd_exe_path) return -1; @@ -244,7 +253,7 @@ check_windows_arch (guestfs_h *g, struct inspect_fs *fs) if (!arch) return -1; - fs->arch = arch; /* freed by guestfs_int_free_inspect_info */ + fs->arch = arch; /* freed by guestfs_int_free_inspect_info */ return 0; } @@ -259,10 +268,11 @@ check_windows_software_registry (guestfs_h *g, struct inspect_fs *fs) int ret = -1; int r; - CLEANUP_FREE char *software = - safe_asprintf (g, "%s/system32/config/software", fs->windows_systemroot); + CLEANUP_FREE char *software = safe_asprintf ( + g, "%s/system32/config/software", fs->windows_systemroot); - CLEANUP_FREE char *software_path = guestfs_case_sensitive_path (g, software); + CLEANUP_FREE char *software_path = + guestfs_case_sensitive_path (g, software); if (!software_path) return -1; @@ -276,14 +286,14 @@ check_windows_software_registry (guestfs_h *g, struct inspect_fs *fs) return 0; int64_t node; - const char *hivepath[] = - { "Microsoft", "Windows NT", "CurrentVersion" }; + const char *hivepath[] = { "Microsoft", "Windows NT", "CurrentVersion" }; size_t i; - CLEANUP_FREE_HIVEX_VALUE_LIST struct guestfs_hivex_value_list *values = NULL; + CLEANUP_FREE_HIVEX_VALUE_LIST struct guestfs_hivex_value_list *values = + NULL; bool ignore_currentversion = false; - if (guestfs_hivex_open (g, software_path, - GUESTFS_HIVEX_OPEN_VERBOSE, g->verbose, -1) == -1) + if (guestfs_hivex_open (g, software_path, GUESTFS_HIVEX_OPEN_VERBOSE, + g->verbose, -1) == -1) return -1; node = guestfs_hivex_root (g); @@ -294,7 +304,8 @@ check_windows_software_registry (guestfs_h *g, struct inspect_fs *fs) goto out; if (node == 0) { - perrorf (g, "hivex: cannot locate HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion"); + perrorf (g, "hivex: cannot locate HKLM\\SOFTWARE\\Microsoft\\Windows " + "NT\\CurrentVersion"); goto out; } @@ -310,11 +321,11 @@ check_windows_software_registry (guestfs_h *g, struct inspect_fs *fs) fs->product_name = guestfs_hivex_value_utf8 (g, value); if (!fs->product_name) goto out; - } - else if (STRCASEEQ (key, "CurrentMajorVersionNumber")) { + } else if (STRCASEEQ (key, "CurrentMajorVersionNumber")) { size_t vsize; int64_t vtype = guestfs_hivex_value_type (g, value); - CLEANUP_FREE char *vbuf = guestfs_hivex_value_value (g, value, &vsize); + CLEANUP_FREE char *vbuf = + guestfs_hivex_value_value (g, value, &vsize); if (vbuf == NULL) goto out; @@ -328,11 +339,11 @@ check_windows_software_registry (guestfs_h *g, struct inspect_fs *fs) /* Ignore CurrentVersion if we see it after this key. */ ignore_currentversion = true; - } - else if (STRCASEEQ (key, "CurrentMinorVersionNumber")) { + } else if (STRCASEEQ (key, "CurrentMinorVersionNumber")) { size_t vsize; int64_t vtype = guestfs_hivex_value_type (g, value); - CLEANUP_FREE char *vbuf = guestfs_hivex_value_value (g, value, &vsize); + CLEANUP_FREE char *vbuf = + guestfs_hivex_value_value (g, value, &vsize); if (vbuf == NULL) goto out; @@ -346,8 +357,8 @@ check_windows_software_registry (guestfs_h *g, struct inspect_fs *fs) /* Ignore CurrentVersion if we see it after this key. */ ignore_currentversion = true; - } - else if (!ignore_currentversion && STRCASEEQ (key, "CurrentVersion")) { + } else if (!ignore_currentversion && + STRCASEEQ (key, "CurrentVersion")) { CLEANUP_FREE char *version = guestfs_hivex_value_utf8 (g, value); if (!version) goto out; @@ -364,8 +375,7 @@ check_windows_software_registry (guestfs_h *g, struct inspect_fs *fs) if (fs->minor_version == -1) goto out; } - } - else if (STRCASEEQ (key, "InstallationType")) { + } else if (STRCASEEQ (key, "InstallationType")) { fs->product_variant = guestfs_hivex_value_utf8 (g, value); if (!fs->product_variant) goto out; @@ -374,7 +384,7 @@ check_windows_software_registry (guestfs_h *g, struct inspect_fs *fs) ret = 0; - out: +out: guestfs_hivex_close (g); return ret; @@ -386,9 +396,8 @@ check_windows_system_registry (guestfs_h *g, struct inspect_fs *fs) int r; static const char gpt_prefix[] = "DMIO:ID:"; - CLEANUP_FREE char *system = - safe_asprintf (g, "%s/system32/config/system", - fs->windows_systemroot); + CLEANUP_FREE char *system = safe_asprintf (g, "%s/system32/config/system", + fs->windows_systemroot); CLEANUP_FREE char *system_path = guestfs_case_sensitive_path (g, system); if (!system_path) @@ -405,17 +414,19 @@ check_windows_system_registry (guestfs_h *g, struct inspect_fs *fs) int ret = -1; int64_t root, node, value; - CLEANUP_FREE_HIVEX_VALUE_LIST struct guestfs_hivex_value_list *values = NULL; - CLEANUP_FREE_HIVEX_VALUE_LIST struct guestfs_hivex_value_list *values2 = NULL; + CLEANUP_FREE_HIVEX_VALUE_LIST struct guestfs_hivex_value_list *values = + NULL; + CLEANUP_FREE_HIVEX_VALUE_LIST struct guestfs_hivex_value_list *values2 = + NULL; int32_t dword; size_t i, count; CLEANUP_FREE void *buf = NULL; size_t buflen; - const char *hivepath[] = - { NULL /* current control set */, "Services", "Tcpip", "Parameters" }; + const char *hivepath[] = { NULL /* current control set */, "Services", + "Tcpip", "Parameters" }; - if (guestfs_hivex_open (g, system_path, - GUESTFS_HIVEX_OPEN_VERBOSE, g->verbose, -1) == -1) + if (guestfs_hivex_open (g, system_path, GUESTFS_HIVEX_OPEN_VERBOSE, + g->verbose, -1) == -1) goto out; root = guestfs_hivex_root (g); @@ -448,7 +459,8 @@ check_windows_system_registry (guestfs_h *g, struct inspect_fs *fs) goto out; } dword = le32toh (*(int32_t *)buf); - fs->windows_current_control_set = safe_asprintf (g, "ControlSet%03d", dword); + fs->windows_current_control_set = + safe_asprintf (g, "ControlSet%03d", dword); /* Get the drive mappings. * This page explains the contents of HKLM\System\MountedDevices: @@ -470,23 +482,23 @@ check_windows_system_registry (guestfs_h *g, struct inspect_fs *fs) */ for (i = count = 0; i < values->len; ++i) { CLEANUP_FREE char *key = - guestfs_hivex_value_key (g, values->val[i].hivex_value_h); + guestfs_hivex_value_key (g, values->val[i].hivex_value_h); if (key == NULL) goto out; - if (STRCASEEQLEN (key, "\\DosDevices\\", 12) && - c_isalpha (key[12]) && key[13] == ':') + if (STRCASEEQLEN (key, "\\DosDevices\\", 12) && c_isalpha (key[12]) && + key[13] == ':') count++; } - fs->drive_mappings = safe_calloc (g, 2*count + 1, sizeof (char *)); + fs->drive_mappings = safe_calloc (g, 2 * count + 1, sizeof (char *)); for (i = count = 0; i < values->len; ++i) { int64_t v = values->val[i].hivex_value_h; CLEANUP_FREE char *key = guestfs_hivex_value_key (g, v); if (key == NULL) goto out; - if (STRCASEEQLEN (key, "\\DosDevices\\", 12) && - c_isalpha (key[12]) && key[13] == ':') { + if (STRCASEEQLEN (key, "\\DosDevices\\", 12) && c_isalpha (key[12]) && + key[13] == ':') { /* Get the binary value. Is it a fixed disk? */ CLEANUP_FREE char *blob = NULL; char *device; @@ -512,12 +524,11 @@ check_windows_system_registry (guestfs_h *g, struct inspect_fs *fs) } } - skip_drive_letter_mappings:; +skip_drive_letter_mappings:; /* Get the hostname. */ hivepath[0] = fs->windows_current_control_set; for (node = root, i = 0; - node > 0 && i < sizeof hivepath / sizeof hivepath[0]; - ++i) { + node > 0 && i < sizeof hivepath / sizeof hivepath[0]; ++i) { node = guestfs_hivex_node_get_child (g, node, hivepath[i]); } @@ -525,7 +536,8 @@ check_windows_system_registry (guestfs_h *g, struct inspect_fs *fs) goto out; if (node == 0) { - perrorf (g, "hivex: cannot locate HKLM\\SYSTEM\\%s\\Services\\Tcpip\\Parameters", + perrorf (g, "hivex: cannot locate " + "HKLM\\SYSTEM\\%s\\Services\\Tcpip\\Parameters", fs->windows_current_control_set); goto out; } @@ -550,7 +562,7 @@ check_windows_system_registry (guestfs_h *g, struct inspect_fs *fs) ret = 0; - out: +out: guestfs_hivex_close (g); return ret; @@ -566,7 +578,8 @@ static char * map_registry_disk_blob (guestfs_h *g, const void *blob) { CLEANUP_FREE_STRING_LIST char **devices = NULL; - CLEANUP_FREE_PARTITION_LIST struct guestfs_partition_list *partitions = NULL; + CLEANUP_FREE_PARTITION_LIST struct guestfs_partition_list *partitions = + NULL; size_t i, j, len; uint64_t part_offset; @@ -580,7 +593,7 @@ map_registry_disk_blob (guestfs_h *g, const void *blob) for (i = 0; devices[i] != NULL; ++i) { /* Read the disk ID. */ CLEANUP_FREE char *diskid = - guestfs_pread_device (g, devices[i], 4, 0x01b8, &len); + guestfs_pread_device (g, devices[i], 4, 0x01b8, &len); if (diskid == NULL) continue; if (len < 4) @@ -590,12 +603,12 @@ map_registry_disk_blob (guestfs_h *g, const void *blob) } return NULL; - found_disk: +found_disk: /* Next 8 bytes are the offset of the partition in bytes(!) given as * a 64 bit little endian number. Luckily it's easy to get the * partition byte offset from guestfs_part_list. */ - memcpy (&part_offset, (char *) blob + 4, sizeof (part_offset)); + memcpy (&part_offset, (char *)blob + 4, sizeof (part_offset)); part_offset = le64toh (part_offset); partitions = guestfs_part_list (g, devices[i]); @@ -608,7 +621,7 @@ map_registry_disk_blob (guestfs_h *g, const void *blob) } return NULL; - found_partition: +found_partition: /* Construct the full device name. */ return safe_asprintf (g, "%s%d", devices[i], partitions->val[j].part_num); } @@ -676,7 +689,7 @@ extract_guid_from_registry_blob (guestfs_h *g, const void *blob) uint64_t data4; /* get the GUID bytes from blob (skip 8 byte "DMIO:ID:" prefix) */ - memcpy (&guid_bytes, (char *) blob + 8, sizeof (guid_bytes)); + memcpy (&guid_bytes, (char *)blob + 8, sizeof (guid_bytes)); /* copy relevant sections from blob to respective ints */ memcpy (&data1, guid_bytes, sizeof (data1)); @@ -690,9 +703,10 @@ extract_guid_from_registry_blob (guestfs_h *g, const void *blob) data3 = le16toh (data3); data4 = be64toh (data4); - return safe_asprintf (g, - "%08" PRIX32 "-%04" PRIX16 "-%04" PRIX16 "-%04" PRIX64 "-%012" PRIX64, - data1, data2, data3, data4 >> 48, data4 & 0xffffffffffff); + return safe_asprintf (g, "%08" PRIX32 "-%04" PRIX16 "-%04" PRIX16 + "-%04" PRIX64 "-%012" PRIX64, + data1, data2, data3, data4 >> 48, + data4 & 0xffffffffffff); } /* NB: This function DOES NOT test for the existence of the file. It @@ -741,7 +755,7 @@ static char * utf16_to_utf8 (/* const */ char *input, size_t len) { iconv_t ic = iconv_open ("UTF-8", "UTF-16LE"); - if (ic == (iconv_t) -1) + if (ic == (iconv_t)-1) return NULL; /* iconv(3) has an insane interface ... */ @@ -749,7 +763,7 @@ utf16_to_utf8 (/* const */ char *input, size_t len) /* Mostly UTF-8 will be smaller, so this is a good initial guess. */ size_t outalloc = len; - again:; +again:; size_t inlen = len; size_t outlen = outalloc; char *out = malloc (outlen + 1); @@ -762,8 +776,8 @@ utf16_to_utf8 (/* const */ char *input, size_t len) char *inp = input; char *outp = out; - size_t r = iconv (ic, (ICONV_CONST char **) &inp, &inlen, &outp, &outlen); - if (r == (size_t) -1) { + size_t r = iconv (ic, (ICONV_CONST char **)&inp, &inlen, &outp, &outlen); + if (r == (size_t)-1) { if (errno == E2BIG) { int err = errno; size_t prev = outalloc; @@ -776,8 +790,7 @@ utf16_to_utf8 (/* const */ char *input, size_t len) return NULL; } goto again; - } - else { + } else { /* Else some conversion failure, eg. EILSEQ, EINVAL. */ int err = errno; iconv_close (ic); diff --git a/src/inspect-fs.c b/src/inspect-fs.c index 0714ae1..7708dbc 100644 --- a/src/inspect-fs.c +++ b/src/inspect-fs.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include <config.h> @@ -42,8 +43,10 @@ static int check_filesystem (guestfs_h *g, const char *mountable, const struct guestfs_internal_mountable *m, int whole_device); static void extend_fses (guestfs_h *g); -static int get_partition_context (guestfs_h *g, const char *partition, int *partnum_ret, int *nr_partitions_ret); -static int is_symlink_to (guestfs_h *g, const char *file, const char *wanted_target); +static int get_partition_context (guestfs_h *g, const char *partition, + int *partnum_ret, int *nr_partitions_ret); +static int is_symlink_to (guestfs_h *g, const char *file, + const char *wanted_target); /* Find out if 'device' contains a filesystem. If it does, add * another entry in g->fses. @@ -54,7 +57,8 @@ guestfs_int_check_for_filesystem_on (guestfs_h *g, const char *mountable) CLEANUP_FREE char *vfs_type = NULL; int is_swap, r; struct inspect_fs *fs; - CLEANUP_FREE_INTERNAL_MOUNTABLE struct guestfs_internal_mountable *m = NULL; + CLEANUP_FREE_INTERNAL_MOUNTABLE struct guestfs_internal_mountable *m = + NULL; int whole_device = 0; /* Get vfs-type in order to check if it's a Linux(?) swap device. @@ -66,12 +70,12 @@ guestfs_int_check_for_filesystem_on (guestfs_h *g, const char *mountable) guestfs_pop_error_handler (g); is_swap = vfs_type && STREQ (vfs_type, "swap"); - debug (g, "check_for_filesystem_on: %s (%s)", - mountable, vfs_type ? vfs_type : "failed to get vfs type"); + debug (g, "check_for_filesystem_on: %s (%s)", mountable, + vfs_type ? vfs_type : "failed to get vfs type"); if (is_swap) { extend_fses (g); - fs = &g->fses[g->nr_fses-1]; + fs = &g->fses[g->nr_fses - 1]; fs->mountable = safe_strdup (g, mountable); return 0; } @@ -90,14 +94,14 @@ guestfs_int_check_for_filesystem_on (guestfs_h *g, const char *mountable) if (whole_device) { extend_fses (g); - fs = &g->fses[g->nr_fses-1]; + fs = &g->fses[g->nr_fses - 1]; r = guestfs_int_check_installer_iso (g, fs, m->im_device); - if (r == -1) { /* Fatal error. */ + if (r == -1) { /* Fatal error. */ g->nr_fses--; return -1; } - if (r > 0) /* Found something. */ + if (r > 0) /* Found something. */ return 0; /* Didn't find anything. Fall through ... */ @@ -142,16 +146,17 @@ check_filesystem (guestfs_h *g, const char *mountable, if (!whole_device && m->im_type == MOUNTABLE_DEVICE && guestfs_int_is_partition (g, m->im_device)) { - if (get_partition_context (g, m->im_device, - &partnum, &nr_partitions) == -1) + if (get_partition_context (g, m->im_device, &partnum, &nr_partitions) == + -1) return -1; } - struct inspect_fs *fs = &g->fses[g->nr_fses-1]; + struct inspect_fs *fs = &g->fses[g->nr_fses - 1]; fs->mountable = safe_strdup (g, mountable); - /* Optimize some of the tests by avoiding multiple tests of the same thing. */ + /* Optimize some of the tests by avoiding multiple tests of the same + * thing. */ int is_dir_etc = guestfs_is_dir (g, "/etc") > 0; int is_dir_bin = guestfs_is_dir (g, "/bin") > 0; int is_dir_share = guestfs_is_dir (g, "/share") > 0; @@ -162,8 +167,7 @@ check_filesystem (guestfs_h *g, const char *mountable, guestfs_is_file (g, "/grub2/grub.cfg") > 0) ; /* FreeBSD root? */ - else if (is_dir_etc && - is_dir_bin && + else if (is_dir_etc && is_dir_bin && guestfs_is_file (g, "/etc/freebsd-update.conf") > 0 && guestfs_is_file (g, "/etc/fstab") > 0) { fs->is_root = 1; @@ -172,9 +176,7 @@ check_filesystem (guestfs_h *g, const char *mountable, return -1; } /* NetBSD root? */ - else if (is_dir_etc && - is_dir_bin && - guestfs_is_file (g, "/netbsd") > 0 && + else if (is_dir_etc && is_dir_bin && guestfs_is_file (g, "/netbsd") > 0 && guestfs_is_file (g, "/etc/fstab") > 0 && guestfs_is_file (g, "/etc/release") > 0) { fs->is_root = 1; @@ -183,9 +185,7 @@ check_filesystem (guestfs_h *g, const char *mountable, return -1; } /* OpenBSD root? */ - else if (is_dir_etc && - is_dir_bin && - guestfs_is_file (g, "/bsd") > 0 && + else if (is_dir_etc && is_dir_bin && guestfs_is_file (g, "/bsd") > 0 && guestfs_is_file (g, "/etc/fstab") > 0 && guestfs_is_file (g, "/etc/motd") > 0) { fs->is_root = 1; @@ -203,8 +203,7 @@ check_filesystem (guestfs_h *g, const char *mountable, return -1; } /* Minix root? */ - else if (is_dir_etc && - is_dir_bin && + else if (is_dir_etc && is_dir_bin && guestfs_is_file (g, "/service/vm") > 0 && guestfs_is_file (g, "/etc/fstab") > 0 && guestfs_is_file (g, "/etc/version") > 0) { @@ -215,8 +214,7 @@ check_filesystem (guestfs_h *g, const char *mountable, } /* Linux root? */ else if (is_dir_etc && - (is_dir_bin || - is_symlink_to (g, "/bin", "usr/bin") > 0) && + (is_dir_bin || is_symlink_to (g, "/bin", "usr/bin") > 0) && guestfs_is_file (g, "/etc/fstab") > 0) { fs->is_root = 1; fs->format = OS_FORMAT_INSTALLED; @@ -224,8 +222,7 @@ check_filesystem (guestfs_h *g, const char *mountable, return -1; } /* CoreOS root? */ - else if (is_dir_etc && - guestfs_is_dir (g, "/root") > 0 && + else if (is_dir_etc && guestfs_is_dir (g, "/root") > 0 && guestfs_is_dir (g, "/home") > 0 && guestfs_is_dir (g, "/usr") > 0 && guestfs_is_file (g, "/etc/coreos/update.conf") > 0) { @@ -235,23 +232,17 @@ check_filesystem (guestfs_h *g, const char *mountable, return -1; } /* Linux /usr/local? */ - else if (is_dir_etc && - is_dir_bin && - is_dir_share && + else if (is_dir_etc && is_dir_bin && is_dir_share && guestfs_is_dir (g, "/local") == 0 && guestfs_is_file (g, "/etc/fstab") == 0) ; /* Linux /usr? */ - else if (is_dir_etc && - is_dir_bin && - is_dir_share && + else if (is_dir_etc && is_dir_bin && is_dir_share && guestfs_is_dir (g, "/local") > 0 && guestfs_is_file (g, "/etc/fstab") == 0) ; /* CoreOS /usr? */ - else if (is_dir_bin && - is_dir_share && - guestfs_is_dir (g, "/local") > 0 && + else if (is_dir_bin && is_dir_share && guestfs_is_dir (g, "/local") > 0 && guestfs_is_dir (g, "/share/coreos") > 0) { if (guestfs_int_check_coreos_usr (g, fs) == -1) return -1; @@ -262,15 +253,16 @@ check_filesystem (guestfs_h *g, const char *mountable, guestfs_is_dir (g, "/spool") > 0) ; /* Windows root? */ - else if ((windows_systemroot = guestfs_int_get_windows_systemroot (g)) != NULL) - { - fs->is_root = 1; - fs->format = OS_FORMAT_INSTALLED; - if (guestfs_int_check_windows_root (g, fs, windows_systemroot) == -1) - return -1; - } + else if ((windows_systemroot = guestfs_int_get_windows_systemroot (g)) != + NULL) { + fs->is_root = 1; + fs->format = OS_FORMAT_INSTALLED; + if (guestfs_int_check_windows_root (g, fs, windows_systemroot) == -1) + return -1; + } /* Windows volume with installed applications (but not root)? */ - else if (guestfs_int_is_dir_nocase (g, "/System Volume Information") > 0 && + else if (guestfs_int_is_dir_nocase (g, "/System Volume Information") > + 0 && guestfs_int_is_dir_nocase (g, "/Program Files") > 0) ; /* Windows volume (but not root)? */ @@ -333,7 +325,7 @@ extend_fses (guestfs_h *g) g->fses = p; g->nr_fses = n; - memset (&g->fses[n-1], 0, sizeof (struct inspect_fs)); + memset (&g->fses[n - 1], 0, sizeof (struct inspect_fs)); } /* Given a partition (eg. /dev/sda2) then return the partition number @@ -345,7 +337,8 @@ get_partition_context (guestfs_h *g, const char *partition, { int partnum, nr_partitions; CLEANUP_FREE char *device = NULL; - CLEANUP_FREE_PARTITION_LIST struct guestfs_partition_list *partitions = NULL; + CLEANUP_FREE_PARTITION_LIST struct guestfs_partition_list *partitions = + NULL; partnum = guestfs_part_to_partnum (g, partition); if (partnum == -1) @@ -423,7 +416,8 @@ guestfs_int_parse_unsigned_int (guestfs_h *g, const char *str) /* Like parse_unsigned_int, but ignore trailing stuff. */ int -guestfs_int_parse_unsigned_int_ignore_trailing (guestfs_h *g, const char *str) +guestfs_int_parse_unsigned_int_ignore_trailing (guestfs_h *g, + const char *str) { long ret; int r = xstrtol (str, NULL, 10, &ret, NULL); @@ -529,7 +523,8 @@ guestfs_int_check_package_management (guestfs_h *g, struct inspect_fs *fs) /* If Fedora >= 22 and dnf is installed, say "dnf". */ if (fs->major_version >= 22 && guestfs_is_file_opts (g, "/usr/bin/dnf", - GUESTFS_IS_FILE_OPTS_FOLLOWSYMLINKS, 1, -1) > 0) + GUESTFS_IS_FILE_OPTS_FOLLOWSYMLINKS, 1, + -1) > 0) fs->package_management = OS_PACKAGE_MANAGEMENT_DNF; else fs->package_management = OS_PACKAGE_MANAGEMENT_YUM; @@ -632,7 +627,7 @@ guestfs_int_first_line_of_file (guestfs_h *g, const char *filename) } /* lines[1] should be NULL because of '1' argument above ... */ - ret = lines[0]; /* caller frees */ + ret = lines[0]; /* caller frees */ free (lines); @@ -648,7 +643,7 @@ guestfs_int_first_line_of_file (guestfs_h *g, const char *filename) */ int guestfs_int_first_egrep_of_file (guestfs_h *g, const char *filename, - const char *eregex, int iflag, char **ret) + const char *eregex, int iflag, char **ret) { char **lines; int64_t size; @@ -682,7 +677,7 @@ guestfs_int_first_egrep_of_file (guestfs_h *g, const char *filename, return 0; } - *ret = lines[0]; /* caller frees */ + *ret = lines[0]; /* caller frees */ /* free up any other matches and the array itself */ for (i = 1; lines[i] != NULL; ++i) @@ -692,16 +687,18 @@ guestfs_int_first_egrep_of_file (guestfs_h *g, const char *filename, return 1; } -/* Merge the missing OS inspection information found on the src inspect_fs into +/* Merge the missing OS inspection information found on the src inspect_fs + * into * the ones of the dst inspect_fs. This function is useful if the inspection * information for an OS are gathered by inspecting multiple filesystems. */ void -guestfs_int_merge_fs_inspections (guestfs_h *g, struct inspect_fs *dst, struct inspect_fs *src) +guestfs_int_merge_fs_inspections (guestfs_h *g, struct inspect_fs *dst, + struct inspect_fs *src) { size_t n, i, old; struct inspect_fstab_entry *fstab = NULL; - char ** mappings = NULL; + char **mappings = NULL; if (dst->type == 0) dst->type = src->type; @@ -721,7 +718,7 @@ guestfs_int_merge_fs_inspections (guestfs_h *g, struct inspect_fs *dst, struct i } if (dst->product_variant == NULL) { - dst->product_variant= src->product_variant; + dst->product_variant = src->product_variant; src->product_variant = NULL; } @@ -764,7 +761,8 @@ guestfs_int_merge_fs_inspections (guestfs_h *g, struct inspect_fs *dst, struct i ; /* Merge the src mappings to dst */ - mappings = safe_realloc (g, dst->drive_mappings,(n + 1) * sizeof (char *)); + mappings = + safe_realloc (g, dst->drive_mappings, (n + 1) * sizeof (char *)); for (i = old; i < n; i++) mappings[i] = src->drive_mappings[i - old]; @@ -772,20 +770,21 @@ guestfs_int_merge_fs_inspections (guestfs_h *g, struct inspect_fs *dst, struct i mappings[n] = NULL; dst->drive_mappings = mappings; - free(src->drive_mappings); + free (src->drive_mappings); src->drive_mappings = NULL; } } if (src->nr_fstab > 0) { n = dst->nr_fstab + src->nr_fstab; - fstab = safe_realloc (g, dst->fstab, n * sizeof (struct inspect_fstab_entry)); + fstab = safe_realloc (g, dst->fstab, + n * sizeof (struct inspect_fstab_entry)); for (i = 0; i < src->nr_fstab; i++) { fstab[dst->nr_fstab + i].mountable = src->fstab[i].mountable; fstab[dst->nr_fstab + i].mountpoint = src->fstab[i].mountpoint; } - free(src->fstab); + free (src->fstab); src->fstab = NULL; src->nr_fstab = 0; diff --git a/src/inspect-icon.c b/src/inspect-icon.c index 5c5169e..f70cd61 100644 --- a/src/inspect-icon.c +++ b/src/inspect-icon.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include <config.h> @@ -29,11 +30,11 @@ #include "guestfs-internal-actions.h" /* External tools are required for some icon types. Check we have them. */ -#if defined(PBMTEXT) && defined (PNMTOPNG) +#if defined(PBMTEXT) && defined(PNMTOPNG) #define CAN_DO_CIRROS 1 #endif -#if defined(WRESTOOL) && defined(BMPTOPNM) && defined(PNMTOPNG) && \ - defined(PAMCUT) +#if defined(WRESTOOL) && defined(BMPTOPNM) && defined(PNMTOPNG) && \ + defined(PAMCUT) #define CAN_DO_WINDOWS 1 #endif @@ -51,22 +52,31 @@ * An icon was found. 'ret' points to the icon buffer, and *size_r * is the size. */ -static char *icon_favicon (guestfs_h *g, struct inspect_fs *fs, size_t *size_r); -static char *icon_fedora (guestfs_h *g, struct inspect_fs *fs, size_t *size_r); -static char *icon_rhel (guestfs_h *g, struct inspect_fs *fs, size_t *size_r); -static char *icon_debian (guestfs_h *g, struct inspect_fs *fs, size_t *size_r); -static char *icon_ubuntu (guestfs_h *g, struct inspect_fs *fs, size_t *size_r); -static char *icon_mageia (guestfs_h *g, struct inspect_fs *fs, size_t *size_r); -static char *icon_opensuse (guestfs_h *g, struct inspect_fs *fs, size_t *size_r); +static char *icon_favicon (guestfs_h *g, struct inspect_fs *fs, + size_t *size_r); +static char *icon_fedora (guestfs_h *g, struct inspect_fs *fs, + size_t *size_r); +static char *icon_rhel (guestfs_h *g, struct inspect_fs *fs, + size_t *size_r); +static char *icon_debian (guestfs_h *g, struct inspect_fs *fs, + size_t *size_r); +static char *icon_ubuntu (guestfs_h *g, struct inspect_fs *fs, + size_t *size_r); +static char *icon_mageia (guestfs_h *g, struct inspect_fs *fs, + size_t *size_r); +static char *icon_opensuse (guestfs_h *g, struct inspect_fs *fs, + size_t *size_r); #if CAN_DO_CIRROS -static char *icon_cirros (guestfs_h *g, struct inspect_fs *fs, size_t *size_r); +static char *icon_cirros (guestfs_h *g, struct inspect_fs *fs, + size_t *size_r); #endif #if CAN_DO_WINDOWS -static char *icon_windows (guestfs_h *g, struct inspect_fs *fs, size_t *size_r); +static char *icon_windows (guestfs_h *g, struct inspect_fs *fs, + size_t *size_r); #endif /* Dummy static object. */ -static char *NOT_FOUND = (char *) "not_found"; +static char *NOT_FOUND = (char *)"not_found"; /* For the unexpected legal consequences of this function, see: * http://lists.fedoraproject.org/pipermail/legal/2011-April/001615.html @@ -77,8 +87,9 @@ static char *NOT_FOUND = (char *) "not_found"; * Check optargs for the optional argument. */ char * -guestfs_impl_inspect_get_icon (guestfs_h *g, const char *root, size_t *size_r, - const struct guestfs_inspect_get_icon_argv *optargs) +guestfs_impl_inspect_get_icon ( + guestfs_h *g, const char *root, size_t *size_r, + const struct guestfs_inspect_get_icon_argv *optargs) { struct inspect_fs *fs; char *r = NOT_FOUND; @@ -90,13 +101,14 @@ guestfs_impl_inspect_get_icon (guestfs_h *g, const char *root, size_t *size_r, return NULL; /* Get optargs, or defaults. */ - favicon = - optargs->bitmask & GUESTFS_INSPECT_GET_ICON_FAVICON_BITMASK ? - optargs->favicon : 1; + favicon = optargs->bitmask & GUESTFS_INSPECT_GET_ICON_FAVICON_BITMASK + ? optargs->favicon + : 1; highquality = - optargs->bitmask & GUESTFS_INSPECT_GET_ICON_HIGHQUALITY_BITMASK ? - optargs->highquality : 0; + optargs->bitmask & GUESTFS_INSPECT_GET_ICON_HIGHQUALITY_BITMASK + ? optargs->highquality + : 0; /* Favicons are never high quality, so ... */ if (highquality) @@ -158,7 +170,7 @@ guestfs_impl_inspect_get_icon (guestfs_h *g, const char *root, size_t *size_r, #endif break; - /* These are just to keep gcc warnings happy. */ + /* These are just to keep gcc warnings happy. */ case OS_DISTRO_ARCHLINUX: case OS_DISTRO_BUILDROOT: case OS_DISTRO_COREOS: @@ -178,8 +190,7 @@ guestfs_impl_inspect_get_icon (guestfs_h *g, const char *root, size_t *size_r, case OS_DISTRO_ALTLINUX: case OS_DISTRO_FRUGALWARE: case OS_DISTRO_PLD_LINUX: - case OS_DISTRO_UNKNOWN: - ; /* nothing */ + case OS_DISTRO_UNKNOWN:; /* nothing */ } break; @@ -198,8 +209,7 @@ guestfs_impl_inspect_get_icon (guestfs_h *g, const char *root, size_t *size_r, case OS_TYPE_DOS: case OS_TYPE_OPENBSD: case OS_TYPE_MINIX: - case OS_TYPE_UNKNOWN: - ; /* nothing */ + case OS_TYPE_UNKNOWN:; /* nothing */ } if (r == NOT_FOUND) { @@ -296,7 +306,8 @@ icon_favicon (guestfs_h *g, struct inspect_fs *fs, size_t *size_r) /* Return FEDORA_ICON. I checked that this exists on at least Fedora 6 * through 16. */ -#define FEDORA_ICON "/usr/share/icons/hicolor/96x96/apps/fedora-logo-icon.png" +#define FEDORA_ICON \ + "/usr/share/icons/hicolor/96x96/apps/fedora-logo-icon.png" static char * icon_fedora (guestfs_h *g, struct inspect_fs *fs, size_t *size_r) @@ -402,9 +413,9 @@ icon_cirros (guestfs_h *g, struct inspect_fs *fs, size_t *size_r) pngfile = safe_asprintf (g, "%s/cirros.png", g->tmpdir); guestfs_int_cmd_add_string_unquoted (cmd, PBMTEXT " < "); - guestfs_int_cmd_add_string_quoted (cmd, local); + guestfs_int_cmd_add_string_quoted (cmd, local); guestfs_int_cmd_add_string_unquoted (cmd, " | " PNMTOPNG " > "); - guestfs_int_cmd_add_string_quoted (cmd, pngfile); + guestfs_int_cmd_add_string_quoted (cmd, pngfile); r = guestfs_int_cmd_run (cmd); if (r == -1) return NOT_FOUND; @@ -462,19 +473,19 @@ icon_windows_xp (guestfs_h *g, struct inspect_fs *fs, size_t *size_r) if (r == 0) return NOT_FOUND; - filename_downloaded = guestfs_int_download_to_tmp (g, fs, filename_case, - "explorer.exe", - MAX_WINDOWS_EXPLORER_SIZE); + filename_downloaded = guestfs_int_download_to_tmp ( + g, fs, filename_case, "explorer.exe", MAX_WINDOWS_EXPLORER_SIZE); if (filename_downloaded == NULL) return NOT_FOUND; pngfile = safe_asprintf (g, "%s/windows-xp-icon.png", g->tmpdir); - guestfs_int_cmd_add_string_unquoted (cmd, WRESTOOL " -x --type=2 --name=143 "); - guestfs_int_cmd_add_string_quoted (cmd, filename_downloaded); guestfs_int_cmd_add_string_unquoted (cmd, - " | " BMPTOPNM " | " PNMTOPNG " > "); - guestfs_int_cmd_add_string_quoted (cmd, pngfile); + WRESTOOL " -x --type=2 --name=143 "); + guestfs_int_cmd_add_string_quoted (cmd, filename_downloaded); + guestfs_int_cmd_add_string_unquoted (cmd, + " | " BMPTOPNM " | " PNMTOPNG " > "); + guestfs_int_cmd_add_string_quoted (cmd, pngfile); r = guestfs_int_cmd_run (cmd); if (r == -1) return NULL; @@ -512,21 +523,19 @@ icon_windows_7 (guestfs_h *g, struct inspect_fs *fs, size_t *size_r) if (r == 0) return NOT_FOUND; - filename_downloaded = guestfs_int_download_to_tmp (g, fs, filename_case, - "explorer.exe", - MAX_WINDOWS_EXPLORER_SIZE); + filename_downloaded = guestfs_int_download_to_tmp ( + g, fs, filename_case, "explorer.exe", MAX_WINDOWS_EXPLORER_SIZE); if (filename_downloaded == NULL) return NOT_FOUND; pngfile = safe_asprintf (g, "%s/windows-7-icon.png", g->tmpdir); - guestfs_int_cmd_add_string_unquoted (cmd, WRESTOOL " -x --type=2 --name=6801 "); - guestfs_int_cmd_add_string_quoted (cmd, filename_downloaded); - guestfs_int_cmd_add_string_unquoted (cmd, - " | " BMPTOPNM " | " - PAMCUT " -bottom 54 | " - PNMTOPNG " > "); - guestfs_int_cmd_add_string_quoted (cmd, pngfile); + guestfs_int_cmd_add_string_unquoted (cmd, WRESTOOL + " -x --type=2 --name=6801 "); + guestfs_int_cmd_add_string_quoted (cmd, filename_downloaded); + guestfs_int_cmd_add_string_unquoted ( + cmd, " | " BMPTOPNM " | " PAMCUT " -bottom 54 | " PNMTOPNG " > "); + guestfs_int_cmd_add_string_quoted (cmd, pngfile); r = guestfs_int_cmd_run (cmd); if (r == -1) return NULL; @@ -552,8 +561,8 @@ icon_windows_8 (guestfs_h *g, struct inspect_fs *fs, size_t *size_r) int r; char *ret; - filename_case = guestfs_int_case_sensitive_path_silently - (g, "/ProgramData/Microsoft/Windows Live/WLive48x48.png"); + filename_case = guestfs_int_case_sensitive_path_silently ( + g, "/ProgramData/Microsoft/Windows Live/WLive48x48.png"); if (filename_case == NULL) return NOT_FOUND; /* Not an error since a parent dir might not exist. */ @@ -565,12 +574,13 @@ icon_windows_8 (guestfs_h *g, struct inspect_fs *fs, size_t *size_r) if (r == 0) return NOT_FOUND; - filename_downloaded = guestfs_int_download_to_tmp (g, fs, filename_case, - "wlive48x48.png", 8192); + filename_downloaded = guestfs_int_download_to_tmp ( + g, fs, filename_case, "wlive48x48.png", 8192); if (filename_downloaded == NULL) return NOT_FOUND; - if (guestfs_int_read_whole_file (g, filename_downloaded, &ret, size_r) == -1) + if (guestfs_int_read_whole_file (g, filename_downloaded, &ret, size_r) == + -1) return NULL; return ret; @@ -595,7 +605,8 @@ icon_windows (guestfs_h *g, struct inspect_fs *fs, size_t *size_r) return icon_windows_8 (g, fs, size_r); /* Not (yet) a supported version of Windows. */ - else return NOT_FOUND; + else + return NOT_FOUND; } #endif /* CAN_DO_WINDOWS */ diff --git a/src/inspect.c b/src/inspect.c index 497794e..0903371 100644 --- a/src/inspect.c +++ b/src/inspect.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include <config.h> @@ -60,7 +61,8 @@ guestfs_impl_inspect_os (guestfs_h *g) */ fses = guestfs_list_filesystems (g); - if (fses == NULL) return NULL; + if (fses == NULL) + return NULL; for (fs = fses; *fs; fs += 2) { if (guestfs_int_check_for_filesystem_on (g, *fs)) { @@ -124,14 +126,15 @@ collect_coreos_inspection_info (guestfs_h *g) * partition is empty and it gets filled up when an update is performed. * Then, when the system reboots, the boot loader is instructed to boot * from the passive partition. If both partitions are valid, we cannot - * determine which the active and which the passive is, unless we peep into - * the boot loader. As a workaround, we check the OS versions and pick the + * determine which the active and which the passive is, unless we peep + * into + * the boot loader. As a workaround, we check the OS versions and pick + * the * one with the higher version as active. */ - if (usr && - (usr->major_version > fs->major_version || - (usr->major_version == fs->major_version && - usr->minor_version > fs->minor_version))) + if (usr && (usr->major_version > fs->major_version || + (usr->major_version == fs->major_version && + usr->minor_version > fs->minor_version))) continue; usr = fs; @@ -157,10 +160,8 @@ check_for_duplicated_bsd_root (guestfs_h *g) bool is_bsd; struct inspect_fs *fs = &g->fses[i]; - is_bsd = - fs->type == OS_TYPE_FREEBSD || - fs->type == OS_TYPE_NETBSD || - fs->type == OS_TYPE_OPENBSD; + is_bsd = fs->type == OS_TYPE_FREEBSD || fs->type == OS_TYPE_NETBSD || + fs->type == OS_TYPE_OPENBSD; if (fs->is_root && is_bsd && match (g, fs->mountable, re_primary_partition)) { @@ -180,8 +181,8 @@ check_for_duplicated_bsd_root (guestfs_h *g) static int compare_strings (const void *vp1, const void *vp2) { - const char *s1 = * (char * const *) vp1; - const char *s2 = * (char * const *) vp2; + const char *s1 = *(char *const *)vp1; + const char *s2 = *(char *const *)vp2; return strcmp (s1, s2); } @@ -201,7 +202,7 @@ guestfs_impl_inspect_get_roots (guestfs_h *g) } guestfs_int_end_stringsbuf (g, &ret); - qsort (ret.argv, ret.size-1, sizeof (char *), compare_strings); + qsort (ret.argv, ret.size - 1, sizeof (char *), compare_strings); return ret.argv; } @@ -216,15 +217,33 @@ guestfs_impl_inspect_get_type (guestfs_h *g, const char *root) return NULL; switch (fs->type) { - case OS_TYPE_DOS: ret = safe_strdup (g, "dos"); break; - case OS_TYPE_FREEBSD: ret = safe_strdup (g, "freebsd"); break; - case OS_TYPE_HURD: ret = safe_strdup (g, "hurd"); break; - case OS_TYPE_LINUX: ret = safe_strdup (g, "linux"); break; - case OS_TYPE_MINIX: ret = safe_strdup (g, "minix"); break; - case OS_TYPE_NETBSD: ret = safe_strdup (g, "netbsd"); break; - case OS_TYPE_OPENBSD: ret = safe_strdup (g, "openbsd"); break; - case OS_TYPE_WINDOWS: ret = safe_strdup (g, "windows"); break; - case OS_TYPE_UNKNOWN: ret = safe_strdup (g, "unknown"); break; + case OS_TYPE_DOS: + ret = safe_strdup (g, "dos"); + break; + case OS_TYPE_FREEBSD: + ret = safe_strdup (g, "freebsd"); + break; + case OS_TYPE_HURD: + ret = safe_strdup (g, "hurd"); + break; + case OS_TYPE_LINUX: + ret = safe_strdup (g, "linux"); + break; + case OS_TYPE_MINIX: + ret = safe_strdup (g, "minix"); + break; + case OS_TYPE_NETBSD: + ret = safe_strdup (g, "netbsd"); + break; + case OS_TYPE_OPENBSD: + ret = safe_strdup (g, "openbsd"); + break; + case OS_TYPE_WINDOWS: + ret = safe_strdup (g, "windows"); + break; + case OS_TYPE_UNKNOWN: + ret = safe_strdup (g, "unknown"); + break; } if (ret == NULL) @@ -240,7 +259,7 @@ guestfs_impl_inspect_get_arch (guestfs_h *g, const char *root) if (!fs) return NULL; - return safe_strdup (g, fs->arch ? : "unknown"); + return safe_strdup (g, fs->arch ?: "unknown"); } char * @@ -253,39 +272,105 @@ guestfs_impl_inspect_get_distro (guestfs_h *g, const char *root) return NULL; switch (fs->distro) { - case OS_DISTRO_ALPINE_LINUX: ret = safe_strdup (g, "alpinelinux"); break; - case OS_DISTRO_ALTLINUX: ret = safe_strdup (g, "altlinux"); break; - case OS_DISTRO_ARCHLINUX: ret = safe_strdup (g, "archlinux"); break; - case OS_DISTRO_BUILDROOT: ret = safe_strdup (g, "buildroot"); break; - case OS_DISTRO_CENTOS: ret = safe_strdup (g, "centos"); break; - case OS_DISTRO_CIRROS: ret = safe_strdup (g, "cirros"); break; - case OS_DISTRO_COREOS: ret = safe_strdup (g, "coreos"); break; - case OS_DISTRO_DEBIAN: ret = safe_strdup (g, "debian"); break; - case OS_DISTRO_FEDORA: ret = safe_strdup (g, "fedora"); break; - case OS_DISTRO_FREEBSD: ret = safe_strdup (g, "freebsd"); break; - case OS_DISTRO_FREEDOS: ret = safe_strdup (g, "freedos"); break; - case OS_DISTRO_FRUGALWARE: ret = safe_strdup (g, "frugalware"); break; - case OS_DISTRO_GENTOO: ret = safe_strdup (g, "gentoo"); break; - case OS_DISTRO_LINUX_MINT: ret = safe_strdup (g, "linuxmint"); break; - case OS_DISTRO_MAGEIA: ret = safe_strdup (g, "mageia"); break; - case OS_DISTRO_MANDRIVA: ret = safe_strdup (g, "mandriva"); break; - case OS_DISTRO_MEEGO: ret = safe_strdup (g, "meego"); break; - case OS_DISTRO_NETBSD: ret = safe_strdup (g, "netbsd"); break; - case OS_DISTRO_OPENBSD: ret = safe_strdup (g, "openbsd"); break; - case OS_DISTRO_OPENSUSE: ret = safe_strdup (g, "opensuse"); break; - case OS_DISTRO_ORACLE_LINUX: ret = safe_strdup (g, "oraclelinux"); break; - case OS_DISTRO_PARDUS: ret = safe_strdup (g, "pardus"); break; - case OS_DISTRO_PLD_LINUX: ret = safe_strdup (g, "pldlinux"); break; - case OS_DISTRO_REDHAT_BASED: ret = safe_strdup (g, "redhat-based"); break; - case OS_DISTRO_RHEL: ret = safe_strdup (g, "rhel"); break; - case OS_DISTRO_SCIENTIFIC_LINUX: ret = safe_strdup (g, "scientificlinux"); break; - case OS_DISTRO_SLACKWARE: ret = safe_strdup (g, "slackware"); break; - case OS_DISTRO_SLES: ret = safe_strdup (g, "sles"); break; - case OS_DISTRO_SUSE_BASED: ret = safe_strdup (g, "suse-based"); break; - case OS_DISTRO_TTYLINUX: ret = safe_strdup (g, "ttylinux"); break; - case OS_DISTRO_WINDOWS: ret = safe_strdup (g, "windows"); break; - case OS_DISTRO_UBUNTU: ret = safe_strdup (g, "ubuntu"); break; - case OS_DISTRO_UNKNOWN: ret = safe_strdup (g, "unknown"); break; + case OS_DISTRO_ALPINE_LINUX: + ret = safe_strdup (g, "alpinelinux"); + break; + case OS_DISTRO_ALTLINUX: + ret = safe_strdup (g, "altlinux"); + break; + case OS_DISTRO_ARCHLINUX: + ret = safe_strdup (g, "archlinux"); + break; + case OS_DISTRO_BUILDROOT: + ret = safe_strdup (g, "buildroot"); + break; + case OS_DISTRO_CENTOS: + ret = safe_strdup (g, "centos"); + break; + case OS_DISTRO_CIRROS: + ret = safe_strdup (g, "cirros"); + break; + case OS_DISTRO_COREOS: + ret = safe_strdup (g, "coreos"); + break; + case OS_DISTRO_DEBIAN: + ret = safe_strdup (g, "debian"); + break; + case OS_DISTRO_FEDORA: + ret = safe_strdup (g, "fedora"); + break; + case OS_DISTRO_FREEBSD: + ret = safe_strdup (g, "freebsd"); + break; + case OS_DISTRO_FREEDOS: + ret = safe_strdup (g, "freedos"); + break; + case OS_DISTRO_FRUGALWARE: + ret = safe_strdup (g, "frugalware"); + break; + case OS_DISTRO_GENTOO: + ret = safe_strdup (g, "gentoo"); + break; + case OS_DISTRO_LINUX_MINT: + ret = safe_strdup (g, "linuxmint"); + break; + case OS_DISTRO_MAGEIA: + ret = safe_strdup (g, "mageia"); + break; + case OS_DISTRO_MANDRIVA: + ret = safe_strdup (g, "mandriva"); + break; + case OS_DISTRO_MEEGO: + ret = safe_strdup (g, "meego"); + break; + case OS_DISTRO_NETBSD: + ret = safe_strdup (g, "netbsd"); + break; + case OS_DISTRO_OPENBSD: + ret = safe_strdup (g, "openbsd"); + break; + case OS_DISTRO_OPENSUSE: + ret = safe_strdup (g, "opensuse"); + break; + case OS_DISTRO_ORACLE_LINUX: + ret = safe_strdup (g, "oraclelinux"); + break; + case OS_DISTRO_PARDUS: + ret = safe_strdup (g, "pardus"); + break; + case OS_DISTRO_PLD_LINUX: + ret = safe_strdup (g, "pldlinux"); + break; + case OS_DISTRO_REDHAT_BASED: + ret = safe_strdup (g, "redhat-based"); + break; + case OS_DISTRO_RHEL: + ret = safe_strdup (g, "rhel"); + break; + case OS_DISTRO_SCIENTIFIC_LINUX: + ret = safe_strdup (g, "scientificlinux"); + break; + case OS_DISTRO_SLACKWARE: + ret = safe_strdup (g, "slackware"); + break; + case OS_DISTRO_SLES: + ret = safe_strdup (g, "sles"); + break; + case OS_DISTRO_SUSE_BASED: + ret = safe_strdup (g, "suse-based"); + break; + case OS_DISTRO_TTYLINUX: + ret = safe_strdup (g, "ttylinux"); + break; + case OS_DISTRO_WINDOWS: + ret = safe_strdup (g, "windows"); + break; + case OS_DISTRO_UBUNTU: + ret = safe_strdup (g, "ubuntu"); + break; + case OS_DISTRO_UNKNOWN: + ret = safe_strdup (g, "unknown"); + break; } if (ret == NULL) @@ -321,7 +406,7 @@ guestfs_impl_inspect_get_product_name (guestfs_h *g, const char *root) if (!fs) return NULL; - return safe_strdup (g, fs->product_name ? : "unknown"); + return safe_strdup (g, fs->product_name ?: "unknown"); } char * @@ -331,7 +416,7 @@ guestfs_impl_inspect_get_product_variant (guestfs_h *g, const char *root) if (!fs) return NULL; - return safe_strdup (g, fs->product_variant ? : "unknown"); + return safe_strdup (g, fs->product_variant ?: "unknown"); } char * @@ -342,7 +427,9 @@ guestfs_impl_inspect_get_windows_systemroot (guestfs_h *g, const char *root) return NULL; if (!fs->windows_systemroot) { - error (g, _("not a Windows guest, or systemroot could not be determined")); + error ( + g, + _("not a Windows guest, or systemroot could not be determined")); return NULL; } @@ -351,14 +438,15 @@ guestfs_impl_inspect_get_windows_systemroot (guestfs_h *g, const char *root) char * guestfs_impl_inspect_get_windows_current_control_set (guestfs_h *g, - const char *root) + const char *root) { struct inspect_fs *fs = guestfs_int_search_for_root (g, root); if (!fs) return NULL; if (!fs->windows_current_control_set) { - error (g, _("not a Windows guest, or CurrentControlSet could not be determined")); + error (g, _("not a Windows guest, or CurrentControlSet could not be " + "determined")); return NULL; } @@ -374,9 +462,15 @@ guestfs_impl_inspect_get_format (guestfs_h *g, const char *root) return NULL; switch (fs->format) { - case OS_FORMAT_INSTALLED: ret = safe_strdup (g, "installed"); break; - case OS_FORMAT_INSTALLER: ret = safe_strdup (g, "installer"); break; - case OS_FORMAT_UNKNOWN: ret = safe_strdup (g, "unknown"); break; + case OS_FORMAT_INSTALLED: + ret = safe_strdup (g, "installed"); + break; + case OS_FORMAT_INSTALLER: + ret = safe_strdup (g, "installer"); + break; + case OS_FORMAT_UNKNOWN: + ret = safe_strdup (g, "unknown"); + break; } if (ret == NULL) @@ -440,7 +534,7 @@ guestfs_impl_inspect_get_mountpoints (guestfs_h *g, const char *root) } /* Hashtables have 2N+1 entries. */ - ret = calloc (2*count+1, sizeof (char *)); + ret = calloc (2 * count + 1, sizeof (char *)); if (ret == NULL) { perrorf (g, "calloc"); return NULL; @@ -457,8 +551,8 @@ guestfs_impl_inspect_get_mountpoints (guestfs_h *g, const char *root) count = 0; for (i = 0; i < nr; ++i) if (CRITERION (fs, i)) { - ret[2*count] = safe_strdup (g, fs->fstab[i].mountpoint); - ret[2*count+1] = safe_strdup (g, fs->fstab[i].mountable); + ret[2 * count] = safe_strdup (g, fs->fstab[i].mountpoint); + ret[2 * count + 1] = safe_strdup (g, fs->fstab[i].mountable); count++; } #undef CRITERION @@ -477,7 +571,7 @@ guestfs_impl_inspect_get_filesystems (guestfs_h *g, const char *root) return NULL; nr = fs->nr_fstab; - ret = calloc (nr == 0 ? 2 : nr+1, sizeof (char *)); + ret = calloc (nr == 0 ? 2 : nr + 1, sizeof (char *)); if (ret == NULL) { perrorf (g, "calloc"); return NULL; @@ -525,13 +619,27 @@ guestfs_impl_inspect_get_package_format (guestfs_h *g, const char *root) return NULL; switch (fs->package_format) { - case OS_PACKAGE_FORMAT_RPM: ret = safe_strdup (g, "rpm"); break; - case OS_PACKAGE_FORMAT_DEB: ret = safe_strdup (g, "deb"); break; - case OS_PACKAGE_FORMAT_PACMAN: ret = safe_strdup (g, "pacman"); break; - case OS_PACKAGE_FORMAT_EBUILD: ret = safe_strdup (g, "ebuild"); break; - case OS_PACKAGE_FORMAT_PISI: ret = safe_strdup (g, "pisi"); break; - case OS_PACKAGE_FORMAT_PKGSRC: ret = safe_strdup (g, "pkgsrc"); break; - case OS_PACKAGE_FORMAT_APK: ret = safe_strdup (g, "apk"); break; + case OS_PACKAGE_FORMAT_RPM: + ret = safe_strdup (g, "rpm"); + break; + case OS_PACKAGE_FORMAT_DEB: + ret = safe_strdup (g, "deb"); + break; + case OS_PACKAGE_FORMAT_PACMAN: + ret = safe_strdup (g, "pacman"); + break; + case OS_PACKAGE_FORMAT_EBUILD: + ret = safe_strdup (g, "ebuild"); + break; + case OS_PACKAGE_FORMAT_PISI: + ret = safe_strdup (g, "pisi"); + break; + case OS_PACKAGE_FORMAT_PKGSRC: + ret = safe_strdup (g, "pkgsrc"); + break; + case OS_PACKAGE_FORMAT_APK: + ret = safe_strdup (g, "apk"); + break; case OS_PACKAGE_FORMAT_UNKNOWN: ret = safe_strdup (g, "unknown"); break; @@ -552,16 +660,36 @@ guestfs_impl_inspect_get_package_management (guestfs_h *g, const char *root) return NULL; switch (fs->package_management) { - case OS_PACKAGE_MANAGEMENT_APK: ret = safe_strdup (g, "apk"); break; - case OS_PACKAGE_MANAGEMENT_APT: ret = safe_strdup (g, "apt"); break; - case OS_PACKAGE_MANAGEMENT_DNF: ret = safe_strdup (g, "dnf"); break; - case OS_PACKAGE_MANAGEMENT_PACMAN: ret = safe_strdup (g, "pacman"); break; - case OS_PACKAGE_MANAGEMENT_PISI: ret = safe_strdup (g, "pisi"); break; - case OS_PACKAGE_MANAGEMENT_PORTAGE: ret = safe_strdup (g, "portage"); break; - case OS_PACKAGE_MANAGEMENT_UP2DATE: ret = safe_strdup (g, "up2date"); break; - case OS_PACKAGE_MANAGEMENT_URPMI: ret = safe_strdup (g, "urpmi"); break; - case OS_PACKAGE_MANAGEMENT_YUM: ret = safe_strdup (g, "yum"); break; - case OS_PACKAGE_MANAGEMENT_ZYPPER: ret = safe_strdup (g, "zypper"); break; + case OS_PACKAGE_MANAGEMENT_APK: + ret = safe_strdup (g, "apk"); + break; + case OS_PACKAGE_MANAGEMENT_APT: + ret = safe_strdup (g, "apt"); + break; + case OS_PACKAGE_MANAGEMENT_DNF: + ret = safe_strdup (g, "dnf"); + break; + case OS_PACKAGE_MANAGEMENT_PACMAN: + ret = safe_strdup (g, "pacman"); + break; + case OS_PACKAGE_MANAGEMENT_PISI: + ret = safe_strdup (g, "pisi"); + break; + case OS_PACKAGE_MANAGEMENT_PORTAGE: + ret = safe_strdup (g, "portage"); + break; + case OS_PACKAGE_MANAGEMENT_UP2DATE: + ret = safe_strdup (g, "up2date"); + break; + case OS_PACKAGE_MANAGEMENT_URPMI: + ret = safe_strdup (g, "urpmi"); + break; + case OS_PACKAGE_MANAGEMENT_YUM: + ret = safe_strdup (g, "yum"); + break; + case OS_PACKAGE_MANAGEMENT_ZYPPER: + ret = safe_strdup (g, "zypper"); + break; case OS_PACKAGE_MANAGEMENT_UNKNOWN: ret = safe_strdup (g, "unknown"); break; @@ -580,7 +708,7 @@ guestfs_impl_inspect_get_hostname (guestfs_h *g, const char *root) if (!fs) return NULL; - return safe_strdup (g, fs->hostname ? : "unknown"); + return safe_strdup (g, fs->hostname ?: "unknown"); } void @@ -624,8 +752,8 @@ guestfs_int_free_inspect_info (guestfs_h *g) */ char * guestfs_int_download_to_tmp (guestfs_h *g, struct inspect_fs *fs, - const char *filename, - const char *basename, uint64_t max_size) + const char *filename, const char *basename, + uint64_t max_size) { char *r; int fd; @@ -649,13 +777,13 @@ guestfs_int_download_to_tmp (guestfs_h *g, struct inspect_fs *fs, if (size == -1) /* guestfs_filesize failed and has already set error in handle */ goto error; - if ((uint64_t) size > max_size) { + if ((uint64_t)size > max_size) { error (g, _("size of %s is unreasonably large (%" PRIi64 " bytes)"), filename, size); goto error; } - fd = open (r, O_WRONLY|O_CREAT|O_TRUNC|O_NOCTTY|O_CLOEXEC, 0600); + fd = open (r, O_WRONLY | O_CREAT | O_TRUNC | O_NOCTTY | O_CLOEXEC, 0600); if (fd == -1) { perrorf (g, "open: %s", r); goto error; @@ -677,7 +805,7 @@ guestfs_int_download_to_tmp (guestfs_h *g, struct inspect_fs *fs, return r; - error: +error: free (r); return NULL; } @@ -698,7 +826,8 @@ guestfs_int_search_for_root (guestfs_h *g, const char *root) return fs; } - error (g, _("%s: root device not found: only call this function with a root device previously returned by guestfs_inspect_os"), + error (g, _("%s: root device not found: only call this function with a " + "root device previously returned by guestfs_inspect_os"), root); return NULL; } diff --git a/src/journal.c b/src/journal.c index 22b81de..0c0e545 100644 --- a/src/journal.c +++ b/src/journal.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include <config.h> @@ -36,7 +37,7 @@ #if defined __APPLE__ && defined __MACH__ #include <libkern/OSByteOrder.h> -#define be64toh(x) OSSwapBigToHostInt64(x) +#define be64toh(x) OSSwapBigToHostInt64 (x) #endif #include "full-read.h" @@ -73,7 +74,7 @@ guestfs_impl_journal_get (guestfs_h *g) if (guestfs_internal_journal_get (g, tmpfile) == -1) goto err; - fd = open (tmpfile, O_RDONLY|O_CLOEXEC); + fd = open (tmpfile, O_RDONLY | O_CLOEXEC); if (fd == -1) { perrorf (g, "open: %s", tmpfile); goto err; @@ -87,13 +88,13 @@ guestfs_impl_journal_get (guestfs_h *g) /* Don't use safe_malloc. Want to return an errno to the caller. */ size = statbuf.st_size; - buf = malloc (size+1); + buf = malloc (size + 1); if (!buf) { perrorf (g, "malloc: %zu bytes", size); goto err; } eobuf = &buf[size]; - *eobuf = '\0'; /* Makes strchr etc safe. */ + *eobuf = '\0'; /* Makes strchr etc safe. */ if (full_read (fd, buf, size) != size) { perrorf (g, "full-read: %s: %zu bytes", tmpfile, size); @@ -116,44 +117,48 @@ guestfs_impl_journal_get (guestfs_h *g) * 64 bit length field followed by N bytes of 'field=data' binary * data. */ - for (i = 0; i < size; ) { - if (i+8 > size) { + for (i = 0; i < size;) { + if (i + 8 > size) { error (g, "invalid data from guestfs_internal_journal_get: " - "truncated: " - "size=%zu, i=%zu", size, i); + "truncated: " + "size=%zu, i=%zu", + size, i); goto err; } - memcpy(&len, &buf[i], sizeof(len)); + memcpy (&len, &buf[i], sizeof (len)); len = be64toh (len); i += 8; - eofield = &buf[i+len]; + eofield = &buf[i + len]; if (eofield > eobuf) { error (g, "invalid data from guestfs_internal_journal_get: " - "length field is too large: " - "size=%zu, i=%zu, len=%" PRIu64, size, i, len); + "length field is too large: " + "size=%zu, i=%zu, len=%" PRIu64, + size, i, len); goto err; } p = strchr (&buf[i], '='); if (!p || p >= eofield) { error (g, "invalid data from guestfs_internal_journal_get: " - "no '=' found separating field name and data: " - "size=%zu, i=%zu, p=%p", size, i, p); + "no '=' found separating field name and data: " + "size=%zu, i=%zu, p=%p", + size, i, p); goto err; } *p = '\0'; j++; - ret->val = safe_realloc (g, ret->val, j * sizeof (struct guestfs_xattr)); - ret->val[j-1].attrname = safe_strdup (g, &buf[i]); - ret->val[j-1].attrval_len = eofield - (p+1); - ret->val[j-1].attrval = safe_memdup (g, p+1, eofield - (p+1)); + ret->val = + safe_realloc (g, ret->val, j * sizeof (struct guestfs_xattr)); + ret->val[j - 1].attrname = safe_strdup (g, &buf[i]); + ret->val[j - 1].attrval_len = eofield - (p + 1); + ret->val[j - 1].attrval = safe_memdup (g, p + 1, eofield - (p + 1)); ret->len = j; i += len; } - return ret; /* caller frees */ + return ret; /* caller frees */ - err: +err: guestfs_free_xattr_list (ret); if (fd >= 0) close (fd); diff --git a/src/launch-direct.c b/src/launch-direct.c index 322737d..79fd5fb 100644 --- a/src/launch-direct.c +++ b/src/launch-direct.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include <config.h> @@ -49,17 +50,18 @@ COMPILE_REGEXP (re_major_minor, "(\\d+)\\.(\\d+)", 0) /* Per-handle data. */ -struct backend_direct_data { - pid_t pid; /* Qemu PID. */ - pid_t recoverypid; /* Recovery process PID. */ +struct backend_direct_data +{ + pid_t pid; /* Qemu PID. */ + pid_t recoverypid; /* Recovery process PID. */ - char *qemu_help; /* Output of qemu -help. */ - char *qemu_devices; /* Output of qemu -device ? */ + char *qemu_help; /* Output of qemu -help. */ + char *qemu_devices; /* Output of qemu -device ? */ /* qemu version (0, 0 if unable to parse). */ int qemu_version_major, qemu_version_minor; - int virtio_scsi; /* See function qemu_supports_virtio_scsi */ + int virtio_scsi; /* See function qemu_supports_virtio_scsi */ char guestfsd_sock[UNIX_PATH_MAX]; /* Path to daemon socket. */ }; @@ -67,9 +69,12 @@ struct backend_direct_data { static int is_openable (guestfs_h *g, const char *path, int flags); static char *make_appliance_dev (guestfs_h *g, int virtio_scsi); static void print_qemu_command_line (guestfs_h *g, char **argv); -static int qemu_supports (guestfs_h *g, struct backend_direct_data *, const char *option); -static int qemu_supports_device (guestfs_h *g, struct backend_direct_data *, const char *device_name); -static int qemu_supports_virtio_scsi (guestfs_h *g, struct backend_direct_data *); +static int qemu_supports (guestfs_h *g, struct backend_direct_data *, + const char *option); +static int qemu_supports_device (guestfs_h *g, struct backend_direct_data *, + const char *device_name); +static int qemu_supports_virtio_scsi (guestfs_h *g, + struct backend_direct_data *); static char *qemu_escape_param (guestfs_h *g, const char *param); static char * @@ -120,7 +125,7 @@ add_cmdline_shell_unquoted (guestfs_h *g, struct stringsbuf *sb, while (*options) { quote = *options; if (quote == '\'' || quote == '"') - startp = options+1; + startp = options + 1; else { startp = options; quote = ' '; @@ -129,9 +134,10 @@ add_cmdline_shell_unquoted (guestfs_h *g, struct stringsbuf *sb, endp = strchr (options, quote); if (endp == NULL) { if (quote != ' ') { - fprintf (stderr, - _("unclosed quote character (%c) in command line near: %s"), - quote, options); + fprintf ( + stderr, + _("unclosed quote character (%c) in command line near: %s"), + quote, options); _exit (EXIT_FAILURE); } endp = options + strlen (options); @@ -141,15 +147,15 @@ add_cmdline_shell_unquoted (guestfs_h *g, struct stringsbuf *sb, if (endp[0] == '\0') nextp = endp; else - nextp = endp+1; - } - else { + nextp = endp + 1; + } else { if (!endp[1]) - nextp = endp+1; + nextp = endp + 1; else if (endp[1] == ' ') - nextp = endp+2; + nextp = endp + 2; else { - fprintf (stderr, _("cannot parse quoted string near: %s"), options); + fprintf (stderr, _("cannot parse quoted string near: %s"), + options); _exit (EXIT_FAILURE); } } @@ -157,7 +163,7 @@ add_cmdline_shell_unquoted (guestfs_h *g, struct stringsbuf *sb, nextp++; guestfs_int_add_string_nodup (g, sb, - safe_strndup (g, startp, endp-startp)); + safe_strndup (g, startp, endp - startp)); options = nextp; } @@ -189,7 +195,8 @@ debian_kvm_warning (guestfs_h *g) if ((statbuf.st_mode & 0777) != 0660) return; - /* They might be running libguestfs as root or have chowned /dev/kvm, so: */ + /* They might be running libguestfs as root or have chowned /dev/kvm, so: + */ if (geteuid () == statbuf.st_uid) return; @@ -206,7 +213,7 @@ debian_kvm_warning (guestfs_h *g) warning (g, "getgroups: %m (ignored)"); return; } - for (i = 0; i < (size_t) ngroups; ++i) { + for (i = 0; i < (size_t)ngroups; ++i) { if (groups[i] == kvm_group) return; } @@ -215,12 +222,15 @@ debian_kvm_warning (guestfs_h *g) /* No, so emit the warning. Note that \n characters cannot appear * in warnings. */ - warning (g, - _("current user is not a member of the KVM group (group ID %d). " - "This user cannot access /dev/kvm, so libguestfs may run very slowly. " - "It is recommended that you 'chmod 0666 /dev/kvm' or add the current user " - "to the KVM group (you might need to log out and log in again)."), - (int) kvm_group); + warning ( + g, + _("current user is not a member of the KVM group (group ID %d). " + "This user cannot access /dev/kvm, so libguestfs may run very " + "slowly. " + "It is recommended that you 'chmod 0666 /dev/kvm' or add the " + "current user " + "to the KVM group (you might need to log out and log in again)."), + (int)kvm_group); #endif /* __linux__ */ } @@ -262,7 +272,7 @@ launch_direct (guestfs_h *g, void *datav, const char *arg) * which case the user would not get hardware virtualization, * although at least shouldn't fail. */ - has_kvm = is_openable (g, "/dev/kvm", O_RDWR|O_CLOEXEC); + has_kvm = is_openable (g, "/dev/kvm", O_RDWR | O_CLOEXEC); force_tcg = guestfs_int_get_backend_setting_bool (g, "force_tcg"); if (force_tcg == -1) @@ -297,7 +307,7 @@ launch_direct (guestfs_h *g, void *datav, const char *arg) &data->guestfsd_sock) == -1) goto cleanup0; - daemon_accept_sock = socket (AF_UNIX, SOCK_STREAM|SOCK_CLOEXEC, 0); + daemon_accept_sock = socket (AF_UNIX, SOCK_STREAM | SOCK_CLOEXEC, 0); if (daemon_accept_sock == -1) { perrorf (g, "socket"); goto cleanup0; @@ -305,10 +315,10 @@ launch_direct (guestfs_h *g, void *datav, const char *arg) addr.sun_family = AF_UNIX; strncpy (addr.sun_path, data->guestfsd_sock, UNIX_PATH_MAX); - addr.sun_path[UNIX_PATH_MAX-1] = '\0'; + addr.sun_path[UNIX_PATH_MAX - 1] = '\0'; - if (bind (daemon_accept_sock, (struct sockaddr *) &addr, - sizeof addr) == -1) { + if (bind (daemon_accept_sock, (struct sockaddr *)&addr, sizeof addr) == + -1) { perrorf (g, "bind"); goto cleanup0; } @@ -319,7 +329,7 @@ launch_direct (guestfs_h *g, void *datav, const char *arg) } if (!g->direct_mode) { - if (socketpair (AF_LOCAL, SOCK_STREAM|SOCK_CLOEXEC, 0, sv) == -1) { + if (socketpair (AF_LOCAL, SOCK_STREAM | SOCK_CLOEXEC, 0, sv) == -1) { perrorf (g, "socketpair"); goto cleanup0; } @@ -327,15 +337,14 @@ launch_direct (guestfs_h *g, void *datav, const char *arg) debug (g, "finished testing qemu features"); - /* Construct the qemu command line. We have to do this before - * forking, because after fork we are not allowed to use - * non-signal-safe functions such as malloc. - */ -#define ADD_CMDLINE(str) \ - guestfs_int_add_string (g, &cmdline, (str)) -#define ADD_CMDLINE_STRING_NODUP(str) \ +/* Construct the qemu command line. We have to do this before + * forking, because after fork we are not allowed to use + * non-signal-safe functions such as malloc. + */ +#define ADD_CMDLINE(str) guestfs_int_add_string (g, &cmdline, (str)) +#define ADD_CMDLINE_STRING_NODUP(str) \ guestfs_int_add_string_nodup (g, &cmdline, (str)) -#define ADD_CMDLINE_PRINTF(fs,...) \ +#define ADD_CMDLINE_PRINTF(fs, ...) \ guestfs_int_add_sprintf (g, &cmdline, (fs), ##__VA_ARGS__) ADD_CMDLINE (g->hv); @@ -379,28 +388,29 @@ launch_direct (guestfs_h *g, void *datav, const char *arg) if (guestfs_int_get_backend_setting_bool (g, "gdb") > 0) { ADD_CMDLINE ("-S"); ADD_CMDLINE ("-s"); - warning (g, "qemu debugging is enabled, connect gdb to tcp::1234 to begin"); + warning ( + g, "qemu debugging is enabled, connect gdb to tcp::1234 to begin"); } ADD_CMDLINE ("-machine"); if (!force_tcg) ADD_CMDLINE ( #ifdef MACHINE_TYPE - MACHINE_TYPE "," + MACHINE_TYPE "," #endif #ifdef __aarch64__ - "gic-version=host," + "gic-version=host," #endif - "accel=kvm:tcg"); + "accel=kvm:tcg"); else ADD_CMDLINE ( #ifdef MACHINE_TYPE - MACHINE_TYPE "," + MACHINE_TYPE "," #endif #ifdef __aarch64__ - "gic-version=host," + "gic-version=host," #endif - "accel=tcg"); + "accel=tcg"); cpu_model = guestfs_int_get_cpu_model (has_kvm && !force_tcg); if (cpu_model) { @@ -472,12 +482,14 @@ launch_direct (guestfs_h *g, void *datav, const char *arg) ADD_CMDLINE (VIRTIO_SCSI ",id=scsi"); } - ITER_DRIVES (g, i, drv) { + ITER_DRIVES (g, i, drv) + { CLEANUP_FREE char *file = NULL, *escaped_file = NULL, *param = NULL; if (!drv->overlay) { const char *discard_mode = ""; - int major = data->qemu_version_major, minor = data->qemu_version_minor; + int major = data->qemu_version_major, + minor = data->qemu_version_minor; unsigned long qemu_version = major * 1000000 + minor * 1000; switch (drv->discard) { @@ -490,7 +502,7 @@ launch_direct (guestfs_h *g, void *datav, const char *arg) case discard_enable: if (!guestfs_int_discard_possible (g, drv, qemu_version)) goto cleanup0; - /*FALLTHROUGH*/ + /*FALLTHROUGH*/ case discard_besteffort: /* I believe from reading the code that this is always safe as * long as qemu >= 1.5. @@ -507,28 +519,22 @@ launch_direct (guestfs_h *g, void *datav, const char *arg) /* Make the first part of the -drive parameter, everything up to * the if=... at the end. */ - param = safe_asprintf - (g, "file=%s%s,cache=%s%s%s%s%s%s%s,id=hd%zu", - escaped_file, - drv->readonly ? ",snapshot=on" : "", - drv->cachemode ? drv->cachemode : "writeback", - discard_mode, - drv->src.format ? ",format=" : "", - drv->src.format ? drv->src.format : "", - drv->disk_label ? ",serial=" : "", - drv->disk_label ? drv->disk_label : "", - drv->copyonread ? ",copy-on-read=on" : "", - i); - } - else { + param = + safe_asprintf (g, "file=%s%s,cache=%s%s%s%s%s%s%s,id=hd%zu", + escaped_file, drv->readonly ? ",snapshot=on" : "", + drv->cachemode ? drv->cachemode : "writeback", + discard_mode, drv->src.format ? ",format=" : "", + drv->src.format ? drv->src.format : "", + drv->disk_label ? ",serial=" : "", + drv->disk_label ? drv->disk_label : "", + drv->copyonread ? ",copy-on-read=on" : "", i); + } else { /* Writable qcow2 overlay on top of read-only drive. */ escaped_file = qemu_escape_param (g, drv->overlay); - param = safe_asprintf - (g, "file=%s,cache=unsafe,format=qcow2%s%s,id=hd%zu", - escaped_file, - drv->disk_label ? ",serial=" : "", - drv->disk_label ? drv->disk_label : "", - i); + param = safe_asprintf ( + g, "file=%s,cache=unsafe,format=qcow2%s%s,id=hd%zu", escaped_file, + drv->disk_label ? ",serial=" : "", + drv->disk_label ? drv->disk_label : "", i); } /* If there's an explicit 'iface', use it. Otherwise default to @@ -545,14 +551,12 @@ launch_direct (guestfs_h *g, void *datav, const char *arg) else if (drv->iface) { ADD_CMDLINE ("-drive"); ADD_CMDLINE_PRINTF ("%s,if=%s", param, drv->iface); - } - else if (virtio_scsi) { + } else if (virtio_scsi) { ADD_CMDLINE ("-drive"); ADD_CMDLINE_PRINTF ("%s,if=none" /* sic */, param); ADD_CMDLINE ("-device"); ADD_CMDLINE_PRINTF ("scsi-hd,drive=hd%zu", i); - } - else { + } else { virtio_blk: ADD_CMDLINE ("-drive"); ADD_CMDLINE_PRINTF ("%s,if=none" /* sic */, param); @@ -564,14 +568,13 @@ launch_direct (guestfs_h *g, void *datav, const char *arg) /* Add the ext2 appliance drive (after all the drives). */ if (has_appliance_drive) { ADD_CMDLINE ("-drive"); - ADD_CMDLINE_PRINTF ("file=%s,snapshot=on,id=appliance,cache=unsafe,if=none", - appliance); + ADD_CMDLINE_PRINTF ( + "file=%s,snapshot=on,id=appliance,cache=unsafe,if=none", appliance); if (virtio_scsi) { ADD_CMDLINE ("-device"); ADD_CMDLINE ("scsi-hd,drive=appliance"); - } - else { + } else { ADD_CMDLINE ("-device"); ADD_CMDLINE (VIRTIO_BLK ",drive=appliance"); } @@ -603,7 +606,8 @@ launch_direct (guestfs_h *g, void *datav, const char *arg) ADD_CMDLINE ("-chardev"); ADD_CMDLINE_PRINTF ("socket,path=%s,id=channel0", data->guestfsd_sock); ADD_CMDLINE ("-device"); - ADD_CMDLINE ("virtserialport,chardev=channel0,name=org.libguestfs.channel.0"); + ADD_CMDLINE ( + "virtserialport,chardev=channel0,name=org.libguestfs.channel.0"); /* Enable user networking. */ if (g->enable_network) { @@ -617,16 +621,16 @@ launch_direct (guestfs_h *g, void *datav, const char *arg) flags = 0; if (!has_kvm || force_tcg) flags |= APPLIANCE_COMMAND_LINE_IS_TCG; - ADD_CMDLINE_STRING_NODUP (guestfs_int_appliance_command_line (g, appliance_dev, - flags)); + ADD_CMDLINE_STRING_NODUP ( + guestfs_int_appliance_command_line (g, appliance_dev, flags)); - /* Note: custom command line parameters must come last so that - * qemu -set parameters can modify previously added options. - */ +/* Note: custom command line parameters must come last so that + * qemu -set parameters can modify previously added options. + */ - /* Add the extra options for the qemu command line specified - * at configure time. - */ +/* Add the extra options for the qemu command line specified + * at configure time. + */ #ifdef QEMU_OPTIONS if (STRNEQ (QEMU_OPTIONS, "")) add_cmdline_shell_unquoted (g, &cmdline, QEMU_OPTIONS); @@ -652,7 +656,7 @@ launch_direct (guestfs_h *g, void *datav, const char *arg) goto cleanup0; } - if (r == 0) { /* Child (qemu). */ + if (r == 0) { /* Child (qemu). */ if (!g->direct_mode) { /* Set up stdin, stdout, stderr. */ close (0); @@ -702,7 +706,8 @@ launch_direct (guestfs_h *g, void *datav, const char *arg) setpgid (0, 0); setenv ("LC_ALL", "C", 1); - setenv ("QEMU_AUDIO_DRV", "none", 1); /* Prevents qemu opening /dev/dsp */ + setenv ("QEMU_AUDIO_DRV", "none", + 1); /* Prevents qemu opening /dev/dsp */ TRACE0 (launch_run_qemu); @@ -760,7 +765,8 @@ launch_direct (guestfs_h *g, void *datav, const char *arg) * effectively polling. Is the cure worse than the disease? */ for (;;) { - if (kill (qemu_pid, 0) == -1) /* qemu's gone away, we aren't needed */ + if (kill (qemu_pid, 0) == + -1) /* qemu's gone away, we aren't needed */ _exit (EXIT_SUCCESS); if (kill (parent_pid, 0) == -1) { /* Parent's gone away, qemu still around, so kill qemu. */ @@ -781,7 +787,7 @@ launch_direct (guestfs_h *g, void *datav, const char *arg) /* Close the other end of the socketpair. */ close (sv[1]); - console_sock = sv[0]; /* stdin of child */ + console_sock = sv[0]; /* stdin of child */ sv[0] = -1; } @@ -790,8 +796,8 @@ launch_direct (guestfs_h *g, void *datav, const char *arg) /* Wait for qemu to start and to connect back to us via * virtio-serial and send the GUESTFS_LAUNCH_FLAG message. */ - g->conn = - guestfs_int_new_conn_socket_listening (g, daemon_accept_sock, console_sock); + g->conn = guestfs_int_new_conn_socket_listening (g, daemon_accept_sock, + console_sock); if (!g->conn) goto cleanup1; @@ -846,18 +852,22 @@ launch_direct (guestfs_h *g, void *datav, const char *arg) return 0; - cleanup1: +cleanup1: if (!g->direct_mode && sv[0] >= 0) close (sv[0]); - if (data->pid > 0) kill (data->pid, 9); - if (data->recoverypid > 0) kill (data->recoverypid, 9); - if (data->pid > 0) waitpid (data->pid, NULL, 0); - if (data->recoverypid > 0) waitpid (data->recoverypid, NULL, 0); + if (data->pid > 0) + kill (data->pid, 9); + if (data->recoverypid > 0) + kill (data->recoverypid, 9); + if (data->pid > 0) + waitpid (data->pid, NULL, 0); + if (data->recoverypid > 0) + waitpid (data->recoverypid, NULL, 0); data->pid = 0; data->recoverypid = 0; memset (&g->launch_t, 0, sizeof g->launch_t); - cleanup0: +cleanup0: if (daemon_accept_sock >= 0) close (daemon_accept_sock); if (console_sock >= 0) @@ -887,12 +897,12 @@ make_appliance_dev (guestfs_h *g, int virtio_scsi) char dev[64] = "/dev/Xd"; /* Calculate the index of the drive. */ - ITER_DRIVES (g, i, drv) { + ITER_DRIVES (g, i, drv) + { if (virtio_scsi) { if (drv->iface == NULL || STREQ (drv->iface, "ide")) index++; - } - else /* virtio-blk */ { + } else /* virtio-blk */ { if (drv->iface == NULL || STRNEQ (drv->iface, "virtio")) index++; } @@ -901,7 +911,7 @@ make_appliance_dev (guestfs_h *g, int virtio_scsi) dev[5] = virtio_scsi ? 's' : 'v'; guestfs_int_drive_name (index, &dev[7]); - return safe_strdup (g, dev); /* Caller frees. */ + return safe_strdup (g, dev); /* Caller frees. */ } /* This is called from the forked subprocess just before qemu runs, so @@ -923,22 +933,27 @@ print_qemu_command_line (guestfs_h *g, char **argv) if (argv[i][0] == '-') /* -option starts a new line */ fprintf (stderr, " \\\n "); - if (i > 0) fputc (' ', stderr); + if (i > 0) + fputc (' ', stderr); /* Does it need shell quoting? This only deals with simple cases. */ needs_quote = strcspn (argv[i], " ") != strlen (argv[i]); - if (needs_quote) fputc ('\'', stderr); + if (needs_quote) + fputc ('\'', stderr); fprintf (stderr, "%s", argv[i]); - if (needs_quote) fputc ('\'', stderr); + if (needs_quote) + fputc ('\'', stderr); i++; } fputc ('\n', stderr); } -static void parse_qemu_version (guestfs_h *g, struct backend_direct_data *data); -static void read_all (guestfs_h *g, void *retv, const char *buf, size_t len); +static void parse_qemu_version (guestfs_h *g, + struct backend_direct_data *data); +static void read_all (guestfs_h *g, void *retv, const char *buf, + size_t len); /* Test qemu binary (or wrapper) runs, and do 'qemu -help' so we know * the version of qemu what options this qemu supports. @@ -960,7 +975,7 @@ test_qemu (guestfs_h *g, struct backend_direct_data *data) guestfs_int_cmd_add_arg (cmd1, "none"); guestfs_int_cmd_add_arg (cmd1, "-help"); guestfs_int_cmd_set_stdout_callback (cmd1, read_all, &data->qemu_help, - CMD_STDOUT_FLAG_WHOLE_BUFFER); + CMD_STDOUT_FLAG_WHOLE_BUFFER); r = guestfs_int_cmd_run (cmd1); if (r == -1 || !WIFEXITED (r) || WEXITSTATUS (r) != 0) goto error; @@ -975,20 +990,20 @@ test_qemu (guestfs_h *g, struct backend_direct_data *data) #ifdef MACHINE_TYPE MACHINE_TYPE "," #endif - "accel=kvm:tcg"); + "accel=kvm:tcg"); guestfs_int_cmd_add_arg (cmd2, "-device"); guestfs_int_cmd_add_arg (cmd2, "?"); guestfs_int_cmd_clear_capture_errors (cmd2); guestfs_int_cmd_set_stderr_to_stdout (cmd2); guestfs_int_cmd_set_stdout_callback (cmd2, read_all, &data->qemu_devices, - CMD_STDOUT_FLAG_WHOLE_BUFFER); + CMD_STDOUT_FLAG_WHOLE_BUFFER); r = guestfs_int_cmd_run (cmd2); if (r == -1 || !WIFEXITED (r) || WEXITSTATUS (r) != 0) goto error; return 0; - error: +error: if (r == -1) return -1; @@ -1014,7 +1029,9 @@ parse_qemu_version (guestfs_h *g, struct backend_direct_data *data) if (!match2 (g, data->qemu_help, re_major_minor, &major_s, &minor_s)) { parse_failed: - debug (g, "%s: failed to parse qemu version string from the first line of the output of '%s -help'. When reporting this bug please include the -help output.", + debug (g, "%s: failed to parse qemu version string from the first line " + "of the output of '%s -help'. When reporting this bug " + "please include the -help output.", __func__, g->hv); return; } @@ -1112,7 +1129,7 @@ qemu_supports_virtio_scsi (guestfs_h *g, struct backend_direct_data *data) if (!data->qemu_help) { if (test_qemu (g, data) == -1) - return 0; /* safe option? */ + return 0; /* safe option? */ } /* data->virtio_scsi has these values: @@ -1147,7 +1164,7 @@ qemu_escape_param (guestfs_h *g, const char *param) size_t i, len = strlen (param); char *p, *ret; - ret = p = safe_malloc (g, len*2 + 1); /* max length of escaped name*/ + ret = p = safe_malloc (g, len * 2 + 1); /* max length of escaped name*/ for (i = 0; i < len; ++i) { *p++ = param[i]; if (param[i] == ',') @@ -1160,11 +1177,10 @@ qemu_escape_param (guestfs_h *g, const char *param) static char * make_uri (guestfs_h *g, const char *scheme, const char *user, - const char *password, - struct drive_server *server, const char *path) + const char *password, struct drive_server *server, + const char *path) { - xmlURI uri = { .scheme = (char *) scheme, - .user = (char *) user }; + xmlURI uri = {.scheme = (char *)scheme, .user = (char *)user }; CLEANUP_FREE char *query = NULL; CLEANUP_FREE char *pathslash = NULL; CLEANUP_FREE char *userauth = NULL; @@ -1173,13 +1189,13 @@ make_uri (guestfs_h *g, const char *scheme, const char *user, if (path != NULL && path[0] != '/') { pathslash = safe_asprintf (g, "/%s", path); uri.path = pathslash; - } - else - uri.path = (char *) path; + } else + uri.path = (char *)path; /* Rebuild user:password. */ if (user != NULL && password != NULL) { - /* Keep the string in an own variable so it can be freed automatically. */ + /* Keep the string in an own variable so it can be freed automatically. + */ userauth = safe_asprintf (g, "%s:%s", user, password); uri.user = userauth; } @@ -1196,7 +1212,7 @@ make_uri (guestfs_h *g, const char *scheme, const char *user, break; } - return (char *) xmlSaveUri (&uri); + return (char *)xmlSaveUri (&uri); } /* Useful function to format a drive + protocol for qemu. Also shared @@ -1207,7 +1223,8 @@ make_uri (guestfs_h *g, const char *scheme, const char *user, * part of a full -drive parameter (but not for qemu-img). */ char * -guestfs_int_drive_source_qemu_param (guestfs_h *g, const struct drive_source *src) +guestfs_int_drive_source_qemu_param (guestfs_h *g, + const struct drive_source *src) { char *path; @@ -1229,8 +1246,8 @@ guestfs_int_drive_source_qemu_param (guestfs_h *g, const struct drive_source *sr return path; case drive_protocol_ftp: - return make_uri (g, "ftp", src->username, src->secret, - &src->servers[0], src->u.exportname); + return make_uri (g, "ftp", src->username, src->secret, &src->servers[0], + src->u.exportname); case drive_protocol_ftps: return make_uri (g, "ftps", src->username, src->secret, @@ -1239,14 +1256,14 @@ guestfs_int_drive_source_qemu_param (guestfs_h *g, const struct drive_source *sr case drive_protocol_gluster: switch (src->servers[0].transport) { case drive_transport_none: - return make_uri (g, "gluster", NULL, NULL, - &src->servers[0], src->u.exportname); + return make_uri (g, "gluster", NULL, NULL, &src->servers[0], + src->u.exportname); case drive_transport_tcp: - return make_uri (g, "gluster+tcp", NULL, NULL, - &src->servers[0], src->u.exportname); + return make_uri (g, "gluster+tcp", NULL, NULL, &src->servers[0], + src->u.exportname); case drive_transport_unix: - return make_uri (g, "gluster+unix", NULL, NULL, - &src->servers[0], NULL); + return make_uri (g, "gluster+unix", NULL, NULL, &src->servers[0], + NULL); } case drive_protocol_http: @@ -1264,22 +1281,20 @@ guestfs_int_drive_source_qemu_param (guestfs_h *g, const struct drive_source *sr char port_str[16]; char *ret; - escaped_hostname = - (char *) xmlURIEscapeStr(BAD_CAST src->servers[0].u.hostname, - BAD_CAST ""); + escaped_hostname = (char *)xmlURIEscapeStr ( + BAD_CAST src->servers[0].u.hostname, BAD_CAST ""); /* The target string must keep slash as it is, as exportname contains * "iqn/lun". */ escaped_target = - (char *) xmlURIEscapeStr(BAD_CAST src->u.exportname, BAD_CAST "/"); + (char *)xmlURIEscapeStr (BAD_CAST src->u.exportname, BAD_CAST "/"); if (src->username != NULL && src->secret != NULL) userauth = safe_asprintf (g, "%s%%%s@", src->username, src->secret); if (src->servers[0].port != 0) snprintf (port_str, sizeof port_str, ":%d", src->servers[0].port); ret = safe_asprintf (g, "iscsi://%s%s%s/%s", - userauth != NULL ? userauth : "", - escaped_hostname, + userauth != NULL ? userauth : "", escaped_hostname, src->servers[0].port != 0 ? port_str : "", escaped_target); @@ -1293,8 +1308,8 @@ guestfs_int_drive_source_qemu_param (guestfs_h *g, const struct drive_source *sr switch (src->servers[0].transport) { case drive_transport_none: case drive_transport_tcp: - p = safe_asprintf (g, "nbd:%s:%d", - src->servers[0].u.hostname, src->servers[0].port); + p = safe_asprintf (g, "nbd:%s:%d", src->servers[0].u.hostname, + src->servers[0].port); break; case drive_transport_unix: p = safe_asprintf (g, "nbd:unix:%s", src->servers[0].u.socket); @@ -1352,26 +1367,24 @@ guestfs_int_drive_source_qemu_param (guestfs_h *g, const struct drive_source *sr else auth = ":auth_supported=none"; - return safe_asprintf (g, "rbd:%s%s%s%s%s%s", - src->u.exportname, + return safe_asprintf (g, "rbd:%s%s%s%s%s%s", src->u.exportname, src->nr_servers > 0 ? ":mon_host=" : "", src->nr_servers > 0 ? mon_host : "", - username ? username : "", - auth, + username ? username : "", auth, secret ? secret : ""); } case drive_protocol_sheepdog: if (src->nr_servers == 0) return safe_asprintf (g, "sheepdog:%s", src->u.exportname); - else /* XXX How to pass multiple hosts? */ + else /* XXX How to pass multiple hosts? */ return safe_asprintf (g, "sheepdog:%s:%d:%s", - src->servers[0].u.hostname, src->servers[0].port, - src->u.exportname); + src->servers[0].u.hostname, + src->servers[0].port, src->u.exportname); case drive_protocol_ssh: - return make_uri (g, "ssh", src->username, src->secret, - &src->servers[0], src->u.exportname); + return make_uri (g, "ssh", src->username, src->secret, &src->servers[0], + src->u.exportname); case drive_protocol_tftp: return make_uri (g, "tftp", src->username, src->secret, @@ -1392,7 +1405,7 @@ guestfs_int_drive_source_qemu_param (guestfs_h *g, const struct drive_source *sr */ bool guestfs_int_discard_possible (guestfs_h *g, struct drive *drv, - unsigned long qemu_version) + unsigned long qemu_version) { /* qemu >= 1.5. This was the first version that supported the * discard option on -drive at all. @@ -1404,18 +1417,16 @@ guestfs_int_discard_possible (guestfs_h *g, struct drive *drv, bool qemu16 = qemu_version >= 1006000; if (!qemu15) - NOT_SUPPORTED (g, false, - _("discard cannot be enabled on this drive: " - "qemu < 1.5")); + NOT_SUPPORTED (g, false, _("discard cannot be enabled on this drive: " + "qemu < 1.5")); /* If it's an overlay, discard is not possible (on the underlying * file). This has probably been caught earlier since we already * checked that the drive is !readonly. Nevertheless ... */ if (drv->overlay) - NOT_SUPPORTED (g, false, - _("discard cannot be enabled on this drive: " - "the drive has a read-only overlay")); + NOT_SUPPORTED (g, false, _("discard cannot be enabled on this drive: " + "the drive has a read-only overlay")); /* Look at the source format. */ if (drv->src.format == NULL) { @@ -1423,27 +1434,25 @@ guestfs_int_discard_possible (guestfs_h *g, struct drive *drv, NOT_SUPPORTED (g, false, _("discard cannot be enabled on this drive: " "you have to specify the format of the file")); - } - else if (STREQ (drv->src.format, "raw")) - /* OK */ ; + } else if (STREQ (drv->src.format, "raw")) + /* OK */; else if (STREQ (drv->src.format, "qcow2")) { if (!qemu16) NOT_SUPPORTED (g, false, _("discard cannot be enabled on this drive: " "qemu < 1.6 cannot do discard on qcow2 files")); - } - else { + } else { /* It's possible in future other formats will support discard, but * currently (qemu 1.7) none of them do. */ - NOT_SUPPORTED (g, false, - _("discard cannot be enabled on this drive: " - "qemu does not support discard for '%s' format files"), - drv->src.format); + NOT_SUPPORTED ( + g, false, _("discard cannot be enabled on this drive: " + "qemu does not support discard for '%s' format files"), + drv->src.format); } switch (drv->src.protocol) { - /* Protocols which support discard. */ + /* Protocols which support discard. */ case drive_protocol_file: case drive_protocol_gluster: case drive_protocol_iscsi: @@ -1452,17 +1461,17 @@ guestfs_int_discard_possible (guestfs_h *g, struct drive *drv, case drive_protocol_sheepdog: /* XXX depends on server version */ break; - /* Protocols which don't support discard. */ + /* Protocols which don't support discard. */ case drive_protocol_ftp: case drive_protocol_ftps: case drive_protocol_http: case drive_protocol_https: case drive_protocol_ssh: case drive_protocol_tftp: - NOT_SUPPORTED (g, -1, - _("discard cannot be enabled on this drive: " - "protocol '%s' does not support discard"), - guestfs_int_drive_protocol_to_string (drv->src.protocol)); + NOT_SUPPORTED ( + g, -1, _("discard cannot be enabled on this drive: " + "protocol '%s' does not support discard"), + guestfs_int_drive_protocol_to_string (drv->src.protocol)); } return true; @@ -1480,20 +1489,21 @@ shutdown_direct (guestfs_h *g, void *datav, int check_for_errors) debug (g, "sending SIGTERM to process %d", data->pid); kill (data->pid, SIGTERM); } - if (data->recoverypid > 0) kill (data->recoverypid, 9); + if (data->recoverypid > 0) + kill (data->recoverypid, 9); /* Wait for subprocess(es) to exit. */ if (g->recovery_proc /* RHBZ#998482 */ && data->pid > 0) { if (waitpid (data->pid, &status, 0) == -1) { perrorf (g, "waitpid (qemu)"); ret = -1; - } - else if (!WIFEXITED (status) || WEXITSTATUS (status) != 0) { + } else if (!WIFEXITED (status) || WEXITSTATUS (status) != 0) { guestfs_int_external_command_failed (g, status, g->hv, NULL); ret = -1; } } - if (data->recoverypid > 0) waitpid (data->recoverypid, NULL, 0); + if (data->recoverypid > 0) + waitpid (data->recoverypid, NULL, 0); data->pid = data->recoverypid = 0; @@ -1532,7 +1542,7 @@ max_disks_direct (guestfs_h *g, void *datav) if (qemu_supports_virtio_scsi (g, data)) return 255; else - return 27; /* conservative estimate */ + return 27; /* conservative estimate */ } static struct backend_ops backend_direct_ops = { diff --git a/src/launch-libvirt.c b/src/launch-libvirt.c index 7331acc..f2b7226 100644 --- a/src/launch-libvirt.c +++ b/src/launch-libvirt.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include <config.h> @@ -31,7 +32,7 @@ #include <assert.h> #include <string.h> #include <libintl.h> -#include <sys/un.h> /* sockaddr_un */ +#include <sys/un.h> /* sockaddr_un */ #ifdef HAVE_LIBVIRT #include <libvirt/virterror.h> @@ -53,10 +54,10 @@ /* Fixes for Mac OS X */ #ifndef SOCK_CLOEXEC -# define SOCK_CLOEXEC O_CLOEXEC +#define SOCK_CLOEXEC O_CLOEXEC #endif #ifndef SOCK_NONBLOCK -# define SOCK_NONBLOCK O_NONBLOCK +#define SOCK_NONBLOCK O_NONBLOCK #endif /* End of fixes for Mac OS X */ @@ -86,12 +87,13 @@ xmlBufferDetach (xmlBufferPtr buf) #endif #ifdef HAVE_ATTRIBUTE_CLEANUP -#define CLEANUP_VIRSECRETFREE __attribute__((cleanup(cleanup_virSecretFree))) +#define CLEANUP_VIRSECRETFREE \ + __attribute__ ((cleanup (cleanup_virSecretFree))) static void cleanup_virSecretFree (void *ptr) { - virSecretPtr secret_obj = * (virSecretPtr *) ptr; + virSecretPtr secret_obj = *(virSecretPtr *)ptr; if (secret_obj) virSecretFree (secret_obj); } @@ -101,27 +103,29 @@ cleanup_virSecretFree (void *ptr) #endif /* List used to store a mapping of secret to libvirt secret UUID. */ -struct secret { +struct secret +{ char *secret; char uuid[VIR_UUID_STRING_BUFLEN]; }; -#define DOMAIN_NAME_LEN (8+16+1) /* "guestfs-" + random + \0 */ +#define DOMAIN_NAME_LEN (8 + 16 + 1) /* "guestfs-" + random + \0 */ /* Per-handle data. */ -struct backend_libvirt_data { - virConnectPtr conn; /* libvirt connection */ - virDomainPtr dom; /* libvirt domain */ +struct backend_libvirt_data +{ + virConnectPtr conn; /* libvirt connection */ + virDomainPtr dom; /* libvirt domain */ char *selinux_label; char *selinux_imagelabel; bool selinux_norelabel_disks; char *network_bridge; - char name[DOMAIN_NAME_LEN]; /* random name */ - bool is_kvm; /* false = qemu, true = kvm (from capabilities)*/ - unsigned long qemu_version; /* qemu version (from libvirt) */ - struct secret *secrets; /* list of secrets */ + char name[DOMAIN_NAME_LEN]; /* random name */ + bool is_kvm; /* false = qemu, true = kvm (from capabilities)*/ + unsigned long qemu_version; /* qemu version (from libvirt) */ + struct secret *secrets; /* list of secrets */ size_t nr_secrets; - char *uefi_code; /* UEFI (firmware) code and variables. */ + char *uefi_code; /* UEFI (firmware) code and variables. */ char *uefi_vars; char guestfsd_path[UNIX_PATH_MAX]; /* paths to sockets */ char console_path[UNIX_PATH_MAX]; @@ -130,26 +134,39 @@ struct backend_libvirt_data { /* Parameters passed to construct_libvirt_xml and subfunctions. We * keep them all in a structure for convenience! */ -struct libvirt_xml_params { +struct libvirt_xml_params +{ struct backend_libvirt_data *data; - char *kernel; /* paths to kernel and initrd */ + char *kernel; /* paths to kernel and initrd */ char *initrd; - char *appliance_overlay; /* path to qcow2 overlay backed by appliance */ - char appliance_dev[64]; /* appliance device name */ - size_t appliance_index; /* index of appliance */ - bool enable_svirt; /* false if we decided to disable sVirt */ - bool current_proc_is_root; /* true = euid is root */ + char *appliance_overlay; /* path to qcow2 overlay backed by appliance */ + char appliance_dev[64]; /* appliance device name */ + size_t appliance_index; /* index of appliance */ + bool enable_svirt; /* false if we decided to disable sVirt */ + bool current_proc_is_root; /* true = euid is root */ }; -static int parse_capabilities (guestfs_h *g, const char *capabilities_xml, struct backend_libvirt_data *data); -static int add_secret (guestfs_h *g, virConnectPtr conn, struct backend_libvirt_data *data, const struct drive *drv); -static int find_secret (guestfs_h *g, const struct backend_libvirt_data *data, const struct drive *drv, const char **type, const char **uuid); -static int have_secret (guestfs_h *g, const struct backend_libvirt_data *data, const struct drive *drv); -static xmlChar *construct_libvirt_xml (guestfs_h *g, const struct libvirt_xml_params *params); +static int parse_capabilities (guestfs_h *g, const char *capabilities_xml, + struct backend_libvirt_data *data); +static int add_secret (guestfs_h *g, virConnectPtr conn, + struct backend_libvirt_data *data, + const struct drive *drv); +static int find_secret (guestfs_h *g, + const struct backend_libvirt_data *data, + const struct drive *drv, const char **type, + const char **uuid); +static int have_secret (guestfs_h *g, + const struct backend_libvirt_data *data, + const struct drive *drv); +static xmlChar * +construct_libvirt_xml (guestfs_h *g, + const struct libvirt_xml_params *params); static void debug_appliance_permissions (guestfs_h *g); static void debug_socket_permissions (guestfs_h *g); -static void libvirt_error (guestfs_h *g, const char *fs, ...) __attribute__((format (printf,2,3))); -static void libvirt_debug (guestfs_h *g, const char *fs, ...) __attribute__((format (printf,2,3))); +static void libvirt_error (guestfs_h *g, const char *fs, ...) + __attribute__ ((format (printf, 2, 3))); +static void libvirt_debug (guestfs_h *g, const char *fs, ...) + __attribute__ ((format (printf, 2, 3))); static int is_custom_hv (guestfs_h *g); static int is_blk (const char *path); static void ignore_errors (void *ignore, virErrorPtr ignore2); @@ -158,7 +175,8 @@ static void clear_socket_create_context (guestfs_h *g); static int check_bridge_exists (guestfs_h *g, const char *brname); #if HAVE_LIBSELINUX -static void selinux_warning (guestfs_h *g, const char *func, const char *selinux_op, const char *data); +static void selinux_warning (guestfs_h *g, const char *func, + const char *selinux_op, const char *data); #endif static char * @@ -212,14 +230,14 @@ create_cow_overlay_libvirt (guestfs_h *g, void *datav, struct drive *drv) guestfs_push_error_handler (g, NULL, NULL); free (data->selinux_imagelabel); data->selinux_imagelabel = - guestfs_get_backend_setting (g, "internal_libvirt_imagelabel"); + guestfs_get_backend_setting (g, "internal_libvirt_imagelabel"); guestfs_pop_error_handler (g); if (data->selinux_imagelabel) { - debug (g, "setting SELinux label on %s to %s", - overlay, data->selinux_imagelabel); + debug (g, "setting SELinux label on %s to %s", overlay, + data->selinux_imagelabel); if (setfilecon (overlay, - (security_context_t) data->selinux_imagelabel) == -1) + (security_context_t)data->selinux_imagelabel) == -1) selinux_warning (g, __func__, "setfilecon", overlay); } #endif @@ -240,10 +258,7 @@ launch_libvirt (guestfs_h *g, void *datav, const char *libvirt_uri) virDomainPtr dom = NULL; CLEANUP_FREE char *capabilities_xml = NULL; struct libvirt_xml_params params = { - .data = data, - .kernel = NULL, - .initrd = NULL, - .appliance_overlay = NULL, + .data = data, .kernel = NULL, .initrd = NULL, .appliance_overlay = NULL, }; CLEANUP_FREE xmlChar *xml = NULL; CLEANUP_FREE char *appliance = NULL; @@ -258,13 +273,13 @@ launch_libvirt (guestfs_h *g, void *datav, const char *libvirt_uri) /* XXX: It should be possible to make this work. */ if (g->direct_mode) { - error (g, _("direct mode flag is not supported yet for libvirt backend")); + error (g, + _("direct mode flag is not supported yet for libvirt backend")); return -1; } virGetVersion (&version, NULL, NULL); - debug (g, "libvirt version = %lu (%lu.%lu.%lu)", - version, + debug (g, "libvirt version = %lu (%lu.%lu.%lu)", version, version / 1000000UL, version / 1000UL % 1000UL, version % 1000UL); if (version < MIN_LIBVIRT_VERSION) { error (g, _("you must have libvirt >= %d.%d.%d " @@ -279,7 +294,7 @@ launch_libvirt (guestfs_h *g, void *datav, const char *libvirt_uri) /* Create a random name for the guest. */ memcpy (data->name, "guestfs-", 8); const size_t random_name_len = - DOMAIN_NAME_LEN - 8 /* "guestfs-" */ - 1 /* \0 */; + DOMAIN_NAME_LEN - 8 /* "guestfs-" */ - 1 /* \0 */; if (guestfs_int_random_string (&data->name[8], random_name_len) == -1) { perrorf (g, "guestfs_int_random_string"); return -1; @@ -289,7 +304,7 @@ launch_libvirt (guestfs_h *g, void *datav, const char *libvirt_uri) debug (g, "connect to libvirt"); /* Decode the URI string. */ - if (!libvirt_uri) { /* "libvirt" */ + if (!libvirt_uri) { /* "libvirt" */ if (!params.current_proc_is_root) libvirt_uri = "qemu:///session"; else @@ -302,7 +317,7 @@ launch_libvirt (guestfs_h *g, void *datav, const char *libvirt_uri) conn = guestfs_int_open_libvirt_connection (g, libvirt_uri, 0); if (!conn) { libvirt_error (g, _("could not connect to libvirt (URI = %s)"), - libvirt_uri ? : "NULL"); + libvirt_uri ?: "NULL"); goto cleanup; } @@ -315,12 +330,10 @@ launch_libvirt (guestfs_h *g, void *datav, const char *libvirt_uri) /* Get hypervisor (hopefully qemu) version. */ if (virConnectGetVersion (conn, &data->qemu_version) == 0) { debug (g, "qemu version (reported by libvirt) = %lu (%lu.%lu.%lu)", - data->qemu_version, - data->qemu_version / 1000000UL, + data->qemu_version, data->qemu_version / 1000000UL, data->qemu_version / 1000UL % 1000UL, data->qemu_version % 1000UL); - } - else { + } else { libvirt_debug (g, "unable to read qemu version from libvirt"); data->qemu_version = 0; } @@ -350,21 +363,22 @@ launch_libvirt (guestfs_h *g, void *datav, const char *libvirt_uri) guestfs_push_error_handler (g, NULL, NULL); free (data->selinux_label); data->selinux_label = - guestfs_get_backend_setting (g, "internal_libvirt_label"); + guestfs_get_backend_setting (g, "internal_libvirt_label"); free (data->selinux_imagelabel); data->selinux_imagelabel = - guestfs_get_backend_setting (g, "internal_libvirt_imagelabel"); - data->selinux_norelabel_disks = - guestfs_int_get_backend_setting_bool (g, "internal_libvirt_norelabel_disks"); + guestfs_get_backend_setting (g, "internal_libvirt_imagelabel"); + data->selinux_norelabel_disks = guestfs_int_get_backend_setting_bool ( + g, "internal_libvirt_norelabel_disks"); if (g->enable_network) { data->network_bridge = - guestfs_get_backend_setting (g, "network_bridge"); + guestfs_get_backend_setting (g, "network_bridge"); if (!data->network_bridge) data->network_bridge = safe_strdup (g, "virbr0"); } guestfs_pop_error_handler (g); - if (g->enable_network && check_bridge_exists (g, data->network_bridge) == -1) + if (g->enable_network && + check_bridge_exists (g, data->network_bridge) == -1) goto cleanup; /* Locate and/or build the appliance. */ @@ -397,7 +411,7 @@ launch_libvirt (guestfs_h *g, void *datav, const char *libvirt_uri) set_socket_create_context (g); - daemon_accept_sock = socket (AF_UNIX, SOCK_STREAM|SOCK_CLOEXEC, 0); + daemon_accept_sock = socket (AF_UNIX, SOCK_STREAM | SOCK_CLOEXEC, 0); if (daemon_accept_sock == -1) { perrorf (g, "socket"); goto cleanup; @@ -406,8 +420,8 @@ launch_libvirt (guestfs_h *g, void *datav, const char *libvirt_uri) addr.sun_family = AF_UNIX; memcpy (addr.sun_path, data->guestfsd_path, UNIX_PATH_MAX); - if (bind (daemon_accept_sock, (struct sockaddr *) &addr, - sizeof addr) == -1) { + if (bind (daemon_accept_sock, (struct sockaddr *)&addr, sizeof addr) == + -1) { perrorf (g, "bind"); goto cleanup; } @@ -422,7 +436,7 @@ launch_libvirt (guestfs_h *g, void *datav, const char *libvirt_uri) &data->console_path) == -1) goto cleanup; - console_sock = socket (AF_UNIX, SOCK_STREAM|SOCK_CLOEXEC, 0); + console_sock = socket (AF_UNIX, SOCK_STREAM | SOCK_CLOEXEC, 0); if (console_sock == -1) { perrorf (g, "socket"); goto cleanup; @@ -431,7 +445,7 @@ launch_libvirt (guestfs_h *g, void *datav, const char *libvirt_uri) addr.sun_family = AF_UNIX; memcpy (addr.sun_path, data->console_path, UNIX_PATH_MAX); - if (bind (console_sock, (struct sockaddr *) &addr, sizeof addr) == -1) { + if (bind (console_sock, (struct sockaddr *)&addr, sizeof addr) == -1) { perrorf (g, "bind"); goto cleanup; } @@ -493,7 +507,8 @@ launch_libvirt (guestfs_h *g, void *datav, const char *libvirt_uri) /* Store any secrets in libvirtd, keeping a mapping from the secret * to its UUID. */ - ITER_DRIVES (g, i, drv) { + ITER_DRIVES (g, i, drv) + { if (add_secret (g, conn, data, drv) == -1) goto cleanup; } @@ -504,7 +519,7 @@ launch_libvirt (guestfs_h *g, void *datav, const char *libvirt_uri) params.appliance_index = g->nr_drives; strcpy (params.appliance_dev, "/dev/sd"); guestfs_int_drive_name (params.appliance_index, ¶ms.appliance_dev[7]); - params.enable_svirt = ! is_custom_hv (g); + params.enable_svirt = !is_custom_hv (g); xml = construct_libvirt_xml (g, ¶ms); if (!xml) @@ -519,22 +534,23 @@ launch_libvirt (guestfs_h *g, void *datav, const char *libvirt_uri) /* Launch the libvirt guest. */ debug (g, "launch libvirt guest"); - dom = virDomainCreateXML (conn, (char *) xml, VIR_DOMAIN_START_AUTODESTROY); + dom = + virDomainCreateXML (conn, (char *)xml, VIR_DOMAIN_START_AUTODESTROY); if (!dom) { - libvirt_error (g, _( - "could not create appliance through libvirt.\n" - "\n" - "Try running qemu directly without libvirt using this environment variable:\n" - "export LIBGUESTFS_BACKEND=direct\n" - "\n" - "Original error from libvirt")); + libvirt_error (g, _("could not create appliance through libvirt.\n" + "\n" + "Try running qemu directly without libvirt using " + "this environment variable:\n" + "export LIBGUESTFS_BACKEND=direct\n" + "\n" + "Original error from libvirt")); goto cleanup; } g->state = LAUNCHING; /* Wait for console socket to be opened (by qemu). */ - r = accept4 (console_sock, NULL, NULL, SOCK_NONBLOCK|SOCK_CLOEXEC); + r = accept4 (console_sock, NULL, NULL, SOCK_NONBLOCK | SOCK_CLOEXEC); if (r == -1) { perrorf (g, "accept"); goto cleanup; @@ -545,13 +561,13 @@ launch_libvirt (guestfs_h *g, void *datav, const char *libvirt_uri) close (r); goto cleanup; } - console_sock = r; /* This is the accepted console socket. */ + console_sock = r; /* This is the accepted console socket. */ /* Wait for libvirt domain to start and to connect back to us via * virtio-serial and send the GUESTFS_LAUNCH_FLAG message. */ - g->conn = - guestfs_int_new_conn_socket_listening (g, daemon_accept_sock, console_sock); + g->conn = guestfs_int_new_conn_socket_listening (g, daemon_accept_sock, + console_sock); if (!g->conn) goto cleanup; @@ -613,7 +629,7 @@ launch_libvirt (guestfs_h *g, void *datav, const char *libvirt_uri) return 0; - cleanup: +cleanup: clear_socket_create_context (g); if (console_sock >= 0) @@ -654,8 +670,8 @@ parse_capabilities (guestfs_h *g, const char *capabilities_xml, size_t seen_qemu, seen_kvm; int force_tcg; - doc = xmlReadMemory (capabilities_xml, strlen (capabilities_xml), - NULL, NULL, XML_PARSE_NONET); + doc = xmlReadMemory (capabilities_xml, strlen (capabilities_xml), NULL, + NULL, XML_PARSE_NONET); if (doc == NULL) { error (g, _("unable to parse capabilities XML returned by libvirt")); return -1; @@ -667,9 +683,9 @@ parse_capabilities (guestfs_h *g, const char *capabilities_xml, return -1; } - /* This gives us a set of all the supported domain types. - * XXX It ignores architecture, but let's not worry about that. - */ +/* This gives us a set of all the supported domain types. + * XXX It ignores architecture, but let's not worry about that. + */ #define XPATH_EXPR "/capabilities/guest/arch/domain/@type" xpathObj = xmlXPathEvalExpression (BAD_CAST XPATH_EXPR, xpathCtx); if (xpathObj == NULL) { @@ -682,7 +698,7 @@ parse_capabilities (guestfs_h *g, const char *capabilities_xml, seen_qemu = seen_kvm = 0; if (nodes != NULL) { - for (i = 0; i < (size_t) nodes->nodeNr; ++i) { + for (i = 0; i < (size_t)nodes->nodeNr; ++i) { CLEANUP_FREE char *type = NULL; if (seen_qemu && seen_kvm) @@ -690,8 +706,8 @@ parse_capabilities (guestfs_h *g, const char *capabilities_xml, assert (nodes->nodeTab[i]); assert (nodes->nodeTab[i]->type == XML_ATTRIBUTE_NODE); - attr = (xmlAttrPtr) nodes->nodeTab[i]; - type = (char *) xmlNodeListGetString (doc, attr->children, 1); + attr = (xmlAttrPtr)nodes->nodeTab[i]; + type = (char *)xmlNodeListGetString (doc, attr->children, 1); if (STREQ (type, "qemu")) seen_qemu++; @@ -707,18 +723,21 @@ parse_capabilities (guestfs_h *g, const char *capabilities_xml, if (!seen_qemu && !seen_kvm) { CLEANUP_FREE char *backend = guestfs_get_backend (g); - error (g, - _("libvirt hypervisor doesn't support qemu or KVM,\n" - "so we cannot create the libguestfs appliance.\n" - "The current backend is '%s'.\n" - "Check that the PATH environment variable is set and contains\n" - "the path to the qemu ('qemu-system-*') or KVM ('qemu-kvm', 'kvm' etc).\n" - "Or: try setting:\n" - " export LIBGUESTFS_BACKEND=libvirt:qemu:///session\n" - "Or: if you want to have libguestfs run qemu directly, try:\n" - " export LIBGUESTFS_BACKEND=direct\n" - "For further help, read the guestfs(3) man page and libguestfs FAQ."), - backend); + error ( + g, + _("libvirt hypervisor doesn't support qemu or KVM,\n" + "so we cannot create the libguestfs appliance.\n" + "The current backend is '%s'.\n" + "Check that the PATH environment variable is set and contains\n" + "the path to the qemu ('qemu-system-*') or KVM ('qemu-kvm', " + "'kvm' etc).\n" + "Or: try setting:\n" + " export LIBGUESTFS_BACKEND=libvirt:qemu:///session\n" + "Or: if you want to have libguestfs run qemu directly, try:\n" + " export LIBGUESTFS_BACKEND=direct\n" + "For further help, read the guestfs(3) man page and libguestfs " + "FAQ."), + backend); return -1; } @@ -783,9 +802,9 @@ set_socket_create_context (guestfs_h *g) goto out2; } - out2: +out2: context_free (con); - out1: +out1: freecon (scon); } @@ -813,7 +832,8 @@ clear_socket_create_context (guestfs_h *g) #endif /* !HAVE_LIBSELINUX */ static void -debug_permissions_cb (guestfs_h *g, void *data, const char *line, size_t len) +debug_permissions_cb (guestfs_h *g, void *data, const char *line, + size_t len) { debug (g, "%s", line); } @@ -825,8 +845,8 @@ debug_appliance_permissions (guestfs_h *g) CLEANUP_FREE char *cachedir = guestfs_get_cachedir (g); CLEANUP_FREE char *appliance = NULL; - appliance = safe_asprintf (g, "%s/.guestfs-%ju", - cachedir, (uintmax_t) geteuid ()); + appliance = + safe_asprintf (g, "%s/.guestfs-%ju", cachedir, (uintmax_t)geteuid ()); guestfs_int_cmd_add_arg (cmd, "ls"); guestfs_int_cmd_add_arg (cmd, "-a"); @@ -849,26 +869,67 @@ debug_socket_permissions (guestfs_h *g) guestfs_int_cmd_add_arg (cmd, "-l"); guestfs_int_cmd_add_arg (cmd, "-Z"); guestfs_int_cmd_add_arg (cmd, g->sockdir); - guestfs_int_cmd_set_stdout_callback (cmd, debug_permissions_cb, NULL, 0); + guestfs_int_cmd_set_stdout_callback (cmd, debug_permissions_cb, NULL, + 0); guestfs_int_cmd_run (cmd); } } -static int construct_libvirt_xml_domain (guestfs_h *g, const struct libvirt_xml_params *params, xmlTextWriterPtr xo); -static int construct_libvirt_xml_name (guestfs_h *g, const struct libvirt_xml_params *params, xmlTextWriterPtr xo); -static int construct_libvirt_xml_cpu (guestfs_h *g, const struct libvirt_xml_params *params, xmlTextWriterPtr xo); -static int construct_libvirt_xml_boot (guestfs_h *g, const struct libvirt_xml_params *params, xmlTextWriterPtr xo); -static int construct_libvirt_xml_seclabel (guestfs_h *g, const struct libvirt_xml_params *params, xmlTextWriterPtr xo); -static int construct_libvirt_xml_lifecycle (guestfs_h *g, const struct libvirt_xml_params *params, xmlTextWriterPtr xo); -static int construct_libvirt_xml_devices (guestfs_h *g, const struct libvirt_xml_params *params, xmlTextWriterPtr xo); -static int construct_libvirt_xml_qemu_cmdline (guestfs_h *g, const struct libvirt_xml_params *params, xmlTextWriterPtr xo); -static int construct_libvirt_xml_disk (guestfs_h *g, const struct backend_libvirt_data *data, xmlTextWriterPtr xo, struct drive *drv, size_t drv_index); -static int construct_libvirt_xml_disk_target (guestfs_h *g, xmlTextWriterPtr xo, size_t drv_index); -static int construct_libvirt_xml_disk_driver_qemu (guestfs_h *g, const struct backend_libvirt_data *data, struct drive *drv, xmlTextWriterPtr xo, const char *format, const char *cachemode, enum discard discard, bool copyonread); -static int construct_libvirt_xml_disk_address (guestfs_h *g, xmlTextWriterPtr xo, size_t drv_index); -static int construct_libvirt_xml_disk_source_hosts (guestfs_h *g, xmlTextWriterPtr xo, const struct drive_source *src); -static int construct_libvirt_xml_disk_source_seclabel (guestfs_h *g, const struct backend_libvirt_data *data, xmlTextWriterPtr xo); -static int construct_libvirt_xml_appliance (guestfs_h *g, const struct libvirt_xml_params *params, xmlTextWriterPtr xo); +static int +construct_libvirt_xml_domain (guestfs_h *g, + const struct libvirt_xml_params *params, + xmlTextWriterPtr xo); +static int +construct_libvirt_xml_name (guestfs_h *g, + const struct libvirt_xml_params *params, + xmlTextWriterPtr xo); +static int +construct_libvirt_xml_cpu (guestfs_h *g, + const struct libvirt_xml_params *params, + xmlTextWriterPtr xo); +static int +construct_libvirt_xml_boot (guestfs_h *g, + const struct libvirt_xml_params *params, + xmlTextWriterPtr xo); +static int +construct_libvirt_xml_seclabel (guestfs_h *g, + const struct libvirt_xml_params *params, + xmlTextWriterPtr xo); +static int +construct_libvirt_xml_lifecycle (guestfs_h *g, + const struct libvirt_xml_params *params, + xmlTextWriterPtr xo); +static int +construct_libvirt_xml_devices (guestfs_h *g, + const struct libvirt_xml_params *params, + xmlTextWriterPtr xo); +static int +construct_libvirt_xml_qemu_cmdline (guestfs_h *g, + const struct libvirt_xml_params *params, + xmlTextWriterPtr xo); +static int construct_libvirt_xml_disk ( + guestfs_h *g, const struct backend_libvirt_data *data, + xmlTextWriterPtr xo, struct drive *drv, size_t drv_index); +static int construct_libvirt_xml_disk_target (guestfs_h *g, + xmlTextWriterPtr xo, + size_t drv_index); +static int construct_libvirt_xml_disk_driver_qemu ( + guestfs_h *g, const struct backend_libvirt_data *data, + struct drive *drv, xmlTextWriterPtr xo, const char *format, + const char *cachemode, enum discard discard, bool copyonread); +static int construct_libvirt_xml_disk_address (guestfs_h *g, + xmlTextWriterPtr xo, + size_t drv_index); +static int +construct_libvirt_xml_disk_source_hosts (guestfs_h *g, xmlTextWriterPtr xo, + const struct drive_source *src); +static int construct_libvirt_xml_disk_source_seclabel ( + guestfs_h *g, const struct backend_libvirt_data *data, + xmlTextWriterPtr xo); +static int +construct_libvirt_xml_appliance (guestfs_h *g, + const struct libvirt_xml_params *params, + xmlTextWriterPtr xo); /* These macros make it easier to write XML, but they also make a lot * of assumptions: @@ -884,71 +945,78 @@ static int construct_libvirt_xml_appliance (guestfs_h *g, const struct libvirt_x */ /* <element */ -#define start_element(element) \ - if (xmlTextWriterStartElement (xo, BAD_CAST (element)) == -1) { \ - xml_error ("xmlTextWriterStartElement"); \ - return -1; \ - } \ +#define start_element(element) \ + if (xmlTextWriterStartElement (xo, BAD_CAST (element)) == -1) { \ + xml_error ("xmlTextWriterStartElement"); \ + return -1; \ + } \ do /* finish current </element> */ -#define end_element() \ - while (0); \ - do { \ - if (xmlTextWriterEndElement (xo) == -1) { \ - xml_error ("xmlTextWriterEndElement"); \ - return -1; \ - } \ +#define end_element() \ + while (0) \ + ; \ + do { \ + if (xmlTextWriterEndElement (xo) == -1) { \ + xml_error ("xmlTextWriterEndElement"); \ + return -1; \ + } \ } while (0) /* <element/> */ -#define empty_element(element) \ - do { start_element(element) {} end_element (); } while (0) +#define empty_element(element) \ + do { \ + start_element (element) {} \ + end_element (); \ + } while (0) /* key=value attribute of the current element. */ -#define attribute(key,value) \ - if (xmlTextWriterWriteAttribute (xo, BAD_CAST (key), BAD_CAST (value)) == -1){ \ - xml_error ("xmlTextWriterWriteAttribute"); \ - return -1; \ +#define attribute(key, value) \ + if (xmlTextWriterWriteAttribute (xo, BAD_CAST (key), \ + BAD_CAST (value)) == -1) { \ + xml_error ("xmlTextWriterWriteAttribute"); \ + return -1; \ } /* key=value, but value is a printf-style format string. */ -#define attribute_format(key,fs,...) \ - if (xmlTextWriterWriteFormatAttribute (xo, BAD_CAST (key), \ - fs, ##__VA_ARGS__) == -1) { \ - xml_error ("xmlTextWriterWriteFormatAttribute"); \ - return -1; \ +#define attribute_format(key, fs, ...) \ + if (xmlTextWriterWriteFormatAttribute (xo, BAD_CAST (key), fs, \ + ##__VA_ARGS__) == -1) { \ + xml_error ("xmlTextWriterWriteFormatAttribute"); \ + return -1; \ } /* attribute with namespace. */ -#define attribute_ns(prefix,key,namespace_uri,value) \ - if (xmlTextWriterWriteAttributeNS (xo, BAD_CAST (prefix), \ - BAD_CAST (key), BAD_CAST (namespace_uri), \ - BAD_CAST (value)) == -1) { \ - xml_error ("xmlTextWriterWriteAttribute"); \ - return -1; \ +#define attribute_ns(prefix, key, namespace_uri, value) \ + if (xmlTextWriterWriteAttributeNS ( \ + xo, BAD_CAST (prefix), BAD_CAST (key), BAD_CAST (namespace_uri), \ + BAD_CAST (value)) == -1) { \ + xml_error ("xmlTextWriterWriteAttribute"); \ + return -1; \ } /* A string, eg. within an element. */ -#define string(str) \ - if (xmlTextWriterWriteString (xo, BAD_CAST (str)) == -1) { \ - xml_error ("xmlTextWriterWriteString"); \ - return -1; \ +#define string(str) \ + if (xmlTextWriterWriteString (xo, BAD_CAST (str)) == -1) { \ + xml_error ("xmlTextWriterWriteString"); \ + return -1; \ } /* A string, using printf-style formatting. */ -#define string_format(fs,...) \ - if (xmlTextWriterWriteFormatString (xo, fs, ##__VA_ARGS__) == -1) { \ - xml_error ("xmlTextWriterWriteFormatString"); \ - return -1; \ +#define string_format(fs, ...) \ + if (xmlTextWriterWriteFormatString (xo, fs, ##__VA_ARGS__) == -1) { \ + xml_error ("xmlTextWriterWriteFormatString"); \ + return -1; \ } -#define xml_error(fn) \ - perrorf (g, _("%s:%d: error constructing libvirt XML near call to \"%s\""), \ - __FILE__, __LINE__, (fn)); +#define xml_error(fn) \ + perrorf ( \ + g, _("%s:%d: error constructing libvirt XML near call to \"%s\""), \ + __FILE__, __LINE__, (fn)); static xmlChar * -construct_libvirt_xml (guestfs_h *g, const struct libvirt_xml_params *params) +construct_libvirt_xml (guestfs_h *g, + const struct libvirt_xml_params *params) { xmlChar *ret = NULL; CLEANUP_XMLBUFFERFREE xmlBufferPtr xb = NULL; @@ -1004,7 +1072,8 @@ construct_libvirt_xml_domain (guestfs_h *g, const struct libvirt_xml_params *params, xmlTextWriterPtr xo) { - start_element ("domain") { + start_element ("domain") + { attribute ("type", params->data->is_kvm ? "kvm" : "qemu"); attribute_ns ("xmlns", "qemu", NULL, "http://libvirt.org/schemas/domain/qemu/1.0"); @@ -1023,8 +1092,8 @@ construct_libvirt_xml_domain (guestfs_h *g, return -1; if (construct_libvirt_xml_qemu_cmdline (g, params, xo) == -1) return -1; - - } end_element (); + } + end_element (); return 0; } @@ -1034,9 +1103,8 @@ construct_libvirt_xml_name (guestfs_h *g, const struct libvirt_xml_params *params, xmlTextWriterPtr xo) { - start_element ("name") { - string (params->data->name); - } end_element (); + start_element ("name") { string (params->data->name); } + end_element (); return 0; } @@ -1049,69 +1117,79 @@ construct_libvirt_xml_cpu (guestfs_h *g, { const char *cpu_model; - start_element ("memory") { + start_element ("memory") + { attribute ("unit", "MiB"); string_format ("%d", g->memsize); - } end_element (); + } + end_element (); - start_element ("currentMemory") { + start_element ("currentMemory") + { attribute ("unit", "MiB"); string_format ("%d", g->memsize); - } end_element (); + } + end_element (); cpu_model = guestfs_int_get_cpu_model (params->data->is_kvm); if (cpu_model) { - start_element ("cpu") { + start_element ("cpu") + { if (STREQ (cpu_model, "host")) { attribute ("mode", "host-passthrough"); - start_element ("model") { - attribute ("fallback", "allow"); - } end_element (); - } - else { - /* XXX This does not work on aarch64, see: - * https://www.redhat.com/archives/libvirt-users/2014-August/msg00043.html - * https://bugzilla.redhat.com/show_bug.cgi?id=1184411 - * Instead we hack around it using <qemu:commandline> below. - */ + start_element ("model") { attribute ("fallback", "allow"); } + end_element (); + } else { +/* XXX This does not work on aarch64, see: + * https://www.redhat.com/archives/libvirt-users/2014-August/msg00043.html + * https://bugzilla.redhat.com/show_bug.cgi?id=1184411 + * Instead we hack around it using <qemu:commandline> below. + */ #ifndef __aarch64__ - start_element ("model") { - string (cpu_model); - } end_element (); + start_element ("model") { string (cpu_model); } + end_element (); #endif } - } end_element (); + } + end_element (); } - start_element ("vcpu") { - string_format ("%d", g->smp); - } end_element (); + start_element ("vcpu") { string_format ("%d", g->smp); } + end_element (); - start_element ("clock") { + start_element ("clock") + { attribute ("offset", "utc"); /* These are recommended settings, see RHBZ#1053847. */ - start_element ("timer") { + start_element ("timer") + { attribute ("name", "rtc"); attribute ("tickpolicy", "catchup"); - } end_element (); - start_element ("timer") { + } + end_element (); + start_element ("timer") + { attribute ("name", "pit"); attribute ("tickpolicy", "delay"); - } end_element (); + } + end_element (); - /* libvirt has a bug (RHBZ#1066145) where it adds the -no-hpet - * flag on ARM & ppc64 (and possibly any architecture). - * Since hpet is specific to x86 & x86_64 anyway, just add it only - * for those architectures. - */ +/* libvirt has a bug (RHBZ#1066145) where it adds the -no-hpet + * flag on ARM & ppc64 (and possibly any architecture). + * Since hpet is specific to x86 & x86_64 anyway, just add it only + * for those architectures. + */ #if defined(__i386__) || defined(__x86_64__) - start_element ("timer") { + start_element ("timer") + { attribute ("name", "hpet"); attribute ("present", "no"); - } end_element (); + } + end_element (); #endif - } end_element (); + } + end_element (); return 0; } @@ -1129,51 +1207,52 @@ construct_libvirt_xml_boot (guestfs_h *g, flags = 0; if (!params->data->is_kvm) flags |= APPLIANCE_COMMAND_LINE_IS_TCG; - cmdline = guestfs_int_appliance_command_line (g, params->appliance_dev, flags); + cmdline = + guestfs_int_appliance_command_line (g, params->appliance_dev, flags); - start_element ("os") { - start_element ("type") { + start_element ("os") + { + start_element ("type") + { #ifdef MACHINE_TYPE attribute ("machine", MACHINE_TYPE); #endif string ("hvm"); - } end_element (); + } + end_element (); if (params->data->uefi_code) { - start_element ("loader") { - attribute ("readonly", "yes"); - attribute ("type", "pflash"); - string (params->data->uefi_code); - } end_element (); + start_element ("loader") + { + attribute ("readonly", "yes"); + attribute ("type", "pflash"); + string (params->data->uefi_code); + } + end_element (); if (params->data->uefi_vars) { - start_element ("nvram") { - string (params->data->uefi_vars); - } end_element (); + start_element ("nvram") { string (params->data->uefi_vars); } + end_element (); } } - start_element ("kernel") { - string (params->kernel); - } end_element (); + start_element ("kernel") { string (params->kernel); } + end_element (); - start_element ("initrd") { - string (params->initrd); - } end_element (); + start_element ("initrd") { string (params->initrd); } + end_element (); - start_element ("cmdline") { - string (cmdline); - } end_element (); + start_element ("cmdline") { string (cmdline); } + end_element (); #if defined(__i386__) || defined(__x86_64__) if (g->verbose) { - start_element ("bios") { - attribute ("useserial", "yes"); - } end_element (); + start_element ("bios") { attribute ("useserial", "yes"); } + end_element (); } #endif - - } end_element (); + } + end_element (); return 0; } @@ -1185,26 +1264,28 @@ construct_libvirt_xml_seclabel (guestfs_h *g, { if (!params->enable_svirt) { /* This disables SELinux/sVirt confinement. */ - start_element ("seclabel") { - attribute ("type", "none"); - } end_element (); - } - else if (params->data->selinux_label && params->data->selinux_imagelabel) { + start_element ("seclabel") { attribute ("type", "none"); } + end_element (); + } else if (params->data->selinux_label && + params->data->selinux_imagelabel) { /* Enable sVirt and pass a custom <seclabel/> inherited from the * original libvirt domain (when guestfs_add_domain was called). * https://bugzilla.redhat.com/show_bug.cgi?id=912499#c7 */ - start_element ("seclabel") { + start_element ("seclabel") + { attribute ("type", "static"); attribute ("model", "selinux"); attribute ("relabel", "yes"); - start_element ("label") { - string (params->data->selinux_label); - } end_element (); - start_element ("imagelabel") { + start_element ("label") { string (params->data->selinux_label); } + end_element (); + start_element ("imagelabel") + { string (params->data->selinux_imagelabel); - } end_element (); - } end_element (); + } + end_element (); + } + end_element (); } return 0; @@ -1216,9 +1297,8 @@ construct_libvirt_xml_lifecycle (guestfs_h *g, const struct libvirt_xml_params *params, xmlTextWriterPtr xo) { - start_element ("on_reboot") { - string ("destroy"); - } end_element (); + start_element ("on_reboot") { string ("destroy"); } + end_element (); return 0; } @@ -1232,50 +1312,56 @@ construct_libvirt_xml_devices (guestfs_h *g, struct drive *drv; size_t i; - start_element ("devices") { + start_element ("devices") + { /* Path to hypervisor. Only write this if the user has changed the * default, otherwise allow libvirt to choose the best one. */ if (is_custom_hv (g)) { - start_element ("emulator") { - string (g->hv); - } end_element (); + start_element ("emulator") { string (g->hv); } + end_element (); } #if defined(__arm__) /* Hopefully temporary hack to make ARM work (otherwise libvirt * chooses to run /usr/bin/qemu-kvm). */ else { - start_element ("emulator") { - string (QEMU); - } end_element (); + start_element ("emulator") { string (QEMU); } + end_element (); } #endif /* Add a random number generator (backend for virtio-rng). */ - start_element ("rng") { + start_element ("rng") + { attribute ("model", "virtio"); - start_element ("backend") { + start_element ("backend") + { attribute ("model", "random"); /* It'd be nice to do this, but libvirt says: * file '/dev/urandom' is not a supported random source * Let libvirt pick /dev/random automatically instead. * See also: https://bugzilla.redhat.com/show_bug.cgi?id=1074464 */ - //string ("/dev/urandom"); - } end_element (); - } end_element (); + // string ("/dev/urandom"); + } + end_element (); + } + end_element (); /* virtio-scsi controller. */ - start_element ("controller") { + start_element ("controller") + { attribute ("type", "scsi"); attribute ("index", "0"); attribute ("model", "virtio-scsi"); - } end_element (); + } + end_element (); /* Disks. */ - ITER_DRIVES (g, i, drv) { + ITER_DRIVES (g, i, drv) + { if (construct_libvirt_xml_disk (g, params->data, xo, drv, i) == -1) return -1; } @@ -1287,44 +1373,56 @@ construct_libvirt_xml_devices (guestfs_h *g, } /* Console. */ - start_element ("serial") { + start_element ("serial") + { attribute ("type", "unix"); - start_element ("source") { + start_element ("source") + { attribute ("mode", "connect"); attribute ("path", params->data->console_path); - } end_element (); - start_element ("target") { - attribute ("port", "0"); - } end_element (); - } end_element (); + } + end_element (); + start_element ("target") { attribute ("port", "0"); } + end_element (); + } + end_element (); /* Virtio-serial for guestfsd communication. */ - start_element ("channel") { + start_element ("channel") + { attribute ("type", "unix"); - start_element ("source") { + start_element ("source") + { attribute ("mode", "connect"); attribute ("path", params->data->guestfsd_path); - } end_element (); - start_element ("target") { + } + end_element (); + start_element ("target") + { attribute ("type", "virtio"); attribute ("name", "org.libguestfs.channel.0"); - } end_element (); - } end_element (); + } + end_element (); + } + end_element (); /* Connect to libvirt bridge (see: RHBZ#1148012). */ if (g->enable_network) { - start_element ("interface") { + start_element ("interface") + { attribute ("type", "bridge"); - start_element ("source") { + start_element ("source") + { attribute ("bridge", params->data->network_bridge); - } end_element (); - start_element ("model") { - attribute ("type", "virtio"); - } end_element (); - } end_element (); + } + end_element (); + start_element ("model") { attribute ("type", "virtio"); } + end_element (); + } + end_element (); } - - } end_element (); /* </devices> */ + } + end_element (); /* </devices> */ return 0; } @@ -1332,8 +1430,8 @@ construct_libvirt_xml_devices (guestfs_h *g, static int construct_libvirt_xml_disk (guestfs_h *g, const struct backend_libvirt_data *data, - xmlTextWriterPtr xo, - struct drive *drv, size_t drv_index) + xmlTextWriterPtr xo, struct drive *drv, + size_t drv_index) { const char *protocol_str; CLEANUP_FREE char *path = NULL; @@ -1344,11 +1442,13 @@ construct_libvirt_xml_disk (guestfs_h *g, /* XXX We probably could support this if we thought about it some more. */ if (drv->iface) { - error (g, _("'iface' parameter is not supported by the libvirt backend")); + error (g, + _("'iface' parameter is not supported by the libvirt backend")); return -1; } - start_element ("disk") { + start_element ("disk") + { attribute ("device", "disk"); if (drv->overlay) { @@ -1357,22 +1457,22 @@ construct_libvirt_xml_disk (guestfs_h *g, */ attribute ("type", "file"); - start_element ("source") { + start_element ("source") + { attribute ("file", drv->overlay); if (construct_libvirt_xml_disk_source_seclabel (g, data, xo) == -1) return -1; - } end_element (); + } + end_element (); if (construct_libvirt_xml_disk_target (g, xo, drv_index) == -1) return -1; - if (construct_libvirt_xml_disk_driver_qemu (g, data, drv, - xo, "qcow2", "unsafe", - discard_disable, false) - == -1) + if (construct_libvirt_xml_disk_driver_qemu (g, data, drv, xo, "qcow2", + "unsafe", discard_disable, + false) == -1) return -1; - } - else { + } else { /* Not an overlay, a writable disk. */ switch (drv->src.protocol) { @@ -1390,90 +1490,110 @@ construct_libvirt_xml_disk (guestfs_h *g, if (!is_host_device) { path = realpath (drv->src.u.path, NULL); if (path == NULL) { - perrorf (g, _("realpath: could not convert '%s' to absolute path"), - drv->src.u.path); + perrorf ( + g, _("realpath: could not convert '%s' to absolute path"), + drv->src.u.path); return -1; } attribute ("type", "file"); - start_element ("source") { + start_element ("source") + { attribute ("file", path); - if (construct_libvirt_xml_disk_source_seclabel (g, data, xo) == -1) + if (construct_libvirt_xml_disk_source_seclabel (g, data, xo) == + -1) return -1; - } end_element (); - } - else { + } + end_element (); + } else { attribute ("type", "block"); - start_element ("source") { + start_element ("source") + { attribute ("dev", drv->src.u.path); - if (construct_libvirt_xml_disk_source_seclabel (g, data, xo) == -1) + if (construct_libvirt_xml_disk_source_seclabel (g, data, xo) == + -1) return -1; - } end_element (); + } + end_element (); } break; - /* For network protocols: - * <disk type=network device=disk> - * <source protocol=[protocol] [name=exportname]> - * and then zero or more of: - * <host name='example.com' port='10809'/> - * or: - * <host transport='unix' socket='/path/to/socket'/> - */ + /* For network protocols: + * <disk type=network device=disk> + * <source protocol=[protocol] [name=exportname]> + * and then zero or more of: + * <host name='example.com' port='10809'/> + * or: + * <host transport='unix' socket='/path/to/socket'/> + */ case drive_protocol_gluster: - protocol_str = "gluster"; goto network_protocols; + protocol_str = "gluster"; + goto network_protocols; case drive_protocol_iscsi: - protocol_str = "iscsi"; goto network_protocols; + protocol_str = "iscsi"; + goto network_protocols; case drive_protocol_nbd: - protocol_str = "nbd"; goto network_protocols; + protocol_str = "nbd"; + goto network_protocols; case drive_protocol_rbd: - protocol_str = "rbd"; goto network_protocols; + protocol_str = "rbd"; + goto network_protocols; case drive_protocol_sheepdog: - protocol_str = "sheepdog"; goto network_protocols; + protocol_str = "sheepdog"; + goto network_protocols; case drive_protocol_ssh: protocol_str = "ssh"; - /*FALLTHROUGH*/ + /*FALLTHROUGH*/ network_protocols: attribute ("type", "network"); - start_element ("source") { + start_element ("source") + { attribute ("protocol", protocol_str); if (STRNEQ (drv->src.u.exportname, "")) attribute ("name", drv->src.u.exportname); - if (construct_libvirt_xml_disk_source_hosts (g, xo, - &drv->src) == -1) + if (construct_libvirt_xml_disk_source_hosts (g, xo, &drv->src) == + -1) return -1; - if (construct_libvirt_xml_disk_source_seclabel (g, data, xo) == -1) + if (construct_libvirt_xml_disk_source_seclabel (g, data, xo) == + -1) return -1; - } end_element (); + } + end_element (); if (drv->src.username != NULL) { - start_element ("auth") { + start_element ("auth") + { attribute ("username", drv->src.username); r = find_secret (g, data, drv, &type, &uuid); if (r == -1) return -1; if (r == 1) { - start_element ("secret") { + start_element ("secret") + { attribute ("type", type); attribute ("uuid", uuid); - } end_element (); + } + end_element (); } - } end_element (); + } + end_element (); } break; - /* libvirt doesn't support the qemu curl driver yet. Give a - * reasonable error message instead of trying and failing. - */ + /* libvirt doesn't support the qemu curl driver yet. Give a + * reasonable error message instead of trying and failing. + */ case drive_protocol_ftp: case drive_protocol_ftps: case drive_protocol_http: case drive_protocol_https: case drive_protocol_tftp: - error (g, _("libvirt does not support the qemu curl driver protocols (ftp, http, etc.); try setting LIBGUESTFS_BACKEND=direct")); + error (g, _("libvirt does not support the qemu curl driver " + "protocols (ftp, http, etc.); try setting " + "LIBGUESTFS_BACKEND=direct")); return -1; } @@ -1485,12 +1605,15 @@ construct_libvirt_xml_disk (guestfs_h *g, else if (drv->src.protocol == drive_protocol_file) { /* libvirt has disabled the feature of detecting the disk format, * unless the administrator sets allow_disk_format_probing=1 in - * qemu.conf. There is no way to detect if this option is set, so we + * qemu.conf. There is no way to detect if this option is set, so + * we * have to do format detection here using qemu-img and pass that to * libvirt. * - * This is still a security issue, so in most cases it is recommended - * the users pass the format to libguestfs which will faithfully pass + * This is still a security issue, so in most cases it is + * recommended + * the users pass the format to libguestfs which will faithfully + * pass * that to libvirt and this function won't be used. */ format = guestfs_disk_format (g, drv->src.u.path); @@ -1499,35 +1622,37 @@ construct_libvirt_xml_disk (guestfs_h *g, if (STREQ (format, "unknown")) { error (g, _("could not auto-detect the format.\n" - "If the format is known, pass the format to libguestfs, eg. using the\n" - "'--format' option, or via the optional 'format' argument to 'add-drive'.")); + "If the format is known, pass the format to " + "libguestfs, eg. using the\n" + "'--format' option, or via the optional 'format' " + "argument to 'add-drive'.")); return -1; } - } - else { - error (g, _("could not auto-detect the format when using a non-file protocol.\n" - "If the format is known, pass the format to libguestfs, eg. using the\n" - "'--format' option, or via the optional 'format' argument to 'add-drive'.")); + } else { + error (g, _("could not auto-detect the format when using a " + "non-file protocol.\n" + "If the format is known, pass the format to " + "libguestfs, eg. using the\n" + "'--format' option, or via the optional 'format' " + "argument to 'add-drive'.")); return -1; } - if (construct_libvirt_xml_disk_driver_qemu (g, data, drv, xo, format, - drv->cachemode ? : "writeback", - drv->discard, false) - == -1) + if (construct_libvirt_xml_disk_driver_qemu ( + g, data, drv, xo, format, drv->cachemode ?: "writeback", + drv->discard, false) == -1) return -1; } if (drv->disk_label) { - start_element ("serial") { - string (drv->disk_label); - } end_element (); + start_element ("serial") { string (drv->disk_label); } + end_element (); } if (construct_libvirt_xml_disk_address (g, xo, drv_index) == -1) return -1; - - } end_element (); /* </disk> */ + } + end_element (); /* </disk> */ return 0; } @@ -1540,23 +1665,21 @@ construct_libvirt_xml_disk_target (guestfs_h *g, xmlTextWriterPtr xo, guestfs_int_drive_name (drv_index, &drive_name[2]); - start_element ("target") { + start_element ("target") + { attribute ("dev", drive_name); attribute ("bus", "scsi"); - } end_element (); + } + end_element (); return 0; } static int -construct_libvirt_xml_disk_driver_qemu (guestfs_h *g, - const struct backend_libvirt_data *data, - struct drive *drv, - xmlTextWriterPtr xo, - const char *format, - const char *cachemode, - enum discard discard, - bool copyonread) +construct_libvirt_xml_disk_driver_qemu ( + guestfs_h *g, const struct backend_libvirt_data *data, + struct drive *drv, xmlTextWriterPtr xo, const char *format, + const char *cachemode, enum discard discard, bool copyonread) { bool discard_unmap = false; @@ -1574,7 +1697,7 @@ construct_libvirt_xml_disk_driver_qemu (guestfs_h *g, case discard_enable: if (!guestfs_int_discard_possible (g, drv, data->qemu_version)) return -1; - /*FALLTHROUGH*/ + /*FALLTHROUGH*/ case discard_besteffort: /* I believe from reading the code that this is always safe as * long as qemu >= 1.5. @@ -1584,7 +1707,8 @@ construct_libvirt_xml_disk_driver_qemu (guestfs_h *g, break; } - start_element ("driver") { + start_element ("driver") + { attribute ("name", "qemu"); attribute ("type", format); attribute ("cache", cachemode); @@ -1592,7 +1716,8 @@ construct_libvirt_xml_disk_driver_qemu (guestfs_h *g, attribute ("discard", "unmap"); if (copyonread) attribute ("copy_on_read", "on"); - } end_element (); + } + end_element (); return 0; } @@ -1601,26 +1726,28 @@ static int construct_libvirt_xml_disk_address (guestfs_h *g, xmlTextWriterPtr xo, size_t drv_index) { - start_element ("address") { + start_element ("address") + { attribute ("type", "drive"); attribute ("controller", "0"); attribute ("bus", "0"); attribute_format ("target", "%zu", drv_index); attribute ("unit", "0"); - } end_element (); + } + end_element (); return 0; } static int -construct_libvirt_xml_disk_source_hosts (guestfs_h *g, - xmlTextWriterPtr xo, +construct_libvirt_xml_disk_source_hosts (guestfs_h *g, xmlTextWriterPtr xo, const struct drive_source *src) { size_t i; for (i = 0; i < src->nr_servers; ++i) { - start_element ("host") { + start_element ("host") + { switch (src->servers[i].transport) { case drive_transport_none: case drive_transport_tcp: { @@ -1636,23 +1763,25 @@ construct_libvirt_xml_disk_source_hosts (guestfs_h *g, break; } } - - } end_element (); + } + end_element (); } return 0; } static int -construct_libvirt_xml_disk_source_seclabel (guestfs_h *g, - const struct backend_libvirt_data *data, - xmlTextWriterPtr xo) +construct_libvirt_xml_disk_source_seclabel ( + guestfs_h *g, const struct backend_libvirt_data *data, + xmlTextWriterPtr xo) { if (data->selinux_norelabel_disks) { - start_element ("seclabel") { + start_element ("seclabel") + { attribute ("model", "selinux"); attribute ("relabel", "no"); - } end_element (); + } + end_element (); } return 0; @@ -1663,31 +1792,36 @@ construct_libvirt_xml_appliance (guestfs_h *g, const struct libvirt_xml_params *params, xmlTextWriterPtr xo) { - start_element ("disk") { + start_element ("disk") + { attribute ("type", "file"); attribute ("device", "disk"); - start_element ("source") { + start_element ("source") + { attribute ("file", params->appliance_overlay); - } end_element (); + } + end_element (); - start_element ("target") { + start_element ("target") + { attribute ("dev", ¶ms->appliance_dev[5]); attribute ("bus", "scsi"); - } end_element (); + } + end_element (); - if (construct_libvirt_xml_disk_driver_qemu (g, params->data, NULL, xo, - "qcow2", "unsafe", - discard_disable, false) == -1) + if (construct_libvirt_xml_disk_driver_qemu ( + g, params->data, NULL, xo, "qcow2", "unsafe", discard_disable, + false) == -1) return -1; - if (construct_libvirt_xml_disk_address (g, xo, params->appliance_index) - == -1) + if (construct_libvirt_xml_disk_address (g, xo, + params->appliance_index) == -1) return -1; empty_element ("shareable"); - - } end_element (); + } + end_element (); return 0; } @@ -1700,7 +1834,8 @@ construct_libvirt_xml_qemu_cmdline (guestfs_h *g, struct hv_param *hp; CLEANUP_FREE char *tmpdir = NULL; - start_element ("qemu:commandline") { + start_element ("qemu:commandline") + { /* We need to ensure the snapshots are created in the persistent * temporary directory (RHBZ#856619). We must set one, because @@ -1708,21 +1843,21 @@ construct_libvirt_xml_qemu_cmdline (guestfs_h *g, */ tmpdir = guestfs_get_cachedir (g); - start_element ("qemu:env") { + start_element ("qemu:env") + { attribute ("name", "TMPDIR"); attribute ("value", tmpdir); - } end_element (); + } + end_element (); /* The qemu command line arguments requested by the caller. */ for (hp = g->hv_params; hp; hp = hp->next) { - start_element ("qemu:arg") { - attribute ("value", hp->hv_param); - } end_element (); + start_element ("qemu:arg") { attribute ("value", hp->hv_param); } + end_element (); if (hp->hv_value) { - start_element ("qemu:arg") { - attribute ("value", hp->hv_value); - } end_element (); + start_element ("qemu:arg") { attribute ("value", hp->hv_value); } + end_element (); } } @@ -1730,18 +1865,17 @@ construct_libvirt_xml_qemu_cmdline (guestfs_h *g, /* This is a temporary hack until RHBZ#1184411 is resolved. * See comments above about cpu model and aarch64. */ - const char *cpu_model = guestfs_int_get_cpu_model (params->data->is_kvm); + const char *cpu_model = + guestfs_int_get_cpu_model (params->data->is_kvm); if (STRNEQ (cpu_model, "host")) { - start_element ("qemu:arg") { - attribute ("value", "-cpu"); - } end_element (); - start_element ("qemu:arg") { - attribute ("value", cpu_model); - } end_element (); + start_element ("qemu:arg") { attribute ("value", "-cpu"); } + end_element (); + start_element ("qemu:arg") { attribute ("value", cpu_model); } + end_element (); } #endif - - } end_element (); /* </qemu:commandline> */ + } + end_element (); /* </qemu:commandline> */ return 0; } @@ -1749,17 +1883,20 @@ construct_libvirt_xml_qemu_cmdline (guestfs_h *g, static int construct_libvirt_xml_secret (guestfs_h *g, const struct backend_libvirt_data *data, - const struct drive *drv, - xmlTextWriterPtr xo) + const struct drive *drv, xmlTextWriterPtr xo) { - start_element ("secret") { + start_element ("secret") + { attribute ("ephemeral", "yes"); attribute ("private", "yes"); - start_element ("description") { - string_format ("guestfs secret associated with %s %s", - data->name, drv->src.u.path); - } end_element (); - } end_element (); + start_element ("description") + { + string_format ("guestfs secret associated with %s %s", data->name, + drv->src.u.path); + } + end_element (); + } + end_element (); return 0; } @@ -1833,7 +1970,7 @@ add_secret (guestfs_h *g, virConnectPtr conn, debug (g, "libvirt secret XML:\n%s", xml); /* Pass the XML to libvirt. */ - secret_obj = virSecretDefineXML (conn, (const char *) xml, 0); + secret_obj = virSecretDefineXML (conn, (const char *)xml, 0); if (secret_obj == NULL) { libvirt_error (g, _("could not define libvirt secret")); return -1; @@ -1844,8 +1981,8 @@ add_secret (guestfs_h *g, virConnectPtr conn, */ switch (drv->src.protocol) { case drive_protocol_rbd: - if (!base64_decode_alloc (secret, strlen (secret), - (char **) &secret_raw, &secret_raw_len)) { + if (!base64_decode_alloc (secret, strlen (secret), (char **)&secret_raw, + &secret_raw_len)) { error (g, _("rbd protocol secret must be base64 encoded")); return -1; } @@ -1865,7 +2002,7 @@ add_secret (guestfs_h *g, virConnectPtr conn, case drive_protocol_sheepdog: case drive_protocol_ssh: case drive_protocol_tftp: - secret_raw = (unsigned char *) safe_strdup (g, secret); + secret_raw = (unsigned char *)safe_strdup (g, secret); secret_raw_len = strlen (secret); } @@ -1878,8 +2015,8 @@ add_secret (guestfs_h *g, virConnectPtr conn, /* Get back the UUID and save it in the private data. */ i = data->nr_secrets; data->nr_secrets++; - data->secrets = - safe_realloc (g, data->secrets, sizeof (struct secret) * data->nr_secrets); + data->secrets = safe_realloc (g, data->secrets, + sizeof (struct secret) * data->nr_secrets); data->secrets[i].secret = safe_strdup (g, secret); @@ -1892,8 +2029,8 @@ add_secret (guestfs_h *g, virConnectPtr conn, } static int -have_secret (guestfs_h *g, - const struct backend_libvirt_data *data, const struct drive *drv) +have_secret (guestfs_h *g, const struct backend_libvirt_data *data, + const struct drive *drv) { size_t i; @@ -1914,9 +2051,8 @@ have_secret (guestfs_h *g, * secret was found and returned. */ static int -find_secret (guestfs_h *g, - const struct backend_libvirt_data *data, const struct drive *drv, - const char **type, const char **uuid) +find_secret (guestfs_h *g, const struct backend_libvirt_data *data, + const struct drive *drv, const char **type, const char **uuid) { size_t i; @@ -1946,7 +2082,7 @@ find_secret (guestfs_h *g, case drive_protocol_sheepdog: case drive_protocol_ssh: case drive_protocol_tftp: - /* set to a default value above */ ; + /* set to a default value above */; } return 1; @@ -1993,19 +2129,21 @@ check_bridge_exists (guestfs_h *g, const char *brname) if (is_dir (path)) return 0; - error (g, - _("bridge '%s' not found. Try running:\n" - "\n" - " brctl show\n" - "\n" - "to get a list of bridges on the host, and then selecting the\n" - "bridge you wish the appliance network to connect to using:\n" - "\n" - " export LIBGUESTFS_BACKEND_SETTINGS=network_bridge=<bridge name>\n" - "\n" - "You may also need to allow the bridge in /etc/qemu/bridge.conf.\n" - "For further information see guestfs(3)."), - brname); + error ( + g, + _("bridge '%s' not found. Try running:\n" + "\n" + " brctl show\n" + "\n" + "to get a list of bridges on the host, and then selecting the\n" + "bridge you wish the appliance network to connect to using:\n" + "\n" + " export LIBGUESTFS_BACKEND_SETTINGS=network_bridge=<bridge " + "name>\n" + "\n" + "You may also need to allow the bridge in /etc/qemu/bridge.conf.\n" + "For further information see guestfs(3)."), + brname); return -1; } @@ -2015,7 +2153,8 @@ ignore_errors (void *ignore, virErrorPtr ignore2) /* empty */ } -static int destroy_domain (guestfs_h *g, virDomainPtr dom, int check_for_errors); +static int destroy_domain (guestfs_h *g, virDomainPtr dom, + int check_for_errors); static int shutdown_libvirt (guestfs_h *g, void *datav, int check_for_errors) @@ -2078,7 +2217,7 @@ destroy_domain (guestfs_h *g, virDomainPtr dom, int check_for_errors) const int flags = check_for_errors ? VIR_DOMAIN_DESTROY_GRACEFUL : 0; virErrorPtr err; - again: +again: debug (g, "calling virDomainDestroy flags=%s", check_for_errors ? "VIR_DOMAIN_DESTROY_GRACEFUL" : "0"); if (virDomainDestroyFlags (dom, flags) == 0) @@ -2117,15 +2256,14 @@ libvirt_error (guestfs_h *g, const char *fs, ...) va_end (args); if (len < 0) - msg = safe_asprintf (g, - _("%s: internal error forming error message"), + msg = safe_asprintf (g, _("%s: internal error forming error message"), __func__); /* In all recent libvirt, this retrieves the thread-local error. */ err = virGetLastError (); if (err) - error (g, "%s: %s [code=%d int1=%d]", - msg, err->message, err->code, err->int1); + error (g, "%s: %s [code=%d int1=%d]", msg, err->message, err->code, + err->int1); else error (g, "%s", msg); @@ -2150,15 +2288,14 @@ libvirt_debug (guestfs_h *g, const char *fs, ...) va_end (args); if (len < 0) - msg = safe_asprintf (g, - _("%s: internal error forming error message"), + msg = safe_asprintf (g, _("%s: internal error forming error message"), __func__); /* In all recent libvirt, this retrieves the thread-local error. */ err = virGetLastError (); if (err) - debug (g, "%s: %s [code=%d int1=%d]", - msg, err->message, err->code, err->int1); + debug (g, "%s: %s [code=%d int1=%d]", msg, err->message, err->code, + err->int1); else debug (g, "%s", msg); @@ -2168,12 +2305,14 @@ libvirt_debug (guestfs_h *g, const char *fs, ...) #if HAVE_LIBSELINUX static void -selinux_warning (guestfs_h *g, const char *func, - const char *selinux_op, const char *data) +selinux_warning (guestfs_h *g, const char *func, const char *selinux_op, + const char *data) { - debug (g, "%s: %s failed: %s: %m" - " [you can ignore this message if you are not using SELinux + sVirt]", - func, selinux_op, data ? data : "(none)"); + debug ( + g, + "%s: %s failed: %s: %m" + " [you can ignore this message if you are not using SELinux + sVirt]", + func, selinux_op, data ? data : "(none)"); } #endif @@ -2184,12 +2323,15 @@ max_disks_libvirt (guestfs_h *g, void *datav) return 255; } -static xmlChar *construct_libvirt_xml_hot_add_disk (guestfs_h *g, const struct backend_libvirt_data *data, struct drive *drv, size_t drv_index); +static xmlChar * +construct_libvirt_xml_hot_add_disk (guestfs_h *g, + const struct backend_libvirt_data *data, + struct drive *drv, size_t drv_index); /* Hot-add a drive. Note the appliance is up when this is called. */ static int -hot_add_drive_libvirt (guestfs_h *g, void *datav, - struct drive *drv, size_t drv_index) +hot_add_drive_libvirt (guestfs_h *g, void *datav, struct drive *drv, + size_t drv_index) { struct backend_libvirt_data *data = datav; virConnectPtr conn = data->conn; @@ -2212,7 +2354,7 @@ hot_add_drive_libvirt (guestfs_h *g, void *datav, return -1; /* Attach it. */ - if (virDomainAttachDeviceFlags (dom, (char *) xml, + if (virDomainAttachDeviceFlags (dom, (char *)xml, VIR_DOMAIN_DEVICE_MODIFY_LIVE) == -1) { libvirt_error (g, _("could not attach disk to libvirt domain")); return -1; @@ -2223,8 +2365,8 @@ hot_add_drive_libvirt (guestfs_h *g, void *datav, /* Hot-remove a drive. Note the appliance is up when this is called. */ static int -hot_remove_drive_libvirt (guestfs_h *g, void *datav, - struct drive *drv, size_t drv_index) +hot_remove_drive_libvirt (guestfs_h *g, void *datav, struct drive *drv, + size_t drv_index) { struct backend_libvirt_data *data = datav; virConnectPtr conn = data->conn; @@ -2243,7 +2385,7 @@ hot_remove_drive_libvirt (guestfs_h *g, void *datav, return -1; /* Detach it. */ - if (virDomainDetachDeviceFlags (dom, (char *) xml, + if (virDomainDetachDeviceFlags (dom, (char *)xml, VIR_DOMAIN_DEVICE_MODIFY_LIVE) == -1) { libvirt_error (g, _("could not detach disk from libvirt domain")); return -1; @@ -2255,8 +2397,7 @@ hot_remove_drive_libvirt (guestfs_h *g, void *datav, static xmlChar * construct_libvirt_xml_hot_add_disk (guestfs_h *g, const struct backend_libvirt_data *data, - struct drive *drv, - size_t drv_index) + struct drive *drv, size_t drv_index) { xmlChar *ret = NULL; CLEANUP_XMLBUFFERFREE xmlBufferPtr xb = NULL; diff --git a/src/launch-uml.c b/src/launch-uml.c index 318081c..80af3c1 100644 --- a/src/launch-uml.c +++ b/src/launch-uml.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include <config.h> @@ -37,12 +38,13 @@ #include "guestfs_protocol.h" /* Per-handle data. */ -struct backend_uml_data { - pid_t pid; /* vmlinux PID. */ - pid_t recoverypid; /* Recovery process PID. */ +struct backend_uml_data +{ + pid_t pid; /* vmlinux PID. */ + pid_t recoverypid; /* Recovery process PID. */ #define UML_UMID_LEN 16 - char umid[UML_UMID_LEN+1]; /* umid=<...> unique ID. */ + char umid[UML_UMID_LEN + 1]; /* umid=<...> unique ID. */ }; static void print_vmlinux_command_line (guestfs_h *g, char **argv); @@ -101,7 +103,8 @@ uml_supported (guestfs_h *g) return false; } - ITER_DRIVES (g, i, drv) { + ITER_DRIVES (g, i, drv) + { if (drv->src.protocol != drive_protocol_file) { error (g, _("uml backend does not support remote drives")); return false; @@ -111,19 +114,21 @@ uml_supported (guestfs_h *g) return false; } if (drv->iface) { - error (g, - _("uml backend does not support drives with 'iface' parameter")); + error ( + g, + _("uml backend does not support drives with 'iface' parameter")); return false; } if (drv->disk_label) { - error (g, - _("uml backend does not support drives with 'label' parameter")); + error ( + g, + _("uml backend does not support drives with 'label' parameter")); return false; } /* Note that discard == "besteffort" is fine. */ if (drv->discard == discard_enable) { - error (g, - _("uml backend does not support drives with 'discard' parameter set to 'enable'")); + error (g, _("uml backend does not support drives with 'discard' " + "parameter set to 'enable'")); return false; } } @@ -180,14 +185,14 @@ launch_uml (guestfs_h *g, void *datav, const char *arg) /* The socket that the daemon will talk to us on. */ - if (socketpair (AF_LOCAL, SOCK_STREAM|SOCK_CLOEXEC, 0, dsv) == -1) { + if (socketpair (AF_LOCAL, SOCK_STREAM | SOCK_CLOEXEC, 0, dsv) == -1) { perrorf (g, "socketpair"); goto cleanup0; } /* The console socket. */ if (!g->direct_mode) { - if (socketpair (AF_LOCAL, SOCK_STREAM|SOCK_CLOEXEC, 0, csv) == -1) { + if (socketpair (AF_LOCAL, SOCK_STREAM | SOCK_CLOEXEC, 0, csv) == -1) { perrorf (g, "socketpair"); close (dsv[0]); close (dsv[1]); @@ -195,13 +200,12 @@ launch_uml (guestfs_h *g, void *datav, const char *arg) } } - /* Construct the vmlinux command line. We have to do this before - * forking, because after fork we are not allowed to use - * non-signal-safe functions such as malloc. - */ -#define ADD_CMDLINE(str) \ - guestfs_int_add_string (g, &cmdline, (str)) -#define ADD_CMDLINE_PRINTF(fs,...) \ +/* Construct the vmlinux command line. We have to do this before + * forking, because after fork we are not allowed to use + * non-signal-safe functions such as malloc. + */ +#define ADD_CMDLINE(str) guestfs_int_add_string (g, &cmdline, (str)) +#define ADD_CMDLINE_PRINTF(fs, ...) \ guestfs_int_add_sprintf (g, &cmdline, (fs), ##__VA_ARGS__) ADD_CMDLINE (g->hv); @@ -244,7 +248,8 @@ launch_uml (guestfs_h *g, void *datav, const char *arg) ADD_CMDLINE (g->append); /* Add the drives. */ - ITER_DRIVES (g, i, drv) { + ITER_DRIVES (g, i, drv) + { if (!drv->overlay) ADD_CMDLINE_PRINTF ("ubd%zu=%s", i, drv->src.u.path); else @@ -286,7 +291,7 @@ launch_uml (guestfs_h *g, void *datav, const char *arg) goto cleanup0; } - if (r == 0) { /* Child (vmlinux). */ + if (r == 0) { /* Child (vmlinux). */ /* Set up the daemon socket for the child. */ close (dsv[0]); set_cloexec_flag (dsv[1], 0); /* so it doesn't close across exec */ @@ -410,7 +415,7 @@ launch_uml (guestfs_h *g, void *datav, const char *arg) /* Close the other end of the console socketpair. */ close (csv[1]); - console_sock = csv[0]; /* stdin of child */ + console_sock = csv[0]; /* stdin of child */ csv[0] = -1; } @@ -424,7 +429,7 @@ launch_uml (guestfs_h *g, void *datav, const char *arg) * virtio-serial and send the GUESTFS_LAUNCH_FLAG message. */ g->conn = - guestfs_int_new_conn_socket_connected (g, daemon_sock, console_sock); + guestfs_int_new_conn_socket_connected (g, daemon_sock, console_sock); if (!g->conn) goto cleanup1; @@ -454,7 +459,8 @@ launch_uml (guestfs_h *g, void *datav, const char *arg) * send commands after this function returns. */ if (g->state != READY) { - error (g, _("vmlinux launched and contacted daemon, but state != READY")); + error (g, + _("vmlinux launched and contacted daemon, but state != READY")); goto cleanup1; } @@ -463,20 +469,24 @@ launch_uml (guestfs_h *g, void *datav, const char *arg) return 0; - cleanup1: +cleanup1: if (!g->direct_mode && csv[0] >= 0) close (csv[0]); if (dsv[0] >= 0) close (dsv[0]); - if (data->pid > 0) kill (data->pid, SIGKILL); - if (data->recoverypid > 0) kill (data->recoverypid, SIGKILL); - if (data->pid > 0) waitpid (data->pid, NULL, 0); - if (data->recoverypid > 0) waitpid (data->recoverypid, NULL, 0); + if (data->pid > 0) + kill (data->pid, SIGKILL); + if (data->recoverypid > 0) + kill (data->recoverypid, SIGKILL); + if (data->pid > 0) + waitpid (data->pid, NULL, 0); + if (data->recoverypid > 0) + waitpid (data->recoverypid, NULL, 0); data->pid = 0; data->recoverypid = 0; memset (&g->launch_t, 0, sizeof g->launch_t); - cleanup0: +cleanup0: if (daemon_sock >= 0) close (daemon_sock); if (console_sock >= 0) @@ -505,14 +515,17 @@ print_vmlinux_command_line (guestfs_h *g, char **argv) guestfs_int_timeval_diff (&g->launch_t, &tv)); while (argv[i]) { - if (i > 0) fputc (' ', stderr); + if (i > 0) + fputc (' ', stderr); /* Does it need shell quoting? This only deals with simple cases. */ needs_quote = strcspn (argv[i], " ") != strlen (argv[i]); - if (needs_quote) fputc ('\'', stderr); + if (needs_quote) + fputc ('\'', stderr); fprintf (stderr, "%s", argv[i]); - if (needs_quote) fputc ('\'', stderr); + if (needs_quote) + fputc ('\'', stderr); i++; } @@ -531,7 +544,8 @@ shutdown_uml (guestfs_h *g, void *datav, int check_for_errors) debug (g, "sending SIGTERM to process %d", data->pid); kill (data->pid, SIGTERM); } - if (data->recoverypid > 0) kill (data->recoverypid, 9); + if (data->recoverypid > 0) + kill (data->recoverypid, 9); /* Wait for subprocess(es) to exit. */ if (data->pid > 0) { @@ -552,7 +566,8 @@ shutdown_uml (guestfs_h *g, void *datav, int check_for_errors) ret = -1; } } - if (data->recoverypid > 0) waitpid (data->recoverypid, NULL, 0); + if (data->recoverypid > 0) + waitpid (data->recoverypid, NULL, 0); data->pid = data->recoverypid = 0; diff --git a/src/launch-unix.c b/src/launch-unix.c index 212de69..acccb7b 100644 --- a/src/launch-unix.c +++ b/src/launch-unix.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include <config.h> @@ -22,7 +23,7 @@ #include <stdlib.h> #include <unistd.h> #include <sys/socket.h> -#include <sys/un.h> /* sockaddr_un */ +#include <sys/un.h> /* sockaddr_un */ #include <string.h> #include <libintl.h> @@ -47,15 +48,15 @@ launch_unix (guestfs_h *g, void *datav, const char *sockpath) return -1; } - if (strlen (sockpath) > UNIX_PATH_MAX-1) { + if (strlen (sockpath) > UNIX_PATH_MAX - 1) { error (g, _("socket filename too long (more than %d characters): %s"), - UNIX_PATH_MAX-1, sockpath); + UNIX_PATH_MAX - 1, sockpath); return -1; } debug (g, "connecting to %s", sockpath); - daemon_sock = socket (AF_UNIX, SOCK_STREAM|SOCK_CLOEXEC, 0); + daemon_sock = socket (AF_UNIX, SOCK_STREAM | SOCK_CLOEXEC, 0); if (daemon_sock == -1) { perrorf (g, "socket"); return -1; @@ -63,11 +64,11 @@ launch_unix (guestfs_h *g, void *datav, const char *sockpath) addr.sun_family = AF_UNIX; strncpy (addr.sun_path, sockpath, UNIX_PATH_MAX); - addr.sun_path[UNIX_PATH_MAX-1] = '\0'; + addr.sun_path[UNIX_PATH_MAX - 1] = '\0'; g->state = LAUNCHING; - if (connect (daemon_sock, (struct sockaddr *) &addr, sizeof addr) == -1) { + if (connect (daemon_sock, (struct sockaddr *)&addr, sizeof addr) == -1) { perrorf (g, "bind"); goto cleanup; } @@ -82,10 +83,12 @@ launch_unix (guestfs_h *g, void *datav, const char *sockpath) r = guestfs_int_recv_from_daemon (g, &size, &buf); free (buf); - if (r == -1) goto cleanup; + if (r == -1) + goto cleanup; if (size != GUESTFS_LAUNCH_FLAG) { - error (g, _("guestfs_launch failed, unexpected initial message from guestfsd")); + error (g, _("guestfs_launch failed, unexpected initial message from " + "guestfsd")); goto cleanup; } @@ -98,7 +101,7 @@ launch_unix (guestfs_h *g, void *datav, const char *sockpath) return 0; - cleanup: +cleanup: if (daemon_sock >= 0) close (daemon_sock); if (g->conn) { @@ -118,9 +121,7 @@ shutdown_unix (guestfs_h *g, void *datav, int check_for_errors) } static struct backend_ops backend_unix_ops = { - .data_size = 0, - .launch = launch_unix, - .shutdown = shutdown_unix, + .data_size = 0, .launch = launch_unix, .shutdown = shutdown_unix, }; void diff --git a/src/launch.c b/src/launch.c index 7bc9cf9..16685ec 100644 --- a/src/launch.c +++ b/src/launch.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include <config.h> @@ -35,7 +36,8 @@ #include "guestfs-internal-actions.h" #include "guestfs_protocol.h" -static struct backend { +static struct backend +{ struct backend *next; const char *name; const struct backend_ops *ops; @@ -62,15 +64,14 @@ guestfs_impl_launch (guestfs_h *g) /* Some common debugging information. */ if (g->verbose) { - CLEANUP_FREE_VERSION struct guestfs_version *v = - guestfs_version (g); + CLEANUP_FREE_VERSION struct guestfs_version *v = guestfs_version (g); struct backend *b; CLEANUP_FREE char *backend = guestfs_get_backend (g); debug (g, "launch: program=%s", g->program); if (STRNEQ (g->identifier, "")) debug (g, "launch: identifier=%s", g->identifier); - debug (g, "launch: version=%"PRIi64".%"PRIi64".%"PRIi64"%s", + debug (g, "launch: version=%" PRIi64 ".%" PRIi64 ".%" PRIi64 "%s", v->major, v->minor, v->release, v->extra); for (b = backends; b != NULL; b = b->next) @@ -79,7 +80,7 @@ guestfs_impl_launch (guestfs_h *g) debug (g, "launch: tmpdir=%s", g->tmpdir); debug (g, "launch: umask=0%03o", get_umask (g)); - debug (g, "launch: euid=%ju", (uintmax_t) geteuid ()); + debug (g, "launch: euid=%ju", (uintmax_t)geteuid ()); } /* Launch the appliance. */ @@ -112,8 +113,9 @@ guestfs_int_launch_send_progress (guestfs_h *g, int perdozen) gettimeofday (&tv, NULL); if (guestfs_int_timeval_diff (&g->launch_t, &tv) >= 5000) { - guestfs_progress progress_message = - { .proc = 0, .serial = 0, .position = perdozen, .total = 12 }; + guestfs_progress progress_message = { + .proc = 0, .serial = 0, .position = perdozen, .total = 12 + }; guestfs_int_progress_message_callback (g, &progress_message); } @@ -153,8 +155,9 @@ int guestfs_impl_max_disks (guestfs_h *g) { if (g->backend_ops->max_disks == NULL) - NOT_SUPPORTED (g, -1, - _("the current backend does not allow max disks to be queried")); + NOT_SUPPORTED ( + g, -1, + _("the current backend does not allow max disks to be queried")); return g->backend_ops->max_disks (g, g->backend_data); } @@ -165,7 +168,7 @@ guestfs_impl_max_disks (guestfs_h *g) int guestfs_impl_wait_ready (guestfs_h *g) { - if (g->state != READY) { + if (g->state != READY) { error (g, _("qemu has not been launched yet")); return -1; } @@ -213,8 +216,8 @@ guestfs_impl_get_state (guestfs_h *g) /* Add arbitrary qemu parameters. Useful for testing. */ int -guestfs_impl_config (guestfs_h *g, - const char *hv_param, const char *hv_value) +guestfs_impl_config (guestfs_h *g, const char *hv_param, + const char *hv_value) { struct hv_param *hp; @@ -229,14 +232,10 @@ guestfs_impl_config (guestfs_h *g, /* A bit fascist, but the user will probably break the extra * parameters that we add if they try to set any of these. */ - if (STREQ (hv_param, "-kernel") || - STREQ (hv_param, "-initrd") || - STREQ (hv_param, "-nographic") || - STREQ (hv_param, "-display") || - STREQ (hv_param, "-serial") || - STREQ (hv_param, "-full-screen") || - STREQ (hv_param, "-std-vga") || - STREQ (hv_param, "-vnc")) { + if (STREQ (hv_param, "-kernel") || STREQ (hv_param, "-initrd") || + STREQ (hv_param, "-nographic") || STREQ (hv_param, "-display") || + STREQ (hv_param, "-serial") || STREQ (hv_param, "-full-screen") || + STREQ (hv_param, "-std-vga") || STREQ (hv_param, "-vnc")) { error (g, _("parameter '%s' isn't allowed"), hv_param); return -1; } @@ -286,7 +285,7 @@ guestfs_impl_config (guestfs_h *g, char * guestfs_int_appliance_command_line (guestfs_h *g, const char *appliance_dev, - int flags) + int flags) { char root[64] = ""; char *term = getenv ("TERM"); @@ -303,53 +302,49 @@ guestfs_int_appliance_command_line (guestfs_h *g, const char *appliance_dev, snprintf (lpj_s, sizeof lpj_s, " lpj=%d", lpj); } - ret = safe_asprintf - (g, - "panic=1" /* force kernel to panic if daemon exits */ + ret = safe_asprintf ( + g, + "panic=1" /* force kernel to panic if daemon exits */ #ifdef __arm__ - " mem=%dM" + " mem=%dM" #endif #ifdef __i386__ - " noapic" /* workaround for RHBZ#857026 */ + " noapic" /* workaround for RHBZ#857026 */ #endif - " " SERIAL_CONSOLE /* serial console */ - EARLYPRINTK /* get messages from early boot */ + " " SERIAL_CONSOLE /* serial console */ + EARLYPRINTK /* get messages from early boot */ #ifdef __aarch64__ - " ignore_loglevel" - /* This option turns off the EFI RTC device. QEMU VMs don't - * currently provide EFI, and if the device is compiled in it - * will try to call the EFI function GetTime unconditionally - * (causing a call to NULL). However this option requires a - * non-upstream patch. - */ - " efi-rtc=noprobe" + " ignore_loglevel" + /* This option turns off the EFI RTC device. QEMU VMs don't + * currently provide EFI, and if the device is compiled in it + * will try to call the EFI function GetTime unconditionally + * (causing a call to NULL). However this option requires a + * non-upstream patch. + */ + " efi-rtc=noprobe" #endif - " udevtimeout=6000"/* for slow systems (RHBZ#480319, RHBZ#1096579) */ - " udev.event-timeout=6000" /* for newer udevd */ - " no_timer_check" /* fix for RHBZ#502058 */ - "%s" /* lpj */ - " acpi=off" /* ACPI is slow - 150-200ms extra on my laptop */ - " printk.time=1" /* display timestamp before kernel messages */ - " cgroup_disable=memory" /* saves us about 5 MB of RAM */ - "%s" /* root=appliance_dev */ - " %s" /* selinux */ - " %s" /* quiet/verbose */ - "%s" /* network */ - " TERM=%s" /* TERM environment variable */ - "%s%s" /* handle identifier */ - "%s%s", /* append */ + " udevtimeout=6000" /* for slow systems (RHBZ#480319, RHBZ#1096579) */ + " udev.event-timeout=6000" /* for newer udevd */ + " no_timer_check" /* fix for RHBZ#502058 */ + "%s" /* lpj */ + " acpi=off" /* ACPI is slow - 150-200ms extra on my laptop */ + " printk.time=1" /* display timestamp before kernel messages */ + " cgroup_disable=memory" /* saves us about 5 MB of RAM */ + "%s" /* root=appliance_dev */ + " %s" /* selinux */ + " %s" /* quiet/verbose */ + "%s" /* network */ + " TERM=%s" /* TERM environment variable */ + "%s%s" /* handle identifier */ + "%s%s", /* append */ #ifdef __arm__ - g->memsize, + g->memsize, #endif - lpj_s, - root, - g->selinux ? "selinux=1 enforcing=0" : "selinux=0", - g->verbose ? "guestfs_verbose=1" : "quiet", - g->enable_network ? " guestfs_network=1" : "", - term ? term : "linux", - STRNEQ (g->identifier, "") ? " guestfs_identifier=" : "", - g->identifier, - g->append ? " " : "", g->append ? g->append : ""); + lpj_s, root, g->selinux ? "selinux=1 enforcing=0" : "selinux=0", + g->verbose ? "guestfs_verbose=1" : "quiet", + g->enable_network ? " guestfs_network=1" : "", term ? term : "linux", + STRNEQ (g->identifier, "") ? " guestfs_identifier=" : "", + g->identifier, g->append ? " " : "", g->append ? g->append : ""); return ret; } @@ -403,7 +398,7 @@ guestfs_int_create_socketname (guestfs_h *g, const char *filename, if (guestfs_int_lazy_make_sockdir (g) == -1) return -1; - if (strlen (g->sockdir) + 1 + strlen (filename) > UNIX_PATH_MAX-1) { + if (strlen (g->sockdir) + 1 + strlen (filename) > UNIX_PATH_MAX - 1) { error (g, _("socket path too long: %s/%s"), g->sockdir, filename); return -1; } @@ -424,9 +419,11 @@ get_umask (guestfs_h *g) mode_t ret; int fd; struct stat statbuf; - CLEANUP_FREE char *filename = safe_asprintf (g, "%s/umask-check", g->tmpdir); + CLEANUP_FREE char *filename = + safe_asprintf (g, "%s/umask-check", g->tmpdir); - fd = open (filename, O_WRONLY|O_CREAT|O_TRUNC|O_NOCTTY|O_CLOEXEC, 0777); + fd = open (filename, O_WRONLY | O_CREAT | O_TRUNC | O_NOCTTY | O_CLOEXEC, + 0777); if (fd == -1) return -1; @@ -446,12 +443,14 @@ get_umask (guestfs_h *g) /* Register backends in a global list when the library is loaded. */ void -guestfs_int_register_backend (const char *name, const struct backend_ops *ops) +guestfs_int_register_backend (const char *name, + const struct backend_ops *ops) { struct backend *b; b = malloc (sizeof *b); - if (!b) abort (); + if (!b) + abort (); b->name = name; b->ops = ops; @@ -482,13 +481,13 @@ guestfs_int_set_backend (guestfs_h *g, const char *method) break; len = strlen (b->name); if (STRPREFIX (method, b->name) && method[len] == ':') { - arg_offs = len+1; + arg_offs = len + 1; break; } } if (b == NULL) - return -1; /* Not found. */ + return -1; /* Not found. */ /* At this point, we know it's a valid method. */ free (g->backend); @@ -512,12 +511,10 @@ guestfs_int_set_backend (guestfs_h *g, const char *method) /* This hack is only required to make static linking work. See: * https://stackoverflow.com/questions/1202494/why-doesnt-attribute-constructor... */ -void * -guestfs_int_force_load_backends[] = { +void *guestfs_int_force_load_backends[] = { guestfs_int_init_direct_backend, #ifdef HAVE_LIBVIRT_BACKEND guestfs_int_init_libvirt_backend, #endif - guestfs_int_init_uml_backend, - guestfs_int_init_unix_backend, + guestfs_int_init_uml_backend, guestfs_int_init_unix_backend, }; diff --git a/src/libvirt-auth.c b/src/libvirt-auth.c index cbc2461..92caa74 100644 --- a/src/libvirt-auth.c +++ b/src/libvirt-auth.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include <config.h> @@ -28,26 +29,26 @@ #include <libvirt/virterror.h> #endif - #include "guestfs.h" #include "guestfs-internal.h" #include "guestfs-internal-actions.h" #if defined(HAVE_LIBVIRT) -static struct { +static struct +{ int credtype; const char *credname; } libvirt_credential_types[NR_CREDENTIAL_TYPES] = { - { VIR_CRED_USERNAME, "username" }, - { VIR_CRED_AUTHNAME, "authname" }, - { VIR_CRED_LANGUAGE, "language" }, - { VIR_CRED_CNONCE, "cnonce" }, - { VIR_CRED_PASSPHRASE, "passphrase" }, - { VIR_CRED_ECHOPROMPT, "echoprompt" }, + { VIR_CRED_USERNAME, "username" }, + { VIR_CRED_AUTHNAME, "authname" }, + { VIR_CRED_LANGUAGE, "language" }, + { VIR_CRED_CNONCE, "cnonce" }, + { VIR_CRED_PASSPHRASE, "passphrase" }, + { VIR_CRED_ECHOPROMPT, "echoprompt" }, { VIR_CRED_NOECHOPROMPT, "noechoprompt" }, - { VIR_CRED_REALM, "realm" }, - { VIR_CRED_EXTERNAL, "external" }, + { VIR_CRED_REALM, "realm" }, + { VIR_CRED_EXTERNAL, "external" }, }; static int @@ -79,7 +80,8 @@ get_string_of_credtype (int credtype) * an error or not, so don't depend on the current behaviour. */ int -guestfs_impl_set_libvirt_supported_credentials (guestfs_h *g, char *const *creds) +guestfs_impl_set_libvirt_supported_credentials (guestfs_h *g, + char *const *creds) { size_t i; int credtype; @@ -106,7 +108,8 @@ guestfs_impl_set_libvirt_supported_credentials (guestfs_h *g, char *const *creds } g->nr_supported_credentials = ncredtypes; - memcpy (g->supported_credentials, credtypes, sizeof g->supported_credentials); + memcpy (g->supported_credentials, credtypes, + sizeof g->supported_credentials); return 0; } @@ -115,8 +118,7 @@ guestfs_impl_set_libvirt_supported_credentials (guestfs_h *g, char *const *creds * libguestfs event to collect the desired credentials. */ static int -libvirt_auth_callback (virConnectCredentialPtr cred, - unsigned int ncred, +libvirt_auth_callback (virConnectCredentialPtr cred, unsigned int ncred, void *gv) { guestfs_h *g = gv; @@ -135,8 +137,8 @@ libvirt_auth_callback (virConnectCredentialPtr cred, g->nr_requested_credentials = ncred; guestfs_int_call_callbacks_message (g, GUESTFS_EVENT_LIBVIRT_AUTH, - g->saved_libvirt_uri, - strlen (g->saved_libvirt_uri)); + g->saved_libvirt_uri, + strlen (g->saved_libvirt_uri)); /* Clarified with Dan that it is not an error for some fields to be * left as NULL. @@ -157,14 +159,14 @@ libvirt_auth_callback (virConnectCredentialPtr cred, */ static int libvirt_auth_default_wrapper (virConnectCredentialPtr cred, - unsigned int ncred, - void *gv) + unsigned int ncred, void *gv) { guestfs_h *g = gv; if (!g->wrapper_warning_done) { printf (_("libvirt needs authentication to connect to libvirt URI %s\n" - "(see also: http://libvirt.org/auth.html http://libvirt.org/uri.html)\n"), + "(see also: http://libvirt.org/auth.html " + "http://libvirt.org/uri.html)\n"), g->saved_libvirt_uri ? g->saved_libvirt_uri : "NULL"); g->wrapper_warning_done = true; } @@ -188,7 +190,7 @@ exists_libvirt_auth_event (guestfs_h *g) /* Open a libvirt connection (called from other parts of the library). */ virConnectPtr guestfs_int_open_libvirt_connection (guestfs_h *g, const char *uri, - unsigned int flags) + unsigned int flags) { virConnectAuth authdata; virConnectPtr conn; @@ -207,8 +209,7 @@ guestfs_int_open_libvirt_connection (guestfs_h *g, const char *uri, authdata.ncredtype = g->nr_supported_credentials; authdata.cb = libvirt_auth_callback; authdata.cbdata = g; - } - else { + } else { /* Wrapper around libvirt's virConnectAuthPtrDefault, see comment * above. */ @@ -237,11 +238,12 @@ guestfs_int_open_libvirt_connection (guestfs_h *g, const char *uri, /* The calls below are meant to be called recursively from * the GUESTFS_EVENT_LIBVIRT_AUTH event. */ -#define CHECK_IN_EVENT_HANDLER(r) \ - if (g->nr_requested_credentials == 0) { \ - error (g, _("%s should only be called from within the GUESTFS_EVENT_LIBVIRT_AUTH event handler"), \ - __func__); \ - return r; \ +#define CHECK_IN_EVENT_HANDLER(r) \ + if (g->nr_requested_credentials == 0) { \ + error (g, _("%s should only be called from within the " \ + "GUESTFS_EVENT_LIBVIRT_AUTH event handler"), \ + __func__); \ + return r; \ } char ** @@ -254,22 +256,23 @@ guestfs_impl_get_libvirt_requested_credentials (guestfs_h *g) /* Convert the requested_credentials types to a list of strings. */ for (i = 0; i < g->nr_requested_credentials; ++i) - guestfs_int_add_string (g, &ret, - get_string_of_credtype (g->requested_credentials[i].type)); + guestfs_int_add_string ( + g, &ret, get_string_of_credtype (g->requested_credentials[i].type)); guestfs_int_end_stringsbuf (g, &ret); - return ret.argv; /* caller frees */ + return ret.argv; /* caller frees */ } char * -guestfs_impl_get_libvirt_requested_credential_prompt (guestfs_h *g, int index) +guestfs_impl_get_libvirt_requested_credential_prompt (guestfs_h *g, + int index) { size_t i; CHECK_IN_EVENT_HANDLER (NULL); - if (index >= 0 && (unsigned int) index < g->nr_requested_credentials) - i = (size_t) index; + if (index >= 0 && (unsigned int)index < g->nr_requested_credentials) + i = (size_t)index; else { error (g, _("credential index out of range")); return NULL; @@ -282,14 +285,15 @@ guestfs_impl_get_libvirt_requested_credential_prompt (guestfs_h *g, int index) } char * -guestfs_impl_get_libvirt_requested_credential_challenge (guestfs_h *g, int index) +guestfs_impl_get_libvirt_requested_credential_challenge (guestfs_h *g, + int index) { size_t i; CHECK_IN_EVENT_HANDLER (NULL); - if (index >= 0 && (unsigned int) index < g->nr_requested_credentials) - i = (size_t) index; + if (index >= 0 && (unsigned int)index < g->nr_requested_credentials) + i = (size_t)index; else { error (g, _("credential index out of range")); return NULL; @@ -302,14 +306,15 @@ guestfs_impl_get_libvirt_requested_credential_challenge (guestfs_h *g, int index } char * -guestfs_impl_get_libvirt_requested_credential_defresult (guestfs_h *g, int index) +guestfs_impl_get_libvirt_requested_credential_defresult (guestfs_h *g, + int index) { size_t i; CHECK_IN_EVENT_HANDLER (NULL); - if (index >= 0 && (unsigned int) index < g->nr_requested_credentials) - i = (size_t) index; + if (index >= 0 && (unsigned int)index < g->nr_requested_credentials) + i = (size_t)index; else { error (g, _("credential index out of range")); return NULL; @@ -323,21 +328,23 @@ guestfs_impl_get_libvirt_requested_credential_defresult (guestfs_h *g, int index int guestfs_impl_set_libvirt_requested_credential (guestfs_h *g, int index, - const char *cred, size_t cred_size) + const char *cred, + size_t cred_size) { size_t i; CHECK_IN_EVENT_HANDLER (-1); - if (index >= 0 && (unsigned int) index < g->nr_requested_credentials) - i = (size_t) index; + if (index >= 0 && (unsigned int)index < g->nr_requested_credentials) + i = (size_t)index; else { error (g, _("credential index out of range")); return -1; } /* All the evidence is that libvirt will free this. */ - g->requested_credentials[i].result = safe_malloc (g, cred_size+1 /* sic */); + g->requested_credentials[i].result = + safe_malloc (g, cred_size + 1 /* sic */); memcpy (g->requested_credentials[i].result, cred, cred_size); /* Some libvirt drivers are buggy (eg. libssh2), and they expect * that the cred field will be \0 terminated. To avoid surprises, @@ -351,44 +358,51 @@ guestfs_impl_set_libvirt_requested_credential (guestfs_h *g, int index, #else /* no libvirt at compile time */ -#define NOT_IMPL(r) \ - error (g, _("libvirt authentication APIs not available since this version of libguestfs was compiled without libvirt")); \ +#define NOT_IMPL(r) \ + error (g, _("libvirt authentication APIs not available since this " \ + "version of libguestfs was compiled without libvirt")); \ return r int -guestfs_impl_set_libvirt_supported_credentials (guestfs_h *g, char *const *creds) +guestfs_impl_set_libvirt_supported_credentials (guestfs_h *g, + char *const *creds) { - NOT_IMPL(-1); + NOT_IMPL (-1); } char ** guestfs_impl_get_libvirt_requested_credentials (guestfs_h *g) { - NOT_IMPL(NULL); + NOT_IMPL (NULL); } char * -guestfs_impl_get_libvirt_requested_credential_prompt (guestfs_h *g, int index) +guestfs_impl_get_libvirt_requested_credential_prompt (guestfs_h *g, + int index) { - NOT_IMPL(NULL); + NOT_IMPL (NULL); } char * -guestfs_impl_get_libvirt_requested_credential_challenge (guestfs_h *g, int index) +guestfs_impl_get_libvirt_requested_credential_challenge (guestfs_h *g, + int index) { - NOT_IMPL(NULL); + NOT_IMPL (NULL); } char * -guestfs_impl_get_libvirt_requested_credential_defresult (guestfs_h *g, int index) +guestfs_impl_get_libvirt_requested_credential_defresult (guestfs_h *g, + int index) { - NOT_IMPL(NULL); + NOT_IMPL (NULL); } int -guestfs_impl_set_libvirt_requested_credential (guestfs_h *g, int index, const char *cred, size_t cred_size) +guestfs_impl_set_libvirt_requested_credential (guestfs_h *g, int index, + const char *cred, + size_t cred_size) { - NOT_IMPL(-1); + NOT_IMPL (-1); } #endif /* no libvirt at compile time */ diff --git a/src/libvirt-domain.c b/src/libvirt-domain.c index b096fb3..a0b8d78 100644 --- a/src/libvirt-domain.c +++ b/src/libvirt-domain.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include <config.h> @@ -40,8 +41,15 @@ #if defined(HAVE_LIBVIRT) static xmlDocPtr get_domain_xml (guestfs_h *g, virDomainPtr dom); -static ssize_t for_each_disk (guestfs_h *g, xmlDocPtr doc, int (*f) (guestfs_h *g, const char *filename, const char *format, int readonly, const char *protocol, char *const *server, const char *username, void *data), void *data); -static int libvirt_selinux_label (guestfs_h *g, xmlDocPtr doc, char **label_rtn, char **imagelabel_rtn); +static ssize_t for_each_disk (guestfs_h *g, xmlDocPtr doc, + int (*f) (guestfs_h *g, const char *filename, + const char *format, int readonly, + const char *protocol, + char *const *server, + const char *username, void *data), + void *data); +static int libvirt_selinux_label (guestfs_h *g, xmlDocPtr doc, + char **label_rtn, char **imagelabel_rtn); static void ignore_errors (void *ignore, virErrorPtr ignore2) @@ -51,7 +59,7 @@ ignore_errors (void *ignore, virErrorPtr ignore2) int guestfs_impl_add_domain (guestfs_h *g, const char *domain_name, - const struct guestfs_add_domain_argv *optargs) + const struct guestfs_add_domain_argv *optargs) { virErrorPtr err; virConnectPtr conn = NULL; @@ -66,26 +74,34 @@ guestfs_impl_add_domain (guestfs_h *g, const char *domain_name, const char *cachemode; const char *discard; bool copyonread; - struct guestfs_add_libvirt_dom_argv optargs2 = { .bitmask = 0 }; + struct guestfs_add_libvirt_dom_argv optargs2 = {.bitmask = 0 }; libvirturi = optargs->bitmask & GUESTFS_ADD_DOMAIN_LIBVIRTURI_BITMASK - ? optargs->libvirturi : NULL; + ? optargs->libvirturi + : NULL; readonly = optargs->bitmask & GUESTFS_ADD_DOMAIN_READONLY_BITMASK - ? optargs->readonly : 0; + ? optargs->readonly + : 0; iface = optargs->bitmask & GUESTFS_ADD_DOMAIN_IFACE_BITMASK - ? optargs->iface : NULL; - live = optargs->bitmask & GUESTFS_ADD_DOMAIN_LIVE_BITMASK - ? optargs->live : 0; + ? optargs->iface + : NULL; + live = optargs->bitmask & GUESTFS_ADD_DOMAIN_LIVE_BITMASK ? optargs->live + : 0; allowuuid = optargs->bitmask & GUESTFS_ADD_DOMAIN_ALLOWUUID_BITMASK - ? optargs->allowuuid : 0; + ? optargs->allowuuid + : 0; readonlydisk = optargs->bitmask & GUESTFS_ADD_DOMAIN_READONLYDISK_BITMASK - ? optargs->readonlydisk : NULL; + ? optargs->readonlydisk + : NULL; cachemode = optargs->bitmask & GUESTFS_ADD_DOMAIN_CACHEMODE_BITMASK - ? optargs->cachemode : NULL; + ? optargs->cachemode + : NULL; discard = optargs->bitmask & GUESTFS_ADD_DOMAIN_DISCARD_BITMASK - ? optargs->discard : NULL; + ? optargs->discard + : NULL; copyonread = optargs->bitmask & GUESTFS_ADD_DOMAIN_COPYONREAD_BITMASK - ? optargs->copyonread : false; + ? optargs->copyonread + : false; if (live && readonly) { error (g, _("you cannot set both live and readonly flags")); @@ -93,7 +109,8 @@ guestfs_impl_add_domain (guestfs_h *g, const char *domain_name, } /* Connect to libvirt, find the domain. */ - conn = guestfs_int_open_libvirt_connection (g, libvirturi, VIR_CONNECT_RO); + conn = + guestfs_int_open_libvirt_connection (g, libvirturi, VIR_CONNECT_RO); if (!conn) { err = virGetLastError (); error (g, _("could not connect to libvirt (code %d, domain %d): %s"), @@ -117,8 +134,8 @@ guestfs_impl_add_domain (guestfs_h *g, const char *domain_name, if (!dom) { err = virGetLastError (); - error (g, _("no libvirt domain called '%s': %s"), - domain_name, err->message); + error (g, _("no libvirt domain called '%s': %s"), domain_name, + err->message); goto cleanup; } @@ -153,14 +170,18 @@ guestfs_impl_add_domain (guestfs_h *g, const char *domain_name, r = guestfs_add_libvirt_dom_argv (g, dom, &optargs2); - cleanup: - if (dom) virDomainFree (dom); - if (conn) virConnectClose (conn); +cleanup: + if (dom) + virDomainFree (dom); + if (conn) + virConnectClose (conn); return r; } -static int add_disk (guestfs_h *g, const char *filename, const char *format, int readonly, const char *protocol, char *const *server, const char *username, void *data); +static int add_disk (guestfs_h *g, const char *filename, const char *format, + int readonly, const char *protocol, + char *const *server, const char *username, void *data); static int connect_live (guestfs_h *g, virDomainPtr dom); enum readonlydisk { @@ -170,7 +191,8 @@ enum readonlydisk { readonlydisk_ignore, }; -struct add_disk_data { +struct add_disk_data +{ int readonly; enum readonlydisk readonlydisk; /* Other args to pass through to add_drive_opts. */ @@ -178,8 +200,9 @@ struct add_disk_data { }; int -guestfs_impl_add_libvirt_dom (guestfs_h *g, void *domvp, - const struct guestfs_add_libvirt_dom_argv *optargs) +guestfs_impl_add_libvirt_dom ( + guestfs_h *g, void *domvp, + const struct guestfs_add_libvirt_dom_argv *optargs) { virDomainPtr dom = domvp; ssize_t r; @@ -196,15 +219,15 @@ guestfs_impl_add_libvirt_dom (guestfs_h *g, void *domvp, CLEANUP_XMLFREEDOC xmlDocPtr doc = NULL; CLEANUP_FREE char *label = NULL, *imagelabel = NULL; - readonly = - optargs->bitmask & GUESTFS_ADD_LIBVIRT_DOM_READONLY_BITMASK - ? optargs->readonly : 0; - iface = - optargs->bitmask & GUESTFS_ADD_LIBVIRT_DOM_IFACE_BITMASK - ? optargs->iface : NULL; - live = - optargs->bitmask & GUESTFS_ADD_LIBVIRT_DOM_LIVE_BITMASK - ? optargs->live : 0; + readonly = optargs->bitmask & GUESTFS_ADD_LIBVIRT_DOM_READONLY_BITMASK + ? optargs->readonly + : 0; + iface = optargs->bitmask & GUESTFS_ADD_LIBVIRT_DOM_IFACE_BITMASK + ? optargs->iface + : NULL; + live = optargs->bitmask & GUESTFS_ADD_LIBVIRT_DOM_LIVE_BITMASK + ? optargs->live + : 0; if ((optargs->bitmask & GUESTFS_ADD_LIBVIRT_DOM_READONLYDISK_BITMASK)) { if (STREQ (optargs->readonlydisk, "error")) @@ -221,17 +244,17 @@ guestfs_impl_add_libvirt_dom (guestfs_h *g, void *domvp, } } - cachemode = - optargs->bitmask & GUESTFS_ADD_LIBVIRT_DOM_CACHEMODE_BITMASK - ? optargs->cachemode : NULL; + cachemode = optargs->bitmask & GUESTFS_ADD_LIBVIRT_DOM_CACHEMODE_BITMASK + ? optargs->cachemode + : NULL; - discard = - optargs->bitmask & GUESTFS_ADD_LIBVIRT_DOM_DISCARD_BITMASK - ? optargs->discard : NULL; + discard = optargs->bitmask & GUESTFS_ADD_LIBVIRT_DOM_DISCARD_BITMASK + ? optargs->discard + : NULL; - copyonread = - optargs->bitmask & GUESTFS_ADD_LIBVIRT_DOM_COPYONREAD_BITMASK - ? optargs->copyonread : false; + copyonread = optargs->bitmask & GUESTFS_ADD_LIBVIRT_DOM_COPYONREAD_BITMASK + ? optargs->copyonread + : false; if (live && readonly) { error (g, _("you cannot set both live and readonly flags")); @@ -260,10 +283,14 @@ guestfs_impl_add_libvirt_dom (guestfs_h *g, void *domvp, /* Dangerous to modify the disks of a running VM. */ error (g, _("error: domain is a live virtual machine.\n" - "Writing to the disks of a running virtual machine can cause disk corruption.\n" - "Either use read-only access, or if the guest is running the guestfsd daemon\n" - "specify live access. In most libguestfs tools these options are --ro or\n" - "--live respectively. Consult the documentation for further information.")); + "Writing to the disks of a running virtual machine can " + "cause disk corruption.\n" + "Either use read-only access, or if the guest is " + "running the guestfsd daemon\n" + "specify live access. In most libguestfs tools these " + "options are --ro or\n" + "--live respectively. Consult the documentation for " + "further information.")); return -1; } } @@ -280,10 +307,11 @@ guestfs_impl_add_libvirt_dom (guestfs_h *g, void *domvp, return -1; if (label && imagelabel) { guestfs_set_backend_setting (g, "internal_libvirt_label", label); - guestfs_set_backend_setting (g, "internal_libvirt_imagelabel", imagelabel); - guestfs_set_backend_setting (g, "internal_libvirt_norelabel_disks", "1"); - } - else + guestfs_set_backend_setting (g, "internal_libvirt_imagelabel", + imagelabel); + guestfs_set_backend_setting (g, "internal_libvirt_norelabel_disks", + "1"); + } else guestfs_clear_backend_setting (g, "internal_libvirt_norelabel_disks"); /* Add the disks. */ @@ -319,40 +347,56 @@ guestfs_impl_add_libvirt_dom (guestfs_h *g, void *domvp, } static int -add_disk (guestfs_h *g, - const char *filename, const char *format, int readonly_in_xml, - const char *protocol, char *const *server, const char *username, - void *datavp) +add_disk (guestfs_h *g, const char *filename, const char *format, + int readonly_in_xml, const char *protocol, char *const *server, + const char *username, void *datavp) { struct add_disk_data *data = datavp; /* Copy whole struct so we can make local changes: */ struct guestfs_add_drive_opts_argv optargs = data->optargs; int readonly = -1, error = 0, skip = 0; - if (readonly_in_xml) { /* <readonly/> appears in the XML */ - if (data->readonly) { /* asked to add disk read-only */ + if (readonly_in_xml) { /* <readonly/> appears in the XML */ + if (data->readonly) { /* asked to add disk read-only */ switch (data->readonlydisk) { - case readonlydisk_error: readonly = 1; break; - case readonlydisk_read: readonly = 1; break; - case readonlydisk_write: readonly = 1; break; - case readonlydisk_ignore: skip = 1; break; + case readonlydisk_error: + readonly = 1; + break; + case readonlydisk_read: + readonly = 1; + break; + case readonlydisk_write: + readonly = 1; + break; + case readonlydisk_ignore: + skip = 1; + break; } - } else { /* asked to add disk for read/write */ + } else { /* asked to add disk for read/write */ switch (data->readonlydisk) { - case readonlydisk_error: error = 1; break; - case readonlydisk_read: readonly = 1; break; - case readonlydisk_write: readonly = 0; break; - case readonlydisk_ignore: skip = 1; break; + case readonlydisk_error: + error = 1; + break; + case readonlydisk_read: + readonly = 1; + break; + case readonlydisk_write: + readonly = 0; + break; + case readonlydisk_ignore: + skip = 1; + break; } } - } else /* no <readonly/> in XML */ + } else /* no <readonly/> in XML */ readonly = data->readonly; if (skip) return 0; if (error) { - error (g, _("%s: disk is marked <readonly/> in libvirt XML, and readonlydisk was set to \"error\""), + error (g, _("%s: disk is marked <readonly/> in libvirt XML, and " + "readonlydisk was set to \"error\""), filename); return -1; } @@ -390,8 +434,8 @@ add_disk (guestfs_h *g, * https://bugzilla.redhat.com/show_bug.cgi?id=912499#c7 */ static int -libvirt_selinux_label (guestfs_h *g, xmlDocPtr doc, - char **label_rtn, char **imagelabel_rtn) +libvirt_selinux_label (guestfs_h *g, xmlDocPtr doc, char **label_rtn, + char **imagelabel_rtn) { CLEANUP_XMLXPATHFREECONTEXT xmlXPathContextPtr xpathCtx = NULL; CLEANUP_XMLXPATHFREEOBJECT xmlXPathObjectPtr xpathObj = NULL; @@ -445,14 +489,14 @@ libvirt_selinux_label (guestfs_h *g, xmlDocPtr doc, /* Find the <label/> and <imagelabel/> child nodes. */ for (child = node->children; child != NULL; child = child->next) { - if (!gotlabel && STREQ ((char *) child->name, "label")) { + if (!gotlabel && STREQ ((char *)child->name, "label")) { /* Get the label content. */ - *label_rtn = (char *) xmlNodeGetContent (child); + *label_rtn = (char *)xmlNodeGetContent (child); gotlabel = 1; } - if (!gotimagelabel && STREQ ((char *) child->name, "imagelabel")) { + if (!gotimagelabel && STREQ ((char *)child->name, "imagelabel")) { /* Get the imagelabel content. */ - *imagelabel_rtn = (char *) xmlNodeGetContent (child); + *imagelabel_rtn = (char *)xmlNodeGetContent (child); gotimagelabel = 1; } } @@ -465,14 +509,11 @@ libvirt_selinux_label (guestfs_h *g, xmlDocPtr doc, * Returns number of disks, or -1 if there was an error. */ static ssize_t -for_each_disk (guestfs_h *g, - xmlDocPtr doc, - int (*f) (guestfs_h *g, - const char *filename, const char *format, - int readonly, +for_each_disk (guestfs_h *g, xmlDocPtr doc, + int (*f) (guestfs_h *g, const char *filename, + const char *format, int readonly, const char *protocol, char *const *server, - const char *username, - void *data), + const char *username, void *data), void *data) { size_t i, nr_added = 0, nr_nodes; @@ -500,7 +541,8 @@ for_each_disk (guestfs_h *g, if (nodes != NULL) { nr_nodes = nodes->nodeNr; for (i = 0; i < nr_nodes; ++i) { - CLEANUP_FREE char *type = NULL, *filename = NULL, *format = NULL, *protocol = NULL, *username = NULL; + CLEANUP_FREE char *type = NULL, *filename = NULL, *format = NULL, + *protocol = NULL, *username = NULL; CLEANUP_FREE_STRING_LIST char **server = NULL; CLEANUP_XMLXPATHFREEOBJECT xmlXPathObjectPtr xptype = NULL; CLEANUP_XMLXPATHFREEOBJECT xmlXPathObjectPtr xpformat = NULL; @@ -523,33 +565,34 @@ for_each_disk (guestfs_h *g, * Check the <disk type=..> attribute first to find out which one. */ xptype = xmlXPathEvalExpression (BAD_CAST "./@type", xpathCtx); - if (xptype == NULL || - xptype->nodesetval == NULL || + if (xptype == NULL || xptype->nodesetval == NULL || xptype->nodesetval->nodeNr == 0) { - continue; /* no type attribute, skip it */ + continue; /* no type attribute, skip it */ } assert (xptype->nodesetval->nodeTab[0]); assert (xptype->nodesetval->nodeTab[0]->type == XML_ATTRIBUTE_NODE); - attr = (xmlAttrPtr) xptype->nodesetval->nodeTab[0]; - type = (char *) xmlNodeListGetString (doc, attr->children, 1); + attr = (xmlAttrPtr)xptype->nodesetval->nodeTab[0]; + type = (char *)xmlNodeListGetString (doc, attr->children, 1); - if (STREQ (type, "file")) { /* type = "file" so look at source/@file */ + if (STREQ (type, + "file")) { /* type = "file" so look at source/@file */ xpathCtx->node = nodes->nodeTab[i]; - xpfilename = xmlXPathEvalExpression (BAD_CAST "./source/@file", - xpathCtx); - if (xpfilename == NULL || - xpfilename->nodesetval == NULL || + xpfilename = + xmlXPathEvalExpression (BAD_CAST "./source/@file", xpathCtx); + if (xpfilename == NULL || xpfilename->nodesetval == NULL || xpfilename->nodesetval->nodeNr == 0) - continue; /* disk filename not found, skip this */ - } else if (STREQ (type, "block")) { /* type = "block", use source/@dev */ + continue; /* disk filename not found, skip this */ + } else if (STREQ (type, + "block")) { /* type = "block", use source/@dev */ xpathCtx->node = nodes->nodeTab[i]; - xpfilename = xmlXPathEvalExpression (BAD_CAST "./source/@dev", - xpathCtx); - if (xpfilename == NULL || - xpfilename->nodesetval == NULL || + xpfilename = + xmlXPathEvalExpression (BAD_CAST "./source/@dev", xpathCtx); + if (xpfilename == NULL || xpfilename->nodesetval == NULL || xpfilename->nodesetval->nodeNr == 0) - continue; /* disk filename not found, skip this */ - } else if (STREQ (type, "network")) { /* type = "network", use source/@name */ + continue; /* disk filename not found, skip this */ + } else if (STREQ ( + type, + "network")) { /* type = "network", use source/@name */ int hi; debug (g, _("disk[%zu]: network device"), i); @@ -558,41 +601,38 @@ for_each_disk (guestfs_h *g, /* Get the protocol (e.g. "rbd"). Required. */ xpprotocol = xmlXPathEvalExpression (BAD_CAST "./source/@protocol", xpathCtx); - if (xpprotocol == NULL || - xpprotocol->nodesetval == NULL || + if (xpprotocol == NULL || xpprotocol->nodesetval == NULL || xpprotocol->nodesetval->nodeNr == 0) continue; assert (xpprotocol->nodesetval->nodeTab[0]); assert (xpprotocol->nodesetval->nodeTab[0]->type == XML_ATTRIBUTE_NODE); - attr = (xmlAttrPtr) xpprotocol->nodesetval->nodeTab[0]; - protocol = (char *) xmlNodeListGetString (doc, attr->children, 1); + attr = (xmlAttrPtr)xpprotocol->nodesetval->nodeTab[0]; + protocol = (char *)xmlNodeListGetString (doc, attr->children, 1); debug (g, _("disk[%zu]: protocol: %s"), i, protocol); /* <source name="..."> is the path/exportname. Optional. */ - xpfilename = xmlXPathEvalExpression (BAD_CAST "./source/@name", - xpathCtx); - if (xpfilename == NULL || - xpfilename->nodesetval == NULL) + xpfilename = + xmlXPathEvalExpression (BAD_CAST "./source/@name", xpathCtx); + if (xpfilename == NULL || xpfilename->nodesetval == NULL) continue; /* <auth username="...">. Optional. */ - xpusername = xmlXPathEvalExpression (BAD_CAST "./auth/@username", - xpathCtx); - if (xpusername != NULL && - xpusername->nodesetval != NULL && + xpusername = + xmlXPathEvalExpression (BAD_CAST "./auth/@username", xpathCtx); + if (xpusername != NULL && xpusername->nodesetval != NULL && xpusername->nodesetval->nodeNr != 0) { assert (xpusername->nodesetval->nodeTab[0]); - assert (xpusername->nodesetval->nodeTab[0]->type == XML_ATTRIBUTE_NODE); - attr = (xmlAttrPtr) xpusername->nodesetval->nodeTab[0]; - username = (char *) xmlNodeListGetString (doc, attr->children, 1); + assert (xpusername->nodesetval->nodeTab[0]->type == + XML_ATTRIBUTE_NODE); + attr = (xmlAttrPtr)xpusername->nodesetval->nodeTab[0]; + username = (char *)xmlNodeListGetString (doc, attr->children, 1); debug (g, _("disk[%zu]: username: %s"), i, username); } - xphost = xmlXPathEvalExpression (BAD_CAST "./source/host", - xpathCtx); - if (xphost == NULL || - xphost->nodesetval == NULL) + xphost = + xmlXPathEvalExpression (BAD_CAST "./source/host", xpathCtx); + if (xphost == NULL || xphost->nodesetval == NULL) continue; /* This gives us a list of <host> elements, which each have a @@ -600,19 +640,19 @@ for_each_disk (guestfs_h *g, * string, joined by a ':'. */ server = safe_malloc (g, sizeof (char *) * - (xphost->nodesetval->nodeNr + 1)); - for (hi = 0; hi < xphost->nodesetval->nodeNr ; hi++) { + (xphost->nodesetval->nodeNr + 1)); + for (hi = 0; hi < xphost->nodesetval->nodeNr; hi++) { xmlChar *name, *port; xmlNodePtr h = xphost->nodesetval->nodeTab[hi]; assert (h); assert (h->type == XML_ELEMENT_NODE); - name = xmlGetProp(h, BAD_CAST "name"); - assert(name); - port = xmlGetProp(h, BAD_CAST "port"); + name = xmlGetProp (h, BAD_CAST "name"); + assert (name); + port = xmlGetProp (h, BAD_CAST "port"); assert (port); debug (g, _("disk[%zu]: host: %s:%s"), i, name, port); - if (asprintf(&server[hi], "%s:%s", name, port) == -1) { + if (asprintf (&server[hi], "%s:%s", name, port) == -1) { perrorf (g, "asprintf"); return -1; } @@ -632,37 +672,37 @@ for_each_disk (guestfs_h *g, assert (xpfilename->nodesetval->nodeTab[0]); assert (xpfilename->nodesetval->nodeTab[0]->type == XML_ATTRIBUTE_NODE); - attr = (xmlAttrPtr) xpfilename->nodesetval->nodeTab[0]; - filename = (char *) xmlNodeListGetString (doc, attr->children, 1); + attr = (xmlAttrPtr)xpfilename->nodesetval->nodeTab[0]; + filename = (char *)xmlNodeListGetString (doc, attr->children, 1); debug (g, _("disk[%zu]: filename: %s"), i, filename); - } - else + } else /* For network protocols (eg. nbd), name may be omitted. */ filename = safe_strdup (g, ""); /* Get the disk format (may not be set). */ xpathCtx->node = nodes->nodeTab[i]; - xpformat = xmlXPathEvalExpression (BAD_CAST "./driver/@type", xpathCtx); - if (xpformat != NULL && - xpformat->nodesetval && + xpformat = + xmlXPathEvalExpression (BAD_CAST "./driver/@type", xpathCtx); + if (xpformat != NULL && xpformat->nodesetval && xpformat->nodesetval->nodeNr > 0) { assert (xpformat->nodesetval->nodeTab[0]); - assert (xpformat->nodesetval->nodeTab[0]->type == XML_ATTRIBUTE_NODE); - attr = (xmlAttrPtr) xpformat->nodesetval->nodeTab[0]; - format = (char *) xmlNodeListGetString (doc, attr->children, 1); + assert (xpformat->nodesetval->nodeTab[0]->type == + XML_ATTRIBUTE_NODE); + attr = (xmlAttrPtr)xpformat->nodesetval->nodeTab[0]; + format = (char *)xmlNodeListGetString (doc, attr->children, 1); } /* Get the <readonly/> flag. */ xpathCtx->node = nodes->nodeTab[i]; xpreadonly = xmlXPathEvalExpression (BAD_CAST "./readonly", xpathCtx); readonly = 0; - if (xpreadonly != NULL && - xpreadonly->nodesetval && + if (xpreadonly != NULL && xpreadonly->nodesetval && xpreadonly->nodesetval->nodeNr > 0) readonly = 1; if (f) - t = f (g, filename, format, readonly, protocol, server, username, data); + t = f (g, filename, format, readonly, protocol, server, username, + data); else t = 0; @@ -705,13 +745,13 @@ connect_live (guestfs_h *g, virDomainPtr dom) /* This gives us a set of all the <channel> nodes related to the * guestfsd virtio-serial channel. */ - xpathObj = xmlXPathEvalExpression (BAD_CAST - "//devices/channel[@type=\"unix\" and " - "./source/@mode=\"bind\" and " - "./source/@path and " - "./target/@type=\"virtio\" and " - "./target/@name=\"org.libguestfs.channel.0\"]", - xpathCtx); + xpathObj = xmlXPathEvalExpression ( + BAD_CAST "//devices/channel[@type=\"unix\" and " + "./source/@mode=\"bind\" and " + "./source/@path and " + "./target/@type=\"virtio\" and " + "./target/@name=\"org.libguestfs.channel.0\"]", + xpathCtx); if (xpathObj == NULL) { error (g, _("unable to evaluate XPath expression")); return -1; @@ -728,23 +768,25 @@ connect_live (guestfs_h *g, virDomainPtr dom) /* The path is in <source path=..> attribute. */ xppath = xmlXPathEvalExpression (BAD_CAST "./source/@path", xpathCtx); - if (xppath == NULL || - xppath->nodesetval == NULL || + if (xppath == NULL || xppath->nodesetval == NULL || xppath->nodesetval->nodeNr == 0) { xmlXPathFreeObject (xppath); - continue; /* no type attribute, skip it */ + continue; /* no type attribute, skip it */ } assert (xppath->nodesetval->nodeTab[0]); assert (xppath->nodesetval->nodeTab[0]->type == XML_ATTRIBUTE_NODE); - attr = (xmlAttrPtr) xppath->nodesetval->nodeTab[0]; - path = (char *) xmlNodeListGetString (doc, attr->children, 1); + attr = (xmlAttrPtr)xppath->nodesetval->nodeTab[0]; + path = (char *)xmlNodeListGetString (doc, attr->children, 1); break; } } if (path == NULL) { - error (g, _("this guest has no libvirt <channel> definition for guestfsd\n" - "See ATTACHING TO RUNNING DAEMONS in guestfs(3) for further information.")); + error ( + g, + _("this guest has no libvirt <channel> definition for guestfsd\n" + "See ATTACHING TO RUNNING DAEMONS in guestfs(3) for further " + "information.")); return -1; } @@ -762,15 +804,15 @@ get_domain_xml (guestfs_h *g, virDomainPtr dom) CLEANUP_FREE char *xml = virDomainGetXMLDesc (dom, 0); if (!xml) { err = virGetLastError (); - error (g, _("error reading libvirt XML information: %s"), err->message); + error (g, _("error reading libvirt XML information: %s"), + err->message); return NULL; } debug (g, "original domain XML:\n%s", xml); /* Parse the domain XML into an XML document. */ - doc = xmlReadMemory (xml, strlen (xml), - NULL, NULL, XML_PARSE_NONET); + doc = xmlReadMemory (xml, strlen (xml), NULL, NULL, XML_PARSE_NONET); if (doc == NULL) { error (g, _("unable to parse XML information returned by libvirt")); return NULL; @@ -781,22 +823,24 @@ get_domain_xml (guestfs_h *g, virDomainPtr dom) #else /* no libvirt at compile time */ -#define NOT_IMPL(r) \ - error (g, _("add-domain API not available since this version of libguestfs was compiled without libvirt")); \ +#define NOT_IMPL(r) \ + error (g, _("add-domain API not available since this version of " \ + "libguestfs was compiled without libvirt")); \ return r int guestfs_impl_add_domain (guestfs_h *g, const char *dom, - const struct guestfs_add_domain_argv *optargs) + const struct guestfs_add_domain_argv *optargs) { - NOT_IMPL(-1); + NOT_IMPL (-1); } int -guestfs_impl_add_libvirt_dom (guestfs_h *g, void *domvp, - const struct guestfs_add_libvirt_dom_argv *optargs) +guestfs_impl_add_libvirt_dom ( + guestfs_h *g, void *domvp, + const struct guestfs_add_libvirt_dom_argv *optargs) { - NOT_IMPL(-1); + NOT_IMPL (-1); } #endif /* no libvirt at compile time */ diff --git a/src/libvirt-is-version.c b/src/libvirt-is-version.c index e350c4d..90542cb 100644 --- a/src/libvirt-is-version.c +++ b/src/libvirt-is-version.c @@ -44,10 +44,10 @@ main (int argc, char *argv[]) switch (argc) { case 4: release = argtoint (argv[0], argv[3]); - /*FALLTHROUGH*/ + /*FALLTHROUGH*/ case 3: minor = argtoint (argv[0], argv[2]); - /*FALLTHROUGH*/ + /*FALLTHROUGH*/ case 2: major = argtoint (argv[0], argv[1]); break; @@ -60,8 +60,8 @@ main (int argc, char *argv[]) if (virGetVersion (&ver, NULL, NULL) == -1) exit (EXIT_FAILURE); - return ver >= (major * 1000000 + minor * 1000 + release) - ? EXIT_SUCCESS : EXIT_FAILURE; + return ver >= (major * 1000000 + minor * 1000 + release) ? EXIT_SUCCESS + : EXIT_FAILURE; } static unsigned int @@ -75,5 +75,5 @@ argtoint (const char *prog, const char *arg) if (errno || *endptr) error (EXIT_FAILURE, 0, "cannot parse integer argument '%s'", arg); - return (unsigned int) res; + return (unsigned int)res; } diff --git a/src/listfs.c b/src/listfs.c index de3b6f5..3e0c9ef 100644 --- a/src/listfs.c +++ b/src/listfs.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include <config.h> @@ -34,7 +35,8 @@ */ static void remove_from_list (char **list, const char *item); -static int check_with_vfs_type (guestfs_h *g, const char *dev, struct stringsbuf *sb); +static int check_with_vfs_type (guestfs_h *g, const char *dev, + struct stringsbuf *sb); static int is_mbr_partition_type_42 (guestfs_h *g, const char *partition); char ** @@ -44,9 +46,9 @@ guestfs_impl_list_filesystems (guestfs_h *g) DECLARE_STRINGSBUF (ret); const char *lvm2[] = { "lvm2", NULL }; - int has_lvm2 = guestfs_feature_available (g, (char **) lvm2); + int has_lvm2 = guestfs_feature_available (g, (char **)lvm2); const char *ldm[] = { "ldm", NULL }; - int has_ldm = guestfs_feature_available (g, (char **) ldm); + int has_ldm = guestfs_feature_available (g, (char **)ldm); CLEANUP_FREE_STRING_LIST char **devices = NULL; CLEANUP_FREE_STRING_LIST char **partitions = NULL; @@ -62,11 +64,14 @@ guestfs_impl_list_filesystems (guestfs_h *g) * by using part-to-dev. */ devices = guestfs_list_devices (g); - if (devices == NULL) goto error; + if (devices == NULL) + goto error; partitions = guestfs_list_partitions (g); - if (partitions == NULL) goto error; + if (partitions == NULL) + goto error; mds = guestfs_list_md_devices (g); - if (mds == NULL) goto error; + if (mds == NULL) + goto error; for (i = 0; partitions[i] != NULL; ++i) { CLEANUP_FREE char *dev = guestfs_part_to_dev (g, partitions[i]); @@ -81,7 +86,7 @@ guestfs_impl_list_filesystems (guestfs_h *g) /* Use vfs-type to check for filesystems on partitions. */ for (i = 0; partitions[i] != NULL; ++i) { - if (has_ldm == 0 || ! is_mbr_partition_type_42 (g, partitions[i])) { + if (has_ldm == 0 || !is_mbr_partition_type_42 (g, partitions[i])) { if (check_with_vfs_type (g, partitions[i], &ret) == -1) goto error; } @@ -95,7 +100,8 @@ guestfs_impl_list_filesystems (guestfs_h *g) if (has_lvm2 > 0) { /* Use vfs-type to check for filesystems on LVs. */ lvs = guestfs_lvs (g); - if (lvs == NULL) goto error; + if (lvs == NULL) + goto error; for (i = 0; lvs[i] != NULL; ++i) if (check_with_vfs_type (g, lvs[i], &ret) == -1) @@ -105,14 +111,16 @@ guestfs_impl_list_filesystems (guestfs_h *g) if (has_ldm > 0) { /* Use vfs-type to check for filesystems on Windows dynamic disks. */ ldmvols = guestfs_list_ldm_volumes (g); - if (ldmvols == NULL) goto error; + if (ldmvols == NULL) + goto error; for (i = 0; ldmvols[i] != NULL; ++i) if (check_with_vfs_type (g, ldmvols[i], &ret) == -1) goto error; ldmparts = guestfs_list_ldm_partitions (g); - if (ldmparts == NULL) goto error; + if (ldmparts == NULL) + goto error; for (i = 0; ldmparts[i] != NULL; ++i) if (check_with_vfs_type (g, ldmparts[i], &ret) == -1) @@ -123,7 +131,7 @@ guestfs_impl_list_filesystems (guestfs_h *g) guestfs_int_end_stringsbuf (g, &ret); return ret.argv; - error: +error: guestfs_int_free_stringsbuf (&ret); return NULL; } @@ -137,8 +145,8 @@ remove_from_list (char **list, const char *item) for (i = 0; list[i] != NULL; ++i) if (STREQ (list[i], item)) { free (list[i]); - for (; list[i+1] != NULL; ++i) - list[i] = list[i+1]; + for (; list[i + 1] != NULL; ++i) + list[i] = list[i + 1]; list[i] = NULL; return; } @@ -149,7 +157,8 @@ remove_from_list (char **list, const char *item) * 'ret' string list. */ static int -check_with_vfs_type (guestfs_h *g, const char *device, struct stringsbuf *sb) +check_with_vfs_type (guestfs_h *g, const char *device, + struct stringsbuf *sb) { const char *v; CLEANUP_FREE char *vfs_type = NULL; @@ -163,13 +172,14 @@ check_with_vfs_type (guestfs_h *g, const char *device, struct stringsbuf *sb) else if (STREQ (vfs_type, "")) v = "unknown"; else if (STREQ (vfs_type, "btrfs")) { - CLEANUP_FREE_BTRFSSUBVOLUME_LIST struct guestfs_btrfssubvolume_list *vols = - guestfs_btrfs_subvolume_list (g, device); + CLEANUP_FREE_BTRFSSUBVOLUME_LIST struct guestfs_btrfssubvolume_list + *vols = guestfs_btrfs_subvolume_list (g, device); if (vols == NULL) return -1; - int64_t default_volume = guestfs_btrfs_subvolume_get_default (g, device); + int64_t default_volume = + guestfs_btrfs_subvolume_get_default (g, device); for (size_t i = 0; i < vols->len; i++) { struct guestfs_btrfssubvolume *this = &vols->val[i]; @@ -177,24 +187,22 @@ check_with_vfs_type (guestfs_h *g, const char *device, struct stringsbuf *sb) /* Ignore the default subvolume. We get it by simply mounting * the whole device of this btrfs filesystem. */ - if (this->btrfssubvolume_id == (uint64_t) default_volume) + if (this->btrfssubvolume_id == (uint64_t)default_volume) continue; - guestfs_int_add_sprintf (g, sb, - "btrfsvol:%s/%s", - device, this->btrfssubvolume_path); + guestfs_int_add_sprintf (g, sb, "btrfsvol:%s/%s", device, + this->btrfssubvolume_path); guestfs_int_add_string (g, sb, "btrfs"); } v = vfs_type; - } - else { + } else { /* Ignore all "*_member" strings. In libblkid these are returned * for things which are members of some RAID or LVM set, most * importantly "LVM2_member" which is a PV. */ size_t n = strlen (vfs_type); - if (n >= 7 && STREQ (&vfs_type[n-7], "_member")) + if (n >= 7 && STREQ (&vfs_type[n - 7], "_member")) return 0; /* Ignore LUKS-encrypted partitions. These are also containers. */ @@ -237,7 +245,7 @@ is_mbr_partition_type_42 (guestfs_h *g, const char *partition) ret = mbr_id == 0x42; - out: +out: guestfs_pop_error_handler (g); return ret; diff --git a/src/lpj.c b/src/lpj.c index 37dfe2f..6122f13 100644 --- a/src/lpj.c +++ b/src/lpj.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include <config.h> @@ -54,7 +55,8 @@ gl_lock_define_initialized (static, lpj_lock); static int lpj = 0; static int read_lpj_from_dmesg (guestfs_h *g); static int read_lpj_from_files (guestfs_h *g); -static int read_lpj_common (guestfs_h *g, const char *func, struct command *cmd); +static int read_lpj_common (guestfs_h *g, const char *func, + struct command *cmd); int guestfs_int_get_lpj (guestfs_h *g) @@ -79,7 +81,7 @@ guestfs_int_get_lpj (guestfs_h *g) } lpj = read_lpj_from_files (g); - out: +out: gl_lock_unlock (lpj_lock); return lpj; } @@ -143,7 +145,7 @@ read_lpj_common (guestfs_h *g, const char *func, struct command *cmd) CLEANUP_FREE char *buf = NULL; guestfs_int_cmd_set_stdout_callback (cmd, read_all, &buf, - CMD_STDOUT_FLAG_WHOLE_BUFFER); + CMD_STDOUT_FLAG_WHOLE_BUFFER); r = guestfs_int_cmd_run (cmd); if (r == -1) return -1; @@ -151,9 +153,8 @@ read_lpj_common (guestfs_h *g, const char *func, struct command *cmd) char status_string[80]; debug (g, "%s: %s", func, - guestfs_int_exit_status_to_string (r, "external command", - status_string, - sizeof status_string)); + guestfs_int_exit_status_to_string ( + r, "external command", status_string, sizeof status_string)); return -1; } diff --git a/src/match.c b/src/match.c index 41cc5f9..4f1a6d4 100644 --- a/src/match.c +++ b/src/match.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include <config.h> @@ -57,13 +58,13 @@ guestfs_int_match1 (guestfs_h *g, const char *str, const pcre *re) if (r == PCRE_ERROR_NOMATCH) return NULL; - return r == 2 ? safe_strndup (g, &str[vec[2]], vec[3]-vec[2]) : NULL; + return r == 2 ? safe_strndup (g, &str[vec[2]], vec[3] - vec[2]) : NULL; } /* Match a regular expression which contains exactly two captures. */ int guestfs_int_match2 (guestfs_h *g, const char *str, const pcre *re, - char **ret1, char **ret2) + char **ret1, char **ret2) { size_t len = strlen (str); int vec[30], r; @@ -75,8 +76,10 @@ guestfs_int_match2 (guestfs_h *g, const char *str, const pcre *re, *ret1 = NULL; *ret2 = NULL; - if (r > 1) *ret1 = safe_strndup (g, &str[vec[2]], vec[3]-vec[2]); - if (r > 2) *ret2 = safe_strndup (g, &str[vec[4]], vec[5]-vec[4]); + if (r > 1) + *ret1 = safe_strndup (g, &str[vec[2]], vec[3] - vec[2]); + if (r > 2) + *ret2 = safe_strndup (g, &str[vec[4]], vec[5] - vec[4]); return 1; } @@ -84,7 +87,7 @@ guestfs_int_match2 (guestfs_h *g, const char *str, const pcre *re, /* Match a regular expression which contains exactly three captures. */ int guestfs_int_match3 (guestfs_h *g, const char *str, const pcre *re, - char **ret1, char **ret2, char **ret3) + char **ret1, char **ret2, char **ret3) { size_t len = strlen (str); int vec[30], r; @@ -97,9 +100,12 @@ guestfs_int_match3 (guestfs_h *g, const char *str, const pcre *re, *ret2 = NULL; *ret3 = NULL; - if (r > 1) *ret1 = safe_strndup (g, &str[vec[2]], vec[3]-vec[2]); - if (r > 2) *ret2 = safe_strndup (g, &str[vec[4]], vec[5]-vec[4]); - if (r > 3) *ret3 = safe_strndup (g, &str[vec[6]], vec[7]-vec[6]); + if (r > 1) + *ret1 = safe_strndup (g, &str[vec[2]], vec[3] - vec[2]); + if (r > 2) + *ret2 = safe_strndup (g, &str[vec[4]], vec[5] - vec[4]); + if (r > 3) + *ret3 = safe_strndup (g, &str[vec[6]], vec[7] - vec[6]); return 1; } @@ -107,7 +113,7 @@ guestfs_int_match3 (guestfs_h *g, const char *str, const pcre *re, /* Match a regular expression which contains exactly four captures. */ int guestfs_int_match4 (guestfs_h *g, const char *str, const pcre *re, - char **ret1, char **ret2, char **ret3, char **ret4) + char **ret1, char **ret2, char **ret3, char **ret4) { size_t len = strlen (str); int vec[30], r; @@ -121,10 +127,14 @@ guestfs_int_match4 (guestfs_h *g, const char *str, const pcre *re, *ret3 = NULL; *ret4 = NULL; - if (r > 1) *ret1 = safe_strndup (g, &str[vec[2]], vec[3]-vec[2]); - if (r > 2) *ret2 = safe_strndup (g, &str[vec[4]], vec[5]-vec[4]); - if (r > 3) *ret3 = safe_strndup (g, &str[vec[6]], vec[7]-vec[6]); - if (r > 4) *ret4 = safe_strndup (g, &str[vec[8]], vec[9]-vec[8]); + if (r > 1) + *ret1 = safe_strndup (g, &str[vec[2]], vec[3] - vec[2]); + if (r > 2) + *ret2 = safe_strndup (g, &str[vec[4]], vec[5] - vec[4]); + if (r > 3) + *ret3 = safe_strndup (g, &str[vec[6]], vec[7] - vec[6]); + if (r > 4) + *ret4 = safe_strndup (g, &str[vec[8]], vec[9] - vec[8]); return 1; } @@ -132,8 +142,8 @@ guestfs_int_match4 (guestfs_h *g, const char *str, const pcre *re, /* Match a regular expression which contains exactly six captures. */ int guestfs_int_match6 (guestfs_h *g, const char *str, const pcre *re, - char **ret1, char **ret2, char **ret3, char **ret4, - char **ret5, char **ret6) + char **ret1, char **ret2, char **ret3, char **ret4, + char **ret5, char **ret6) { size_t len = strlen (str); int vec[30], r; @@ -149,12 +159,18 @@ guestfs_int_match6 (guestfs_h *g, const char *str, const pcre *re, *ret5 = NULL; *ret6 = NULL; - if (r > 1) *ret1 = safe_strndup (g, &str[vec[2]], vec[3]-vec[2]); - if (r > 2) *ret2 = safe_strndup (g, &str[vec[4]], vec[5]-vec[4]); - if (r > 3) *ret3 = safe_strndup (g, &str[vec[6]], vec[7]-vec[6]); - if (r > 4) *ret4 = safe_strndup (g, &str[vec[8]], vec[9]-vec[8]); - if (r > 5) *ret5 = safe_strndup (g, &str[vec[10]], vec[11]-vec[10]); - if (r > 6) *ret6 = safe_strndup (g, &str[vec[12]], vec[13]-vec[12]); + if (r > 1) + *ret1 = safe_strndup (g, &str[vec[2]], vec[3] - vec[2]); + if (r > 2) + *ret2 = safe_strndup (g, &str[vec[4]], vec[5] - vec[4]); + if (r > 3) + *ret3 = safe_strndup (g, &str[vec[6]], vec[7] - vec[6]); + if (r > 4) + *ret4 = safe_strndup (g, &str[vec[8]], vec[9] - vec[8]); + if (r > 5) + *ret5 = safe_strndup (g, &str[vec[10]], vec[11] - vec[10]); + if (r > 6) + *ret6 = safe_strndup (g, &str[vec[12]], vec[13] - vec[12]); return 1; } diff --git a/src/mountable.c b/src/mountable.c index 9f7b451..b585a36 100644 --- a/src/mountable.c +++ b/src/mountable.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include <config.h> @@ -24,11 +25,11 @@ #include "guestfs-internal.h" #include "guestfs-internal-actions.h" - char * guestfs_impl_mountable_device (guestfs_h *g, const char *mountable) { - CLEANUP_FREE_INTERNAL_MOUNTABLE struct guestfs_internal_mountable *mnt = NULL; + CLEANUP_FREE_INTERNAL_MOUNTABLE struct guestfs_internal_mountable *mnt = + NULL; mnt = guestfs_internal_parse_mountable (g, mountable); if (mnt == NULL) @@ -40,7 +41,8 @@ guestfs_impl_mountable_device (guestfs_h *g, const char *mountable) char * guestfs_impl_mountable_subvolume (guestfs_h *g, const char *mountable) { - CLEANUP_FREE_INTERNAL_MOUNTABLE struct guestfs_internal_mountable *mnt = NULL; + CLEANUP_FREE_INTERNAL_MOUNTABLE struct guestfs_internal_mountable *mnt = + NULL; mnt = guestfs_internal_parse_mountable (g, mountable); if (mnt == NULL || STREQ (mnt->im_volume, "")) { diff --git a/src/osinfo.c b/src/osinfo.c index 4a4cbfc..b82502d 100644 --- a/src/osinfo.c +++ b/src/osinfo.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ /* Read libosinfo XML files to parse out just the @@ -68,7 +69,8 @@ COMPILE_REGEXP (re_major_minor, "(\\d+)\\.(\\d+)", 0) gl_lock_define_initialized (static, osinfo_db_lock); -static ssize_t osinfo_db_size = 0; /* 0 = unread, -1 = error, >= 1 = #records */ +static ssize_t osinfo_db_size = + 0; /* 0 = unread, -1 = error, >= 1 = #records */ static struct osinfo *osinfo_db = NULL; static int read_osinfo_db (guestfs_h *g); @@ -79,17 +81,19 @@ static void free_osinfo_db_entry (struct osinfo *); * the operating system. * * This returns: - * -1 => a fatal error ('error' has been called, caller must not ignore it) + * -1 => a fatal error ('error' has been called, caller must not ignore + * it) * 0 => could not locate the OS * 1 => matching OS found, the osinfo_ret pointer has been filled in */ int guestfs_int_osinfo_map (guestfs_h *g, const struct guestfs_isoinfo *isoinfo, - const struct osinfo **osinfo_ret) + const struct osinfo **osinfo_ret) { size_t i; - /* We only need to lock the database when reading it for the first time. */ + /* We only need to lock the database when reading it for the first time. + */ gl_lock_lock (osinfo_db_lock); if (osinfo_db_size == 0) { if (read_osinfo_db (g) == -1) { @@ -103,7 +107,7 @@ guestfs_int_osinfo_map (guestfs_h *g, const struct guestfs_isoinfo *isoinfo, return 0; /* Look in the database to see if we can find a match. */ - for (i = 0; i < (size_t) osinfo_db_size; ++i) { + for (i = 0; i < (size_t)osinfo_db_size; ++i) { if (osinfo_db[i].re_system_id) { if (!isoinfo->iso_system_id || !match (g, isoinfo->iso_system_id, osinfo_db[i].re_system_id)) @@ -118,13 +122,15 @@ guestfs_int_osinfo_map (guestfs_h *g, const struct guestfs_isoinfo *isoinfo, if (osinfo_db[i].re_publisher_id) { if (!isoinfo->iso_publisher_id || - !match (g, isoinfo->iso_publisher_id, osinfo_db[i].re_publisher_id)) + !match (g, isoinfo->iso_publisher_id, + osinfo_db[i].re_publisher_id)) continue; } if (osinfo_db[i].re_application_id) { if (!isoinfo->iso_application_id || - !match (g, isoinfo->iso_application_id, osinfo_db[i].re_application_id)) + !match (g, isoinfo->iso_application_id, + osinfo_db[i].re_application_id)) continue; } @@ -176,7 +182,8 @@ read_osinfo_db (guestfs_h *g) for (;;) { errno = 0; d = readdir (dir); - if (!d) break; + if (!d) + break; if (STRSUFFIX (d->d_name, ".xml")) { r = read_osinfo_db_xml (g, d->d_name); @@ -201,7 +208,7 @@ read_osinfo_db (guestfs_h *g) return 0; - error: +error: if (dir) closedir (dir); @@ -209,7 +216,7 @@ read_osinfo_db (guestfs_h *g) * mark the database as having a permanent error. */ if (osinfo_db_size > 0) { - for (i = 0; i < (size_t) osinfo_db_size; ++i) + for (i = 0; i < (size_t)osinfo_db_size; ++i) free_osinfo_db_entry (&osinfo_db[i]); } free (osinfo_db); @@ -219,9 +226,12 @@ read_osinfo_db (guestfs_h *g) return -1; } -static int read_iso_node (guestfs_h *g, xmlNodePtr iso_node, struct osinfo *osinfo); -static int read_media_node (guestfs_h *g, xmlXPathContextPtr xpathCtx, xmlNodePtr media_node, struct osinfo *osinfo); -static int read_os_node (guestfs_h *g, xmlXPathContextPtr xpathCtx, xmlNodePtr os_node, struct osinfo *osinfo); +static int read_iso_node (guestfs_h *g, xmlNodePtr iso_node, + struct osinfo *osinfo); +static int read_media_node (guestfs_h *g, xmlXPathContextPtr xpathCtx, + xmlNodePtr media_node, struct osinfo *osinfo); +static int read_os_node (guestfs_h *g, xmlXPathContextPtr xpathCtx, + xmlNodePtr os_node, struct osinfo *osinfo); /* Read a single XML file from LIBOSINFO_DB_OS_PATH/filename. Only * memory allocation failures are fatal errors here. @@ -255,8 +265,8 @@ read_osinfo_db_xml (guestfs_h *g, const char *filename) /* Get all <iso> nodes at any depth, then use the parent pointers in * order to work back up the tree. */ - xpathObj = xmlXPathEvalExpression (BAD_CAST "/libosinfo/os/media/iso", - xpathCtx); + xpathObj = + xmlXPathEvalExpression (BAD_CAST "/libosinfo/os/media/iso", xpathCtx); if (xpathObj == NULL) { error (g, _("osinfo: %s: unable to evaluate XPath expression"), pathname); @@ -266,27 +276,27 @@ read_osinfo_db_xml (guestfs_h *g, const char *filename) nodes = xpathObj->nodesetval; if (nodes != NULL) { - for (i = 0; i < (size_t) nodes->nodeNr; ++i) { + for (i = 0; i < (size_t)nodes->nodeNr; ++i) { iso_node = nodes->nodeTab[i]; assert (iso_node != NULL); - assert (STREQ ((const char *) iso_node->name, "iso")); + assert (STREQ ((const char *)iso_node->name, "iso")); assert (iso_node->type == XML_ELEMENT_NODE); media_node = iso_node->parent; assert (media_node != NULL); - assert (STREQ ((const char *) media_node->name, "media")); + assert (STREQ ((const char *)media_node->name, "media")); assert (media_node->type == XML_ELEMENT_NODE); os_node = media_node->parent; assert (os_node != NULL); - assert (STREQ ((const char *) os_node->name, "os")); + assert (STREQ ((const char *)os_node->name, "os")); assert (os_node->type == XML_ELEMENT_NODE); /* Allocate an osinfo record. */ osinfo_db_size++; osinfo_db = safe_realloc (g, osinfo_db, sizeof (struct osinfo) * osinfo_db_size); - osinfo = &osinfo_db[osinfo_db_size-1]; + osinfo = &osinfo_db[osinfo_db_size - 1]; memset (osinfo, 0, sizeof *osinfo); /* Read XML fields into the new osinfo record. */ @@ -329,19 +339,16 @@ read_iso_node (guestfs_h *g, xmlNodePtr iso_node, struct osinfo *osinfo) xmlNodePtr child; for (child = iso_node->children; child; child = child->next) { - if (STREQ ((const char *) child->name, "system-id")) { + if (STREQ ((const char *)child->name, "system-id")) { if (compile_re (g, child, &osinfo->re_system_id) == -1) return -1; - } - else if (STREQ ((const char *) child->name, "volume-id")) { + } else if (STREQ ((const char *)child->name, "volume-id")) { if (compile_re (g, child, &osinfo->re_volume_id) == -1) return -1; - } - else if (STREQ ((const char *) child->name, "publisher-id")) { + } else if (STREQ ((const char *)child->name, "publisher-id")) { if (compile_re (g, child, &osinfo->re_publisher_id) == -1) return -1; - } - else if (STREQ ((const char *) child->name, "application-id")) { + } else if (STREQ ((const char *)child->name, "application-id")) { if (compile_re (g, child, &osinfo->re_application_id) == -1) return -1; } @@ -355,13 +362,15 @@ compile_re (guestfs_h *g, xmlNodePtr node, pcre **re) { const char *err; int offset; - CLEANUP_FREE char *content = (char *) xmlNodeGetContent (node); + CLEANUP_FREE char *content = (char *)xmlNodeGetContent (node); if (content) { *re = pcre_compile (content, 0, &err, &offset, NULL); if (*re == NULL) - debug (g, "osinfo: could not parse regular expression '%s': %s (ignored)", - content, err); + debug ( + g, + "osinfo: could not parse regular expression '%s': %s (ignored)", + content, err); } return 0; @@ -381,7 +390,7 @@ read_media_node (guestfs_h *g, xmlXPathContextPtr xpathCtx, attr = xp->nodesetval->nodeTab[0]; assert (attr); assert (attr->type == XML_ATTRIBUTE_NODE); - osinfo->arch = (char *) xmlNodeGetContent (attr); + osinfo->arch = (char *)xmlNodeGetContent (attr); } osinfo->is_live_disk = 0; /* If no 'live' attr, defaults to false. */ @@ -394,36 +403,37 @@ read_media_node (guestfs_h *g, xmlXPathContextPtr xpathCtx, attr = xp2->nodesetval->nodeTab[0]; assert (attr); assert (attr->type == XML_ATTRIBUTE_NODE); - content = (char *) xmlNodeGetContent (attr); + content = (char *)xmlNodeGetContent (attr); osinfo->is_live_disk = STREQ (content, "true"); } return 0; } -static int parse_version (guestfs_h *g, xmlNodePtr node, struct osinfo *osinfo); -static int parse_family (guestfs_h *g, xmlNodePtr node, struct osinfo *osinfo); -static int parse_distro (guestfs_h *g, xmlNodePtr node, struct osinfo *osinfo); +static int parse_version (guestfs_h *g, xmlNodePtr node, + struct osinfo *osinfo); +static int parse_family (guestfs_h *g, xmlNodePtr node, + struct osinfo *osinfo); +static int parse_distro (guestfs_h *g, xmlNodePtr node, + struct osinfo *osinfo); /* Read some fields under the <os/> node. */ static int -read_os_node (guestfs_h *g, xmlXPathContextPtr xpathCtx, - xmlNodePtr os_node, struct osinfo *osinfo) +read_os_node (guestfs_h *g, xmlXPathContextPtr xpathCtx, xmlNodePtr os_node, + struct osinfo *osinfo) { xmlNodePtr child; for (child = os_node->children; child; child = child->next) { - if (STREQ ((const char *) child->name, "name")) - osinfo->product_name = (char *) xmlNodeGetContent (child); - else if (STREQ ((const char *) child->name, "version")) { + if (STREQ ((const char *)child->name, "name")) + osinfo->product_name = (char *)xmlNodeGetContent (child); + else if (STREQ ((const char *)child->name, "version")) { if (parse_version (g, child, osinfo) == -1) return -1; - } - else if (STREQ ((const char *) child->name, "family")) { + } else if (STREQ ((const char *)child->name, "family")) { if (parse_family (g, child, osinfo) == -1) return -1; - } - else if (STREQ ((const char *) child->name, "distro")) { + } else if (STREQ ((const char *)child->name, "distro")) { if (parse_distro (g, child, osinfo) == -1) return -1; } @@ -438,7 +448,7 @@ parse_version (guestfs_h *g, xmlNodePtr node, struct osinfo *osinfo) CLEANUP_FREE char *content = NULL; CLEANUP_FREE char *major = NULL, *minor = NULL; - content = (char *) xmlNodeGetContent (node); + content = (char *)xmlNodeGetContent (node); if (content) { if (match2 (g, content, re_major_minor, &major, &minor)) { osinfo->major_version = guestfs_int_parse_unsigned_int (g, major); @@ -460,7 +470,7 @@ parse_family (guestfs_h *g, xmlNodePtr node, struct osinfo *osinfo) osinfo->type = OS_TYPE_UNKNOWN; - content = (char *) xmlNodeGetContent (node); + content = (char *)xmlNodeGetContent (node); if (content) { if (STREQ (content, "linux")) osinfo->type = OS_TYPE_LINUX; @@ -488,7 +498,7 @@ parse_distro (guestfs_h *g, xmlNodePtr node, struct osinfo *osinfo) osinfo->distro = OS_DISTRO_UNKNOWN; - content = (char *) xmlNodeGetContent (node); + content = (char *)xmlNodeGetContent (node); if (content) { if (STREQ (content, "altlinux")) osinfo->distro = OS_DISTRO_ALTLINUX; diff --git a/src/private-data.c b/src/private-data.c index 3f6e6f1..c44e36b 100644 --- a/src/private-data.c +++ b/src/private-data.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include <config.h> @@ -33,9 +34,10 @@ * majority of callers will never use it. This means g->pda is * likely to be NULL. */ -struct pda_entry { - char *key; /* key */ - void *data; /* opaque user data pointer */ +struct pda_entry +{ + char *key; /* key */ + void *data; /* opaque user data pointer */ }; static size_t @@ -91,9 +93,9 @@ void * guestfs_get_private (guestfs_h *g, const char *key) { if (g->pda == NULL) - return NULL; /* no keys have been set */ + return NULL; /* no keys have been set */ - const struct pda_entry k = { .key = (char *) key }; + const struct pda_entry k = {.key = (char *)key }; struct pda_entry *entry = hash_lookup (g->pda, &k); if (entry) return entry->data; diff --git a/src/proto.c b/src/proto.c index df7be89..eae4f1b 100644 --- a/src/proto.c +++ b/src/proto.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include <config.h> @@ -102,7 +103,7 @@ child_cleanup (guestfs_h *g) /* Convenient wrapper to generate a progress message callback. */ void guestfs_int_progress_message_callback (guestfs_h *g, - const guestfs_progress *message) + const guestfs_progress *message) { uint64_t array[4]; @@ -111,8 +112,8 @@ guestfs_int_progress_message_callback (guestfs_h *g, array[2] = message->position; array[3] = message->total; - guestfs_int_call_callbacks_array (g, GUESTFS_EVENT_PROGRESS, - array, sizeof array / sizeof array[0]); + guestfs_int_call_callbacks_array (g, GUESTFS_EVENT_PROGRESS, array, + sizeof array / sizeof array[0]); } /* Connection modules call us back here when they get a log message. */ @@ -163,8 +164,8 @@ check_daemon_socket (guestfs_h *g) assert (g->conn); /* callers must check this */ - again: - if (! g->conn->ops->can_read_data (g, g->conn)) +again: + if (!g->conn->ops->can_read_data (g, g->conn)) return 1; n = g->conn->ops->read_data (g, g->conn, buf, 4); @@ -194,7 +195,8 @@ check_daemon_socket (guestfs_h *g) } if (flag != GUESTFS_CANCEL_FLAG) { - error (g, _("check_daemon_socket: read 0x%x from daemon, expected 0x%x. Lost protocol synchronization (bad!)\n"), + error (g, _("check_daemon_socket: read 0x%x from daemon, expected " + "0x%x. Lost protocol synchronization (bad!)\n"), flag, GUESTFS_CANCEL_FLAG); return -1; } @@ -203,9 +205,8 @@ check_daemon_socket (guestfs_h *g) } int -guestfs_int_send (guestfs_h *g, int proc_nr, - uint64_t progress_hint, uint64_t optargs_bitmask, - xdrproc_t xdrp, char *args) +guestfs_int_send (guestfs_h *g, int proc_nr, uint64_t progress_hint, + uint64_t optargs_bitmask, xdrproc_t xdrp, char *args) { struct guestfs_message_header hdr; XDR xdr; @@ -305,7 +306,8 @@ fadvise_sequential (int fd) #endif } -static int send_file_chunk (guestfs_h *g, int cancel, const char *buf, size_t len); +static int send_file_chunk (guestfs_h *g, int cancel, const char *buf, + size_t len); static int send_file_data (guestfs_h *g, const char *buf, size_t len); static int send_file_cancellation (guestfs_h *g); static int send_file_complete (guestfs_h *g); @@ -324,7 +326,7 @@ guestfs_int_send_file (guestfs_h *g, const char *filename) g->user_cancel = 0; - fd = open (filename, O_RDONLY|O_CLOEXEC); + fd = open (filename, O_RDONLY | O_CLOEXEC); if (fd == -1) { perrorf (g, "open: %s", filename); send_file_cancellation (g); @@ -338,10 +340,11 @@ guestfs_int_send_file (guestfs_h *g, const char *filename) r = read (fd, buf, GUESTFS_MAX_CHUNK_SIZE); if (r == -1 && (errno == EINTR || errno == EAGAIN)) continue; - if (r <= 0) break; + if (r <= 0) + break; err = send_file_data (g, buf, r); if (err < 0) { - if (err == -2) /* daemon sent cancellation */ + if (err == -2) /* daemon sent cancellation */ send_file_cancellation (g); close (fd); return err; @@ -373,7 +376,7 @@ guestfs_int_send_file (guestfs_h *g, const char *filename) err = send_file_complete (g); if (err < 0) { - if (err == -2) /* daemon sent cancellation */ + if (err == -2) /* daemon sent cancellation */ send_file_cancellation (g); return err; } @@ -417,16 +420,17 @@ send_file_chunk (guestfs_h *g, int cancel, const char *buf, size_t buflen) * excessive stack usage and unnecessary copies. */ msg_out = safe_malloc (g, GUESTFS_MAX_CHUNK_SIZE + 4 + 48); - xdrmem_create (&xdr, msg_out + 4, GUESTFS_MAX_CHUNK_SIZE + 48, XDR_ENCODE); + xdrmem_create (&xdr, msg_out + 4, GUESTFS_MAX_CHUNK_SIZE + 48, + XDR_ENCODE); /* Serialize the chunk. */ chunk.cancel = cancel; chunk.data.data_len = buflen; - chunk.data.data_val = (char *) buf; + chunk.data.data_val = (char *)buf; if (!xdr_guestfs_chunk (&xdr, &chunk)) { - error (g, _("xdr_guestfs_chunk failed (buf = %p, buflen = %zu)"), - buf, buflen); + error (g, _("xdr_guestfs_chunk failed (buf = %p, buflen = %zu)"), buf, + buflen); xdr_destroy (&xdr); return -1; } @@ -522,33 +526,32 @@ recv_from_daemon (guestfs_h *g, uint32_t *size_rtn, void **buf_rtn) if (*size_rtn == GUESTFS_LAUNCH_FLAG) { if (g->state != LAUNCHING) - error (g, _("received magic signature from guestfsd, but in state %d"), - (int) g->state); + error (g, + _("received magic signature from guestfsd, but in state %d"), + (int)g->state); else { g->state = READY; guestfs_int_call_callbacks_void (g, GUESTFS_EVENT_LAUNCH_DONE); } debug (g, "recv_from_daemon: received GUESTFS_LAUNCH_FLAG"); return 0; - } - else if (*size_rtn == GUESTFS_CANCEL_FLAG) { + } else if (*size_rtn == GUESTFS_CANCEL_FLAG) { debug (g, "recv_from_daemon: received GUESTFS_CANCEL_FLAG"); return 0; - } - else if (*size_rtn == GUESTFS_PROGRESS_FLAG) + } else if (*size_rtn == GUESTFS_PROGRESS_FLAG) /*FALLTHROUGH*/; else if (*size_rtn > GUESTFS_MESSAGE_MAX) { /* If this happens, it's pretty bad and we've probably lost * synchronization. */ error (g, _("message length (%u) > maximum possible size (%d)"), - (unsigned) *size_rtn, GUESTFS_MESSAGE_MAX); + (unsigned)*size_rtn, GUESTFS_MESSAGE_MAX); return -1; } /* Calculate the message size. */ - message_size = - *size_rtn != GUESTFS_PROGRESS_FLAG ? *size_rtn : PROGRESS_MESSAGE_SIZE; + message_size = *size_rtn != GUESTFS_PROGRESS_FLAG ? *size_rtn + : PROGRESS_MESSAGE_SIZE; /* Allocate the complete buffer, size now known. */ *buf_rtn = safe_malloc (g, message_size); @@ -568,26 +571,26 @@ recv_from_daemon (guestfs_h *g, uint32_t *size_rtn, void **buf_rtn) return -1; } - /* ... it's a normal message (not progress/launch/cancel) so display - * it if we're debugging. - */ +/* ... it's a normal message (not progress/launch/cancel) so display + * it if we're debugging. + */ #ifdef ENABLE_PACKET_DUMP if (g->verbose) { ssize_t i, j; for (i = 0; i < n; i += 16) { printf ("%04zx: ", i); - for (j = i; j < MIN (i+16, n); ++j) + for (j = i; j < MIN (i + 16, n); ++j) printf ("%02x ", (*(unsigned char **)buf_rtn)[j]); - for (; j < i+16; ++j) + for (; j < i + 16; ++j) printf (" "); printf ("|"); - for (j = i; j < MIN (i+16, n); ++j) + for (j = i; j < MIN (i + 16, n); ++j) if (c_isprint ((*(char **)buf_rtn)[j])) printf ("%c", (*(char **)buf_rtn)[j]); else printf ("."); - for (; j < i+16; ++j) + for (; j < i + 16; ++j) printf (" "); printf ("|\n"); } @@ -598,11 +601,12 @@ recv_from_daemon (guestfs_h *g, uint32_t *size_rtn, void **buf_rtn) } int -guestfs_int_recv_from_daemon (guestfs_h *g, uint32_t *size_rtn, void **buf_rtn) +guestfs_int_recv_from_daemon (guestfs_h *g, uint32_t *size_rtn, + void **buf_rtn) { int r; - again: +again: r = recv_from_daemon (g, size_rtn, buf_rtn); if (r == -1) return -1; @@ -635,17 +639,15 @@ guestfs_int_recv_from_daemon (guestfs_h *g, uint32_t *size_rtn, void **buf_rtn) /* Receive a reply. */ int -guestfs_int_recv (guestfs_h *g, const char *fn, - guestfs_message_header *hdr, - guestfs_message_error *err, - xdrproc_t xdrp, char *ret) +guestfs_int_recv (guestfs_h *g, const char *fn, guestfs_message_header *hdr, + guestfs_message_error *err, xdrproc_t xdrp, char *ret) { XDR xdr; CLEANUP_FREE void *buf = NULL; uint32_t size; int r; - again: +again: r = guestfs_int_recv_from_daemon (g, &size, &buf); if (r == -1) return -1; @@ -658,7 +660,9 @@ guestfs_int_recv (guestfs_h *g, const char *fn, goto again; if (size == GUESTFS_LAUNCH_FLAG) { - error (g, "%s: received unexpected launch flag from daemon when expecting reply", fn); + error (g, "%s: received unexpected launch flag from daemon when " + "expecting reply", + fn); return -1; } @@ -700,7 +704,7 @@ guestfs_int_recv_discard (guestfs_h *g, const char *fn) uint32_t size; int r; - again: +again: r = guestfs_int_recv_from_daemon (g, &size, &buf); if (r == -1) return -1; @@ -713,7 +717,9 @@ guestfs_int_recv_discard (guestfs_h *g, const char *fn) goto again; if (size == GUESTFS_LAUNCH_FLAG) { - error (g, "%s: received unexpected launch flag from daemon when expecting reply", fn); + error (g, "%s: received unexpected launch flag from daemon when " + "expecting reply", + fn); return -1; } @@ -760,7 +766,8 @@ guestfs_int_recv_file (guestfs_h *g, const char *filename) else if (STREQ (filename, "/dev/stderr")) fd = dup (2); else - fd = open (filename, O_WRONLY|O_CREAT|O_TRUNC|O_NOCTTY|O_CLOEXEC, 0666); + fd = open (filename, + O_WRONLY | O_CREAT | O_TRUNC | O_NOCTTY | O_CLOEXEC, 0666); if (fd == -1) { perrorf (g, "%s", filename); goto cancel; @@ -796,7 +803,7 @@ guestfs_int_recv_file (guestfs_h *g, const char *filename) return 0; - cancel: ; +cancel:; /* Send cancellation message to daemon, then wait until it * cancels (just throwing away data). */ @@ -804,8 +811,7 @@ guestfs_int_recv_file (guestfs_h *g, const char *filename) char fbuf[4]; uint32_t flag = GUESTFS_CANCEL_FLAG; - debug (g, "%s: waiting for daemon to acknowledge cancellation", - __func__); + debug (g, "%s: waiting for daemon to acknowledge cancellation", __func__); xdrmem_create (&xdr, fbuf, sizeof fbuf, XDR_ENCODE); xdr_uint32_t (&xdr, &flag); @@ -817,7 +823,7 @@ guestfs_int_recv_file (guestfs_h *g, const char *filename) } while (receive_file_data (g, NULL) > 0) - ; /* just discard it */ + ; /* just discard it */ return -1; } @@ -838,7 +844,8 @@ receive_file_data (guestfs_h *g, void **buf_r) return -1; if (len == GUESTFS_LAUNCH_FLAG || len == GUESTFS_CANCEL_FLAG) { - error (g, _("receive_file_data: unexpected flag received when reading file chunks")); + error (g, _("receive_file_data: unexpected flag received when reading " + "file chunks")); return -1; } @@ -865,8 +872,10 @@ receive_file_data (guestfs_h *g, void **buf_r) return 0; } - if (buf_r) *buf_r = chunk.data.data_val; - else free (chunk.data.data_val); /* else caller frees */ + if (buf_r) + *buf_r = chunk.data.data_val; + else + free (chunk.data.data_val); /* else caller frees */ return chunk.data.data_len; } diff --git a/src/stringsbuf.c b/src/stringsbuf.c index 1486998..5d7392f 100644 --- a/src/stringsbuf.c +++ b/src/stringsbuf.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ /* Note: Don't confuse this with stringsbuf in the daemon. */ @@ -28,7 +29,8 @@ #include "guestfs-internal.h" void -guestfs_int_add_string_nodup (guestfs_h *g, struct stringsbuf *sb, char *str) +guestfs_int_add_string_nodup (guestfs_h *g, struct stringsbuf *sb, + char *str) { if (sb->size >= sb->alloc) { sb->alloc += 64; @@ -40,14 +42,15 @@ guestfs_int_add_string_nodup (guestfs_h *g, struct stringsbuf *sb, char *str) } void -guestfs_int_add_string (guestfs_h *g, struct stringsbuf *sb, const char *str) +guestfs_int_add_string (guestfs_h *g, struct stringsbuf *sb, + const char *str) { guestfs_int_add_string_nodup (g, sb, safe_strdup (g, str)); } void guestfs_int_add_sprintf (guestfs_h *g, struct stringsbuf *sb, - const char *fs, ...) + const char *fs, ...) { va_list args; char *str; diff --git a/src/test-utils.c b/src/test-utils.c index 0516db5..797abc8 100644 --- a/src/test-utils.c +++ b/src/test-utils.c @@ -97,23 +97,23 @@ test_concat (void) const char *test4[] = { "a", "", NULL }; const char *test5[] = { "a", "b", NULL }; - ret = guestfs_int_concat_strings ((char **) test1); + ret = guestfs_int_concat_strings ((char **)test1); assert (STREQ (ret, "")); free (ret); - ret = guestfs_int_concat_strings ((char **) test2); + ret = guestfs_int_concat_strings ((char **)test2); assert (STREQ (ret, "")); free (ret); - ret = guestfs_int_concat_strings ((char **) test3); + ret = guestfs_int_concat_strings ((char **)test3); assert (STREQ (ret, "a")); free (ret); - ret = guestfs_int_concat_strings ((char **) test4); + ret = guestfs_int_concat_strings ((char **)test4); assert (STREQ (ret, "a")); free (ret); - ret = guestfs_int_concat_strings ((char **) test5); + ret = guestfs_int_concat_strings ((char **)test5); assert (STREQ (ret, "ab")); free (ret); } @@ -129,23 +129,23 @@ test_join (void) const char *test4[] = { "a", "", NULL }; const char *test5[] = { "a", "b", NULL }; - ret = guestfs_int_join_strings (":!", (char **) test1); + ret = guestfs_int_join_strings (":!", (char **)test1); assert (STREQ (ret, "")); free (ret); - ret = guestfs_int_join_strings (":!", (char **) test2); + ret = guestfs_int_join_strings (":!", (char **)test2); assert (STREQ (ret, "")); free (ret); - ret = guestfs_int_join_strings (":!", (char **) test3); + ret = guestfs_int_join_strings (":!", (char **)test3); assert (STREQ (ret, "a")); free (ret); - ret = guestfs_int_join_strings (":!", (char **) test4); + ret = guestfs_int_join_strings (":!", (char **)test4); assert (STREQ (ret, "a:!")); free (ret); - ret = guestfs_int_join_strings (":!", (char **) test5); + ret = guestfs_int_join_strings (":!", (char **)test5); assert (STREQ (ret, "a:!b")); free (ret); } @@ -156,10 +156,13 @@ test_validate_guid (void) { assert (guestfs_int_validate_guid ("") == 0); assert (guestfs_int_validate_guid ("1") == 0); - assert (guestfs_int_validate_guid ("21EC20203AEA1069A2DD08002B30309D") == 0); + assert (guestfs_int_validate_guid ("21EC20203AEA1069A2DD08002B30309D") == + 0); - assert (guestfs_int_validate_guid ("{21EC2020-3AEA-1069-A2DD-08002B30309D}") == 1); - assert (guestfs_int_validate_guid ("21EC2020-3AEA-1069-A2DD-08002B30309D") == 1); + assert (guestfs_int_validate_guid ( + "{21EC2020-3AEA-1069-A2DD-08002B30309D}") == 1); + assert (guestfs_int_validate_guid ( + "21EC2020-3AEA-1069-A2DD-08002B30309D") == 1); } /* Test guestfs_int_drive_name. */ diff --git a/src/tmpdirs.c b/src/tmpdirs.c index afa3dd4..da47c40 100644 --- a/src/tmpdirs.c +++ b/src/tmpdirs.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include <config.h> diff --git a/src/utils.c b/src/utils.c index f099a22..e17700a 100644 --- a/src/utils.c +++ b/src/utils.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include <config.h> @@ -68,7 +69,7 @@ guestfs_int_copy_string_list (char *const *argv) size_t i, j; char **ret; - ret = malloc ((n+1) * sizeof (char *)); + ret = malloc ((n + 1) * sizeof (char *)); if (ret == NULL) return NULL; ret[n] = NULL; @@ -162,10 +163,10 @@ guestfs_int_split_string (char sep, const char *str) /* We always return a list of length 1 + (# separator characters). * We also have to add a trailing NULL. */ - ret = malloc ((n+2) * sizeof (char *)); + ret = malloc ((n + 2) * sizeof (char *)); if (!ret) return NULL; - ret[n+1] = NULL; + ret[n + 1] = NULL; for (n = i = 0; i <= len; ++i, ++n) { c = strcspn (&str[i], reject); @@ -187,27 +188,24 @@ guestfs_int_split_string (char sep, const char *str) /* Translate a wait/system exit status into a printable string. */ char * guestfs_int_exit_status_to_string (int status, const char *cmd_name, - char *buffer, size_t buflen) + char *buffer, size_t buflen) { if (WIFEXITED (status)) { if (WEXITSTATUS (status) == 0) - snprintf (buffer, buflen, _("%s exited successfully"), - cmd_name); + snprintf (buffer, buflen, _("%s exited successfully"), cmd_name); else snprintf (buffer, buflen, _("%s exited with error status %d"), cmd_name, WEXITSTATUS (status)); - } - else if (WIFSIGNALED (status)) { - snprintf (buffer, buflen, _("%s killed by signal %d (%s)"), - cmd_name, WTERMSIG (status), strsignal (WTERMSIG (status))); - } - else if (WIFSTOPPED (status)) { - snprintf (buffer, buflen, _("%s stopped by signal %d (%s)"), - cmd_name, WSTOPSIG (status), strsignal (WSTOPSIG (status))); - } - else { - snprintf (buffer, buflen, _("%s exited for an unknown reason (status %d)"), - cmd_name, status); + } else if (WIFSIGNALED (status)) { + snprintf (buffer, buflen, _("%s killed by signal %d (%s)"), cmd_name, + WTERMSIG (status), strsignal (WTERMSIG (status))); + } else if (WIFSTOPPED (status)) { + snprintf (buffer, buflen, _("%s stopped by signal %d (%s)"), cmd_name, + WSTOPSIG (status), strsignal (WSTOPSIG (status))); + } else { + snprintf (buffer, buflen, + _("%s exited for an unknown reason (status %d)"), cmd_name, + status); } return buffer; @@ -229,7 +227,7 @@ guestfs_int_random_string (char *ret, size_t len) unsigned char c; int saved_errno; - fd = open ("/dev/urandom", O_RDONLY|O_CLOEXEC); + fd = open ("/dev/urandom", O_RDONLY | O_CLOEXEC); if (fd == -1) return -1; @@ -262,7 +260,7 @@ char * guestfs_int_drive_name (size_t index, char *ret) { if (index >= 26) - ret = guestfs_int_drive_name (index/26 - 1, ret); + ret = guestfs_int_drive_name (index / 26 - 1, ret); index %= 26; *ret++ = 'a' + index; *ret = '\0'; @@ -281,49 +279,41 @@ guestfs_int_drive_index (const char *name) while (*name) { if (*name >= 'a' && *name <= 'z') - r = 26*r + (*name - 'a' + 1); + r = 26 * r + (*name - 'a' + 1); else return -1; name++; } - return r-1; + return r - 1; } /* Similar to Tcl_GetBoolean. */ int guestfs_int_is_true (const char *str) { - if (STREQ (str, "1") || - STRCASEEQ (str, "true") || - STRCASEEQ (str, "t") || - STRCASEEQ (str, "yes") || - STRCASEEQ (str, "y") || + if (STREQ (str, "1") || STRCASEEQ (str, "true") || STRCASEEQ (str, "t") || + STRCASEEQ (str, "yes") || STRCASEEQ (str, "y") || STRCASEEQ (str, "on")) return 1; - if (STREQ (str, "0") || - STRCASEEQ (str, "false") || - STRCASEEQ (str, "f") || - STRCASEEQ (str, "no") || - STRCASEEQ (str, "n") || - STRCASEEQ (str, "off")) + if (STREQ (str, "0") || STRCASEEQ (str, "false") || + STRCASEEQ (str, "f") || STRCASEEQ (str, "no") || + STRCASEEQ (str, "n") || STRCASEEQ (str, "off")) return 0; return -1; } /* See src/appliance.c:guestfs_int_get_uefi. */ -const char * -guestfs_int_ovmf_i386_firmware[] = { +const char *guestfs_int_ovmf_i386_firmware[] = { "/usr/share/edk2.git/ovmf-ia32/OVMF_CODE-pure-efi.fd", "/usr/share/edk2.git/ovmf-ia32/OVMF_VARS-pure-efi.fd", NULL }; -const char * -guestfs_int_ovmf_x86_64_firmware[] = { +const char *guestfs_int_ovmf_x86_64_firmware[] = { "/usr/share/OVMF/OVMF_CODE.fd", "/usr/share/OVMF/OVMF_VARS.fd", @@ -336,10 +326,8 @@ guestfs_int_ovmf_x86_64_firmware[] = { NULL }; -const char * -guestfs_int_aavmf_firmware[] = { - "/usr/share/AAVMF/AAVMF_CODE.fd", - "/usr/share/AAVMF/AAVMF_VARS.fd", +const char *guestfs_int_aavmf_firmware[] = { + "/usr/share/AAVMF/AAVMF_CODE.fd", "/usr/share/AAVMF/AAVMF_VARS.fd", "/usr/share/edk2.git/aarch64/QEMU_EFI-pflash.raw", "/usr/share/edk2.git/aarch64/vars-template-pflash.raw", diff --git a/src/whole-file.c b/src/whole-file.c index ae376b3..540de43 100644 --- a/src/whole-file.c +++ b/src/whole-file.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include <config.h> @@ -42,7 +43,7 @@ guestfs_int_read_whole_file (guestfs_h *g, const char *filename, ssize_t r; struct stat statbuf; - fd = open (filename, O_RDONLY|O_CLOEXEC); + fd = open (filename, O_RDONLY | O_CLOEXEC); if (fd == -1) { perrorf (g, "open: %s", filename); return -1; diff --git a/test-tool/test-tool.c b/test-tool/test-tool.c index c632440..28b8b46 100644 --- a/test-tool/test-tool.c +++ b/test-tool/test-tool.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> @@ -64,8 +65,7 @@ usage (void) " --timeout n\n" " -t n Set launch timeout (default: %d seconds)\n" " --version\n" - " -V Display libguestfs version and exit\n" - ), + " -V Display libguestfs version and exit\n"), DEFAULT_TIMEOUT); } @@ -80,12 +80,9 @@ main (int argc, char *argv[]) static const char *options = "t:V?"; static const struct option long_options[] = { - { "help", 0, 0, '?' }, - { "qemu", 1, 0, 0 }, - { "qemudir", 1, 0, 0 }, - { "timeout", 1, 0, 't' }, - { "version", 0, 0, 'V' }, - { 0, 0, 0, 0 } + { "help", 0, 0, '?' }, { "qemu", 1, 0, 0 }, + { "qemudir", 1, 0, 0 }, { "timeout", 1, 0, 't' }, + { "version", 0, 0, 'V' }, { 0, 0, 0, 0 } }; int c; int option_index; @@ -99,21 +96,19 @@ main (int argc, char *argv[]) for (;;) { c = getopt_long (argc, argv, options, long_options, &option_index); - if (c == -1) break; + if (c == -1) + break; switch (c) { - case 0: /* options which are long only */ + case 0: /* options which are long only */ if (STREQ (long_options[option_index].name, "qemu")) { qemu = optarg; qemu_use_wrapper = 0; - } - else if (STREQ (long_options[option_index].name, "qemudir")) { + } else if (STREQ (long_options[option_index].name, "qemudir")) { qemu = optarg; qemu_use_wrapper = 1; - } - else - error (EXIT_FAILURE, 0, - _("unknown long option: %s (%d)"), + } else + error (EXIT_FAILURE, 0, _("unknown long option: %s (%d)"), long_options[option_index].name, option_index); break; @@ -129,9 +124,9 @@ main (int argc, char *argv[]) vers = guestfs_version (g); if (vers == NULL) exit (EXIT_FAILURE); - printf ("%s %"PRIi64".%"PRIi64".%"PRIi64"%s\n", - "libguestfs-test-tool", - vers->major, vers->minor, vers->release, vers->extra); + printf ("%s %" PRIi64 ".%" PRIi64 ".%" PRIi64 "%s\n", + "libguestfs-test-tool", vers->major, vers->minor, + vers->release, vers->extra); guestfs_free_version (vers); guestfs_close (g); exit (EXIT_SUCCESS); @@ -149,14 +144,15 @@ main (int argc, char *argv[]) error (EXIT_FAILURE, 0, _("extra arguments on the command line")); /* Everyone ignores the documentation, so ... */ - printf (" ************************************************************\n" - " * IMPORTANT NOTICE\n" - " *\n" - " * When reporting bugs, include the COMPLETE, UNEDITED\n" - " * output below in your bug report.\n" - " *\n" - " ************************************************************\n" - ); + printf ( + " ************************************************************\n" + " * IMPORTANT NOTICE\n" + " *\n" + " * When reporting bugs, include the COMPLETE, UNEDITED\n" + " * output below in your bug report.\n" + " *\n" + " " + "************************************************************\n"); sleep (3); /* Create the handle. */ @@ -164,9 +160,9 @@ main (int argc, char *argv[]) if (g == NULL) error (EXIT_FAILURE, errno, "guestfs_create_flags"); if (guestfs_parse_environment (g) == -1) - error (EXIT_FAILURE, 0, - _("failed parsing environment variables.\n" - "Check earlier messages, and the output of the 'printenv' command.")); + error (EXIT_FAILURE, 0, _("failed parsing environment variables.\n" + "Check earlier messages, and the output of " + "the 'printenv' command.")); guestfs_set_verbose (g, 1); if (qemu) @@ -203,13 +199,13 @@ main (int argc, char *argv[]) ignore_value (system ("getenforce")); /* Configure the handle. */ - if (guestfs_add_drive_scratch (g, 100*1024*1024, -1) == -1) + if (guestfs_add_drive_scratch (g, 100 * 1024 * 1024, -1) == -1) exit (EXIT_FAILURE); - printf ("guestfs_get_append: %s\n", guestfs_get_append (g) ? : "(null)"); + printf ("guestfs_get_append: %s\n", guestfs_get_append (g) ?: "(null)"); printf ("guestfs_get_autosync: %d\n", guestfs_get_autosync (g)); p = guestfs_get_backend (g); - printf ("guestfs_get_backend: %s\n", p ? : "(null)"); + printf ("guestfs_get_backend: %s\n", p ?: "(null)"); free (p); pp = guestfs_get_backend_settings (g); printf ("guestfs_get_backend_settings: ["); @@ -222,7 +218,7 @@ main (int argc, char *argv[]) printf ("]\n"); free (pp); p = guestfs_get_cachedir (g); - printf ("guestfs_get_cachedir: %s\n", p ? : "(null)"); + printf ("guestfs_get_cachedir: %s\n", p ?: "(null)"); free (p); printf ("guestfs_get_direct: %d\n", guestfs_get_direct (g)); p = guestfs_get_hv (g); @@ -230,17 +226,17 @@ main (int argc, char *argv[]) free (p); printf ("guestfs_get_memsize: %d\n", guestfs_get_memsize (g)); printf ("guestfs_get_network: %d\n", guestfs_get_network (g)); - printf ("guestfs_get_path: %s\n", guestfs_get_path (g) ? : "(null)"); + printf ("guestfs_get_path: %s\n", guestfs_get_path (g) ?: "(null)"); printf ("guestfs_get_pgroup: %d\n", guestfs_get_pgroup (g)); printf ("guestfs_get_program: %s\n", guestfs_get_program (g)); printf ("guestfs_get_recovery_proc: %d\n", guestfs_get_recovery_proc (g)); printf ("guestfs_get_selinux: %d\n", guestfs_get_selinux (g)); printf ("guestfs_get_smp: %d\n", guestfs_get_smp (g)); p = guestfs_get_sockdir (g); - printf ("guestfs_get_sockdir: %s\n", p ? : "(null)"); + printf ("guestfs_get_sockdir: %s\n", p ?: "(null)"); free (p); p = guestfs_get_tmpdir (g); - printf ("guestfs_get_tmpdir: %s\n", p ? : "(null)"); + printf ("guestfs_get_tmpdir: %s\n", p ?: "(null)"); free (p); printf ("guestfs_get_trace: %d\n", guestfs_get_trace (g)); printf ("guestfs_get_verbose: %d\n", guestfs_get_verbose (g)); @@ -308,9 +304,9 @@ set_qemu (guestfs_h *g, const char *path, int use_wrapper) if (getenv ("LIBGUESTFS_QEMU") != NULL || getenv ("LIBGUESTFS_HV") != NULL) - error (EXIT_FAILURE, 0, - _("LIBGUESTFS_HV/LIBGUESTFS_QEMU environment variable is already set, so\n" - "--qemu/--qemudir options cannot be used.")); + error (EXIT_FAILURE, 0, _("LIBGUESTFS_HV/LIBGUESTFS_QEMU environment " + "variable is already set, so\n" + "--qemu/--qemudir options cannot be used.")); if (!use_wrapper) { if (access (path, X_OK) == -1) @@ -324,8 +320,7 @@ set_qemu (guestfs_h *g, const char *path, int use_wrapper) /* This should be a source directory, so check it. */ if (asprintf (&buffer, "%s/pc-bios", path) == -1) error (EXIT_FAILURE, errno, "asprintf"); - if (stat (buffer, &statbuf) == -1 || - !S_ISDIR (statbuf.st_mode)) + if (stat (buffer, &statbuf) == -1 || !S_ISDIR (statbuf.st_mode)) error (EXIT_FAILURE, errno, _("path does not look like a qemu source directory: %s"), path); @@ -337,24 +332,26 @@ set_qemu (guestfs_h *g, const char *path, int use_wrapper) fchmod (fd, 0700); fp = fdopen (fd, "w"); - fprintf (fp, - "#!/bin/sh -\n" - "host_cpu=%s\n" - "qemudir='%s'\n" - "case $host_cpu in\n" - " amd64*)\n" - " qemu=\"$qemudir/$host_cpu-softmmu/qemu-system-x86_64\"\n" - " ;;\n" - " arm*) qemu=\"$qemudir/$host_cpu-softmmu/qemu-system-arm\"\n" - " ;;\n" - " powerpc64|ppc64le|powerpc64le)\n" - " qemu=\"$qemudir/$host_cpu-softmmu/qemu-system-ppc64\"\n" - " ;;\n" - " *) qemu=\"$qemudir/$host_cpu-softmmu/qemu-system-$host_cpu\"\n" - " ;;\n" - "esac\n" - "exec \"$qemu\" -L \"$qemudir/pc-bios\" \"$@\"\n", - host_cpu, path); + fprintf ( + fp, + "#!/bin/sh -\n" + "host_cpu=%s\n" + "qemudir='%s'\n" + "case $host_cpu in\n" + " amd64*)\n" + " qemu=\"$qemudir/$host_cpu-softmmu/qemu-system-x86_64\"\n" + " ;;\n" + " arm*) qemu=\"$qemudir/$host_cpu-softmmu/qemu-system-arm\"\n" + " ;;\n" + " powerpc64|ppc64le|powerpc64le)\n" + " qemu=\"$qemudir/$host_cpu-softmmu/qemu-system-ppc64\"\n" + " ;;\n" + " *) " + "qemu=\"$qemudir/$host_cpu-softmmu/qemu-system-$host_cpu\"\n" + " ;;\n" + "esac\n" + "exec \"$qemu\" -L \"$qemudir/pc-bios\" \"$@\"\n", + host_cpu, path); fclose (fp); guestfs_set_hv (g, qemuwrapper); diff --git a/tests/c-api/test-add-drive-opts.c b/tests/c-api/test-add-drive-opts.c index 4f39e26..ed3133b 100644 --- a/tests/c-api/test-add-drive-opts.c +++ b/tests/c-api/test-add-drive-opts.c @@ -42,14 +42,12 @@ main (int argc, char *argv[]) if (r == -1) exit (EXIT_FAILURE); r = guestfs_add_drive_opts (g, "/dev/null", - GUESTFS_ADD_DRIVE_OPTS_READONLY, 1, - -1); + GUESTFS_ADD_DRIVE_OPTS_READONLY, 1, -1); if (r == -1) exit (EXIT_FAILURE); r = guestfs_add_drive_opts (g, "/dev/null", GUESTFS_ADD_DRIVE_OPTS_READONLY, 1, - GUESTFS_ADD_DRIVE_OPTS_FORMAT, "raw", - -1); + GUESTFS_ADD_DRIVE_OPTS_FORMAT, "raw", -1); if (r == -1) exit (EXIT_FAILURE); diff --git a/tests/c-api/test-add-libvirt-dom.c b/tests/c-api/test-add-libvirt-dom.c index 612b86e..a728d4f 100644 --- a/tests/c-api/test-add-libvirt-dom.c +++ b/tests/c-api/test-add-libvirt-dom.c @@ -36,34 +36,33 @@ static void make_test_xml (FILE *fp, const char *cwd) { - fprintf (fp, - "<?xml version=\"1.0\"?>\n" - "<node>\n" - " <domain type='test'>\n" - " <name>guest</name>\n" - " <os>\n" - " <type>hvm</type>\n" - " <boot dev='hd'/>\n" - " </os>\n" - " <memory>524288</memory>\n" - " <devices>\n" - " <disk type='file'>\n" - " <source file='%s/test-add-libvirt-dom-1.img'/>\n" - " <target dev='hda'/>\n" - " </disk>\n" - " <disk type='file'>\n" - " <driver name='qemu' type='raw'/>\n" - " <source file='%s/test-add-libvirt-dom-2.img'/>\n" - " <target dev='hdb'/>\n" - " </disk>\n" - " <disk type='file'>\n" - " <driver name='qemu' type='qcow2'/>\n" - " <source file='%s/test-add-libvirt-dom-3.img'/>\n" - " <target dev='hdc'/>\n" - " </disk>\n" - " </devices>\n" - " </domain>\n" - "</node>", + fprintf (fp, "<?xml version=\"1.0\"?>\n" + "<node>\n" + " <domain type='test'>\n" + " <name>guest</name>\n" + " <os>\n" + " <type>hvm</type>\n" + " <boot dev='hd'/>\n" + " </os>\n" + " <memory>524288</memory>\n" + " <devices>\n" + " <disk type='file'>\n" + " <source file='%s/test-add-libvirt-dom-1.img'/>\n" + " <target dev='hda'/>\n" + " </disk>\n" + " <disk type='file'>\n" + " <driver name='qemu' type='raw'/>\n" + " <source file='%s/test-add-libvirt-dom-2.img'/>\n" + " <target dev='hdb'/>\n" + " </disk>\n" + " <disk type='file'>\n" + " <driver name='qemu' type='qcow2'/>\n" + " <source file='%s/test-add-libvirt-dom-3.img'/>\n" + " <target dev='hdc'/>\n" + " </disk>\n" + " </devices>\n" + " </domain>\n" + "</node>", cwd, cwd, cwd); } @@ -90,7 +89,8 @@ main (int argc, char *argv[]) backend = guestfs_get_backend (g); if (STREQ (backend, "uml")) { free (backend); - error (77, 0, "test skipped because UML backend does not support qcow2"); + error (77, 0, + "test skipped because UML backend does not support qcow2"); } free (backend); @@ -104,15 +104,15 @@ main (int argc, char *argv[]) fclose (fp); if (guestfs_disk_create (g, "test-add-libvirt-dom-1.img", "raw", - 1024*1024, -1) == -1) + 1024 * 1024, -1) == -1) exit (EXIT_FAILURE); if (guestfs_disk_create (g, "test-add-libvirt-dom-2.img", "raw", - 1024*1024, -1) == -1) + 1024 * 1024, -1) == -1) exit (EXIT_FAILURE); if (guestfs_disk_create (g, "test-add-libvirt-dom-3.img", "qcow2", - 1024*1024, -1) == -1) + 1024 * 1024, -1) == -1) exit (EXIT_FAILURE); /* Create the libvirt connection. */ @@ -129,12 +129,11 @@ main (int argc, char *argv[]) dom = virDomainLookupByName (conn, "guest"); if (!dom) { err = virGetLastError (); - error (EXIT_FAILURE, 0, - "no libvirt domain called '%s': %s", "guest", err->message); + error (EXIT_FAILURE, 0, "no libvirt domain called '%s': %s", "guest", + err->message); } - r = guestfs_add_libvirt_dom (g, dom, - GUESTFS_ADD_LIBVIRT_DOM_READONLY, 1, + r = guestfs_add_libvirt_dom (g, dom, GUESTFS_ADD_LIBVIRT_DOM_READONLY, 1, -1); if (r == -1) exit (EXIT_FAILURE); diff --git a/tests/c-api/test-backend-settings.c b/tests/c-api/test-backend-settings.c index 371a247..5d0b98e 100644 --- a/tests/c-api/test-backend-settings.c +++ b/tests/c-api/test-backend-settings.c @@ -68,13 +68,11 @@ main (int argc, char *argv[]) */ for (pass = 0; pass <= 1; ++pass) { if (pass == 0) { - const char *initial_settings[] = { - "foo", "foo=1", "foo=bar", "bar", "baz=value", NULL - }; - r = guestfs_set_backend_settings (g, (char **) initial_settings); + const char *initial_settings[] = { "foo", "foo=1", "foo=bar", + "bar", "baz=value", NULL }; + r = guestfs_set_backend_settings (g, (char **)initial_settings); assert (r == 0); - } - else /* pass == 1 */ { + } else /* pass == 1 */ { const char *initial_settings = "foo:foo=1:foo=bar:bar:baz=value"; guestfs_close (g); diff --git a/tests/c-api/test-command.c b/tests/c-api/test-command.c index b14f0f1..c08a5b1 100644 --- a/tests/c-api/test-command.c +++ b/tests/c-api/test-command.c @@ -27,7 +27,7 @@ #include <unistd.h> #include <error.h> -#define STREQ(a,b) (strcmp((a),(b)) == 0) +#define STREQ(a, b) (strcmp ((a), (b)) == 0) int main (int argc, char *argv[]) diff --git a/tests/c-api/test-debug-to-file.c b/tests/c-api/test-debug-to-file.c index 10e36c6..3031d11 100644 --- a/tests/c-api/test-debug-to-file.c +++ b/tests/c-api/test-debug-to-file.c @@ -35,12 +35,8 @@ #include "ignore-value.h" static void -debug_to_file (guestfs_h *g, - void *opaque, - uint64_t event, - int event_handle, - int flags, - const char *buf, size_t buf_len, +debug_to_file (guestfs_h *g, void *opaque, uint64_t event, int event_handle, + int flags, const char *buf, size_t buf_len, const uint64_t *array, size_t array_len) { FILE *fp = opaque; @@ -63,11 +59,11 @@ main (int argc, char *argv[]) if (g == NULL) error (EXIT_FAILURE, errno, "guestfs_create"); - if (guestfs_set_event_callback - (g, debug_to_file, - GUESTFS_EVENT_LIBRARY | GUESTFS_EVENT_APPLIANCE | - GUESTFS_EVENT_WARNING | GUESTFS_EVENT_TRACE, - 0, debugfp) == -1) + if (guestfs_set_event_callback ( + g, debug_to_file, + GUESTFS_EVENT_LIBRARY | GUESTFS_EVENT_APPLIANCE | + GUESTFS_EVENT_WARNING | GUESTFS_EVENT_TRACE, + 0, debugfp) == -1) exit (EXIT_FAILURE); if (guestfs_set_verbose (g, 1) == -1) @@ -76,9 +72,8 @@ main (int argc, char *argv[]) if (guestfs_set_trace (g, 1) == -1) exit (EXIT_FAILURE); - if (guestfs_add_drive_opts (g, "/dev/null", - GUESTFS_ADD_DRIVE_OPTS_FORMAT, "raw", - GUESTFS_ADD_DRIVE_OPTS_READONLY, 1, + if (guestfs_add_drive_opts (g, "/dev/null", GUESTFS_ADD_DRIVE_OPTS_FORMAT, + "raw", GUESTFS_ADD_DRIVE_OPTS_READONLY, 1, -1) == -1) exit (EXIT_FAILURE); diff --git a/tests/c-api/test-dlopen.c b/tests/c-api/test-dlopen.c index 8a4174c..345a51a 100644 --- a/tests/c-api/test-dlopen.c +++ b/tests/c-api/test-dlopen.c @@ -31,7 +31,7 @@ typedef struct guestfs_h guestfs_h; typedef guestfs_h *(*guestfs_create_t) (void); -typedef const char * (*guestfs_get_program_t) (guestfs_h *); +typedef const char *(*guestfs_get_program_t) (guestfs_h *); typedef void (*guestfs_close_t) (guestfs_h *); #ifndef LIBRARY @@ -47,8 +47,7 @@ read_symbol (void *lib, const char *symbol) dlerror (); /* Clear error indicator. */ symval = dlsym (lib, symbol); if ((err = dlerror ()) != NULL) - error (EXIT_FAILURE, 0, - "could not read symbol: %s: %s", symbol, err); + error (EXIT_FAILURE, 0, "could not read symbol: %s: %s", symbol, err); return symval; } @@ -62,7 +61,8 @@ main (int argc, char *argv[]) guestfs_h *g; if (access (LIBRARY, X_OK) == -1) - error (77, errno, "test skipped because %s cannot be accessed", LIBRARY); + error (77, errno, "test skipped because %s cannot be accessed", + LIBRARY); lib = dlopen (LIBRARY, RTLD_LAZY); if (lib == NULL) diff --git a/tests/c-api/test-environment.c b/tests/c-api/test-environment.c index d5a03d4..362d818 100644 --- a/tests/c-api/test-environment.c +++ b/tests/c-api/test-environment.c @@ -41,22 +41,27 @@ main (int argc, char *argv[]) /* What's the default memsize? */ g = guestfs_create (); - if (!g) error (EXIT_FAILURE, errno, "guestfs_create"); + if (!g) + error (EXIT_FAILURE, errno, "guestfs_create"); default_memsize = guestfs_get_memsize (g); - if (default_memsize == -1) exit (EXIT_FAILURE); + if (default_memsize == -1) + exit (EXIT_FAILURE); guestfs_close (g); /* Check that guestfs_create parses the environment. */ setenv ("LIBGUESTFS_MEMSIZE", "799", 1); g = guestfs_create (); - if (!g) error (EXIT_FAILURE, errno, "guestfs_create"); + if (!g) + error (EXIT_FAILURE, errno, "guestfs_create"); assert (guestfs_get_memsize (g) == 799); guestfs_close (g); - /* Check that guestfs_create_flags with no flags parses the environment. */ + /* Check that guestfs_create_flags with no flags parses the environment. + */ setenv ("LIBGUESTFS_MEMSIZE", "798", 1); g = guestfs_create_flags (0); - if (!g) error (EXIT_FAILURE, errno, "guestfs_create_flags"); + if (!g) + error (EXIT_FAILURE, errno, "guestfs_create_flags"); assert (guestfs_get_memsize (g) == 798); guestfs_close (g); @@ -64,10 +69,12 @@ main (int argc, char *argv[]) setenv ("LIBGUESTFS_MEMSIZE", "797", 1); g = guestfs_create_flags (GUESTFS_CREATE_NO_ENVIRONMENT); assert (guestfs_get_memsize (g) == default_memsize); - if (!g) error (EXIT_FAILURE, errno, "guestfs_create_flags"); + if (!g) + error (EXIT_FAILURE, errno, "guestfs_create_flags"); setenv ("LIBGUESTFS_MEMSIZE", "796", 1); r = guestfs_parse_environment (g); - if (r == -1) exit (EXIT_FAILURE); + if (r == -1) + exit (EXIT_FAILURE); assert (guestfs_get_memsize (g) == 796); guestfs_close (g); @@ -75,7 +82,8 @@ main (int argc, char *argv[]) setenv ("LIBGUESTFS_MEMSIZE", "795", 1); g = guestfs_create_flags (GUESTFS_CREATE_NO_ENVIRONMENT); assert (guestfs_get_memsize (g) == default_memsize); - if (!g) error (EXIT_FAILURE, errno, "guestfs_create_flags"); + if (!g) + error (EXIT_FAILURE, errno, "guestfs_create_flags"); setenv ("LIBGUESTFS_MEMSIZE", "794", 1); const char *local_environment[] = { "LIBGUESTFS_MEMSIZE=793", @@ -85,8 +93,9 @@ main (int argc, char *argv[]) "BLAH", NULL }; - r = guestfs_parse_environment_list (g, (char **) local_environment); - if (r == -1) exit (EXIT_FAILURE); + r = guestfs_parse_environment_list (g, (char **)local_environment); + if (r == -1) + exit (EXIT_FAILURE); assert (guestfs_get_memsize (g) == 793); guestfs_close (g); diff --git a/tests/c-api/test-event-string.c b/tests/c-api/test-event-string.c index e94000d..6007b63 100644 --- a/tests/c-api/test-event-string.c +++ b/tests/c-api/test-event-string.c @@ -53,7 +53,8 @@ main (int argc, char *argv[]) assert (STREQ (str, "close,progress")); free (str); - events = GUESTFS_EVENT_CLOSE | GUESTFS_EVENT_SUBPROCESS_QUIT | GUESTFS_EVENT_ENTER; + events = GUESTFS_EVENT_CLOSE | GUESTFS_EVENT_SUBPROCESS_QUIT | + GUESTFS_EVENT_ENTER; str = guestfs_event_to_string (events); assert (str != NULL); assert (STREQ (str, "close,enter,subprocess_quit")); diff --git a/tests/c-api/test-private-data.c b/tests/c-api/test-private-data.c index 9ebe7a8..42e7f39 100644 --- a/tests/c-api/test-private-data.c +++ b/tests/c-api/test-private-data.c @@ -37,20 +37,16 @@ static size_t close_callback_called = 0; /* This callback deletes all test keys in the handle. */ static void -close_callback (guestfs_h *g, - void *opaque, - uint64_t event, - int event_handle, - int flags, - const char *buf, size_t buf_len, - const uint64_t *array, size_t array_len) +close_callback (guestfs_h *g, void *opaque, uint64_t event, + int event_handle, int flags, const char *buf, + size_t buf_len, const uint64_t *array, size_t array_len) { const char *key; void *data; close_callback_called++; - again: +again: data = guestfs_first_private (g, &key); while (data != NULL) { if (strncmp (key, PREFIX, strlen (PREFIX)) == 0) { @@ -73,19 +69,19 @@ main (int argc, char *argv[]) if (g == NULL) error (EXIT_FAILURE, errno, "guestfs_create"); - if (guestfs_set_event_callback (g, close_callback, GUESTFS_EVENT_CLOSE, - 0, NULL) == -1) + if (guestfs_set_event_callback (g, close_callback, GUESTFS_EVENT_CLOSE, 0, + NULL) == -1) exit (EXIT_FAILURE); - guestfs_set_private (g, PREFIX "a", (void *) 1); - guestfs_set_private (g, PREFIX "b", (void *) 2); - guestfs_set_private (g, PREFIX "c", (void *) 3); - guestfs_set_private (g, PREFIX "a", (void *) 4); /* overwrites previous */ + guestfs_set_private (g, PREFIX "a", (void *)1); + guestfs_set_private (g, PREFIX "b", (void *)2); + guestfs_set_private (g, PREFIX "c", (void *)3); + guestfs_set_private (g, PREFIX "a", (void *)4); /* overwrites previous */ /* Check we can fetch keys. */ - assert (guestfs_get_private (g, PREFIX "a") == (void *) 4); - assert (guestfs_get_private (g, PREFIX "b") == (void *) 2); - assert (guestfs_get_private (g, PREFIX "c") == (void *) 3); + assert (guestfs_get_private (g, PREFIX "a") == (void *)4); + assert (guestfs_get_private (g, PREFIX "b") == (void *)2); + assert (guestfs_get_private (g, PREFIX "c") == (void *)3); assert (guestfs_get_private (g, PREFIX "d") == NULL); /* Check we can count keys by iterating. */ diff --git a/tests/c-api/test-pwd.c b/tests/c-api/test-pwd.c index 61b88ec..b1dd532 100644 --- a/tests/c-api/test-pwd.c +++ b/tests/c-api/test-pwd.c @@ -28,8 +28,8 @@ int main (int argc, char *argv[]) { - char *cwd = getcwd(NULL, 0); - printf("%s", cwd); + char *cwd = getcwd (NULL, 0); + printf ("%s", cwd); exit (EXIT_SUCCESS); } diff --git a/tests/c-api/test-user-cancel.c b/tests/c-api/test-user-cancel.c index 3823682..25bc86e 100644 --- a/tests/c-api/test-user-cancel.c +++ b/tests/c-api/test-user-cancel.c @@ -48,19 +48,20 @@ #include "guestfs.h" #include "guestfs-internal-frontend.h" -static const off_t filesize = 1024*1024*1024; +static const off_t filesize = 1024 * 1024 * 1024; -static void *start_test_thread (void *) __attribute__((noreturn)); +static void *start_test_thread (void *) __attribute__ ((noreturn)); static off_t random_cancel_posn (void); -struct test_thread_data { - guestfs_h *g; /* handle */ - int direction; /* direction of transfer */ -#define DIRECTION_UP 1 /* upload (test thread is writing) */ -#define DIRECTION_DOWN 2 /* download (test thread is reading) */ - int fd; /* pipe to read/write */ - off_t cancel_posn; /* position at which to cancel */ - off_t transfer_size; /* how much data thread wrote/read */ +struct test_thread_data +{ + guestfs_h *g; /* handle */ + int direction; /* direction of transfer */ +#define DIRECTION_UP 1 /* upload (test thread is writing) */ +#define DIRECTION_DOWN 2 /* download (test thread is reading) */ + int fd; /* pipe to read/write */ + off_t cancel_posn; /* position at which to cancel */ + off_t transfer_size; /* how much data thread wrote/read */ }; int @@ -134,11 +135,12 @@ main (int argc, char *argv[]) /* We expect to get an error, with errno == EINTR. */ if (op_error == -1 && op_errno == EINTR) printf ("test-user-cancel: upload cancellation test passed (%ld/%ld)\n", - (long) data.cancel_posn, (long) data.transfer_size); + (long)data.cancel_posn, (long)data.transfer_size); else { fprintf (stderr, "test-user-cancel: upload cancellation test FAILED\n"); - fprintf (stderr, "cancel_posn %ld, upload returned %d, errno = %d (%s)\n", - (long) data.cancel_posn, op_error, op_errno, strerror (op_errno)); + fprintf ( + stderr, "cancel_posn %ld, upload returned %d, errno = %d (%s)\n", + (long)data.cancel_posn, op_error, op_errno, strerror (op_errno)); errors++; } @@ -150,7 +152,7 @@ main (int argc, char *argv[]) if (guestfs_touch (g, "/download") == -1) exit (EXIT_FAILURE); - if (guestfs_truncate_size (g, "/download", filesize/4) == -1) + if (guestfs_truncate_size (g, "/download", filesize / 4) == -1) exit (EXIT_FAILURE); data.g = g; @@ -191,12 +193,15 @@ main (int argc, char *argv[]) /* We expect to get an error, with errno == EINTR. */ if (op_error == -1 && op_errno == EINTR) - printf ("test-user-cancel: download cancellation test passed (%ld/%ld)\n", - (long) data.cancel_posn, (long) data.transfer_size); + printf ( + "test-user-cancel: download cancellation test passed (%ld/%ld)\n", + (long)data.cancel_posn, (long)data.transfer_size); else { - fprintf (stderr, "test-user-cancel: download cancellation test FAILED\n"); - fprintf (stderr, "cancel_posn %ld, upload returned %d, errno = %d (%s)\n", - (long) data.cancel_posn, op_error, op_errno, strerror (op_errno)); + fprintf (stderr, + "test-user-cancel: download cancellation test FAILED\n"); + fprintf ( + stderr, "cancel_posn %ld, upload returned %d, errno = %d (%s)\n", + (long)data.cancel_posn, op_error, op_errno, strerror (op_errno)); errors++; } @@ -242,7 +247,7 @@ start_test_thread (void *datav) "test thread: write to pipe after user cancel"); data->transfer_size += r; } - } else { /* thread is reading */ + } else { /* thread is reading */ /* Sink data, up to the cancellation point. */ while (data->transfer_size < data->cancel_posn) { n = MIN (sizeof buffer, @@ -292,7 +297,7 @@ random_cancel_posn (void) r = random_gauss (mu, sd); } while (r <= 0); - return (off_t) r; + return (off_t)r; } /* Generate a random Gaussian distributed number using the Box-Muller @@ -311,6 +316,6 @@ random_gauss (double mu, double sd) w = sqrt ((-2. * log (w)) / w); y1 = x1 * w; - //y2 = x2 * w; + // y2 = x2 * w; return mu + y1 * sd; } diff --git a/tests/c-api/tests-main.c b/tests/c-api/tests-main.c index e3af651..b8dc27e 100644 --- a/tests/c-api/tests-main.c +++ b/tests/c-api/tests-main.c @@ -119,7 +119,7 @@ init_basic_fs_on_lvm (guestfs_h *g) if (guestfs_pvcreate (g, "/dev/sda1") == -1) return -1; - if (guestfs_vgcreate (g, "VG", (char **) pvs) == -1) + if (guestfs_vgcreate (g, "VG", (char **)pvs) == -1) return -1; if (guestfs_lvcreate (g, "LV", "VG", 8) == -1) @@ -167,13 +167,15 @@ print_strings (char *const *argv) printf ("\t%s\n", argv[argc]); } -static int compare_lists (char **, char **, int (*) (const char *, const char *)); +static int compare_lists (char **, char **, + int (*) (const char *, const char *)); /* Compare 'ret' to the string list that follows. */ int is_string_list (char **ret, size_t n, ...) { - CLEANUP_FREE /* sic */ char **expected = malloc ((n+1) * sizeof (char *)); + CLEANUP_FREE /* sic */ char **expected = + malloc ((n + 1) * sizeof (char *)); size_t i; va_list args; @@ -189,7 +191,8 @@ is_string_list (char **ret, size_t n, ...) int is_device_list (char **ret, size_t n, ...) { - CLEANUP_FREE /* sic */ char **expected = malloc ((n+1) * sizeof (char *)); + CLEANUP_FREE /* sic */ char **expected = + malloc ((n + 1) * sizeof (char *)); size_t i; va_list args; @@ -224,7 +227,7 @@ compare_lists (char **ret, char **expected, return 1; /* test expecting true for OK */ - fail: +fail: fprintf (stderr, "returned list was:\n"); print_strings (ret); fprintf (stderr, "expected list was:\n"); @@ -290,7 +293,8 @@ check_file_md5 (const char *ret, const char *filename) md5sum (filename, expected); if (STRNEQ (ret, expected)) { - fprintf (stderr, "test failed: MD5 returned (%s) does not match MD5 of file %s (%s)\n", + fprintf (stderr, "test failed: MD5 returned (%s) does not match MD5 of " + "file %s (%s)\n", ret, filename, expected); return -1; } @@ -308,7 +312,7 @@ get_key (char **hash, const char *key) for (i = 0; hash[i] != NULL; i += 2) { if (STREQ (hash[i], key)) - return hash[i+1]; + return hash[i + 1]; } return NULL; /* key not found */ @@ -326,8 +330,10 @@ check_hash (char **ret, const char *key, const char *expected) } if (STRNEQ (value, expected)) { - fprintf (stderr, "test failed: hash key %s = \"%s\" is not expected value \"%s\"\n", - key, value, expected); + fprintf ( + stderr, + "test failed: hash key %s = \"%s\" is not expected value \"%s\"\n", + key, value, expected); return -1; } @@ -346,8 +352,8 @@ match_re (const char *str, const char *pattern) re = pcre_compile (pattern, 0, &err, &offset, NULL); if (re == NULL) - error (EXIT_FAILURE, 0, - "cannot compile regular expression '%s': %s", pattern, err); + error (EXIT_FAILURE, 0, "cannot compile regular expression '%s': %s", + pattern, err); r = pcre_exec (re, NULL, str, len, 0, 0, vec, sizeof vec / sizeof vec[0]); pcre_free (re); @@ -369,16 +375,16 @@ substitute_srcdir (const char *path) srcdir = getenv ("srcdir"); if (!srcdir) - error (EXIT_FAILURE, 0, - "environment variable $srcdir is not defined.\n" - "Normally it is defined by automake. If you are running the\n" - "tests directly, set $srcdir to point to the source tests/c-api\n" - "directory."); + error ( + EXIT_FAILURE, 0, + "environment variable $srcdir is not defined.\n" + "Normally it is defined by automake. If you are running the\n" + "tests directly, set $srcdir to point to the source tests/c-api\n" + "directory."); if (asprintf (&ret, "%s%s", srcdir, path + 7) == -1) error (EXIT_FAILURE, errno, "asprintf"); - } - else { + } else { ret = strdup (path); if (!ret) error (EXIT_FAILURE, errno, "strdup"); @@ -397,7 +403,8 @@ static void next_test (guestfs_h *g, size_t test_num, const char *test_name) { if (guestfs_get_verbose (g)) - printf ("-------------------------------------------------------------------------------\n"); + printf ("--------------------------------------------------------------" + "-----------------\n"); printf ("%3zu/%3zu %s\n", test_num, nr_tests, test_name); } @@ -413,8 +420,7 @@ skipped (const char *test_name, const char *fs, ...) va_end (args); assert (len >= 0); - printf (" %s skipped (reason: %s)\n", - test_name, reason); + printf (" %s skipped (reason: %s)\n", test_name, reason); } /* Create the handle, with attached disks. */ @@ -429,17 +435,19 @@ create_handle (void) exit (EXIT_FAILURE); } - if (guestfs_add_drive_scratch (g, INT64_C(2)*1024*1024*1024, -1) == -1) { + if (guestfs_add_drive_scratch (g, INT64_C (2) * 1024 * 1024 * 1024, -1) == + -1) { printf ("FAIL: guestfs_add_drive_scratch\n"); exit (EXIT_FAILURE); } - if (guestfs_add_drive_scratch (g, INT64_C(2)*1024*1024*1024, -1) == -1) { + if (guestfs_add_drive_scratch (g, INT64_C (2) * 1024 * 1024 * 1024, -1) == + -1) { printf ("FAIL: guestfs_add_drive_scratch\n"); exit (EXIT_FAILURE); } - if (guestfs_add_drive_scratch (g, INT64_C(10)*1024*1024, -1) == -1) { + if (guestfs_add_drive_scratch (g, INT64_C (10) * 1024 * 1024, -1) == -1) { printf ("FAIL: guestfs_add_drive_scratch\n"); exit (EXIT_FAILURE); } diff --git a/tests/c-api/tests.h b/tests/c-api/tests.h index d8d5881..34a8c01 100644 --- a/tests/c-api/tests.h +++ b/tests/c-api/tests.h @@ -19,7 +19,8 @@ #ifndef TESTS_H_ #define TESTS_H_ -struct test { +struct test +{ int (*test_fn) (guestfs_h *g); const char *name; }; @@ -38,13 +39,15 @@ extern void no_test_warnings (void); extern int is_string_list (char **ret, size_t n, ...); extern int is_device_list (char **ret, size_t n, ...); extern int compare_devices (const char *dev1, const char *dev2); -extern int compare_buffers (const char *b1, size_t s1, const char *b2, size_t s2); +extern int compare_buffers (const char *b1, size_t s1, const char *b2, + size_t s2); extern int check_file_md5 (const char *ret, const char *filename); extern const char *get_key (char **hash, const char *key); extern int check_hash (char **ret, const char *key, const char *expected); extern int match_re (const char *str, const char *pattern); extern int using_cross_appliance (void); extern char *substitute_srcdir (const char *path); -extern void skipped (const char *test_name, const char *fs, ...) __attribute__((format (printf,2,3))); +extern void skipped (const char *test_name, const char *fs, ...) + __attribute__ ((format (printf, 2, 3))); #endif /* TESTS_H_ */ diff --git a/tests/charsets/test-charset-fidelity.c b/tests/charsets/test-charset-fidelity.c index 9a477ce..a113ee3 100644 --- a/tests/charsets/test-charset-fidelity.c +++ b/tests/charsets/test-charset-fidelity.c @@ -35,10 +35,11 @@ static const char ourenvvar[] = "SKIP_TEST_CHARSET_FIDELITY"; -struct filesystem { - const char *fs_name; /* Name of filesystem. */ - int fs_case_insensitive; /* True if filesystem is case insensitive. */ - int fs_8bit_only; /* True if fs only supports 8 bit chars. */ +struct filesystem +{ + const char *fs_name; /* Name of filesystem. */ + int fs_case_insensitive; /* True if filesystem is case insensitive. */ + int fs_8bit_only; /* True if fs only supports 8 bit chars. */ const char *fs_mount_options; /* Mount options, if required. */ const char *fs_feature; /* Feature test, if required. */ @@ -46,19 +47,19 @@ struct filesystem { * in libguestfs). The filesystems should be able to pass these * tests if they are working correctly. */ - int fs_skip_latin1; /* Skip latin1 test. */ - int fs_skip_latin2; /* Skip latin2 test. */ + int fs_skip_latin1; /* Skip latin1 test. */ + int fs_skip_latin2; /* Skip latin2 test. */ }; static struct filesystem filesystems[] = { - { "ext2", 0, 0, NULL, NULL, 0, 0 }, - { "ext3", 0, 0, NULL, NULL, 0, 0 }, - { "ext4", 0, 0, NULL, NULL, 0, 0 }, + { "ext2", 0, 0, NULL, NULL, 0, 0 }, + { "ext3", 0, 0, NULL, NULL, 0, 0 }, + { "ext4", 0, 0, NULL, NULL, 0, 0 }, { "btrfs", 0, 0, NULL, "btrfs", 0, 0 }, - { "vfat", 1, 0, "iocharset=iso8859-1,utf8", NULL, 1, 1 }, + { "vfat", 1, 0, "iocharset=iso8859-1,utf8", NULL, 1, 1 }, { "msdos", 1, 1, "iocharset=iso8859-1", NULL, 0, 0 }, /* In reality NTFS is case insensitive, but the ntfs-3g driver isn't. */ - { "ntfs", 0, 0, NULL, "ntfs3g", 0, 0 }, + { "ntfs", 0, 0, NULL, "ntfs3g", 0, 0 }, }; static void test_filesystem (guestfs_h *g, const struct filesystem *fs); @@ -91,7 +92,7 @@ main (int argc, char *argv[]) if (g == NULL) error (EXIT_FAILURE, 0, "failed to create handle"); - if (guestfs_add_drive_scratch (g, 1024*1024*1024, -1) == -1) + if (guestfs_add_drive_scratch (g, 1024 * 1024 * 1024, -1) == -1) exit (EXIT_FAILURE); if (guestfs_launch (g) == -1) @@ -118,7 +119,7 @@ test_filesystem (guestfs_h *g, const struct filesystem *fs) char envvar[sizeof (ourenvvar) + 20]; char *str; - if (fs->fs_feature && !guestfs_feature_available (g, (char **) feature)) { + if (fs->fs_feature && !guestfs_feature_available (g, (char **)feature)) { printf ("skipped test of %s because %s feature not available\n", fs->fs_name, fs->fs_feature); return; @@ -148,7 +149,7 @@ test_filesystem (guestfs_h *g, const struct filesystem *fs) test_latin2 (g, fs); test_chinese (g, fs); - out: +out: unmount_filesystem (g, fs); } @@ -164,7 +165,7 @@ mount_filesystem (guestfs_h *g, const struct filesystem *fs) { const char *mount_options; - mount_options = fs->fs_mount_options ? : ""; + mount_options = fs->fs_mount_options ?: ""; if (guestfs_mount_options (g, mount_options, "/dev/sda1", "/") == -1) exit (EXIT_FAILURE); } @@ -199,26 +200,25 @@ test_ascii (guestfs_h *g, const struct filesystem *fs) if (fs->fs_case_insensitive) { /* case insensitive */ if (count != 2) - error (EXIT_FAILURE, 0, - "error: %s: %s is supposed to be case-insensitive, but %zu files " - "(instead of 2) were returned", - __func__, fs->fs_name, count); + error ( + EXIT_FAILURE, 0, + "error: %s: %s is supposed to be case-insensitive, but %zu files " + "(instead of 2) were returned", + __func__, fs->fs_name, count); - if (STRCASENEQ (files[0], "abc") || - STRCASENEQ (files[1], "def")) + if (STRCASENEQ (files[0], "abc") || STRCASENEQ (files[1], "def")) error (EXIT_FAILURE, 0, "error: %s: %s returned unexpected filenames '%s' and '%s'", __func__, fs->fs_name, files[0], files[1]); - } - else { /* case sensitive */ + } else { /* case sensitive */ if (count != 3) - error (EXIT_FAILURE, 0, - "error: %s: %s is supposed to be case-sensitive, but %zu files " - "(instead of 3) were returned", - __func__, fs->fs_name, count); + error ( + EXIT_FAILURE, 0, + "error: %s: %s is supposed to be case-sensitive, but %zu files " + "(instead of 3) were returned", + __func__, fs->fs_name, count); - if (STRNEQ (files[0], "ABC") || - STRNEQ (files[1], "abc") || + if (STRNEQ (files[0], "ABC") || STRNEQ (files[1], "abc") || STRNEQ (files[2], "def")) error (EXIT_FAILURE, 0, "error: %s: %s returned unexpected filenames '%s', '%s', '%s'", @@ -264,23 +264,24 @@ test_latin1 (guestfs_h *g, const struct filesystem *fs) if (fs->fs_case_insensitive) { /* case insensitive */ if (count != 1) - error (EXIT_FAILURE, 0, - "error: %s: %s is supposed to be case-insensitive, but %zu files " - "(instead of 1) were returned", - __func__, fs->fs_name, count); + error ( + EXIT_FAILURE, 0, + "error: %s: %s is supposed to be case-insensitive, but %zu files " + "(instead of 1) were returned", + __func__, fs->fs_name, count); if (memcmp (files[0], o_tilde, 3) != 0 && memcmp (files[0], O_tilde, 3) != 0) error (EXIT_FAILURE, 0, - "error: %s: %s returned unexpected filename '%s'", - __func__, fs->fs_name, files[0]); - } - else { /* case sensitive */ + "error: %s: %s returned unexpected filename '%s'", __func__, + fs->fs_name, files[0]); + } else { /* case sensitive */ if (count != 2) - error (EXIT_FAILURE, 0, - "error: %s: %s is supposed to be case-sensitive, but %zu files " - "(instead of 2) were returned", - __func__, fs->fs_name, count); + error ( + EXIT_FAILURE, 0, + "error: %s: %s is supposed to be case-sensitive, but %zu files " + "(instead of 2) were returned", + __func__, fs->fs_name, count); if (memcmp (files[0], O_tilde, 3) != 0 || memcmp (files[1], o_tilde, 3) != 0) @@ -326,23 +327,24 @@ test_latin2 (guestfs_h *g, const struct filesystem *fs) if (fs->fs_case_insensitive) { /* case insensitive */ if (count != 1) - error (EXIT_FAILURE, 0, - "error: %s: %s is supposed to be case-insensitive, but %zu files " - "(instead of 1) were returned", - __func__, fs->fs_name, count); + error ( + EXIT_FAILURE, 0, + "error: %s: %s is supposed to be case-insensitive, but %zu files " + "(instead of 1) were returned", + __func__, fs->fs_name, count); if (memcmp (files[0], o_dacute, 3) != 0 && memcmp (files[0], O_dacute, 3) != 0) error (EXIT_FAILURE, 0, - "error: %s: %s returned unexpected filename '%s'", - __func__, fs->fs_name, files[0]); - } - else { /* case sensitive */ + "error: %s: %s returned unexpected filename '%s'", __func__, + fs->fs_name, files[0]); + } else { /* case sensitive */ if (count != 2) - error (EXIT_FAILURE, 0, - "error: %s: %s is supposed to be case-sensitive, but %zu files " - "(instead of 2) were returned", - __func__, fs->fs_name, count); + error ( + EXIT_FAILURE, 0, + "error: %s: %s is supposed to be case-sensitive, but %zu files " + "(instead of 2) were returned", + __func__, fs->fs_name, count); if (memcmp (files[0], O_dacute, 3) != 0 || memcmp (files[1], o_dacute, 3) != 0) @@ -365,12 +367,9 @@ test_chinese (guestfs_h *g, const struct filesystem *fs) * https://secure.wikimedia.org/wikipedia/en/wiki/Chinese_characters#Comparison... */ char filenames[][5] = { - { '/', 0xe7, 0x94, 0xb5, 0 }, - { '/', 0xe4, 0xb9, 0xb0, 0 }, - { '/', 0xe5, 0xbc, 0x80, 0 }, - { '/', 0xe4, 0xb8, 0x9c, 0 }, - { '/', 0xe8, 0xbd, 0xa6, 0 }, - { '/', 0xe7, 0xba, 0xa2, 0 }, + { '/', 0xe7, 0x94, 0xb5, 0 }, { '/', 0xe4, 0xb9, 0xb0, 0 }, + { '/', 0xe5, 0xbc, 0x80, 0 }, { '/', 0xe4, 0xb8, 0x9c, 0 }, + { '/', 0xe8, 0xbd, 0xa6, 0 }, { '/', 0xe7, 0xba, 0xa2, 0 }, }; const size_t nr_filenames = sizeof filenames / sizeof filenames[0]; size_t i, j; @@ -400,8 +399,8 @@ test_chinese (guestfs_h *g, const struct filesystem *fs) if (memcmp (files[j], &filenames[i][1], 4) == 0) goto next; error (EXIT_FAILURE, 0, - "error: %s: %s returned unexpected filename '%s'", - __func__, fs->fs_name, files[j]); + "error: %s: %s returned unexpected filename '%s'", __func__, + fs->fs_name, files[j]); next:; } diff --git a/tests/events/test-libvirt-auth-callbacks.c b/tests/events/test-libvirt-auth-callbacks.c index a18ab24..3fd8709 100644 --- a/tests/events/test-libvirt-auth-callbacks.c +++ b/tests/events/test-libvirt-auth-callbacks.c @@ -33,13 +33,18 @@ #define EXPECT_OK 1 #define EXPECT_FAIL -1 -struct auth_data { +struct auth_data +{ const char *username; const char *password; }; -static void do_test (const char *prog, const char *libvirt_uri, const struct auth_data *auth_data, int expected); -static void auth_callback (guestfs_h *g, void *opaque, uint64_t event, int event_handle, int flags, const char *buf, size_t buf_len, const uint64_t *array, size_t array_len); +static void do_test (const char *prog, const char *libvirt_uri, + const struct auth_data *auth_data, int expected); +static void auth_callback (guestfs_h *g, void *opaque, uint64_t event, + int event_handle, int flags, const char *buf, + size_t buf_len, const uint64_t *array, + size_t array_len); int main (int argc, char *argv[]) @@ -61,29 +66,31 @@ main (int argc, char *argv[]) /* $srcdir must have been passed (by automake). */ srcdir = getenv ("srcdir"); if (!srcdir) - error (EXIT_FAILURE, 0, - "environment variable $srcdir is not defined.\n" - "Normally it is defined by automake. If you are running the\n" - "tests directly, set $srcdir to point to the source tests/events\n" - "directory."); + error ( + EXIT_FAILURE, 0, + "environment variable $srcdir is not defined.\n" + "Normally it is defined by automake. If you are running the\n" + "tests directly, set $srcdir to point to the source tests/events\n" + "directory."); cwd = getcwd (NULL, 0); if (cwd == NULL) error (EXIT_FAILURE, errno, "getcwd"); - if (asprintf (&test_uri, "test://%s/%s/libvirt-auth.xml", cwd, srcdir) == -1) + if (asprintf (&test_uri, "test://%s/%s/libvirt-auth.xml", cwd, srcdir) == + -1) error (EXIT_FAILURE, errno, "asprintf"); free (cwd); /* Perform the tests. */ - struct auth_data ad1 = { .username = "rich", .password = "123456" }; + struct auth_data ad1 = {.username = "rich", .password = "123456" }; do_test (argv[0], test_uri, &ad1, EXPECT_OK); - struct auth_data ad2 = { .username = "rich", .password = "654321" }; + struct auth_data ad2 = {.username = "rich", .password = "654321" }; do_test (argv[0], test_uri, &ad2, EXPECT_FAIL); - struct auth_data ad3 = { .username = "jane", .password = NULL }; + struct auth_data ad3 = {.username = "jane", .password = NULL }; do_test (argv[0], test_uri, &ad3, EXPECT_OK); - struct auth_data ad4 = { .username = "nouser", .password = "123456" }; + struct auth_data ad4 = {.username = "nouser", .password = "123456" }; do_test (argv[0], test_uri, &ad4, EXPECT_FAIL); free (test_uri); @@ -92,46 +99,38 @@ main (int argc, char *argv[]) static void do_test (const char *prog, const char *libvirt_uri, - const struct auth_data *auth_data, - int expected) + const struct auth_data *auth_data, int expected) { guestfs_h *g; - const char *creds[] = - { "authname", "passphrase", "noechoprompt", NULL }; + const char *creds[] = { "authname", "passphrase", "noechoprompt", NULL }; int r, eh; g = guestfs_create (); if (!g) error (EXIT_FAILURE, errno, "guestfs_create"); - r = guestfs_set_libvirt_supported_credentials (g, (char **) creds); + r = guestfs_set_libvirt_supported_credentials (g, (char **)creds); if (r == -1) exit (EXIT_FAILURE); - eh = guestfs_set_event_callback (g, auth_callback, - GUESTFS_EVENT_LIBVIRT_AUTH, 0, - (void *) auth_data); + eh = guestfs_set_event_callback ( + g, auth_callback, GUESTFS_EVENT_LIBVIRT_AUTH, 0, (void *)auth_data); if (eh == -1) exit (EXIT_FAILURE); - r = guestfs_add_domain (g, "test", - GUESTFS_ADD_DOMAIN_LIBVIRTURI, libvirt_uri, - GUESTFS_ADD_DOMAIN_READONLY, 1, - -1); + r = guestfs_add_domain (g, "test", GUESTFS_ADD_DOMAIN_LIBVIRTURI, + libvirt_uri, GUESTFS_ADD_DOMAIN_READONLY, 1, -1); if (r != expected) - error (EXIT_FAILURE, 0, - "test failed: u=%s p=%s: got %d expected %d", - auth_data->username, auth_data->password ? : "(none)", - r, expected); + error (EXIT_FAILURE, 0, "test failed: u=%s p=%s: got %d expected %d", + auth_data->username, auth_data->password ?: "(none)", r, + expected); guestfs_close (g); } static void -auth_callback (guestfs_h *g, void *opaque, - uint64_t event, int event_handle, - int flags, - const char *buf, size_t buf_len, +auth_callback (guestfs_h *g, void *opaque, uint64_t event, int event_handle, + int flags, const char *buf, size_t buf_len, const uint64_t *array, size_t array_len) { CLEANUP_FREE_STRING_LIST char **creds = NULL; @@ -151,25 +150,24 @@ auth_callback (guestfs_h *g, void *opaque, if (STREQ (creds[i], "authname")) { reply = auth_data->username; len = strlen (reply); - } - else if (STREQ (creds[i], "passphrase") || - STREQ (creds[i], "noechoprompt")) { + } else if (STREQ (creds[i], "passphrase") || + STREQ (creds[i], "noechoprompt")) { if (!auth_data->password) - error (EXIT_FAILURE, 0, - "test failed: libvirt asked for a password, but auth_data->password == NULL"); + error (EXIT_FAILURE, 0, "test failed: libvirt asked for a " + "password, but auth_data->password == " + "NULL"); reply = auth_data->password; len = strlen (reply); - } - else { - error (EXIT_FAILURE, 0, - "test failed: libvirt asked for '%s' which is not in creds list\n(This is probably a libvirt bug)", + } else { + error (EXIT_FAILURE, 0, "test failed: libvirt asked for '%s' which " + "is not in creds list\n(This is probably a " + "libvirt bug)", creds[i]); abort (); /* keeps GCC happy since error(3) is not marked noreturn */ } - r = guestfs_set_libvirt_requested_credential (g, i, - reply, len); + r = guestfs_set_libvirt_requested_credential (g, i, reply, len); if (r == -1) exit (EXIT_FAILURE); } diff --git a/tests/mount-local/test-parallel-mount-local.c b/tests/mount-local/test-parallel-mount-local.c index 873d20a..1ee9c20 100644 --- a/tests/mount-local/test-parallel-mount-local.c +++ b/tests/mount-local/test-parallel-mount-local.c @@ -43,24 +43,25 @@ #include "ignore-value.h" -#define TOTAL_TIME 60 /* Seconds, excluding launch. */ -#define DEBUG 1 /* Print overview debugging messages. */ +#define TOTAL_TIME 60 /* Seconds, excluding launch. */ +#define DEBUG 1 /* Print overview debugging messages. */ #define MAX_THREADS 12 -struct thread_state { - pthread_t thread; /* Thread handle. */ - char *mp; /* Mount point. */ - int exit_status; /* Thread exit status. */ +struct thread_state +{ + pthread_t thread; /* Thread handle. */ + char *mp; /* Mount point. */ + int exit_status; /* Thread exit status. */ }; static struct thread_state threads[MAX_THREADS]; static size_t nr_threads; -static void *start_thread (void *) __attribute__((noreturn)); +static void *start_thread (void *) __attribute__ ((noreturn)); static void test_mountpoint (const char *mp); static void cleanup_thread_state (void); static int guestunmount (const char *mp, unsigned flags); #define GUESTUNMOUNT_SILENT 1 -#define GUESTUNMOUNT_RMDIR 2 +#define GUESTUNMOUNT_RMDIR 2 static volatile sig_atomic_t quit = 0; @@ -101,7 +102,8 @@ main (int argc, char *argv[]) } if (access ("/dev/fuse", W_OK) == -1) { - fprintf (stderr, "%s: test skipped because /dev/fuse is not writable.\n", + fprintf (stderr, + "%s: test skipped because /dev/fuse is not writable.\n", guestfs_int_program_name); exit (77); } @@ -179,7 +181,7 @@ start_thread (void *statevp) guestfs_set_identifier (g, state->mp); - if (guestfs_add_drive_scratch (g, 512*1024*1024, -1) == -1) + if (guestfs_add_drive_scratch (g, 512 * 1024 * 1024, -1) == -1) goto error; if (guestfs_launch (g) == -1) goto error; @@ -217,10 +219,10 @@ start_thread (void *statevp) goto error; } - if (pid == 0) { /* child */ - setpgid (0, 0); /* so we don't get ^C from parent */ - execlp ("./test-parallel-mount-local", - "test-parallel-mount-local", "--test", state->mp, NULL); + if (pid == 0) { /* child */ + setpgid (0, 0); /* so we don't get ^C from parent */ + execlp ("./test-parallel-mount-local", "test-parallel-mount-local", + "--test", state->mp, NULL); perror ("execlp"); goto error; } @@ -232,7 +234,7 @@ start_thread (void *statevp) r = guestfs_mount_local_run (g); guestfs_pop_error_handler (g); - /* Wait for child process to exit and catch any errors from it. */ + /* Wait for child process to exit and catch any errors from it. */ again: if (waitpid (pid, &status, 0) == -1) { if (errno == EINTR) @@ -244,9 +246,8 @@ start_thread (void *statevp) char status_string[80]; fprintf (stderr, "%s: %s\n", state->mp, - guestfs_int_exit_status_to_string (status, "test", - status_string, - sizeof status_string)); + guestfs_int_exit_status_to_string ( + status, "test", status_string, sizeof status_string)); goto error; } @@ -267,7 +268,7 @@ start_thread (void *statevp) state->exit_status = 0; pthread_exit (&state->exit_status); - error: +error: guestfs_close (g); state->exit_status = 1; pthread_exit (&state->exit_status); @@ -283,7 +284,8 @@ test_mountpoint (const char *mp) FILE *fp; if (!mp || STREQ (mp, "")) - error (EXIT_FAILURE, 0, "%s: invalid or empty mountpoint path", __func__); + error (EXIT_FAILURE, 0, "%s: invalid or empty mountpoint path", + __func__); if (DEBUG) { printf ("%-8s | testing filesystem\n", mp); @@ -339,10 +341,11 @@ test_mountpoint (const char *mp) } ret = EXIT_SUCCESS; - error: +error: ignore_value (chdir ("..")); if (guestunmount (mp, 0) == -1) - error (EXIT_FAILURE, 0, "guestunmount %s: failed, see earlier errors", mp); + error (EXIT_FAILURE, 0, "guestunmount %s: failed, see earlier errors", + mp); if (DEBUG) { printf ("%-8s > unmounted filesystem\n", mp); @@ -364,8 +367,7 @@ guestunmount (const char *mp, unsigned flags) return 0; } - snprintf (cmd, sizeof cmd, - "../../fuse/guestunmount%s %s", + snprintf (cmd, sizeof cmd, "../../fuse/guestunmount%s %s", (flags & GUESTUNMOUNT_SILENT) ? " --quiet" : "", mp); status = system (cmd); @@ -393,7 +395,8 @@ cleanup_thread_state (void) for (i = 0; i < nr_threads; ++i) { if (threads[i].mp) { - guestunmount (threads[i].mp, GUESTUNMOUNT_SILENT|GUESTUNMOUNT_RMDIR); + guestunmount (threads[i].mp, + GUESTUNMOUNT_SILENT | GUESTUNMOUNT_RMDIR); free (threads[i].mp); } } diff --git a/tests/mountable/test-internal-parse-mountable.c b/tests/mountable/test-internal-parse-mountable.c index ab86ccb..8b79cdd 100644 --- a/tests/mountable/test-internal-parse-mountable.c +++ b/tests/mountable/test-internal-parse-mountable.c @@ -49,15 +49,16 @@ main (int argc, char *argv[]) if (g == NULL) error (EXIT_FAILURE, errno, "guestfs_create"); - if (guestfs_add_drive_scratch (g, 1024*1024*1024, -1) == -1) { + if (guestfs_add_drive_scratch (g, 1024 * 1024 * 1024, -1) == -1) { error: guestfs_close (g); exit (EXIT_FAILURE); } - if (guestfs_launch (g) == -1) goto error; + if (guestfs_launch (g) == -1) + goto error; - if (!guestfs_feature_available (g, (char **) feature)) { + if (!guestfs_feature_available (g, (char **)feature)) { printf ("skipping test because btrfs is not available\n"); guestfs_close (g); exit (77); @@ -69,23 +70,31 @@ main (int argc, char *argv[]) exit (77); } - if (guestfs_part_disk (g, "/dev/sda", "mbr") == -1) goto error; + if (guestfs_part_disk (g, "/dev/sda", "mbr") == -1) + goto error; - if (guestfs_pvcreate (g, "/dev/sda1") == -1) goto error; + if (guestfs_pvcreate (g, "/dev/sda1") == -1) + goto error; const char *pvs[] = { "/dev/sda1", NULL }; - if (guestfs_vgcreate (g, "VG", (char **) pvs) == -1) goto error; + if (guestfs_vgcreate (g, "VG", (char **)pvs) == -1) + goto error; - if (guestfs_lvcreate (g, "LV", "VG", 900) == -1) goto error; + if (guestfs_lvcreate (g, "LV", "VG", 900) == -1) + goto error; - if (guestfs_mkfs_btrfs (g, (char * const *)devices, -1) == -1) goto error; + if (guestfs_mkfs_btrfs (g, (char *const *)devices, -1) == -1) + goto error; - if (guestfs_mount (g, "/dev/VG/LV", "/") == -1) goto error; + if (guestfs_mount (g, "/dev/VG/LV", "/") == -1) + goto error; - if (guestfs_btrfs_subvolume_create (g, "/sv") == -1) goto error; + if (guestfs_btrfs_subvolume_create (g, "/sv") == -1) + goto error; mountable = guestfs_internal_parse_mountable (g, "/dev/VG/LV"); - if (mountable == NULL) goto error; + if (mountable == NULL) + goto error; if (mountable->im_type != MOUNTABLE_DEVICE || STRNEQ ("/dev/VG/LV", mountable->im_device)) { @@ -96,16 +105,20 @@ main (int argc, char *argv[]) guestfs_free_internal_mountable (mountable); - mountable = guestfs_internal_parse_mountable (g, "btrfsvol:/dev/VG/LV/sv"); - if (mountable == NULL) goto error; + mountable = + guestfs_internal_parse_mountable (g, "btrfsvol:/dev/VG/LV/sv"); + if (mountable == NULL) + goto error; if (mountable->im_type != MOUNTABLE_BTRFSVOL || STRNEQ ("/dev/VG/LV", mountable->im_device) || STRNEQ ("sv", mountable->im_volume)) { - fprintf (stderr, "incorrectly parsed /dev/VG/LV/sv: im_device=%s, im_volume=%s\n", - mountable->im_device, mountable->im_volume); + fprintf ( + stderr, + "incorrectly parsed /dev/VG/LV/sv: im_device=%s, im_volume=%s\n", + mountable->im_device, mountable->im_volume); goto error; - } + } guestfs_free_internal_mountable (mountable); guestfs_close (g); diff --git a/tests/parallel/test-parallel.c b/tests/parallel/test-parallel.c index 85182f2..2970469 100644 --- a/tests/parallel/test-parallel.c +++ b/tests/parallel/test-parallel.c @@ -39,17 +39,18 @@ #include "ignore-value.h" -#define TOTAL_TIME 600 /* Seconds, excluding launch. */ +#define TOTAL_TIME 600 /* Seconds, excluding launch. */ #define NR_THREADS 5 -struct thread_state { - size_t thread_num; /* Thread number. */ - pthread_t thread; /* Thread handle. */ - int exit_status; /* Thread exit status. */ +struct thread_state +{ + size_t thread_num; /* Thread number. */ + pthread_t thread; /* Thread handle. */ + int exit_status; /* Thread exit status. */ }; static struct thread_state threads[NR_THREADS]; -static void *start_thread (void *) __attribute__((noreturn)); +static void *start_thread (void *) __attribute__ ((noreturn)); static volatile sig_atomic_t quit = 0; @@ -139,10 +140,9 @@ start_thread (void *statevp) snprintf (id, sizeof id, "%zu", state->thread_num); guestfs_set_identifier (g, id); - if (guestfs_add_drive_opts (g, "/dev/null", - GUESTFS_ADD_DRIVE_OPTS_FORMAT, "raw", - GUESTFS_ADD_DRIVE_OPTS_READONLY, 1, - -1) == -1) { + if (guestfs_add_drive_opts ( + g, "/dev/null", GUESTFS_ADD_DRIVE_OPTS_FORMAT, "raw", + GUESTFS_ADD_DRIVE_OPTS_READONLY, 1, -1) == -1) { error: guestfs_close (g); state->exit_status = 1; diff --git a/tests/protocol/test-error-messages.c b/tests/protocol/test-error-messages.c index 57a4a21..f26e1ae 100644 --- a/tests/protocol/test-error-messages.c +++ b/tests/protocol/test-error-messages.c @@ -37,11 +37,16 @@ main (int argc, char *argv[]) { guestfs_h *g; size_t i; - int lengths[] = { 0, 1, 1024, - GUESTFS_ERROR_LEN-2, GUESTFS_ERROR_LEN-1, - GUESTFS_ERROR_LEN, GUESTFS_ERROR_LEN+1, - GUESTFS_ERROR_LEN+2, - GUESTFS_ERROR_LEN*2, -1 }; + int lengths[] = { 0, + 1, + 1024, + GUESTFS_ERROR_LEN - 2, + GUESTFS_ERROR_LEN - 1, + GUESTFS_ERROR_LEN, + GUESTFS_ERROR_LEN + 1, + GUESTFS_ERROR_LEN + 2, + GUESTFS_ERROR_LEN * 2, + -1 }; char len_s[64]; char *args[2]; diff --git a/tests/qemu/boot-analysis-timeline.c b/tests/qemu/boot-analysis-timeline.c index d35fb49..68d1cc6 100644 --- a/tests/qemu/boot-analysis-timeline.c +++ b/tests/qemu/boot-analysis-timeline.c @@ -37,10 +37,9 @@ #include "boot-analysis.h" -COMPILE_REGEXP(re_initcall_calling_module, - "calling ([_A-Za-z0-9]+)\\+.*\\[([_A-Za-z0-9]+)]", 0) -COMPILE_REGEXP(re_initcall_calling, - "calling ([_A-Za-z0-9]+)\\+", 0) +COMPILE_REGEXP (re_initcall_calling_module, + "calling ([_A-Za-z0-9]+)\\+.*\\[([_A-Za-z0-9]+)]", 0) +COMPILE_REGEXP (re_initcall_calling, "calling ([_A-Za-z0-9]+)\\+", 0) static void construct_initcall_timeline (void); @@ -71,331 +70,339 @@ construct_timeline (void) for (i = 0; i < NR_TEST_PASSES; ++i) { data = &pass_data[i]; - /* Find an activity, by matching an event with the condition - * `begin_cond' through to the second event `end_cond'. Create an - * activity object in the timeline from the result. - */ -#define FIND(name, flags, begin_cond, end_cond) \ - do { \ - activity = NULL; \ - for (j = 0; j < data->nr_events; ++j) { \ - if (begin_cond) { \ - for (k = j+1; k < data->nr_events; ++k) { \ - if (end_cond) { \ - if (i == 0) \ - activity = add_activity (name, flags); \ - else \ - activity = find_activity (name); \ - break; \ - } \ - } \ - break; \ - } \ - } \ - if (activity) { \ - activity->start_event[i] = j; \ - activity->end_event[i] = k; \ - } \ - else \ - error (EXIT_FAILURE, 0, "could not find activity '%s' in pass '%zu'", \ - name, i); \ - } while (0) +/* Find an activity, by matching an event with the condition + * `begin_cond' through to the second event `end_cond'. Create an + * activity object in the timeline from the result. + */ +#define FIND(name, flags, begin_cond, end_cond) \ + do { \ + activity = NULL; \ + for (j = 0; j < data->nr_events; ++j) { \ + if (begin_cond) { \ + for (k = j + 1; k < data->nr_events; ++k) { \ + if (end_cond) { \ + if (i == 0) \ + activity = add_activity (name, flags); \ + else \ + activity = find_activity (name); \ + break; \ + } \ + } \ + break; \ + } \ + } \ + if (activity) { \ + activity->start_event[i] = j; \ + activity->end_event[i] = k; \ + } else \ + error (EXIT_FAILURE, 0, \ + "could not find activity '%s' in pass '%zu'", name, i); \ + } while (0) - /* Same as FIND() macro, but if no matching events are found, - * ignore it. - */ -#define FIND_OPTIONAL(name, flags, begin_cond, end_cond) \ - do { \ - activity = NULL; \ - for (j = 0; j < data->nr_events; ++j) { \ - if (begin_cond) { \ - for (k = j+1; k < data->nr_events; ++k) { \ - if (end_cond) { \ - if (i == 0) \ - activity = add_activity (name, flags); \ - else \ - activity = find_activity (name); \ - break; \ - } \ - } \ - break; \ - } \ - } \ - if (activity) { \ - activity->start_event[i] = j; \ - activity->end_event[i] = k; \ - } \ - } while (0) +/* Same as FIND() macro, but if no matching events are found, + * ignore it. + */ +#define FIND_OPTIONAL(name, flags, begin_cond, end_cond) \ + do { \ + activity = NULL; \ + for (j = 0; j < data->nr_events; ++j) { \ + if (begin_cond) { \ + for (k = j + 1; k < data->nr_events; ++k) { \ + if (end_cond) { \ + if (i == 0) \ + activity = add_activity (name, flags); \ + else \ + activity = find_activity (name); \ + break; \ + } \ + } \ + break; \ + } \ + } \ + if (activity) { \ + activity->start_event[i] = j; \ + activity->end_event[i] = k; \ + } \ + } while (0) - /* Find multiple entries, where we check for: - * next_cond - * next_cond - * next_cond - * end_cond - */ -#define FIND_MULTIPLE(debug_name, flags, next_cond, end_cond, translate_message) \ - do { \ - activity = NULL; \ - for (j = 0; j < data->nr_events; ++j) { \ - if (next_cond) { \ - CLEANUP_FREE char *message = translate_message (data->events[j].message); \ - if (activity) \ - activity->end_event[i] = j; \ - if (i == 0) \ - activity = add_activity (message, flags); \ - else \ - activity = find_activity (message); \ - activity->start_event[i] = j; \ - } \ - else if (end_cond) \ - break; \ - } \ - if (j < data->nr_events && activity) \ - activity->end_event[i] = j; \ - else \ - error (EXIT_FAILURE, 0, "could not find activity '%s' in pass '%zu'", \ - debug_name, i); \ - } while (0) +/* Find multiple entries, where we check for: + * next_cond + * next_cond + * next_cond + * end_cond + */ +#define FIND_MULTIPLE(debug_name, flags, next_cond, end_cond, \ + translate_message) \ + do { \ + activity = NULL; \ + for (j = 0; j < data->nr_events; ++j) { \ + if (next_cond) { \ + CLEANUP_FREE char *message = \ + translate_message (data->events[j].message); \ + if (activity) \ + activity->end_event[i] = j; \ + if (i == 0) \ + activity = add_activity (message, flags); \ + else \ + activity = find_activity (message); \ + activity->start_event[i] = j; \ + } else if (end_cond) \ + break; \ + } \ + if (j < data->nr_events && activity) \ + activity->end_event[i] = j; \ + else \ + error (EXIT_FAILURE, 0, \ + "could not find activity '%s' in pass '%zu'", debug_name, i); \ + } while (0) /* Add one activity which is going to cover the whole process * from launch to close. The launch event is always event 0. * NB: This activity must be called "run" (see below). */ - FIND ("run", LONG_ACTIVITY, - j == 0, data->events[k].source == GUESTFS_EVENT_CLOSE); + FIND ("run", LONG_ACTIVITY, j == 0, + data->events[k].source == GUESTFS_EVENT_CLOSE); /* Find where we invoke supermin --build. This should be a null * operation, but it still takes time to run the external command. */ FIND ("supermin:build", 0, data->events[j].source == GUESTFS_EVENT_LIBRARY && - strstr (data->events[j].message, - "begin building supermin appliance"), + strstr (data->events[j].message, + "begin building supermin appliance"), data->events[k].source == GUESTFS_EVENT_LIBRARY && - strstr (data->events[k].message, - "finished building supermin appliance")); + strstr (data->events[k].message, + "finished building supermin appliance")); /* Find where we invoke qemu to test features. */ - FIND_OPTIONAL ("qemu:feature-detect", 0, - data->events[j].source == GUESTFS_EVENT_LIBRARY && - strstr (data->events[j].message, - "begin testing qemu features"), - data->events[k].source == GUESTFS_EVENT_LIBRARY && - strstr (data->events[k].message, - "finished testing qemu features")); + FIND_OPTIONAL ( + "qemu:feature-detect", 0, + data->events[j].source == GUESTFS_EVENT_LIBRARY && + strstr (data->events[j].message, "begin testing qemu features"), + data->events[k].source == GUESTFS_EVENT_LIBRARY && + strstr (data->events[k].message, + "finished testing qemu features")); /* Find where we run qemu. */ FIND_OPTIONAL ("qemu", LONG_ACTIVITY, data->events[j].source == GUESTFS_EVENT_APPLIANCE && - strstr (data->events[j].message, "-nodefconfig"), + strstr (data->events[j].message, "-nodefconfig"), data->events[k].source == GUESTFS_EVENT_CLOSE); /* For the libvirt backend, connecting to libvirt, getting * capabilities, parsing capabilities etc. */ - FIND_OPTIONAL ("libvirt:connect", 0, - data->events[j].source == GUESTFS_EVENT_LIBRARY && - strstr (data->events[j].message, "connect to libvirt"), - data->events[k].source == GUESTFS_EVENT_LIBRARY && - strstr (data->events[k].message, "successfully opened libvirt handle")); - FIND_OPTIONAL ("libvirt:get-libvirt-capabilities", 0, - data->events[j].source == GUESTFS_EVENT_LIBRARY && - strstr (data->events[j].message, "get libvirt capabilities"), - data->events[k].source == GUESTFS_EVENT_LIBRARY && - strstr (data->events[k].message, "parsing capabilities XML")); + FIND_OPTIONAL ( + "libvirt:connect", 0, + data->events[j].source == GUESTFS_EVENT_LIBRARY && + strstr (data->events[j].message, "connect to libvirt"), + data->events[k].source == GUESTFS_EVENT_LIBRARY && + strstr (data->events[k].message, + "successfully opened libvirt handle")); + FIND_OPTIONAL ( + "libvirt:get-libvirt-capabilities", 0, + data->events[j].source == GUESTFS_EVENT_LIBRARY && + strstr (data->events[j].message, "get libvirt capabilities"), + data->events[k].source == GUESTFS_EVENT_LIBRARY && + strstr (data->events[k].message, "parsing capabilities XML")); - FIND_OPTIONAL ("libguestfs:parse-libvirt-capabilities", 0, - data->events[j].source == GUESTFS_EVENT_LIBRARY && - strstr (data->events[j].message, "parsing capabilities XML"), - data->events[k].source == GUESTFS_EVENT_LIBRARY && - strstr (data->events[k].message, "get_backend_setting")); + FIND_OPTIONAL ( + "libguestfs:parse-libvirt-capabilities", 0, + data->events[j].source == GUESTFS_EVENT_LIBRARY && + strstr (data->events[j].message, "parsing capabilities XML"), + data->events[k].source == GUESTFS_EVENT_LIBRARY && + strstr (data->events[k].message, "get_backend_setting")); - FIND_OPTIONAL ("libguestfs:create-libvirt-xml", 0, - data->events[j].source == GUESTFS_EVENT_LIBRARY && - strstr (data->events[j].message, "create libvirt XML"), - data->events[k].source == GUESTFS_EVENT_LIBRARY && - strstr (data->events[k].message, "libvirt XML:")); + FIND_OPTIONAL ( + "libguestfs:create-libvirt-xml", 0, + data->events[j].source == GUESTFS_EVENT_LIBRARY && + strstr (data->events[j].message, "create libvirt XML"), + data->events[k].source == GUESTFS_EVENT_LIBRARY && + strstr (data->events[k].message, "libvirt XML:")); #define SGABIOS_STRING "\033[1;256r\033[256;256H\033[6n" /* For the libvirt backend, find the overhead of libvirt. */ - FIND_OPTIONAL ("libvirt:overhead", 0, - data->events[j].source == GUESTFS_EVENT_LIBRARY && - strstr (data->events[j].message, "launch libvirt guest"), - data->events[k].source == GUESTFS_EVENT_APPLIANCE && - strstr (data->events[k].message, SGABIOS_STRING)); + FIND_OPTIONAL ( + "libvirt:overhead", 0, + data->events[j].source == GUESTFS_EVENT_LIBRARY && + strstr (data->events[j].message, "launch libvirt guest"), + data->events[k].source == GUESTFS_EVENT_APPLIANCE && + strstr (data->events[k].message, SGABIOS_STRING)); /* From starting qemu up to entering the BIOS is the qemu overhead. */ FIND_OPTIONAL ("qemu:overhead", 0, data->events[j].source == GUESTFS_EVENT_APPLIANCE && - strstr (data->events[j].message, "-nodefconfig"), + strstr (data->events[j].message, "-nodefconfig"), data->events[k].source == GUESTFS_EVENT_APPLIANCE && - strstr (data->events[k].message, SGABIOS_STRING)); + strstr (data->events[k].message, SGABIOS_STRING)); - /* From entering the BIOS to starting the kernel is the BIOS overhead. */ + /* From entering the BIOS to starting the kernel is the BIOS overhead. + */ FIND_OPTIONAL ("bios:overhead", 0, - data->events[j].source == GUESTFS_EVENT_APPLIANCE && - strstr (data->events[j].message, SGABIOS_STRING), - data->events[k].source == GUESTFS_EVENT_APPLIANCE && - strstr (data->events[k].message, "Probing EDD")); + data->events[j].source == GUESTFS_EVENT_APPLIANCE && + strstr (data->events[j].message, SGABIOS_STRING), + data->events[k].source == GUESTFS_EVENT_APPLIANCE && + strstr (data->events[k].message, "Probing EDD")); /* SGABIOS (option ROM). */ - FIND_OPTIONAL ("sgabios", 0, - data->events[j].source == GUESTFS_EVENT_APPLIANCE && - strstr (data->events[j].message, SGABIOS_STRING), - data->events[k].source == GUESTFS_EVENT_APPLIANCE && - strstr (data->events[k].message, "SeaBIOS (version")); + FIND_OPTIONAL ( + "sgabios", 0, data->events[j].source == GUESTFS_EVENT_APPLIANCE && + strstr (data->events[j].message, SGABIOS_STRING), + data->events[k].source == GUESTFS_EVENT_APPLIANCE && + strstr (data->events[k].message, "SeaBIOS (version")); /* SeaBIOS. */ FIND ("seabios", 0, data->events[j].source == GUESTFS_EVENT_APPLIANCE && - strstr (data->events[j].message, "SeaBIOS (version"), + strstr (data->events[j].message, "SeaBIOS (version"), data->events[k].source == GUESTFS_EVENT_APPLIANCE && - strstr (data->events[k].message, "Probing EDD")); + strstr (data->events[k].message, "Probing EDD")); /* SeaBIOS - only available when using debug messages. */ - FIND_OPTIONAL ("seabios:pci-probe", 0, - data->events[j].source == GUESTFS_EVENT_APPLIANCE && - strstr (data->events[j].message, "Searching bootorder for: /pci@"), - data->events[k].source == GUESTFS_EVENT_APPLIANCE && - strstr (data->events[k].message, "Scan for option roms")); + FIND_OPTIONAL ( + "seabios:pci-probe", 0, + data->events[j].source == GUESTFS_EVENT_APPLIANCE && + strstr (data->events[j].message, + "Searching bootorder for: /pci@"), + data->events[k].source == GUESTFS_EVENT_APPLIANCE && + strstr (data->events[k].message, "Scan for option roms")); /* Find where we run the guest kernel. */ FIND ("kernel", LONG_ACTIVITY, data->events[j].source == GUESTFS_EVENT_APPLIANCE && - strstr (data->events[j].message, "Probing EDD"), + strstr (data->events[j].message, "Probing EDD"), data->events[k].source == GUESTFS_EVENT_CLOSE); /* Kernel startup to userspace. */ FIND ("kernel:overhead", 0, data->events[j].source == GUESTFS_EVENT_APPLIANCE && - strstr (data->events[j].message, "Probing EDD"), + strstr (data->events[j].message, "Probing EDD"), data->events[k].source == GUESTFS_EVENT_APPLIANCE && - strstr (data->events[k].message, "supermin:") && - strstr (data->events[k].message, "starting up")); + strstr (data->events[k].message, "supermin:") && + strstr (data->events[k].message, "starting up")); /* The time taken to get into start_kernel function. */ FIND ("kernel:entry", 0, data->events[j].source == GUESTFS_EVENT_APPLIANCE && - strstr (data->events[j].message, "Probing EDD"), + strstr (data->events[j].message, "Probing EDD"), data->events[k].source == GUESTFS_EVENT_APPLIANCE && - strstr (data->events[k].message, "Linux version")); + strstr (data->events[k].message, "Linux version")); /* Alternatives patching instructions (XXX not very accurate we * really need some debug messages inserted into the code). */ FIND ("kernel:alternatives", 0, data->events[j].source == GUESTFS_EVENT_APPLIANCE && - strstr (data->events[j].message, "Last level dTLB entries"), + strstr (data->events[j].message, "Last level dTLB entries"), data->events[k].source == GUESTFS_EVENT_APPLIANCE && - strstr (data->events[k].message, "Freeing SMP alternatives")); + strstr (data->events[k].message, "Freeing SMP alternatives")); /* ftrace patching instructions. */ FIND ("kernel:ftrace", 0, data->events[j].source == GUESTFS_EVENT_APPLIANCE && - strstr (data->events[j].message, "ftrace: allocating"), + strstr (data->events[j].message, "ftrace: allocating"), 1); /* Find where we run supermin mini-initrd. */ FIND ("supermin:mini-initrd", 0, data->events[j].source == GUESTFS_EVENT_APPLIANCE && - strstr (data->events[j].message, "supermin:") && - strstr (data->events[j].message, "starting up"), + strstr (data->events[j].message, "supermin:") && + strstr (data->events[j].message, "starting up"), data->events[k].source == GUESTFS_EVENT_APPLIANCE && - strstr (data->events[k].message, "supermin: chroot")); + strstr (data->events[k].message, "supermin: chroot")); /* Loading kernel modules from supermin initrd. */ - FIND_MULTIPLE - ("supermin insmod", 0, - data->events[j].source == GUESTFS_EVENT_APPLIANCE && - strstr (data->events[j].message, "supermin: internal insmod"), - data->events[j].source == GUESTFS_EVENT_APPLIANCE && - strstr (data->events[j].message, "supermin: picked"), - translate_supermin_insmod_message); + FIND_MULTIPLE ( + "supermin insmod", 0, + data->events[j].source == GUESTFS_EVENT_APPLIANCE && + strstr (data->events[j].message, "supermin: internal insmod"), + data->events[j].source == GUESTFS_EVENT_APPLIANCE && + strstr (data->events[j].message, "supermin: picked"), + translate_supermin_insmod_message); /* Find where we run the /init script. */ FIND ("/init", 0, data->events[j].source == GUESTFS_EVENT_APPLIANCE && - strstr (data->events[j].message, "supermin: chroot"), + strstr (data->events[j].message, "supermin: chroot"), data->events[k].source == GUESTFS_EVENT_APPLIANCE && - strstr (data->events[k].message, "guestfsd --verbose")); + strstr (data->events[k].message, "guestfsd --verbose")); /* Everything from the chroot to the first echo in the /init * script counts as bash overhead. */ FIND ("bash:overhead", 0, data->events[j].source == GUESTFS_EVENT_APPLIANCE && - strstr (data->events[j].message, "supermin: chroot"), + strstr (data->events[j].message, "supermin: chroot"), data->events[k].source == GUESTFS_EVENT_APPLIANCE && - strstr (data->events[k].message, "Starting /init script")); + strstr (data->events[k].message, "Starting /init script")); /* /init: Mount special filesystems. */ FIND ("/init:mount-special", 0, data->events[j].source == GUESTFS_EVENT_APPLIANCE && - strstr (data->events[j].message, "*guestfs_boot_analysis=1*"), + strstr (data->events[j].message, "*guestfs_boot_analysis=1*"), data->events[k].source == GUESTFS_EVENT_APPLIANCE && - strstr (data->events[k].message, "kmod static-nodes")); + strstr (data->events[k].message, "kmod static-nodes")); /* /init: Run kmod static-nodes */ FIND ("/init:kmod-static-nodes", 0, data->events[j].source == GUESTFS_EVENT_APPLIANCE && - strstr (data->events[j].message, "kmod static-nodes"), + strstr (data->events[j].message, "kmod static-nodes"), data->events[k].source == GUESTFS_EVENT_APPLIANCE && - strstr (data->events[k].message, "systemd-tmpfiles")); + strstr (data->events[k].message, "systemd-tmpfiles")); /* /init: systemd-tmpfiles. */ FIND ("/init:systemd-tmpfiles", 0, data->events[j].source == GUESTFS_EVENT_APPLIANCE && - strstr (data->events[j].message, "systemd-tmpfiles"), + strstr (data->events[j].message, "systemd-tmpfiles"), data->events[k].source == GUESTFS_EVENT_APPLIANCE && - strstr (data->events[k].message, "udev")); + strstr (data->events[k].message, "udev")); /* /init: start udevd. */ FIND ("/init:udev-overhead", 0, data->events[j].source == GUESTFS_EVENT_APPLIANCE && - strstr (data->events[j].message, "udevd --daemon"), + strstr (data->events[j].message, "udevd --daemon"), data->events[k].source == GUESTFS_EVENT_APPLIANCE && - strstr (data->events[k].message, "nullglob")); + strstr (data->events[k].message, "nullglob")); /* /init: set up network. */ FIND ("/init:network-overhead", 0, data->events[j].source == GUESTFS_EVENT_APPLIANCE && - strstr (data->events[j].message, "+ ip addr"), + strstr (data->events[j].message, "+ ip addr"), data->events[k].source == GUESTFS_EVENT_APPLIANCE && - strstr (data->events[k].message, "+ test")); + strstr (data->events[k].message, "+ test")); /* /init: probe MD arrays. */ FIND ("/init:md-probe", 0, data->events[j].source == GUESTFS_EVENT_APPLIANCE && - strstr (data->events[j].message, "+ mdadm"), + strstr (data->events[j].message, "+ mdadm"), data->events[k].source == GUESTFS_EVENT_APPLIANCE && - strstr (data->events[k].message, "+ modprobe dm_mod")); + strstr (data->events[k].message, "+ modprobe dm_mod")); /* /init: probe DM/LVM. */ FIND ("/init:lvm-probe", 0, data->events[j].source == GUESTFS_EVENT_APPLIANCE && - strstr (data->events[j].message, "+ modprobe dm_mod"), + strstr (data->events[j].message, "+ modprobe dm_mod"), data->events[k].source == GUESTFS_EVENT_APPLIANCE && - strstr (data->events[k].message, "+ ldmtool")); + strstr (data->events[k].message, "+ ldmtool")); /* /init: probe Windows dynamic disks. */ FIND ("/init:windows-dynamic-disks-probe", 0, data->events[j].source == GUESTFS_EVENT_APPLIANCE && - strstr (data->events[j].message, "+ ldmtool"), + strstr (data->events[j].message, "+ ldmtool"), data->events[k].source == GUESTFS_EVENT_APPLIANCE && - strstr (data->events[k].message, "+ test")); + strstr (data->events[k].message, "+ test")); /* Find where we run guestfsd. */ FIND ("guestfsd", 0, data->events[j].source == GUESTFS_EVENT_APPLIANCE && - strstr (data->events[j].message, "guestfsd --verbose"), + strstr (data->events[j].message, "guestfsd --verbose"), data->events[k].source == GUESTFS_EVENT_APPLIANCE && - strstr (data->events[k].message, "fsync /dev/sda")); + strstr (data->events[k].message, "fsync /dev/sda")); /* Shutdown process. */ - FIND ("shutdown", 0, - data->events[j].source == GUESTFS_EVENT_TRACE && - STREQ (data->events[j].message, "close"), + FIND ("shutdown", 0, data->events[j].source == GUESTFS_EVENT_TRACE && + STREQ (data->events[j].message, "close"), data->events[k].source == GUESTFS_EVENT_CLOSE); } @@ -423,7 +430,8 @@ construct_initcall_timeline (void) * For initcall functions in modules: * * calling virtio_mmio_init+0x0/0x1000 [virtio_mmio] @ 1" - * initcall virtio_mmio_init+0x0/0x1000 [virtio_mmio] returned 0 after 14 usecs" + * initcall virtio_mmio_init+0x0/0x1000 [virtio_mmio] returned 0 after + * 14 usecs" * * Initcall functions can be nested, and do not have unique names. */ @@ -432,18 +440,18 @@ construct_initcall_timeline (void) const char *message = data->events[j].message; if (data->events[j].source == GUESTFS_EVENT_APPLIANCE && - ((r = pcre_exec (re_initcall_calling_module, NULL, - message, strlen (message), - 0, 0, vec, sizeof vec / sizeof vec[0])) >= 1 || - (r = pcre_exec (re_initcall_calling, NULL, - message, strlen (message), - 0, 0, vec, sizeof vec / sizeof vec[0])) >= 1)) { + ((r = pcre_exec (re_initcall_calling_module, NULL, message, + strlen (message), 0, 0, vec, + sizeof vec / sizeof vec[0])) >= 1 || + (r = pcre_exec (re_initcall_calling, NULL, message, + strlen (message), 0, 0, vec, + sizeof vec / sizeof vec[0])) >= 1)) { CLEANUP_FREE char *fn_name = NULL, *module_name = NULL; if (r >= 2) /* because pcre_exec returns 1 + number of captures */ - fn_name = strndup (message + vec[2], vec[3]-vec[2]); + fn_name = strndup (message + vec[2], vec[3] - vec[2]); if (r >= 3) - module_name = strndup (message + vec[4], vec[5]-vec[4]); + module_name = strndup (message + vec[4], vec[5] - vec[4]); CLEANUP_FREE char *fullname; if (asprintf (&fullname, "%s.%s", @@ -465,16 +473,17 @@ construct_initcall_timeline (void) int n = 1; while (activity_exists (activity_name)) { free (activity_name); - if (asprintf (&activity_name, "initcall %s:%d", fullname, n) == -1) + if (asprintf (&activity_name, "initcall %s:%d", fullname, n) == + -1) error (EXIT_FAILURE, errno, "asprintf"); n++; } - } - else { + } else { int n = 1; while (!activity_exists_with_no_data (activity_name, i)) { free (activity_name); - if (asprintf (&activity_name, "initcall %s:%d", fullname, n) == -1) + if (asprintf (&activity_name, "initcall %s:%d", fullname, n) == + -1) error (EXIT_FAILURE, errno, "asprintf"); n++; } @@ -483,7 +492,7 @@ construct_initcall_timeline (void) /* Find the matching end event. It might be some time later, * since it appears initcalls can be nested. */ - for (k = j+1; k < data->nr_events; ++k) { + for (k = j + 1; k < data->nr_events; ++k) { if (data->events[k].source == GUESTFS_EVENT_APPLIANCE && strstr (data->events[k].message, initcall_match)) { if (i == 0) diff --git a/tests/qemu/boot-analysis-utils.c b/tests/qemu/boot-analysis-utils.c index bcd470e..c0ba05f 100644 --- a/tests/qemu/boot-analysis-utils.c +++ b/tests/qemu/boot-analysis-utils.c @@ -43,7 +43,7 @@ timespec_diff (const struct timespec *x, const struct timespec *y) { int64_t nsec; - nsec = (y->tv_sec - x->tv_sec) * UINT64_C(1000000000); + nsec = (y->tv_sec - x->tv_sec) * UINT64_C (1000000000); nsec += y->tv_nsec - x->tv_nsec; return nsec; } @@ -64,7 +64,8 @@ test_info (guestfs_h *g, int nr_test_passes) ignore_value (system ("uname -a")); printf (" host CPU: "); fflush (stdout); - ignore_value (system ("perl -n -e 'if (/^model name.*: (.*)/) { print \"$1\\n\"; exit }' /proc/cpuinfo")); + ignore_value (system ("perl -n -e 'if (/^model name.*: (.*)/) { print " + "\"$1\\n\"; exit }' /proc/cpuinfo")); /* Related to qemu. */ printf (" backend: %s\n", guestfs_get_backend (g)); @@ -80,5 +81,5 @@ test_info (guestfs_h *g, int nr_test_passes) /* Related to the guest kernel. Be nice to get the guest * kernel version here somehow (XXX). */ - printf (" append: %s\n", guestfs_get_append (g) ? : ""); + printf (" append: %s\n", guestfs_get_append (g) ?: ""); } diff --git a/tests/qemu/boot-analysis-utils.h b/tests/qemu/boot-analysis-utils.h index 95e4f06..755bb72 100644 --- a/tests/qemu/boot-analysis-utils.h +++ b/tests/qemu/boot-analysis-utils.h @@ -25,7 +25,8 @@ extern void get_time (struct timespec *ts); /* Computes Y - X, returning nanoseconds. */ -extern int64_t timespec_diff (const struct timespec *x, const struct timespec *y); +extern int64_t timespec_diff (const struct timespec *x, + const struct timespec *y); /* Display host machine and test parameters (to stdout). 'g' should * be an open libguestfs handle. It is used for reading hv, memsize diff --git a/tests/qemu/boot-analysis.c b/tests/qemu/boot-analysis.c index 37d8b3c..2d107e8 100644 --- a/tests/qemu/boot-analysis.c +++ b/tests/qemu/boot-analysis.c @@ -147,33 +147,28 @@ main (int argc, char *argv[]) enum { HELP_OPTION = CHAR_MAX + 1 }; static const char *options = "m:v"; static const struct option long_options[] = { - { "help", 0, 0, HELP_OPTION }, - { "append", 1, 0, 0 }, - { "color", 0, 0, 0 }, - { "colour", 0, 0, 0 }, - { "memsize", 1, 0, 'm' }, - { "smp", 1, 0, 0 }, - { "verbose", 0, 0, 'v' }, - { 0, 0, 0, 0 } + { "help", 0, 0, HELP_OPTION }, { "append", 1, 0, 0 }, + { "color", 0, 0, 0 }, { "colour", 0, 0, 0 }, + { "memsize", 1, 0, 'm' }, { "smp", 1, 0, 0 }, + { "verbose", 0, 0, 'v' }, { 0, 0, 0, 0 } }; int c, option_index; for (;;) { c = getopt_long (argc, argv, options, long_options, &option_index); - if (c == -1) break; + if (c == -1) + break; switch (c) { - case 0: /* Options which are long only. */ + case 0: /* Options which are long only. */ if (STREQ (long_options[option_index].name, "append")) { append = optarg; break; - } - else if (STREQ (long_options[option_index].name, "color") || - STREQ (long_options[option_index].name, "colour")) { + } else if (STREQ (long_options[option_index].name, "color") || + STREQ (long_options[option_index].name, "colour")) { force_colour = 1; break; - } - else if (STREQ (long_options[option_index].name, "smp")) { + } else if (STREQ (long_options[option_index].name, "smp")) { if (sscanf (optarg, "%d", &smp) != 1) { fprintf (stderr, "%s: could not parse smp parameter: %s\n", guestfs_int_program_name, optarg); @@ -182,7 +177,8 @@ main (int argc, char *argv[]) break; } fprintf (stderr, "%s: unknown long option: %s (%d)\n", - guestfs_int_program_name, long_options[option_index].name, option_index); + guestfs_int_program_name, long_options[option_index].name, + option_index); exit (EXIT_FAILURE); case 'm': @@ -206,7 +202,8 @@ main (int argc, char *argv[]) } if (STRNEQ (host_cpu, "x86_64")) - fprintf (stderr, "WARNING: host_cpu != x86_64: This program may not work or give bogus results.\n"); + fprintf (stderr, "WARNING: host_cpu != x86_64: This program may not " + "work or give bogus results.\n"); run_test (); } @@ -235,8 +232,8 @@ run_test (void) exit (EXIT_FAILURE); guestfs_close (g); - printf (" pass %zu: %zu events collected in %" PRIi64 " ns\n", - i+1, pass_data[i].nr_events, pass_data[i].elapsed_ns); + printf (" pass %zu: %zu events collected in %" PRIi64 " ns\n", i + 1, + pass_data[i].nr_events, pass_data[i].elapsed_ns); } if (verbose) @@ -271,11 +268,11 @@ add_event (struct pass_data *data, uint64_t source) struct event *ret; data->nr_events++; - data->events = realloc (data->events, - sizeof (struct event) * data->nr_events); + data->events = + realloc (data->events, sizeof (struct event) * data->nr_events); if (data->events == NULL) error (EXIT_FAILURE, errno, "realloc"); - ret = &data->events[data->nr_events-1]; + ret = &data->events[data->nr_events - 1]; get_time (&ret->t); ret->source = source; ret->message = NULL; @@ -290,7 +287,8 @@ create_handle (void) CLEANUP_FREE char *full_append = NULL; g = guestfs_create (); - if (!g) error (EXIT_FAILURE, errno, "guestfs_create"); + if (!g) + error (EXIT_FAILURE, errno, "guestfs_create"); if (memsize != 0) if (guestfs_set_memsize (g, memsize) == -1) @@ -303,10 +301,9 @@ create_handle (void) /* This changes some details in appliance/init and enables a * detailed trace of calls to initcall functions in the kernel. */ - if (asprintf (&full_append, - "guestfs_boot_analysis=1 " - "ignore_loglevel initcall_debug " - "%s", + if (asprintf (&full_append, "guestfs_boot_analysis=1 " + "ignore_loglevel initcall_debug " + "%s", append != NULL ? append : "") == -1) error (EXIT_FAILURE, errno, "asprintf"); @@ -320,9 +317,8 @@ create_handle (void) static void add_drive (guestfs_h *g) { - if (guestfs_add_drive_opts (g, "/dev/null", - GUESTFS_ADD_DRIVE_OPTS_FORMAT, "raw", - GUESTFS_ADD_DRIVE_OPTS_READONLY, 1, + if (guestfs_add_drive_opts (g, "/dev/null", GUESTFS_ADD_DRIVE_OPTS_FORMAT, + "raw", GUESTFS_ADD_DRIVE_OPTS_READONLY, 1, -1) == -1) exit (EXIT_FAILURE); } @@ -331,9 +327,8 @@ add_drive (guestfs_h *g) * the pass_data here. */ static void -close_callback (guestfs_h *g, void *datavp, uint64_t source, - int eh, int flags, - const char *buf, size_t buf_len, +close_callback (guestfs_h *g, void *datavp, uint64_t source, int eh, + int flags, const char *buf, size_t buf_len, const uint64_t *array, size_t array_len) { struct pass_data *data = datavp; @@ -356,9 +351,9 @@ close_callback (guestfs_h *g, void *datavp, uint64_t source, */ static void subprocess_quit_callback (guestfs_h *g, void *datavp, uint64_t source, - int eh, int flags, - const char *buf, size_t buf_len, - const uint64_t *array, size_t array_len) + int eh, int flags, const char *buf, + size_t buf_len, const uint64_t *array, + size_t array_len) { struct pass_data *data = datavp; struct event *event; @@ -376,9 +371,8 @@ subprocess_quit_callback (guestfs_h *g, void *datavp, uint64_t source, * guestfs daemon and talking to each other). */ static void -launch_done_callback (guestfs_h *g, void *datavp, uint64_t source, - int eh, int flags, - const char *buf, size_t buf_len, +launch_done_callback (guestfs_h *g, void *datavp, uint64_t source, int eh, + int flags, const char *buf, size_t buf_len, const uint64_t *array, size_t array_len) { struct pass_data *data = datavp; @@ -399,8 +393,8 @@ trim_r (char *message) { size_t len = strlen (message); - while (len > 0 && message[len-1] == '\r') { - message[len-1] = '\0'; + while (len > 0 && message[len - 1] == '\r') { + message[len - 1] = '\0'; len--; } } @@ -410,9 +404,8 @@ trim_r (char *message) * BIOS, kernel, etc). */ static void -appliance_callback (guestfs_h *g, void *datavp, uint64_t source, - int eh, int flags, - const char *buf, size_t buf_len, +appliance_callback (guestfs_h *g, void *datavp, uint64_t source, int eh, + int flags, const char *buf, size_t buf_len, const uint64_t *array, size_t array_len) { struct pass_data *data = datavp; @@ -459,7 +452,7 @@ appliance_callback (guestfs_h *g, void *datavp, uint64_t source, buf += len; buf_len -= len; - if (buf_len == 0) /* still not complete, more to come! */ + if (buf_len == 0) /* still not complete, more to come! */ return; /* Skip the \n in the buffer. */ @@ -508,9 +501,8 @@ appliance_callback (guestfs_h *g, void *datavp, uint64_t source, * are always delivered as complete messages. */ static void -library_callback (guestfs_h *g, void *datavp, uint64_t source, - int eh, int flags, - const char *buf, size_t buf_len, +library_callback (guestfs_h *g, void *datavp, uint64_t source, int eh, + int flags, const char *buf, size_t buf_len, const uint64_t *array, size_t array_len) { struct pass_data *data = datavp; @@ -530,9 +522,8 @@ library_callback (guestfs_h *g, void *datavp, uint64_t source, * complete messages. */ static void -trace_callback (guestfs_h *g, void *datavp, uint64_t source, - int eh, int flags, - const char *buf, size_t buf_len, +trace_callback (guestfs_h *g, void *datavp, uint64_t source, int eh, + int flags, const char *buf, size_t buf_len, const uint64_t *array, size_t array_len) { struct pass_data *data = datavp; @@ -573,18 +564,18 @@ set_up_event_handlers (guestfs_h *g, size_t pass) data->incomplete_log_message = -1; data->seen_launch = 0; - guestfs_set_event_callback (g, close_callback, - GUESTFS_EVENT_CLOSE, 0, data); + guestfs_set_event_callback (g, close_callback, GUESTFS_EVENT_CLOSE, 0, + data); guestfs_set_event_callback (g, subprocess_quit_callback, GUESTFS_EVENT_SUBPROCESS_QUIT, 0, data); guestfs_set_event_callback (g, launch_done_callback, GUESTFS_EVENT_LAUNCH_DONE, 0, data); guestfs_set_event_callback (g, appliance_callback, GUESTFS_EVENT_APPLIANCE, 0, data); - guestfs_set_event_callback (g, library_callback, - GUESTFS_EVENT_LIBRARY, 0, data); - guestfs_set_event_callback (g, trace_callback, - GUESTFS_EVENT_TRACE, 0, data); + guestfs_set_event_callback (g, library_callback, GUESTFS_EVENT_LIBRARY, 0, + data); + guestfs_set_event_callback (g, trace_callback, GUESTFS_EVENT_TRACE, 0, + data); guestfs_set_verbose (g, 1); guestfs_set_trace (g, 1); @@ -607,7 +598,7 @@ check_pass_data (void) for (j = 0; j < pass_data[i].nr_events; ++j) { assert (pass_data[i].events[j].t.tv_sec > 0); if (j > 0) { - ns = timespec_diff (&pass_data[i].events[j-1].t, + ns = timespec_diff (&pass_data[i].events[j - 1].t, &pass_data[i].events[j].t); assert (ns >= 0); } @@ -617,7 +608,7 @@ check_pass_data (void) assert (pass_data[i].events[j].source != GUESTFS_EVENT_APPLIANCE || strchr (message, '\n') == NULL); len = strlen (message); - assert (len == 0 || message[len-1] != '\r'); + assert (len == 0 || message[len - 1] != '\r'); } } } @@ -629,7 +620,7 @@ print_escaped_string (const char *message) if (isprint (*message)) putchar (*message); else - printf ("\\x%02x", (unsigned int) *message); + printf ("\\x%02x", (unsigned int)*message); message++; } } @@ -679,10 +670,11 @@ add_activity (const char *name, int flags) assert (!activity_exists (name)); nr_activities++; - activities = realloc (activities, sizeof (struct activity) * nr_activities); + activities = + realloc (activities, sizeof (struct activity) * nr_activities); if (activities == NULL) error (EXIT_FAILURE, errno, "realloc"); - ret = &activities[nr_activities-1]; + ret = &activities[nr_activities - 1]; ret->name = strdup (name); if (ret->name == NULL) error (EXIT_FAILURE, errno, "strdup"); @@ -702,8 +694,8 @@ find_activity (const char *name) for (i = 0; i < nr_activities; ++i) if (STREQ (activities[i].name, name)) return &activities[i]; - error (EXIT_FAILURE, 0, - "internal error: could not find activity '%s'", name); + error (EXIT_FAILURE, 0, "internal error: could not find activity '%s'", + name); /*NOTREACHED*/ abort (); } @@ -745,13 +737,13 @@ analyze_timeline (void) activity->mean = 0; for (i = 0; i < NR_TEST_PASSES; ++i) { delta_ns = - timespec_diff (&pass_data[i].events[0].t, - &pass_data[i].events[activity->start_event[i]].t); + timespec_diff (&pass_data[i].events[0].t, + &pass_data[i].events[activity->start_event[i]].t); activity->t += delta_ns; delta_ns = - timespec_diff (&pass_data[i].events[activity->start_event[i]].t, - &pass_data[i].events[activity->end_event[i]].t); + timespec_diff (&pass_data[i].events[activity->start_event[i]].t, + &pass_data[i].events[activity->end_event[i]].t); activity->mean += delta_ns; } @@ -773,8 +765,8 @@ analyze_timeline (void) activity->variance = 0; for (i = 0; i < NR_TEST_PASSES; ++i) { delta_ns = - timespec_diff (&pass_data[i].events[activity->start_event[i]].t, - &pass_data[i].events[activity->end_event[i]].t); + timespec_diff (&pass_data[i].events[activity->start_event[i]].t, + &pass_data[i].events[activity->end_event[i]].t); activity->variance += pow (delta_ns - activity->mean, 2); } activity->variance /= NR_TEST_PASSES; @@ -787,9 +779,8 @@ analyze_timeline (void) for (j = 0; j < nr_activities; ++j) { activities[j].percent = 100.0 * activities[j].mean / activity->mean; - activities[j].warning = - !(activities[j].flags & LONG_ACTIVITY) && - activities[j].percent >= WARNING_THRESHOLD; + activities[j].warning = !(activities[j].flags & LONG_ACTIVITY) && + activities[j].percent >= WARNING_THRESHOLD; } /* Sort the activities by start time. */ @@ -806,8 +797,8 @@ dump_timeline (void) for (i = 0; i < nr_activities; ++i) { printf ("activity %zu:\n", i); printf (" name = %s\n", activities[i].name); - printf (" start - end = %.1f - %.1f\n", - activities[i].t, activities[i].end_t); + printf (" start - end = %.1f - %.1f\n", activities[i].t, + activities[i].end_t); printf (" mean elapsed = %.1f\n", activities[i].mean); printf (" variance = %.1f\n", activities[i].variance); printf (" s.d = %.1f\n", activities[i].sd); @@ -818,12 +809,18 @@ dump_timeline (void) static void print_activity (struct activity *activity) { - if (activity->warning) ansi_red (); else ansi_green (); + if (activity->warning) + ansi_red (); + else + ansi_green (); print_escaped_string (activity->name); ansi_restore (); - printf (" %.1fms ±%.1fms ", - activity->mean / 1000000, activity->sd / 1000000); - if (activity->warning) ansi_red (); else ansi_green (); + printf (" %.1fms ±%.1fms ", activity->mean / 1000000, + activity->sd / 1000000); + if (activity->warning) + ansi_red (); + else + ansi_green (); printf ("(%.1f%%) ", activity->percent); ansi_restore (); } @@ -831,7 +828,7 @@ print_activity (struct activity *activity) static void print_analysis (void) { - double t = -1; /* Current time. */ + double t = -1; /* Current time. */ /* Which columns contain activities that we are displaying now? * -1 == unused column, else index of an activity */ @@ -844,7 +841,8 @@ print_analysis (void) const double MAX_T = 1e20; columns = malloc (nr_columns * sizeof (ssize_t)); - if (columns == NULL) error (EXIT_FAILURE, errno, "malloc"); + if (columns == NULL) + error (EXIT_FAILURE, errno, "malloc"); for (j = 0; j < nr_columns; ++j) columns[j] = -1; @@ -856,11 +854,12 @@ print_analysis (void) for (i = 0; i < nr_activities; ++i) { if (t < activities[i].t && activities[i].t < smallest_next_t) smallest_next_t = activities[i].t; - else if (t < activities[i].end_t && activities[i].end_t < smallest_next_t) + else if (t < activities[i].end_t && + activities[i].end_t < smallest_next_t) smallest_next_t = activities[i].end_t; } if (smallest_next_t == MAX_T) - break; /* Finished. */ + break; /* Finished. */ last_t = t; t = smallest_next_t; @@ -886,7 +885,7 @@ print_analysis (void) for (i = 0; i < nr_activities; ++i) { if (activities[i].end_t < t) { for (j = 0; j < nr_columns; ++j) - if (columns[j] == (ssize_t) i) { + if (columns[j] == (ssize_t)i) { columns[j] = -1; break; } @@ -894,7 +893,7 @@ print_analysis (void) } /* May need to adjust last_free_column after previous operation. */ - while (last_free_column > 0 && columns[last_free_column-1] == -1) + while (last_free_column > 0 && columns[last_free_column - 1] == -1) last_free_column--; /* If there are any activities starting at this time, add them to @@ -918,8 +917,7 @@ print_analysis (void) printf ("▼ "); else printf ("│ "); - } - else + } else printf (" "); } ansi_restore (); @@ -936,8 +934,8 @@ print_analysis (void) static int compare_activities_pointers_by_mean (const void *av, const void *bv) { - const struct activity * const *a = av; - const struct activity * const *b = bv; + const struct activity *const *a = av; + const struct activity *const *b = bv; return (*b)->mean - (*a)->mean; } diff --git a/tests/qemu/boot-analysis.h b/tests/qemu/boot-analysis.h index 86d403e..b2e30e5 100644 --- a/tests/qemu/boot-analysis.h +++ b/tests/qemu/boot-analysis.h @@ -20,10 +20,11 @@ #define GUESTFS_BOOT_ANALYSIS_H_ #define NR_WARMUP_PASSES 3 -#define NR_TEST_PASSES 5 +#define NR_TEST_PASSES 5 /* Per-pass data collected. */ -struct pass_data { +struct pass_data +{ size_t pass; struct timespec start_t; struct timespec end_t; @@ -46,7 +47,8 @@ struct pass_data { int seen_launch; }; -struct event { +struct event +{ struct timespec t; uint64_t source; char *message; @@ -58,10 +60,11 @@ extern struct pass_data pass_data[NR_TEST_PASSES]; * ending. We're interested in when the activities start, and how * long they take (mean, variance, standard deviation of length). */ -struct activity { - char *name; /* Name of this activity. */ +struct activity +{ + char *name; /* Name of this activity. */ int flags; -#define LONG_ACTIVITY 1 /* Expected to take a long time. */ +#define LONG_ACTIVITY 1 /* Expected to take a long time. */ /* For each pass, record the actual start & end events of this * activity. @@ -69,16 +72,16 @@ struct activity { size_t start_event[NR_TEST_PASSES]; size_t end_event[NR_TEST_PASSES]; - double t; /* Start (ns offset). */ - double end_t; /* t + mean - 1 */ + double t; /* Start (ns offset). */ + double end_t; /* t + mean - 1 */ /* Length of this activity. */ - double mean; /* Mean time elapsed (ns). */ - double variance; /* Variance. */ - double sd; /* Standard deviation. */ - double percent; /* Percent of total elapsed time. */ + double mean; /* Mean time elapsed (ns). */ + double variance; /* Variance. */ + double sd; /* Standard deviation. */ + double percent; /* Percent of total elapsed time. */ - int warning; /* Appears in red. */ + int warning; /* Appears in red. */ }; extern size_t nr_activities; diff --git a/tests/qemu/boot-benchmark.c b/tests/qemu/boot-benchmark.c index 0508ee9..64d9782 100644 --- a/tests/qemu/boot-benchmark.c +++ b/tests/qemu/boot-benchmark.c @@ -39,7 +39,7 @@ #include "boot-analysis-utils.h" #define NR_WARMUP_PASSES 3 -#define NR_TEST_PASSES 10 +#define NR_TEST_PASSES 10 static const char *append = NULL; static int memsize = 0; @@ -61,16 +61,16 @@ usage (int exitcode) guestfs_close (g); } - fprintf (stderr, - "boot-benchmark: Benchmark the time taken to boot the libguestfs appliance.\n" - "Usage:\n" - " boot-benchmark [--options]\n" - "Options:\n" - " --help Display this usage text and exit.\n" - " --append OPTS Append OPTS to kernel command line.\n" - " -m MB\n" - " --memsize MB Set memory size in MB (default: %d).\n" - " --smp N Enable N virtual CPUs (default: 1).\n", + fprintf (stderr, "boot-benchmark: Benchmark the time taken to boot the " + "libguestfs appliance.\n" + "Usage:\n" + " boot-benchmark [--options]\n" + "Options:\n" + " --help Display this usage text and exit.\n" + " --append OPTS Append OPTS to kernel command line.\n" + " -m MB\n" + " --memsize MB Set memory size in MB (default: %d).\n" + " --smp N Enable N virtual CPUs (default: 1).\n", default_memsize); exit (exitcode); } @@ -80,26 +80,25 @@ main (int argc, char *argv[]) { enum { HELP_OPTION = CHAR_MAX + 1 }; static const char *options = "m:"; - static const struct option long_options[] = { - { "help", 0, 0, HELP_OPTION }, - { "append", 1, 0, 0 }, - { "memsize", 1, 0, 'm' }, - { "smp", 1, 0, 0 }, - { 0, 0, 0, 0 } - }; + static const struct option long_options[] = { { "help", 0, 0, + HELP_OPTION }, + { "append", 1, 0, 0 }, + { "memsize", 1, 0, 'm' }, + { "smp", 1, 0, 0 }, + { 0, 0, 0, 0 } }; int c, option_index; for (;;) { c = getopt_long (argc, argv, options, long_options, &option_index); - if (c == -1) break; + if (c == -1) + break; switch (c) { - case 0: /* Options which are long only. */ + case 0: /* Options which are long only. */ if (STREQ (long_options[option_index].name, "append")) { append = optarg; break; - } - else if (STREQ (long_options[option_index].name, "smp")) { + } else if (STREQ (long_options[option_index].name, "smp")) { if (sscanf (optarg, "%d", &smp) != 1) { fprintf (stderr, "%s: could not parse smp parameter: %s\n", guestfs_int_program_name, optarg); @@ -108,7 +107,8 @@ main (int argc, char *argv[]) break; } fprintf (stderr, "%s: unknown long option: %s (%d)\n", - guestfs_int_program_name, long_options[option_index].name, option_index); + guestfs_int_program_name, long_options[option_index].name, + option_index); exit (EXIT_FAILURE); case 'm': @@ -196,7 +196,8 @@ create_handle (void) CLEANUP_FREE char *full_append = NULL; g = guestfs_create (); - if (!g) error (EXIT_FAILURE, errno, "guestfs_create"); + if (!g) + error (EXIT_FAILURE, errno, "guestfs_create"); if (memsize != 0) if (guestfs_set_memsize (g, memsize) == -1) @@ -217,9 +218,8 @@ create_handle (void) static void add_drive (guestfs_h *g) { - if (guestfs_add_drive_opts (g, "/dev/null", - GUESTFS_ADD_DRIVE_OPTS_FORMAT, "raw", - GUESTFS_ADD_DRIVE_OPTS_READONLY, 1, + if (guestfs_add_drive_opts (g, "/dev/null", GUESTFS_ADD_DRIVE_OPTS_FORMAT, + "raw", GUESTFS_ADD_DRIVE_OPTS_READONLY, 1, -1) == -1) exit (EXIT_FAILURE); } diff --git a/tests/qemu/qemu-boot.c b/tests/qemu/qemu-boot.c index 61d2ff0..6ba00db 100644 --- a/tests/qemu/qemu-boot.c +++ b/tests/qemu/qemu-boot.c @@ -39,7 +39,7 @@ #include "guestfs-internal-frontend.h" #include "estimate-max-threads.h" -#define MIN(a,b) ((a)<(b)?(a):(b)) +#define MIN(a, b) ((a) < (b) ? (a) : (b)) /* Maximum number of threads we would ever run. Note this should not * be > 20, unless libvirt is modified to increase the maximum number @@ -47,7 +47,7 @@ */ #define MAX_THREADS 12 -static size_t n; /* Number of qemu processes to run in total. */ +static size_t n; /* Number of qemu processes to run in total. */ static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; static int ignore_errors = 0; @@ -58,29 +58,34 @@ static int verbose = 0; /* Events captured by the --log option. */ static const uint64_t event_bitmask = - GUESTFS_EVENT_LIBRARY | - GUESTFS_EVENT_WARNING | - GUESTFS_EVENT_APPLIANCE | - GUESTFS_EVENT_TRACE; + GUESTFS_EVENT_LIBRARY | GUESTFS_EVENT_WARNING | + GUESTFS_EVENT_APPLIANCE | GUESTFS_EVENT_TRACE; -struct thread_data { +struct thread_data +{ int thread_num; int r; }; static void run_test (size_t P); static void *start_thread (void *thread_data_vp); -static void message_callback (guestfs_h *g, void *opaque, uint64_t event, int event_handle, int flags, const char *buf, size_t buf_len, const uint64_t *array, size_t array_len); +static void message_callback (guestfs_h *g, void *opaque, uint64_t event, + int event_handle, int flags, const char *buf, + size_t buf_len, const uint64_t *array, + size_t array_len); static void usage (int exitcode) { fprintf (stderr, - "qemu-boot: A program for repeatedly running the libguestfs appliance.\n" - "qemu-boot [-i] [--log output.%%] [-P <nr-threads>] -n <nr-appliances>\n" + "qemu-boot: A program for repeatedly running the libguestfs " + "appliance.\n" + "qemu-boot [-i] [--log output.%%] [-P <nr-threads>] -n " + "<nr-appliances>\n" " -i Ignore errors\n" " --log <file.%%>\n" - " Write per-appliance logs to file (%% in name replaced by boot number)\n" + " Write per-appliance logs to file (%% in name replaced " + "by boot number)\n" " -P <n> Set number of parallel threads\n" " (default is based on the amount of free memory)\n" " -n <n> Set number of appliances to run before exiting\n" @@ -109,7 +114,8 @@ main (int argc, char *argv[]) for (;;) { c = getopt_long (argc, argv, options, long_options, &option_index); - if (c == -1) break; + if (c == -1) + break; switch (c) { case 0: @@ -121,10 +127,8 @@ main (int argc, char *argv[]) if (log_template[i] == '%') log_file_size += 64; } - } - else - error (EXIT_FAILURE, 0, - "unknown long option: %s (%d)", + } else + error (EXIT_FAILURE, 0, "unknown long option: %s (%d)", long_options[option_index].name, option_index); break; @@ -163,8 +167,7 @@ main (int argc, char *argv[]) "must specify number of processes to run (-n option)"); if (optind != argc) - error (EXIT_FAILURE, 0, - "extra arguments found on the command line"); + error (EXIT_FAILURE, 0, "extra arguments found on the command line"); /* Calculate the number of threads to use. */ if (P > 0) @@ -245,8 +248,7 @@ start_thread (void *thread_data_vp) fflush (stdout); n--; - } - else + } else quit = 1; err = pthread_mutex_unlock (&mutex); @@ -256,7 +258,7 @@ start_thread (void *thread_data_vp) goto error; } - if (quit) /* Work finished. */ + if (quit) /* Work finished. */ break; g = guestfs_create (); @@ -267,18 +269,19 @@ start_thread (void *thread_data_vp) goto error; } - /* Only if using --log, set up a callback. See examples/debug-logging.c */ + /* Only if using --log, set up a callback. See examples/debug-logging.c + */ if (log_template != NULL) { size_t j, k; log_file = malloc (log_file_size + 1); - if (log_file == NULL) abort (); + if (log_file == NULL) + abort (); for (j = 0, k = 0; j < strlen (log_template); ++j) { if (log_template[j] == '%') { snprintf (&log_file[k], log_file_size - k, "%zu", i); k += strlen (&log_file[k]); - } - else + } else log_file[k++] = log_template[j]; } log_file[k] = '\0'; @@ -287,8 +290,8 @@ start_thread (void *thread_data_vp) perror (log_file); abort (); } - guestfs_set_event_callback (g, message_callback, - event_bitmask, 0, log_fp); + guestfs_set_event_callback (g, message_callback, event_bitmask, 0, + log_fp); } snprintf (id, sizeof id, "%zu", i); @@ -327,18 +330,16 @@ start_thread (void *thread_data_vp) thread_data->r = 0; return &thread_data->r; - error: +error: thread_data->r = -1; return &thread_data->r; } /* If using --log, this is called to write messages to the log file. */ static void -message_callback (guestfs_h *g, void *opaque, - uint64_t event, int event_handle, - int flags, - const char *buf, size_t buf_len, - const uint64_t *array, size_t array_len) +message_callback (guestfs_h *g, void *opaque, uint64_t event, + int event_handle, int flags, const char *buf, + size_t buf_len, const uint64_t *array, size_t array_len) { FILE *fp = opaque; diff --git a/tests/qemu/qemu-speed-test.c b/tests/qemu/qemu-speed-test.c index 375a9a4..50f60eb 100644 --- a/tests/qemu/qemu-speed-test.c +++ b/tests/qemu/qemu-speed-test.c @@ -67,24 +67,24 @@ reset_default_tests (int *flag) static void usage (int exitcode) { - fprintf (stderr, - "qemu-speed-test: Test the speed of qemu features.\n" - "\n" - "To run all tests (recommended), do:\n" - " qemu-speed-test\n" - "\n" - "To run only specific tests, do:\n" - " qemu-speed-test --option [--option ...]\n" - "where the test options are:\n" - " --virtio-serial-upload\n" - " --virtio-serial-download\n" - " --block-device-write\n" - " --block-device-read\n" - "\n" - "Other options:\n" - " --help Display help output and exit\n" - " -t <SECS> | --time=<SECS> Set max length of test in seconds\n" - ); + fprintf ( + stderr, + "qemu-speed-test: Test the speed of qemu features.\n" + "\n" + "To run all tests (recommended), do:\n" + " qemu-speed-test\n" + "\n" + "To run only specific tests, do:\n" + " qemu-speed-test --option [--option ...]\n" + "where the test options are:\n" + " --virtio-serial-upload\n" + " --virtio-serial-download\n" + " --block-device-write\n" + " --block-device-read\n" + "\n" + "Other options:\n" + " --help Display help output and exit\n" + " -t <SECS> | --time=<SECS> Set max length of test in seconds\n"); exit (exitcode); } @@ -110,7 +110,8 @@ main (int argc, char *argv[]) for (;;) { c = getopt_long (argc, argv, options, long_options, &option_index); - if (c == -1) break; + if (c == -1) + break; switch (c) { case 0: @@ -118,22 +119,22 @@ main (int argc, char *argv[]) if (STREQ (long_options[option_index].name, "virtio-serial-upload")) { reset_default_tests (&reset_flag); virtio_serial_upload = 1; - } - else if (STREQ (long_options[option_index].name, "virtio-serial-download")) { + } else if (STREQ (long_options[option_index].name, + "virtio-serial-download")) { reset_default_tests (&reset_flag); virtio_serial_download = 1; - } - else if (STREQ (long_options[option_index].name, "block-device-write")) { + } else if (STREQ (long_options[option_index].name, + "block-device-write")) { reset_default_tests (&reset_flag); block_device_write = 1; - } - else if (STREQ (long_options[option_index].name, "block-device-read")) { + } else if (STREQ (long_options[option_index].name, + "block-device-read")) { reset_default_tests (&reset_flag); block_device_read = 1; - } - else { + } else { fprintf (stderr, "%s: unknown long option: %s (%d)\n", - guestfs_int_program_name, long_options[option_index].name, option_index); + guestfs_int_program_name, long_options[option_index].name, + option_index); exit (EXIT_FAILURE); } break; @@ -170,8 +171,8 @@ main (int argc, char *argv[]) static void print_rate (const char *msg, int64_t rate) { - printf ("%-40s %" PRIi64 " bytes/sec (%" PRIi64 " Mbytes/sec)\n", - msg, rate, rate / 1024 / 1024); + printf ("%-40s %" PRIi64 " bytes/sec (%" PRIi64 " Mbytes/sec)\n", msg, + rate, rate / 1024 / 1024); fflush (stdout); } @@ -181,8 +182,8 @@ print_rate (const char *msg, int64_t rate) /* The maximum amount of data to copy. You can safely make this very * large because it's only making sparse files. */ -#define TEST_SERIAL_MAX_SIZE \ - (INT64_C(1024) * INT64_C(1024) * INT64_C(1024) * INT64_C(1024)) +#define TEST_SERIAL_MAX_SIZE \ + (INT64_C (1024) * INT64_C (1024) * INT64_C (1024) * INT64_C (1024)) static guestfs_h *g; static struct timeval start; @@ -210,10 +211,9 @@ timeval_diff (const struct timeval *x, const struct timeval *y) } static void -progress_cb (guestfs_h *g, void *vp, uint64_t event, - int eh, int flags, - const char *buf, size_t buflen, - const uint64_t *array, size_t arraylen) +progress_cb (guestfs_h *g, void *vp, uint64_t event, int eh, int flags, + const char *buf, size_t buflen, const uint64_t *array, + size_t arraylen) { uint64_t transferred; struct timeval now; @@ -233,8 +233,7 @@ progress_cb (guestfs_h *g, void *vp, uint64_t event, if (millis != 0) { rate = 1000 * transferred / millis; - printf ("%s: %" PRIi64 " bytes/sec \r", - operation, rate); + printf ("%s: %" PRIi64 " bytes/sec \r", operation, rate); fflush (stdout); } } @@ -265,7 +264,7 @@ test_virtio_serial (void) if (!g) error (EXIT_FAILURE, errno, "guestfs_create"); - if (guestfs_add_drive_scratch (g, INT64_C (100*1024*1024), -1) == -1) + if (guestfs_add_drive_scratch (g, INT64_C (100 * 1024 * 1024), -1) == -1) exit (EXIT_FAILURE); if (guestfs_launch (g) == -1) @@ -295,7 +294,8 @@ test_virtio_serial (void) gettimeofday (&start, NULL); rate = -1; operation = "upload"; - alarm (max_time_override > 0 ? max_time_override : TEST_SERIAL_MAX_TIME); + alarm (max_time_override > 0 ? max_time_override + : TEST_SERIAL_MAX_TIME); /* For the upload test, upload the sparse file to /dev/null in the * appliance. Hopefully this is mostly testing just virtio-serial. @@ -310,17 +310,16 @@ test_virtio_serial (void) * or that the upload will be stopped by the alarm. */ if (r == -1 && guestfs_last_errno (g) != EINTR) { - fprintf (stderr, - "%s: expecting upload command to return EINTR\n%s\n", + fprintf (stderr, "%s: expecting upload command to return EINTR\n%s\n", guestfs_int_program_name, guestfs_last_error (g)); exit (EXIT_FAILURE); } if (rate == -1) { rate_error: - fprintf (stderr, "%s: internal error: progress callback was not called! (r=%d, errno=%d)\n", - guestfs_int_program_name, - r, guestfs_last_errno (g)); + fprintf (stderr, "%s: internal error: progress callback was not " + "called! (r=%d, errno=%d)\n", + guestfs_int_program_name, r, guestfs_last_errno (g)); exit (EXIT_FAILURE); } @@ -339,7 +338,8 @@ test_virtio_serial (void) gettimeofday (&start, NULL); rate = -1; operation = "download"; - alarm (max_time_override > 0 ? max_time_override : TEST_SERIAL_MAX_TIME); + alarm (max_time_override > 0 ? max_time_override + : TEST_SERIAL_MAX_TIME); guestfs_push_error_handler (g, NULL, NULL); r = guestfs_download (g, "/sparse", "/dev/null"); alarm (0); @@ -378,7 +378,8 @@ test_block_device (void) CLEANUP_FREE char **devices = NULL; char *r; const char *argv[4]; - int t = max_time_override > 0 ? max_time_override : TEST_BLOCK_DEVICE_TIME; + int t = + max_time_override > 0 ? max_time_override : TEST_BLOCK_DEVICE_TIME; char tbuf[64]; int64_t bytes_written, bytes_read; @@ -399,8 +400,7 @@ test_block_device (void) error (EXIT_FAILURE, errno, "mkstemp: %s", tmpfile); close (fd); - if (guestfs_disk_create (g, tmpfile, "raw", - INT64_C (1024*1024*1024), + if (guestfs_disk_create (g, tmpfile, "raw", INT64_C (1024 * 1024 * 1024), GUESTFS_DISK_CREATE_PREALLOCATION, "full", -1) == -1) exit (EXIT_FAILURE); @@ -415,8 +415,10 @@ test_block_device (void) if (devices == NULL) exit (EXIT_FAILURE); if (devices[0] == NULL) { - fprintf (stderr, "%s: expected guestfs_list_devices to return at least 1 device\n", - guestfs_int_program_name); + fprintf ( + stderr, + "%s: expected guestfs_list_devices to return at least 1 device\n", + guestfs_int_program_name); exit (EXIT_FAILURE); } @@ -426,7 +428,7 @@ test_block_device (void) argv[1] = "w"; argv[2] = tbuf; argv[3] = NULL; - r = guestfs_debug (g, "device_speed", (char **) argv); + r = guestfs_debug (g, "device_speed", (char **)argv); if (r == NULL) exit (EXIT_FAILURE); @@ -445,7 +447,7 @@ test_block_device (void) argv[1] = "r"; argv[2] = tbuf; argv[3] = NULL; - r = guestfs_debug (g, "device_speed", (char **) argv); + r = guestfs_debug (g, "device_speed", (char **)argv); if (r == NULL) exit (EXIT_FAILURE); diff --git a/tests/regressions/rhbz1055452.c b/tests/regressions/rhbz1055452.c index 79cd540..1318760 100644 --- a/tests/regressions/rhbz1055452.c +++ b/tests/regressions/rhbz1055452.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ /* Regression test for RHBZ#1055452. Check parsing of @@ -39,7 +40,8 @@ int main (int argc, char *argv[]) { guestfs_h *g; - const char *var[] = { "LIBGUESTFS_BACKEND", "LIBGUESTFS_ATTACH_METHOD", NULL }; + const char *var[] = { "LIBGUESTFS_BACKEND", "LIBGUESTFS_ATTACH_METHOD", + NULL }; const char *value[] = { "appliance", "direct", NULL }; size_t i, j; char *r; @@ -75,7 +77,8 @@ main (int argc, char *argv[]) if (!r) exit (EXIT_FAILURE); if (STRNEQ (r, "appliance")) { - fprintf (stderr, "%s: expecting guestfs_get_attach_method to return 'appliance', but it returned '%s'.\n", + fprintf (stderr, "%s: expecting guestfs_get_attach_method to return " + "'appliance', but it returned '%s'.\n", argv[0], r); exit (EXIT_FAILURE); } @@ -87,7 +90,8 @@ main (int argc, char *argv[]) if (!r) exit (EXIT_FAILURE); if (STRNEQ (r, "direct")) { - fprintf (stderr, "%s: expecting guestfs_get_backend to return 'direct', but it returned '%s'.\n", + fprintf (stderr, "%s: expecting guestfs_get_backend to return " + "'direct', but it returned '%s'.\n", argv[0], r); exit (EXIT_FAILURE); } diff --git a/tests/regressions/rhbz501893.c b/tests/regressions/rhbz501893.c index f6111c9..5c3842d 100644 --- a/tests/regressions/rhbz501893.c +++ b/tests/regressions/rhbz501893.c @@ -14,7 +14,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ #include <config.h> diff --git a/tests/regressions/rhbz790721.c b/tests/regressions/rhbz790721.c index e2178e5..f650f01 100644 --- a/tests/regressions/rhbz790721.c +++ b/tests/regressions/rhbz790721.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ /* Regression test for RHBZ#790721. @@ -100,7 +101,7 @@ main (int argc, char *argv[]) for (i = 0; i < NR_THREADS; ++i) { int *ret; - r = pthread_join (thread[i], (void **) &ret); + r = pthread_join (thread[i], (void **)&ret); if (r != 0) error (EXIT_FAILURE, r, "pthread_join"); if (*ret == -1) @@ -124,9 +125,8 @@ start_thread (void *vi) pthread_exit (vi); } - if (guestfs_add_drive_opts (g, "/dev/null", - GUESTFS_ADD_DRIVE_OPTS_FORMAT, "raw", - GUESTFS_ADD_DRIVE_OPTS_READONLY, 1, + if (guestfs_add_drive_opts (g, "/dev/null", GUESTFS_ADD_DRIVE_OPTS_FORMAT, + "raw", GUESTFS_ADD_DRIVE_OPTS_READONLY, 1, -1) == -1) { *(int *)vi = -1; pthread_exit (vi); @@ -141,8 +141,8 @@ start_thread (void *vi) /* Wait for the other threads to finish starting up. */ r = pthread_barrier_wait (&barrier); if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) { - fprintf (stderr, "pthread_barrier_wait: [thread %d]: %s\n", - thread_id, strerror (r)); + fprintf (stderr, "pthread_barrier_wait: [thread %d]: %s\n", thread_id, + strerror (r)); *(int *)vi = -1; pthread_exit (vi); } @@ -156,16 +156,18 @@ start_thread (void *vi) error = guestfs_last_error (g); if (r == 0) { /* This should NOT happen. */ - fprintf (stderr, "rhbz790721: [thread %d]: " - "strangeness in test: expected launch to fail, but it didn't!\n", - thread_id); + fprintf ( + stderr, + "rhbz790721: [thread %d]: " + "strangeness in test: expected launch to fail, but it didn't!\n", + thread_id); *(int *)vi = -1; pthread_exit (vi); } if (error == NULL) { /* This also should NOT happen. */ fprintf (stderr, "rhbz790721: [thread %d]: " - "strangeness in test: no error message!\n", + "strangeness in test: no error message!\n", thread_id); *(int *)vi = -1; pthread_exit (vi); @@ -177,7 +179,8 @@ start_thread (void *vi) * is designed to spot. */ if (strstr (error, "guestfs_launch failed") == NULL) { - fprintf (stderr, "rhbz790721: [thread %d]: error: %s\n", thread_id, error); + fprintf (stderr, "rhbz790721: [thread %d]: error: %s\n", thread_id, + error); *(int *)vi = -1; pthread_exit (vi); } diff --git a/tests/regressions/rhbz914931.c b/tests/regressions/rhbz914931.c index 61b81ba..3a697b8 100644 --- a/tests/regressions/rhbz914931.c +++ b/tests/regressions/rhbz914931.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ /* Regression test for RHBZ#914931. Simulate an appliance crash @@ -52,9 +53,8 @@ main (int argc, char *argv[]) if (!g) error (EXIT_FAILURE, errno, "guestfs_create"); - if (guestfs_add_drive_opts (g, "/dev/null", - GUESTFS_ADD_DRIVE_OPTS_FORMAT, "raw", - GUESTFS_ADD_DRIVE_OPTS_READONLY, 1, + if (guestfs_add_drive_opts (g, "/dev/null", GUESTFS_ADD_DRIVE_OPTS_FORMAT, + "raw", GUESTFS_ADD_DRIVE_OPTS_READONLY, 1, -1) == -1) exit (EXIT_FAILURE); diff --git a/tests/regressions/test-big-heap.c b/tests/regressions/test-big-heap.c index 1cbf8d2..6908512 100644 --- a/tests/regressions/test-big-heap.c +++ b/tests/regressions/test-big-heap.c @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA. */ /* Test that allocating lots of heap in the main program doesn't cause @@ -61,9 +62,8 @@ main (int argc, char *argv[]) */ mem = calloc (1100, 1024 * 1024); if (mem == NULL) { - fprintf (stderr, - "%s: test skipped because cannot allocate enough " - "contiguous heap\n", + fprintf (stderr, "%s: test skipped because cannot allocate enough " + "contiguous heap\n", argv[0]); exit (77); } @@ -74,7 +74,8 @@ main (int argc, char *argv[]) fmt = guestfs_disk_format (g, "/dev/null"); if (fmt == NULL) { /* Test failed. */ - fprintf (stderr, "%s: unexpected failure of test, see earlier messages\n", + fprintf (stderr, + "%s: unexpected failure of test, see earlier messages\n", argv[0]); exit (EXIT_FAILURE); } diff --git a/tests/xml/fake-libvirt-xml.c b/tests/xml/fake-libvirt-xml.c index a34b700..fadf42b 100644 --- a/tests/xml/fake-libvirt-xml.c +++ b/tests/xml/fake-libvirt-xml.c @@ -51,8 +51,8 @@ virDomainGetXMLDesc (virDomainPtr dom, unsigned int flags) _exit (1); } - fprintf (stderr, - "fake_libvirt_xml: returning fake libvirt XML from %s\n", path); + fprintf (stderr, "fake_libvirt_xml: returning fake libvirt XML from %s\n", + path); fd = open (path, O_RDONLY | O_CLOEXEC); if (fd == -1) { @@ -90,5 +90,5 @@ virDomainGetXMLDesc (virDomainPtr dom, unsigned int flags) _exit (1); } - return buf; /* caller frees */ + return buf; /* caller frees */ } diff --git a/v2v/changeuid-c.c b/v2v/changeuid-c.c index 0de5a30..72840e4 100644 --- a/v2v/changeuid-c.c +++ b/v2v/changeuid-c.c @@ -24,7 +24,7 @@ #include <caml/mlvalues.h> -extern int v2v_exit (value rv) __attribute__((noreturn)); +extern int v2v_exit (value rv) __attribute__ ((noreturn)); int v2v_exit (value rv) diff --git a/v2v/domainxml-c.c b/v2v/domainxml-c.c index 4876f94..b6857e3 100644 --- a/v2v/domainxml-c.c +++ b/v2v/domainxml-c.c @@ -81,8 +81,7 @@ get_dom_state (virDomainPtr dom) /* See src/libvirt-auth.c for why we need this. */ static int libvirt_auth_default_wrapper (virConnectCredentialPtr cred, - unsigned int ncred, - void *passwordvp) + unsigned int ncred, void *passwordvp) { const char *password = passwordvp; unsigned int i; @@ -95,15 +94,13 @@ libvirt_auth_default_wrapper (virConnectCredentialPtr cred, if (cred[i].type == VIR_CRED_PASSPHRASE) { cred[i].result = strdup (password); cred[i].resultlen = strlen (password); - } - else { + } else { cred[i].result = NULL; cred[i].resultlen = 0; } } return 0; - } - else { + } else { /* No --password-file so call the default handler. */ return virConnectAuthPtrDefault->cb (cred, ncred, virConnectAuthPtrDefault->cbdata); @@ -138,7 +135,8 @@ connect_and_load_pool (value connv, value poolnamev) snprintf (errmsg, sizeof errmsg, _("cannot open libvirt connection '%s'"), conn_uri); else - snprintf (errmsg, sizeof errmsg, _("cannot open libvirt connection")); + snprintf (errmsg, sizeof errmsg, + _("cannot open libvirt connection")); caml_invalid_argument (errmsg); } @@ -158,9 +156,13 @@ connect_and_load_pool (value connv, value poolnamev) if (!pool) { err = virGetLastError (); - snprintf (errmsg, sizeof errmsg, - _("cannot find libvirt pool '%s': %s\n\nUse `virsh pool-list --all' to list all available pools, and `virsh pool-dumpxml <pool>' to display details about a particular pool.\n\nTo set the pool which virt-v2v uses, add the `-os <pool>' option."), - poolname, err->message); + snprintf ( + errmsg, sizeof errmsg, + _("cannot find libvirt pool '%s': %s\n\nUse `virsh pool-list " + "--all' to list all available pools, and `virsh pool-dumpxml " + "<pool>' to display details about a particular pool.\n\nTo set " + "the pool which virt-v2v uses, add the `-os <pool>' option."), + poolname, err->message); virConnectClose (conn); caml_invalid_argument (errmsg); } @@ -198,7 +200,7 @@ v2v_dumpxml (value passwordv, value connv, value domnamev) /* Set up authentication wrapper. */ authdata = *virConnectAuthPtrDefault; authdata.cb = libvirt_auth_default_wrapper; - authdata.cbdata = (void *) password; + authdata.cbdata = (void *)password; /* Note this cannot be a read-only connection since we need to use * the VIR_DOMAIN_XML_SECURE flag below. @@ -209,7 +211,8 @@ v2v_dumpxml (value passwordv, value connv, value domnamev) snprintf (errmsg, sizeof errmsg, _("cannot open libvirt connection '%s'"), conn_uri); else - snprintf (errmsg, sizeof errmsg, _("cannot open libvirt connection")); + snprintf (errmsg, sizeof errmsg, + _("cannot open libvirt connection")); caml_invalid_argument (errmsg); } @@ -230,7 +233,8 @@ v2v_dumpxml (value passwordv, value connv, value domnamev) if (!dom) { err = virGetLastError (); snprintf (errmsg, sizeof errmsg, - _("cannot find libvirt domain '%s': %s"), domname, err->message); + _("cannot find libvirt domain '%s': %s"), domname, + err->message); virConnectClose (conn); caml_invalid_argument (errmsg); } @@ -241,11 +245,11 @@ v2v_dumpxml (value passwordv, value connv, value domnamev) if (!is_test_uri) { int state = get_dom_state (dom); - if (state == VIR_DOMAIN_RUNNING || - state == VIR_DOMAIN_BLOCKED || + if (state == VIR_DOMAIN_RUNNING || state == VIR_DOMAIN_BLOCKED || state == VIR_DOMAIN_PAUSED) { snprintf (errmsg, sizeof errmsg, - _("libvirt domain '%s' is running or paused. It must be shut down in order to perform virt-v2v conversion"), + _("libvirt domain '%s' is running or paused. It must be " + "shut down in order to perform virt-v2v conversion"), domname); virDomainFree (dom); virConnectClose (conn); @@ -258,8 +262,8 @@ v2v_dumpxml (value passwordv, value connv, value domnamev) if (xml == NULL) { err = virGetLastError (); snprintf (errmsg, sizeof errmsg, - _("cannot fetch XML description of guest '%s': %s"), - domname, err->message); + _("cannot fetch XML description of guest '%s': %s"), domname, + err->message); virDomainFree (dom); virConnectClose (conn); caml_invalid_argument (errmsg); @@ -338,7 +342,8 @@ v2v_vol_dumpxml (value connv, value poolnamev, value volnamev) if (!vol) { err = virGetLastError (); snprintf (errmsg, sizeof errmsg, - _("cannot find libvirt volume '%s': %s"), volname, err->message); + _("cannot find libvirt volume '%s': %s"), volname, + err->message); virStoragePoolFree (pool); virConnectClose (conn); caml_invalid_argument (errmsg); @@ -393,7 +398,8 @@ v2v_capabilities (value connv, value unitv) snprintf (errmsg, sizeof errmsg, _("cannot open libvirt connection '%s'"), conn_uri); else - snprintf (errmsg, sizeof errmsg, _("cannot open libvirt connection")); + snprintf (errmsg, sizeof errmsg, + _("cannot open libvirt connection")); caml_invalid_argument (errmsg); } @@ -450,7 +456,8 @@ v2v_domain_exists (value connv, value domnamev) snprintf (errmsg, sizeof errmsg, _("cannot open libvirt connection '%s'"), conn_uri); else - snprintf (errmsg, sizeof errmsg, _("cannot open libvirt connection")); + snprintf (errmsg, sizeof errmsg, + _("cannot open libvirt connection")); caml_invalid_argument (errmsg); } @@ -467,15 +474,14 @@ v2v_domain_exists (value connv, value domnamev) if (dom) { domain_exists = 1; virDomainFree (dom); - } - else { + } else { err = virGetLastError (); if (err->code == VIR_ERR_NO_DOMAIN) domain_exists = 0; else { snprintf (errmsg, sizeof errmsg, - _("cannot find libvirt domain '%s': %s"), - domname, err->message); + _("cannot find libvirt domain '%s': %s"), domname, + err->message); virConnectClose (conn); caml_invalid_argument (errmsg); } @@ -488,16 +494,18 @@ v2v_domain_exists (value connv, value domnamev) #else /* !HAVE_LIBVIRT */ -#define NO_LIBVIRT(proto) \ - proto __attribute__((noreturn)); \ - proto \ - { \ - caml_invalid_argument ("virt-v2v was compiled without libvirt support"); \ +#define NO_LIBVIRT(proto) \ + proto __attribute__ ((noreturn)); \ + proto \ + { \ + caml_invalid_argument ( \ + "virt-v2v was compiled without libvirt support"); \ } NO_LIBVIRT (value v2v_dumpxml (value connv, value domv)) NO_LIBVIRT (value v2v_pool_dumpxml (value connv, value poolv)) -NO_LIBVIRT (value v2v_vol_dumpxml (value connv, value poolnamev, value volnamev)) +NO_LIBVIRT (value v2v_vol_dumpxml (value connv, value poolnamev, + value volnamev)) NO_LIBVIRT (value v2v_capabilities (value connv, value unitv)) NO_LIBVIRT (value v2v_domain_exists (value connv, value domnamev)) diff --git a/v2v/utils-c.c b/v2v/utils-c.c index 5098952..f000ce2 100644 --- a/v2v/utils-c.c +++ b/v2v/utils-c.c @@ -71,8 +71,8 @@ get_firmware (char **firmware) len = guestfs_int_count_strings (firmware); for (i = len; i > 0; i -= 2) { - v1 = caml_copy_string (firmware[i-2]); - v2 = caml_copy_string (firmware[i-1]); + v1 = caml_copy_string (firmware[i - 2]); + v2 = caml_copy_string (firmware[i - 1]); v = caml_alloc (2, 0); Store_field (v, 0, v1); Store_field (v, 1, v2); @@ -88,17 +88,17 @@ get_firmware (char **firmware) value v2v_utils_ovmf_i386_firmware (value unitv) { - return get_firmware ((char **) guestfs_int_ovmf_i386_firmware); + return get_firmware ((char **)guestfs_int_ovmf_i386_firmware); } value v2v_utils_ovmf_x86_64_firmware (value unitv) { - return get_firmware ((char **) guestfs_int_ovmf_x86_64_firmware); + return get_firmware ((char **)guestfs_int_ovmf_x86_64_firmware); } value v2v_utils_aavmf_firmware (value unitv) { - return get_firmware ((char **) guestfs_int_aavmf_firmware); + return get_firmware ((char **)guestfs_int_aavmf_firmware); } diff --git a/v2v/xml-c.c b/v2v/xml-c.c index ecaaedf..1c03cfc 100644 --- a/v2v/xml-c.c +++ b/v2v/xml-c.c @@ -38,15 +38,12 @@ #pragma GCC diagnostic ignored "-Wmissing-prototypes" /* xmlDocPtr type */ -#define Doc_val(v) (*((xmlDocPtr *)Data_custom_val(v))) +#define Doc_val(v) (*((xmlDocPtr *)Data_custom_val (v))) static struct custom_operations doc_custom_operations = { - (char *) "doc_custom_operations", - custom_finalize_default, - custom_compare_default, - custom_hash_default, - custom_serialize_default, - custom_deserialize_default + (char *)"doc_custom_operations", custom_finalize_default, + custom_compare_default, custom_hash_default, + custom_serialize_default, custom_deserialize_default }; value @@ -60,10 +57,10 @@ v2v_xml_free_doc_ptr (value docv) } /* xmlXPathContextPtr type */ -#define Xpathctx_ptr_val(v) (*((xmlXPathContextPtr *)Data_custom_val(v))) +#define Xpathctx_ptr_val(v) (*((xmlXPathContextPtr *)Data_custom_val (v))) static struct custom_operations xpathctx_ptr_custom_operations = { - (char *) "xpathctx_ptr_custom_operations", + (char *)"xpathctx_ptr_custom_operations", custom_finalize_default, custom_compare_default, custom_hash_default, @@ -82,10 +79,10 @@ v2v_xml_free_xpathctx_ptr (value xpathctxv) } /* xmlXPathObjectPtr type */ -#define Xpathobj_ptr_val(v) (*((xmlXPathObjectPtr *)Data_custom_val(v))) +#define Xpathobj_ptr_val(v) (*((xmlXPathObjectPtr *)Data_custom_val (v))) static struct custom_operations xpathobj_ptr_custom_operations = { - (char *) "xpathobj_ptr_custom_operations", + (char *)"xpathobj_ptr_custom_operations", custom_finalize_default, custom_compare_default, custom_hash_default, @@ -113,12 +110,14 @@ v2v_xml_parse_memory (value xmlv) /* For security reasons, call xmlReadMemory (not xmlParseMemory) and * pass XML_PARSE_NONET. See commit 845daded5fddc70f. */ - doc = xmlReadMemory (String_val (xmlv), caml_string_length (xmlv), - NULL, NULL, XML_PARSE_NONET); + doc = xmlReadMemory (String_val (xmlv), caml_string_length (xmlv), NULL, + NULL, XML_PARSE_NONET); if (doc == NULL) - caml_invalid_argument ("parse_memory: unable to parse XML from libvirt"); + caml_invalid_argument ( + "parse_memory: unable to parse XML from libvirt"); - docv = caml_alloc_custom (&doc_custom_operations, sizeof (xmlDocPtr), 0, 1); + docv = + caml_alloc_custom (&doc_custom_operations, sizeof (xmlDocPtr), 0, 1); Doc_val (docv) = doc; CAMLreturn (docv); @@ -136,7 +135,8 @@ v2v_xml_copy_doc (value docv, value recursivev) if (copy == NULL) caml_invalid_argument ("copy_doc: failed to copy"); - copyv = caml_alloc_custom (&doc_custom_operations, sizeof (xmlDocPtr), 0, 1); + copyv = + caml_alloc_custom (&doc_custom_operations, sizeof (xmlDocPtr), 0, 1); Doc_val (copyv) = copy; CAMLreturn (copyv); @@ -172,7 +172,8 @@ v2v_xml_xpath_new_context_ptr (value docv) doc = Doc_val (docv); xpathctx = xmlXPathNewContext (doc); if (xpathctx == NULL) - caml_invalid_argument ("xpath_new_context: unable to create xmlXPathNewContext"); + caml_invalid_argument ( + "xpath_new_context: unable to create xmlXPathNewContext"); xpathctxv = caml_alloc_custom (&xpathctx_ptr_custom_operations, sizeof (xmlXPathContextPtr), 0, 1); @@ -189,9 +190,11 @@ v2v_xml_xpathctx_ptr_register_ns (value xpathctxv, value prefix, value uri) int r; xpathctx = Xpathctx_ptr_val (xpathctxv); - r = xmlXPathRegisterNs (xpathctx, BAD_CAST String_val (prefix), BAD_CAST String_val (uri)); + r = xmlXPathRegisterNs (xpathctx, BAD_CAST String_val (prefix), + BAD_CAST String_val (uri)); if (r == -1) - caml_invalid_argument ("xpath_register_ns: unable to register namespace"); + caml_invalid_argument ( + "xpath_register_ns: unable to register namespace"); CAMLreturn (Val_unit); } @@ -207,7 +210,8 @@ v2v_xml_xpathctx_ptr_eval_expression (value xpathctxv, value exprv) xpathctx = Xpathctx_ptr_val (xpathctxv); xpathobj = xmlXPathEvalExpression (BAD_CAST String_val (exprv), xpathctx); if (xpathobj == NULL) - caml_invalid_argument ("xpath_eval_expression: unable to evaluate XPath expression"); + caml_invalid_argument ( + "xpath_eval_expression: unable to evaluate XPath expression"); xpathobjv = caml_alloc_custom (&xpathobj_ptr_custom_operations, sizeof (xmlXPathObjectPtr), 0, 1); @@ -246,7 +250,7 @@ v2v_xml_xpathobj_ptr_get_node_ptr (value xpathobjv, value iv) * pointer with the doc in the OCaml layer so the GC will not free * one without freeing the other. */ - CAMLreturn ((value) xpathobj->nodesetval->nodeTab[i]); + CAMLreturn ((value)xpathobj->nodesetval->nodeTab[i]); } value @@ -254,7 +258,7 @@ v2v_xml_xpathctx_set_node_ptr (value xpathctxv, value nodev) { CAMLparam2 (xpathctxv, nodev); xmlXPathContextPtr xpathctx = Xpathctx_ptr_val (xpathctxv); - xmlNodePtr node = (xmlNodePtr) nodev; + xmlNodePtr node = (xmlNodePtr)nodev; xpathctx->node = node; @@ -265,15 +269,16 @@ value v2v_xml_node_ptr_name (value nodev) { CAMLparam1 (nodev); - xmlNodePtr node = (xmlNodePtr) nodev; + xmlNodePtr node = (xmlNodePtr)nodev; switch (node->type) { case XML_ATTRIBUTE_NODE: case XML_ELEMENT_NODE: - CAMLreturn (caml_copy_string ((char *) node->name)); + CAMLreturn (caml_copy_string ((char *)node->name)); default: - caml_invalid_argument ("node_name: don't know how to get the name of this node"); + caml_invalid_argument ( + "node_name: don't know how to get the name of this node"); } } @@ -283,7 +288,7 @@ v2v_xml_node_ptr_as_string (value docv, value nodev) CAMLparam2 (docv, nodev); CAMLlocal1 (strv); xmlDocPtr doc = Doc_val (docv); - xmlNodePtr node = (xmlNodePtr) nodev; + xmlNodePtr node = (xmlNodePtr)nodev; char *str; switch (node->type) { @@ -291,21 +296,23 @@ v2v_xml_node_ptr_as_string (value docv, value nodev) case XML_COMMENT_NODE: case XML_CDATA_SECTION_NODE: case XML_PI_NODE: - CAMLreturn (caml_copy_string ((char *) node->content)); + CAMLreturn (caml_copy_string ((char *)node->content)); case XML_ATTRIBUTE_NODE: case XML_ELEMENT_NODE: - str = (char *) xmlNodeListGetString (doc, node->children, 1); + str = (char *)xmlNodeListGetString (doc, node->children, 1); if (str == NULL) - caml_invalid_argument ("node_as_string: xmlNodeListGetString cannot convert node to string"); + caml_invalid_argument ("node_as_string: xmlNodeListGetString cannot " + "convert node to string"); strv = caml_copy_string (str); free (str); CAMLreturn (strv); default: - caml_invalid_argument ("node_as_string: don't know how to convert this node to a string"); + caml_invalid_argument ( + "node_as_string: don't know how to convert this node to a string"); } } @@ -313,7 +320,7 @@ value v2v_xml_node_ptr_set_content (value nodev, value contentv) { CAMLparam2 (nodev, contentv); - xmlNodePtr node = (xmlNodePtr) nodev; + xmlNodePtr node = (xmlNodePtr)nodev; xmlNodeSetContent (node, BAD_CAST String_val (contentv)); @@ -324,29 +331,29 @@ value v2v_xml_node_ptr_new_text_child (value nodev, value namev, value contentv) { CAMLparam3 (nodev, namev, contentv); - xmlNodePtr node = (xmlNodePtr) nodev; + xmlNodePtr node = (xmlNodePtr)nodev; xmlNodePtr new_node; - new_node = xmlNewTextChild (node, NULL, - BAD_CAST String_val (namev), + new_node = xmlNewTextChild (node, NULL, BAD_CAST String_val (namev), BAD_CAST String_val (contentv)); if (new_node == NULL) - caml_invalid_argument ("node_ptr_new_text_child: failed to create new node"); + caml_invalid_argument ( + "node_ptr_new_text_child: failed to create new node"); /* See comment in v2v_xml_xpathobj_ptr_get_node_ptr about returning * named xmlNodePtr here. */ - CAMLreturn ((value) new_node); + CAMLreturn ((value)new_node); } value v2v_xml_node_ptr_set_prop (value nodev, value namev, value valv) { CAMLparam3 (nodev, namev, valv); - xmlNodePtr node = (xmlNodePtr) nodev; + xmlNodePtr node = (xmlNodePtr)nodev; - if (xmlSetProp (node, BAD_CAST String_val (namev), BAD_CAST String_val (valv)) - == NULL) + if (xmlSetProp (node, BAD_CAST String_val (namev), + BAD_CAST String_val (valv)) == NULL) caml_invalid_argument ("node_ptr_set_prop: failed to set property"); CAMLreturn (Val_unit); @@ -356,7 +363,7 @@ value v2v_xml_node_ptr_unset_prop (value nodev, value namev) { CAMLparam2 (nodev, namev); - xmlNodePtr node = (xmlNodePtr) nodev; + xmlNodePtr node = (xmlNodePtr)nodev; int r; r = xmlUnsetProp (node, BAD_CAST String_val (namev)); @@ -368,7 +375,7 @@ value v2v_xml_node_ptr_unlink_node (value nodev) { CAMLparam1 (nodev); - xmlNodePtr node = (xmlNodePtr) nodev; + xmlNodePtr node = (xmlNodePtr)nodev; xmlUnlinkNode (node); xmlFreeNode (node); @@ -386,11 +393,11 @@ v2v_xml_doc_get_root_element (value docv) root = xmlDocGetRootElement (doc); if (root == NULL) - CAMLreturn (Val_int (0)); /* None */ + CAMLreturn (Val_int (0)); /* None */ else { v = caml_alloc (1, 0); - Store_field (v, 0, (value) root); - CAMLreturn (v); /* Some node_ptr */ + Store_field (v, 0, (value)root); + CAMLreturn (v); /* Some node_ptr */ } } @@ -412,8 +419,8 @@ v2v_xml_parse_uri (value strv) sv = caml_copy_string (uri->scheme); ov = caml_alloc (1, 0); Store_field (ov, 0, sv); - } - else ov = Val_int (0); + } else + ov = Val_int (0); Store_field (rv, 0, ov); /* field 1: uri_opaque : string option */ @@ -421,8 +428,8 @@ v2v_xml_parse_uri (value strv) sv = caml_copy_string (uri->opaque); ov = caml_alloc (1, 0); Store_field (ov, 0, sv); - } - else ov = Val_int (0); + } else + ov = Val_int (0); Store_field (rv, 1, ov); /* field 2: uri_authority : string option */ @@ -430,8 +437,8 @@ v2v_xml_parse_uri (value strv) sv = caml_copy_string (uri->authority); ov = caml_alloc (1, 0); Store_field (ov, 0, sv); - } - else ov = Val_int (0); + } else + ov = Val_int (0); Store_field (rv, 2, ov); /* field 3: uri_server : string option */ @@ -439,8 +446,8 @@ v2v_xml_parse_uri (value strv) sv = caml_copy_string (uri->server); ov = caml_alloc (1, 0); Store_field (ov, 0, sv); - } - else ov = Val_int (0); + } else + ov = Val_int (0); Store_field (rv, 3, ov); /* field 4: uri_user : string option */ @@ -448,8 +455,8 @@ v2v_xml_parse_uri (value strv) sv = caml_copy_string (uri->user); ov = caml_alloc (1, 0); Store_field (ov, 0, sv); - } - else ov = Val_int (0); + } else + ov = Val_int (0); Store_field (rv, 4, ov); /* field 5: uri_port : int */ @@ -460,8 +467,8 @@ v2v_xml_parse_uri (value strv) sv = caml_copy_string (uri->path); ov = caml_alloc (1, 0); Store_field (ov, 0, sv); - } - else ov = Val_int (0); + } else + ov = Val_int (0); Store_field (rv, 6, ov); /* field 7: uri_fragment : string option */ @@ -469,8 +476,8 @@ v2v_xml_parse_uri (value strv) sv = caml_copy_string (uri->fragment); ov = caml_alloc (1, 0); Store_field (ov, 0, sv); - } - else ov = Val_int (0); + } else + ov = Val_int (0); Store_field (rv, 7, ov); /* field 8: uri_query_raw : string option */ @@ -478,8 +485,8 @@ v2v_xml_parse_uri (value strv) sv = caml_copy_string (uri->query_raw); ov = caml_alloc (1, 0); Store_field (ov, 0, sv); - } - else ov = Val_int (0); + } else + ov = Val_int (0); Store_field (rv, 8, ov); xmlFreeURI (uri); -- 2.7.4