* path.cc (fillout_mntent): Always remove drive root directories from future
consideration by "/cygdrive" reporting. (cygdrive_getmnt): Avoid reporting removable drives or drives with no media mounted.
This commit is contained in:
parent
f2aeff27f0
commit
5817ee2d09
|
@ -1,3 +1,10 @@
|
||||||
|
Sun Apr 1 00:08:15 2001 Christopher Faylor <cgf@cygnus.com>
|
||||||
|
|
||||||
|
* path.cc (fillout_mntent): Always remove drive root directories from
|
||||||
|
future consideration by "/cygdrive" reporting.
|
||||||
|
(cygdrive_getmnt): Avoid reporting removable drives or drives with no
|
||||||
|
media mounted.
|
||||||
|
|
||||||
Sat Mar 31 21:56:19 2001 Christopher Faylor <cgf@cygnus.com>
|
Sat Mar 31 21:56:19 2001 Christopher Faylor <cgf@cygnus.com>
|
||||||
|
|
||||||
* thread.h (struct _winsup_t): Remove obsolete elements. Add
|
* thread.h (struct _winsup_t): Remove obsolete elements. Add
|
||||||
|
|
|
@ -2036,6 +2036,14 @@ fillout_mntent (const char *native_path, const char *posix_path, unsigned flags)
|
||||||
static NO_COPY struct mntent ret;
|
static NO_COPY struct mntent ret;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* Remove drivenum from list if we see a x: style path */
|
||||||
|
if (strlen (native_path) == 2 && native_path[1] == ':')
|
||||||
|
{
|
||||||
|
int drivenum = tolower (native_path[0]) - 'a';
|
||||||
|
if (drivenum >= 0 && drivenum <= 31)
|
||||||
|
available_drives &= ~(1 << drivenum);
|
||||||
|
}
|
||||||
|
|
||||||
/* Pass back pointers to mount_table strings reserved for use by
|
/* Pass back pointers to mount_table strings reserved for use by
|
||||||
getmntent rather than pointers to strings in the internal mount
|
getmntent rather than pointers to strings in the internal mount
|
||||||
table because the mount table might change, causing weird effects
|
table because the mount table might change, causing weird effects
|
||||||
|
@ -2087,22 +2095,31 @@ mount_item::getmntent ()
|
||||||
static struct mntent *
|
static struct mntent *
|
||||||
cygdrive_getmntent ()
|
cygdrive_getmntent ()
|
||||||
{
|
{
|
||||||
if (!available_drives)
|
char native_path[4];
|
||||||
return NULL;
|
|
||||||
|
|
||||||
DWORD mask, drive;
|
|
||||||
for (mask = 1, drive = 'a'; drive <= 'z'; mask <<= 1, drive++)
|
|
||||||
if (available_drives & mask)
|
|
||||||
{
|
|
||||||
available_drives &= ~mask;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
char native_path[3];
|
|
||||||
char posix_path[MAX_PATH];
|
char posix_path[MAX_PATH];
|
||||||
__small_sprintf (native_path, "%c:", drive);
|
DWORD mask = 1, drive = 'a';
|
||||||
__small_sprintf (posix_path, "%s%c", mount_table->cygdrive, drive);
|
struct mntent *ret = NULL;
|
||||||
return fillout_mntent (native_path, posix_path, mount_table->cygdrive_flags);
|
|
||||||
|
while (available_drives)
|
||||||
|
{
|
||||||
|
for (/* nothing */; drive <= 'z'; mask <<= 1, drive++)
|
||||||
|
if (available_drives & mask)
|
||||||
|
break;
|
||||||
|
|
||||||
|
__small_sprintf (native_path, "%c:\\", drive);
|
||||||
|
if (GetDriveType (native_path) == DRIVE_REMOVABLE ||
|
||||||
|
GetFileAttributes (native_path) == (DWORD) -1)
|
||||||
|
{
|
||||||
|
available_drives &= ~mask;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
native_path[2] = '\0';
|
||||||
|
__small_sprintf (posix_path, "%s%c", mount_table->cygdrive, drive);
|
||||||
|
ret = fillout_mntent (native_path, posix_path, mount_table->cygdrive_flags);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct mntent *
|
struct mntent *
|
||||||
|
|
Loading…
Reference in New Issue