Commit c057d291 authored by Tomoaki Teshima's avatar Tomoaki Teshima

fix compilation error on Visual Studio 2013 and earlier

  - fix compilation error about "inline"
  - fix linker error about "_TIFF_snprintf_f"
parent 6cedc827
...@@ -34,11 +34,8 @@ if(NOT MSVC) ...@@ -34,11 +34,8 @@ if(NOT MSVC)
check_include_file(unistd.h HAVE_UNISTD_H) check_include_file(unistd.h HAVE_UNISTD_H)
endif() endif()
if(MSVC) # Inspired from /usr/share/autoconf/autoconf/c.m4
set(INLINE_KEYWORD "inline") foreach(inline_keyword "inline" "__inline__" "__inline")
else()
# Inspired from /usr/share/autoconf/autoconf/c.m4
foreach(inline_keyword "inline" "__inline__" "__inline")
if(NOT DEFINED C_INLINE) if(NOT DEFINED C_INLINE)
set(CMAKE_REQUIRED_DEFINITIONS_SAVE ${CMAKE_REQUIRED_DEFINITIONS}) set(CMAKE_REQUIRED_DEFINITIONS_SAVE ${CMAKE_REQUIRED_DEFINITIONS})
set(CMAKE_REQUIRED_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS} set(CMAKE_REQUIRED_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
...@@ -55,10 +52,9 @@ else() ...@@ -55,10 +52,9 @@ else()
set(INLINE_KEYWORD "${inline_keyword}") set(INLINE_KEYWORD "${inline_keyword}")
endif() endif()
endif() endif()
endforeach() endforeach()
if(NOT DEFINED C_INLINE) if(NOT DEFINED C_INLINE)
set(INLINE_KEYWORD) set(INLINE_KEYWORD)
endif()
endif() endif()
...@@ -413,6 +409,7 @@ set(lib_srcs ...@@ -413,6 +409,7 @@ set(lib_srcs
tif_write.c tif_write.c
tif_zip.c tif_zip.c
tif_stream.cxx tif_stream.cxx
snprintf.c
t4.h t4.h
tif_dir.h tif_dir.h
tif_fax3.h tif_fax3.h
......
/**
* Workaround for lack of snprintf(3) in Visual Studio. See
* http://stackoverflow.com/questions/2915672/snprintf-and-visual-studio-2010/8712996#8712996
* It's a trivial wrapper around the builtin _vsnprintf_s and
* _vscprintf functions.
*/
#ifdef _MSC_VER
#include <stdio.h>
#include <stdarg.h>
int _TIFF_vsnprintf_f(char* str, size_t size, const char* format, va_list ap)
{
int count = -1;
if (size != 0)
count = _vsnprintf_s(str, size, _TRUNCATE, format, ap);
if (count == -1)
count = _vscprintf(format, ap);
return count;
}
int _TIFF_snprintf_f(char* str, size_t size, const char* format, ...)
{
int count;
va_list ap;
va_start(ap, format);
count = vsnprintf(str, size, format, ap);
va_end(ap);
return count;
}
#endif // _MSC_VER
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment