GetLongPathName32A() returns dos format long filename instead of unix

format.
This commit is contained in:
Alexander Larsson 1998-10-11 13:57:09 +00:00 committed by Alexandre Julliard
parent b600ac0f77
commit c1190fe2b4
1 changed files with 20 additions and 4 deletions

View File

@ -886,11 +886,27 @@ DWORD WINAPI GetLongPathName32A( LPCSTR shortpath, LPSTR longpath,
DWORD longlen ) DWORD longlen )
{ {
DOS_FULL_NAME full_name; DOS_FULL_NAME full_name;
char *p;
char *longfilename;
DWORD shortpathlen;
/* FIXME: Is it correct to return a UNIX style path here? */
if (!DOSFS_GetFullName( shortpath, TRUE, &full_name )) return 0; if (!DOSFS_GetFullName( shortpath, TRUE, &full_name )) return 0;
lstrcpyn32A( longpath, full_name.long_name, longlen ); lstrcpyn32A( longpath, full_name.short_name, longlen );
return strlen( full_name.long_name ); /* Do some hackery to get the long filename.
* FIXME: Would be better if it returned the
* long version of the directories too
*/
longfilename = strrchr(full_name.long_name, '/')+1;
if (longpath != NULL) {
if ((p = strrchr( longpath, '\\' )) != NULL) {
p++;
longlen -= (p-longpath);
lstrcpyn32A( p, longfilename , longlen);
}
}
shortpathlen =
((strrchr( full_name.short_name, '\\' ) - full_name.short_name) + 1);
return shortpathlen + strlen( longfilename );
} }