[SETUPAPI] Slightly improve pSetupGetFileTitle

- Make the function return a pointer to const string.
- Skip any drive path if any, looking for ':' just once.
This commit is contained in:
Hermès Bélusca-Maïto 2023-12-13 19:00:41 +01:00
parent e8b454a92e
commit bbf6c45279
No known key found for this signature in database
GPG key ID: 3B2539C65E7B93D0
2 changed files with 17 additions and 19 deletions

View file

@ -986,34 +986,32 @@ DWORD WINAPI GetSetFileTimestamp(LPCWSTR lpFileName,
/**************************************************************************
* pSetupGetFileTitle [SETUPAPI.@]
*
* Returns a pointer to the last part of a fully qualified file name.
* Returns a pointer to the last part (file name) of a full file path.
*
* PARAMS
* lpFileName [I] File name
* pFilePath [I] The fully qualified file path.
*
* RETURNS
* Pointer to a files name.
* Pointer to the file name, if any, or the terminating NULL.
*/
LPWSTR WINAPI
pSetupGetFileTitle(LPCWSTR lpFileName)
PCWSTR WINAPI
pSetupGetFileTitle(PCWSTR pFilePath)
{
LPWSTR ptr;
LPWSTR ret;
PCWSTR ptr, ret;
WCHAR c;
TRACE("%s\n", debugstr_w(lpFileName));
TRACE("%s\n", debugstr_w(pFilePath));
ptr = (LPWSTR)lpFileName;
ret = ptr;
while (TRUE)
/* Skip the drive letter if any */
ptr = pFilePath;
if (*ptr && ptr[1] == L':')
ptr += 2;
/* Find the last path separator preceding the file name */
for (ret = ptr; (c = *ptr);)
{
c = *ptr;
if (c == 0)
break;
ptr++;
if (c == (WCHAR)'\\' || c == (WCHAR)'/' || c == (WCHAR)':')
++ptr;
if (c == L'\\' || c == L'/')
ret = ptr;
}

View file

@ -65,7 +65,7 @@ WINSETUPAPI VOID WINAPI pSetupCenterWindowRelativeToParent(HWND);
WINSETUPAPI BOOL WINAPI pSetupConcatenatePaths(LPWSTR, LPCWSTR, DWORD, LPDWORD);
WINSETUPAPI PWSTR WINAPI pSetupDuplicateString(PCWSTR);
WINSETUPAPI BOOL WINAPI pSetupEnablePrivilege(PCWSTR, BOOL);
WINSETUPAPI PWSTR WINAPI pSetupGetFileTitle(PCWSTR);
WINSETUPAPI PCWSTR WINAPI pSetupGetFileTitle(PCWSTR);
WINSETUPAPI BOOL WINAPI pSetupGetVersionInfoFromImage(LPWSTR, PULARGE_INTEGER, LPWORD);
WINSETUPAPI DWORD WINAPI pSetupGuidFromString(PCWSTR, LPGUID);
WINSETUPAPI BOOL WINAPI pSetupIsGuidNull(LPGUID);