- if (fstat(fd, &stat) == -1)
- g_error("%s(): fstat failed on %s\n", __PRETTY_FUNCTION__, basename);
- if ((dem_file = mmap(NULL, stat.st_size, PROT_READ, MAP_PRIVATE, fd, 0)) == (void *) -1)
- g_error("%s(): mmap failed on %s\n", __PRETTY_FUNCTION__, basename);
-
- file_size = stat.st_size;
- dem_mem = dem_file;
+ if ((mf = g_mapped_file_new(file_name, FALSE, &error)) == NULL) {
+ g_error(_("Couldn't map file %s: %s"), file_name, error->message);
+ g_error_free(error);
+ g_free(dem);
+ return NULL;
+ }
+ file_size = g_mapped_file_get_length(mf);
+ dem_file = g_mapped_file_get_contents(mf);
+