Bugfix: Changed GetDriveType32A(NULL) to use cwd's root.

This commit is contained in:
Petter Reinholdtsen 1998-10-11 14:26:25 +00:00 committed by Alexandre Julliard
parent b05264fe53
commit 0dce5b7538

View file

@ -785,30 +785,33 @@ UINT16 WINAPI GetDriveType16(
* DRIVE_CDROM CDROM drive * DRIVE_CDROM CDROM drive
* DRIVE_RAMDISK virtual disk in ram * DRIVE_RAMDISK virtual disk in ram
* *
* DRIVE_DOESNOTEXIST XXX Not valid return value * DRIVE_DOESNOTEXIST XXX Not valid return value
* DRIVE_CANNOTDETERMINE XXX Not valid return value
* *
* BUGS * BUGS
* *
* Currently returns DRIVE_DOESNOTEXIST when it really should return * Currently returns DRIVE_DOESNOTEXIST and DRIVE_CANNOTDETERMINE
* DRIVE_UNKNOWN or DRIVE_NO_ROOT_DIR. DRIVE_RAMDISK is unsupported. * when it really should return DRIVE_NO_ROOT_DIR and DRIVE_UNKNOWN.
* Should determine current directory and use that root if param is * Why where the former defines used?
* NULL. *
* DRIVE_RAMDISK is unsupported.
*/ */
UINT32 WINAPI GetDriveType32A(LPCSTR root /* String describing drive */) UINT32 WINAPI GetDriveType32A(LPCSTR root /* String describing drive */)
{ {
TRACE(dosfs, "(%s)\n", NULL != root ? root : "NULL"); int drive;
if (NULL == root) TRACE(dosfs, "(%s)\n", debugstr_a(root));
{
FIXME(dosfs,"(NULL) should use current dir, hardcoded c: instead\n");
root = "C:";
}
if ((root[1]) && (root[1] != ':')) if (NULL == root) drive = DRIVE_GetCurrentDrive();
else
{ {
WARN(dosfs, "invalid root '%s'\n", NULL != root ? root : "NULL"); if ((root[1]) && (root[1] != ':'))
return DRIVE_DOESNOTEXIST; {
WARN(dosfs, "invalid root '%s'\n", debugstr_a(root));
return DRIVE_DOESNOTEXIST;
}
drive = toupper(root[0]) - 'A';
} }
switch(DRIVE_GetType(toupper(root[0]) - 'A')) switch(DRIVE_GetType(drive))
{ {
case TYPE_FLOPPY: return DRIVE_REMOVABLE; case TYPE_FLOPPY: return DRIVE_REMOVABLE;
case TYPE_HD: return DRIVE_FIXED; case TYPE_HD: return DRIVE_FIXED;