diff options
author | Richard W.M. Jones <rjones@redhat.com> | 2011-11-28 19:07:30 +0000 |
---|---|---|
committer | Richard W.M. Jones <rjones@redhat.com> | 2011-11-28 19:07:30 +0000 |
commit | 450134501c37f1dd1b898dc390591a3f84ec18b4 (patch) | |
tree | 486e687f693a25b748139bfff2cab842cadf9409 /fish/options.c | |
parent | 425374ddc84c4f9f74a5218e8d35452bb511d9f3 (diff) | |
download | libguestfs-450134501c37f1dd1b898dc390591a3f84ec18b4.tar.gz libguestfs-450134501c37f1dd1b898dc390591a3f84ec18b4.tar.xz libguestfs-450134501c37f1dd1b898dc390591a3f84ec18b4.zip |
fish: Rearrange code for displaying mountpoints when -m option fails.
This also frees the list returned by guestfs_list_filesystems.
Diffstat (limited to 'fish/options.c')
-rw-r--r-- | fish/options.c | 45 |
1 files changed, 33 insertions, 12 deletions
diff --git a/fish/options.c b/fish/options.c index 43a15e49..f6cc61fc 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) { |