From: David Sommerseth Date: Thu, 8 Dec 2011 11:38:57 +0000 (+0100) Subject: Enable access() when building in Visual Studio X-Git-Tag: v2.3-alpha1~42 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a4234e1e26693e8fe6a67eea5824ef02d11c825e;p=thirdparty%2Fopenvpn.git Enable access() when building in Visual Studio Visual Studio does not enable certiain standard Unix functions, such as access(). By defining _CRT_NONSTDC_NO_WARNINGS and _CRT_SECURE_NO_WARNINGS, these functions are enabled. This patch also adds a ./configure check for access() as well, in case this needs to be implemented on other platforms lacking this feature. Which is why HAVE_ACCESS is defined in win/config.h.in Thanks to Alon Bar-Lev for helping solving this. Signed-off-by: David Sommerseth Acked-by: Alon Bar-Lev Acked-by: Gert Doering URL: http://thread.gmane.org/gmane.network.openvpn.devel/5179/focus=5200 --- diff --git a/configure.ac b/configure.ac index d147d3855..f904db492 100644 --- a/configure.ac +++ b/configure.ac @@ -521,7 +521,7 @@ AC_CHECK_FUNCS(daemon chroot getpwnam setuid nice system getpid dup dup2 dnl getpass strerror syslog openlog mlockall getgrnam setgid dnl setgroups stat flock readv writev time dnl setsid chdir putenv getpeername unlink dnl - chsize ftruncate execve getpeereid umask basename dirname) + chsize ftruncate execve getpeereid umask basename dirname access) # Windows use stdcall for winsock so we cannot auto detect these m4_define([SOCKET_FUNCS], [socket recv recvfrom send sendto listen dnl diff --git a/options.c b/options.c index 67206aa5e..19792e97f 100644 --- a/options.c +++ b/options.c @@ -52,7 +52,6 @@ #include "configure.h" #include "forward.h" #include -#include #include "memdbg.h" diff --git a/win/config.h.in b/win/config.h.in index e9df37980..b5c31b8f5 100644 --- a/win/config.h.in +++ b/win/config.h.in @@ -223,6 +223,34 @@ typedef unsigned long in_addr_t; /* Special Windows version of getpass() defined in io.c */ #define HAVE_GETPASS 1 + +/* The POSIX access() function is available, but requires + * _CRT_NONSTDC_NO_WARNINGS and _CRT_SECURE_NO_WARNINGS + * to be defined + */ +#define HAVE_ACCESS 1 + +/* Macros used by the POSIX access() function might not be available on Windows. + * Based on information found here: + * http://msdn.microsoft.com/en-us/library/1w06ktdy%28v=vs.80%29.aspx + */ +#ifndef R_OK +#define R_OK 4 +#endif + +#ifndef W_OK +#define W_OK 2 +#endif + +#ifndef X_OK +#define X_OK 1 +#endif + +#ifndef F_OK +#define F_OK 0 +#endif + + /* Define to the full name and version of this package. */ #ifdef DEBUG_LABEL #define PACKAGE_STRING PACKAGE_NAME " " PACKAGE_VERSION " " DEBUG_LABEL diff --git a/win/msvc.mak.in b/win/msvc.mak.in index 26d7a3376..115e39508 100644 --- a/win/msvc.mak.in +++ b/win/msvc.mak.in @@ -38,7 +38,7 @@ LIB_DIRS = -LIBPATH:$(OPENSSL)\lib -LIBPATH:$(POLARSSL)\build\library -LIBPATH:$ EXE = openvpn.exe CPP=cl.exe -CPP_ARG_COMMON=/nologo /W3 -DWIN32 -DWIN32_LEAN_AND_MEAN -D_CONSOLE -D_MBCS -D_CRT_SECURE_NO_DEPRECATE $(INCLUDE_DIRS) /FD /c +CPP_ARG_COMMON=/nologo /W3 -DWIN32 -DWIN32_LEAN_AND_MEAN -D_CONSOLE -D_MBCS -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_WARNINGS -D_CRT_SECURE_NO_WARNINGS $(INCLUDE_DIRS) /FD /c LINK32=link.exe