summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt4
-rw-r--r--include/services.h48
-rw-r--r--include/sysconf.h.cmake2
-rw-r--r--modules/extra/m_ldap.cpp2
-rw-r--r--src/logger.cpp2
-rw-r--r--src/win32/anope_windows.h51
-rw-r--r--src/win32/windows.cpp16
7 files changed, 71 insertions, 54 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index afedb7371..0f76306ab 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -227,6 +227,8 @@ include_directories(${Anope_BINARY_DIR}/include ${Anope_SOURCE_DIR}/include ${An
# If using Windows, always add the _WIN32 define
if(WIN32)
add_definitions(-D_WIN32)
+ # And include the windows specific folder for our anope_windows.h
+ include_directories(${Anope_SOURCE_DIR}/src/win32)
endif(WIN32)
# If using Visual Studio, set the C++ flags accordingly
@@ -329,11 +331,9 @@ endif(CMAKE_BUILD_TYPE STREQUAL "DEBUG" OR CMAKE_BUILD_TYPE STREQUAL "RELWITHDEB
# Check for the existance of the following include files
check_include_file(sys/types.h HAVE_SYS_TYPES_H)
check_include_file(strings.h HAVE_STRINGS_H)
-check_include_file(sys/select.h HAVE_SYS_SELECT_H)
check_include_file(sys/eventfd.h HAVE_SYS_EVENTFD_H)
# Check for the existance of the following functions
-check_function_exists(gettimeofday HAVE_GETTIMEOFDAY)
check_function_exists(setgrent HAVE_SETGRENT)
check_function_exists(strcasecmp HAVE_STRCASECMP)
check_function_exists(stricmp HAVE_STRICMP)
diff --git a/include/services.h b/include/services.h
index f5a787a24..1285b188e 100644
--- a/include/services.h
+++ b/include/services.h
@@ -46,12 +46,6 @@
#if GETTEXT_FOUND
# include <libintl.h>
# define _(x) anope_gettext(x)
-# ifdef _WIN32
- /* Redefine snprintf and undefine vsnprintf because liblintl defines it to its own function */
-# undef snprintf
-# define snprintf _snprintf
-# undef vsnprintf
-# endif
#else
# define _(x) x
#endif
@@ -72,31 +66,7 @@
# define MARK_DEPRECATED __attribute((deprecated))
# define DeleteFile unlink
#else
-# include <winsock2.h>
-# include <ws2tcpip.h>
-# include <windows.h>
-# include <sys/timeb.h>
-# include <direct.h>
-# include <io.h>
-# ifdef MODULE_COMPILE
-# define CoreExport __declspec(dllimport)
-# define DllExport __declspec(dllexport)
-# else
-# define CoreExport __declspec(dllexport)
-# define DllExport __declspec(dllimport)
-# endif
-/* VS2008 hates having this define before its own */
-# define vsnprintf _vsnprintf
-/* We have our own inet_pton and inet_ntop (Windows doesn't have its own) */
-# define inet_pton inet_pton_
-# define inet_ntop inet_ntop_
-# define setenv(x, y, z) SetEnvironmentVariable(x, y)
-# define unsetenv(x) SetEnvironmentVariable(x, NULL)
-# define MARK_DEPRECATED
-
-extern CoreExport USHORT WindowsGetLanguage(const char *lang);
-extern CoreExport int inet_pton(int af, const char *src, void *dst);
-extern CoreExport const char *inet_ntop(int af, const void *src, char *dst, size_t size);
+# include "anope_windows.h"
#endif
/* Telling compilers about printf()-like functions: */
@@ -114,10 +84,6 @@ extern CoreExport const char *inet_ntop(int af, const void *src, char *dst, size
# include <strings.h>
#endif
-#if HAVE_SYS_SELECT_H
-# include <sys/select.h>
-#endif
-
#ifdef _AIX
/* Some AIX boxes seem to have bogus includes that don't have these
* prototypes. */
@@ -141,18 +107,6 @@ extern int strncasecmp(const char *, const char *, size_t);
#define tolower tolower_
#define toupper toupper_
-#ifdef __WINS__
-# ifndef BKCHECK
-# define BKCHECK
-extern "C" void __pfnBkCheck() {}
-# endif
-#endif
-
-#if INTTYPE_WORKAROUND
-# undef int16
-# undef int32
-#endif
-
/** This definition is used as shorthand for the various classes
* and functions needed to make a module loadable by the OS.
* It defines the class factory and external AnopeInit and AnopeFini functions.
diff --git a/include/sysconf.h.cmake b/include/sysconf.h.cmake
index 17aa98674..78150a82d 100644
--- a/include/sysconf.h.cmake
+++ b/include/sysconf.h.cmake
@@ -8,14 +8,12 @@
#cmakedefine HAVE_STDINT_H 1
#cmakedefine HAVE_STDDEF_H 1
#cmakedefine HAVE_BACKTRACE 1
-#cmakedefine HAVE_GETTIMEOFDAY 1
#cmakedefine HAVE_SETGRENT 1
#cmakedefine HAVE_STRCASECMP 1
#cmakedefine HAVE_STRICMP 1
#cmakedefine HAVE_STRINGS_H 1
#cmakedefine HAVE_STRLCAT 1
#cmakedefine HAVE_STRLCPY 1
-#cmakedefine HAVE_SYS_SELECT_H 1
#cmakedefine HAVE_UMASK 1
#cmakedefine HAVE_EVENTFD 1
#cmakedefine GETTEXT_FOUND 1
diff --git a/modules/extra/m_ldap.cpp b/modules/extra/m_ldap.cpp
index aeb0500e3..aa7e5212e 100644
--- a/modules/extra/m_ldap.cpp
+++ b/modules/extra/m_ldap.cpp
@@ -1,4 +1,4 @@
-/* RequiredLibraries: ldap */
+/* RequiredLibraries: ldap,lber */
#include "module.h"
#include "ldap.h"
diff --git a/src/logger.cpp b/src/logger.cpp
index 1265dc3e2..a74a219d9 100644
--- a/src/logger.cpp
+++ b/src/logger.cpp
@@ -52,7 +52,6 @@ static Anope::string GetTimeStamp()
if (time(&t) < 0)
throw CoreException("time() failed");
tm tm = *localtime(&t);
-#if HAVE_GETTIMEOFDAY
if (debug)
{
char *s;
@@ -64,7 +63,6 @@ static Anope::string GetTimeStamp()
strftime(s, sizeof(tbuf) - (s - tbuf) - 1, " %Y]", &tm);
}
else
-#endif
strftime(tbuf, sizeof(tbuf) - 1, "[%b %d %H:%M:%S %Y]", &tm);
return tbuf;
diff --git a/src/win32/anope_windows.h b/src/win32/anope_windows.h
new file mode 100644
index 000000000..3abe8bd13
--- /dev/null
+++ b/src/win32/anope_windows.h
@@ -0,0 +1,51 @@
+ /* POSIX emulation layer for Windows.
+ *
+ * Copyright (C) 2008-2011 Robin Burchell <w00t@inspircd.org>
+ * Copyright (C) 2008-2011 Anope Team <info@anope.org>
+ *
+ * Please read COPYING and README for further details.
+ *
+ * Based on the original code of Epona by Lara.
+ * Based on the original code of Services by Andy Church.
+ */
+
+ #ifndef WINDOWS_H
+ #define WINDOWS_H
+ #ifdef _WIN32
+
+#include <winsock2.h>
+#include <ws2tcpip.h>
+#include <windows.h>
+#include <sys/timeb.h>
+#include <direct.h>
+#include <io.h>
+#ifdef MODULE_COMPILE
+# define CoreExport __declspec(dllimport)
+# define DllExport __declspec(dllexport)
+#else
+# define CoreExport __declspec(dllexport)
+# define DllExport __declspec(dllimport)
+#endif
+/* We have our own inet_pton and inet_ntop (Windows XP doesn't have its own) */
+#define inet_pton inet_pton_
+#define inet_ntop inet_ntop_
+#define setenv(x, y, z) SetEnvironmentVariable(x, y)
+#define unsetenv(x) SetEnvironmentVariable(x, NULL)
+#define MARK_DEPRECATED
+#if GETTEXT_FOUND
+/* Undefine some functions libintl defines */
+# undef snprintf
+# undef vsnprintf
+# undef printf
+#endif
+#define snprintf _snprintf
+/* VS2008 hates having this define before its own */
+#define vsnprintf _vsnprintf
+
+extern CoreExport USHORT WindowsGetLanguage(const char *lang);
+extern CoreExport int inet_pton(int af, const char *src, void *dst);
+extern CoreExport const char *inet_ntop(int af, const void *src, char *dst, size_t size);
+extern CoreExport int gettimeofday(timeval *tv, char *);
+
+ #endif // _WIN32
+ #endif // WINDOWS_H \ No newline at end of file
diff --git a/src/win32/windows.cpp b/src/win32/windows.cpp
index a443472f9..b57171dec 100644
--- a/src/win32/windows.cpp
+++ b/src/win32/windows.cpp
@@ -123,4 +123,20 @@ const char *inet_ntop(int af, const void *src, char *dst, size_t size)
return NULL;
}
+/** Like gettimeofday(), but it works on Windows.
+ * @param tv A timeval struct
+ * @param tz Should be NULL, it is not used
+ * @return 0 on success
+ */
+int gettimeofday(timeval *tv, char *)
+{
+ SYSTEMTIME st;
+ GetSystemTime(&st);
+
+ tv->tv_sec = Anope::CurTime;
+ tv->tv_usec = st.wMilliseconds;
+
+ return 0;
+}
+
#endif