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.
|
||||
|
||||
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>
|
||||
* src/fccache.c (FcDirCacheConsume, FcCacheNextOffset):
|
||||
|
||||
|
|
|
@ -27,12 +27,12 @@
|
|||
#include <dirent.h>
|
||||
#include <string.h>
|
||||
#include <sys/types.h>
|
||||
#include <unistd.h>
|
||||
#include "fcint.h"
|
||||
#include <unistd.h>
|
||||
#if defined(HAVE_MMAP) || defined(__CYGWIN__)
|
||||
# include <unistd.h>
|
||||
# include <sys/mman.h>
|
||||
# include <sys/utsname.h>
|
||||
#elif defined(_WIN32)
|
||||
# include <windows.h>
|
||||
#endif
|
||||
|
||||
#define ENDIAN_TEST 0x12345678
|
||||
|
@ -1203,6 +1203,23 @@ FcDirCacheConsume (int fd, const char * dir, FcFontSet *set, FcConfig *config)
|
|||
PROT_READ, MAP_SHARED, fd, pos);
|
||||
if (current_dir_block == MAP_FAILED)
|
||||
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
|
||||
current_dir_block = malloc (metadata.count);
|
||||
if (!current_dir_block)
|
||||
|
|
Loading…
Reference in New Issue