Cleanup: remove redundant doxygen \file argument
[blender.git] / source / blender / blenlib / BLI_winstuff.h
index e868989..ebb4991 100644 (file)
@@ -1,10 +1,4 @@
-/**
- * Compatibility-like things for windows.
- *
- * $Id$ 
- *
- * ***** BEGIN GPL LICENSE BLOCK *****
- *
+/*
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
  * as published by the Free Software Foundation; either version 2
  *
  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
  * All rights reserved.
- *
- * The Original Code is: all of this file.
- *
- * Contributor(s): none yet.
- *
- * ***** END GPL LICENSE BLOCK *****
  */
-#ifndef __WINSTUFF_H__
-#define __WINSTUFF_H__
 
-#ifdef _WIN32
+#ifndef __BLI_WINSTUFF_H__
+#define __BLI_WINSTUFF_H__
 
-#ifndef FREE_WINDOWS
-#pragma warning(once: 4761 4305 4244 4018)
+/** \file \ingroup bli
+ *  \brief Compatibility-like things for windows.
+ */
+
+#ifndef _WIN32
+#  error "This include is for Windows only!"
 #endif
 
 #define WIN32_LEAN_AND_MEAN
 
 #ifndef WIN32_SKIP_HKEY_PROTECTION
-#define HKEY WIN32_HKEY                                // prevent competing definitions
-#include <windows.h>
-#undef HKEY
+#  undef HKEY
+#  define HKEY WIN32_HKEY  /* prevent competing definitions */
+#  include <windows.h>
+#  undef HKEY
 #else
-#include <windows.h>
+#  include <windows.h>
 #endif
 
 #undef near
@@ -64,7 +55,7 @@
 
 #undef small
 
-// These definitions are also in arithb for simplicity
+// These definitions are also in BLI_math for simplicity
 
 #ifdef __cplusplus
 extern "C" {
@@ -74,36 +65,42 @@ extern "C" {
 #define MAXPATHLEN MAX_PATH
 
 #ifndef S_ISREG
-#define S_ISREG(x) (((x)&_S_IFREG) == _S_IFREG)
+#  define S_ISREG(x) (((x) & _S_IFREG) == _S_IFREG)
 #endif
 #ifndef S_ISDIR
-#define S_ISDIR(x) (((x)&_S_IFDIR) == _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;
+#if !defined(_MSC_VER) || _MSC_VER < 1900
+#  define snprintf _snprintf
+#endif
+
+#if defined(_MSC_VER)
+#  define      R_OK    4
+#  define      W_OK    2
+// not accepted by access() on windows
+//#  define    X_OK    1
+#  define      F_OK    0
 #endif
 
-/* mingw using _SSIZE_T_ to declare ssize_t type */
+typedef unsigned int mode_t;
+
+/* use functions that take a 64 bit offset for files larger than 4GB */
+#include <stdio.h>
+#define fseek(stream, offset, origin) _fseeki64(stream, offset, origin)
+#define ftell(stream) _ftelli64(stream)
+#define lseek(fd, offset, origin) _lseeki64(fd, offset, origin)
+#define tell(fd) _telli64(fd)
+
+
 #ifndef _SSIZE_T_
-#define _SSIZE_T_
+#  define _SSIZE_T_
 /* python uses HAVE_SSIZE_T */
-#ifndef HAVE_SSIZE_T
-#define HAVE_SSIZE_T 1
+#  ifndef HAVE_SSIZE_T
+#    define HAVE_SSIZE_T 1
 typedef long ssize_t;
-#endif
+#  endif
 #endif
 
 struct dirent {
@@ -113,35 +110,22 @@ struct dirent {
        char *d_name;
 };
 
-typedef struct _DIR {
-       HANDLE handle;
-       WIN32_FIND_DATA data;
-       char path[MAX_PATH];
-       long dd_loc;
-       long dd_size;
-       char dd_buf[4096];
-       void *dd_direct;
-       
-       struct dirent direntry;
-} DIR;
-
-void RegisterBlendExtension(char * str);
-DIR *opendir (const char *path);
+/* intentionally opaque to users */
+typedef struct __dirstream DIR;
+
+DIR *opendir(const char *path);
 struct dirent *readdir(DIR *dp);
-int closedir (DIR *dp);
+int closedir(DIR *dp);
+
+void RegisterBlendExtension(void);
 void get_default_root(char *root);
 int check_file_chars(char *filename);
-char *dirname(char *path);
+const char *dirname(char *path);
 
-#ifdef WIN32
 int BLI_getInstallationDir(char *str);
-#endif
 
 #ifdef __cplusplus
 }
 #endif
 
-#endif
-
-#endif /* __WINSTUFF_H__ */
-
+#endif /* __BLI_WINSTUFF_H__ */