Commit 60a83ef0 authored by Francois Gouget's avatar Francois Gouget Committed by Alexandre Julliard

Fix the error returned by GetLongPathNameA.

parent f44bbb8d
...@@ -986,7 +986,7 @@ BOOL DOSFS_GetFullName( LPCSTR name, BOOL check_last, DOS_FULL_NAME *full ) ...@@ -986,7 +986,7 @@ BOOL DOSFS_GetFullName( LPCSTR name, BOOL check_last, DOS_FULL_NAME *full )
* NOTES * NOTES
* observed: * observed:
* longpath=NULL: LastError=ERROR_INVALID_PARAMETER, ret=0 * longpath=NULL: LastError=ERROR_INVALID_PARAMETER, ret=0
* *longpath="" or invalid: LastError=ERROR_BAD_PATHNAME, ret=0 * longpath="" or invalid: LastError=ERROR_BAD_PATHNAME, ret=0
* *
* more observations ( with NT 3.51 (WinDD) ): * more observations ( with NT 3.51 (WinDD) ):
* longpath <= 8.3 -> just copy longpath to shortpath * longpath <= 8.3 -> just copy longpath to shortpath
...@@ -997,7 +997,7 @@ BOOL DOSFS_GetFullName( LPCSTR name, BOOL check_last, DOS_FULL_NAME *full ) ...@@ -997,7 +997,7 @@ BOOL DOSFS_GetFullName( LPCSTR name, BOOL check_last, DOS_FULL_NAME *full )
* file is not a directory * file is not a directory
* - the absolute/relative path of the short name is reproduced like found * - the absolute/relative path of the short name is reproduced like found
* in the long name * in the long name
* - longpath and shortpath may have the same adress * - longpath and shortpath may have the same address
* Peter Ganten, 1999 * Peter Ganten, 1999
*/ */
DWORD WINAPI GetShortPathNameA( LPCSTR longpath, LPSTR shortpath, DWORD WINAPI GetShortPathNameA( LPCSTR longpath, LPSTR shortpath,
...@@ -1107,13 +1107,27 @@ DWORD WINAPI GetShortPathNameW( LPCWSTR longpath, LPWSTR shortpath, ...@@ -1107,13 +1107,27 @@ DWORD WINAPI GetShortPathNameW( LPCWSTR longpath, LPWSTR shortpath,
/*********************************************************************** /***********************************************************************
* GetLongPathNameA (KERNEL32.@) * GetLongPathNameA (KERNEL32.@)
*
* NOTES
* observed (Win2000):
* shortpath=NULL: LastError=ERROR_INVALID_PARAMETER, ret=0
* shortpath="": LastError=ERROR_PATH_NOT_FOUND, ret=0
*/ */
DWORD WINAPI GetLongPathNameA( LPCSTR shortpath, LPSTR longpath, DWORD WINAPI GetLongPathNameA( LPCSTR shortpath, LPSTR longpath,
DWORD longlen ) DWORD longlen )
{ {
DOS_FULL_NAME full_name; DOS_FULL_NAME full_name;
char *p, *r, *ll, *ss; char *p, *r, *ll, *ss;
if (!shortpath) {
SetLastError(ERROR_INVALID_PARAMETER);
return 0;
}
if (!shortpath[0]) {
SetLastError(ERROR_PATH_NOT_FOUND);
return 0;
}
if (!DOSFS_GetFullName( shortpath, TRUE, &full_name )) return 0; if (!DOSFS_GetFullName( shortpath, TRUE, &full_name )) return 0;
lstrcpynA( longpath, full_name.short_name, longlen ); lstrcpynA( longpath, full_name.short_name, longlen );
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment