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