summaryrefslogtreecommitdiff
path: root/src/win32/windows.cpp
diff options
context:
space:
mode:
authorAdam <Adam@anope.org>2011-11-08 17:29:16 -0500
committerAdam <Adam@anope.org>2011-11-08 17:29:16 -0500
commitb5ff856f47d8e54d12c568462a06351633c29610 (patch)
treea4e2f96c59ee49aa5e6cacdfd30db6155151ad36 /src/win32/windows.cpp
parent97b9055f92f21cd91af44a3d5dacce0024536cff (diff)
Windows
Diffstat (limited to 'src/win32/windows.cpp')
-rw-r--r--src/win32/windows.cpp104
1 files changed, 18 insertions, 86 deletions
diff --git a/src/win32/windows.cpp b/src/win32/windows.cpp
index 60edaffbc..139a17736 100644
--- a/src/win32/windows.cpp
+++ b/src/win32/windows.cpp
@@ -12,13 +12,11 @@
#ifdef _WIN32
#include "services.h"
-struct WindowsLanguage
+static struct WindowsLanguage
{
const char *languageName;
USHORT windowsLanguageName;
-};
-
-WindowsLanguage WindowsLanguages[] = {
+} WindowsLanguages[] = {
{"ca_ES", LANG_CATALAN},
{"de_DE", LANG_GERMAN},
{"el_GR", LANG_GREEK},
@@ -34,7 +32,7 @@ WindowsLanguage WindowsLanguages[] = {
{NULL, 0}
};
-WSADATA wsa;
+static WSADATA wsa;
void OnStartup()
{
@@ -55,87 +53,6 @@ USHORT WindowsGetLanguage(const char *lang)
return LANG_NEUTRAL;
}
-/** This is inet_pton, but it works on Windows
- * @param af The protocol type, AF_INET or AF_INET6
- * @param src The address
- * @param dst Struct to put results in
- * @return 1 on sucess, -1 on error
- */
-int inet_pton(int af, const char *src, void *dst)
-{
- int address_length;
- sockaddr_storage sa;
- sockaddr_in *sin = reinterpret_cast<sockaddr_in *>(&sa);
- sockaddr_in6 *sin6 = reinterpret_cast<sockaddr_in6 *>(&sa);
-
- switch (af)
- {
- case AF_INET:
- address_length = sizeof(sockaddr_in);
- break;
- case AF_INET6:
- address_length = sizeof(sockaddr_in6);
- break;
- default:
- return -1;
- }
-
- if (!WSAStringToAddress(static_cast<LPSTR>(const_cast<char *>(src)), af, NULL, reinterpret_cast<LPSOCKADDR>(&sa), &address_length))
- {
- switch (af)
- {
- case AF_INET:
- memcpy(dst, &sin->sin_addr, sizeof(in_addr));
- break;
- case AF_INET6:
- memcpy(dst, &sin6->sin6_addr, sizeof(in6_addr));
- break;
- }
- return 1;
- }
-
- return 0;
-}
-
-/** This is inet_ntop, but it works on Windows
- * @param af The protocol type, AF_INET or AF_INET6
- * @param src Network address structure
- * @param dst After converting put it here
- * @param size sizeof the dest
- * @return dst
- */
-const char *inet_ntop(int af, const void *src, char *dst, size_t size)
-{
- int address_length;
- DWORD string_length = size;
- sockaddr_storage sa;
- sockaddr_in *sin = reinterpret_cast<sockaddr_in *>(&sa);
- sockaddr_in6 *sin6 = reinterpret_cast<sockaddr_in6 *>(&sa);
-
- memset(&sa, 0, sizeof(sa));
-
- switch (af)
- {
- case AF_INET:
- address_length = sizeof(sockaddr_in);
- sin->sin_family = af;
- memcpy(&sin->sin_addr, src, sizeof(in_addr));
- break;
- case AF_INET6:
- address_length = sizeof(sockaddr_in6);
- sin6->sin6_family = af;
- memcpy(&sin6->sin6_addr, src, sizeof(in6_addr));
- break;
- default:
- return NULL;
- }
-
- if (!WSAAddressToString(reinterpret_cast<LPSOCKADDR>(&sa), address_length, NULL, dst, &string_length))
- return dst;
-
- return NULL;
-}
-
/** Like gettimeofday(), but it works on Windows.
* @param tv A timeval struct
* @param tz Should be NULL, it is not used
@@ -302,6 +219,16 @@ bool SupportedWindowsVersion()
return false;
}
+int setenv(const char *name, const char *value, int overwrite)
+{
+ return SetEnvironmentVariable(name, value);
+}
+
+int unsetenv(const char *name)
+{
+ return SetEnvironmentVariable(name, NULL);
+}
+
int mkstemp(char *input)
{
input = _mktemp(input);
@@ -315,4 +242,9 @@ int mkstemp(char *input)
return fd;
}
+void getcwd(char *buf, size_t sz)
+{
+ GetCurrentDirectory(sz, buf);
+}
+
#endif