summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/libmsi-record.h2
-rw-r--r--libmsi/libmsi-database.c54
-rw-r--r--libmsi/libmsi-record.c55
-rw-r--r--tests/test.h17
-rw-r--r--tests/testdatabase.c1198
-rw-r--r--tests/testrecord.c156
-rw-r--r--tools/msiinfo.c65
7 files changed, 382 insertions, 1165 deletions
diff --git a/include/libmsi-record.h b/include/libmsi-record.h
index d47727c..13a766e 100644
--- a/include/libmsi-record.h
+++ b/include/libmsi-record.h
@@ -45,7 +45,7 @@ LibmsiRecord * libmsi_record_new (guint count);
LibmsiResult libmsi_record_clear (LibmsiRecord *);
LibmsiResult libmsi_record_set_int (LibmsiRecord *,unsigned,int);
LibmsiResult libmsi_record_set_string (LibmsiRecord *,unsigned,const char *);
-LibmsiResult libmsi_record_get_string (const LibmsiRecord *,unsigned,char *,unsigned *);
+gchar * libmsi_record_get_string (const LibmsiRecord *,unsigned);
unsigned libmsi_record_get_field_count (const LibmsiRecord *);
int libmsi_record_get_int (const LibmsiRecord *,unsigned);
gboolean libmsi_record_is_null (const LibmsiRecord *,unsigned);
diff --git a/libmsi/libmsi-database.c b/libmsi/libmsi-database.c
index 1f9edbc..dfdde15 100644
--- a/libmsi/libmsi-database.c
+++ b/libmsi/libmsi-database.c
@@ -1336,50 +1336,30 @@ LibmsiResult libmsi_database_import(LibmsiDatabase *db, const char *szFolder, co
static unsigned msi_export_record( int fd, LibmsiRecord *row, unsigned start )
{
- unsigned i, count, len, r = LIBMSI_RESULT_SUCCESS;
- const char *sep;
- char *buffer;
- unsigned sz;
+ unsigned i, count;
- len = 0x100;
- buffer = msi_alloc( len );
- if ( !buffer )
- return LIBMSI_RESULT_OUTOFMEMORY;
+ count = libmsi_record_get_field_count (row);
+ for (i = start; i <= count; i++) {
+ char *str;
- count = libmsi_record_get_field_count( row );
- for ( i=start; i<=count; i++ )
- {
- sz = len;
- r = libmsi_record_get_string( row, i, buffer, &sz );
- if (r == LIBMSI_RESULT_MORE_DATA)
- {
- char *p = msi_realloc( buffer, sz + 1 );
- if (!p)
- break;
- len = sz + 1;
- buffer = p;
- }
- sz = len;
- r = libmsi_record_get_string( row, i, buffer, &sz );
- if (r != LIBMSI_RESULT_SUCCESS)
- break;
+ str = libmsi_record_get_string (row, i);
+ if (!str)
+ return LIBMSI_RESULT_FUNCTION_FAILED;
/* TODO full_write */
- if (write( fd, buffer, sz ) != sz)
- {
- r = LIBMSI_RESULT_FUNCTION_FAILED;
- break;
+ if (write (fd, str, strlen (str)) != strlen (str)) {
+ g_free (str);
+ return LIBMSI_RESULT_FUNCTION_FAILED;
}
- sep = (i < count) ? "\t" : "\r\n";
- if (write( fd, sep, strlen(sep) ) != strlen(sep))
- {
- r = LIBMSI_RESULT_FUNCTION_FAILED;
- break;
- }
+ g_free (str);
+
+ const char *sep = (i < count) ? "\t" : "\r\n";
+ if (write (fd, sep, strlen (sep)) != strlen (sep))
+ return LIBMSI_RESULT_FUNCTION_FAILED;
}
- msi_free( buffer );
- return r;
+
+ return LIBMSI_RESULT_SUCCESS;
}
static unsigned msi_export_row( LibmsiRecord *row, void *arg )
diff --git a/libmsi/libmsi-record.c b/libmsi/libmsi-record.c
index 4d06a8a..e436777 100644
--- a/libmsi/libmsi-record.c
+++ b/libmsi/libmsi-record.c
@@ -305,60 +305,25 @@ gboolean libmsi_record_is_null( const LibmsiRecord *rec, unsigned iField )
return r;
}
-LibmsiResult libmsi_record_get_string(const LibmsiRecord *rec, unsigned iField,
- char *szValue, unsigned *pcchValue)
+gchar* libmsi_record_get_string(const LibmsiRecord *self, unsigned field)
{
- unsigned len=0, ret;
- char buffer[16];
+ g_return_val_if_fail (LIBMSI_IS_RECORD (self), NULL);
- TRACE("%p %d %p %p\n", rec, iField, szValue, pcchValue);
+ TRACE ("%p %d\n", self, field);
- if( !rec )
- return LIBMSI_RESULT_INVALID_HANDLE;
+ if (field > self->count)
+ return g_strdup (""); // FIXME: really?
- if( iField > rec->count )
- {
- if ( szValue && *pcchValue > 0 )
- szValue[0] = 0;
-
- *pcchValue = 0;
- return LIBMSI_RESULT_SUCCESS;
- }
-
- ret = LIBMSI_RESULT_SUCCESS;
- switch( rec->fields[iField].type )
- {
+ switch (self->fields[field].type) {
case LIBMSI_FIELD_TYPE_INT:
- wsprintfA(buffer, "%d", rec->fields[iField].u.iVal);
- len = strlen( buffer );
- if (szValue)
- strcpynA(szValue, buffer, *pcchValue);
- break;
+ return g_strdup_printf ("%d", self->fields[field].u.iVal);
case LIBMSI_FIELD_TYPE_WSTR:
- len = WideCharToMultiByte( CP_ACP, 0, rec->fields[iField].u.szwVal, -1,
- NULL, 0 , NULL, NULL);
- if (szValue)
- WideCharToMultiByte( CP_ACP, 0, rec->fields[iField].u.szwVal, -1,
- szValue, *pcchValue, NULL, NULL);
- if( szValue && *pcchValue && len>*pcchValue )
- szValue[*pcchValue-1] = 0;
- if( len )
- len--;
- break;
+ return strdupWtoA (self->fields[field].u.szwVal);
case LIBMSI_FIELD_TYPE_NULL:
- if( szValue && *pcchValue > 0 )
- szValue[0] = 0;
- break;
- default:
- ret = LIBMSI_RESULT_INVALID_PARAMETER;
- break;
+ return g_strdup ("");
}
- if( szValue && *pcchValue <= len )
- ret = LIBMSI_RESULT_MORE_DATA;
- *pcchValue = len;
-
- return ret;
+ return NULL;
}
const WCHAR *_libmsi_record_get_string_raw( const LibmsiRecord *rec, unsigned iField )
diff --git a/tests/test.h b/tests/test.h
index 3bfd902..4377c57 100644
--- a/tests/test.h
+++ b/tests/test.h
@@ -1,3 +1,4 @@
+#include <glib.h>
#include <stdarg.h>
#include <stdbool.h>
@@ -17,3 +18,19 @@ static inline void _ok(bool cond, const char *cond_str, const char *str, ...)
}
va_end(ap);
}
+
+static inline void check_record_string(LibmsiRecord *rec, unsigned field, const gchar *val)
+{
+ gchar *str;
+
+ str = libmsi_record_get_string (rec, field);
+ if (val == NULL) {
+ ok (!str, "Should return null\n");
+ } else {
+ ok (str, "expected string", str);
+ if (str)
+ ok (g_str_equal (str, val), "got %s != %s expected\n", str, val);
+ }
+
+ g_free (str);
+}
diff --git a/tests/testdatabase.c b/tests/testdatabase.c
index 06e9d07..2a85b02 100644
--- a/tests/testdatabase.c
+++ b/tests/testdatabase.c
@@ -282,6 +282,7 @@ static void test_msiinsert(void)
LibmsiQuery *hquery = 0;
LibmsiQuery *hquery2 = 0;
LibmsiRecord *hrec = 0;
+ gchar *str;
unsigned r;
const char *sql;
char buf[80];
@@ -349,14 +350,9 @@ static void test_msiinsert(void)
r = libmsi_record_get_int(hrec, 1);
ok(r == 1, "field 1 contents wrong\n");
- sz = sizeof buf;
- r = libmsi_record_get_string(hrec, 2, buf, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "field 2 content fetch failed\n");
- ok(!strcmp(buf,"Abe"), "field 2 content incorrect\n");
- sz = sizeof buf;
- r = libmsi_record_get_string(hrec, 3, buf, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "field 3 content fetch failed\n");
- ok(!strcmp(buf,"8675309"), "field 3 content incorrect\n");
+
+ check_record_string (hrec, 2, "Abe");
+ check_record_string (hrec, 3, "8675309");
g_object_unref(hrec);
@@ -729,20 +725,16 @@ static void test_getcolinfo(void)
rec = 0;
r = libmsi_query_get_column_info( hquery, LIBMSI_COL_INFO_NAMES, &rec );
ok( r == LIBMSI_RESULT_SUCCESS, "failed to get names\n");
- sz = sizeof buffer;
- r = libmsi_record_get_string(rec, 1, buffer, &sz );
- ok( r == LIBMSI_RESULT_SUCCESS, "failed to get string\n");
- ok( !strcmp(buffer,"Name"), "_Tables has wrong column name\n");
+
+ check_record_string (rec, 1, "Name");
g_object_unref( rec );
/* check that TYPES works */
rec = 0;
r = libmsi_query_get_column_info( hquery, LIBMSI_COL_INFO_TYPES, &rec );
ok( r == LIBMSI_RESULT_SUCCESS, "failed to get names\n");
- sz = sizeof buffer;
- r = libmsi_record_get_string(rec, 1, buffer, &sz );
- ok( r == LIBMSI_RESULT_SUCCESS, "failed to get string\n");
- ok( !strcmp(buffer,"s64"), "_Tables has wrong column type\n");
+
+ check_record_string (rec, 1, "s64");
g_object_unref( rec );
/* check that invalid values fail */
@@ -817,13 +809,14 @@ static unsigned get_columns_table_type(LibmsiDatabase *hdb, const char *table, u
static bool check_record( LibmsiRecord *rec, unsigned field, const char *val )
{
- char buffer[0x20];
- unsigned r;
- unsigned sz;
+ bool result;
+ gchar *str;
- sz = sizeof buffer;
- r = libmsi_record_get_string( rec, field, buffer, &sz );
- return (r == LIBMSI_RESULT_SUCCESS ) && !strcmp(val, buffer);
+ str = libmsi_record_get_string(rec, field);
+ result = g_strcmp0(val, str) == 0;
+ g_free(str);
+
+ return result;
}
static void test_querygetcolumninfo(void)
@@ -1002,13 +995,13 @@ static void test_msiexport(void)
ok(0, "failed to open file %s\n", file);
ok( length == strlen(expected), "length of data wrong\n");
- ok( !strcmp(buffer, expected), "data doesn't match\n");
+ ok( g_str_equal(buffer, expected), "data doesn't match\n");
unlink(msifile);
}
static void test_longstrings(void)
{
- const char insert_query[] =
+ const char insert_query[] =
"INSERT INTO `strings` ( `id`, `val` ) VALUES('1', 'Z')";
char *str;
LibmsiDatabase *hdb = 0;
@@ -1024,7 +1017,7 @@ static void test_longstrings(void)
ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_database_open failed\n");
/* create a table */
- r = try_query( hdb,
+ r = try_query( hdb,
"CREATE TABLE `strings` ( `id` INT, `val` CHAR(0) PRIMARY KEY `id`)");
ok(r == LIBMSI_RESULT_SUCCESS, "query failed\n");
@@ -1037,8 +1030,6 @@ static void test_longstrings(void)
r = try_query( hdb, str );
ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_database_open_query failed\n");
- free(str);
-
r = libmsi_database_commit(hdb);
ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_database_commit failed\n");
g_object_unref(hdb);
@@ -1058,10 +1049,10 @@ static void test_longstrings(void)
libmsi_query_close(hquery);
g_object_unref(hquery);
- r = libmsi_record_get_string(hrec, 2, NULL, &len);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_fetch failed\n");
- ok(len == STRING_LENGTH, "string length wrong\n");
+ str[len+STRING_LENGTH] = '\0';
+ check_record_string (hrec, 2, str+len);
+ g_free(str);
g_object_unref(hrec);
g_object_unref(hdb);
unlink(msifile);
@@ -1084,7 +1075,7 @@ static void create_file_data(const char *name, const char *data, unsigned size)
}
#define create_file(name) create_file_data(name, name, 0)
-
+
static void test_streamtable(void)
{
LibmsiDatabase *hdb = 0;
@@ -1234,16 +1225,13 @@ static void test_streamtable(void)
r = libmsi_query_fetch( query, &rec );
ok( r == LIBMSI_RESULT_SUCCESS, "Failed to fetch record: %d\n", r);
- size = sizeof(file);
- r = libmsi_record_get_string( rec, 1, file, &size );
- ok( r == LIBMSI_RESULT_SUCCESS, "Failed to get string: %d\n", r);
- ok( !strcmp(file, "data"), "Expected 'data', got %s\n", file);
+ check_record_string (rec, 1, "data");
size = sizeof(buf);
memset(buf, 0, sizeof(buf));
r = libmsi_record_save_stream( rec, 2, buf, &size );
ok( r == LIBMSI_RESULT_SUCCESS, "Failed to get stream: %d\n", r);
- ok( !strcmp(buf, "test.txt\n"), "Expected 'test.txt\\n', got %s\n", buf);
+ ok( g_str_equal(buf, "test.txt\n"), "Expected 'test.txt\\n', got %s\n", buf);
g_object_unref( rec );
libmsi_query_close( query );
@@ -1260,16 +1248,13 @@ static void test_streamtable(void)
r = libmsi_query_fetch( query, &rec );
ok( r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- size = sizeof(file);
- r = libmsi_record_get_string( rec, 1, file, &size );
- ok( r == LIBMSI_RESULT_SUCCESS, "Failed to get string: %d\n", r);
- ok( !strcmp(file, "data1"), "Expected 'data1', got %s\n", file);
+ check_record_string (rec, 1, "data1");
size = sizeof(buf);
memset(buf, 0, sizeof(buf));
r = libmsi_record_save_stream( rec, 2, buf, &size );
ok( r == LIBMSI_RESULT_SUCCESS, "Failed to get stream: %d\n", r);
- ok( !strcmp(buf, "test1.txt\n"), "Expected 'test1.txt\\n', got %s\n", buf);
+ ok( g_str_equal(buf, "test1.txt\n"), "Expected 'test1.txt\\n', got %s\n", buf);
g_object_unref( rec );
libmsi_query_close( query );
@@ -1307,16 +1292,13 @@ static void test_streamtable(void)
r = libmsi_query_fetch( query, &rec );
ok( r == LIBMSI_RESULT_SUCCESS, "Failed to fetch record: %d\n", r);
- size = sizeof(file);
- r = libmsi_record_get_string( rec, 1, file, &size );
- ok( r == LIBMSI_RESULT_SUCCESS, "Failed to get string: %d\n", r);
- ok( !strcmp(file, "data1"), "Expected 'data1', got %s\n", file);
+ check_record_string (rec, 1, "data1");
size = sizeof(buf);
memset(buf, 0, sizeof(buf));
r = libmsi_record_save_stream( rec, 2, buf, &size );
ok( r == LIBMSI_RESULT_SUCCESS, "Failed to get stream: %d\n", r);
- todo_wine ok( !strcmp(buf, "test2.txt\n"), "Expected 'test2.txt\\n', got %s\n", buf);
+ todo_wine ok( g_str_equal(buf, "test2.txt\n"), "Expected 'test2.txt\\n', got %s\n", buf);
g_object_unref( rec );
libmsi_query_close( query );
@@ -1385,16 +1367,13 @@ static void test_binary(void)
r = do_query( hdb, sql, &rec );
ok( r == LIBMSI_RESULT_SUCCESS, "SELECT query failed: %d\n", r );
- size = sizeof(file);
- r = libmsi_record_get_string( rec, 1, file, &size );
- ok( r == LIBMSI_RESULT_SUCCESS, "Failed to get string: %d\n", r );
- ok( !strcmp(file, "Binary.filename1.1"), "Expected 'Binary.filename1.1', got %s\n", file );
+ check_record_string (rec, 1, "Binary.filename1.1");
size = sizeof(buf);
memset( buf, 0, sizeof(buf) );
r = libmsi_record_save_stream( rec, 2, buf, &size );
ok( r == LIBMSI_RESULT_SUCCESS, "Failed to get stream: %d\n", r );
- ok( !strcmp(buf, "test.txt\n"), "Expected 'test.txt\\n', got %s\n", buf );
+ ok( g_str_equal(buf, "test.txt\n"), "Expected 'test.txt\\n', got %s\n", buf );
g_object_unref( rec );
@@ -1403,16 +1382,13 @@ static void test_binary(void)
r = do_query( hdb, sql, &rec );
ok( r == LIBMSI_RESULT_SUCCESS, "SELECT query failed: %d\n", r );
- size = sizeof(file);
- r = libmsi_record_get_string( rec, 1, file, &size );
- ok( r == LIBMSI_RESULT_SUCCESS, "Failed to get string: %d\n", r );
- ok( !strcmp(file, "filename1"), "Expected 'filename1', got %s\n", file );
+ check_record_string (rec, 1, "filename1");
size = sizeof(buf);
memset( buf, 0, sizeof(buf) );
r = libmsi_record_save_stream( rec, 3, buf, &size );
ok( r == LIBMSI_RESULT_SUCCESS, "Failed to get stream: %d\n", r );
- ok( !strcmp(buf, "test.txt\n"), "Expected 'test.txt\\n', got %s\n", buf );
+ ok( g_str_equal(buf, "test.txt\n"), "Expected 'test.txt\\n', got %s\n", buf );
g_object_unref( rec );
@@ -1591,22 +1567,16 @@ static void test_where(void)
count = libmsi_record_get_field_count( rec );
ok( count == 1, "Expected 1 record fields, got %d\n", count );
- size = sizeof(buf);
- r = libmsi_record_get_string( rec, 1, buf, &size );
- ok( r == LIBMSI_RESULT_SUCCESS, "failed to get record string: %d\n", r );
- ok( !strcmp( buf, "2" ),
- "For (row %d, column 1) expected '%d', got %s\n", 0, 2, buf );
- g_object_unref( rec );
+ check_record_string(rec, 1, "2");
+ g_object_unref(rec);
+ rec = NULL;
r = libmsi_query_fetch(query, &rec);
ok( r == LIBMSI_RESULT_SUCCESS, "failed to fetch query: %d\n", r );
- size = sizeof(buf);
- r = libmsi_record_get_string( rec, 1, buf, &size );
- ok( r == LIBMSI_RESULT_SUCCESS, "failed to get record string: %d\n", r );
- ok( !strcmp( buf, "3" ),
- "For (row %d, column 1) expected '%d', got %s\n", 1, 3, buf );
- g_object_unref( rec );
+ check_record_string(rec, 1, "3");
+ g_object_unref(rec);
+ rec = NULL;
r = libmsi_query_fetch(query, &rec);
ok( r == LIBMSI_RESULT_NO_MORE_ITEMS, "expected no more items: %d\n", r );
@@ -2104,16 +2074,13 @@ static void test_binary_import(void)
r = do_query(hdb, sql, &rec);
ok(r == LIBMSI_RESULT_SUCCESS, "SELECT query failed: %d\n", r);
- size = sizeof(file);
- r = libmsi_record_get_string(rec, 1, file, &size);
- ok(r == LIBMSI_RESULT_SUCCESS, "Failed to get string: %d\n", r);
- ok(!strcmp(file, "filename1"), "Expected 'filename1', got %s\n", file);
+ check_record_string(rec, 1, "filename1");
size = sizeof(buf);
memset(buf, 0, size);
r = libmsi_record_save_stream(rec, 2, buf, &size);
ok(r == LIBMSI_RESULT_SUCCESS, "Failed to get stream: %d\n", r);
- ok(!strcmp(buf, "just some words"),
+ ok(g_str_equal(buf, "just some words"),
"Expected 'just some words', got %s\n", buf);
g_object_unref(rec);
@@ -2328,7 +2295,7 @@ static void test_handle_limit(void)
static char szQueryBuf[256] = "SELECT * from `_Tables`";
hqueries[i] = (void*)0xdeadbeeb;
r = libmsi_database_open_query(hdb, szQueryBuf, &hqueries[i]);
- if( r != LIBMSI_RESULT_SUCCESS || hqueries[i] == (void*)0xdeadbeeb ||
+ if( r != LIBMSI_RESULT_SUCCESS || hqueries[i] == (void*)0xdeadbeeb ||
hqueries[i] == 0 || (i && (hqueries[i] == hqueries[i-1])))
break;
}
@@ -2674,10 +2641,7 @@ static void test_try_transform(void)
r = libmsi_record_get_int(hrec, 1);
ok(r == 1, "Expected 1, got %d\n", r);
- sz = sizeof buffer;
- r = libmsi_record_get_string(hrec, 2, buffer, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "record get string failed\n");
- ok(!strcmp(buffer, "c"), "Expected c, got %s\n", buffer);
+ check_record_string(hrec, 2, "c");
r = libmsi_record_get_int(hrec, 3);
ok(r == 0x80000000, "Expected 0x80000000, got %d\n", r);
@@ -2693,10 +2657,7 @@ static void test_try_transform(void)
r = libmsi_record_get_int(hrec, 1);
ok(r == 2, "Expected 2, got %d\n", r);
- sz = sizeof buffer;
- r = libmsi_record_get_string(hrec, 2, buffer, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "record get string failed\n");
- ok(!strcmp(buffer, "b"), "Expected b, got %s\n", buffer);
+ check_record_string(hrec, 2, "b");
r = libmsi_record_get_int(hrec, 3);
ok(r == 0x80000000, "Expected 0x80000000, got %d\n", r);
@@ -2728,7 +2689,7 @@ static void test_try_transform(void)
sz = MAX_PATH;
r = MsiGetProperty(hpkg, "prop", buffer, &sz);
ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buffer, "val"), "Expected val, got %s\n", buffer);
+ ok(g_str_equal(buffer, "val"), "Expected val, got %s\n", buffer);
g_object_unref(hpkg);
#endif
@@ -2842,6 +2803,7 @@ static void test_join(void)
unsigned r, count;
unsigned size, i;
bool data_correct;
+ gchar *str;
hdb = create_db();
ok( hdb, "failed to create db\n");
@@ -2971,17 +2933,8 @@ static void test_join(void)
count = libmsi_record_get_field_count( hrec );
ok( count == 2, "Expected 2 record fields, got %d\n", count );
- size = sizeof(buf);
- r = libmsi_record_get_string( hrec, 1, buf, &size );
- ok( r == LIBMSI_RESULT_SUCCESS, "failed to get record string: %d\n", r );
- ok( !strcmp( buf, join_res_first[i].one ),
- "For (row %d, column 1) expected '%s', got %s\n", i, join_res_first[i].one, buf );
-
- size = sizeof(buf);
- r = libmsi_record_get_string( hrec, 2, buf, &size );
- ok( r == LIBMSI_RESULT_SUCCESS, "failed to get record string: %d\n", r );
- ok( !strcmp( buf, join_res_first[i].two ),
- "For (row %d, column 2) expected '%s', got %s\n", i, join_res_first[i].two, buf );
+ check_record_string(hrec, 1, join_res_first[i].one);
+ check_record_string(hrec, 2, join_res_first[i].two);
i++;
g_object_unref(hrec);
@@ -3029,17 +2982,17 @@ static void test_join(void)
count = libmsi_record_get_field_count( hrec );
ok( count == 2, "Expected 2 record fields, got %d\n", count );
- size = sizeof(buf);
- r = libmsi_record_get_string( hrec, 1, buf, &size );
- ok( r == LIBMSI_RESULT_SUCCESS, "failed to get record string: %d\n", r );
- if( strcmp( buf, join_res_second[i].one ))
+ str = libmsi_record_get_string(hrec, 1);
+ ok(str, "failed to get record string\n");
+ if( strcmp(str, join_res_second[i].one))
data_correct = false;
+ g_free(str);
- size = sizeof(buf);
- r = libmsi_record_get_string( hrec, 2, buf, &size );
- ok( r == LIBMSI_RESULT_SUCCESS, "failed to get record string: %d\n", r );
- if( strcmp( buf, join_res_second[i].two ))
+ str = libmsi_record_get_string(hrec, 2);
+ ok(str, "failed to get record string\n");
+ if( strcmp(str, join_res_second[i].two))
data_correct = false;
+ g_free(str);
i++;
g_object_unref(hrec);
@@ -3070,17 +3023,17 @@ static void test_join(void)
count = libmsi_record_get_field_count( hrec );
ok( count == 2, "Expected 2 record fields, got %d\n", count );
- size = sizeof(buf);
- r = libmsi_record_get_string( hrec, 1, buf, &size );
- ok( r == LIBMSI_RESULT_SUCCESS, "failed to get record string: %d\n", r );
- if( strcmp( buf, join_res_third[i].one ) )
+ str = libmsi_record_get_string(hrec, 1);
+ ok(str, "failed to get record string\n", str);
+ if (strcmp(str, join_res_third[i].one))
data_correct = false;
+ g_free(str);
- size = sizeof(buf);
- r = libmsi_record_get_string( hrec, 2, buf, &size );
- ok( r == LIBMSI_RESULT_SUCCESS, "failed to get record string: %d\n", r );
- if( strcmp( buf, join_res_third[i].two ) )
+ str = libmsi_record_get_string(hrec, 2);
+ ok(str, "failed to get record string\n");
+ if (strcmp(str, join_res_third[i].two))
data_correct = false;
+ g_free(str);
i++;
g_object_unref(hrec);
@@ -3111,17 +3064,17 @@ static void test_join(void)
count = libmsi_record_get_field_count( hrec );
ok( count == 2, "Expected 2 record fields, got %d\n", count );
- size = sizeof(buf);
- r = libmsi_record_get_string( hrec, 1, buf, &size );
- ok( r == LIBMSI_RESULT_SUCCESS, "failed to get record string: %d\n", r );
- if( strcmp( buf, join_res_fourth[i].one ))
+ str = libmsi_record_get_string(hrec, 1);
+ ok(str, "failed to get record string\n");
+ if (strcmp(str, join_res_fourth[i].one))
data_correct = false;
+ g_free(str);
- size = sizeof(buf);
- r = libmsi_record_get_string( hrec, 2, buf, &size );
- ok( r == LIBMSI_RESULT_SUCCESS, "failed to get record string: %d\n", r );
- if( strcmp( buf, join_res_fourth[i].two ))
+ str = libmsi_record_get_string( hrec, 2);
+ ok(str, "failed to get record string\n");
+ if (strcmp(str, join_res_fourth[i].two))
data_correct = false;
+ g_free(str);
i++;
g_object_unref(hrec);
@@ -3152,17 +3105,17 @@ static void test_join(void)
count = libmsi_record_get_field_count( hrec );
ok( count == 2, "Expected 2 record fields, got %d\n", count );
- size = sizeof(buf);
- r = libmsi_record_get_string( hrec, 1, buf, &size );
- ok( r == LIBMSI_RESULT_SUCCESS, "failed to get record string: %d\n", r );
- if( strcmp( buf, join_res_fifth[i].one ))
+ str = libmsi_record_get_string(hrec, 1);
+ ok(str, "failed to get record string: %d\n", r );
+ if (strcmp(str, join_res_fifth[i].one))
data_correct = false;
+ g_free(str);
- size = sizeof(buf);
- r = libmsi_record_get_string( hrec, 2, buf, &size );
- ok( r == LIBMSI_RESULT_SUCCESS, "failed to get record string: %d\n", r );
- if( strcmp( buf, join_res_fifth[i].two ))
+ str = libmsi_record_get_string(hrec, 2);
+ ok(str, "failed to get record string\n");
+ if(strcmp(str, join_res_fifth[i].two))
data_correct = false;
+ g_free(str);
i++;
g_object_unref(hrec);
@@ -3192,17 +3145,17 @@ static void test_join(void)
count = libmsi_record_get_field_count( hrec );
ok( count == 2, "Expected 2 record fields, got %d\n", count );
- size = sizeof(buf);
- r = libmsi_record_get_string( hrec, 1, buf, &size );
- ok( r == LIBMSI_RESULT_SUCCESS, "failed to get record string: %d\n", r );
- if( strcmp( buf, join_res_sixth[i].one ))
+ str = libmsi_record_get_string(hrec, 1);
+ ok(str, "failed to get record string\n");
+ if (strcmp(str, join_res_sixth[i].one))
data_correct = false;
+ g_free(str);
- size = sizeof(buf);
- r = libmsi_record_get_string( hrec, 2, buf, &size );
- ok( r == LIBMSI_RESULT_SUCCESS, "failed to get record string: %d\n", r );
- if( strcmp( buf, join_res_sixth[i].two ))
+ str = libmsi_record_get_string( hrec, 2);
+ ok(str, "failed to get record string\n");
+ if (strcmp(str, join_res_sixth[i].two))
data_correct = false;
+ g_free(str);
i++;
g_object_unref(hrec);
@@ -3233,17 +3186,17 @@ static void test_join(void)
count = libmsi_record_get_field_count( hrec );
ok( count == 2, "Expected 2 record fields, got %d\n", count );
- size = sizeof(buf);
- r = libmsi_record_get_string( hrec, 1, buf, &size );
- ok( r == LIBMSI_RESULT_SUCCESS, "failed to get record string: %d\n", r );
- if( strcmp( buf, join_res_seventh[i].one ))
+ str = libmsi_record_get_string( hrec, 1);
+ ok(str, "failed to get record string\n");
+ if (strcmp(str, join_res_seventh[i].one))
data_correct = false;
+ g_free(str);
- size = sizeof(buf);
- r = libmsi_record_get_string( hrec, 2, buf, &size );
- ok( r == LIBMSI_RESULT_SUCCESS, "failed to get record string: %d\n", r );
- if( strcmp( buf, join_res_seventh[i].two ))
+ str = libmsi_record_get_string(hrec, 2);
+ ok(str, "failed to get record string\n");
+ if (strcmp(str, join_res_seventh[i].two))
data_correct = false;
+ g_free(str);
i++;
g_object_unref(hrec);
@@ -3271,17 +3224,17 @@ static void test_join(void)
count = libmsi_record_get_field_count( hrec );
ok( count == 2, "Expected 2 record fields, got %d\n", count );
- size = sizeof(buf);
- r = libmsi_record_get_string( hrec, 1, buf, &size );
- ok( r == LIBMSI_RESULT_SUCCESS, "failed to get record string: %d\n", r );
- if( strcmp( buf, join_res_eighth[i].one ))
+ str = libmsi_record_get_string(hrec, 1);
+ ok(str, "failed to get record string\n");
+ if (strcmp(str, join_res_eighth[i].one))
data_correct = false;
+ g_free(str);
- size = sizeof(buf);
- r = libmsi_record_get_string( hrec, 2, buf, &size );
- ok( r == LIBMSI_RESULT_SUCCESS, "failed to get record string: %d\n", r );
- if( strcmp( buf, join_res_eighth[i].four ))
+ str = libmsi_record_get_string(hrec, 2);
+ ok(str, "failed to get record string\n");
+ if (strcmp(str, join_res_eighth[i].four))
data_correct = false;
+ g_free(str);
i++;
g_object_unref(hrec);
@@ -3308,29 +3261,29 @@ static void test_join(void)
count = libmsi_record_get_field_count( hrec );
ok( count == 4, "Expected 4 record fields, got %d\n", count );
- size = sizeof(buf);
- r = libmsi_record_get_string( hrec, 1, buf, &size );
- ok( r == LIBMSI_RESULT_SUCCESS, "failed to get record string: %d\n", r );
- if( strcmp( buf, join_res_eighth[i].one ))
+ str = libmsi_record_get_string(hrec, 1);
+ ok(str, "failed to get record string\n");
+ if (strcmp(str, join_res_eighth[i].one))
data_correct = false;
+ g_free(str);
- size = sizeof(buf);
- r = libmsi_record_get_string( hrec, 2, buf, &size );
- ok( r == LIBMSI_RESULT_SUCCESS, "failed to get record string: %d\n", r );
- if( strcmp( buf, join_res_eighth[i].two ))
+ str = libmsi_record_get_string(hrec, 2);
+ ok(str, "failed to get record string\n");
+ if (strcmp(str, join_res_eighth[i].two))
data_correct = false;
+ g_free(str);
- size = sizeof(buf);
- r = libmsi_record_get_string( hrec, 3, buf, &size );
- ok( r == LIBMSI_RESULT_SUCCESS, "failed to get record string: %d\n", r );
- if( strcmp( buf, join_res_eighth[i].three ))
+ str = libmsi_record_get_string(hrec, 3);
+ ok(str, "failed to get record string\n");
+ if (strcmp(str, join_res_eighth[i].three))
data_correct = false;
+ g_free(str);
- size = sizeof(buf);
- r = libmsi_record_get_string( hrec, 4, buf, &size );
- ok( r == LIBMSI_RESULT_SUCCESS, "failed to get record string: %d\n", r );
- if( strcmp( buf, join_res_eighth[i].four ))
+ str = libmsi_record_get_string(hrec, 4);
+ ok(str, "failed to get record string\n");
+ if (strcmp(str, join_res_eighth[i].four))
data_correct = false;
+ g_free(str);
i++;
g_object_unref(hrec);
@@ -3507,15 +3460,8 @@ static void test_temporary_table(void)
r = libmsi_query_get_column_info(query, LIBMSI_COL_INFO_TYPES, &rec);
ok(r == LIBMSI_RESULT_SUCCESS, "failed to get column info\n");
- sz = sizeof buf;
- r = libmsi_record_get_string(rec, 1, buf, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "failed to get string\n");
- ok( 0 == strcmp("G255", buf), "wrong column type\n");
-
- sz = sizeof buf;
- r = libmsi_record_get_string(rec, 2, buf, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "failed to get string\n");
- ok( 0 == strcmp("j2", buf), "wrong column type\n");
+ check_record_string(rec, 1, "G255");
+ check_record_string(rec, 2, "j2");
g_object_unref( rec );
libmsi_query_close( query );
@@ -3960,21 +3906,13 @@ static void test_update(void)
r = libmsi_query_fetch(query, &rec);
ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- size = sizeof(result);
- r = libmsi_record_get_string(rec, 1, result, &size);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(result, "this is text"), "Expected `this is text`, got %s\n", result);
-
+ check_record_string(rec, 1, "this is text");
g_object_unref(rec);
r = libmsi_query_fetch(query, &rec);
ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- size = sizeof(result);
- r = libmsi_record_get_string(rec, 1, result, &size);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strlen(result), "Expected an empty string, got %s\n", result);
-
+ check_record_string(rec, 1, "");
g_object_unref(rec);
r = libmsi_query_fetch(query, &rec);
@@ -4006,21 +3944,13 @@ static void test_update(void)
r = libmsi_query_fetch(query, &rec);
ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- size = sizeof(result);
- r = libmsi_record_get_string(rec, 1, result, &size);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(result, "this is text"), "Expected `this is text`, got %s\n", result);
-
+ check_record_string(rec, 1, "this is text");
g_object_unref(rec);
r = libmsi_query_fetch(query, &rec);
ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- size = sizeof(result);
- r = libmsi_record_get_string(rec, 1, result, &size);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strlen(result), "Expected an empty string, got %s\n", result);
-
+ check_record_string(rec, 1, "");
g_object_unref(rec);
r = libmsi_query_fetch(query, &rec);
@@ -4052,31 +3982,19 @@ static void test_update(void)
r = libmsi_query_fetch(query, &rec);
ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- size = sizeof(result);
- r = libmsi_record_get_string(rec, 1, result, &size);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(result, "this is text"), "Expected `this is text`, got %s\n", result);
-
+ check_record_string(rec, 1, "this is text");
g_object_unref(rec);
r = libmsi_query_fetch(query, &rec);
ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- size = sizeof(result);
- r = libmsi_record_get_string(rec, 1, result, &size);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(result, "this is text"), "Expected `this is text`, got %s\n", result);
-
+ check_record_string(rec, 1, "this is text");
g_object_unref(rec);
r = libmsi_query_fetch(query, &rec);
ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- size = sizeof(result);
- r = libmsi_record_get_string(rec, 1, result, &size);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(result, "this is text"), "Expected `this is text`, got %s\n", result);
-
+ check_record_string(rec, 1, "this is text");
g_object_unref(rec);
r = libmsi_query_fetch(query, &rec);
@@ -4203,6 +4121,7 @@ static void test_tables_order(void)
LibmsiDatabase *hdb = 0;
LibmsiQuery *hquery = 0;
LibmsiRecord *hrec = 0;
+ gchar *str;
unsigned r;
char buffer[100];
unsigned sz;
@@ -4238,26 +4157,18 @@ static void test_tables_order(void)
r = libmsi_query_fetch(hquery, &hrec);
ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_fetch failed\n");
- sz = sizeof(buffer);
- r = libmsi_record_get_string(hrec, 1, buffer, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buffer, "foo"), "Expected foo, got %s\n", buffer);
+ check_record_string(hrec, 1, "foo");
g_object_unref(hrec);
r = libmsi_query_fetch(hquery, &hrec);
ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_fetch failed\n");
- sz = sizeof(buffer);
- r = libmsi_record_get_string(hrec, 1, buffer, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buffer, "baz"), "Expected baz, got %s\n", buffer);
+ check_record_string(hrec, 1, "baz");
g_object_unref(hrec);
r = libmsi_query_fetch(hquery, &hrec);
ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_fetch failed\n");
sz = sizeof(buffer);
- r = libmsi_record_get_string(hrec, 1, buffer, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buffer, "bar"), "Expected bar, got %s\n", buffer);
+ check_record_string(hrec, 1, "bar");
g_object_unref(hrec);
r = libmsi_query_close(hquery);
@@ -4275,62 +4186,32 @@ static void test_tables_order(void)
r = libmsi_query_fetch(hquery, &hrec);
ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_fetch failed\n");
- sz = sizeof(buffer);
- r = libmsi_record_get_string(hrec, 1, buffer, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buffer, "foo"), "Expected foo, got %s\n", buffer);
- sz = sizeof(buffer);
- r = libmsi_record_get_string(hrec, 3, buffer, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buffer, "baz"), "Expected baz, got %s\n", buffer);
+ check_record_string(hrec, 1, "foo");
+ check_record_string(hrec, 3, "baz");
g_object_unref(hrec);
r = libmsi_query_fetch(hquery, &hrec);
ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_fetch failed\n");
- sz = sizeof(buffer);
- r = libmsi_record_get_string(hrec, 1, buffer, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buffer, "baz"), "Expected baz, got %s\n", buffer);
- sz = sizeof(buffer);
- r = libmsi_record_get_string(hrec, 3, buffer, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buffer, "bar"), "Expected bar, got %s\n", buffer);
+ check_record_string(hrec, 1, "baz");
+ check_record_string(hrec, 3, "bar");
g_object_unref(hrec);
r = libmsi_query_fetch(hquery, &hrec);
ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_fetch failed\n");
- sz = sizeof(buffer);
- r = libmsi_record_get_string(hrec, 1, buffer, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buffer, "baz"), "Expected baz, got %s\n", buffer);
- sz = sizeof(buffer);
- r = libmsi_record_get_string(hrec, 3, buffer, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buffer, "baz"), "Expected baz, got %s\n", buffer);
+ check_record_string(hrec, 1, "baz");
+ check_record_string(hrec, 3, "baz");
g_object_unref(hrec);
r = libmsi_query_fetch(hquery, &hrec);
ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_fetch failed\n");
- sz = sizeof(buffer);
- r = libmsi_record_get_string(hrec, 1, buffer, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buffer, "baz"), "Expected baz, got %s\n", buffer);
- sz = sizeof(buffer);
- r = libmsi_record_get_string(hrec, 3, buffer, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buffer, "foo"), "Expected foo, got %s\n", buffer);
+ check_record_string(hrec, 1, "baz");
+ check_record_string(hrec, 3, "foo");
g_object_unref(hrec);
r = libmsi_query_fetch(hquery, &hrec);
ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_fetch failed\n");
- sz = sizeof(buffer);
- r = libmsi_record_get_string(hrec, 1, buffer, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buffer, "bar"), "Expected bar, got %s\n", buffer);
- sz = sizeof(buffer);
- r = libmsi_record_get_string(hrec, 3, buffer, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buffer, "foo"), "Expected foo, got %s\n", buffer);
+ check_record_string(hrec, 1, "bar");
+ check_record_string(hrec, 3, "foo");
g_object_unref(hrec);
r = libmsi_query_close(hquery);
@@ -4419,50 +4300,26 @@ static void test_rows_order(void)
r = libmsi_query_fetch(hquery, &hrec);
ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_fetch failed\n");
- sz = sizeof(buffer);
- r = libmsi_record_get_string(hrec, 1, buffer, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buffer, "A"), "Expected A, got %s\n", buffer);
- sz = sizeof(buffer);
- r = libmsi_record_get_string(hrec, 2, buffer, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buffer, "B"), "Expected B, got %s\n", buffer);
+ check_record_string(hrec, 1, "A");
+ check_record_string(hrec, 2, "B");
g_object_unref(hrec);
r = libmsi_query_fetch(hquery, &hrec);
ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_fetch failed\n");
- sz = sizeof(buffer);
- r = libmsi_record_get_string(hrec, 1, buffer, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buffer, "C"), "Expected E, got %s\n", buffer);
- sz = sizeof(buffer);
- r = libmsi_record_get_string(hrec, 2, buffer, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buffer, "E"), "Expected E, got %s\n", buffer);
+ check_record_string(hrec, 1, "C");
+ check_record_string(hrec, 2, "E");
g_object_unref(hrec);
r = libmsi_query_fetch(hquery, &hrec);
ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_fetch failed\n");
- sz = sizeof(buffer);
- r = libmsi_record_get_string(hrec, 1, buffer, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buffer, "D"), "Expected D, got %s\n", buffer);
- sz = sizeof(buffer);
- r = libmsi_record_get_string(hrec, 2, buffer, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buffer, "E"), "Expected E, got %s\n", buffer);
+ check_record_string(hrec, 1, "D");
+ check_record_string(hrec, 2, "E");
g_object_unref(hrec);
r = libmsi_query_fetch(hquery, &hrec);
ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_fetch failed\n");
- sz = sizeof(buffer);
- r = libmsi_record_get_string(hrec, 1, buffer, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buffer, "F"), "Expected F, got %s\n", buffer);
- sz = sizeof(buffer);
- r = libmsi_record_get_string(hrec, 2, buffer, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buffer, "A"), "Expected A, got %s\n", buffer);
+ check_record_string(hrec, 1, "F");
+ check_record_string(hrec, 2, "A");
g_object_unref(hrec);
r = libmsi_query_close(hquery);
@@ -4497,6 +4354,7 @@ static void test_collation(void)
unsigned r;
char buffer[100];
unsigned sz;
+ gchar *str;
r = libmsi_database_open(msifile, LIBMSI_DB_OPEN_CREATE, &hdb);
ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_database_open failed\n");
@@ -4542,52 +4400,33 @@ static void test_collation(void)
r = libmsi_query_fetch(hquery, &hrec);
ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_fetch failed\n");
- sz = sizeof(buffer);
- r = libmsi_record_get_string(hrec, 1, buffer, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buffer, "\2"), "Expected \\2, got '%s'\n", buffer);
- sz = sizeof(buffer);
- r = libmsi_record_get_string(hrec, 2, buffer, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buffer, "A"), "Expected A, got '%s'\n", buffer);
+ check_record_string(hrec, 1, "\2");
+ check_record_string(hrec, 2, "A");
g_object_unref(hrec);
r = libmsi_query_fetch(hquery, &hrec);
ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_fetch failed\n");
- sz = sizeof(buffer);
- r = libmsi_record_get_string(hrec, 1, buffer, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buffer, "\1"), "Expected \\1, got '%s'\n", buffer);
- sz = sizeof(buffer);
- r = libmsi_record_get_string(hrec, 2, buffer, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buffer, "B"), "Expected B, got '%s'\n", buffer);
+ check_record_string(hrec, 1, "\1");
+ check_record_string(hrec, 2, "B");
g_object_unref(hrec);
r = libmsi_query_fetch(hquery, &hrec);
ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_fetch failed\n");
- sz = sizeof(buffer);
- r = libmsi_record_get_string(hrec, 1, buffer, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!memcmp(buffer, letter_a_ring, sizeof(letter_a_ring)),
- "Expected %s, got %s\n", letter_a_ring, buffer);
- sz = sizeof(buffer);
- r = libmsi_record_get_string(hrec, 2, buffer, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buffer, "C"), "Expected C, got %s\n", buffer);
+ str = libmsi_record_get_string(hrec, 1);
+ ok(str, "Expected string\n");
+ ok(!memcmp(str, letter_a_ring, sizeof(letter_a_ring)),
+ "Expected %s, got %s\n", letter_a_ring, str);
+ check_record_string(hrec, 2, "C");
g_object_unref(hrec);
r = libmsi_query_fetch(hquery, &hrec);
ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_fetch failed\n");
- sz = sizeof(buffer);
- r = libmsi_record_get_string(hrec, 1, buffer, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!memcmp(buffer, letter_a_with_ring, sizeof(letter_a_with_ring)),
- "Expected %s, got %s\n", letter_a_with_ring, buffer);
- sz = sizeof(buffer);
- r = libmsi_record_get_string(hrec, 2, buffer, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buffer, "D"), "Expected D, got %s\n", buffer);
+ str = libmsi_record_get_string(hrec, 1);
+ ok(str, "Expected string\n");
+ ok(!memcmp(str, letter_a_with_ring, sizeof(letter_a_with_ring)),
+ "Expected %s, got %s\n", letter_a_with_ring, str);
+ g_free(str);
+ check_record_string(hrec, 2, "D");
g_object_unref(hrec);
r = libmsi_query_close(hquery);
@@ -4602,14 +4441,11 @@ static void test_collation(void)
r = libmsi_query_fetch(hquery, &hrec);
ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_fetch failed\n");
sz = sizeof(buffer);
- r = libmsi_record_get_string(hrec, 1, buffer, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!memcmp(buffer, letter_a_with_ring, sizeof(letter_a_with_ring)),
- "Expected %s, got %s\n", letter_a_with_ring, buffer);
- sz = sizeof(buffer);
- r = libmsi_record_get_string(hrec, 2, buffer, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buffer, "D"), "Expected D, got %s\n", buffer);
+ str = libmsi_record_get_string(hrec, 1);
+ ok(str, "Expected string\n");
+ ok(!memcmp(str, letter_a_with_ring, sizeof(letter_a_with_ring)),
+ "Expected %s, got %s\n", letter_a_with_ring, str);
+ check_record_string(hrec, 2, "D");
g_object_unref(hrec);
r = libmsi_query_fetch(hquery, &hrec);
@@ -4673,15 +4509,8 @@ static void test_select_markers(void)
r = libmsi_query_fetch(query, &res);
ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- size = sizeof(buf);
- r = libmsi_record_get_string(res, 1, buf, &size);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buf, "apple"), "Expected apple, got %s\n", buf);
-
- size = sizeof(buf);
- r = libmsi_record_get_string(res, 2, buf, &size);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buf, "two"), "Expected two, got %s\n", buf);
+ check_record_string(res, 1, "apple");
+ check_record_string(res, 2, "two");
r = libmsi_record_get_int(res, 3);
ok(r == 1, "Expected 1, got %d\n", r);
@@ -4691,15 +4520,9 @@ static void test_select_markers(void)
r = libmsi_query_fetch(query, &res);
ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- size = sizeof(buf);
- r = libmsi_record_get_string(res, 1, buf, &size);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buf, "apple"), "Expected apple, got %s\n", buf);
+ check_record_string(res, 1, "apple");
- size = sizeof(buf);
- r = libmsi_record_get_string(res, 2, buf, &size);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buf, "two"), "Expected two, got %s\n", buf);
+ check_record_string(res, 2, "two");
r = libmsi_record_get_int(res, 3);
ok(r == 2, "Expected 2, got %d\n", r);
@@ -4727,15 +4550,8 @@ static void test_select_markers(void)
r = libmsi_query_fetch(query, &res);
ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- size = sizeof(buf);
- r = libmsi_record_get_string(res, 1, buf, &size);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buf, "apple"), "Expected apple, got %s\n", buf);
-
- size = sizeof(buf);
- r = libmsi_record_get_string(res, 2, buf, &size);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buf, "two"), "Expected two, got %s\n", buf);
+ check_record_string(res, 1, "apple");
+ check_record_string(res, 2, "two");
r = libmsi_record_get_int(res, 3);
ok(r == 2, "Expected 2, got %d\n", r);
@@ -4745,15 +4561,8 @@ static void test_select_markers(void)
r = libmsi_query_fetch(query, &res);
ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- size = sizeof(buf);
- r = libmsi_record_get_string(res, 1, buf, &size);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buf, "banana"), "Expected banana, got %s\n", buf);
-
- size = sizeof(buf);
- r = libmsi_record_get_string(res, 2, buf, &size);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buf, "three"), "Expected three, got %s\n", buf);
+ check_record_string(res, 1, "banana");
+ check_record_string(res, 2, "three");
r = libmsi_record_get_int(res, 3);
ok(r == 3, "Expected 3, got %d\n", r);
@@ -4883,10 +4692,7 @@ static void test_stringtable(void)
r = libmsi_record_get_int(hrec, 1);
ok(r == 1, "Expected 1, got %d\n", r);
- sz = sizeof(buffer);
- r = libmsi_record_get_string(hrec, 2, buffer, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buffer, "one"), "Expected one, got '%s'\n", buffer);
+ check_record_string(hrec, 2, "one");
g_object_unref(hrec);
@@ -4914,10 +4720,7 @@ static void test_stringtable(void)
r = libmsi_record_get_int(hrec, 1);
ok(r == 2, "Expected 2, got %d\n", r);
- sz = sizeof(buffer);
- r = libmsi_record_get_string(hrec, 2, buffer, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buffer, "two"), "Expected two, got '%s'\n", buffer);
+ check_record_string(hrec, 2, "two");
g_object_unref(hrec);
@@ -4930,10 +4733,7 @@ static void test_stringtable(void)
r = libmsi_record_get_int(hrec, 1);
ok(r == 5, "Expected 5, got %d\n", r);
- sz = sizeof(buffer);
- r = libmsi_record_get_string(hrec, 2, buffer, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buffer, "five"), "Expected five, got '%s'\n", buffer);
+ check_record_string(hrec, 2, "five");
g_object_unref(hrec);
@@ -5363,10 +5163,7 @@ static void test_order(void)
r = libmsi_query_fetch(hquery, &hrec);
ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- sz = sizeof(buffer);
- r = libmsi_record_get_string(hrec, 1, buffer, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buffer, "dos"), "Expected \"dos\", got \"%s\"\n", buffer);
+ check_record_string(hrec, 1, "dos");
r = libmsi_record_get_int(hrec, 2);
ok(r == 3, "Expected 3, got %d\n", r);
@@ -5429,10 +5226,7 @@ static void test_deleterow(void)
r = libmsi_query_fetch(hquery, &hrec);
ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- size = sizeof(buf);
- r = libmsi_record_get_string(hrec, 1, buf, &size);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buf, "two"), "Expected two, got %s\n", buf);
+ check_record_string(hrec, 1, "two");
g_object_unref(hrec);
@@ -5510,11 +5304,7 @@ static void test_quotes(void)
r = libmsi_query_fetch(hquery, &hrec);
ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- size = sizeof(buf);
- r = libmsi_record_get_string(hrec, 1, buf, &size);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buf, "This is a \"string\" ok"),
- "Expected \"This is a \"string\" ok\", got %s\n", buf);
+ check_record_string(hrec, 1, "This is a \"string\" ok");
g_object_unref(hrec);
@@ -5541,11 +5331,7 @@ static void test_quotes(void)
r = libmsi_query_fetch(hquery, &hrec);
ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- size = sizeof(buf);
- r = libmsi_record_get_string(hrec, 1, buf, &size);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buf, "This is a new 'string' ok"),
- "Expected \"This is a new 'string' ok\", got %s\n", buf);
+ check_record_string(hrec, 1, "This is a new 'string' ok");
g_object_unref(hrec);
@@ -5709,31 +5495,19 @@ static void test_carriagereturn(void)
r = libmsi_query_fetch(hquery, &hrec);
ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- size = sizeof(buf);
- r = libmsi_record_get_string(hrec, 1, buf, &size);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buf, "\rOne"), "Expected \"\\rOne\", got \"%s\"\n", buf);
-
+ check_record_string(hrec, 1, "\rOne");
g_object_unref(hrec);
r = libmsi_query_fetch(hquery, &hrec);
ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- size = sizeof(buf);
- r = libmsi_record_get_string(hrec, 1, buf, &size);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buf, "Tw\ro"), "Expected \"Tw\\ro\", got \"%s\"\n", buf);
-
+ check_record_string(hrec, 1, "Tw\ro");
g_object_unref(hrec);
r = libmsi_query_fetch(hquery, &hrec);
ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- size = sizeof(buf);
- r = libmsi_record_get_string(hrec, 1, buf, &size);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buf, "Three\r"), "Expected \"Three\r\", got \"%s\"\n", buf);
-
+ check_record_string(hrec, 1, "Three\r");
g_object_unref(hrec);
r = libmsi_query_fetch(hquery, &hrec);
@@ -5786,31 +5560,19 @@ static void test_noquotes(void)
r = libmsi_query_fetch(hquery, &hrec);
ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- size = sizeof(buf);
- r = libmsi_record_get_string(hrec, 1, buf, &size);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buf, "Table"), "Expected \"Table\", got \"%s\"\n", buf);
-
+ check_record_string(hrec, 1, "Table");
g_object_unref(hrec);
r = libmsi_query_fetch(hquery, &hrec);
ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- size = sizeof(buf);
- r = libmsi_record_get_string(hrec, 1, buf, &size);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buf, "Table2"), "Expected \"Table2\", got \"%s\"\n", buf);
-
+ check_record_string(hrec, 1, "Table2");
g_object_unref(hrec);
r = libmsi_query_fetch(hquery, &hrec);
ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- size = sizeof(buf);
- r = libmsi_record_get_string(hrec, 1, buf, &size);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buf, "Table3"), "Expected \"Table3\", got \"%s\"\n", buf);
-
+ check_record_string(hrec, 1, "Table3");
g_object_unref(hrec);
r = libmsi_query_fetch(hquery, &hrec);
@@ -5828,55 +5590,34 @@ static void test_noquotes(void)
r = libmsi_query_fetch(hquery, &hrec);
ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- size = sizeof(buf);
- r = libmsi_record_get_string(hrec, 1, buf, &size);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buf, "Table"), "Expected \"Table\", got \"%s\"\n", buf);
+ check_record_string(hrec, 1, "Table");
r = libmsi_record_get_int(hrec, 2);
ok(r == 1, "Expected 1, got %d\n", r);
- size = sizeof(buf);
- r = libmsi_record_get_string(hrec, 3, buf, &size);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buf, "A"), "Expected \"A\", got \"%s\"\n", buf);
-
+ check_record_string(hrec, 3, "A");
g_object_unref(hrec);
r = libmsi_query_fetch(hquery, &hrec);
ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- size = sizeof(buf);
- r = libmsi_record_get_string(hrec, 1, buf, &size);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buf, "Table2"), "Expected \"Table2\", got \"%s\"\n", buf);
+ check_record_string(hrec, 1, "Table2");
r = libmsi_record_get_int(hrec, 2);
ok(r == 1, "Expected 1, got %d\n", r);
- size = sizeof(buf);
- r = libmsi_record_get_string(hrec, 3, buf, &size);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buf, "A"), "Expected \"A\", got \"%s\"\n", buf);
-
+ check_record_string(hrec, 3, "A");
g_object_unref(hrec);
r = libmsi_query_fetch(hquery, &hrec);
ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- size = sizeof(buf);
- r = libmsi_record_get_string(hrec, 1, buf, &size);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buf, "Table3"), "Expected \"Table3\", got \"%s\"\n", buf);
+ check_record_string(hrec, 1, "Table3");
r = libmsi_record_get_int(hrec, 2);
ok(r == 1, "Expected 1, got %d\n", r);
- size = sizeof(buf);
- r = libmsi_record_get_string(hrec, 3, buf, &size);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buf, "A"), "Expected \"A\", got \"%s\"\n", buf);
-
+ check_record_string(hrec, 3, "A");
g_object_unref(hrec);
r = libmsi_query_fetch(hquery, &hrec);
@@ -5931,11 +5672,7 @@ static void test_noquotes(void)
r = libmsi_query_fetch(hquery, &hrec);
ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- size = sizeof(buf);
- r = libmsi_record_get_string(hrec, 1, buf, &size);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buf, "hi"), "Expected \"hi\", got \"%s\"\n", buf);
-
+ check_record_string(hrec, 1, "hi");
g_object_unref(hrec);
r = libmsi_query_fetch(hquery, &hrec);
@@ -6006,7 +5743,7 @@ static void test_forcecodepage(void)
close(fd);
read_file_data("forcecodepage.idt", buffer);
- ok(!strcmp(buffer, "\r\n\r\n0\t_ForceCodepage\r\n"),
+ ok(g_str_equal(buffer, "\r\n\r\n0\t_ForceCodepage\r\n"),
"Expected \"\r\n\r\n0\t_ForceCodepage\r\n\", got \"%s\"\n", buffer);
create_file_data("forcecodepage.idt", "\r\n\r\n850\t_ForceCodepage\r\n", 0);
@@ -6022,7 +5759,7 @@ static void test_forcecodepage(void)
close(fd);
read_file_data("forcecodepage.idt", buffer);
- ok(!strcmp(buffer, "\r\n\r\n850\t_ForceCodepage\r\n"),
+ ok(g_str_equal(buffer, "\r\n\r\n850\t_ForceCodepage\r\n"),
"Expected \"\r\n\r\n850\t_ForceCodepage\r\n\", got \"%s\"\n", buffer);
create_file_data("forcecodepage.idt", "\r\n\r\n9999\t_ForceCodepage\r\n", 0);
@@ -6142,16 +5879,13 @@ static void test_storages_table(void)
r = libmsi_query_fetch(hquery, &hrec);
ok(r == LIBMSI_RESULT_SUCCESS, "Failed to fetch hrecord: %d\n", r);
- size = sizeof(file);
- r = libmsi_record_get_string(hrec, 1, file, &size);
- ok(r == LIBMSI_RESULT_SUCCESS, "Failed to get string: %d\n", r);
- ok(!strcmp(file, "stgname"), "Expected \"stgname\", got \"%s\"\n", file);
+ check_record_string(hrec, 1, "stgname");
size = sizeof(buf);
strcpy(buf, "apple");
r = libmsi_record_save_stream(hrec, 2, buf, &size);
ok(r == LIBMSI_RESULT_INVALID_DATA, "Expected ERROR_INVALID_DATA, got %d\n", r);
- ok(!strcmp(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
+ ok(g_str_equal(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
ok(size == 0, "Expected 0, got %d\n", size);
g_object_unref(hrec);
@@ -6185,7 +5919,7 @@ static void test_storages_table(void)
hr = IStream_Read(stm, buf, MAX_PATH, &size);
ok(hr == S_OK, "Expected S_OK, got %d\n", hr);
ok(size == 8, "Expected 8, got %d\n", size);
- ok(!strcmp(buf, "stgdata"), "Expected \"stgdata\", got \"%s\"\n", buf);
+ ok(g_str_equal(buf, "stgdata"), "Expected \"stgdata\", got \"%s\"\n", buf);
IStream_Release(stm);
IStorage_Release(inner);
@@ -6225,10 +5959,7 @@ static void test_droptable(void)
r = libmsi_query_fetch(hquery, &hrec);
ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- size = sizeof(buf);
- r = libmsi_record_get_string(hrec, 1, buf, &size);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buf, "One"), "Expected \"One\", got \"%s\"\n", buf);
+ check_record_string(hrec, 1, "One");
g_object_unref(hrec);
libmsi_query_close(hquery);
@@ -6243,19 +5974,12 @@ static void test_droptable(void)
r = libmsi_query_fetch(hquery, &hrec);
ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- size = sizeof(buf);
- r = libmsi_record_get_string(hrec, 1, buf, &size);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buf, "One"), "Expected \"One\", got \"%s\"\n", buf);
+ check_record_string(hrec, 1, "One");
r = libmsi_record_get_int(hrec, 2);
ok(r == 1, "Expected 1, got %d\n", r);
- size = sizeof(buf);
- r = libmsi_record_get_string(hrec, 3, buf, &size);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buf, "A"), "Expected \"A\", got \"%s\"\n", buf);
-
+ check_record_string(hrec, 3, "A");
g_object_unref(hrec);
r = libmsi_query_fetch(hquery, &hrec);
@@ -6337,10 +6061,7 @@ static void test_droptable(void)
r = libmsi_query_fetch(hquery, &hrec);
ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- size = sizeof(buf);
- r = libmsi_record_get_string(hrec, 1, buf, &size);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buf, "One"), "Expected \"One\", got \"%s\"\n", buf);
+ check_record_string(hrec, 1, "One");
g_object_unref(hrec);
libmsi_query_close(hquery);
@@ -6355,37 +6076,23 @@ static void test_droptable(void)
r = libmsi_query_fetch(hquery, &hrec);
ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- size = sizeof(buf);
- r = libmsi_record_get_string(hrec, 1, buf, &size);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buf, "One"), "Expected \"One\", got \"%s\"\n", buf);
+ check_record_string(hrec, 1, "One");
r = libmsi_record_get_int(hrec, 2);
ok(r == 1, "Expected 1, got %d\n", r);
- size = sizeof(buf);
- r = libmsi_record_get_string(hrec, 3, buf, &size);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buf, "B"), "Expected \"B\", got \"%s\"\n", buf);
-
+ check_record_string(hrec, 3, "B");
g_object_unref(hrec);
r = libmsi_query_fetch(hquery, &hrec);
ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- size = sizeof(buf);
- r = libmsi_record_get_string(hrec, 1, buf, &size);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buf, "One"), "Expected \"One\", got \"%s\"\n", buf);
+ check_record_string(hrec, 1, "One");
r = libmsi_record_get_int(hrec, 2);
ok(r == 2, "Expected 2, got %d\n", r);
- size = sizeof(buf);
- r = libmsi_record_get_string(hrec, 3, buf, &size);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buf, "C"), "Expected \"C\", got \"%s\"\n", buf);
-
+ check_record_string(hrec, 3, "C");
g_object_unref(hrec);
r = libmsi_query_fetch(hquery, &hrec);
@@ -6732,10 +6439,7 @@ static void test_dbmerge(void)
r = do_query(hdb, sql, &hrec);
ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- size = sizeof(buf);
- r = libmsi_record_get_string(hrec, 1, buf, &size);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buf, "One"), "Expected \"One\", got \"%s\"\n", buf);
+ check_record_string(hrec, 1, "One");
r = libmsi_record_get_int(hrec, 2);
ok(r == 2, "Expected 2, got %d\n", r);
@@ -6749,32 +6453,16 @@ static void test_dbmerge(void)
r = libmsi_query_get_column_info(hquery, LIBMSI_COL_INFO_NAMES, &hrec);
ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- size = sizeof(buf);
- r = libmsi_record_get_string(hrec, 1, buf, &size);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buf, "Table"), "Expected \"Table\", got \"%s\"\n", buf);
-
- size = sizeof(buf);
- r = libmsi_record_get_string(hrec, 2, buf, &size);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buf, "NumRowMergeConflicts"),
- "Expected \"NumRowMergeConflicts\", got \"%s\"\n", buf);
-
+ check_record_string(hrec, 1, "Table");
+ check_record_string(hrec, 2, "NumRowMergeConflicts");
g_object_unref(hrec);
hrec = NULL;
r = libmsi_query_get_column_info(hquery, LIBMSI_COL_INFO_TYPES, &hrec);
ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- size = sizeof(buf);
- r = libmsi_record_get_string(hrec, 1, buf, &size);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buf, "s255"), "Expected \"s255\", got \"%s\"\n", buf);
-
- size = sizeof(buf);
- r = libmsi_record_get_string(hrec, 2, buf, &size);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buf, "i2"), "Expected \"i2\", got \"%s\"\n", buf);
+ check_record_string(hrec, 1, "s255");
+ check_record_string(hrec, 2, "i2");
g_object_unref(hrec);
libmsi_query_close(hquery);
@@ -6811,11 +6499,7 @@ static void test_dbmerge(void)
r = libmsi_record_get_int(hrec, 1);
ok(r == 1, "Expected 1, got %d\n", r);
- size = sizeof(buf);
- r = libmsi_record_get_string(hrec, 2, buf, &size);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buf, "hi"), "Expected \"hi\", got \"%s\"\n", buf);
-
+ check_record_string(hrec, 2, "hi");
g_object_unref(hrec);
/* nothing in MergeErrors */
@@ -6854,10 +6538,7 @@ static void test_dbmerge(void)
r = do_query(hdb, sql, &hrec);
ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- size = sizeof(buf);
- r = libmsi_record_get_string(hrec, 1, buf, &size);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buf, "hi"), "Expected \"hi\", got \"%s\"\n", buf);
+ check_record_string(hrec, 1, "hi");
r = libmsi_record_get_int(hrec, 2);
ok(r == 1, "Expected 1, got %d\n", r);
@@ -6908,11 +6589,7 @@ static void test_dbmerge(void)
r = libmsi_record_get_int(hrec, 1);
ok(r == 1, "Expected 1, got %d\n", r);
- size = sizeof(buf);
- r = libmsi_record_get_string(hrec, 2, buf, &size);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buf, "hi"), "Expected \"hi\", got \"%s\"\n", buf);
-
+ check_record_string(hrec, 2, "hi");
g_object_unref(hrec);
/* nothing in MergeErrors */
@@ -6962,7 +6639,7 @@ static void test_dbmerge(void)
memset(buf, 0, sizeof(buf));
r = libmsi_record_save_stream(hrec, 2, buf, &size);
ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buf, "binary.dat\n"),
+ ok(g_str_equal(buf, "binary.dat\n"),
"Expected \"binary.dat\\n\", got \"%s\"\n", buf);
g_object_unref(hrec);
@@ -7010,11 +6687,7 @@ static void test_dbmerge(void)
r = libmsi_record_get_int(hrec, 1);
ok(r == 1, "Expected 1, got %d\n", r);
- size = sizeof(buf);
- r = libmsi_record_get_string(hrec, 2, buf, &size);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buf, "foo"), "Expected \"foo\", got \"%s\"\n", buf);
-
+ check_record_string(hrec, 2, "foo");
g_object_unref(hrec);
r = libmsi_query_fetch(hquery, &hrec);
@@ -7023,11 +6696,7 @@ static void test_dbmerge(void)
r = libmsi_record_get_int(hrec, 1);
ok(r == 2, "Expected 2, got %d\n", r);
- size = sizeof(buf);
- r = libmsi_record_get_string(hrec, 2, buf, &size);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buf, "bar"), "Expected \"bar\", got \"%s\"\n", buf);
-
+ check_record_string(hrec, 2, "bar");
g_object_unref(hrec);
r = libmsi_query_fetch(hquery, &hrec);
@@ -7322,71 +6991,24 @@ static void test_columnorder(void)
sz = sizeof(buf);
strcpy(buf, "kiwi");
- r = libmsi_record_get_string(rec, 1, buf, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp("s255", buf), "Expected \"s255\", got \"%s\"\n", buf);
-
- sz = sizeof(buf);
- strcpy(buf, "kiwi");
- r = libmsi_record_get_string(rec, 2, buf, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp("I2", buf), "Expected \"I2\", got \"%s\"\n", buf);
-
- sz = sizeof(buf);
- strcpy(buf, "kiwi");
- r = libmsi_record_get_string(rec, 3, buf, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp("S255", buf), "Expected \"S255\", got \"%s\"\n", buf);
-
- sz = sizeof(buf);
- strcpy(buf, "kiwi");
- r = libmsi_record_get_string(rec, 4, buf, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp("i2", buf), "Expected \"i2\", got \"%s\"\n", buf);
-
- sz = sizeof(buf);
- strcpy(buf, "kiwi");
- r = libmsi_record_get_string(rec, 5, buf, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp("i2", buf), "Expected \"i2\", got \"%s\"\n", buf);
-
+ check_record_string(rec, 1, "s255");
+ check_record_string(rec, 2, "I2");
+ check_record_string(rec, 3, "S255");
+ check_record_string(rec, 4, "i2");
+ check_record_string(rec, 5, "i2");
g_object_unref(rec);
rec = NULL;
r = libmsi_query_get_column_info(query, LIBMSI_COL_INFO_NAMES, &rec);
ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- sz = sizeof(buf);
- strcpy(buf, "kiwi");
- r = libmsi_record_get_string(rec, 1, buf, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp("D", buf), "Expected \"D\", got \"%s\"\n", buf);
-
- sz = sizeof(buf);
- strcpy(buf, "kiwi");
- r = libmsi_record_get_string(rec, 2, buf, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp("E", buf), "Expected \"E\", got \"%s\"\n", buf);
-
- sz = sizeof(buf);
- strcpy(buf, "kiwi");
- r = libmsi_record_get_string(rec, 3, buf, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp("A", buf), "Expected \"A\", got \"%s\"\n", buf);
-
- sz = sizeof(buf);
- strcpy(buf, "kiwi");
- r = libmsi_record_get_string(rec, 4, buf, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp("C", buf), "Expected \"C\", got \"%s\"\n", buf);
-
- sz = sizeof(buf);
- strcpy(buf, "kiwi");
- r = libmsi_record_get_string(rec, 5, buf, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp("B", buf), "Expected \"B\", got \"%s\"\n", buf);
-
+ check_record_string(rec, 1, "D");
+ check_record_string(rec, 2, "E");
+ check_record_string(rec, 3, "A");
+ check_record_string(rec, 4, "C");
+ check_record_string(rec, 5, "B");
g_object_unref(rec);
+
libmsi_query_close(query);
g_object_unref(query);
@@ -7399,20 +7021,12 @@ static void test_columnorder(void)
r = do_query(hdb, sql, &rec);
ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- sz = sizeof(buf);
- strcpy(buf, "kiwi");
- r = libmsi_record_get_string(rec, 1, buf, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp("bc", buf), "Expected \"bc\", got \"%s\"\n", buf);
+ check_record_string(rec, 1, "bc");
r = libmsi_record_get_int(rec, 2);
ok(r == 3, "Expected 3, got %d\n", r);
- sz = sizeof(buf);
- strcpy(buf, "kiwi");
- r = libmsi_record_get_string(rec, 3, buf, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp("a", buf), "Expected \"a\", got \"%s\"\n", buf);
+ check_record_string(rec, 3, "a");
r = libmsi_record_get_int(rec, 4);
ok(r == 2, "Expected 2, got %d\n", r);
@@ -7432,101 +7046,56 @@ static void test_columnorder(void)
r = libmsi_query_fetch(query, &rec);
ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- sz = sizeof(buf);
- strcpy(buf, "kiwi");
- r = libmsi_record_get_string(rec, 1, buf, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp("T", buf), "Expected \"T\", got \"%s\"\n", buf);
+ check_record_string(rec, 1, "T");
r = libmsi_record_get_int(rec, 2);
ok(r == 1, "Expected 1, got %d\n", r);
- sz = sizeof(buf);
- strcpy(buf, "kiwi");
- r = libmsi_record_get_string(rec, 3, buf, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp("D", buf), "Expected \"D\", got \"%s\"\n", buf);
-
+ check_record_string(rec, 3, "D");
g_object_unref(rec);
r = libmsi_query_fetch(query, &rec);
ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- sz = sizeof(buf);
- strcpy(buf, "kiwi");
- r = libmsi_record_get_string(rec, 1, buf, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp("T", buf), "Expected \"T\", got \"%s\"\n", buf);
+ check_record_string(rec, 1, "T");
r = libmsi_record_get_int(rec, 2);
ok(r == 2, "Expected 2, got %d\n", r);
- sz = sizeof(buf);
- strcpy(buf, "kiwi");
- r = libmsi_record_get_string(rec, 3, buf, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp("E", buf), "Expected \"E\", got \"%s\"\n", buf);
-
+ check_record_string(rec, 3, "E");
g_object_unref(rec);
r = libmsi_query_fetch(query, &rec);
ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- sz = sizeof(buf);
- strcpy(buf, "kiwi");
- r = libmsi_record_get_string(rec, 1, buf, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp("T", buf), "Expected \"T\", got \"%s\"\n", buf);
+ check_record_string(rec, 1, "T");
r = libmsi_record_get_int(rec, 2);
ok(r == 3, "Expected 3, got %d\n", r);
- sz = sizeof(buf);
- strcpy(buf, "kiwi");
- r = libmsi_record_get_string(rec, 3, buf, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp("A", buf), "Expected \"A\", got \"%s\"\n", buf);
-
+ check_record_string(rec, 3, "A");
g_object_unref(rec);
r = libmsi_query_fetch(query, &rec);
ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- sz = sizeof(buf);
- strcpy(buf, "kiwi");
- r = libmsi_record_get_string(rec, 1, buf, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp("T", buf), "Expected \"T\", got \"%s\"\n", buf);
+ check_record_string(rec, 1, "T");
r = libmsi_record_get_int(rec, 2);
ok(r == 4, "Expected 4, got %d\n", r);
- sz = sizeof(buf);
- strcpy(buf, "kiwi");
- r = libmsi_record_get_string(rec, 3, buf, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp("C", buf), "Expected \"C\", got \"%s\"\n", buf);
-
+ check_record_string(rec, 3, "C");
g_object_unref(rec);
r = libmsi_query_fetch(query, &rec);
ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- sz = sizeof(buf);
- strcpy(buf, "kiwi");
- r = libmsi_record_get_string(rec, 1, buf, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp("T", buf), "Expected \"T\", got \"%s\"\n", buf);
+ check_record_string(rec, 1, "T");
r = libmsi_record_get_int(rec, 2);
ok(r == 5, "Expected 5, got %d\n", r);
- sz = sizeof(buf);
- strcpy(buf, "kiwi");
- r = libmsi_record_get_string(rec, 3, buf, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp("B", buf), "Expected \"B\", got \"%s\"\n", buf);
-
+ check_record_string(rec, 3, "B");
g_object_unref(rec);
r = libmsi_query_fetch(query, &rec);
@@ -7550,71 +7119,22 @@ static void test_columnorder(void)
r = libmsi_query_get_column_info(query, LIBMSI_COL_INFO_TYPES, &rec);
ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- sz = sizeof(buf);
- strcpy(buf, "kiwi");
- r = libmsi_record_get_string(rec, 1, buf, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp("i2", buf), "Expected \"i2\", got \"%s\"\n", buf);
-
- sz = sizeof(buf);
- strcpy(buf, "kiwi");
- r = libmsi_record_get_string(rec, 2, buf, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp("S255", buf), "Expected \"S255\", got \"%s\"\n", buf);
-
- sz = sizeof(buf);
- strcpy(buf, "kiwi");
- r = libmsi_record_get_string(rec, 3, buf, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp("s255", buf), "Expected \"s255\", got \"%s\"\n", buf);
-
- sz = sizeof(buf);
- strcpy(buf, "kiwi");
- r = libmsi_record_get_string(rec, 4, buf, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp("I2", buf), "Expected \"I2\", got \"%s\"\n", buf);
-
- sz = sizeof(buf);
- strcpy(buf, "kiwi");
- r = libmsi_record_get_string(rec, 5, buf, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp("i2", buf), "Expected \"i2\", got \"%s\"\n", buf);
-
+ check_record_string(rec, 1, "i2");
+ check_record_string(rec, 2, "S255");
+ check_record_string(rec, 3, "s255");
+ check_record_string(rec, 4, "I2");
+ check_record_string(rec, 5, "i2");
g_object_unref(rec);
rec = NULL;
r = libmsi_query_get_column_info(query, LIBMSI_COL_INFO_NAMES, &rec);
ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- sz = sizeof(buf);
- strcpy(buf, "kiwi");
- r = libmsi_record_get_string(rec, 1, buf, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp("C", buf), "Expected \"C\", got \"%s\"\n", buf);
-
- sz = sizeof(buf);
- strcpy(buf, "kiwi");
- r = libmsi_record_get_string(rec, 2, buf, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp("A", buf), "Expected \"A\", got \"%s\"\n", buf);
-
- sz = sizeof(buf);
- strcpy(buf, "kiwi");
- r = libmsi_record_get_string(rec, 3, buf, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp("D", buf), "Expected \"D\", got \"%s\"\n", buf);
-
- sz = sizeof(buf);
- strcpy(buf, "kiwi");
- r = libmsi_record_get_string(rec, 4, buf, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp("E", buf), "Expected \"E\", got \"%s\"\n", buf);
-
- sz = sizeof(buf);
- strcpy(buf, "kiwi");
- r = libmsi_record_get_string(rec, 5, buf, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp("B", buf), "Expected \"B\", got \"%s\"\n", buf);
+ check_record_string(rec, 1, "C");
+ check_record_string(rec, 2, "A");
+ check_record_string(rec, 3, "D");
+ check_record_string(rec, 4, "E");
+ check_record_string(rec, 5, "B");
g_object_unref(rec);
libmsi_query_close(query);
@@ -7632,17 +7152,8 @@ static void test_columnorder(void)
r = libmsi_record_get_int(rec, 1);
ok(r == 2, "Expected 2, got %d\n", r);
- sz = sizeof(buf);
- strcpy(buf, "kiwi");
- r = libmsi_record_get_string(rec, 2, buf, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp("a", buf), "Expected \"a\", got \"%s\"\n", buf);
-
- sz = sizeof(buf);
- strcpy(buf, "kiwi");
- r = libmsi_record_get_string(rec, 3, buf, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp("bc", buf), "Expected \"bc\", got \"%s\"\n", buf);
+ check_record_string(rec, 2, "a");
+ check_record_string(rec, 3, "bc");
r = libmsi_record_get_int(rec, 4);
ok(r == 3, "Expected 3, got %d\n", r);
@@ -7662,101 +7173,56 @@ static void test_columnorder(void)
r = libmsi_query_fetch(query, &rec);
ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- sz = sizeof(buf);
- strcpy(buf, "kiwi");
- r = libmsi_record_get_string(rec, 1, buf, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp("T", buf), "Expected \"T\", got \"%s\"\n", buf);
+ check_record_string(rec, 1, "T");
r = libmsi_record_get_int(rec, 2);
ok(r == 1, "Expected 1, got %d\n", r);
- sz = sizeof(buf);
- strcpy(buf, "kiwi");
- r = libmsi_record_get_string(rec, 3, buf, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp("D", buf), "Expected \"D\", got \"%s\"\n", buf);
-
+ check_record_string(rec, 3, "D");
g_object_unref(rec);
r = libmsi_query_fetch(query, &rec);
ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- sz = sizeof(buf);
- strcpy(buf, "kiwi");
- r = libmsi_record_get_string(rec, 1, buf, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp("T", buf), "Expected \"T\", got \"%s\"\n", buf);
+ check_record_string(rec, 1, "T");
r = libmsi_record_get_int(rec, 2);
ok(r == 2, "Expected 2, got %d\n", r);
- sz = sizeof(buf);
- strcpy(buf, "kiwi");
- r = libmsi_record_get_string(rec, 3, buf, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp("E", buf), "Expected \"E\", got \"%s\"\n", buf);
-
+ check_record_string(rec, 3, "E");
g_object_unref(rec);
r = libmsi_query_fetch(query, &rec);
ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- sz = sizeof(buf);
- strcpy(buf, "kiwi");
- r = libmsi_record_get_string(rec, 1, buf, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp("T", buf), "Expected \"T\", got \"%s\"\n", buf);
+ check_record_string(rec, 1, "T");
r = libmsi_record_get_int(rec, 2);
ok(r == 3, "Expected 3, got %d\n", r);
- sz = sizeof(buf);
- strcpy(buf, "kiwi");
- r = libmsi_record_get_string(rec, 3, buf, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp("A", buf), "Expected \"A\", got \"%s\"\n", buf);
-
+ check_record_string(rec, 3, "A");
g_object_unref(rec);
r = libmsi_query_fetch(query, &rec);
ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- sz = sizeof(buf);
- strcpy(buf, "kiwi");
- r = libmsi_record_get_string(rec, 1, buf, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp("T", buf), "Expected \"T\", got \"%s\"\n", buf);
+ check_record_string(rec, 1, "T");
r = libmsi_record_get_int(rec, 2);
ok(r == 4, "Expected 4, got %d\n", r);
- sz = sizeof(buf);
- strcpy(buf, "kiwi");
- r = libmsi_record_get_string(rec, 3, buf, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp("C", buf), "Expected \"C\", got \"%s\"\n", buf);
-
+ check_record_string(rec, 3, "C");
g_object_unref(rec);
r = libmsi_query_fetch(query, &rec);
ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- sz = sizeof(buf);
- strcpy(buf, "kiwi");
- r = libmsi_record_get_string(rec, 1, buf, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp("T", buf), "Expected \"T\", got \"%s\"\n", buf);
+ check_record_string(rec, 1, "T");
r = libmsi_record_get_int(rec, 2);
ok(r == 5, "Expected 5, got %d\n", r);
- sz = sizeof(buf);
- strcpy(buf, "kiwi");
- r = libmsi_record_get_string(rec, 3, buf, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp("B", buf), "Expected \"B\", got \"%s\"\n", buf);
-
+ check_record_string(rec, 3, "B");
g_object_unref(rec);
r = libmsi_query_fetch(query, &rec);
@@ -7778,6 +7244,7 @@ static void test_createtable(void)
unsigned res;
unsigned size;
char buffer[0x20];
+ gchar *str;
hdb = create_db();
ok(hdb, "failed to create db\n");
@@ -7794,9 +7261,9 @@ static void test_createtable(void)
res = libmsi_query_get_column_info( htab, LIBMSI_COL_INFO_NAMES, &hrec );
todo_wine ok(res == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", res);
- size = sizeof(buffer);
- res = libmsi_record_get_string(hrec, 1, buffer, &size );
- todo_wine ok(res == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", res);
+ str = libmsi_record_get_string(hrec, 1);
+ todo_wine ok(str, "Expected string\n");
+ g_free(str);
g_object_unref( hrec );
res = libmsi_query_close( htab );
@@ -7826,11 +7293,7 @@ static void test_createtable(void)
res = libmsi_query_get_column_info( htab, LIBMSI_COL_INFO_NAMES, &hrec );
ok(res == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", res);
- buffer[0] = 0;
- size = sizeof(buffer);
- res = libmsi_record_get_string(hrec, 1, buffer, &size );
- ok(res == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", res);
- ok(!strcmp(buffer,"b"), "b != %s\n", buffer);
+ check_record_string(hrec, 1, "b");
g_object_unref( hrec );
res = libmsi_query_close( htab );
@@ -7854,12 +7317,7 @@ static void test_createtable(void)
res = libmsi_query_get_column_info( htab, LIBMSI_COL_INFO_NAMES, &hrec );
ok(res == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", res);
- buffer[0] = 0;
- size = sizeof(buffer);
- res = libmsi_record_get_string(hrec, 1, buffer, &size );
- ok(res == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", res);
- ok(!strcmp(buffer,"b"), "b != %s\n", buffer);
-
+ check_record_string(hrec, 1, "b");
g_object_unref( hrec );
res = libmsi_query_close( htab );
@@ -7887,6 +7345,7 @@ static void test_embedded_nulls(void)
LibmsiDatabase *hdb;
LibmsiRecord *hrec;
char buffer[32];
+ gchar *str;
r = libmsi_database_open( msifile, LIBMSI_DB_OPEN_CREATE, &hdb );
ok( r == LIBMSI_RESULT_SUCCESS, "failed to open database %u\n", r );
@@ -7899,11 +7358,10 @@ static void test_embedded_nulls(void)
r = do_query( hdb, "SELECT `Text` FROM `Control` WHERE `Dialog` = 'LicenseAgreementDlg'", &hrec );
ok( r == LIBMSI_RESULT_SUCCESS, "query failed %u\n", r );
- buffer[0] = 0;
- sz = sizeof(buffer);
- r = libmsi_record_get_string( hrec, 1, buffer, &sz );
- ok( r == LIBMSI_RESULT_SUCCESS, "failed to get string %u\n", r );
- ok( !memcmp( "text\r\ntext\ntext", buffer, sizeof("text\r\ntext\ntext") - 1 ), "wrong buffer contents \"%s\"\n", buffer );
+ str = libmsi_record_get_string( hrec, 1);
+ ok(str, "failed to get string\n" );
+ ok( !memcmp( "text\r\ntext\ntext", str, sizeof("text\r\ntext\ntext") - 1 ), "wrong buffer contents \"%s\"\n", str );
+ g_free(str);
g_object_unref( hrec );
g_object_unref( hdb );
@@ -7977,11 +7435,8 @@ static void test_select_column_names(void)
ok( r == LIBMSI_RESULT_SUCCESS, "unexpected result: %u\n", r );
r = libmsi_record_get_field_count( rec2 );
ok( r == 1, "got %u\n", r );
- size = sizeof(buffer);
- memset( buffer, 0x55, sizeof(buffer) );
- r = libmsi_record_get_string( rec2, 1, buffer, &size );
- ok( r == LIBMSI_RESULT_SUCCESS, "unexpected result: %u\n", r );
- ok( !buffer[0], "got \"%s\"\n", buffer );
+
+ check_record_string(rec2, 1, "");
g_object_unref( rec2 );
rec2 = NULL;
@@ -7989,27 +7444,16 @@ static void test_select_column_names(void)
ok( r == LIBMSI_RESULT_SUCCESS, "unexpected result: %u\n", r );
r = libmsi_record_get_field_count( rec2 );
ok( r == 1, "got %u\n", r );
- size = sizeof(buffer);
- memset( buffer, 0x55, sizeof(buffer) );
- r = libmsi_record_get_string( rec2, 1, buffer, &size );
- ok( r == LIBMSI_RESULT_SUCCESS, "unexpected result: %u\n", r );
- ok( !strcmp( buffer, "f0" ), "got \"%s\"\n", buffer );
+
+ check_record_string( rec2, 1, "f0");
g_object_unref( rec2 );
- size = sizeof(buffer);
- memset( buffer, 0x55, sizeof(buffer) );
- r = libmsi_record_get_string( rec, 1, buffer, &size );
- ok( r == LIBMSI_RESULT_SUCCESS, "unexpected result: %u\n", r );
- ok( !buffer[0], "got \"%s\"\n", buffer );
+ check_record_string( rec, 1, "");
g_object_unref( rec );
r = libmsi_query_fetch( query, &rec );
ok( r == LIBMSI_RESULT_SUCCESS, "unexpected result: %u\n", r );
- size = sizeof(buffer);
- memset( buffer, 0x55, sizeof(buffer) );
- r = libmsi_record_get_string( rec, 1, buffer, &size );
- ok( r == LIBMSI_RESULT_SUCCESS, "unexpected result: %u\n", r );
- ok( !buffer[0], "got \"%s\"\n", buffer );
+ check_record_string(rec, 1, "");
g_object_unref( rec );
r = libmsi_query_fetch( query, &rec );
@@ -8030,20 +7474,12 @@ static void test_select_column_names(void)
ok( r == LIBMSI_RESULT_SUCCESS, "unexpected result: %u\n", r );
r = libmsi_record_get_field_count( rec );
ok( r == 2, "got %u\n", r );
- size = sizeof(buffer);
- memset( buffer, 0x55, sizeof(buffer) );
- r = libmsi_record_get_string( rec, 1, buffer, &size );
- ok( r == LIBMSI_RESULT_SUCCESS, "unexpected result: %u\n", r );
- ok( !strcmp( buffer, "1" ), "got \"%s\"\n", buffer );
+ check_record_string(rec, 1, "1");
g_object_unref( rec );
r = libmsi_query_fetch( query, &rec );
ok( r == LIBMSI_RESULT_SUCCESS, "unexpected result: %u\n", r );
- size = sizeof(buffer);
- memset( buffer, 0x55, sizeof(buffer) );
- r = libmsi_record_get_string( rec, 2, buffer, &size );
- ok( r == LIBMSI_RESULT_SUCCESS, "unexpected result: %u\n", r );
- ok( !buffer[0], "got \"%s\"\n", buffer );
+ check_record_string( rec, 2, "");
g_object_unref( rec );
r = libmsi_query_fetch( query, &rec );
@@ -8064,30 +7500,14 @@ static void test_select_column_names(void)
ok( r == LIBMSI_RESULT_SUCCESS, "unexpected result: %u\n", r );
r = libmsi_record_get_field_count( rec );
ok( r == 2, "got %u\n", r );
- size = sizeof(buffer);
- memset( buffer, 0x55, sizeof(buffer) );
- r = libmsi_record_get_string( rec, 1, buffer, &size );
- ok( r == LIBMSI_RESULT_SUCCESS, "unexpected result: %u\n", r );
- ok( !buffer[0], "got \"%s\"\n", buffer );
- size = sizeof(buffer);
- memset( buffer, 0x55, sizeof(buffer) );
- r = libmsi_record_get_string( rec, 2, buffer, &size );
- ok( r == LIBMSI_RESULT_SUCCESS, "unexpected result: %u\n", r );
- ok( !strcmp( buffer, "1" ), "got \"%s\"\n", buffer );
+ check_record_string( rec, 1, "");
+ check_record_string( rec, 2, "1");
g_object_unref( rec );
r = libmsi_query_fetch( query, &rec );
ok( r == LIBMSI_RESULT_SUCCESS, "unexpected result: %u\n", r );
- size = sizeof(buffer);
- memset( buffer, 0x55, sizeof(buffer) );
- r = libmsi_record_get_string( rec, 1, buffer, &size );
- ok( r == LIBMSI_RESULT_SUCCESS, "unexpected result: %u\n", r );
- ok( !buffer[0], "got \"%s\"\n", buffer );
- size = sizeof(buffer);
- memset( buffer, 0x55, sizeof(buffer) );
- r = libmsi_record_get_string( rec, 2, buffer, &size );
- ok( r == LIBMSI_RESULT_SUCCESS, "unexpected result: %u\n", r );
- ok( !strcmp( buffer, "3" ), "got \"%s\"\n", buffer );
+ check_record_string( rec, 1, "");
+ check_record_string(rec, 2, "3");
g_object_unref( rec );
r = libmsi_query_fetch( query, &rec );
@@ -8108,40 +7528,16 @@ static void test_select_column_names(void)
ok( r == LIBMSI_RESULT_SUCCESS, "unexpected result: %u\n", r );
r = libmsi_record_get_field_count( rec );
ok( r == 3, "got %u\n", r );
- size = sizeof(buffer);
- memset( buffer, 0x55, sizeof(buffer) );
- r = libmsi_record_get_string( rec, 1, buffer, &size );
- ok( r == LIBMSI_RESULT_SUCCESS, "unexpected result: %u\n", r );
- ok( !strcmp( buffer, "1" ), "got \"%s\"\n", buffer );
- size = sizeof(buffer);
- memset( buffer, 0x55, sizeof(buffer) );
- r = libmsi_record_get_string( rec, 2, buffer, &size );
- ok( r == LIBMSI_RESULT_SUCCESS, "unexpected result: %u\n", r );
- ok( !buffer[0], "got \"%s\"\n", buffer );
- size = sizeof(buffer);
- memset( buffer, 0x55, sizeof(buffer) );
- r = libmsi_record_get_string( rec, 3, buffer, &size );
- ok( r == LIBMSI_RESULT_SUCCESS, "unexpected result: %u\n", r );
- ok( !strcmp( buffer, "2" ), "got \"%s\"\n", buffer );
+ check_record_string(rec, 1, "1");
+ check_record_string(rec, 2, "");
+ check_record_string(rec, 3, "2");
g_object_unref( rec );
r = libmsi_query_fetch( query, &rec );
ok( r == LIBMSI_RESULT_SUCCESS, "unexpected result: %u\n", r );
- size = sizeof(buffer);
- memset( buffer, 0x55, sizeof(buffer) );
- r = libmsi_record_get_string( rec, 1, buffer, &size );
- ok( r == LIBMSI_RESULT_SUCCESS, "unexpected result: %u\n", r );
- ok( !strcmp( buffer, "3" ), "got \"%s\"\n", buffer );
- size = sizeof(buffer);
- memset( buffer, 0x55, sizeof(buffer) );
- r = libmsi_record_get_string( rec, 2, buffer, &size );
- ok( r == LIBMSI_RESULT_SUCCESS, "unexpected result: %u\n", r );
- ok( !buffer[0], "got \"%s\"\n", buffer );
- size = sizeof(buffer);
- memset( buffer, 0x55, sizeof(buffer) );
- r = libmsi_record_get_string( rec, 3, buffer, &size );
- ok( r == LIBMSI_RESULT_SUCCESS, "unexpected result: %u\n", r );
- ok( !strcmp( buffer, "4" ), "got \"%s\"\n", buffer );
+ check_record_string(rec, 1, "3");
+ check_record_string(rec, 2, "");
+ check_record_string(rec, 3, "4");
g_object_unref( rec );
r = libmsi_query_fetch( query, &rec );
diff --git a/tests/testrecord.c b/tests/testrecord.c
index ad03a43..5736c9c 100644
--- a/tests/testrecord.c
+++ b/tests/testrecord.c
@@ -83,13 +83,7 @@ static void test_msirecord (void)
ok (r, "out of range record wasn't null\n");
r = libmsi_record_is_null (h, -1);
ok (r, "out of range record wasn't null\n");
- sz = sizeof buf;
- strcpy (buf, "x");
- r = libmsi_record_get_string (h, 0, buf, &sz);
- ok (r == LIBMSI_RESULT_SUCCESS, "failed to get null string\n");
- ok (sz == 0, "null string too long\n");
- ok (buf[0] == 0, "null string not set\n");
-
+ check_record_string (h, 0, "");
/* same record, but add an integer to it */
r = libmsi_record_set_int (h, 0, 0);
ok (r == LIBMSI_RESULT_SUCCESS, "Failed to set integer at 0 to 0\n");
@@ -111,63 +105,19 @@ static void test_msirecord (void)
ok (r == LIBMSI_RESULT_SUCCESS, "Failed to set null string at 0\n");
r = libmsi_record_is_null (h, 0);
ok (r == true, "null string not null field\n");
- buf[0] = 0;
- sz = sizeof buf;
- r = libmsi_record_get_string (h, 0, buf, &sz);
- ok (r == LIBMSI_RESULT_SUCCESS, "Failed to get string at 0\n");
- ok (buf[0] == 0, "libmsi_record_get_string returned the wrong string\n");
- ok (sz == 0, "libmsi_record_get_string returned the wrong length\n");
+ check_record_string (h, 0, "");
r = libmsi_record_set_string (h, 0, "");
ok (r == LIBMSI_RESULT_SUCCESS, "Failed to set empty string at 0\n");
r = libmsi_record_is_null (h, 0);
ok (r == true, "null string not null field\n");
- buf[0] = 0;
- sz = sizeof buf;
- r = libmsi_record_get_string (h, 0, buf, &sz);
- ok (r == LIBMSI_RESULT_SUCCESS, "Failed to get string at 0\n");
- ok (buf[0] == 0, "libmsi_record_get_string returned the wrong string\n");
- ok (sz == 0, "libmsi_record_get_string returned the wrong length\n");
+ check_record_string (h, 0, "");
/* same record, but add a string to it */
r = libmsi_record_set_string (h, 0, str);
ok (r == LIBMSI_RESULT_SUCCESS, "Failed to set string at 0\n");
r = libmsi_record_get_int (h, 0);
ok (r == LIBMSI_NULL_INT, "should get invalid integer\n");
- buf[0]=0;
- sz = sizeof buf;
- r = libmsi_record_get_string (h, 0, buf, &sz);
- ok (r == LIBMSI_RESULT_SUCCESS, "Failed to get string at 0\n");
- ok (0 == strcmp (buf, str), "libmsi_record_get_string returned the wrong string\n");
- ok (sz == sizeof str-1, "libmsi_record_get_string returned the wrong length\n");
- buf[0]=0;
- sz = sizeof str - 2;
- r = libmsi_record_get_string (h, 0, buf, &sz);
- ok (r == LIBMSI_RESULT_MORE_DATA, "small buffer should yield LIBMSI_RESULT_MORE_DATA\n");
- ok (sz == sizeof str-1, "libmsi_record_get_string returned the wrong length\n");
- ok (0 == strncmp (buf, str, sizeof str-3), "libmsi_record_get_string returned the wrong string\n");
- ok (buf[sizeof str - 3] == 0, "string wasn't nul terminated\n");
-
- buf[0]=0;
- sz = sizeof str;
- r = libmsi_record_get_string (h, 0, buf, &sz);
- ok (r == LIBMSI_RESULT_SUCCESS, "wrong error\n");
- ok (sz == sizeof str-1, "libmsi_record_get_string returned the wrong length\n");
- ok (0 == strcmp (buf, str), "libmsi_record_get_string returned the wrong string\n");
-
-
- memset (buf, 0, sizeof buf);
- sz = 5;
- r = libmsi_record_get_string (h, 0, buf, &sz);
- ok (r == LIBMSI_RESULT_MORE_DATA, "wrong error\n");
- ok (sz == 5, "libmsi_record_get_string returned the wrong length\n");
- ok (0 == memcmp (buf, str, 4), "libmsi_record_get_string returned the wrong string\n");
-
- sz = 0;
- buf[0] = 'x';
- r = libmsi_record_get_string (h, 0, buf, &sz);
- ok (r == LIBMSI_RESULT_MORE_DATA, "wrong error\n");
- ok (sz == 5, "libmsi_record_get_string returned the wrong length\n");
- ok ('x' == buf[0], "libmsi_record_get_string returned the wrong string\n");
+ check_record_string (h, 0, str);
/* same record, check we can wipe all the data */
r = libmsi_record_clear (h);
@@ -234,27 +184,10 @@ static void test_msirecord (void)
/* same record, try converting integers to strings */
r = libmsi_record_set_int (h, 0, 32);
ok (r == LIBMSI_RESULT_SUCCESS, "Failed to set integer at 0 to 32\n");
- sz = 1;
- r = libmsi_record_get_string (h, 0, NULL, &sz);
- ok (r == LIBMSI_RESULT_SUCCESS, "failed to get string from integer\n");
- ok (sz == 2, "length wrong\n");
- buf[0]=0;
- sz = sizeof buf;
- r = libmsi_record_get_string (h, 0, buf, &sz);
- ok (r == LIBMSI_RESULT_SUCCESS, "failed to get string from integer\n");
- ok (0 == strcmp (buf, "32"), "failed to get string from integer\n");
+ check_record_string (h, 0, "32");
r = libmsi_record_set_int (h, 0, -32);
ok (r == LIBMSI_RESULT_SUCCESS, "Failed to set integer at 0 to 32\n");
- buf[0]=0;
- sz = 1;
- r = libmsi_record_get_string (h, 0, NULL, &sz);
- ok (r == LIBMSI_RESULT_SUCCESS, "failed to get string from integer\n");
- ok (sz == 3, "length wrong\n");
- sz = sizeof buf;
- r = libmsi_record_get_string (h, 0, buf, &sz);
- ok (r == LIBMSI_RESULT_SUCCESS, "failed to get string from integer\n");
- ok (0 == strcmp (buf, "-32"), "failed to get string from integer\n");
- buf[0]=0;
+ check_record_string (h, 0, "-32");
/* same record, now try streams */
r = libmsi_record_load_stream (h, 0, NULL);
@@ -333,26 +266,7 @@ static void test_MsiRecordGetString (void)
rec = libmsi_record_new (2);
ok (rec != 0, "Expected a valid handle\n");
-
- sz = sizeof (buf);
- r = libmsi_record_get_string (rec, 1, NULL, &sz);
- ok (r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok (sz == 0, "Expected 0, got %d\n", sz);
-
- sz = sizeof (buf);
- strcpy (buf, "apple");
- r = libmsi_record_get_string (rec, 1, buf, &sz);
- ok (r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok (!strcmp (buf, ""), "Expected \"\", got \"%s\"\n", buf);
- ok (sz == 0, "Expected 0, got %d\n", sz);
-
- sz = sizeof (buf);
- strcpy (buf, "apple");
- r = libmsi_record_get_string (rec, 10, buf, &sz);
- ok (r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok (!strcmp (buf, ""), "Expected \"\", got \"%s\"\n", buf);
- ok (sz == 0, "Expected 0, got %d\n", sz);
-
+ check_record_string(rec, 1, "");
g_object_unref (rec);
rec = libmsi_record_new (1);
@@ -360,28 +274,11 @@ static void test_MsiRecordGetString (void)
r = libmsi_record_set_int (rec, 1, 5);
ok (r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
-
- sz = sizeof (buf);
- r = libmsi_record_get_string (rec, 1, NULL, &sz);
- ok (r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok (sz == 1, "Expected 1, got %d\n", sz);
-
- sz = sizeof (buf);
- strcpy (buf, "apple");
- r = libmsi_record_get_string (rec, 1, buf, &sz);
- ok (r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok (!strcmp (buf, "5"), "Expected \"5\", got \"%s\"\n", buf);
- ok (sz == 1, "Expectd 1, got %d\n", sz);
+ check_record_string (rec, 1, "5");
r = libmsi_record_set_int (rec, 1, -5);
ok (r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
-
- sz = sizeof (buf);
- strcpy (buf, "apple");
- r = libmsi_record_get_string (rec, 1, buf, &sz);
- ok (r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok (!strcmp (buf, "-5"), "Expected \"-5\", got \"%s\"\n", buf);
- ok (sz == 2, "Expectd 2, got %d\n", sz);
+ check_record_string (rec, 1, "-5");
g_object_unref (rec);
}
@@ -432,12 +329,7 @@ static void test_fieldzero (void)
r = libmsi_record_get_int (rec, 0);
ok (r == LIBMSI_NULL_INT, "Expected LIBMSI_NULL_INT, got %d\n", r);
- sz = sizeof (buf);
- strcpy (buf, "apple");
- r = libmsi_record_get_string (rec, 0, buf, &sz);
- ok (r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok (!strcmp (buf, ""), "Expected \"\", got \"%s\"\n", buf);
- ok (sz == 0, "Expectd 0, got %d\n", sz);
+ check_record_string (rec, 0, "");
r = libmsi_record_is_null (rec, 0);
ok (r == true, "Expected true, got %d\n", r);
@@ -451,12 +343,7 @@ static void test_fieldzero (void)
r = libmsi_record_get_int (rec, 0);
ok (r == LIBMSI_NULL_INT, "Expected LIBMSI_NULL_INT, got %d\n", r);
- sz = sizeof (buf);
- strcpy (buf, "apple");
- r = libmsi_record_get_string (rec, 0, buf, &sz);
- ok (r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok (!strcmp (buf, ""), "Expected \"\", got \"%s\"\n", buf);
- ok (sz == 0, "Expectd 0, got %d\n", sz);
+ check_record_string (rec, 0, "");
r = libmsi_record_is_null (rec, 0);
ok (r == true, "Expected true, got %d\n", r);
@@ -470,22 +357,12 @@ static void test_fieldzero (void)
r = libmsi_record_get_int (rec, 0);
ok (r == LIBMSI_NULL_INT, "Expected LIBMSI_NULL_INT, got %d\n", r);
- sz = sizeof (buf);
- strcpy (buf, "apple");
- r = libmsi_record_get_string (rec, 0, buf, &sz);
- ok (r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok (!strcmp (buf, ""), "Expected \"\", got \"%s\"\n", buf);
- ok (sz == 0, "Expectd 0, got %d\n", sz);
+ check_record_string (rec, 0, "");
r = libmsi_record_is_null (rec, 0);
ok (r == true, "Expected true, got %d\n", r);
- sz = sizeof (buf);
- strcpy (buf, "apple");
- r = libmsi_record_get_string (rec, 1, buf, &sz);
- ok (r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok (!strcmp (buf, "bologna"), "Expected \"bologna\", got \"%s\"\n", buf);
- ok (sz == 7, "Expectd 7, got %d\n", sz);
+ check_record_string (rec, 1, "bologna");
g_object_unref (rec);
@@ -520,12 +397,7 @@ static void test_fieldzero (void)
r = libmsi_record_get_int (rec, 0);
ok (r == LIBMSI_NULL_INT, "Expected LIBMSI_NULL_INT, got %d\n", r);
- sz = sizeof (buf);
- strcpy (buf, "apple");
- r = libmsi_record_get_string (rec, 0, buf, &sz);
- ok (r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok (!strcmp (buf, "drone"), "Expected \"drone\", got \"%s\"\n", buf);
- ok (sz == 5, "Expectd 5, got %d\n", sz);
+ check_record_string (rec, 0, "drone");
r = libmsi_record_is_null (rec, 0);
ok (r == false, "Expected false, got %d\n", r);
diff --git a/tools/msiinfo.c b/tools/msiinfo.c
index 228740e..3dff6ce 100644
--- a/tools/msiinfo.c
+++ b/tools/msiinfo.c
@@ -168,16 +168,15 @@ static LibmsiResult print_strings_from_query(LibmsiQuery *query)
{
LibmsiRecord *rec = NULL;
LibmsiResult r;
- char name[PATH_MAX];
+ gchar *name;
while ((r = libmsi_query_fetch(query, &rec)) == LIBMSI_RESULT_SUCCESS) {
- unsigned size = PATH_MAX;
- r = libmsi_record_get_string(rec, 1, name, &size);
- if (r) {
- print_libmsi_error(r);
- }
+ name = libmsi_record_get_string(rec, 1);
+ g_return_val_if_fail(name != NULL, LIBMSI_RESULT_FUNCTION_FAILED);
puts(name);
+
+ g_free(name);
g_object_unref(rec);
}
@@ -433,7 +432,8 @@ static unsigned export_create_table(const char *table,
int num_keys = libmsi_record_get_field_count(keys);
int i, len;
unsigned r;
- char type[30], name[100], size[20], extra[30];
+ char size[20], extra[30];
+ gchar *name, *type;
unsigned sz;
if (!strcmp(table, "_Tables") ||
@@ -446,17 +446,11 @@ static unsigned export_create_table(const char *table,
printf("CREATE TABLE `%s` (", table);
for (i = 1; i <= num_columns; i++)
{
- sz = sizeof(name);
- r = libmsi_record_get_string(names, i, name, &sz);
- if (r) {
- return r;
- }
+ name = libmsi_record_get_string(names, i);
+ g_return_val_if_fail(name != NULL, LIBMSI_RESULT_FUNCTION_FAILED);
- sz = sizeof(type);
- r = libmsi_record_get_string(types, i, type, &sz);
- if (r) {
- return r;
- }
+ type = libmsi_record_get_string(types, i);
+ g_return_val_if_fail(type != NULL, LIBMSI_RESULT_FUNCTION_FAILED);
if (i > 1) {
printf(", ");
@@ -493,16 +487,17 @@ static unsigned export_create_table(const char *table,
}
printf("`%s` %s%s", name, type, extra);
+ g_free(name);
+ g_free(type);
}
+
for (i = 1; i <= num_keys; i++)
{
- sz = sizeof(name);
- r = libmsi_record_get_string(names, i, name, &sz);
- if (r) {
- return r;
- }
+ name = libmsi_record_get_string(names, i);
+ g_return_val_if_fail(name != NULL, LIBMSI_RESULT_FUNCTION_FAILED);
printf("%s `%s`", (i > 1 ? "," : " PRIMARY KEY"), name);
+ g_free(name);
}
printf(")\n");
return r;
@@ -529,9 +524,9 @@ static unsigned export_insert(const char *table,
LibmsiRecord *vals)
{
int num_columns = libmsi_record_get_field_count(names);
+ gchar *name, *type;
int i;
unsigned r;
- char type[30], name[100];
unsigned sz;
char *s;
@@ -543,16 +538,15 @@ static unsigned export_insert(const char *table,
}
sz = sizeof(name);
- r = libmsi_record_get_string(names, i, name, &sz);
- if (r) {
- return r;
- }
+ name = libmsi_record_get_string(names, i);
+ g_return_val_if_fail(name != NULL, LIBMSI_RESULT_FUNCTION_FAILED);
if (i > 1) {
printf(", ");
}
printf("`%s`", name);
+ g_free(name);
}
printf(") VALUES (");
for (i = 1; i <= num_columns; i++)
@@ -566,23 +560,14 @@ static unsigned export_insert(const char *table,
}
sz = sizeof(type);
- r = libmsi_record_get_string(types, i, type, &sz);
- if (r) {
- return r;
- }
+ type = libmsi_record_get_string(types, i);
+ g_return_val_if_fail(type != NULL, LIBMSI_RESULT_FUNCTION_FAILED);
switch (type[0])
{
case 'l': case 'L':
case 's': case 'S':
- sz = INT_MAX;
- r = libmsi_record_get_string(vals, i, NULL, &sz);
- if (r) {
- return r;
- }
-
- s = g_malloc(++sz);
- libmsi_record_get_string(vals, i, s, &sz);
+ s = libmsi_record_get_string(vals, i);
print_quoted_string(s);
g_free(s);
break;
@@ -596,6 +581,8 @@ static unsigned export_insert(const char *table,
default:
abort();
}
+
+ g_free(type);
}
printf(")\n");
return r;