diff options
author | Paolo Bonzini <pbonzini@redhat.com> | 2012-10-23 13:14:40 +0200 |
---|---|---|
committer | Paolo Bonzini <pbonzini@redhat.com> | 2012-12-06 20:30:30 +0100 |
commit | 021e34abc22eea0b914ab474562f02625d7ec4eb (patch) | |
tree | 71da66933ff020dda790f86b54decd0b416a6599 /tests/testdatabase.c | |
parent | 1dba1a9fcf1fe41188ad97d4bed9920809c4c22d (diff) | |
download | msitools-021e34abc22eea0b914ab474562f02625d7ec4eb.tar.gz msitools-021e34abc22eea0b914ab474562f02625d7ec4eb.tar.xz msitools-021e34abc22eea0b914ab474562f02625d7ec4eb.zip |
make MsiDatabaseExport accept a file descriptor
Diffstat (limited to 'tests/testdatabase.c')
-rw-r--r-- | tests/testdatabase.c | 33 |
1 files changed, 22 insertions, 11 deletions
diff --git a/tests/testdatabase.c b/tests/testdatabase.c index 7995e8d..7d73933 100644 --- a/tests/testdatabase.c +++ b/tests/testdatabase.c @@ -21,6 +21,8 @@ #define COBJMACROS #include <stdio.h> +#include <fcntl.h> +#include <unistd.h> #include <windows.h> #include <libmsi.h> @@ -1327,7 +1329,7 @@ static void test_msiexport(void) LibmsiObject *hview = 0; unsigned r; const char *query; - char path[MAX_PATH]; + int fd; const char file[] = "phone.txt"; HANDLE handle; char buffer[0x100]; @@ -1369,28 +1371,28 @@ static void test_msiexport(void) r = MsiCloseHandle(hview); ok(r == ERROR_SUCCESS, "MsiCloseHandle failed\n"); - GetCurrentDirectory(MAX_PATH, path); + fd = open(file, O_WRONLY | O_BINARY | O_CREAT, 0644); + ok(fd != -1, "open failed\n"); - r = MsiDatabaseExport(hdb, "phone", path, file); + r = MsiDatabaseExport(hdb, "phone", fd); ok(r == ERROR_SUCCESS, "MsiDatabaseExport failed\n"); - MsiCloseHandle(hdb); + close(fd); - strcat(path, "\\"); - strcat(path, file); + MsiCloseHandle(hdb); /* check the data that was written */ length = 0; memset(buffer, 0, sizeof buffer); - handle = CreateFile(path, GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL); + handle = CreateFile(file, GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL); if (handle != INVALID_HANDLE_VALUE) { ReadFile(handle, buffer, sizeof buffer, &length, NULL); CloseHandle(handle); - DeleteFile(path); + DeleteFile(file); } else - ok(0, "failed to open file %s\n", path); + 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"); @@ -7086,6 +7088,7 @@ static void test_forcecodepage(void) const char *query; char buffer[MAX_PATH]; unsigned r; + int fd; DeleteFile(msifile); GetCurrentDirectoryA(MAX_PATH, CURR_DIR); @@ -7121,8 +7124,12 @@ static void test_forcecodepage(void) r = run_query(hdb, 0, query); ok(r == ERROR_BAD_QUERY_SYNTAX, "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n", r); - r = MsiDatabaseExport(hdb, "_ForceCodepage", CURR_DIR, "forcecodepage.idt"); + fd = open("forcecodepage.idt", O_WRONLY | O_BINARY | O_CREAT, 0644); + ok(fd != -1, "cannot open file\n"); + + r = MsiDatabaseExport(hdb, "_ForceCodepage", fd); ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r); + close(fd); read_file_data("forcecodepage.idt", buffer); ok(!strcmp(buffer, "\r\n\r\n0\t_ForceCodepage\r\n"), @@ -7133,8 +7140,12 @@ static void test_forcecodepage(void) r = MsiDatabaseImport(hdb, CURR_DIR, "forcecodepage.idt"); ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r); - r = MsiDatabaseExport(hdb, "_ForceCodepage", CURR_DIR, "forcecodepage.idt"); + fd = open("forcecodepage.idt", O_WRONLY | O_BINARY | O_CREAT, 0644); + ok(fd != -1, "cannot open file\n"); + + r = MsiDatabaseExport(hdb, "_ForceCodepage", fd); ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r); + close(fd); read_file_data("forcecodepage.idt", buffer); ok(!strcmp(buffer, "\r\n\r\n850\t_ForceCodepage\r\n"), |