Make sure that DRIVE_FindDriveRoot always returns an absolute path.
diff --git a/files/dos_fs.c b/files/dos_fs.c
index c045a98..74be98e 100644
--- a/files/dos_fs.c
+++ b/files/dos_fs.c
@@ -867,7 +867,6 @@
*/
BOOL DOSFS_GetFullName( LPCSTR name, BOOL check_last, DOS_FULL_NAME *full )
{
- BOOL unixabsolute = *name == '/';
BOOL found;
UINT flags;
char *p_l, *p_s, *root;
@@ -895,7 +894,7 @@
{
while ((*name == '\\') || (*name == '/')) name++;
}
- else if (!unixabsolute) /* Relative path */
+ else /* Relative path */
{
lstrcpynA( root + 1, DRIVE_GetUnixCwd( full->drive ),
sizeof(full->long_name) - (root - full->long_name) - 1 );
@@ -1028,7 +1027,6 @@
DWORD sp = 0, lp = 0;
int tmplen, drive;
UINT flags;
- BOOL unixabsolute = *longpath == '/';
TRACE("%s\n", debugstr_a(longpath));
@@ -1046,22 +1044,12 @@
return 0;
}
- /* check for drive letter */
- if ( longpath[1] == ':' ) {
- tmpshortpath[0] = longpath[0];
- tmpshortpath[1] = ':';
- sp = 2;
- }
-
if ( ( drive = DOSFS_GetPathDrive ( &longpath )) == -1 ) return 0;
flags = DRIVE_GetFlags ( drive );
- if ( unixabsolute ) {
- tmpshortpath[0] = drive + 'A';
- tmpshortpath[1] = ':';
- tmpshortpath[2] = '\\';
- sp = 3;
- }
+ tmpshortpath[0] = drive + 'A';
+ tmpshortpath[1] = ':';
+ sp = 2;
while ( longpath[lp] ) {
@@ -2431,4 +2419,3 @@
GlobalFree16( handle );
return TRUE;
}
-