Module: wine Branch: master Commit: b489ed448581e23117d1be40e14b51b778594a4d URL: http://source.winehq.org/git/wine.git/?a=commit;h=b489ed448581e23117d1be40e1...
Author: Misha Koshelev mk144210@bcm.edu Date: Mon Jun 4 09:25:59 2007 -0500
msi: automation: SummaryInfo::Property, remove all specific instances to PIDs.
---
dlls/msi/automation.c | 74 ++++++++++++++++++++++-------------------------- 1 files changed, 34 insertions(+), 40 deletions(-)
diff --git a/dlls/msi/automation.c b/dlls/msi/automation.c index 52474d4..09f35b2 100644 --- a/dlls/msi/automation.c +++ b/dlls/msi/automation.c @@ -754,72 +754,66 @@ static HRESULT WINAPI SummaryInfoImpl_Invoke( { UINT type; INT value; - INT pid; + DWORD size = 0; + FILETIME ft, ftlocal; + SYSTEMTIME st; + DATE date; + LPWSTR str;
static WCHAR szEmpty[] = {0};
hr = DispGetParam(pDispParams, 0, VT_I4, &varg0, puArgErr); if (FAILED(hr)) return hr; - pid = V_I4(&varg0); + ret = MsiSummaryInfoGetPropertyW(This->msiHandle, V_I4(&varg0), &type, &value, + &ft, szEmpty, &size); + if (ret != ERROR_SUCCESS && + ret != ERROR_MORE_DATA) + { + ERR("MsiSummaryInfoGetProperty returned %d\n", ret); + return DISP_E_EXCEPTION; + }
- if (pid == PID_CODEPAGE || (pid >= PID_PAGECOUNT && pid <= PID_CHARCOUNT) || pid == PID_SECURITY) + switch (type) { - if ((ret = MsiSummaryInfoGetPropertyW(This->msiHandle, pid, &type, &value, - NULL, NULL, NULL)) != ERROR_SUCCESS) - ERR("MsiSummaryInfoGetProperty returned %d\n", ret); - else if (type == VT_I2) - { + case VT_EMPTY: + break; + + case VT_I2: V_VT(pVarResult) = VT_I2; V_I2(pVarResult) = value; - } - else if (type == VT_I4) - { + break; + + case VT_I4: V_VT(pVarResult) = VT_I4; V_I4(pVarResult) = value; - } - } - else if ((pid >= PID_TITLE && pid <= PID_REVNUMBER) || pid == PID_APPNAME) - { - LPWSTR str; - DWORD size = 0; + break;
- if ((ret = MsiSummaryInfoGetPropertyW(This->msiHandle, pid, &type, NULL, - NULL, szEmpty, &size)) == ERROR_MORE_DATA) - { + case VT_LPSTR: if (!(str = msi_alloc(++size * sizeof(WCHAR)))) ERR("Out of memory\n"); - else if ((ret = MsiSummaryInfoGetPropertyW(This->msiHandle, pid, &type, NULL, - NULL, str, &size)) == ERROR_SUCCESS) + else if ((ret = MsiSummaryInfoGetPropertyW(This->msiHandle, V_I4(&varg0), &type, NULL, + NULL, str, &size)) != ERROR_SUCCESS) + ERR("MsiSummaryInfoGetProperty returned %d\n", ret); + else { V_VT(pVarResult) = VT_BSTR; V_BSTR(pVarResult) = SysAllocString(str); } msi_free(str); - } - if (ret != ERROR_SUCCESS && ret != ERROR_MORE_DATA) - ERR("MsiSummaryInfoGetProperty returned %d\n", ret); - } - else if (pid >= PID_EDITTIME && pid <= PID_LASTSAVE_DTM) - { - FILETIME ft, ftlocal; - SYSTEMTIME st; - DATE date; - - if ((ret = MsiSummaryInfoGetPropertyW(This->msiHandle, pid, &type, &value, - &ft, NULL, NULL)) != ERROR_SUCCESS) - ERR("MsiSummaryInfoGetProperty returned %d\n", ret); - else if (type == VT_FILETIME) - { + break; + + case VT_FILETIME: FileTimeToLocalFileTime(&ft, &ftlocal); FileTimeToSystemTime(&ftlocal, &st); SystemTimeToVariantTime(&st, &date);
V_VT(pVarResult) = VT_DATE; V_DATE(pVarResult) = date; - } + break; + + default: + ERR("Unhandled variant type %d\n", type); } - else if (pid != PID_DICTIONARY && pid != PID_THUMBNAIL) - return DISP_E_EXCEPTION; } else return DISP_E_MEMBERNOTFOUND; break;