[Libguestfs] [PATCH] fish: fix dir completion on filesystems w/o dirent.d_type (RHBZ#1153844).
Pino Toscano
ptoscano at redhat.com
Fri Oct 31 17:27:11 UTC 2014
On Friday 31 October 2014 17:07:24 Richard W.M. Jones wrote:
> 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?
At least this is the behaviour bash seems to do:
$ mkdir test
$ touch test/file
$ ln -s test link
$ touch file
$ ln -s file nondirlink
$ vi t<TAB> -> test/
$ vi l<TAB> -> link/
$ vi f<TAB> -> file
$ vi n<TAB> -> nondirlink
--
Pino Toscano
More information about the Libguestfs
mailing list