#define GLIB_DISABLE_DEPRECATION_WARNINGS
-#include <config.h>
#include <glib.h>
#include <string.h>
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
#include <glib/gstdio.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <fcntl.h>
+#ifdef G_OS_UNIX
+#include <unistd.h>
+#endif
+#ifdef G_OS_WIN32
+#include <io.h>
+#endif
+
static void
test_basic (void)
{
GError *error;
error = NULL;
- file = g_mapped_file_new (SRCDIR "/empty", FALSE, &error);
+ file = g_mapped_file_new (g_test_get_filename (G_TEST_DIST, "empty", NULL), FALSE, &error);
g_assert_no_error (error);
g_mapped_file_ref (file);
GError *error;
error = NULL;
- file = g_mapped_file_new (SRCDIR "/empty", FALSE, &error);
+ file = g_mapped_file_new (g_test_get_filename (G_TEST_DIST, "empty", NULL), FALSE, &error);
g_assert_no_error (error);
g_assert (g_mapped_file_get_contents (file) == NULL);
file = g_mapped_file_new ("/dev/null", FALSE, &error);
g_assert (g_error_matches (error, G_FILE_ERROR, G_FILE_ERROR_INVAL) ||
+ g_error_matches (error, G_FILE_ERROR, G_FILE_ERROR_NODEV) ||
g_error_matches (error, G_FILE_ERROR, G_FILE_ERROR_NOMEM));
g_assert (file == NULL);
g_error_free (error);
test_writable (void)
{
GMappedFile *file;
- GError *error;
+ GError *error = NULL;
gchar *contents;
+ gsize len;
const gchar *old = "MMMMMMMMMMMMMMMMMMMMMMMMM";
const gchar *new = "abcdefghijklmnopqrstuvxyz";
+ gchar *tmp_copy_path;
- if (access (SRCDIR "/4096-random-bytes", W_OK) != 0)
- {
- g_test_message ("Skipping writable mapping test");
- return;
- }
+ tmp_copy_path = g_build_filename (g_get_user_runtime_dir (), "glib-test-4096-random-bytes", NULL);
- error = NULL;
- file = g_mapped_file_new (SRCDIR "/4096-random-bytes", TRUE, &error);
+ g_file_get_contents (g_test_get_filename (G_TEST_DIST, "4096-random-bytes", NULL), &contents, &len, &error);
+ g_assert_no_error (error);
+ g_file_set_contents (tmp_copy_path, contents, len, &error);
+ g_assert_no_error (error);
+
+ g_free (contents);
+
+ file = g_mapped_file_new (tmp_copy_path, TRUE, &error);
g_assert_no_error (error);
contents = g_mapped_file_get_contents (file);
g_mapped_file_free (file);
error = NULL;
- file = g_mapped_file_new (SRCDIR "/4096-random-bytes", TRUE, &error);
+ file = g_mapped_file_new (tmp_copy_path, FALSE, &error);
g_assert_no_error (error);
contents = g_mapped_file_get_contents (file);
g_assert (strncmp (contents, old, strlen (old)) == 0);
g_mapped_file_free (file);
+
+ g_free (tmp_copy_path);
}
static void
test_writable_fd (void)
{
GMappedFile *file;
- GError *error;
+ GError *error = NULL;
gchar *contents;
const gchar *old = "MMMMMMMMMMMMMMMMMMMMMMMMM";
const gchar *new = "abcdefghijklmnopqrstuvxyz";
+ gsize len;
int fd;
+ gchar *tmp_copy_path;
- if (access (SRCDIR "/4096-random-bytes", W_OK) != 0)
- {
- g_test_message ("Skipping writable mapping test");
- return;
- }
+ tmp_copy_path = g_build_filename (g_get_user_runtime_dir (), "glib-test-4096-random-bytes", NULL);
- error = NULL;
- fd = g_open (SRCDIR "/4096-random-bytes", O_RDWR, 0);
+ g_file_get_contents (g_test_get_filename (G_TEST_DIST, "4096-random-bytes", NULL), &contents, &len, &error);
+ g_assert_no_error (error);
+ g_file_set_contents (tmp_copy_path, contents, len, &error);
+ g_assert_no_error (error);
+
+ g_free (contents);
+
+ fd = g_open (tmp_copy_path, O_RDWR, 0);
g_assert (fd != -1);
file = g_mapped_file_new_from_fd (fd, TRUE, &error);
g_assert_no_error (error);
close (fd);
error = NULL;
- fd = g_open (SRCDIR "/4096-random-bytes", O_RDWR, 0);
+ fd = g_open (tmp_copy_path, O_RDWR, 0);
g_assert (fd != -1);
file = g_mapped_file_new_from_fd (fd, TRUE, &error);
g_assert_no_error (error);
g_mapped_file_free (file);
+ g_free (tmp_copy_path);
}
static void
GError *error;
error = NULL;
- file = g_mapped_file_new (SRCDIR "/empty", FALSE, &error);
+ file = g_mapped_file_new (g_test_get_filename (G_TEST_DIST, "empty", NULL), FALSE, &error);
g_assert_no_error (error);
bytes = g_mapped_file_get_bytes (file);