Browse Source

Compile (with warnings) with mingw64

Patch from yayooo for bug 7260, forward-ported to 0.2.4.
Nick Mathewson 11 years ago
parent
commit
9dee6b1dce
5 changed files with 13 additions and 1 deletions
  1. 2 0
      changes/bug7260
  2. 2 0
      configure.ac
  3. 1 1
      src/common/compat.c
  4. 2 0
      src/common/procmon.c
  5. 6 0
      src/win32/orconfig.h

+ 2 - 0
changes/bug7260

@@ -0,0 +1,2 @@
+  o Minor bugfixes:
+    - Compile on win64 using mingw64. Fixes bug 7260; patches from "yayooo".

+ 2 - 0
configure.ac

@@ -318,6 +318,7 @@ AC_CHECK_FUNCS(
         sysconf \
         uname \
         vasprintf \
+	_vscprintf
 )
 
 if test "$enable_threads" = "yes"; then
@@ -784,6 +785,7 @@ AC_CHECK_SIZEOF(__int64)
 AC_CHECK_SIZEOF(void *)
 AC_CHECK_SIZEOF(time_t)
 AC_CHECK_SIZEOF(size_t)
+AC_CHECK_SIZEOF(pid_t)
 
 AC_CHECK_TYPES([uint, u_char, ssize_t])
 

+ 1 - 1
src/common/compat.c

@@ -425,7 +425,7 @@ tor_vasprintf(char **strp, const char *fmt, va_list args)
   else
     *strp = strp_tmp;
   return r;
-#elif defined(_MSC_VER)
+#elif defined(HAVE__VSCPRINTF)
   /* On Windows, _vsnprintf won't tell us the length of the string if it
    * overflows, so we need to use _vcsprintf to tell how much to allocate */
   int len, r;

+ 2 - 0
src/common/procmon.c

@@ -25,7 +25,9 @@
 
 #ifdef _WIN32
 #include <windows.h>
+#endif
 
+#if 0 == SIZEOF_PID_T
 /* Windows does not define pid_t, but _getpid() returns an int. */
 typedef int pid_t;
 #endif

+ 6 - 0
src/win32/orconfig.h

@@ -145,6 +145,9 @@
 /* Define to 1 if you have the <unistd.h> header file. */
 #undef HAVE_UNISTD_H
 
+/* Define to 1 if you have the `_vscprintf' function. */
+#define HAVE__VSCPRINTF 1
+
 /* Define to 1 iff NULL is represented by a 0 in memory. */
 #define NULL_REP_IS_ZERO_BYTES 1
 
@@ -190,6 +193,9 @@
 /* The size of a `long long', as computed by sizeof. */
 #undef SIZEOF_LONG_LONG
 
+/* The size of `pid_t', as computed by sizeof. */
+#define SIZEOF_PID_T 0
+
 /* The size of a `short', as computed by sizeof. */
 #define SIZEOF_SHORT 2