mirror of
git://sourceware.org/git/newlib-cygwin.git
synced 2025-02-21 00:07:36 +08:00
Cygwin: always output cygdrive mntents.
Previously, if there was an explicit mount entry for a drive letter (say, C:), the output of the corresponding cygdrive mntent (like /cygdrive/c) would be suppressed. Once Windows directory mounts were added to cygdrive mounts, the de-duplication code got more complicated. Instead, always output the cygdrive mounts, under the cygdrive prefix. Addresses: https://cygwin.com/pipermail/cygwin-patches/2025q1/013367.html Signed-off-by: Jeremy Drake <cygwin@jdrake.com>
This commit is contained in:
parent
04a5b07294
commit
d4497366b4
@ -1744,7 +1744,6 @@ mount_info::cygdrive_getmntent ()
|
||||
tmp_pathbuf tp;
|
||||
const wchar_t *wide_path;
|
||||
char *win32_path, *posix_path;
|
||||
int err;
|
||||
|
||||
if (!_my_tls.locals.drivemappings)
|
||||
_my_tls.locals.drivemappings = new dos_drive_mappings ();
|
||||
@ -1755,12 +1754,7 @@ mount_info::cygdrive_getmntent ()
|
||||
win32_path = tp.c_get ();
|
||||
sys_wcstombs (win32_path, NT_MAX_PATH, wide_path);
|
||||
posix_path = tp.c_get ();
|
||||
if ((err = conv_to_posix_path (win32_path, posix_path, 0)))
|
||||
{
|
||||
set_errno (err);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
cygdrive_posix_path (win32_path, posix_path, 0);
|
||||
return fillout_mntent (win32_path, posix_path, cygdrive_flags);
|
||||
}
|
||||
else
|
||||
@ -1778,34 +1772,8 @@ struct mntent *
|
||||
mount_info::getmntent (int x)
|
||||
{
|
||||
if (x < 0 || x >= nmounts)
|
||||
{
|
||||
struct mntent *ret;
|
||||
/* de-duplicate against explicit mount entries */
|
||||
while ((ret = cygdrive_getmntent ()))
|
||||
{
|
||||
tmp_pathbuf tp;
|
||||
char *backslash_fsname = NULL;
|
||||
for (int i = 0; i < nmounts; ++i)
|
||||
{
|
||||
if (!strcmp (ret->mnt_dir, mount[i].posix_path))
|
||||
{
|
||||
/* mount_item::native_path has backslashes, but
|
||||
mntent::mnt_fsname has forward slashes. Lazily
|
||||
backslashify only if mnt_dir equals posix_path. */
|
||||
if (!backslash_fsname)
|
||||
{
|
||||
backslash_fsname = tp.c_get ();
|
||||
backslashify (ret->mnt_fsname, backslash_fsname, false);
|
||||
}
|
||||
if (strcasematch (backslash_fsname, mount[i].native_path))
|
||||
goto cygdrive_mntent_continue;
|
||||
}
|
||||
}
|
||||
break;
|
||||
cygdrive_mntent_continue:;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
return cygdrive_getmntent ();
|
||||
|
||||
return mount[native_sorted[x]].getmntent ();
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user