From aba7f9598b90f8822982c15b60636323d109450a Mon Sep 17 00:00:00 2001 From: Marc-André Lureau Date: Mon, 17 Dec 2012 15:58:26 +0100 Subject: database: remove folder argument from import() --- include/libmsi-database.h | 1 - libmsi/libmsi-database.c | 30 ++++++++---------------------- tests/testdatabase.c | 16 +++++++--------- tools/msibuild.c | 5 +---- 4 files changed, 16 insertions(+), 36 deletions(-) diff --git a/include/libmsi-database.h b/include/libmsi-database.h index 7a4ed54..e985f64 100644 --- a/include/libmsi-database.h +++ b/include/libmsi-database.h @@ -58,7 +58,6 @@ gboolean libmsi_database_export (LibmsiDatabase *db, int fd, GError **error); gboolean libmsi_database_import (LibmsiDatabase *db, - const char *folder, const char *filename, GError **error); gboolean libmsi_database_is_table_persistent (LibmsiDatabase *db, diff --git a/libmsi/libmsi-database.c b/libmsi/libmsi-database.c index df4a26d..8120b4d 100644 --- a/libmsi/libmsi-database.c +++ b/libmsi/libmsi-database.c @@ -1083,7 +1083,7 @@ done: return r; } -static unsigned _libmsi_database_import(LibmsiDatabase *db, const char *folder, const char *file) +static unsigned _libmsi_database_import(LibmsiDatabase *db, const char *path) { unsigned r = LIBMSI_RESULT_OUTOFMEMORY; unsigned len, i; @@ -1091,7 +1091,6 @@ static unsigned _libmsi_database_import(LibmsiDatabase *db, const char *folder, unsigned num_types = 0; unsigned num_columns = 0; unsigned num_records = 0; - char *path = NULL; char **columns = NULL; char **types = NULL; char **labels = NULL; @@ -1103,19 +1102,7 @@ static unsigned _libmsi_database_import(LibmsiDatabase *db, const char *folder, static const char suminfo[] = "_SummaryInformation"; static const char forcecodepage[] = "_ForceCodepage"; - TRACE("%p %s %s\n", db, debugstr_a(folder), debugstr_a(file) ); - - if( folder == NULL || file == NULL ) - return LIBMSI_RESULT_INVALID_PARAMETER; - - len = strlen(folder) + 1 + strlen(file) + 1; - path = msi_alloc( len ); - if (!path) - return LIBMSI_RESULT_OUTOFMEMORY; - - strcpy( path, folder ); - strcat( path, G_DIR_SEPARATOR_S ); - strcat( path, file ); + TRACE("%p %s\n", db, debugstr_a(path)); data = msi_read_text_archive( path, &len ); if (!data) @@ -1186,7 +1173,6 @@ static unsigned _libmsi_database_import(LibmsiDatabase *db, const char *folder, } done: - msi_free(path); msi_free(data); msi_free(columns); msi_free(types); @@ -1202,19 +1188,19 @@ done: gboolean libmsi_database_import (LibmsiDatabase *db, - const char *folder, - const char *filename, + const char *path, GError **error) { unsigned r; - TRACE("%x %s %s\n",db,debugstr_a(folder), debugstr_a(filename)); + TRACE("%p %s\n",db,debugstr_a(path)); - if( !db ) - return LIBMSI_RESULT_INVALID_HANDLE; + g_return_val_if_fail (LIBMSI_IS_DATABASE (db), FALSE); + g_return_val_if_fail (path, FALSE); + g_return_val_if_fail (!error || *error == NULL, FALSE); g_object_ref(db); - r = _libmsi_database_import(db, folder, filename); + r = _libmsi_database_import(db, path); g_object_unref(db); if (r != LIBMSI_RESULT_SUCCESS) diff --git a/tests/testdatabase.c b/tests/testdatabase.c index 13180d1..58bce0a 100644 --- a/tests/testdatabase.c +++ b/tests/testdatabase.c @@ -50,7 +50,6 @@ static const char *mstfile = "winetst-db.mst"; static const WCHAR msifileW[] = {'w','i','n','e','t','e','s','t','-','d','b','.','m','s','i',0}; -static char CURR_DIR[260]; static void test_msidatabase(void) { @@ -1693,7 +1692,7 @@ static unsigned add_table_to_db(LibmsiDatabase *hdb, const char *table_data) unsigned r = LIBMSI_RESULT_SUCCESS; write_file("temp_file", table_data, (strlen(table_data) - 1) * sizeof(char)); - if (!libmsi_database_import(hdb, CURR_DIR, "temp_file", &err)) + if (!libmsi_database_import(hdb, "temp_file", &err)) r = err->code; g_clear_error(&err); @@ -2029,7 +2028,7 @@ static void test_binary_import(void) hdb = libmsi_database_new(msifile, LIBMSI_DB_OPEN_CREATE, NULL); ok(hdb , "Failed to open database\n"); - r = libmsi_database_import(hdb, CURR_DIR, "bin_import.idt", NULL); + r = libmsi_database_import(hdb, "bin_import.idt", NULL); ok(r , "Failed to import Binary table\n"); /* read file from the Binary table */ @@ -5261,7 +5260,7 @@ static void test_quotes(void) write_file("import.idt", import_dat, (sizeof(import_dat) - 1) * sizeof(char)); - r = libmsi_database_import(hdb, CURR_DIR, "import.idt", NULL); + r = libmsi_database_import(hdb, "import.idt", NULL); ok(r, "libmsi_database_import() failed\n"); unlink("import.idt"); @@ -5687,7 +5686,7 @@ static void test_forcecodepage(void) create_file_data("forcecodepage.idt", "\r\n\r\n850\t_ForceCodepage\r\n", 0); - r = libmsi_database_import(hdb, CURR_DIR, "forcecodepage.idt", NULL); + r = libmsi_database_import(hdb, "forcecodepage.idt", NULL); ok(r, "libmsi_database_import() failed\n"); fd = open("forcecodepage.idt", O_WRONLY | O_BINARY | O_CREAT, 0644); @@ -5703,7 +5702,7 @@ static void test_forcecodepage(void) create_file_data("forcecodepage.idt", "\r\n\r\n9999\t_ForceCodepage\r\n", 0); - r = libmsi_database_import(hdb, CURR_DIR, "forcecodepage.idt", NULL); + r = libmsi_database_import(hdb, "forcecodepage.idt", NULL); ok(!r, "Expected failure\n"); g_object_unref(hdb); @@ -6471,7 +6470,7 @@ static void test_dbmerge(void) create_file_data("codepage.idt", "\r\n\r\n850\t_ForceCodepage\r\n", 0); - r = libmsi_database_import(hdb, CURR_DIR, "codepage.idt", NULL); + r = libmsi_database_import(hdb, "codepage.idt", NULL); ok(r, "libmsi_database_import() failed\n"); sql = "DROP TABLE `One`"; @@ -7255,7 +7254,7 @@ static void test_embedded_nulls(void) ok(hdb, "failed to open database %u\n", r ); write_file( "temp_file", control_table, sizeof(control_table) ); - r = libmsi_database_import( hdb, CURR_DIR, "temp_file", NULL); + r = libmsi_database_import( hdb, "temp_file", NULL); ok(r, "libmsi_database_import() failed\n"); unlink( "temp_file" ); @@ -7458,7 +7457,6 @@ static void test_select_column_names(void) void main() { g_type_init(); - getcwd(CURR_DIR, sizeof(CURR_DIR)); test_msidatabase(); test_msiinsert(); diff --git a/tools/msibuild.c b/tools/msibuild.c index cf52820..4ba00e1 100644 --- a/tools/msibuild.c +++ b/tools/msibuild.c @@ -133,10 +133,7 @@ static gboolean import_table(char *table, GError **error) gboolean success = TRUE; char dir[PATH_MAX]; - if (getcwd(dir, PATH_MAX) == NULL) - return 1; - - if (!libmsi_database_import(db, dir, table, error)) + if (!libmsi_database_import(db, table, error)) { fprintf(stderr, "failed to import table %s\n", table); success = FALSE; -- cgit