********** Wine-ify parts of SetupCopyOEMInfW to make it closer to Wine counterpart

This commit is contained in:
Hermès Bélusca-Maïto 2023-12-29 21:57:34 +01:00
parent 967b115170
commit 6399c1525b
No known key found for this signature in database
GPG key ID: 3B2539C65E7B93D0

View file

@ -2340,14 +2340,14 @@ BOOL WINAPI SetupCopyOEMInfW(
} }
else else
{ {
HANDLE hSearch = INVALID_HANDLE_VALUE; HANDLE find_handle = INVALID_HANDLE_VALUE;
WIN32_FIND_DATAW FindFileData; WIN32_FIND_DATAW find_data;
BOOL AlreadyExists; BOOL AlreadyExists;
DWORD NextFreeNumber = 0; DWORD NextFreeNumber = 0;
SIZE_T len; SIZE_T len;
LPWSTR pFullFileName = NULL; LPWSTR pFullFileName = NULL;
LPWSTR pFileName; /* Pointer into pFullFileName buffer */ LPWSTR pFileName; /* Pointer into pFullFileName buffer */
HANDLE hSourceFile = INVALID_HANDLE_VALUE; HANDLE source_file = INVALID_HANDLE_VALUE;
if (OEMSourceMediaType == SPOST_PATH || OEMSourceMediaType == SPOST_URL) if (OEMSourceMediaType == SPOST_PATH || OEMSourceMediaType == SPOST_URL)
FIXME("OEMSourceMediaType 0x%lx ignored\n", OEMSourceMediaType); FIXME("OEMSourceMediaType 0x%lx ignored\n", OEMSourceMediaType);
@ -2365,7 +2365,7 @@ BOOL WINAPI SetupCopyOEMInfW(
return FALSE; return FALSE;
} }
GetFullPathNameW(SourceInfFileName, len, path, NULL); GetFullPathNameW(SourceInfFileName, len, path, NULL);
hSourceFile = CreateFileW( source_file = CreateFileW(
path, FILE_READ_DATA | FILE_READ_ATTRIBUTES, path, FILE_READ_DATA | FILE_READ_ATTRIBUTES,
FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
NULL, OPEN_EXISTING, 0, NULL); NULL, OPEN_EXISTING, 0, NULL);
@ -2387,22 +2387,22 @@ BOOL WINAPI SetupCopyOEMInfW(
p = path + strlenW(path); p = path + strlenW(path);
strcpyW(p, Inf); strcpyW(p, Inf);
strcatW(p, SourceInfFileName); strcatW(p, SourceInfFileName);
hSourceFile = CreateFileW( source_file = CreateFileW(
path, FILE_READ_DATA | FILE_READ_ATTRIBUTES, path, FILE_READ_DATA | FILE_READ_ATTRIBUTES,
FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
NULL, OPEN_EXISTING, 0, NULL); NULL, OPEN_EXISTING, 0, NULL);
if (hSourceFile == INVALID_HANDLE_VALUE) if (source_file == INVALID_HANDLE_VALUE)
{ {
strcpyW(p, System32); strcpyW(p, System32);
strcatW(p, SourceInfFileName); strcatW(p, SourceInfFileName);
hSourceFile = CreateFileW( source_file = CreateFileW(
path, FILE_READ_DATA | FILE_READ_ATTRIBUTES, path, FILE_READ_DATA | FILE_READ_ATTRIBUTES,
FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
NULL, OPEN_EXISTING, 0, NULL); NULL, OPEN_EXISTING, 0, NULL);
} }
MyFree(path); MyFree(path);
} }
if (hSourceFile == INVALID_HANDLE_VALUE) if (source_file == INVALID_HANDLE_VALUE)
{ {
SetLastError(ERROR_FILE_NOT_FOUND); SetLastError(ERROR_FILE_NOT_FOUND);
goto cleanup; goto cleanup;
@ -2427,38 +2427,38 @@ BOOL WINAPI SetupCopyOEMInfW(
/* Search if the specified .inf file already exists in %WINDIR%\Inf */ /* Search if the specified .inf file already exists in %WINDIR%\Inf */
AlreadyExists = FALSE; AlreadyExists = FALSE;
strcpyW(pFileName, OemFileMask); strcpyW(pFileName, OemFileMask);
hSearch = FindFirstFileW(pFullFileName, &FindFileData); find_handle = FindFirstFileW(pFullFileName, &find_data);
if (hSearch != INVALID_HANDLE_VALUE) if (find_handle != INVALID_HANDLE_VALUE)
{ {
LARGE_INTEGER SourceFileSize; LARGE_INTEGER source_file_size;
if (GetFileSizeEx(hSourceFile, &SourceFileSize)) if (GetFileSizeEx(source_file, &source_file_size))
{ {
do do
{ {
LARGE_INTEGER DestFileSize; LARGE_INTEGER dest_file_size;
HANDLE hDestFile; HANDLE dest_file;
strcpyW(pFileName, FindFileData.cFileName); strcpyW(pFileName, find_data.cFileName);
hDestFile = CreateFileW( dest_file = CreateFileW(
pFullFileName, FILE_READ_DATA | FILE_READ_ATTRIBUTES, pFullFileName, FILE_READ_DATA | FILE_READ_ATTRIBUTES,
FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
NULL, OPEN_EXISTING, 0, NULL); NULL, OPEN_EXISTING, 0, NULL);
if (hDestFile != INVALID_HANDLE_VALUE) if (dest_file != INVALID_HANDLE_VALUE)
{ {
if (GetFileSizeEx(hDestFile, &DestFileSize) if (GetFileSizeEx(dest_file, &dest_file_size)
&& DestFileSize.QuadPart == SourceFileSize.QuadPart && dest_file_size.QuadPart == source_file_size.QuadPart
&& !compare_files(hSourceFile, hDestFile)) && !compare_files(source_file, dest_file))
{ {
TRACE("%s already exists as %s\n", TRACE("%s already exists as %s\n",
debugstr_w(SourceInfFileName), debugstr_w(pFileName)); debugstr_w(SourceInfFileName), debugstr_w(pFileName));
AlreadyExists = TRUE; AlreadyExists = TRUE;
} }
} }
} while (!AlreadyExists && FindNextFileW(hSearch, &FindFileData)); } while (!AlreadyExists && FindNextFileW(find_handle, &find_data));
} }
FindClose(hSearch); FindClose(find_handle);
hSearch = INVALID_HANDLE_VALUE; find_handle = INVALID_HANDLE_VALUE;
} }
if (!AlreadyExists && CopyStyle & SP_COPY_REPLACEONLY) if (!AlreadyExists && CopyStyle & SP_COPY_REPLACEONLY)
@ -2487,8 +2487,8 @@ BOOL WINAPI SetupCopyOEMInfW(
/* Search the number to give to OEM??.INF */ /* Search the number to give to OEM??.INF */
strcpyW(pFileName, OemFileMask); strcpyW(pFileName, OemFileMask);
hSearch = FindFirstFileW(pFullFileName, &FindFileData); find_handle = FindFirstFileW(pFullFileName, &find_data);
if (hSearch == INVALID_HANDLE_VALUE) if (find_handle == INVALID_HANDLE_VALUE)
{ {
if (GetLastError() != ERROR_FILE_NOT_FOUND) if (GetLastError() != ERROR_FILE_NOT_FOUND)
goto cleanup; goto cleanup;
@ -2498,13 +2498,13 @@ BOOL WINAPI SetupCopyOEMInfW(
do do
{ {
DWORD CurrentNumber; DWORD CurrentNumber;
if (swscanf(FindFileData.cFileName, OemFileSpecification, &CurrentNumber) == 1 if (swscanf(find_data.cFileName, OemFileSpecification, &CurrentNumber) == 1
&& CurrentNumber <= OEM_INDEX_LIMIT) && CurrentNumber <= OEM_INDEX_LIMIT)
{ {
if (CurrentNumber >= NextFreeNumber) if (CurrentNumber >= NextFreeNumber)
NextFreeNumber = CurrentNumber + 1; NextFreeNumber = CurrentNumber + 1;
} }
} while (FindNextFileW(hSearch, &FindFileData)); } while (FindNextFileW(find_handle, &find_data));
} }
if (NextFreeNumber > OEM_INDEX_LIMIT) if (NextFreeNumber > OEM_INDEX_LIMIT)
@ -2554,10 +2554,10 @@ BOOL WINAPI SetupCopyOEMInfW(
ret = TRUE; ret = TRUE;
cleanup: cleanup:
if (hSourceFile != INVALID_HANDLE_VALUE) if (source_file != INVALID_HANDLE_VALUE)
CloseHandle(hSourceFile); CloseHandle(source_file);
if (hSearch != INVALID_HANDLE_VALUE) if (find_handle != INVALID_HANDLE_VALUE)
FindClose(hSearch); FindClose(find_handle);
MyFree(pFullFileName); MyFree(pFullFileName);
} }