diff options
-rw-r--r-- | include/libmsi.h | 12 | ||||
-rw-r--r-- | libmsi/suminfo.c | 79 | ||||
-rw-r--r-- | tests/testdatabase.c | 44 | ||||
-rw-r--r-- | tests/testdatabase.ok | 28 | ||||
-rw-r--r-- | tests/testsuminfo.c | 76 | ||||
-rw-r--r-- | tests/testsuminfo.ok | 6 |
6 files changed, 146 insertions, 99 deletions
diff --git a/include/libmsi.h b/include/libmsi.h index b8dc18e..674c4b5 100644 --- a/include/libmsi.h +++ b/include/libmsi.h @@ -58,6 +58,14 @@ typedef enum LibmsiResult LIBMSI_RESULT_INVALID_DATATYPE = 1804 } LibmsiResult; +typedef enum LibmsiPropertyType +{ + LIBMSI_PROPERTY_TYPE_EMPTY = 0, + LIBMSI_PROPERTY_TYPE_INT = 1, + LIBMSI_PROPERTY_TYPE_STRING = 2, + LIBMSI_PROPERTY_TYPE_FILETIME = 3, +} LibmsiPropertyType; + #define MSI_NULL_INTEGER 0x80000000 typedef enum LibmsiColInfo @@ -197,9 +205,9 @@ LibmsiResult libmsi_database_apply_transform(LibmsiDatabase *,const char *,int); LibmsiResult libmsi_query_get_column_info(LibmsiQuery *, LibmsiColInfo, LibmsiRecord **); -LibmsiResult libmsi_summary_info_get_property(LibmsiSummaryInfo *,unsigned,unsigned *,int *,uint64_t*,char *,unsigned *); +LibmsiResult libmsi_summary_info_get_property(LibmsiSummaryInfo *, LibmsiPropertyType,unsigned *,int *,uint64_t*,char *,unsigned *); -LibmsiResult libmsi_summary_info_set_property(LibmsiSummaryInfo *, unsigned, unsigned, int, uint64_t*, const char *); +LibmsiResult libmsi_summary_info_set_property(LibmsiSummaryInfo *, LibmsiPropertyType, unsigned, int, uint64_t*, const char *); LibmsiResult libmsi_database_export(LibmsiDatabase *, const char *, int fd); diff --git a/libmsi/suminfo.c b/libmsi/suminfo.c index 874f22e..0e56cb2 100644 --- a/libmsi/suminfo.c +++ b/libmsi/suminfo.c @@ -20,6 +20,7 @@ #include <stdarg.h> #include <time.h> +#include <assert.h> #define COBJMACROS #define NONAMELESSUNION @@ -514,7 +515,7 @@ LibmsiResult libmsi_summary_info_get_property( if ( uiProperty >= MSI_MAX_PROPS ) { - if (puiDataType) *puiDataType = VT_EMPTY; + if (puiDataType) *puiDataType = LIBMSI_PROPERTY_TYPE_EMPTY; return LIBMSI_RESULT_UNKNOWN_PROPERTY; } @@ -524,20 +525,26 @@ LibmsiResult libmsi_summary_info_get_property( msiobj_addref( &si->hdr ); prop = &si->property[uiProperty]; - if( puiDataType ) - *puiDataType = prop->vt; - switch( prop->vt ) { case VT_I2: + if( puiDataType ) + *puiDataType = LIBMSI_PROPERTY_TYPE_INT; + if( piValue ) *piValue = prop->iVal; break; case VT_I4: + if( puiDataType ) + *puiDataType = LIBMSI_PROPERTY_TYPE_INT; + if( piValue ) *piValue = prop->lVal; break; case VT_LPSTR: + if( puiDataType ) + *puiDataType = LIBMSI_PROPERTY_TYPE_STRING; + if( pcchValueBuf ) { unsigned len = 0; @@ -551,10 +558,16 @@ LibmsiResult libmsi_summary_info_get_property( } break; case VT_FILETIME: + if( puiDataType ) + *puiDataType = LIBMSI_PROPERTY_TYPE_FILETIME; + if( pftValue ) *pftValue = prop->filetime.dwLowDateTime | ((uint64_t)prop->filetime.dwHighDateTime << 32); break; case VT_EMPTY: + if( puiDataType ) + *puiDataType = LIBMSI_PROPERTY_TYPE_EMPTY; + break; default: FIXME("Unknown property variant type\n"); @@ -604,28 +617,17 @@ WCHAR *msi_get_suminfo_product( IStorage *stg ) return prod; } -LibmsiResult libmsi_summary_info_set_property( LibmsiSummaryInfo *si, unsigned uiProperty, - unsigned uiDataType, int iValue, uint64_t* pftValue, const char *szValue ) +static LibmsiResult _libmsi_summary_info_set_property( LibmsiSummaryInfo *si, unsigned uiProperty, + unsigned type, int iValue, uint64_t* pftValue, const char *szValue ) { PROPVARIANT *prop; unsigned len; unsigned ret; - int type; - - TRACE("%p %u %u %i %p %p\n", si, uiProperty, type, iValue, - pftValue, szValue ); - if( !si ) - return LIBMSI_RESULT_INVALID_HANDLE; - - type = get_type( uiProperty ); - if( type == VT_EMPTY || type != uiDataType ) - return LIBMSI_RESULT_DATATYPE_MISMATCH; - - if( uiDataType == VT_LPSTR && !szValue ) + if( type == VT_LPSTR && !szValue ) return LIBMSI_RESULT_INVALID_PARAMETER; - if( uiDataType == VT_FILETIME && !pftValue ) + if( type == VT_FILETIME && !pftValue ) return LIBMSI_RESULT_INVALID_PARAMETER; msiobj_addref( &si->hdr); @@ -673,6 +675,42 @@ end: return ret; } +LibmsiResult libmsi_summary_info_set_property( LibmsiSummaryInfo *si, unsigned uiProperty, + unsigned uiDataType, int iValue, uint64_t* pftValue, const char *szValue ) +{ + int type; + + TRACE("%p %u %u %i %p %p\n", si, uiProperty, type, iValue, + pftValue, szValue ); + + if( !si ) + return LIBMSI_RESULT_INVALID_HANDLE; + + type = get_type( uiProperty ); + switch (type) { + case VT_EMPTY: + return LIBMSI_RESULT_DATATYPE_MISMATCH; + case VT_I2: + case VT_I4: + if (uiDataType != LIBMSI_PROPERTY_TYPE_INT) { + return LIBMSI_RESULT_DATATYPE_MISMATCH; + } + break; + case VT_LPSTR: + if (uiDataType != LIBMSI_PROPERTY_TYPE_STRING) { + return LIBMSI_RESULT_DATATYPE_MISMATCH; + } + break; + case VT_FILETIME: + if (uiDataType != LIBMSI_PROPERTY_TYPE_FILETIME) { + return LIBMSI_RESULT_DATATYPE_MISMATCH; + } + break; + } + + return _libmsi_summary_info_set_property( si, uiProperty, type, iValue, pftValue, szValue ); +} + static unsigned suminfo_persist( LibmsiSummaryInfo *si ) { unsigned ret = LIBMSI_RESULT_FUNCTION_FAILED; @@ -800,7 +838,8 @@ unsigned msi_add_suminfo( LibmsiDatabase *db, WCHAR ***records, int num_records, if (r != LIBMSI_RESULT_SUCCESS) goto end; - r = libmsi_summary_info_set_property( si, pid, get_type(pid), int_value, &ft_value, str_value ); + assert( get_type(pid) != VT_EMPTY ); + r = _libmsi_summary_info_set_property( si, pid, get_type(pid), int_value, &ft_value, str_value ); if (r != LIBMSI_RESULT_SUCCESS) goto end; diff --git a/tests/testdatabase.c b/tests/testdatabase.c index 6bb05d3..74822e0 100644 --- a/tests/testdatabase.c +++ b/tests/testdatabase.c @@ -1536,7 +1536,7 @@ static void test_streamtable(void) r = libmsi_database_get_summary_info( hdb, 1, &hsi ); ok( r == LIBMSI_RESULT_SUCCESS, "Failed to get summary information handle: %u\n", r ); - r = libmsi_summary_info_set_property( hsi, MSI_PID_SECURITY, VT_I4, 2, NULL, NULL ); + r = libmsi_summary_info_set_property( hsi, MSI_PID_SECURITY, LIBMSI_PROPERTY_TYPE_INT, 2, NULL, NULL ); ok( r == LIBMSI_RESULT_SUCCESS, "Failed to set property: %u\n", r ); r = libmsi_summary_info_persist( hsi ); @@ -2143,13 +2143,13 @@ static void test_suminfo_import(void) r = libmsi_summary_info_get_property(hsi, MSI_PID_CODEPAGE, &type, &int_value, NULL, NULL, NULL); ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %u\n", r); - ok(type == VT_I2, "Expected VT_I2, got %u\n", type); + ok(type == LIBMSI_PROPERTY_TYPE_INT, "Expected VT_I2, got %u\n", type); ok(int_value == 1252, "Expected 1252, got %d\n", int_value); size = sizeof(str_value); r = libmsi_summary_info_get_property(hsi, MSI_PID_TITLE, &type, NULL, NULL, str_value, &size); ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %u\n", r); - ok(type == VT_LPSTR, "Expected VT_LPSTR, got %u\n", type); + ok(type == LIBMSI_PROPERTY_TYPE_STRING, "Expected VT_LPSTR, got %u\n", type); ok(size == 18, "Expected 18, got %u\n", size); ok(!strcmp(str_value, "Installer Database"), "Expected \"Installer Database\", got %s\n", str_value); @@ -2157,72 +2157,72 @@ static void test_suminfo_import(void) size = sizeof(str_value); r = libmsi_summary_info_get_property(hsi, MSI_PID_SUBJECT, &type, NULL, NULL, str_value, &size); ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %u\n", r); - ok(type == VT_LPSTR, "Expected VT_LPSTR, got %u\n", type); + ok(type == LIBMSI_PROPERTY_TYPE_STRING, "Expected VT_LPSTR, got %u\n", type); ok(!strcmp(str_value, "Installer description"), "Expected \"Installer description\", got %s\n", str_value); size = sizeof(str_value); r = libmsi_summary_info_get_property(hsi, MSI_PID_AUTHOR, &type, NULL, NULL, str_value, &size); ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %u\n", r); - ok(type == VT_LPSTR, "Expected VT_LPSTR, got %u\n", type); + ok(type == LIBMSI_PROPERTY_TYPE_STRING, "Expected VT_LPSTR, got %u\n", type); ok(!strcmp(str_value, "WineHQ"), "Expected \"WineHQ\", got %s\n", str_value); size = sizeof(str_value); r = libmsi_summary_info_get_property(hsi, MSI_PID_KEYWORDS, &type, NULL, NULL, str_value, &size); ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %u\n", r); - ok(type == VT_LPSTR, "Expected VT_LPSTR, got %u\n", type); + ok(type == LIBMSI_PROPERTY_TYPE_STRING, "Expected VT_LPSTR, got %u\n", type); ok(!strcmp(str_value, "Installer"), "Expected \"Installer\", got %s\n", str_value); size = sizeof(str_value); r = libmsi_summary_info_get_property(hsi, MSI_PID_COMMENTS, &type, NULL, NULL, str_value, &size); ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %u\n", r); - ok(type == VT_LPSTR, "Expected VT_LPSTR, got %u\n", type); + ok(type == LIBMSI_PROPERTY_TYPE_STRING, "Expected VT_LPSTR, got %u\n", type); ok(!strcmp(str_value, "Installer comments"), "Expected \"Installer comments\", got %s\n", str_value); size = sizeof(str_value); r = libmsi_summary_info_get_property(hsi, MSI_PID_TEMPLATE, &type, NULL, NULL, str_value, &size); ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %u\n", r); - ok(type == VT_LPSTR, "Expected VT_LPSTR, got %u\n", type); + ok(type == LIBMSI_PROPERTY_TYPE_STRING, "Expected VT_LPSTR, got %u\n", type); ok(!strcmp(str_value, "Intel;1033,2057"), "Expected \"Intel;1033,2057\", got %s\n", str_value); size = sizeof(str_value); r = libmsi_summary_info_get_property(hsi, MSI_PID_REVNUMBER, &type, NULL, NULL, str_value, &size); ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %u\n", r); - ok(type == VT_LPSTR, "Expected VT_LPSTR, got %u\n", type); + ok(type == LIBMSI_PROPERTY_TYPE_STRING, "Expected VT_LPSTR, got %u\n", type); ok(!strcmp(str_value, "{12345678-1234-1234-1234-123456789012}"), "Expected \"{12345678-1234-1234-1234-123456789012}\", got %s\n", str_value); r = libmsi_summary_info_get_property(hsi, MSI_PID_CREATE_DTM, &type, NULL, &ft_value, NULL, NULL); ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %u\n", r); - ok(type == VT_FILETIME, "Expected VT_FILETIME, got %u\n", type); + ok(type == LIBMSI_PROPERTY_TYPE_FILETIME, "Expected VT_FILETIME, got %u\n", type); r = libmsi_summary_info_get_property(hsi, MSI_PID_LASTSAVE_DTM, &type, NULL, &ft_value, NULL, NULL); ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %u\n", r); - ok(type == VT_FILETIME, "Expected VT_FILETIME, got %u\n", type); + ok(type == LIBMSI_PROPERTY_TYPE_FILETIME, "Expected VT_FILETIME, got %u\n", type); r = libmsi_summary_info_get_property(hsi, MSI_PID_PAGECOUNT, &type, &int_value, NULL, NULL, NULL); ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %u\n", r); - ok(type == VT_I4, "Expected VT_I4, got %u\n", type); + ok(type == LIBMSI_PROPERTY_TYPE_INT, "Expected VT_I4, got %u\n", type); ok(int_value == 200, "Expected 200, got %d\n", int_value); r = libmsi_summary_info_get_property(hsi, MSI_PID_WORDCOUNT, &type, &int_value, NULL, NULL, NULL); ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %u\n", r); - ok(type == VT_I4, "Expected VT_I4, got %u\n", type); + ok(type == LIBMSI_PROPERTY_TYPE_INT, "Expected VT_I4, got %u\n", type); ok(int_value == 2, "Expected 2, got %d\n", int_value); r = libmsi_summary_info_get_property(hsi, MSI_PID_SECURITY, &type, &int_value, NULL, NULL, NULL); ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %u\n", r); - ok(type == VT_I4, "Expected VT_I4, got %u\n", type); + ok(type == LIBMSI_PROPERTY_TYPE_INT, "Expected VT_I4, got %u\n", type); ok(int_value == 2, "Expected 2, got %d\n", int_value); size = sizeof(str_value); r = libmsi_summary_info_get_property(hsi, MSI_PID_APPNAME, &type, NULL, NULL, str_value, &size); ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %u\n", r); - ok(type == VT_LPSTR, "Expected VT_LPSTR, got %u\n", type); + ok(type == LIBMSI_PROPERTY_TYPE_STRING, "Expected VT_LPSTR, got %u\n", type); ok(!strcmp(str_value, "Vim"), "Expected \"Vim\", got %s\n", str_value); libmsi_unref(hsi); @@ -2864,30 +2864,30 @@ static unsigned set_summary_info(LibmsiDatabase *hdb) res = libmsi_database_get_summary_info(hdb, 7, &suminfo); ok( res == LIBMSI_RESULT_SUCCESS , "Failed to open summaryinfo\n" ); - res = libmsi_summary_info_set_property(suminfo,2, VT_LPSTR, 0,NULL, + res = libmsi_summary_info_set_property(suminfo,2, LIBMSI_PROPERTY_TYPE_STRING, 0,NULL, "Installation Database"); ok( res == LIBMSI_RESULT_SUCCESS , "Failed to set summary info\n" ); - res = libmsi_summary_info_set_property(suminfo,3, VT_LPSTR, 0,NULL, + res = libmsi_summary_info_set_property(suminfo,3, LIBMSI_PROPERTY_TYPE_STRING, 0,NULL, "Installation Database"); ok( res == LIBMSI_RESULT_SUCCESS , "Failed to set summary info\n" ); - res = libmsi_summary_info_set_property(suminfo,4, VT_LPSTR, 0,NULL, + res = libmsi_summary_info_set_property(suminfo,4, LIBMSI_PROPERTY_TYPE_STRING, 0,NULL, "Wine Hackers"); ok( res == LIBMSI_RESULT_SUCCESS , "Failed to set summary info\n" ); - res = libmsi_summary_info_set_property(suminfo,7, VT_LPSTR, 0,NULL, + res = libmsi_summary_info_set_property(suminfo,7, LIBMSI_PROPERTY_TYPE_STRING, 0,NULL, ";1033,2057"); ok( res == LIBMSI_RESULT_SUCCESS , "Failed to set summary info\n" ); - res = libmsi_summary_info_set_property(suminfo,9, VT_LPSTR, 0,NULL, + res = libmsi_summary_info_set_property(suminfo,9, LIBMSI_PROPERTY_TYPE_STRING, 0,NULL, "{913B8D18-FBB6-4CAC-A239-C74C11E3FA74}"); ok( res == LIBMSI_RESULT_SUCCESS , "Failed to set summary info\n" ); - res = libmsi_summary_info_set_property(suminfo, 14, VT_I4, 100, NULL, NULL); + res = libmsi_summary_info_set_property(suminfo, 14, LIBMSI_PROPERTY_TYPE_INT, 100, NULL, NULL); ok( res == LIBMSI_RESULT_SUCCESS , "Failed to set summary info\n" ); - res = libmsi_summary_info_set_property(suminfo, 15, VT_I4, 0, NULL, NULL); + res = libmsi_summary_info_set_property(suminfo, 15, LIBMSI_PROPERTY_TYPE_INT, 0, NULL, NULL); ok( res == LIBMSI_RESULT_SUCCESS , "Failed to set summary info\n" ); res = libmsi_summary_info_persist(suminfo); diff --git a/tests/testdatabase.ok b/tests/testdatabase.ok index 37561f8..aaa453b 100644 --- a/tests/testdatabase.ok +++ b/tests/testdatabase.ok @@ -2761,45 +2761,45 @@ ok: r == LIBMSI_RESULT_SUCCESS ok: r == LIBMSI_RESULT_SUCCESS
ok: count == 14
ok: r == LIBMSI_RESULT_SUCCESS
-ok: type == VT_I2
+ok: type == LIBMSI_PROPERTY_TYPE_INT
ok: int_value == 1252
ok: r == LIBMSI_RESULT_SUCCESS
-ok: type == VT_LPSTR
+ok: type == LIBMSI_PROPERTY_TYPE_STRING
ok: size == 18
ok: !strcmp(str_value, "Installer Database")
ok: r == LIBMSI_RESULT_SUCCESS
-ok: type == VT_LPSTR
+ok: type == LIBMSI_PROPERTY_TYPE_STRING
ok: !strcmp(str_value, "Installer description")
ok: r == LIBMSI_RESULT_SUCCESS
-ok: type == VT_LPSTR
+ok: type == LIBMSI_PROPERTY_TYPE_STRING
ok: !strcmp(str_value, "WineHQ")
ok: r == LIBMSI_RESULT_SUCCESS
-ok: type == VT_LPSTR
+ok: type == LIBMSI_PROPERTY_TYPE_STRING
ok: !strcmp(str_value, "Installer")
ok: r == LIBMSI_RESULT_SUCCESS
-ok: type == VT_LPSTR
+ok: type == LIBMSI_PROPERTY_TYPE_STRING
ok: !strcmp(str_value, "Installer comments")
ok: r == LIBMSI_RESULT_SUCCESS
-ok: type == VT_LPSTR
+ok: type == LIBMSI_PROPERTY_TYPE_STRING
ok: !strcmp(str_value, "Intel;1033,2057")
ok: r == LIBMSI_RESULT_SUCCESS
-ok: type == VT_LPSTR
+ok: type == LIBMSI_PROPERTY_TYPE_STRING
ok: !strcmp(str_value, "{12345678-1234-1234-1234-123456789012}")
ok: r == LIBMSI_RESULT_SUCCESS
-ok: type == VT_FILETIME
+ok: type == LIBMSI_PROPERTY_TYPE_FILETIME
ok: r == LIBMSI_RESULT_SUCCESS
-ok: type == VT_FILETIME
+ok: type == LIBMSI_PROPERTY_TYPE_FILETIME
ok: r == LIBMSI_RESULT_SUCCESS
-ok: type == VT_I4
+ok: type == LIBMSI_PROPERTY_TYPE_INT
ok: int_value == 200
ok: r == LIBMSI_RESULT_SUCCESS
-ok: type == VT_I4
+ok: type == LIBMSI_PROPERTY_TYPE_INT
ok: int_value == 2
ok: r == LIBMSI_RESULT_SUCCESS
-ok: type == VT_I4
+ok: type == LIBMSI_PROPERTY_TYPE_INT
ok: int_value == 2
ok: r == LIBMSI_RESULT_SUCCESS
-ok: type == VT_LPSTR
+ok: type == LIBMSI_PROPERTY_TYPE_STRING
ok: !strcmp(str_value, "Vim")
ok: res == LIBMSI_RESULT_SUCCESS
ok: res == LIBMSI_RESULT_SUCCESS
diff --git a/tests/testsuminfo.c b/tests/testsuminfo.c index a561300..4a7b060 100644 --- a/tests/testsuminfo.c +++ b/tests/testsuminfo.c @@ -98,18 +98,18 @@ static void test_suminfo(void) ok(r == LIBMSI_RESULT_SUCCESS, "getpropcount failed\n"); ok(buf[0]=='x', "cleared buffer\n"); ok(sz == 0x10, "count wasn't zero\n"); - ok(type == VT_EMPTY, "should be empty\n"); + ok(type == LIBMSI_PROPERTY_TYPE_EMPTY, "should be empty\n"); - r = libmsi_summary_info_set_property(hsuminfo, MSI_PID_TITLE, VT_LPSTR, 0, NULL, "Mike"); + r = libmsi_summary_info_set_property(hsuminfo, MSI_PID_TITLE, LIBMSI_PROPERTY_TYPE_STRING, 0, NULL, "Mike"); ok(r == LIBMSI_RESULT_FUNCTION_FAILED, "libmsi_summary_info_set_property wrong error\n"); - r = libmsi_summary_info_set_property(hsuminfo, MSI_PID_TITLE, VT_LPSTR, 1, NULL, "JungAh"); + r = libmsi_summary_info_set_property(hsuminfo, MSI_PID_TITLE, LIBMSI_PROPERTY_TYPE_STRING, 1, NULL, "JungAh"); ok(r == LIBMSI_RESULT_FUNCTION_FAILED, "libmsi_summary_info_set_property wrong error\n"); - r = libmsi_summary_info_set_property(hsuminfo, MSI_PID_TITLE, VT_LPSTR, 1, &ft, "Mike"); + r = libmsi_summary_info_set_property(hsuminfo, MSI_PID_TITLE, LIBMSI_PROPERTY_TYPE_STRING, 1, &ft, "Mike"); ok(r == LIBMSI_RESULT_FUNCTION_FAILED, "libmsi_summary_info_set_property wrong error\n"); - r = libmsi_summary_info_set_property(hsuminfo, MSI_PID_CODEPAGE, VT_I2, 1, &ft, "JungAh"); + r = libmsi_summary_info_set_property(hsuminfo, MSI_PID_CODEPAGE, LIBMSI_PROPERTY_TYPE_INT, 1, &ft, "JungAh"); ok(r == LIBMSI_RESULT_FUNCTION_FAILED, "libmsi_summary_info_set_property wrong error\n"); r = libmsi_unref(hsuminfo); @@ -119,43 +119,43 @@ static void test_suminfo(void) r = libmsi_database_get_summary_info(hdb, 1, &hsuminfo); ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_database_get_summary_info failed\n"); - r = libmsi_summary_info_set_property(hsuminfo, 0, VT_LPSTR, 1, NULL, NULL); + r = libmsi_summary_info_set_property(hsuminfo, 0, LIBMSI_PROPERTY_TYPE_STRING, 1, NULL, NULL); ok(r == LIBMSI_RESULT_DATATYPE_MISMATCH, "libmsi_summary_info_set_property wrong error\n"); - r = libmsi_summary_info_set_property(hsuminfo, MSI_PID_CODEPAGE, VT_LPSTR, 1, NULL, NULL); + r = libmsi_summary_info_set_property(hsuminfo, MSI_PID_CODEPAGE, LIBMSI_PROPERTY_TYPE_STRING, 1, NULL, NULL); ok(r == LIBMSI_RESULT_DATATYPE_MISMATCH, "libmsi_summary_info_set_property wrong error\n"); - r = libmsi_summary_info_set_property(hsuminfo, MSI_PID_TITLE, VT_I4, 0, NULL, "Mike"); + r = libmsi_summary_info_set_property(hsuminfo, MSI_PID_TITLE, LIBMSI_PROPERTY_TYPE_INT, 0, NULL, "Mike"); ok(r == LIBMSI_RESULT_DATATYPE_MISMATCH, "libmsi_summary_info_set_property wrong error\n"); - r = libmsi_summary_info_set_property(hsuminfo, MSI_PID_AUTHOR, VT_I4, 0, NULL, "JungAh"); + r = libmsi_summary_info_set_property(hsuminfo, MSI_PID_AUTHOR, LIBMSI_PROPERTY_TYPE_INT, 0, NULL, "JungAh"); ok(r == LIBMSI_RESULT_DATATYPE_MISMATCH, "libmsi_summary_info_set_property wrong error\n"); - r = libmsi_summary_info_set_property(hsuminfo, MSI_PID_KEYWORDS, VT_I2, 0, NULL, "Mike"); + r = libmsi_summary_info_set_property(hsuminfo, MSI_PID_KEYWORDS, LIBMSI_PROPERTY_TYPE_INT, 0, NULL, "Mike"); ok(r == LIBMSI_RESULT_DATATYPE_MISMATCH, "libmsi_summary_info_set_property wrong error\n"); - r = libmsi_summary_info_set_property(hsuminfo, MSI_PID_COMMENTS, VT_FILETIME, 0, NULL, "JungAh"); + r = libmsi_summary_info_set_property(hsuminfo, MSI_PID_COMMENTS, LIBMSI_PROPERTY_TYPE_FILETIME, 0, NULL, "JungAh"); ok(r == LIBMSI_RESULT_DATATYPE_MISMATCH, "libmsi_summary_info_set_property wrong error\n"); - r = libmsi_summary_info_set_property(hsuminfo, MSI_PID_TEMPLATE, VT_I2, 0, NULL, "Mike"); + r = libmsi_summary_info_set_property(hsuminfo, MSI_PID_TEMPLATE, LIBMSI_PROPERTY_TYPE_INT, 0, NULL, "Mike"); ok(r == LIBMSI_RESULT_DATATYPE_MISMATCH, "libmsi_summary_info_set_property wrong error\n"); - r = libmsi_summary_info_set_property(hsuminfo, MSI_PID_LASTAUTHOR, VT_LPSTR, 0, NULL, NULL); + r = libmsi_summary_info_set_property(hsuminfo, MSI_PID_LASTAUTHOR, LIBMSI_PROPERTY_TYPE_STRING, 0, NULL, NULL); ok(r == LIBMSI_RESULT_INVALID_PARAMETER, "libmsi_summary_info_set_property wrong error\n"); - r = libmsi_summary_info_set_property(hsuminfo, MSI_PID_LASTSAVE_DTM, VT_FILETIME, 0, NULL, NULL); + r = libmsi_summary_info_set_property(hsuminfo, MSI_PID_LASTSAVE_DTM, LIBMSI_PROPERTY_TYPE_FILETIME, 0, NULL, NULL); ok(r == LIBMSI_RESULT_INVALID_PARAMETER, "libmsi_summary_info_set_property wrong error\n"); r = libmsi_summary_info_set_property(hsuminfo, MSI_PID_LASTAUTHOR, VT_LPWSTR, 0, NULL, "h\0i\0\0"); ok(r == LIBMSI_RESULT_DATATYPE_MISMATCH, "libmsi_summary_info_set_property wrong error\n"); - r = libmsi_summary_info_set_property(hsuminfo, MSI_PID_REVNUMBER, VT_I4, 0, NULL, "Jungah"); + r = libmsi_summary_info_set_property(hsuminfo, MSI_PID_REVNUMBER, LIBMSI_PROPERTY_TYPE_INT, 0, NULL, "Jungah"); ok(r == LIBMSI_RESULT_DATATYPE_MISMATCH, "libmsi_summary_info_set_property wrong error\n"); - r = libmsi_summary_info_set_property(hsuminfo, MSI_PID_PAGECOUNT, VT_LPSTR, 1, NULL, NULL); + r = libmsi_summary_info_set_property(hsuminfo, MSI_PID_PAGECOUNT, LIBMSI_PROPERTY_TYPE_STRING, 1, NULL, NULL); ok(r == LIBMSI_RESULT_DATATYPE_MISMATCH, "libmsi_summary_info_set_property wrong error\n"); - r = libmsi_summary_info_set_property(hsuminfo, MSI_PID_TITLE, VT_LPSTR, 0, NULL, "Mike"); + r = libmsi_summary_info_set_property(hsuminfo, MSI_PID_TITLE, LIBMSI_PROPERTY_TYPE_STRING, 0, NULL, "Mike"); ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_summary_info_set_property failed\n"); sz = 2; @@ -163,7 +163,7 @@ static void test_suminfo(void) r = libmsi_summary_info_get_property(hsuminfo, MSI_PID_TITLE, &type, NULL, NULL, buf, &sz ); ok(r == LIBMSI_RESULT_MORE_DATA, "libmsi_summary_info_set_property failed\n"); ok(sz == 4, "count was wrong\n"); - ok(type == VT_LPSTR, "type was wrong\n"); + ok(type == LIBMSI_PROPERTY_TYPE_STRING, "type was wrong\n"); ok(!strcmp(buf,"M"), "buffer was wrong\n"); sz = 4; @@ -171,13 +171,13 @@ static void test_suminfo(void) r = libmsi_summary_info_get_property(hsuminfo, MSI_PID_TITLE, &type, NULL, NULL, buf, &sz ); ok(r == LIBMSI_RESULT_MORE_DATA, "libmsi_summary_info_set_property failed\n"); ok(sz == 4, "count was wrong\n"); - ok(type == VT_LPSTR, "type was wrong\n"); + ok(type == LIBMSI_PROPERTY_TYPE_STRING, "type was wrong\n"); ok(!strcmp(buf,"Mik"), "buffer was wrong\n"); - r = libmsi_summary_info_set_property(hsuminfo, MSI_PID_TITLE, VT_LPSTR, 0, NULL, "JungAh"); + r = libmsi_summary_info_set_property(hsuminfo, MSI_PID_TITLE, LIBMSI_PROPERTY_TYPE_STRING, 0, NULL, "JungAh"); ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_summary_info_set_property failed\n"); - r = libmsi_summary_info_set_property(hsuminfo, MSI_PID_CODEPAGE, VT_I2, 1, &ft, "Mike"); + r = libmsi_summary_info_set_property(hsuminfo, MSI_PID_CODEPAGE, LIBMSI_PROPERTY_TYPE_INT, 1, &ft, "Mike"); ok(r == LIBMSI_RESULT_FUNCTION_FAILED, "libmsi_summary_info_set_property wrong error\n"); r = libmsi_unref(hsuminfo); @@ -187,19 +187,19 @@ static void test_suminfo(void) r = libmsi_database_get_summary_info(hdb, 10, &hsuminfo); ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_database_get_summary_info failed\n"); - r = libmsi_summary_info_set_property(hsuminfo, MSI_PID_TITLE, VT_LPSTR, 0, NULL, "JungAh"); + r = libmsi_summary_info_set_property(hsuminfo, MSI_PID_TITLE, LIBMSI_PROPERTY_TYPE_STRING, 0, NULL, "JungAh"); ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_summary_info_set_property failed\n"); - r = libmsi_summary_info_set_property(hsuminfo, MSI_PID_CODEPAGE, VT_LPSTR, 1, NULL, NULL); + r = libmsi_summary_info_set_property(hsuminfo, MSI_PID_CODEPAGE, LIBMSI_PROPERTY_TYPE_STRING, 1, NULL, NULL); ok(r == LIBMSI_RESULT_DATATYPE_MISMATCH, "libmsi_summary_info_set_property wrong error\n"); - r = libmsi_summary_info_set_property(hsuminfo, MSI_PID_CODEPAGE, VT_I2, 1, NULL, NULL); + r = libmsi_summary_info_set_property(hsuminfo, MSI_PID_CODEPAGE, LIBMSI_PROPERTY_TYPE_INT, 1, NULL, NULL); ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_summary_info_set_property wrong error\n"); - r = libmsi_summary_info_set_property(hsuminfo, MSI_PID_CODEPAGE, VT_I2, 1, &ft, "Mike"); + r = libmsi_summary_info_set_property(hsuminfo, MSI_PID_CODEPAGE, LIBMSI_PROPERTY_TYPE_INT, 1, &ft, "Mike"); ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_summary_info_set_property wrong error\n"); - r = libmsi_summary_info_set_property(hsuminfo, MSI_PID_AUTHOR, VT_LPSTR, 1, &ft, "Mike"); + r = libmsi_summary_info_set_property(hsuminfo, MSI_PID_AUTHOR, LIBMSI_PROPERTY_TYPE_STRING, 1, &ft, "Mike"); ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_summary_info_set_property wrong error\n"); r = libmsi_summary_info_persist(hsuminfo); @@ -220,7 +220,7 @@ static void test_suminfo(void) r = libmsi_database_get_summary_info(hdb, 1, &hsuminfo); ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_database_get_summary_info failed\n"); - r = libmsi_summary_info_set_property(hsuminfo, MSI_PID_AUTHOR, VT_LPSTR, 1, &ft, "Mike"); + r = libmsi_summary_info_set_property(hsuminfo, MSI_PID_AUTHOR, LIBMSI_PROPERTY_TYPE_STRING, 1, &ft, "Mike"); ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_summary_info_set_property wrong error\n"); r = libmsi_summary_info_persist(hsuminfo); @@ -239,7 +239,7 @@ static void test_suminfo(void) r = libmsi_database_get_summary_info(hdb, 0, &hsuminfo); ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_database_get_summary_info failed %u\n", r); - r = libmsi_summary_info_set_property(hsuminfo, MSI_PID_AUTHOR, VT_LPSTR, 1, &ft, "Mike"); + r = libmsi_summary_info_set_property(hsuminfo, MSI_PID_AUTHOR, LIBMSI_PROPERTY_TYPE_STRING, 1, &ft, "Mike"); todo_wine ok(r == LIBMSI_RESULT_FUNCTION_FAILED, "libmsi_summary_info_set_property wrong error, %u\n", r); r = libmsi_summary_info_persist(hsuminfo); @@ -317,43 +317,43 @@ static void test_create_database_binary(void) propspec[0].ulKind = PRSPEC_PROPID; propspec[0].propid = MSI_PID_TITLE; - propvar[0].vt = VT_LPSTR; + propvar[0].vt = LIBMSI_PROPERTY_TYPE_STRING; propvar[0].pszVal = LOSE_CONST("test title"); propspec[1].ulKind = PRSPEC_PROPID; propspec[1].propid = MSI_PID_SUBJECT; - propvar[1].vt = VT_LPSTR; + propvar[1].vt = LIBMSI_PROPERTY_TYPE_STRING; propvar[1].pszVal = LOSE_CONST("msi suminfo / property storage test"); propspec[2].ulKind = PRSPEC_PROPID; propspec[2].propid = MSI_PID_AUTHOR; - propvar[2].vt = VT_LPSTR; + propvar[2].vt = LIBMSI_PROPERTY_TYPE_STRING; propvar[2].pszVal = LOSE_CONST("mike_m"); propspec[3].ulKind = PRSPEC_PROPID; propspec[3].propid = MSI_PID_TEMPLATE; - propvar[3].vt = VT_LPSTR; + propvar[3].vt = LIBMSI_PROPERTY_TYPE_STRING; propvar[3].pszVal = LOSE_CONST(";1033"); /* actually the string table's codepage */ propspec[4].ulKind = PRSPEC_PROPID; propspec[4].propid = MSI_PID_REVNUMBER; - propvar[4].vt = VT_LPSTR; + propvar[4].vt = LIBMSI_PROPERTY_TYPE_STRING; propvar[4].pszVal = LOSE_CONST("{913B8D18-FBB6-4CAC-A239-C74C11E3FA74}"); propspec[5].ulKind = PRSPEC_PROPID; propspec[5].propid = MSI_PID_PAGECOUNT; - propvar[5].vt = VT_I4; + propvar[5].vt = LIBMSI_PROPERTY_TYPE_INT; propvar[5].lVal = 100; propspec[6].ulKind = PRSPEC_PROPID; propspec[6].propid = MSI_PID_WORDCOUNT; - propvar[6].vt = VT_I4; + propvar[6].vt = LIBMSI_PROPERTY_TYPE_INT; propvar[6].lVal = 0; /* MSDN says that MSI_PID_LASTPRINTED should be a VT_FILETIME... */ propspec[7].ulKind = PRSPEC_PROPID; propspec[7].propid = MSI_PID_LASTPRINTED; - propvar[7].vt = VT_LPSTR; + propvar[7].vt = LIBMSI_PROPERTY_TYPE_STRING; propvar[7].pszVal = LOSE_CONST("7/1/1999 5:17"); r = IPropertyStorage_WriteMultiple( ps, 8, propspec, propvar, MSI_PID_FIRST_USABLE ); @@ -404,7 +404,7 @@ static void test_summary_binary(void) ok(!strcmp(sval, "") || !strcmp(sval, "7"), "Expected empty string or \"7\", got \"%s\"\n", sval); todo_wine { - ok(type == VT_LPSTR, "Expected VT_LPSTR, got %d\n", type); + ok(type == LIBMSI_PROPERTY_TYPE_STRING, "Expected VT_LPSTR, got %d\n", type); ok(sz == 0 || sz == 1, "Expected 0 or 1, got %d\n", sz); } @@ -419,7 +419,7 @@ static void test_summary_binary(void) ok(r == LIBMSI_RESULT_SUCCESS, "getpropcount failed\n"); todo_wine ok(count == 10, "prop count incorrect\n"); - r = libmsi_summary_info_set_property( hsuminfo, MSI_PID_TITLE, VT_LPSTR, 0, NULL, "Mike" ); + r = libmsi_summary_info_set_property( hsuminfo, MSI_PID_TITLE, LIBMSI_PROPERTY_TYPE_STRING, 0, NULL, "Mike" ); ok(r == LIBMSI_RESULT_FUNCTION_FAILED, "libmsi_summary_info_set_property failed %u\n", r); r = libmsi_summary_info_persist( hsuminfo ); diff --git a/tests/testsuminfo.ok b/tests/testsuminfo.ok index 37ef4e8..7ba7199 100644 --- a/tests/testsuminfo.ok +++ b/tests/testsuminfo.ok @@ -18,7 +18,7 @@ ok: val == 1234 ok: r == LIBMSI_RESULT_SUCCESS
ok: buf[0]=='x'
ok: sz == 0x10
-ok: type == VT_EMPTY
+ok: type == LIBMSI_PROPERTY_TYPE_EMPTY
ok: r == LIBMSI_RESULT_FUNCTION_FAILED
ok: r == LIBMSI_RESULT_FUNCTION_FAILED
ok: r == LIBMSI_RESULT_FUNCTION_FAILED
@@ -40,11 +40,11 @@ ok: r == LIBMSI_RESULT_DATATYPE_MISMATCH ok: r == LIBMSI_RESULT_SUCCESS
ok: r == LIBMSI_RESULT_MORE_DATA
ok: sz == 4
-ok: type == VT_LPSTR
+ok: type == LIBMSI_PROPERTY_TYPE_STRING
ok: !strcmp(buf,"M")
ok: r == LIBMSI_RESULT_MORE_DATA
ok: sz == 4
-ok: type == VT_LPSTR
+ok: type == LIBMSI_PROPERTY_TYPE_STRING
ok: !strcmp(buf,"Mik")
ok: r == LIBMSI_RESULT_SUCCESS
ok: r == LIBMSI_RESULT_FUNCTION_FAILED
|