[Libguestfs] [PATCH] fish: fix dir completion on filesystems w/o dirent.d_type (RHBZ#1153844).

Richard W.M. Jones rjones at redhat.com
Fri Oct 31 17:07:24 UTC 2014


On Fri, Oct 31, 2014 at 05:56:10PM +0100, Pino Toscano wrote:
> On filesystems whose dirent.d_type is DT_UNKNOWN or some unknown value,
> manually check whether an entry is a directory, thus completing in the
> proper way.

Happens on Windows (NTFS) too, and it's also annoying there ...

> ---
>  fish/destpaths.c | 8 +++++++-
>  1 file changed, 7 insertions(+), 1 deletion(-)
> 
> diff --git a/fish/destpaths.c b/fish/destpaths.c
> index f224106..df1ec00 100644
> --- a/fish/destpaths.c
> +++ b/fish/destpaths.c
> @@ -191,7 +191,13 @@ complete_dest_paths_generator (const char *text, int state)
>                    else {
>                      words = w;
>                      words[nr_words].name = p;
> -                    words[nr_words].is_dir = dirents->val[i].ftyp == 'd';
> +                    if (dirents->val[i].ftyp == 'u'
> +                        || dirents->val[i].ftyp == '?') {
> +                      int is_dir = guestfs_is_dir_opts (g, words[nr_words].name,
> +                        GUESTFS_IS_DIR_OPTS_FOLLOWSYMLINKS, 1, -1);

Is it right to follow symlinks here I wonder?

> +                      words[nr_words].is_dir = is_dir;
> +                    } else
> +                      words[nr_words].is_dir = dirents->val[i].ftyp == 'd';
>                      nr_words++;
>                    }
>                  }
> -- 
> 1.9.3

Anyway, ACK.

Thanks,
Rich.

-- 
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
libguestfs lets you edit virtual machines.  Supports shell scripting,
bindings from many languages.  http://libguestfs.org




More information about the Libguestfs mailing list