Dominic Lachowicz <cinamod@hotmail.com>
Implement mmap-like code for Windows using MapViewOfFile.
This commit is contained in:
parent
56f8358364
commit
93f67dfc73
|
@ -6,6 +6,13 @@
|
||||||
|
|
||||||
Bump version to 2.3.95.
|
Bump version to 2.3.95.
|
||||||
|
|
||||||
|
2006-04-19 Patrick Lam <plam@mit.edu>
|
||||||
|
Dominic Lachowicz <cinamod@hotmail.com>
|
||||||
|
|
||||||
|
* src/fccache.c (FcDirCacheConsume):
|
||||||
|
|
||||||
|
Implement mmap-like code for Windows using MapViewOfFile.
|
||||||
|
|
||||||
2006-04-19 Patrick Lam <plam@mit.edu>
|
2006-04-19 Patrick Lam <plam@mit.edu>
|
||||||
* src/fccache.c (FcDirCacheConsume, FcCacheNextOffset):
|
* src/fccache.c (FcDirCacheConsume, FcCacheNextOffset):
|
||||||
|
|
||||||
|
|
|
@ -27,12 +27,12 @@
|
||||||
#include <dirent.h>
|
#include <dirent.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <unistd.h>
|
|
||||||
#include "fcint.h"
|
#include "fcint.h"
|
||||||
#include <unistd.h>
|
|
||||||
#if defined(HAVE_MMAP) || defined(__CYGWIN__)
|
#if defined(HAVE_MMAP) || defined(__CYGWIN__)
|
||||||
|
# include <unistd.h>
|
||||||
# include <sys/mman.h>
|
# include <sys/mman.h>
|
||||||
# include <sys/utsname.h>
|
#elif defined(_WIN32)
|
||||||
|
# include <windows.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define ENDIAN_TEST 0x12345678
|
#define ENDIAN_TEST 0x12345678
|
||||||
|
@ -1203,6 +1203,23 @@ FcDirCacheConsume (int fd, const char * dir, FcFontSet *set, FcConfig *config)
|
||||||
PROT_READ, MAP_SHARED, fd, pos);
|
PROT_READ, MAP_SHARED, fd, pos);
|
||||||
if (current_dir_block == MAP_FAILED)
|
if (current_dir_block == MAP_FAILED)
|
||||||
return FcFalse;
|
return FcFalse;
|
||||||
|
#elif defined(_WIN32)
|
||||||
|
{
|
||||||
|
HANDLE hFileMap;
|
||||||
|
|
||||||
|
hFileMap = CreateFileMapping((HANDLE) _get_osfhandle(fd), NULL, PAGE_READONLY, 0, 0, NULL);
|
||||||
|
if (hFileMap == NULL)
|
||||||
|
return FcFalse;
|
||||||
|
|
||||||
|
current_dir_block = MapViewOfFile (hFileMap, FILE_MAP_READ, 0, 0, metadata.count + pos);
|
||||||
|
if (current_dir_block == NULL)
|
||||||
|
{
|
||||||
|
CloseHandle (hFileMap);
|
||||||
|
return FcFalse;
|
||||||
|
}
|
||||||
|
|
||||||
|
current_dir_block = (void *)((char *)current_dir_block + pos);
|
||||||
|
}
|
||||||
#else
|
#else
|
||||||
current_dir_block = malloc (metadata.count);
|
current_dir_block = malloc (metadata.count);
|
||||||
if (!current_dir_block)
|
if (!current_dir_block)
|
||||||
|
|
Loading…
Reference in New Issue