126 if (!lpcszFileList || !*lpcszFileList)
130 lstrcpyW(szIniPath, lpcszBackupDir);
141 szString =
L"-1,0,0,0,0,0,-1";
146 while (*lpcszFileList)
149 lpcszFileList +=
lstrlenW(lpcszFileList) + 1;
200 if (!lpszSourceDir || !lpszSourceFile || !lpszDestDir)
257 if (!lpszSourceDir || !lpszSourceFile || !lpszDestDir)
271 szDestFilename =
wcsdup(lpszDestFile ? lpszDestFile : lpszSourceFile);
306 free(szDestFilename);
324 goto deleteinitialdirectory;
328 if (fname_len && fname[fname_len-1] !=
'\\') fname[fname_len++] =
'\\';
350 *(fname + fname_len) =
'\0';
355deleteinitialdirectory:
437 FIXME(
"Flags ignored!\n");
440 if (pszFileOrDirName && *pszFileOrDirName)
490 LPWSTR szFilename, szFlags;
491 LPWSTR cmdline_copy, cmdline_ptr;
498 cmdline_ptr = cmdline_copy;
517#define EXTRACT_FILLFILELIST 0x00000001
518#define EXTRACT_EXTRACTFILES 0x00000002
562 szConvertedList =
malloc(dwLen);
564 szConvertedList[dwLen - 1] =
'\0';
567 if (!szConvertedList[0])
569 free(szConvertedList);
576 temp = szConvertedList;
588 return szConvertedList;
607 if (dwTestLen == dwLen)
613 szFileList += dwTestLen + 1;
623 DWORD dwNumFound = 0;
629 session->Operation &= ~EXTRACT_FILLFILELIST;
644 session->Operation &= ~EXTRACT_FILLFILELIST;
691 DWORD dwFileCount = 0;
692 DWORD dwFilesFound = 0;
698 if (!CabName || !ExpandDir)
722 if (!szConvertedList)
729 if (dwFilesFound != dwFileCount)
744 free(szConvertedList);
1022 pdwMSVer, pdwLSVer, bVersion);
1056 DWORD dwHandle, dwInfoSize;
1064 pdwMSVer, pdwLSVer, bVersion);
1091 pVersionInfo =
malloc(dwInfoSize);
1100 if (!
VerQueryValueW(pVersionInfo,
L"\\", (
void **)&pFixedVersionInfo, &uValueLen))
1106 *pdwMSVer = pFixedVersionInfo->dwFileVersionMS;
1107 *pdwLSVer = pFixedVersionInfo->dwFileVersionLS;
1112 (
LPVOID *)&pLangAndCodePage, &uValueLen))
1118 *pdwMSVer = pLangAndCodePage->wLanguage;
1119 *pdwLSVer = pLangAndCodePage->wCodePage;
vector< FileInfo > FileList
LPWSTR get_parameter(LPWSTR *params, WCHAR separator, BOOL quoted)
static char * strdupWtoA(const WCHAR *str)
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
_In_ D3DDDI_VIDEO_PRESENT_TARGET_ID _In_ ULONG _In_ ULONG Flags
HRESULT WINAPI GetVersionFromFileExA(LPCSTR lpszFilename, LPDWORD pdwMSVer, LPDWORD pdwLSVer, BOOL bVersion)
HRESULT WINAPI FileSaveRestoreA(HWND hDlg, LPSTR pszFileList, LPSTR pszDir, LPSTR pszBaseName, DWORD dwFlags)
static UINT CALLBACK pQuietQueueCallback(PVOID Context, UINT Notification, UINT_PTR Param1, UINT_PTR Param2)
HRESULT WINAPI FileSaveMarkNotExistA(LPSTR pszFileList, LPSTR pszDir, LPSTR pszBaseName)
HRESULT WINAPI GetVersionFromFileExW(LPCWSTR lpszFilename, LPDWORD pdwMSVer, LPDWORD pdwLSVer, BOOL bVersion)
HRESULT WINAPI GetVersionFromFileA(LPCSTR Filename, LPDWORD MajorVer, LPDWORD MinorVer, BOOL Version)
HRESULT WINAPI ExtractFilesA(LPCSTR CabName, LPCSTR ExpandDir, DWORD Flags, LPCSTR FileList, LPVOID LReserved, DWORD Reserved)
static LPSTR convert_file_list(LPCSTR FileList, DWORD *dwNumFiles)
HRESULT WINAPI DelNodeA(LPCSTR pszFileOrDirName, DWORD dwFlags)
struct tagLANGANDCODEPAGE LANGANDCODEPAGE
HRESULT WINAPI AddDelBackupEntryA(LPCSTR lpcszFileList, LPCSTR lpcszBackupDir, LPCSTR lpcszBaseName, DWORD dwFlags)
#define EXTRACT_EXTRACTFILES
HRESULT WINAPI FileSaveRestoreOnINFA(HWND hWnd, LPCSTR pszTitle, LPCSTR pszINF, LPCSTR pszSection, LPCSTR pszBackupDir, LPCSTR pszBaseBackupFile, DWORD dwFlags)
static UINT CALLBACK pQueueCallback(PVOID Context, UINT Notification, UINT_PTR Param1, UINT_PTR Param2)
static HRESULT DELNODE_recurse_dirtree(LPWSTR fname, DWORD flags)
HRESULT WINAPI AdvInstallFileW(HWND hwnd, LPCWSTR lpszSourceDir, LPCWSTR lpszSourceFile, LPCWSTR lpszDestDir, LPCWSTR lpszDestFile, DWORD dwFlags, DWORD dwReserved)
static void free_file_list(SESSION *session)
HRESULT WINAPI FileSaveRestoreW(HWND hDlg, LPWSTR pszFileList, LPWSTR pszDir, LPWSTR pszBaseName, DWORD dwFlags)
HRESULT WINAPI FileSaveRestoreOnINFW(HWND hWnd, LPCWSTR pszTitle, LPCWSTR pszINF, LPCWSTR pszSection, LPCWSTR pszBackupDir, LPCWSTR pszBaseBackupFile, DWORD dwFlags)
static DWORD fill_file_list(SESSION *session, LPCSTR szCabName, LPCSTR szFileList)
HRESULT WINAPI DelNodeW(LPCWSTR pszFileOrDirName, DWORD dwFlags)
static void free_file_node(struct FILELIST *pNode)
HRESULT WINAPI AdvInstallFileA(HWND hwnd, LPCSTR lpszSourceDir, LPCSTR lpszSourceFile, LPCSTR lpszDestDir, LPCSTR lpszDestFile, DWORD dwFlags, DWORD dwReserved)
static BOOL file_in_list(LPCSTR szFile, LPCSTR szFileList)
HRESULT WINAPI DelNodeRunDLL32A(HWND hWnd, HINSTANCE hInst, LPSTR cmdline, INT show)
HRESULT WINAPI FileSaveMarkNotExistW(LPWSTR pszFileList, LPWSTR pszDir, LPWSTR pszBaseName)
static LPWSTR ansi_to_unicode_list(LPCSTR ansi_list)
#define EXTRACT_FILLFILELIST
HRESULT WINAPI DelNodeRunDLL32W(HWND hWnd, HINSTANCE hInst, LPWSTR cmdline, INT show)
HRESULT WINAPI AddDelBackupEntryW(LPCWSTR lpcszFileList, LPCWSTR lpcszBackupDir, LPCWSTR lpcszBaseName, DWORD dwFlags)
HRESULT WINAPI ExtractFilesW(LPCWSTR CabName, LPCWSTR ExpandDir, DWORD Flags, LPCWSTR FileList, LPVOID LReserved, DWORD Reserved)
HRESULT WINAPI GetVersionFromFileW(LPCWSTR Filename, LPDWORD MajorVer, LPDWORD MinorVer, BOOL Version)
#define GetProcAddress(x, y)
#define INVALID_HANDLE_VALUE
#define FILE_ATTRIBUTE_NORMAL
#define MultiByteToWideChar
BOOL WINAPI CopyFileW(IN LPCWSTR lpExistingFileName, IN LPCWSTR lpNewFileName, IN BOOL bFailIfExists)
BOOL WINAPI DeleteFileW(IN LPCWSTR lpFileName)
BOOL WINAPI RemoveDirectoryW(IN LPCWSTR lpPathName)
DWORD WINAPI GetFileAttributesW(LPCWSTR lpFileName)
BOOL WINAPI SetFileAttributesW(LPCWSTR lpFileName, DWORD dwFileAttributes)
DWORD WINAPI GetFileAttributesA(LPCSTR lpFileName)
HANDLE WINAPI FindFirstFileW(IN LPCWSTR lpFileName, OUT LPWIN32_FIND_DATAW lpFindFileData)
BOOL WINAPI FindClose(HANDLE hFindFile)
BOOL WINAPI FindNextFileW(IN HANDLE hFindFile, OUT LPWIN32_FIND_DATAW lpFindFileData)
HINSTANCE WINAPI DECLSPEC_HOTPATCH LoadLibraryA(LPCSTR lpLibFileName)
UINT WINAPI GetWindowsDirectoryW(OUT LPWSTR lpBuffer, IN UINT uSize)
BOOL WINAPI WritePrivateProfileStringW(LPCWSTR section, LPCWSTR entry, LPCWSTR string, LPCWSTR filename)
int WINAPI lstrcmpW(LPCWSTR str1, LPCWSTR str2)
int WINAPI lstrcmpiA(LPCSTR str1, LPCSTR str2)
BOOL WINAPI GetFileVersionInfoW(LPCWSTR filename, DWORD handle, DWORD datasize, LPVOID data)
BOOL WINAPI VerQueryValueW(LPCVOID pBlock, LPCWSTR lpSubBlock, LPVOID *lplpBuffer, PUINT puLen)
DWORD WINAPI GetFileVersionInfoSizeW(LPCWSTR filename, LPDWORD handle)
static void basename(LPCWSTR path, LPWSTR name)
_ACRTIMP __msvcrt_long __cdecl wcstol(const wchar_t *, wchar_t **, int)
_ACRTIMP size_t __cdecl strlen(const char *)
static wchar_t * wcsdup(const wchar_t *str)
PVOID WINAPI SetupInitDefaultQueueCallbackEx(HWND owner, HWND progress, UINT msg, DWORD reserved1, PVOID reserved2)
UINT WINAPI SetupDefaultQueueCallbackW(PVOID context, UINT notification, UINT_PTR param1, UINT_PTR param2)
void WINAPI SetupTermDefaultQueueCallback(PVOID context)
BOOL WINAPI SetupQueueCopyW(HSPFILEQ queue, PCWSTR src_root, PCWSTR src_path, PCWSTR src_file, PCWSTR src_descr, PCWSTR src_tag, PCWSTR dst_dir, PCWSTR dst_file, DWORD style)
IN PVCB IN PBCB OUT PDIRENT IN USHORT IN POEM_STRING Filename
UINT WINAPI GetTempFileNameW(IN LPCWSTR lpPathName, IN LPCWSTR lpPrefixString, IN UINT uUnique, OUT LPWSTR lpTempFileName)
#define SPFILENOTIFY_RENAMEERROR
UINT(CALLBACK * PSP_FILE_CALLBACK_W)(IN PVOID Context, IN UINT Notification, IN UINT_PTR Param1, IN UINT_PTR Param2)
#define SPFILENOTIFY_DELETEERROR
#define SPFILENOTIFY_COPYERROR
GLenum const GLfloat * params
LPSTR WINAPI lstrcpyA(LPSTR lpString1, LPCSTR lpString2)
LPWSTR WINAPI lstrcatW(LPWSTR lpString1, LPCWSTR lpString2)
int WINAPI lstrlenA(LPCSTR lpString)
static const LARGE_INTEGER *static const HANDLE const LARGE_INTEGER *static PSLIST_ENTRY PSLIST_ENTRY last
unsigned __int3264 UINT_PTR
_In_ HANDLE _In_ DWORD _In_ DWORD _Inout_opt_ LPOVERLAPPED _In_opt_ LPTRANSMIT_FILE_BUFFERS _In_ DWORD dwReserved
_In_ PUNICODE_STRING _Inout_ PUNICODE_STRING Destination
NTSYSAPI BOOLEAN NTAPI RtlCreateUnicodeStringFromAsciiz(_Out_ PUNICODE_STRING Destination, _In_ PCSZ Source)
_In_ LPWSTR _In_ DWORD _In_ DWORD _In_ DWORD dwFlags
#define FILE_ATTRIBUTE_READONLY
#define FILE_ATTRIBUTE_HIDDEN
#define FILE_ATTRIBUTE_DIRECTORY
NTSYSAPI VOID NTAPI RtlFreeUnicodeString(PUNICODE_STRING UnicodeString)
static unsigned __int64 next
#define SetupOpenFileQueue
#define SetupCommitFileQueueW
#define SetupCloseFileQueue
struct FILELIST * FilterList
struct FILELIST * FileList
_Field_z_ WCHAR cFileName[MAX_PATH]
#define INVALID_FILE_ATTRIBUTES
_In_ PWDFDEVICE_INIT _In_ PFN_WDF_DEVICE_SHUTDOWN_NOTIFICATION Notification
_Must_inspect_result_ _In_ WDFDEVICE _In_ LPCGUID _Out_ PINTERFACE _In_ USHORT _In_ USHORT Version
DWORD WINAPI GetLastError(void)
_Reserved_ PVOID Reserved
static HRESULT HRESULT_FROM_WIN32(unsigned int x)
#define ERROR_PATH_NOT_FOUND