]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/wxcrtbase.h
don't leak epoll descriptor
[wxWidgets.git] / include / wx / wxcrtbase.h
index e9f28d43ccd695ecf7e6f68b2d19f87c3409fb89..cf590db7c3ad1684ddb02a8e45cfdbeabad374e4 100644 (file)
@@ -2,7 +2,7 @@
  * Name:        wx/wxcrtbase.h
  * Purpose:     Type-safe ANSI and Unicode builds compatible wrappers for
  *              CRT functions
- * Author:      Joel Farley, Ove Kåven
+ * Author:      Joel Farley, Ove Kven
  * Modified by: Vadim Zeitlin, Robert Roebling, Ron Lee
  * Created:     1998/06/12
  * RCS-ID:      $Id$
@@ -34,6 +34,9 @@
 #include <wctype.h>
 #include <time.h>
 
+#ifdef __WINDOWS__
+#include <io.h>
+#endif
 
 #if defined(HAVE_STRTOK_R) && defined(__DARWIN__) && defined(_MSL_USING_MW_C_HEADERS) && _MSL_USING_MW_C_HEADERS
     char *strtok_r(char *, const char *, char **);
@@ -167,7 +170,7 @@ WXDLLIMPEXP_BASE void *calloc( size_t num, size_t size );
 #endif
 #if defined(__WINDOWS__)
     #define wxCRT_StrdupW _wcsdup
-#elif !defined(__DARWIN__) && !defined( __VMS )
+#elif defined(HAVE_WCSDUP)
     #define wxCRT_StrdupW wcsdup
 #endif
 
@@ -369,14 +372,24 @@ WXDLLIMPEXP_BASE wchar_t *wxCRT_StrtokW(wchar_t *psz, const wchar_t *delim, wcha
 #endif
 
 /* supply strtoll and strtoull, if needed */
-#ifndef wxCRT_StrtollA
-    WXDLLIMPEXP_BASE wxLongLong_t wxCRT_StrtollA(const char* nptr, char** endptr, int base);
-    WXDLLIMPEXP_BASE wxULongLong_t wxCRT_StrtoullA(const char* nptr, char** endptr, int base);
-#endif
-#ifndef wxCRT_StrtollW
-    WXDLLIMPEXP_BASE wxLongLong_t wxCRT_StrtollW(const wchar_t* nptr, wchar_t** endptr, int base);
-    WXDLLIMPEXP_BASE wxULongLong_t wxCRT_StrtoullW(const wchar_t* nptr, wchar_t** endptr, int base);
-#endif
+#ifdef wxLongLong_t
+    #ifndef wxCRT_StrtollA
+        WXDLLIMPEXP_BASE wxLongLong_t wxCRT_StrtollA(const char* nptr,
+                                                     char** endptr,
+                                                     int base);
+        WXDLLIMPEXP_BASE wxULongLong_t wxCRT_StrtoullA(const char* nptr,
+                                                       char** endptr,
+                                                       int base);
+    #endif
+    #ifndef wxCRT_StrtollW
+        WXDLLIMPEXP_BASE wxLongLong_t wxCRT_StrtollW(const wchar_t* nptr,
+                                                     wchar_t** endptr,
+                                                     int base);
+        WXDLLIMPEXP_BASE wxULongLong_t wxCRT_StrtoullW(const wchar_t* nptr,
+                                                       wchar_t** endptr,
+                                                       int base);
+    #endif
+#endif // wxLongLong_t
 
 
 /* -------------------------------------------------------------------------
@@ -463,14 +476,12 @@ WXDLLIMPEXP_BASE int wxCRT_FputsW(const wchar_t *ch, FILE *stream);
 WXDLLIMPEXP_BASE int wxCRT_FputcW(wchar_t wc, FILE *stream);
 #endif
 
-#define wxCRT_TmpnamA     tmpnam
-#ifdef _ttmpnam
-    #define wxCRT_TmpnamW _wtmpnam
-#endif
-
-#ifndef wxCRT_TmpnamW
-WXDLLIMPEXP_BASE wchar_t *wxCRT_TmpnamW(wchar_t *s);
-#endif
+/*
+   NB: tmpnam() is unsafe and thus is not wrapped!
+       Use other wxWidgets facilities instead:
+        wxFileName::CreateTempFileName, wxTempFile, or wxTempFileOutputStream
+*/
+#define wxTmpnam(x)         wxTmpnam_is_insecure_use_wxTempFile_instead
 
 #define wxCRT_PerrorA   perror
 #ifdef wxHAVE_TCHAR_SUPPORT