X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;ds=sidebyside;f=fish%2Finspect.c;h=0b82ade52747e74a93bc1bc50356a77da8ff9c1f;hb=b4da051d54a1597c7d8db8880d21a52265a6172e;hp=28c1b88bf1fcab37de8725dd59d414dba3d59df2;hpb=c5cb65f0aac3298e634b183f73fda6644a158018;p=libguestfs.git diff --git a/fish/inspect.c b/fish/inspect.c index 28c1b88..0b82ade 100644 --- a/fish/inspect.c +++ b/fish/inspect.c @@ -43,14 +43,14 @@ free_strings (char **argv) free (argv); } -static int +static size_t count_strings (char *const *argv) { - int c; + size_t i; - for (c = 0; argv[c]; ++c) + for (i = 0; argv[i]; ++i) ; - return c; + return i; } static int @@ -73,6 +73,12 @@ compare_keys (const void *p1, const void *p2) void inspect_mount (void) { + if (live) { + fprintf (stderr, _("%s: don't use --live and -i options together\n"), + program_name); + exit (EXIT_FAILURE); + } + inspect_do_decrypt (); char **roots = guestfs_inspect_os (g); @@ -82,12 +88,14 @@ inspect_mount (void) if (roots[0] == NULL) { fprintf (stderr, _("%s: no operating system was found on this disk\n"), program_name); + free_strings (roots); exit (EXIT_FAILURE); } if (roots[1] != NULL) { fprintf (stderr, _("%s: multi-boot operating systems are not supported by the -i option\n"), program_name); + free_strings (roots); exit (EXIT_FAILURE); } @@ -111,6 +119,7 @@ inspect_mount_root (const char *root) compare_keys_len); size_t i; + size_t mount_errors = 0; for (i = 0; mountpoints[i] != NULL; i += 2) { int r; if (!read_only) @@ -118,10 +127,14 @@ inspect_mount_root (const char *root) else r = guestfs_mount_ro (g, mountpoints[i+1], mountpoints[i]); if (r == -1) - exit (EXIT_FAILURE); + mount_errors++; } free_strings (mountpoints); + + if (mount_errors) + fprintf (stderr, _("%s: some filesystems could not be mounted (ignored)\n"), + program_name); } /* This function is called only if the above function was called, @@ -131,7 +144,7 @@ void print_inspect_prompt (void) { char *name = guestfs_inspect_get_product_name (g, root); - if (STRNEQ (name, "unknown")) + if (name && STRNEQ (name, "unknown")) printf (_("Operating system: %s\n"), name); free (name);