summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarc-André Lureau <marcandre.lureau@gmail.com>2012-12-17 15:58:26 +0100
committerPaolo Bonzini <pbonzini@redhat.com>2013-01-09 13:56:07 +0100
commitaba7f9598b90f8822982c15b60636323d109450a (patch)
tree1e68c290fe7d69d058360acf4e520314e5820c73
parent78378eb67820c77b1c0ff7a2643d7b8953735b74 (diff)
downloadmsitools-aba7f9598b90f8822982c15b60636323d109450a.tar.gz
msitools-aba7f9598b90f8822982c15b60636323d109450a.tar.xz
msitools-aba7f9598b90f8822982c15b60636323d109450a.zip
database: remove folder argument from import()
-rw-r--r--include/libmsi-database.h1
-rw-r--r--libmsi/libmsi-database.c30
-rw-r--r--tests/testdatabase.c16
-rw-r--r--tools/msibuild.c5
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;