[PATCH FOR DISCUSSION ONLY 1/2] scripts: Add a script for formatting all C code in the project.
~~~ Not to be applied, for discussion only ~~~ I think we need some kind of "checkpatch" script to catch all the annoying, nitpicky code style issues that submitters trip up on. I looked at a few scripts that exist, primarily the ones from Linux and qemu (massive and complicated), and libvirt (small and sane). There are a couple of problems: (1) Linux/qemu-style checkpatch only verifies new code that is submitted, leaving the old code in its current, possibly inconsistent state. (2) The libvirt one only checks a whitelist of known issues (but actually, it's still quite a good script). I thought a different approach might be to run 'indent' across the whole code base. As long as we force the indent style settings, and get submitters and reviews to run the command, then it should ensure all our code, past and future, has a consistent style. GNU indent isn't very good for this, but clang-format is a lot more configurable. Therefore: the first commit adds a wrapper around clang-format which runs it with the correct settings, and also does a bit of post- processing. Note you need clang-format 3.8.0, currently available in Fedora 24+ The second patch shows the changes that would be made. It's not too bad, but there are some problems: (a) The way struct initializers are formatted is weird. I'm not even sure I understand what rules clang is following, since structs get all sorts of different styles with no rhyme or reason. (b) It splits up long string constants (although it doesn't resplit string constants which are already sufficiently split). (c) It gets horribly confused by our start_element()...end_element() XML macros. This doesn't solve the whole problem. We would still need further scripts to look for problems such as: (i) Error messages terminated/not terminated by full stop. (ii) Not calling reply_with_* functions on error paths. and so on. Rich.
Note this requires clang-format from clang >= 3.8.0 (3.7.0 is too old as it does not have the BreakBeforeBraces: Custom style). --- .gitignore | 1 + scripts/code-format.pl | 146 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 147 insertions(+) create mode 100755 scripts/code-format.pl diff --git a/.gitignore b/.gitignore index ca4e89c..ad166d2 100644 --- a/.gitignore +++ b/.gitignore @@ -32,6 +32,7 @@ cscope.out Makefile Makefile.in +/.clang-format /.sc-* /ABOUT-NLS /aclocal.m4 diff --git a/scripts/code-format.pl b/scripts/code-format.pl new file mode 100755 index 0000000..f4c1f34 --- /dev/null +++ b/scripts/code-format.pl @@ -0,0 +1,146 @@ +#!/usr/bin/perl -w +# libguestfs +# Copyright (C) 2016 Red Hat Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# 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. + +# Reformat the code in libguestfs (currently only C code). + +use warnings; +use strict; + +use YAML qw(DumpFile); + +# Check we are run from the top level directory. +die "$0: you must run this script from the top level source directory\n" + unless -f "BUGS"; + +# Make sure we have the clang-format program. +system ("clang-format --help >/dev/null 2>&1") == 0 + or die "$0: 'clang-format' program (from Clang) must be installed\n"; + +my @c_files = `git ls-files '*.[ch]'`; +chomp @c_files; + +# http://clang.llvm.org/docs/ClangFormatStyleOptions.html +my $clang_stylesheet = { + Language => "Cpp", + AccessModifierOffset => -2, + AlignAfterOpenBracket => "true", + AlignConsecutiveAssignments => "false", + AlignEscapedNewlinesLeft => "false", + AlignOperands => "true", + AlignTrailingComments => "true", + AllowAllParametersOfDeclarationOnNextLine => "true", + AllowShortBlocksOnASingleLine => "false", + AllowShortCaseLabelsOnASingleLine => "false", + AllowShortFunctionsOnASingleLine => "All", + AllowShortIfStatementsOnASingleLine => "false", + AllowShortLoopsOnASingleLine => "false", + AlwaysBreakAfterDefinitionReturnType => "TopLevel", + AlwaysBreakBeforeMultilineStrings => "false", + AlwaysBreakTemplateDeclarations => "false", + BinPackArguments => "true", + BinPackParameters => "true", + BraceWrapping => { + AfterClass => "false", + AfterControlStatement => "false", + AfterEnum => "false", + AfterFunction => "true", + AfterNamespace => "true", + AfterObjCDeclaration => "false", + AfterStruct => "true", + AfterUnion => "true", + BeforeCatch => "false", + BeforeElse => "false", + #AfterIndentBraces => "false", -- only in clang > 3.8.0 + }, + BreakBeforeBinaryOperators => "None", + BreakBeforeBraces => "Custom", + BreakBeforeTernaryOperators => "true", + BreakConstructorInitializersBeforeComma => "false", + #BreakStringLiterals => "false", -- only in clang > 3.8.0 + ColumnLimit => 76, + CommentPragmas => "^ IWYU pragma:", + ConstructorInitializerAllOnOneLineOrOnePerLine => "false", + ConstructorInitializerIndentWidth => 4, + ContinuationIndentWidth => 4, + Cpp11BracedListStyle => "false", + DerivePointerAlignment => "false", + DisableFormat => "false", + ExperimentalAutoDetectBinPacking => "false", + ForEachMacros => [], + IndentCaseLabels => "false", + IndentWidth => 2, + IndentWrappedFunctionNames => "false", + KeepEmptyLinesAtTheStartOfBlocks => "true", + MacroBlockBegin => "", + MacroBlockEnd => "", + MaxEmptyLinesToKeep => 1, + NamespaceIndentation => "None", + ObjCBlockIndentWidth => 2, + ObjCSpaceAfterProperty => "false", + ObjCSpaceBeforeProtocolList => "true", + PenaltyBreakBeforeFirstCallParameter => 19, + PenaltyBreakComment => 300, + PenaltyBreakFirstLessLess => 120, + PenaltyBreakString => 1000, + PenaltyExcessCharacter => 1000000, + PenaltyReturnTypeOnItsOwnLine => 60, + PointerAlignment => "Right", + SortIncludes => "false", + SpaceAfterCStyleCast => "false", + SpaceBeforeAssignmentOperators => "true", + SpaceBeforeParens => "Always", + SpaceInEmptyParentheses => "false", + SpacesBeforeTrailingComments => 1, + SpacesInAngles => "false", + SpacesInContainerLiterals => "true", + SpacesInCStyleCastParentheses => "false", + SpacesInParentheses => "false", + SpacesInSquareBrackets => "false", + Standard => "Cpp11", + TabWidth => 8, + UseTab => "Never", +}; +DumpFile (".clang-format", $clang_stylesheet); + +# Run clang-format on each file, then post-process the output further. +foreach my $input (@c_files) { + my @o = (); + + open INPUT, "clang-format $input |" + or die "clang-format: $input: $!"; + push @o, $_ while <INPUT>; + close INPUT or die; + + # Post-process the output. + my ($i, $j); + for ($i = 0; $i < @o; ++$i) { + # rewrite gettext _ ("") -> _("") + if (($o[$i] =~ s{_ \("}{_("}g) == 1) { + # If the following lines are strings, assume a continuation + # string and reduce its indent by 1 character. + for ($j = $i+1; $j < @o; ++$j) { + last if ($o[$j] =~ s{^(\s+)\s"}{$1"}) == 0; + } + } + } + + # Overwrite the original file with the output. + open OUTPUT, "> $input" or die "$input: $!"; + print OUTPUT $_ foreach @o; + close OUTPUT; +} -- 2.7.4
--- 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
participants (1)
-
Richard W.M. Jones