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

Reply via email to