summaryrefslogtreecommitdiffstats
path: root/tests/testdatabase.c
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2012-10-23 13:14:40 +0200
committerPaolo Bonzini <pbonzini@redhat.com>2012-12-06 20:30:30 +0100
commit021e34abc22eea0b914ab474562f02625d7ec4eb (patch)
tree71da66933ff020dda790f86b54decd0b416a6599 /tests/testdatabase.c
parent1dba1a9fcf1fe41188ad97d4bed9920809c4c22d (diff)
downloadmsitools-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.c33
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"),