own patch [#27752] Python Callback (Scriptlink functionality)
[blender.git] / source / blender / blenlib / BLI_winstuff.h
index 69dbb0acdb9bae02d923900f53bac2669f879a89..d0eb3c7d67d3d6a4713cf87c146cc9ac80ab4ec4 100644 (file)
@@ -1,6 +1,4 @@
-/**
- * Compatibility-like things for windows.
- *
+/*
  * $Id$ 
  *
  * ***** BEGIN GPL LICENSE BLOCK *****
@@ -17,7 +15,7 @@
  *
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  *
  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
  * All rights reserved.
  *
  * ***** END GPL LICENSE BLOCK *****
  */
+#ifndef __WINSTUFF_H__
+#define __WINSTUFF_H__
+
+/** \file BLI_winstuff.h
+ *  \ingroup bli
+ *  \brief Compatibility-like things for windows.
+ */
+
+#ifdef _WIN32
+
+#ifndef FREE_WINDOWS
 #pragma warning(once: 4761 4305 4244 4018)
+#else
+#ifdef WINVER
+#undef WINVER
+#endif
+
+/* Some stuff requires WINVER 0x500, but mingw's default is 0x400 */
+#define WINVER 0x0501
+#endif
 
 #define WIN32_LEAN_AND_MEAN
 
 #ifndef WIN32_SKIP_HKEY_PROTECTION
+#undef HKEY
 #define HKEY WIN32_HKEY                                // prevent competing definitions
 #include <windows.h>
 #undef HKEY
 
 #undef small
 
-#ifndef __WINSTUFF_H__
-#define __WINSTUFF_H__
-
-       // These definitions are also in arithb for simplicity
+// These definitions are also in BLI_math for simplicity
 
 #ifdef __cplusplus
 extern "C" {
@@ -69,34 +85,26 @@ extern "C" {
 #define MAXPATHLEN MAX_PATH
 
 #ifndef S_ISREG
-#define S_ISREG(x) ((x&S_IFMT) == S_IFREG)
+#define S_ISREG(x) (((x)&_S_IFREG) == _S_IFREG)
 #endif
 #ifndef S_ISDIR
-#define S_ISDIR(x) ((x&S_IFMT) == S_IFDIR)
+#define S_ISDIR(x) (((x)&_S_IFDIR) == _S_IFDIR)
 #endif
 
 /* defines for using ISO C++ conformant names */
-#define open _open
-#define close _close
-#define write _write
-#define read _read
-#define getcwd _getcwd
-#define chdir _chdir
-#define strdup _strdup
-#define lseek _lseek
-#define getpid _getpid
 #define snprintf _snprintf
 
 #ifndef FREE_WINDOWS
 typedef unsigned int mode_t;
 #endif
 
+/* mingw using _SSIZE_T_ to declare ssize_t type */
 #ifndef _SSIZE_T_
 #define _SSIZE_T_
-#if defined(_WIN64)
-typedef __int64 ssize_t;
-#else
-typedef _W64 int ssize_t;
+/* python uses HAVE_SSIZE_T */
+#ifndef HAVE_SSIZE_T
+#define HAVE_SSIZE_T 1
+typedef long ssize_t;
 #endif
 #endif
 
@@ -119,20 +127,21 @@ typedef struct _DIR {
        struct dirent direntry;
 } DIR;
 
-void RegisterBlendExtension(char * str);
+void RegisterBlendExtension(void);
 DIR *opendir (const char *path);
 struct dirent *readdir(DIR *dp);
 int closedir (DIR *dp);
 void get_default_root(char *root);
 int check_file_chars(char *filename);
+char *dirname(char *path);
 
-#ifdef WIN32
 int BLI_getInstallationDir(char *str);
-#endif
 
 #ifdef __cplusplus
 }
 #endif
 
+#endif /* _WIN32 */
+
 #endif /* __WINSTUFF_H__ */