diff --git a/CMakeLists.txt b/CMakeLists.txt index 1646855d30..2c30250610 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -682,13 +682,13 @@ check_type_size("ssize_t" SIZEOF_SSIZE_T) if(SIZEOF_SSIZE_T STREQUAL "") # ssize_t is a signed type in POSIX storing at least -1. # Set it to "int" to match the behavior of AC_TYPE_SSIZE_T (autotools). - set(ssize_t int) + set(SSIZE_T_DEF "typedef int ssize_t;") endif() check_type_size("off_t" SIZEOF_OFF_T) if(SIZEOF_OFF_T STREQUAL "") # off_t is a signed type in POSIX no narrower than int. # Set it to "long int" to match the behavior of AC_TYPE_OFF_T (autotools). - set(off_t long int) + set(OFF_T_DEF "typedef long int off_t;") endif() check_type_size("int" SIZEOF_INT) diff --git a/clamav-config.h.cmake.in b/clamav-config.h.cmake.in index b21af87782..e055cb7e1d 100644 --- a/clamav-config.h.cmake.in +++ b/clamav-config.h.cmake.in @@ -587,11 +587,22 @@ #define inline @INLINE_KEYWORD@ #endif -/* Define to `long int' if does not define. */ -#cmakedefine off_t @off_t@ - /* Define to `int' if does not define. */ -#cmakedefine ssize_t @ssize_t@ +#ifndef __ssize_t_defined + #if defined(_MSC_VER) + #include + typedef SSIZE_T ssize_t; + #else + @SSIZE_T_DEF@ + #endif + # define __ssize_t_defined +#endif + +/* Define to `long int' if does not define. */ +#ifndef __off_t_defined + @OFF_T_DEF@ + #define __off_t_defined +#endif /* Define to the equivalent of the C99 'restrict' keyword, or to nothing if this is not supported. Do not define if restrict is diff --git a/win32/compat/net.h b/win32/compat/net.h index 655373aa94..bd5fad478d 100644 --- a/win32/compat/net.h +++ b/win32/compat/net.h @@ -24,8 +24,14 @@ /* Don't include clamav-config.h, because that brings in platform.h and platform.h will make these functions recursive ;-). */ -#ifndef ssize_t -typedef int ssize_t; +#ifndef __ssize_t_defined + #if defined(_MSC_VER) + #include + typedef SSIZE_T ssize_t; + #else + typedef int ssize_t; + #endif + # define __ssize_t_defined #endif #define F_GETFL 1