Hi Jeremy,
your patch is basically fine, and I was about to push it, when I
realized that I don't quite understand this:
On Feb 12 10:56, Jeremy Drake via Cygwin-patches wrote:
> struct mntent *
> mount_info::getmntent (int x)
> {
> if (x < 0 || x >= nmounts)
> - return cygdrive_getmntent ();
> -
> + {
> + struct mntent *ret;
> + /* de-duplicate against explicit mount entries */
> + while ((ret = cygdrive_getmntent ()))
> + {
> + for (int i = 0; i < nmounts; ++i)
> + {
> + int cmp = strcmp (ret->mnt_dir,
> mount[posix_sorted[i]].posix_path);
> + if (!cmp && strcasematch (ret->mnt_fsname,
> + mount[posix_sorted[i]].native_path))
> + goto cygdrive_mntent_continue;
> + else if (cmp > 0)
> + break;
> + }
> + break;
> +cygdrive_mntent_continue:;
> + }
> + return ret;
> + }
What exactly is de-duplicated here?
I have a drive mounted under C:\drvmount.
I create an additional mount entry:
$ mount C:/drvmount /home/corinna/drv
If I call mount, I see two mount entries, both pointing to the
/home/corinna/drv dir:
$ mount | grep drvmount
C:/drvmount on /home/corinna/drv type ntfs (binary,user)
C:/drvmount on /home/corinna/drv type ntfs (binary,posix=0,noumount,auto)
The first is the explicit mount, the second is the cygdrive entry.
If I disable the above de-dup code, the result is the same.
However, either way, both point to the explicit mount point.
Wouldn't it be helpful to see /cygdrive/c/drvmount?
C:/drvmount on /home/corinna/drv type ntfs (binary,user)
C:/drvmount on /cygdrive/c/drvmount type ntfs (binary,posix=0,noumount,auto)
Thanks,
Corinna