Enlightenment CVS committal Author : doursse Project : e17 Module : libs/eet
Dir : e17/libs/eet/src/lib Modified Files: Eet.h eet_lib.c Log Message: fix compilation with MinGW =================================================================== RCS file: /cvs/e/e17/libs/eet/src/lib/Eet.h,v retrieving revision 1.37 retrieving revision 1.38 diff -u -3 -r1.37 -r1.38 --- Eet.h 17 Dec 2006 11:00:45 -0000 1.37 +++ Eet.h 20 Jan 2007 15:20:23 -0000 1.38 @@ -6,7 +6,7 @@ #ifdef EAPI #undef EAPI #endif -#ifdef WIN32 +#ifdef _MSC_VER # ifdef BUILDING_DLL # define EAPI __declspec(dllexport) # else =================================================================== RCS file: /cvs/e/e17/libs/eet/src/lib/eet_lib.c,v retrieving revision 1.73 retrieving revision 1.74 diff -u -3 -r1.73 -r1.74 --- eet_lib.c 28 Dec 2006 15:23:47 -0000 1.73 +++ eet_lib.c 20 Jan 2007 15:20:23 -0000 1.74 @@ -3,7 +3,9 @@ */ #include <sys/types.h> +#ifndef _WIN32 #include <sys/mman.h> +#endif #include "Eet.h" #include "Eet_private.h" @@ -12,6 +14,22 @@ #undef HAVE_REALPATH #endif +#ifdef _WIN32 + +#ifndef F_SETFD +#define F_SETFD 2 +#endif + +#ifndef PROT_READ +#define PROT_READ 1 +#endif + +#ifndef FD_CLOEXEC +#define FD_CLOEXEC 1 +#endif + +#endif + #define EET_MAGIC_FILE 0x1ee7ff00 #define EET_MAGIC_FILE_HEADER 0x1ee7ff01 @@ -471,6 +489,9 @@ { Eet_File *ef; struct stat file_stat; +#ifdef _WIN32 + HANDLE h; +#endif if (!file) return NULL; @@ -558,7 +579,15 @@ if (eet_test_close(!ef->fp, ef)) return NULL; +#ifndef _WIN32 fcntl(fileno(ef->fp), F_SETFD, FD_CLOEXEC); +#else + /* FIXME: check if that code is needed / correct */ + h = (HANDLE) _get_osfhandle (fileno(ef->fp)); + if (h == (HANDLE) -1) + return NULL; + SetHandleInformation (h, HANDLE_FLAG_INHERIT, 0); +#endif /* if we opened for read or read-write */ if ((mode == EET_FILE_MODE_READ) || (mode == EET_FILE_MODE_READ_WRITE)) { @@ -568,10 +597,29 @@ int num_entries; int byte_entries; int i; +#ifdef _WIN32 + HANDLE fm; +#endif + ef->data_size = file_stat.st_size; +#ifndef _WIN32 ef->data = mmap(NULL, ef->data_size, PROT_READ, MAP_SHARED, fileno(ef->fp), 0); +#else + fm = CreateFileMapping((HANDLE) _get_osfhandle (fileno(ef->fp)), + NULL, + PAGE_READONLY, + 0, + 0, + NULL); + ef->data = MapViewOfFile(fm, + FILE_MAP_READ, + 0, + 0, + ef->data_size); + CloseHandle(fm); +#endif if (eet_test_close((ef->data == (void *)-1) || (ef->data == NULL), ef)) return NULL; @@ -825,7 +873,11 @@ } free(ef->header); } +#ifndef _WIN32 if (ef->data) munmap(ef->data, ef->data_size); +#else + if (ef->data) UnmapViewOfFile (ef->data); +#endif if (ef->fp) fclose(ef->fp); /* zero out ram for struct - caution tactic against stale memory use */ ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys - and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs