summaryrefslogtreecommitdiff
path: root/db-4.8.30/dbinc/win_db.h
diff options
context:
space:
mode:
authorJesse Morgan <jesse@jesterpm.net>2016-12-17 21:28:53 -0800
committerJesse Morgan <jesse@jesterpm.net>2016-12-17 21:28:53 -0800
commit54df2afaa61c6a03cbb4a33c9b90fa572b6d07b8 (patch)
tree18147b92b969d25ffbe61935fb63035cac820dd0 /db-4.8.30/dbinc/win_db.h
Berkeley DB 4.8 with rust build script for linux.
Diffstat (limited to 'db-4.8.30/dbinc/win_db.h')
-rw-r--r--db-4.8.30/dbinc/win_db.h144
1 files changed, 144 insertions, 0 deletions
diff --git a/db-4.8.30/dbinc/win_db.h b/db-4.8.30/dbinc/win_db.h
new file mode 100644
index 0000000..ac8abb5
--- /dev/null
+++ b/db-4.8.30/dbinc/win_db.h
@@ -0,0 +1,144 @@
+/*-
+ * $Id$
+ *
+ * The following provides the information necessary to build Berkeley
+ * DB on native Windows, and other Windows environments such as MinGW.
+ */
+
+/*
+ * Windows NT 4.0 and later required for the replication manager.
+ */
+#ifdef HAVE_REPLICATION_THREADS
+#define _WIN32_WINNT 0x0400
+#endif
+
+#ifndef DB_WINCE
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/timeb.h>
+
+#include <direct.h>
+#include <fcntl.h>
+#include <io.h>
+#include <limits.h>
+#include <memory.h>
+#include <process.h>
+#include <signal.h>
+#endif /* DB_WINCE */
+
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <tchar.h>
+#include <time.h>
+
+/*
+ * To build Tcl interface libraries, the include path must be configured to
+ * use the directory containing <tcl.h>, usually the include directory in
+ * the Tcl distribution.
+ */
+#ifdef DB_TCL_SUPPORT
+#include <tcl.h>
+#endif
+
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+#include <winsock2.h>
+
+#ifdef HAVE_GETADDRINFO
+/*
+ * Need explicit includes for IPv6 support on Windows. Both are necessary to
+ * ensure that pre WinXP versions have an implementation of the getaddrinfo API.
+ */
+#include <ws2tcpip.h>
+#include <wspiapi.h>
+#endif
+
+/*
+ * Microsoft's C runtime library has fsync, getcwd, getpid, snprintf and
+ * vsnprintf, but under different names.
+ */
+#define fsync _commit
+
+#ifndef DB_WINCE
+#define getcwd(buf, size) _getcwd(buf, size)
+#endif
+#define getpid GetCurrentProcessId
+#define snprintf _snprintf
+#define strcasecmp _stricmp
+#define strncasecmp _strnicmp
+#define vsnprintf _vsnprintf
+
+#define h_errno WSAGetLastError()
+
+/*
+ * Win32 does not have getopt.
+ *
+ * The externs are here, instead of using db_config.h and clib_port.h, because
+ * that approach changes function names to BDB specific names, and the example
+ * programs use getopt and can't use BDB specific names.
+ */
+#if defined(__cplusplus)
+extern "C" {
+#endif
+extern int getopt(int, char * const *, const char *);
+#if defined(__cplusplus)
+}
+#endif
+
+/*
+ * Microsoft's compiler _doesn't_ define __STDC__ unless you invoke it with
+ * arguments turning OFF all vendor extensions. Even more unfortunately, if
+ * we do that, it fails to parse windows.h!!!!! So, we define __STDC__ here,
+ * after windows.h comes in. Note: the compiler knows we've defined it, and
+ * starts enforcing strict ANSI compliance from this point on.
+ */
+#ifndef __STDC__
+#define __STDC__ 1
+#endif
+
+#ifdef _UNICODE
+#define TO_TSTRING(dbenv, s, ts, ret) do { \
+ int __len = (int)strlen(s) + 1; \
+ ts = NULL; \
+ if ((ret = __os_malloc((dbenv), \
+ __len * sizeof(_TCHAR), &(ts))) == 0 && \
+ MultiByteToWideChar(CP_UTF8, 0, \
+ (s), -1, (ts), __len) == 0) \
+ ret = __os_posix_err(__os_get_syserr()); \
+ } while (0)
+
+#define FROM_TSTRING(dbenv, ts, s, ret) { \
+ int __len = WideCharToMultiByte(CP_UTF8, 0, ts, -1, \
+ NULL, 0, NULL, NULL); \
+ s = NULL; \
+ if ((ret = __os_malloc((dbenv), __len, &(s))) == 0 && \
+ WideCharToMultiByte(CP_UTF8, 0, \
+ (ts), -1, (s), __len, NULL, NULL) == 0) \
+ ret = __os_posix_err(__os_get_syserr()); \
+ } while (0)
+
+#define FREE_STRING(dbenv, s) do { \
+ if ((s) != NULL) { \
+ __os_free((dbenv), (s)); \
+ (s) = NULL; \
+ } \
+ } while (0)
+
+#else
+#define TO_TSTRING(dbenv, s, ts, ret) (ret) = 0, (ts) = (_TCHAR *)(s)
+#define FROM_TSTRING(dbenv, ts, s, ret) (ret) = 0, (s) = (char *)(ts)
+#define FREE_STRING(dbenv, ts)
+#endif
+
+#ifndef INVALID_HANDLE_VALUE
+#define INVALID_HANDLE_VALUE ((HANDLE)-1)
+#endif
+
+#ifndef INVALID_FILE_ATTRIBUTES
+#define INVALID_FILE_ATTRIBUTES ((DWORD)-1)
+#endif
+
+#ifndef INVALID_SET_FILE_POINTER
+#define INVALID_SET_FILE_POINTER ((DWORD)-1)
+#endif