From: Richard W.M. Jones Date: Mon, 28 Nov 2011 19:07:30 +0000 (+0000) Subject: fish: Rearrange code for displaying mountpoints when -m option fails. X-Git-Tag: 1.14.5~19 X-Git-Url: http://git.annexia.org/?a=commitdiff_plain;h=07d64ee16cc7ebc4372246ddc437dd7308262a50;p=libguestfs.git fish: Rearrange code for displaying mountpoints when -m option fails. This also frees the list returned by guestfs_list_filesystems. (cherry picked from commit 450134501c37f1dd1b898dc390591a3f84ec18b4) --- diff --git a/fish/options.c b/fish/options.c index 43a15e4..f6cc61f 100644 --- a/fish/options.c +++ b/fish/options.c @@ -97,6 +97,8 @@ add_drives (struct drv *drv, char next_drive) return next_drive; } +static void display_mountpoints_on_failure (const char *mp_device); + /* List is built in reverse order, so mount them in reverse order. */ void mount_mps (struct mp *mp) @@ -120,23 +122,42 @@ mount_mps (struct mp *mp) */ r = guestfs_mount_options (g, options, mp->device, mp->mountpoint); if (r == -1) { - /* Display possible mountpoints before exiting. */ - char **fses = guestfs_list_filesystems (g); - if (fses == NULL || fses[0] == NULL) - goto out; - fprintf (stderr, - _("%s: '%s' could not be mounted. Did you mean one of these?\n"), - program_name, mp->device); - size_t i; - for (i = 0; fses[i] != NULL; i += 2) - fprintf (stderr, "\t%s (%s)\n", fses[i], fses[i+1]); - - out: + display_mountpoints_on_failure (mp->device); exit (EXIT_FAILURE); } } } +/* If the -m option fails on any command, display a useful error + * message listing the mountpoints. + */ +static void +display_mountpoints_on_failure (const char *mp_device) +{ + char **fses; + size_t i; + + fses = guestfs_list_filesystems (g); + if (fses == NULL) + return; + if (fses[0] == NULL) { + free (fses); + return; + } + + fprintf (stderr, + _("%s: '%s' could not be mounted. Did you mean one of these?\n"), + program_name, mp_device); + + for (i = 0; fses[i] != NULL; i += 2) { + fprintf (stderr, "\t%s (%s)\n", fses[i], fses[i+1]); + free (fses[i]); + free (fses[i+1]); + } + + free (fses); +} + void free_drives (struct drv *drv) {