From 0b7a17d28207311fcb9e47c6afba9869d11db108 Mon Sep 17 00:00:00 2001 From: Mike McCormack Date: Mon, 13 Nov 2006 16:34:37 +0900 Subject: [PATCH] msi: Clean upstore_binary_to_temp. --- dlls/msi/custom.c | 77 ++++++++++++++++++++++++++----------------------------- 1 file changed, 36 insertions(+), 41 deletions(-) diff --git a/dlls/msi/custom.c b/dlls/msi/custom.c index 9c0a7d2b577..841e4632d48 100644 --- a/dlls/msi/custom.c +++ b/dlls/msi/custom.c @@ -284,62 +284,57 @@ end: } -static UINT store_binary_to_temp(MSIPACKAGE *package, LPCWSTR source, +static UINT store_binary_to_temp(MSIPACKAGE *package, LPCWSTR source, LPWSTR tmp_file) { - DWORD sz=MAX_PATH; + static const WCHAR query[] = { + 'S','E','L','E','C','T',' ','*',' ','F','R','O','M',' ', + '`','B','i' ,'n','a','r','y','`',' ','W','H','E','R','E',' ', + '`','N','a','m','e','`',' ','=',' ','\'','%','s','\'',0}; + UINT rc; + MSIRECORD *row = 0; + HANDLE file; + CHAR buffer[1024]; static const WCHAR f1[] = {'m','s','i',0}; WCHAR fmt[MAX_PATH]; + DWORD sz = MAX_PATH; if (MSI_GetPropertyW(package, cszTempFolder, fmt, &sz) != ERROR_SUCCESS) - GetTempPathW(MAX_PATH,fmt); + GetTempPathW(MAX_PATH, fmt); - if (GetTempFileNameW(fmt,f1,0,tmp_file) == 0) + if (GetTempFileNameW(fmt, f1, 0, tmp_file) == 0) { TRACE("Unable to create file\n"); return ERROR_FUNCTION_FAILED; } - else - { - /* write out the file */ - UINT rc; - MSIRECORD * row = 0; - static const WCHAR fmt[] = - {'S','E','L','E','C','T',' ','*',' ','F','R','O','M',' ', - '`','B','i' ,'n','a','r','y','`',' ','W','H','E','R','E', - ' ','`','N','a','m','e','`',' ','=',' ','\'','%','s','\'',0}; - HANDLE the_file; - CHAR buffer[1024]; - - the_file = CreateFileW(tmp_file, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, - FILE_ATTRIBUTE_NORMAL, NULL); - - if (the_file == INVALID_HANDLE_VALUE) - return ERROR_FUNCTION_FAILED; - row = MSI_QueryGetRecord(package->db, fmt, source); - if (!row) - return ERROR_FUNCTION_FAILED; + /* write out the file */ + file = CreateFileW(tmp_file, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, + FILE_ATTRIBUTE_NORMAL, NULL); + if (file == INVALID_HANDLE_VALUE) + return ERROR_FUNCTION_FAILED; - do - { - DWORD write; - sz = 1024; - rc = MSI_RecordReadStream(row,2,buffer,&sz); - if (rc != ERROR_SUCCESS) - { - ERR("Failed to get stream\n"); - CloseHandle(the_file); - DeleteFileW(tmp_file); - break; - } - WriteFile(the_file,buffer,sz,&write,NULL); - } while (sz == 1024); + row = MSI_QueryGetRecord(package->db, query, source); + if (!row) + return ERROR_FUNCTION_FAILED; - CloseHandle(the_file); + do + { + DWORD write; + sz = sizeof buffer; + rc = MSI_RecordReadStream(row, 2, buffer, &sz); + if (rc != ERROR_SUCCESS) + { + ERR("Failed to get stream\n"); + CloseHandle(file); + DeleteFileW(tmp_file); + break; + } + WriteFile(file, buffer, sz, &write, NULL); + } while (sz == sizeof buffer); - msiobj_release(&row->hdr); - } + CloseHandle(file); + msiobj_release(&row->hdr); return ERROR_SUCCESS; } -- 2.11.4.GIT