[Libguestfs] [PATCH 3/3] fish: fix btrfs subvolumes display in error case
Pino Toscano
ptoscano at redhat.com
Tue Mar 1 12:35:30 UTC 2016
On Tuesday 01 March 2016 11:17:19 Cédric Bosdonnat wrote:
> The list of filesystems that is printed when there was an error prints
> the internal mountable string even for the btrfs subvolumes. Let's
> printing a valid -m option value instead.
> ---
> fish/options.c | 15 ++++++++++++++-
> 1 file changed, 14 insertions(+), 1 deletion(-)
>
> diff --git a/fish/options.c b/fish/options.c
> index da5015d..5c09bfb 100644
> --- a/fish/options.c
> +++ b/fish/options.c
> @@ -280,7 +280,20 @@ display_mountpoints_on_failure (const char *mp_device,
> guestfs_int_program_name);
>
> for (i = 0; fses[i] != NULL; i += 2) {
> - CLEANUP_FREE char *p = guestfs_canonical_device_name (g, fses[i]);
> + CLEANUP_FREE char *p = NULL;
> + CLEANUP_FREE char *device = guestfs_mountable_device(g, fses[i]);
> + CLEANUP_FREE char *volume = guestfs_mountable_subvolume(g, fses[i]);
If guestfs_mountable_subvolume fails, then an error is issued to the
error handler set: you need to push a temporary null error handler to
avoid that:
CLEANUP_FREE char *subvolume = NULL;
int subvolume_errno;
...
guestfs_push_error_handler (g, NULL, NULL);
subvolume = guestfs_mountable_subvolume (g, fses[i]);
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));
exit (EXIT_FAILURE);
}
guestfs_pop_error_handler (g);
> + /* Reformat the internal btrfsvol string into a valid mount option */
> + if (device && volume && guestfs_last_errno (g) != EINVAL) {
With the above, this needs to check device and subvolume only.
> + if (asprintf (&p, "%s:/:subvol=%s", device, volume) == -1) {
> + perror ("asprintf");
> + exit (EXIT_FAILURE);
> + }
> + } else {
> + p = guestfs_canonical_device_name (g, fses[i]);
> + }
Usually there are no curly brackets for blocks of a single instruction.
Thanks,
--
Pino Toscano
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: This is a digitally signed message part.
URL: <http://listman.redhat.com/archives/libguestfs/attachments/20160301/8d5ae891/attachment.sig>
More information about the Libguestfs
mailing list