Mercurial > hg > orthanc
changeset 6548:5e961d92f655
upgraded to dcmtk 3.7.0
| author | Sebastien Jodogne <s.jodogne@gmail.com> |
|---|---|
| date | Fri, 19 Dec 2025 15:49:06 +0100 |
| parents | 5037896a19ae |
| children | bf72a35a8313 |
| files | NEWS OrthancFramework/Resources/CMake/DcmtkConfiguration.cmake OrthancFramework/Resources/CMake/DcmtkConfigurationStatic-3.7.0.cmake OrthancFramework/Resources/CMake/OrthancFrameworkParameters.cmake OrthancFramework/Resources/Patches/dcmtk-3.7.0-visual-studio.patch OrthancFramework/Resources/Patches/dcmtk-3.7.0.patch |
| diffstat | 6 files changed, 2791 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/NEWS Fri Dec 19 12:39:05 2025 +0100 +++ b/NEWS Fri Dec 19 15:49:06 2025 +0100 @@ -1,10 +1,8 @@ Pending changes in the mainline =============================== -* Upgraded dependencies for static builds: - - boost 1.89.0 -* Fix "LimitFindResults" and "LimitFindInstances" configurations that were not - applied to C-FIND (bug introduced in 1.12.5). +General +------- REST API @@ -14,6 +12,15 @@ - "orthanc_logged_errors_count" - "orthanc_logged_warnings_count" +Maintenance +----------- + +* Fix "LimitFindResults" and "LimitFindInstances" configurations that were not + applied to C-FIND (bug introduced in 1.12.5). +* Upgraded dependencies for static builds: + - boost 1.89.0 + - dcmtk 3.6.9 + Version 1.12.10 (2025-11-26) ============================
--- a/OrthancFramework/Resources/CMake/DcmtkConfiguration.cmake Fri Dec 19 12:39:05 2025 +0100 +++ b/OrthancFramework/Resources/CMake/DcmtkConfiguration.cmake Fri Dec 19 15:49:06 2025 +0100 @@ -41,6 +41,8 @@ include(${CMAKE_CURRENT_LIST_DIR}/DcmtkConfigurationStatic-3.6.8.cmake) elseif (DCMTK_STATIC_VERSION STREQUAL "3.6.9") include(${CMAKE_CURRENT_LIST_DIR}/DcmtkConfigurationStatic-3.6.9.cmake) + elseif (DCMTK_STATIC_VERSION STREQUAL "3.7.0") + include(${CMAKE_CURRENT_LIST_DIR}/DcmtkConfigurationStatic-3.7.0.cmake) else() message(FATAL_ERROR "Unsupported version of DCMTK: ${DCMTK_STATIC_VERSION}") endif()
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/OrthancFramework/Resources/CMake/DcmtkConfigurationStatic-3.7.0.cmake Fri Dec 19 15:49:06 2025 +0100 @@ -0,0 +1,311 @@ +# Orthanc - A Lightweight, RESTful DICOM Store +# Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics +# Department, University Hospital of Liege, Belgium +# Copyright (C) 2017-2023 Osimis S.A., Belgium +# Copyright (C) 2024-2025 Orthanc Team SRL, Belgium +# Copyright (C) 2021-2025 Sebastien Jodogne, ICTEAM UCLouvain, Belgium +# +# This program is free software: you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public License +# as published by the Free Software Foundation, either version 3 of +# the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program. If not, see +# <http://www.gnu.org/licenses/>. + + +SET(DCMTK_VERSION_NUMBER 370) +SET(DCMTK_PACKAGE_VERSION "3.7.0") +SET(DCMTK_SOURCES_DIR ${CMAKE_BINARY_DIR}/dcmtk-3.7.0) +SET(DCMTK_URL "https://orthanc.uclouvain.be/downloads/third-party-downloads/dcmtk-3.7.0.tar.gz") +SET(DCMTK_MD5 "15531c6d20e188aa8b0f237a84b95bc2") + +macro(DCMTK_UNSET) +endmacro() + +macro(DCMTK_UNSET_CACHE) +endmacro() + +set(DCMTK_BINARY_DIR ${DCMTK_SOURCES_DIR}/) +set(DCMTK_CMAKE_INCLUDE ${DCMTK_SOURCES_DIR}/) + +if (CMAKE_SYSTEM_NAME STREQUAL "Emscripten") + set(DCMTK_WITH_THREADS OFF) # Disable thread support in wasm/asm.js +else() + set(DCMTK_WITH_THREADS ON) +endif() + +add_definitions(-DDCMTK_INSIDE_LOG4CPLUS=1) + +if (IS_DIRECTORY "${DCMTK_SOURCES_DIR}") + set(FirstRun OFF) +else() + set(FirstRun ON) +endif() + +DownloadPackage(${DCMTK_MD5} ${DCMTK_URL} "${DCMTK_SOURCES_DIR}") + + +if (FirstRun) + # Apply the patches + execute_process( + COMMAND ${PATCH_EXECUTABLE} -p0 -N -i + ${CMAKE_CURRENT_LIST_DIR}/../Patches/dcmtk-3.7.0.patch + WORKING_DIRECTORY ${CMAKE_BINARY_DIR} + RESULT_VARIABLE Failure + ) + + if (Failure) + message(FATAL_ERROR "Error while patching a file") + endif() + + if (MSVC) + # Older versions of Microsoft Visual Studio (notably MSVC2008) + # don't like void usage of function arguments in C source files, + # in order to avoid a warning about unused arguments. This patch + # removes such usages that were not present in DCMTK <= 3.6.6. + execute_process( + COMMAND ${PATCH_EXECUTABLE} -p0 -N -i + ${CMAKE_CURRENT_LIST_DIR}/../Patches/dcmtk-3.7.0-visual-studio.patch + WORKING_DIRECTORY ${CMAKE_BINARY_DIR} + RESULT_VARIABLE Failure + ) + + if (Failure) + message(FATAL_ERROR "Error while patching a file") + endif() + endif() + + configure_file( + ${CMAKE_CURRENT_LIST_DIR}/../Patches/dcmtk-dcdict_orthanc.cc + ${DCMTK_SOURCES_DIR}/dcmdata/libsrc/dcdict_orthanc.cc + COPYONLY) +else() + message("The patches for DCMTK have already been applied") +endif() + + +include_directories( + ${DCMTK_SOURCES_DIR}/dcmiod/include + ${DCMTK_SOURCES_DIR}/oficonv/include + ) + + +# C_CHAR_UNSIGNED *must* be set before calling "GenerateDCMTKConfigure.cmake" +IF (CMAKE_CROSSCOMPILING) + if (CMAKE_COMPILER_IS_GNUCXX AND + CMAKE_SYSTEM_NAME STREQUAL "Windows") # MinGW + SET(C_CHAR_UNSIGNED 1 CACHE INTERNAL "Whether char is unsigned.") + + elseif(CMAKE_SYSTEM_NAME STREQUAL "Emscripten") # WebAssembly or asm.js + + # Check out "../WebAssembly/ArithmeticTests/" to regenerate the + # "arith.h" file + configure_file( + ${CMAKE_CURRENT_LIST_DIR}/WebAssembly/arith.h + ${DCMTK_SOURCES_DIR}/config/include/dcmtk/config/arith.h + COPYONLY) + + UNSET(C_CHAR_UNSIGNED CACHE) + SET(C_CHAR_UNSIGNED 0 CACHE INTERNAL "") + + else() + message(FATAL_ERROR "Support your platform here") + endif() +ENDIF() + + +if ("${CMAKE_SYSTEM_VERSION}" STREQUAL "LinuxStandardBase") + SET(DCMTK_ENABLE_CHARSET_CONVERSION "iconv" CACHE STRING "") + SET(HAVE_SYS_GETTID 0 CACHE INTERNAL "") +endif() + + +SET(DCMTK_PERMIT_CXX98 ON) # Needed since DCMTK 3.7.0 + +SET(DCMTK_SOURCE_DIR ${DCMTK_SOURCES_DIR}) +include(GNUInstallDirs) # Needed since DCMTK 3.6.9 +include(${DCMTK_SOURCES_DIR}/CMake/CheckFunctionWithHeaderExists.cmake) +include(${DCMTK_SOURCES_DIR}/CMake/GenerateDCMTKConfigure.cmake) + + +if (CMAKE_SYSTEM_NAME STREQUAL "Emscripten") # WebAssembly or + # asm.js The macros below are not properly discovered by DCMTK + # when using WebAssembly. Check out "../WebAssembly/arith.h" for + # how we produced these values. This step MUST be after + # "GenerateDCMTKConfigure" and before the generation of + # "osconfig.h". + UNSET(SIZEOF_VOID_P CACHE) + UNSET(SIZEOF_CHAR CACHE) + UNSET(SIZEOF_DOUBLE CACHE) + UNSET(SIZEOF_FLOAT CACHE) + UNSET(SIZEOF_INT CACHE) + UNSET(SIZEOF_LONG CACHE) + UNSET(SIZEOF_SHORT CACHE) + UNSET(SIZEOF_VOID_P CACHE) + + SET(SIZEOF_VOID_P 4 CACHE INTERNAL "") + SET(SIZEOF_CHAR 1 CACHE INTERNAL "") + SET(SIZEOF_DOUBLE 8 CACHE INTERNAL "") + SET(SIZEOF_FLOAT 4 CACHE INTERNAL "") + SET(SIZEOF_INT 4 CACHE INTERNAL "") + SET(SIZEOF_LONG 4 CACHE INTERNAL "") + SET(SIZEOF_SHORT 2 CACHE INTERNAL "") + SET(SIZEOF_VOID_P 4 CACHE INTERNAL "") +endif() + + +set(DCMTK_PACKAGE_VERSION_SUFFIX "") +set(DCMTK_PACKAGE_VERSION_NUMBER ${DCMTK_VERSION_NUMBER}) + + +# For the dcmtls module, necessary since DCMTK 3.6.7 (cf. file +# "dcmtls/libsrc/tlslayer.cc"). This must be done before the +# invokation of "configure_file()"! +if (STATIC_BUILD OR NOT USE_SYSTEM_OPENSSL) + # The "CHECK_FUNCTIONWITHHEADER_EXISTS()" provided by DCMTK only + # works with the system-wide version of OpenSSL. If statically + # linking against OpenSSL, we manually provide information about + # OpenSSL 3.0.x + set(HAVE_OPENSSL_PROTOTYPE_DH_BITS 1) + set(HAVE_OPENSSL_PROTOTYPE_EVP_PKEY_BASE_ID 1) + set(HAVE_OPENSSL_PROTOTYPE_SSL_CTX_GET0_PARAM 1) + set(HAVE_OPENSSL_PROTOTYPE_SSL_CTX_GET_CERT_STORE 1) + set(HAVE_OPENSSL_PROTOTYPE_SSL_CTX_GET_CIPHERS 1) + set(HAVE_OPENSSL_PROTOTYPE_X509_GET_SIGNATURE_NID 1) + set(HAVE_OPENSSL_PROTOTYPE_X509_STORE_GET0_PARAM 1) +else() + CHECK_FUNCTIONWITHHEADER_EXISTS("DH_bits" "openssl/dh.h" HAVE_OPENSSL_PROTOTYPE_DH_BITS) + CHECK_FUNCTIONWITHHEADER_EXISTS("EVP_PKEY_base_id" "openssl/evp.h" HAVE_OPENSSL_PROTOTYPE_EVP_PKEY_BASE_ID) + CHECK_FUNCTIONWITHHEADER_EXISTS("SSL_CTX_get0_param" "openssl/ssl.h" HAVE_OPENSSL_PROTOTYPE_SSL_CTX_GET0_PARAM) + CHECK_FUNCTIONWITHHEADER_EXISTS("SSL_CTX_get_cert_store" "openssl/ssl.h" HAVE_OPENSSL_PROTOTYPE_SSL_CTX_GET_CERT_STORE) + CHECK_FUNCTIONWITHHEADER_EXISTS("SSL_CTX_get_ciphers" "openssl/ssl.h" HAVE_OPENSSL_PROTOTYPE_SSL_CTX_GET_CIPHERS) + CHECK_FUNCTIONWITHHEADER_EXISTS("X509_STORE_get0_param" "openssl/x509.h" HAVE_OPENSSL_PROTOTYPE_X509_STORE_GET0_PARAM) + CHECK_FUNCTIONWITHHEADER_EXISTS("X509_get_signature_nid" "openssl/x509.h" HAVE_OPENSSL_PROTOTYPE_X509_GET_SIGNATURE_NID) +endif() + + +# "DCMTK_ENABLE_CHARSET_CONVERSION" is defined by "osconfig.h.in" +if (NOT DEFINED DCMTK_LOCALE_BACKEND OR # This is the case if locale support is disabled (e.g. in Stone) + DCMTK_LOCALE_BACKEND STREQUAL "gcc") + set(DCMTK_ENABLE_CHARSET_CONVERSION "DCMTK_CHARSET_CONVERSION_STDLIBC_ICONV" CACHE STRING "" FORCE) +elseif (DCMTK_LOCALE_BACKEND STREQUAL "libiconv") + set(DCMTK_ENABLE_CHARSET_CONVERSION "DCMTK_CHARSET_CONVERSION_ICONV" CACHE STRING "" FORCE) +elseif (DCMTK_LOCALE_BACKEND STREQUAL "icu") + message(FATAL_ERROR "Support for ICU has been removed since DCMTK 3.6.9") +elseif (DCMTK_LOCALE_BACKEND STREQUAL "oficonv") + set(DCMTK_ENABLE_CHARSET_CONVERSION "DCMTK_CHARSET_CONVERSION_OFICONV" CACHE STRING "" FORCE) +else() + message(FATAL_ERROR "Invalid value for DCMTK_LOCALE_BACKEND: ${DCMTK_LOCALE_BACKEND}") +endif() + + +# Enable support of the 1.2.840.10008.1.2.1.99 transfer syntax in +# static builds of Orthanc (Deflated Explicit VR Little +# Endian). Defining "WITH_ZLIB" is always OK, as zlib is part of the +# core dependencies of the Orthanc framework. +# https://discourse.orthanc-server.org/t/transcoding-to-deflated-transfer-syntax-fails/ +set(WITH_ZLIB ON) + +CONFIGURE_FILE( + ${DCMTK_SOURCES_DIR}/CMake/osconfig.h.in + ${DCMTK_SOURCES_DIR}/config/include/dcmtk/config/osconfig.h) + + + +if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows") + link_libraries(netapi32) # For NetWkstaUserGetInfo@12 + link_libraries(iphlpapi) # For GetAdaptersInfo@8 + + # Configure Wine if cross-compiling for Windows + if (CMAKE_COMPILER_IS_GNUCXX) + include(${DCMTK_SOURCES_DIR}/CMake/dcmtkUseWine.cmake) + FIND_PROGRAM(WINE_WINE_PROGRAM wine) + FIND_PROGRAM(WINE_WINEPATH_PROGRAM winepath) + list(APPEND DCMTK_TRY_COMPILE_REQUIRED_CMAKE_FLAGS "-DCMAKE_EXE_LINKER_FLAGS=-static") + endif() +endif() + +# This step must be after the generation of "osconfig.h" => Removed since DCMTK 3.6.9 +#if (NOT CMAKE_SYSTEM_NAME STREQUAL "Emscripten") +# INSPECT_FUNDAMENTAL_ARITHMETIC_TYPES() +#endif() + + +# Source for the logging facility of DCMTK +AUX_SOURCE_DIRECTORY(${DCMTK_SOURCES_DIR}/oflog/libsrc DCMTK_SOURCES) +if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux" OR + ${CMAKE_SYSTEM_NAME} STREQUAL "Darwin" OR + ${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD" OR + ${CMAKE_SYSTEM_NAME} STREQUAL "kFreeBSD" OR + ${CMAKE_SYSTEM_NAME} STREQUAL "OpenBSD" OR + ${CMAKE_SYSTEM_NAME} STREQUAL "Emscripten") + list(REMOVE_ITEM DCMTK_SOURCES + ${DCMTK_SOURCES_DIR}/oflog/libsrc/clfsap.cc + ${DCMTK_SOURCES_DIR}/oflog/libsrc/windebap.cc + ${DCMTK_SOURCES_DIR}/oflog/libsrc/winsock.cc + ) + +elseif (${CMAKE_SYSTEM_NAME} STREQUAL "Windows") + list(REMOVE_ITEM DCMTK_SOURCES + ${DCMTK_SOURCES_DIR}/oflog/libsrc/unixsock.cc + ${DCMTK_SOURCES_DIR}/oflog/libsrc/clfsap.cc + ) +endif() + + +# Starting with DCMTK 3.6.2, the Nagle algorithm is not disabled by +# default since this does not seem to be appropriate (anymore) for +# most modern operating systems. In order to change this default, the +# environment variable NO_TCPDELAY can be set to "1" (see envvars.txt +# for details). Alternatively, the macro DISABLE_NAGLE_ALGORITHM can +# be defined to change this setting at compilation time (see +# macros.txt for details). +# https://forum.dcmtk.org/viewtopic.php?t=4632 +add_definitions( + -DDISABLE_NAGLE_ALGORITHM=1 + ) + + +if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows") + # For compatibility with Windows XP, avoid using fiber-local-storage + # in log4cplus, but use thread-local-storage instead. Otherwise, + # Windows XP complains about missing "FlsGetValue()" in KERNEL32.dll + add_definitions( + -DDCMTK_LOG4CPLUS_AVOID_WIN32_FLS + ) + + if (CMAKE_COMPILER_IS_GNUCXX OR # MinGW + "${CMAKE_SIZEOF_VOID_P}" STREQUAL "4") # MSVC for 32bit (*) + + # (*) With multithreaded logging enabled, Visual Studio 2008 fails + # with error: ".\dcmtk-3.6.7\oflog\libsrc\globinit.cc(422) : error + # C2664: 'dcmtk::log4cplus::thread::impl::tls_init' : cannot + # convert parameter 1 from 'void (__stdcall *)(void *)' to + # 'dcmtk::log4cplus::thread::impl::tls_init_cleanup_func_type'" + # None of the functions with this name in scope match the target type + + add_definitions( + -DDCMTK_LOG4CPLUS_SINGLE_THREADED + ) + endif() + + if (CMAKE_COMPILER_IS_GNUCXX) # MinGW + # Necessary since DCMTK 3.6.9 + add_definitions( + -DENABLE_OLD_OFSTD_FTOA_IMPLEMENTATION + -DENABLE_OLD_OFSTD_ATOF_IMPLEMENTATION + ) + endif() +endif() + + +if (DCMTK_LOCALE_BACKEND STREQUAL "oficonv") + AUX_SOURCE_DIRECTORY(${DCMTK_SOURCES_DIR}/oficonv/libsrc DCMTK_SOURCES) +endif()
--- a/OrthancFramework/Resources/CMake/OrthancFrameworkParameters.cmake Fri Dec 19 12:39:05 2025 +0100 +++ b/OrthancFramework/Resources/CMake/OrthancFrameworkParameters.cmake Fri Dec 19 15:49:06 2025 +0100 @@ -79,7 +79,7 @@ # Parameters specific to DCMTK set(DCMTK_DICTIONARY_DIR "" CACHE PATH "Directory containing the DCMTK dictionaries \"dicom.dic\" and \"private.dic\" (only when using system version of DCMTK)") -set(DCMTK_STATIC_VERSION "3.6.9" CACHE STRING "Version of DCMTK to be used in static builds (can be \"3.6.0\", \"3.6.2\", \"3.6.4\", \"3.6.5\", \"3.6.6\", \"3.6.7\", \"3.6.8\", or \"3.6.9\")") +set(DCMTK_STATIC_VERSION "3.7.0" CACHE STRING "Version of DCMTK to be used in static builds (can be \"3.6.0\", \"3.6.2\", \"3.6.4\", \"3.6.5\", \"3.6.6\", \"3.6.7\", \"3.6.8\", \"3.6.9\", or \"3.7.0\")") set(USE_DCMTK_362_PRIVATE_DIC ON CACHE BOOL "Use the dictionary of private tags from DCMTK 3.6.2 if using DCMTK 3.6.0") set(USE_SYSTEM_DCMTK ON CACHE BOOL "Use the system version of DCMTK") set(ENABLE_DCMTK_LOG ON CACHE BOOL "Enable logging internal to DCMTK")
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/OrthancFramework/Resources/Patches/dcmtk-3.7.0-visual-studio.patch Fri Dec 19 15:49:06 2025 +0100 @@ -0,0 +1,2173 @@ +diff -urEb dcmtk-3.7.0.orig/config/math.cc dcmtk-3.7.0/config/math.cc +--- dcmtk-3.7.0.orig/config/math.cc 2025-12-19 14:51:32.420814222 +0100 ++++ dcmtk-3.7.0/config/math.cc 2025-12-19 14:54:07.699710064 +0100 +@@ -42,26 +42,46 @@ + #include <windows.h> + #endif + ++#if defined(_MSC_VER) ++#include <float.h> ++#endif ++ + struct dcmtk_config_math + { + static inline OFBool isnan( float f ) + { ++#if defined(_MSC_VER) ++ return _isnan(static_cast<double>(f)) != 0; ++#else + return STD_NAMESPACE isnan(f); ++#endif + } + + static inline OFBool isnan( double d ) + { ++#if defined(_MSC_VER) ++ return _isnan(d) != 0; ++#else + return STD_NAMESPACE isnan(d); ++#endif + } + + static inline OFBool isinf( float f ) + { ++#if defined(_MSC_VER) ++ return _finite(static_cast<double>(f)) != 0; ++#else + return STD_NAMESPACE isinf( f ); ++#endif + } + + static inline OFBool isinf( double d ) + { ++#if defined(_MSC_VER) ++ return _finite(d) != 0; ++#else + return STD_NAMESPACE isinf( d ); ++#endif + } + + static inline double sqrt( double d ) +diff -urEb dcmtk-3.7.0.orig/dcmjpeg/libijg12/jccoefct.c dcmtk-3.7.0/dcmjpeg/libijg12/jccoefct.c +--- dcmtk-3.7.0.orig/dcmjpeg/libijg12/jccoefct.c 2025-12-19 14:51:32.451814000 +0100 ++++ dcmtk-3.7.0/dcmjpeg/libijg12/jccoefct.c 2025-12-19 14:54:35.055516562 +0100 +@@ -343,7 +343,7 @@ + METHODDEF(boolean) + compress_output (j_compress_ptr cinfo, JSAMPIMAGE input_buf) + { +- (void)input_buf; ++ //(void)input_buf; + j_lossy_c_ptr lossyc = (j_lossy_c_ptr) cinfo->codec; + c_coef_ptr coef = (c_coef_ptr) lossyc->coef_private; + JDIMENSION MCU_col_num; /* index of current MCU within row */ +diff -urEb dcmtk-3.7.0.orig/dcmjpeg/libijg12/jccolor.c dcmtk-3.7.0/dcmjpeg/libijg12/jccolor.c +--- dcmtk-3.7.0.orig/dcmjpeg/libijg12/jccolor.c 2025-12-19 14:51:32.451814000 +0100 ++++ dcmtk-3.7.0/dcmjpeg/libijg12/jccolor.c 2025-12-19 15:09:42.504566395 +0100 +@@ -340,7 +340,7 @@ + METHODDEF(void) + null_method (j_compress_ptr cinfo) + { +- (void) cinfo; ++ //(void) cinfo; + /* no work needed */ + } + +diff -urEb dcmtk-3.7.0.orig/dcmjpeg/libijg12/jcdiffct.c dcmtk-3.7.0/dcmjpeg/libijg12/jcdiffct.c +--- dcmtk-3.7.0.orig/dcmjpeg/libijg12/jcdiffct.c 2025-12-19 14:51:32.452813993 +0100 ++++ dcmtk-3.7.0/dcmjpeg/libijg12/jcdiffct.c 2025-12-19 14:55:01.682328471 +0100 +@@ -302,7 +302,7 @@ + METHODDEF(boolean) + compress_output (j_compress_ptr cinfo, JSAMPIMAGE input_buf) + { +- (void)input_buf; ++ //(void)input_buf; + j_lossless_c_ptr losslsc = (j_lossless_c_ptr) cinfo->codec; + c_diff_ptr diff = (c_diff_ptr) losslsc->diff_private; + /* JDIMENSION MCU_col_num; */ /* index of current MCU within row */ +diff -urEb dcmtk-3.7.0.orig/dcmjpeg/libijg12/jclhuff.c dcmtk-3.7.0/dcmjpeg/libijg12/jclhuff.c +--- dcmtk-3.7.0.orig/dcmjpeg/libijg12/jclhuff.c 2025-12-19 14:51:32.451814000 +0100 ++++ dcmtk-3.7.0/dcmjpeg/libijg12/jclhuff.c 2025-12-19 15:10:05.013448850 +0100 +@@ -569,7 +569,7 @@ + METHODDEF(boolean) + need_optimization_pass (j_compress_ptr cinfo) + { +- (void)cinfo; ++ //(void)cinfo; + return TRUE; + } + +diff -urEb dcmtk-3.7.0.orig/dcmjpeg/libijg12/jcmarker.c dcmtk-3.7.0/dcmjpeg/libijg12/jcmarker.c +--- dcmtk-3.7.0.orig/dcmjpeg/libijg12/jcmarker.c 2025-12-19 14:51:32.451814000 +0100 ++++ dcmtk-3.7.0/dcmjpeg/libijg12/jcmarker.c 2025-12-19 15:08:42.299873627 +0100 +@@ -224,7 +224,7 @@ + /* Since the useful info is so small, we want to emit all the tables in */ + /* one DAC marker. Therefore this routine does its own scan of the table. */ + { +- (void)cinfo; ++ //(void)cinfo; + #ifdef C_ARITH_CODING_SUPPORTED + char dc_in_use[NUM_ARITH_TBLS]; + char ac_in_use[NUM_ARITH_TBLS]; +diff -urEb dcmtk-3.7.0.orig/dcmjpeg/libijg12/jcpred.c dcmtk-3.7.0/dcmjpeg/libijg12/jcpred.c +--- dcmtk-3.7.0.orig/dcmjpeg/libijg12/jcpred.c 2025-12-19 14:51:32.451814000 +0100 ++++ dcmtk-3.7.0/dcmjpeg/libijg12/jcpred.c 2025-12-19 15:07:02.982354700 +0100 +@@ -213,7 +213,7 @@ + const JSAMPROW input_buf, JSAMPROW prev_row, + JDIFFROW diff_buf, JDIMENSION width) + { +- (void)prev_row; ++ //(void)prev_row; + DIFFERENCE_1D(INITIAL_PREDICTORx); + + /* +diff -urEb dcmtk-3.7.0.orig/dcmjpeg/libijg12/jcsample.c dcmtk-3.7.0/dcmjpeg/libijg12/jcsample.c +--- dcmtk-3.7.0.orig/dcmjpeg/libijg12/jcsample.c 2025-12-19 14:51:32.451814000 +0100 ++++ dcmtk-3.7.0/dcmjpeg/libijg12/jcsample.c 2025-12-19 15:09:09.294737204 +0100 +@@ -74,7 +74,7 @@ + METHODDEF(void) + start_pass_downsample (j_compress_ptr cinfo) + { +- (void)cinfo; ++ //(void)cinfo; + /* no work for now */ + } + +diff -urEb dcmtk-3.7.0.orig/dcmjpeg/libijg12/jcscale.c dcmtk-3.7.0/dcmjpeg/libijg12/jcscale.c +--- dcmtk-3.7.0.orig/dcmjpeg/libijg12/jcscale.c 2025-12-19 14:51:32.452813993 +0100 ++++ dcmtk-3.7.0/dcmjpeg/libijg12/jcscale.c 2025-12-19 15:09:34.996605290 +0100 +@@ -34,7 +34,7 @@ + noscale(j_compress_ptr cinfo, + JSAMPROW input_buf, JSAMPROW output_buf, JDIMENSION width) + { +- (void)cinfo; ++ //(void)cinfo; + MEMCOPY(output_buf, input_buf, width * SIZEOF(JSAMPLE)); + return; + } +diff -urEb dcmtk-3.7.0.orig/dcmjpeg/libijg12/jcshuff.c dcmtk-3.7.0/dcmjpeg/libijg12/jcshuff.c +--- dcmtk-3.7.0.orig/dcmjpeg/libijg12/jcshuff.c 2025-12-19 14:51:32.451814000 +0100 ++++ dcmtk-3.7.0/dcmjpeg/libijg12/jcshuff.c 2025-12-19 15:09:49.765528629 +0100 +@@ -629,7 +629,7 @@ + METHODDEF(boolean) + need_optimization_pass (j_compress_ptr cinfo) + { +- (void)cinfo; ++ //(void)cinfo; + return TRUE; + } + +diff -urEb dcmtk-3.7.0.orig/dcmjpeg/libijg12/jctrans.c dcmtk-3.7.0/dcmjpeg/libijg12/jctrans.c +--- dcmtk-3.7.0.orig/dcmjpeg/libijg12/jctrans.c 2025-12-19 14:51:32.451814000 +0100 ++++ dcmtk-3.7.0/dcmjpeg/libijg12/jctrans.c 2025-12-19 15:07:28.076236451 +0100 +@@ -267,7 +267,7 @@ + METHODDEF(boolean) + compress_output (j_compress_ptr cinfo, JSAMPIMAGE input_buf) + { +- (void)input_buf; ++ //(void)input_buf; + j_lossy_c_ptr lossyc = (j_lossy_c_ptr) cinfo->codec; + c_coef_ptr coef = (c_coef_ptr) lossyc->coef_private; + JDIMENSION MCU_col_num; /* index of current MCU within row */ +diff -urEb dcmtk-3.7.0.orig/dcmjpeg/libijg12/jdatasrc.c dcmtk-3.7.0/dcmjpeg/libijg12/jdatasrc.c +--- dcmtk-3.7.0.orig/dcmjpeg/libijg12/jdatasrc.c 2025-12-19 14:51:32.451814000 +0100 ++++ dcmtk-3.7.0/dcmjpeg/libijg12/jdatasrc.c 2025-12-19 15:08:57.706796040 +0100 +@@ -168,7 +168,7 @@ + METHODDEF(void) + term_source (j_decompress_ptr cinfo) + { +- (void)cinfo; ++ //(void)cinfo; + /* no work necessary here */ + } + +diff -urEb dcmtk-3.7.0.orig/dcmjpeg/libijg12/jdcoefct.c dcmtk-3.7.0/dcmjpeg/libijg12/jdcoefct.c +--- dcmtk-3.7.0.orig/dcmjpeg/libijg12/jdcoefct.c 2025-12-19 14:51:32.451814000 +0100 ++++ dcmtk-3.7.0/dcmjpeg/libijg12/jdcoefct.c 2025-12-19 15:07:15.724294952 +0100 +@@ -229,7 +229,7 @@ + METHODDEF(int) + dummy_consume_data (j_decompress_ptr cinfo) + { +- (void)cinfo; ++ //(void)cinfo; + return JPEG_SUSPENDED; /* Always indicate nothing was done */ + } + +diff -urEb dcmtk-3.7.0.orig/dcmjpeg/libijg12/jdcolor.c dcmtk-3.7.0/dcmjpeg/libijg12/jdcolor.c +--- dcmtk-3.7.0.orig/dcmjpeg/libijg12/jdcolor.c 2025-12-19 14:51:32.451814000 +0100 ++++ dcmtk-3.7.0/dcmjpeg/libijg12/jdcolor.c 2025-12-19 15:09:59.200479340 +0100 +@@ -309,7 +309,7 @@ + METHODDEF(void) + start_pass_dcolor (j_decompress_ptr cinfo) + { +- (void)cinfo; ++ //(void)cinfo; + /* no work needed */ + } + +diff -urEb dcmtk-3.7.0.orig/dcmjpeg/libijg12/jddiffct.c dcmtk-3.7.0/dcmjpeg/libijg12/jddiffct.c +--- dcmtk-3.7.0.orig/dcmjpeg/libijg12/jddiffct.c 2025-12-19 14:51:32.451814000 +0100 ++++ dcmtk-3.7.0/dcmjpeg/libijg12/jddiffct.c 2025-12-19 15:05:29.191944671 +0100 +@@ -238,7 +238,7 @@ + METHODDEF(int) + dummy_consume_data (j_decompress_ptr cinfo) + { +- (void)cinfo; ++ //(void)cinfo; + return JPEG_SUSPENDED; /* Always indicate nothing was done */ + } + +diff -urEb dcmtk-3.7.0.orig/dcmjpeg/libijg12/jdmerge.c dcmtk-3.7.0/dcmjpeg/libijg12/jdmerge.c +--- dcmtk-3.7.0.orig/dcmjpeg/libijg12/jdmerge.c 2025-12-19 14:51:32.451814000 +0100 ++++ dcmtk-3.7.0/dcmjpeg/libijg12/jdmerge.c 2025-12-19 15:10:43.280245916 +0100 +@@ -148,7 +148,7 @@ + JDIMENSION out_rows_avail) + /* 2:1 vertical sampling case: may need a spare row. */ + { +- (void) in_row_groups_avail; ++ //(void) in_row_groups_avail; + my_upsample_ptr upsample = (my_upsample_ptr) cinfo->upsample; + JSAMPROW work_ptrs[2]; + JDIMENSION num_rows; /* number of rows returned to caller */ +@@ -198,8 +198,8 @@ + JDIMENSION out_rows_avail) + /* 1:1 vertical sampling case: much easier, never need a spare row. */ + { +- (void) in_row_groups_avail; +- (void) out_rows_avail; ++ //(void) in_row_groups_avail; ++ //(void) out_rows_avail; + my_upsample_ptr upsample = (my_upsample_ptr) cinfo->upsample; + + /* Just do the upsampling. */ +diff -urEb dcmtk-3.7.0.orig/dcmjpeg/libijg12/jdpostct.c dcmtk-3.7.0/dcmjpeg/libijg12/jdpostct.c +--- dcmtk-3.7.0.orig/dcmjpeg/libijg12/jdpostct.c 2025-12-19 14:51:32.451814000 +0100 ++++ dcmtk-3.7.0/dcmjpeg/libijg12/jdpostct.c 2025-12-19 15:06:35.014488269 +0100 +@@ -161,8 +161,8 @@ + JSAMPARRAY output_buf, JDIMENSION *out_row_ctr, + JDIMENSION out_rows_avail) + { +- (void) output_buf; +- (void) out_rows_avail; ++ //(void) output_buf; ++ //(void) out_rows_avail; + my_post_ptr post = (my_post_ptr) cinfo->post; + JDIMENSION old_next_row, num_rows; + +@@ -207,9 +207,9 @@ + JSAMPARRAY output_buf, JDIMENSION *out_row_ctr, + JDIMENSION out_rows_avail) + { +- (void) input_buf; +- (void) in_row_group_ctr; +- (void) in_row_groups_avail; ++ //(void) input_buf; ++ //(void) in_row_group_ctr; ++ //(void) in_row_groups_avail; + + my_post_ptr post = (my_post_ptr) cinfo->post; + JDIMENSION num_rows, max_rows; +diff -urEb dcmtk-3.7.0.orig/dcmjpeg/libijg12/jdpred.c dcmtk-3.7.0/dcmjpeg/libijg12/jdpred.c +--- dcmtk-3.7.0.orig/dcmjpeg/libijg12/jdpred.c 2025-12-19 14:51:32.451814000 +0100 ++++ dcmtk-3.7.0/dcmjpeg/libijg12/jdpred.c 2025-12-19 15:06:05.530692658 +0100 +@@ -101,8 +101,8 @@ + const JDIFFROW diff_buf, const JDIFFROW prev_row, + JDIFFROW undiff_buf, JDIMENSION width) + { +- (void)cinfo; +- (void)comp_index; ++ //(void)cinfo; ++ //(void)comp_index; + UNDIFFERENCE_1D(INITIAL_PREDICTOR2); + } + +@@ -111,8 +111,8 @@ + const JDIFFROW diff_buf, const JDIFFROW prev_row, + JDIFFROW undiff_buf, JDIMENSION width) + { +- (void)cinfo; +- (void)comp_index; ++ //(void)cinfo; ++ //(void)comp_index; + UNDIFFERENCE_2D(PREDICTOR2); + JPEG_UNUSED(Rc); + JPEG_UNUSED(Rb); +@@ -123,8 +123,8 @@ + const JDIFFROW diff_buf, const JDIFFROW prev_row, + JDIFFROW undiff_buf, JDIMENSION width) + { +- (void)cinfo; +- (void)comp_index; ++ //(void)cinfo; ++ //(void)comp_index; + UNDIFFERENCE_2D(PREDICTOR3); + JPEG_UNUSED(Rc); + JPEG_UNUSED(Rb); +@@ -135,8 +135,8 @@ + const JDIFFROW diff_buf, const JDIFFROW prev_row, + JDIFFROW undiff_buf, JDIMENSION width) + { +- (void)cinfo; +- (void)comp_index; ++ //(void)cinfo; ++ //(void)comp_index; + UNDIFFERENCE_2D(PREDICTOR4); + JPEG_UNUSED(Rc); + JPEG_UNUSED(Rb); +@@ -147,8 +147,8 @@ + const JDIFFROW diff_buf, const JDIFFROW prev_row, + JDIFFROW undiff_buf, JDIMENSION width) + { +- (void)cinfo; +- (void)comp_index; ++ //(void)cinfo; ++ //(void)comp_index; + SHIFT_TEMPS + UNDIFFERENCE_2D(PREDICTOR5); + JPEG_UNUSED(Rc); +@@ -160,8 +160,8 @@ + const JDIFFROW diff_buf, const JDIFFROW prev_row, + JDIFFROW undiff_buf, JDIMENSION width) + { +- (void)cinfo; +- (void)comp_index; ++ //(void)cinfo; ++ //(void)comp_index; + SHIFT_TEMPS + UNDIFFERENCE_2D(PREDICTOR6); + JPEG_UNUSED(Rc); +@@ -173,8 +173,8 @@ + const JDIFFROW diff_buf, const JDIFFROW prev_row, + JDIFFROW undiff_buf, JDIMENSION width) + { +- (void)cinfo; +- (void)comp_index; ++ //(void)cinfo; ++ //(void)comp_index; + SHIFT_TEMPS + UNDIFFERENCE_2D(PREDICTOR7); + JPEG_UNUSED(Rc); +@@ -195,7 +195,7 @@ + JDIFFROW undiff_buf, JDIMENSION width) + { + +- (void)prev_row; ++ //(void)prev_row; + j_lossless_d_ptr losslsd = (j_lossless_d_ptr) cinfo->codec; + + UNDIFFERENCE_1D(INITIAL_PREDICTORx); +diff -urEb dcmtk-3.7.0.orig/dcmjpeg/libijg12/jdsample.c dcmtk-3.7.0/dcmjpeg/libijg12/jdsample.c +--- dcmtk-3.7.0.orig/dcmjpeg/libijg12/jdsample.c 2025-12-19 14:51:32.451814000 +0100 ++++ dcmtk-3.7.0/dcmjpeg/libijg12/jdsample.c 2025-12-19 15:10:15.655392798 +0100 +@@ -92,7 +92,7 @@ + JSAMPARRAY output_buf, JDIMENSION *out_row_ctr, + JDIMENSION out_rows_avail) + { +- (void)in_row_groups_avail; ++ //(void)in_row_groups_avail; + my_upsample_ptr upsample = (my_upsample_ptr) cinfo->upsample; + int ci; + jpeg_component_info * compptr; +@@ -158,8 +158,8 @@ + fullsize_upsample (j_decompress_ptr cinfo, jpeg_component_info * compptr, + JSAMPARRAY input_data, JSAMPARRAY * output_data_ptr) + { +- (void)cinfo; +- (void)compptr; ++ //(void)cinfo; ++ //(void)compptr; + *output_data_ptr = input_data; + } + +@@ -173,9 +173,9 @@ + noop_upsample (j_decompress_ptr cinfo, jpeg_component_info * compptr, + JSAMPARRAY input_data, JSAMPARRAY * output_data_ptr) + { +- (void)cinfo; +- (void)compptr; +- (void)input_data; ++ //(void)cinfo; ++ //(void)compptr; ++ //(void)input_data; + *output_data_ptr = NULL; /* safety check */ + } + +@@ -239,7 +239,7 @@ + h2v1_upsample (j_decompress_ptr cinfo, jpeg_component_info * compptr, + JSAMPARRAY input_data, JSAMPARRAY * output_data_ptr) + { +- (void)compptr; ++ //(void)compptr; + JSAMPARRAY output_data = *output_data_ptr; + register JSAMPROW inptr, outptr; + register JSAMPLE invalue; +@@ -268,7 +268,7 @@ + h2v2_upsample (j_decompress_ptr cinfo, jpeg_component_info * compptr, + JSAMPARRAY input_data, JSAMPARRAY * output_data_ptr) + { +- (void)compptr; ++ //(void)compptr; + JSAMPARRAY output_data = *output_data_ptr; + register JSAMPROW inptr, outptr; + register JSAMPLE invalue; +diff -urEb dcmtk-3.7.0.orig/dcmjpeg/libijg12/jdscale.c dcmtk-3.7.0/dcmjpeg/libijg12/jdscale.c +--- dcmtk-3.7.0.orig/dcmjpeg/libijg12/jdscale.c 2025-12-19 14:51:32.451814000 +0100 ++++ dcmtk-3.7.0/dcmjpeg/libijg12/jdscale.c 2025-12-19 15:10:57.995166893 +0100 +@@ -67,7 +67,7 @@ + const JDIFFROW diff_buf, JSAMPROW output_buf, + JDIMENSION width) + { +- (void)cinfo; ++ //(void)cinfo; + unsigned int xindex; + + for (xindex = 0; xindex < width; xindex++) +diff -urEb dcmtk-3.7.0.orig/dcmjpeg/libijg12/jerror.c dcmtk-3.7.0/dcmjpeg/libijg12/jerror.c +--- dcmtk-3.7.0.orig/dcmjpeg/libijg12/jerror.c 2025-12-19 14:51:32.451814000 +0100 ++++ dcmtk-3.7.0/dcmjpeg/libijg12/jerror.c 2025-12-19 15:24:56.796118240 +0100 +@@ -34,6 +34,10 @@ + #define EXIT_FAILURE 1 + #endif + ++#if defined(_MSC_VER) && _MSC_VER < 1900 ++#define snprintf _snprintf ++#endif ++ + + /* + * Create the message string table. +diff -urEb dcmtk-3.7.0.orig/dcmjpeg/libijg12/jmemnobs.c dcmtk-3.7.0/dcmjpeg/libijg12/jmemnobs.c +--- dcmtk-3.7.0.orig/dcmjpeg/libijg12/jmemnobs.c 2025-12-19 14:51:32.451814000 +0100 ++++ dcmtk-3.7.0/dcmjpeg/libijg12/jmemnobs.c 2025-12-19 15:05:23.911981299 +0100 +@@ -29,15 +29,15 @@ + GLOBAL(void *) + jpeg_get_small (j_common_ptr cinfo, size_t sizeofobject) + { +- (void) cinfo; ++ //(void) cinfo; + return (void *) malloc(sizeofobject); + } + + GLOBAL(void) + jpeg_free_small (j_common_ptr cinfo, void * object, size_t sizeofobject) + { +- (void) cinfo; +- (void) sizeofobject; ++ //(void) cinfo; ++ //(void) sizeofobject; + free(object); + } + +@@ -52,15 +52,15 @@ + GLOBAL(void FAR *) + jpeg_get_large (j_common_ptr cinfo, size_t sizeofobject) + { +- (void) cinfo; ++ //(void) cinfo; + return (void FAR *) malloc(sizeofobject); + } + + GLOBAL(void) + jpeg_free_large (j_common_ptr cinfo, void FAR * object, size_t sizeofobject) + { +- (void) cinfo; +- (void) sizeofobject; ++ //(void) cinfo; ++ //(void) sizeofobject; + free(object); + } + +@@ -74,9 +74,9 @@ + jpeg_mem_available (j_common_ptr cinfo, long min_bytes_needed, + long max_bytes_needed, long already_allocated) + { +- (void) cinfo; +- (void) min_bytes_needed; +- (void) already_allocated; ++ //(void) cinfo; ++ //(void) min_bytes_needed; ++ //(void) already_allocated; + return max_bytes_needed; + } + +@@ -91,8 +91,8 @@ + jpeg_open_backing_store (j_common_ptr cinfo, backing_store_ptr info, + long total_bytes_needed) + { +- (void) info; +- (void) total_bytes_needed; ++ //(void) info; ++ //(void) total_bytes_needed; + ERREXIT(cinfo, JERR_NO_BACKING_STORE); + } + +@@ -105,13 +105,13 @@ + GLOBAL(long) + jpeg_mem_init (j_common_ptr cinfo) + { +- (void) cinfo; ++ //(void) cinfo; + return 0; /* just set max_memory_to_use to 0 */ + } + + GLOBAL(void) + jpeg_mem_term (j_common_ptr cinfo) + { +- (void) cinfo; ++ //(void) cinfo; + /* no work */ + } +diff -urEb dcmtk-3.7.0.orig/dcmjpeg/libijg12/jquant1.c dcmtk-3.7.0/dcmjpeg/libijg12/jquant1.c +--- dcmtk-3.7.0.orig/dcmjpeg/libijg12/jquant1.c 2025-12-19 14:51:32.451814000 +0100 ++++ dcmtk-3.7.0/dcmjpeg/libijg12/jquant1.c 2025-12-19 15:07:52.641118462 +0100 +@@ -251,8 +251,8 @@ + * (Forcing the upper and lower values to the limits ensures that + * dithering can't produce a color outside the selected gamut.) + */ +- (void) cinfo; +- (void) ci; ++ //(void) cinfo; ++ //(void) ci; + return (int) (((IJG_INT32) j * MAXJSAMPLE + maxj/2) / maxj); + } + +@@ -262,8 +262,8 @@ + /* Return largest input value that should map to j'th output value */ + /* Must have largest(j=0) >= 0, and largest(j=maxj) >= MAXJSAMPLE */ + { +- (void) cinfo; +- (void) ci; ++ //(void) cinfo; ++ //(void) ci; + /* Breakpoints are halfway between values returned by output_value */ + return (int) (((IJG_INT32) (2*j + 1) * MAXJSAMPLE + maxj) / (2*maxj)); + } +@@ -744,7 +744,7 @@ + METHODDEF(void) + start_pass_1_quant (j_decompress_ptr cinfo, boolean is_pre_scan) + { +- (void) is_pre_scan; ++ //(void) is_pre_scan; + my_cquantize_ptr cquantize = (my_cquantize_ptr) cinfo->cquantize; + size_t arraysize; + int i; +@@ -802,7 +802,7 @@ + METHODDEF(void) + finish_pass_1_quant (j_decompress_ptr cinfo) + { +- (void) cinfo; ++ //(void) cinfo; + /* no work in 1-pass case */ + } + +diff -urEb dcmtk-3.7.0.orig/dcmjpeg/libijg12/jquant2.c dcmtk-3.7.0/dcmjpeg/libijg12/jquant2.c +--- dcmtk-3.7.0.orig/dcmjpeg/libijg12/jquant2.c 2025-12-19 14:51:32.451814000 +0100 ++++ dcmtk-3.7.0/dcmjpeg/libijg12/jquant2.c 2025-12-19 15:10:31.818307098 +0100 +@@ -224,7 +224,7 @@ + prescan_quantize (j_decompress_ptr cinfo, JSAMPARRAY input_buf, + JSAMPARRAY output_buf, int num_rows) + { +- (void) output_buf; ++ //(void) output_buf; + my_cquantize_ptr cquantize = (my_cquantize_ptr) cinfo->cquantize; + register JSAMPROW ptr; + register histptr histp; +@@ -1156,7 +1156,7 @@ + METHODDEF(void) + finish_pass2 (j_decompress_ptr cinfo) + { +- (void) cinfo; ++ //(void) cinfo; + /* no work */ + } + +diff -urEb dcmtk-3.7.0.orig/dcmjpeg/libijg16/jccoefct.c dcmtk-3.7.0/dcmjpeg/libijg16/jccoefct.c +--- dcmtk-3.7.0.orig/dcmjpeg/libijg16/jccoefct.c 2025-12-19 14:51:32.452813993 +0100 ++++ dcmtk-3.7.0/dcmjpeg/libijg16/jccoefct.c 2025-12-19 14:59:49.827306086 +0100 +@@ -343,7 +343,7 @@ + METHODDEF(boolean) + compress_output (j_compress_ptr cinfo, JSAMPIMAGE input_buf) + { +- (void)input_buf; ++ //(void)input_buf; + j_lossy_c_ptr lossyc = (j_lossy_c_ptr) cinfo->codec; + c_coef_ptr coef = (c_coef_ptr) lossyc->coef_private; + JDIMENSION MCU_col_num; /* index of current MCU within row */ +diff -urEb dcmtk-3.7.0.orig/dcmjpeg/libijg16/jccolor.c dcmtk-3.7.0/dcmjpeg/libijg16/jccolor.c +--- dcmtk-3.7.0.orig/dcmjpeg/libijg16/jccolor.c 2025-12-19 14:51:32.452813993 +0100 ++++ dcmtk-3.7.0/dcmjpeg/libijg16/jccolor.c 2025-12-19 15:03:22.767822545 +0100 +@@ -367,7 +367,7 @@ + METHODDEF(void) + null_method (j_compress_ptr cinfo) + { +- (void) cinfo; ++ //(void) cinfo; + /* no work needed */ + } + +diff -urEb dcmtk-3.7.0.orig/dcmjpeg/libijg16/jcdiffct.c dcmtk-3.7.0/dcmjpeg/libijg16/jcdiffct.c +--- dcmtk-3.7.0.orig/dcmjpeg/libijg16/jcdiffct.c 2025-12-19 14:51:32.452813993 +0100 ++++ dcmtk-3.7.0/dcmjpeg/libijg16/jcdiffct.c 2025-12-19 15:03:04.023952863 +0100 +@@ -302,7 +302,7 @@ + METHODDEF(boolean) + compress_output (j_compress_ptr cinfo, JSAMPIMAGE input_buf) + { +- (void)input_buf; ++ //(void)input_buf; + j_lossless_c_ptr losslsc = (j_lossless_c_ptr) cinfo->codec; + c_diff_ptr diff = (c_diff_ptr) losslsc->diff_private; + /* JDIMENSION MCU_col_num; */ /* index of current MCU within row */ +diff -urEb dcmtk-3.7.0.orig/dcmjpeg/libijg16/jclhuff.c dcmtk-3.7.0/dcmjpeg/libijg16/jclhuff.c +--- dcmtk-3.7.0.orig/dcmjpeg/libijg16/jclhuff.c 2025-12-19 14:51:32.452813993 +0100 ++++ dcmtk-3.7.0/dcmjpeg/libijg16/jclhuff.c 2025-12-19 15:03:43.280679986 +0100 +@@ -569,7 +569,7 @@ + METHODDEF(boolean) + need_optimization_pass (j_compress_ptr cinfo) + { +- (void)cinfo; ++ //(void)cinfo; + return TRUE; + } + +diff -urEb dcmtk-3.7.0.orig/dcmjpeg/libijg16/jcmarker.c dcmtk-3.7.0/dcmjpeg/libijg16/jcmarker.c +--- dcmtk-3.7.0.orig/dcmjpeg/libijg16/jcmarker.c 2025-12-19 14:51:32.452813993 +0100 ++++ dcmtk-3.7.0/dcmjpeg/libijg16/jcmarker.c 2025-12-19 15:02:17.296277934 +0100 +@@ -224,7 +224,7 @@ + /* Since the useful info is so small, we want to emit all the tables in */ + /* one DAC marker. Therefore this routine does its own scan of the table. */ + { +- (void)cinfo; ++ //(void)cinfo; + #ifdef C_ARITH_CODING_SUPPORTED + char dc_in_use[NUM_ARITH_TBLS]; + char ac_in_use[NUM_ARITH_TBLS]; +diff -urEb dcmtk-3.7.0.orig/dcmjpeg/libijg16/jcpred.c dcmtk-3.7.0/dcmjpeg/libijg16/jcpred.c +--- dcmtk-3.7.0.orig/dcmjpeg/libijg16/jcpred.c 2025-12-19 14:51:32.452813993 +0100 ++++ dcmtk-3.7.0/dcmjpeg/libijg16/jcpred.c 2025-12-19 15:00:46.470910730 +0100 +@@ -213,7 +213,7 @@ + const JSAMPROW input_buf, JSAMPROW prev_row, + JDIFFROW diff_buf, JDIMENSION width) + { +- (void)prev_row; ++ //(void)prev_row; + DIFFERENCE_1D(INITIAL_PREDICTORx); + + /* +diff -urEb dcmtk-3.7.0.orig/dcmjpeg/libijg16/jcsample.c dcmtk-3.7.0/dcmjpeg/libijg16/jcsample.c +--- dcmtk-3.7.0.orig/dcmjpeg/libijg16/jcsample.c 2025-12-19 14:51:32.452813993 +0100 ++++ dcmtk-3.7.0/dcmjpeg/libijg16/jcsample.c 2025-12-19 15:02:48.987057439 +0100 +@@ -74,7 +74,7 @@ + METHODDEF(void) + start_pass_downsample (j_compress_ptr cinfo) + { +- (void)cinfo; ++ //(void)cinfo; + /* no work for now */ + } + +diff -urEb dcmtk-3.7.0.orig/dcmjpeg/libijg16/jcscale.c dcmtk-3.7.0/dcmjpeg/libijg16/jcscale.c +--- dcmtk-3.7.0.orig/dcmjpeg/libijg16/jcscale.c 2025-12-19 14:51:32.452813993 +0100 ++++ dcmtk-3.7.0/dcmjpeg/libijg16/jcscale.c 2025-12-19 15:03:14.704878597 +0100 +@@ -34,7 +34,7 @@ + noscale(j_compress_ptr cinfo, + JSAMPROW input_buf, JSAMPROW output_buf, JDIMENSION width) + { +- (void)cinfo; ++ //(void)cinfo; + MEMCOPY(output_buf, input_buf, width * SIZEOF(JSAMPLE)); + return; + } +diff -urEb dcmtk-3.7.0.orig/dcmjpeg/libijg16/jcshuff.c dcmtk-3.7.0/dcmjpeg/libijg16/jcshuff.c +--- dcmtk-3.7.0.orig/dcmjpeg/libijg16/jcshuff.c 2025-12-19 14:51:32.452813993 +0100 ++++ dcmtk-3.7.0/dcmjpeg/libijg16/jcshuff.c 2025-12-19 15:03:29.427776255 +0100 +@@ -629,7 +629,7 @@ + METHODDEF(boolean) + need_optimization_pass (j_compress_ptr cinfo) + { +- (void)cinfo; ++ //(void)cinfo; + return TRUE; + } + +diff -urEb dcmtk-3.7.0.orig/dcmjpeg/libijg16/jctrans.c dcmtk-3.7.0/dcmjpeg/libijg16/jctrans.c +--- dcmtk-3.7.0.orig/dcmjpeg/libijg16/jctrans.c 2025-12-19 14:51:32.452813993 +0100 ++++ dcmtk-3.7.0/dcmjpeg/libijg16/jctrans.c 2025-12-19 15:01:08.670755937 +0100 +@@ -267,7 +267,7 @@ + METHODDEF(boolean) + compress_output (j_compress_ptr cinfo, JSAMPIMAGE input_buf) + { +- (void)input_buf; ++ //(void)input_buf; + j_lossy_c_ptr lossyc = (j_lossy_c_ptr) cinfo->codec; + c_coef_ptr coef = (c_coef_ptr) lossyc->coef_private; + JDIMENSION MCU_col_num; /* index of current MCU within row */ +diff -urEb dcmtk-3.7.0.orig/dcmjpeg/libijg16/jdatasrc.c dcmtk-3.7.0/dcmjpeg/libijg16/jdatasrc.c +--- dcmtk-3.7.0.orig/dcmjpeg/libijg16/jdatasrc.c 2025-12-19 14:51:32.452813993 +0100 ++++ dcmtk-3.7.0/dcmjpeg/libijg16/jdatasrc.c 2025-12-19 15:02:35.095154078 +0100 +@@ -168,7 +168,7 @@ + METHODDEF(void) + term_source (j_decompress_ptr cinfo) + { +- (void)cinfo; ++ //(void)cinfo; + /* no work necessary here */ + } + +diff -urEb dcmtk-3.7.0.orig/dcmjpeg/libijg16/jdcoefct.c dcmtk-3.7.0/dcmjpeg/libijg16/jdcoefct.c +--- dcmtk-3.7.0.orig/dcmjpeg/libijg16/jdcoefct.c 2025-12-19 14:51:32.452813993 +0100 ++++ dcmtk-3.7.0/dcmjpeg/libijg16/jdcoefct.c 2025-12-19 15:00:53.031864973 +0100 +@@ -229,7 +229,7 @@ + METHODDEF(int) + dummy_consume_data (j_decompress_ptr cinfo) + { +- (void)cinfo; ++ //(void)cinfo; + return JPEG_SUSPENDED; /* Always indicate nothing was done */ + } + +diff -urEb dcmtk-3.7.0.orig/dcmjpeg/libijg16/jdcolor.c dcmtk-3.7.0/dcmjpeg/libijg16/jdcolor.c +--- dcmtk-3.7.0.orig/dcmjpeg/libijg16/jdcolor.c 2025-12-19 14:51:32.452813993 +0100 ++++ dcmtk-3.7.0/dcmjpeg/libijg16/jdcolor.c 2025-12-19 15:03:37.507720102 +0100 +@@ -309,7 +309,7 @@ + METHODDEF(void) + start_pass_dcolor (j_decompress_ptr cinfo) + { +- (void)cinfo; ++ //(void)cinfo; + /* no work needed */ + } + +diff -urEb dcmtk-3.7.0.orig/dcmjpeg/libijg16/jddiffct.c dcmtk-3.7.0/dcmjpeg/libijg16/jddiffct.c +--- dcmtk-3.7.0.orig/dcmjpeg/libijg16/jddiffct.c 2025-12-19 14:51:32.452813993 +0100 ++++ dcmtk-3.7.0/dcmjpeg/libijg16/jddiffct.c 2025-12-19 14:57:40.154213605 +0100 +@@ -238,7 +238,7 @@ + METHODDEF(int) + dummy_consume_data (j_decompress_ptr cinfo) + { +- (void)cinfo; ++ //(void)cinfo; + return JPEG_SUSPENDED; /* Always indicate nothing was done */ + } + +diff -urEb dcmtk-3.7.0.orig/dcmjpeg/libijg16/jdmerge.c dcmtk-3.7.0/dcmjpeg/libijg16/jdmerge.c +--- dcmtk-3.7.0.orig/dcmjpeg/libijg16/jdmerge.c 2025-12-19 14:51:32.452813993 +0100 ++++ dcmtk-3.7.0/dcmjpeg/libijg16/jdmerge.c 2025-12-19 15:04:40.925279621 +0100 +@@ -169,7 +169,7 @@ + JDIMENSION out_rows_avail) + /* 2:1 vertical sampling case: may need a spare row. */ + { +- (void) in_row_groups_avail; ++ //(void) in_row_groups_avail; + my_upsample_ptr upsample = (my_upsample_ptr) cinfo->upsample; + JSAMPROW work_ptrs[2]; + JDIMENSION num_rows; /* number of rows returned to caller */ +@@ -219,8 +219,8 @@ + JDIMENSION out_rows_avail) + /* 1:1 vertical sampling case: much easier, never need a spare row. */ + { +- (void) in_row_groups_avail; +- (void) out_rows_avail; ++ //(void) in_row_groups_avail; ++ //(void) out_rows_avail; + my_upsample_ptr upsample = (my_upsample_ptr) cinfo->upsample; + + /* Just do the upsampling. */ +diff -urEb dcmtk-3.7.0.orig/dcmjpeg/libijg16/jdpostct.c dcmtk-3.7.0/dcmjpeg/libijg16/jdpostct.c +--- dcmtk-3.7.0.orig/dcmjpeg/libijg16/jdpostct.c 2025-12-19 14:51:32.452813993 +0100 ++++ dcmtk-3.7.0/dcmjpeg/libijg16/jdpostct.c 2025-12-19 15:00:17.435113323 +0100 +@@ -161,8 +161,8 @@ + JSAMPARRAY output_buf, JDIMENSION *out_row_ctr, + JDIMENSION out_rows_avail) + { +- (void) output_buf; +- (void) out_rows_avail; ++ //(void) output_buf; ++ //(void) out_rows_avail; + my_post_ptr post = (my_post_ptr) cinfo->post; + JDIMENSION old_next_row, num_rows; + +@@ -207,9 +207,9 @@ + JSAMPARRAY output_buf, JDIMENSION *out_row_ctr, + JDIMENSION out_rows_avail) + { +- (void) input_buf; +- (void) in_row_group_ctr; +- (void) in_row_groups_avail; ++ //(void) input_buf; ++ //(void) in_row_group_ctr; ++ //(void) in_row_groups_avail; + my_post_ptr post = (my_post_ptr) cinfo->post; + JDIMENSION num_rows, max_rows; + +diff -urEb dcmtk-3.7.0.orig/dcmjpeg/libijg16/jdpred.c dcmtk-3.7.0/dcmjpeg/libijg16/jdpred.c +--- dcmtk-3.7.0.orig/dcmjpeg/libijg16/jdpred.c 2025-12-19 14:51:32.452813993 +0100 ++++ dcmtk-3.7.0/dcmjpeg/libijg16/jdpred.c 2025-12-19 15:22:20.039113188 +0100 +@@ -101,8 +101,8 @@ + const JDIFFROW diff_buf, const JDIFFROW prev_row, + JDIFFROW undiff_buf, JDIMENSION width) + { +- (void)cinfo; +- (void)comp_index; ++ //(void)cinfo; ++ //(void)comp_index; + UNDIFFERENCE_1D(INITIAL_PREDICTOR2); + } + +@@ -111,8 +111,8 @@ + const JDIFFROW diff_buf, const JDIFFROW prev_row, + JDIFFROW undiff_buf, JDIMENSION width) + { +- (void)cinfo; +- (void)comp_index; ++ //(void)cinfo; ++ //(void)comp_index; + UNDIFFERENCE_2D(PREDICTOR2); + JPEG_UNUSED(Rc); + JPEG_UNUSED(Rb); +@@ -123,8 +123,8 @@ + const JDIFFROW diff_buf, const JDIFFROW prev_row, + JDIFFROW undiff_buf, JDIMENSION width) + { +- (void)cinfo; +- (void)comp_index; ++ //(void)cinfo; ++ //(void)comp_index; + UNDIFFERENCE_2D(PREDICTOR3); + JPEG_UNUSED(Rc); + JPEG_UNUSED(Rb); +@@ -135,8 +135,8 @@ + const JDIFFROW diff_buf, const JDIFFROW prev_row, + JDIFFROW undiff_buf, JDIMENSION width) + { +- (void)cinfo; +- (void)comp_index; ++ //(void)cinfo; ++ //(void)comp_index; + UNDIFFERENCE_2D(PREDICTOR4A); + JPEG_UNUSED(Rc); + JPEG_UNUSED(Rb); +@@ -147,8 +147,8 @@ + const JDIFFROW diff_buf, const JDIFFROW prev_row, + JDIFFROW undiff_buf, JDIMENSION width) + { +- (void)cinfo; +- (void)comp_index; ++ //(void)cinfo; ++ //(void)comp_index; + UNDIFFERENCE_2D(PREDICTOR4); + JPEG_UNUSED(Rc); + JPEG_UNUSED(Rb); +@@ -159,8 +159,8 @@ + const JDIFFROW diff_buf, const JDIFFROW prev_row, + JDIFFROW undiff_buf, JDIMENSION width) + { +- (void)cinfo; +- (void)comp_index; ++ //(void)cinfo; ++ //(void)comp_index; + SHIFT_TEMPS + UNDIFFERENCE_2D(PREDICTOR5); + JPEG_UNUSED(Rc); +@@ -172,8 +172,8 @@ + const JDIFFROW diff_buf, const JDIFFROW prev_row, + JDIFFROW undiff_buf, JDIMENSION width) + { +- (void)cinfo; +- (void)comp_index; ++ //(void)cinfo; ++ //(void)comp_index; + SHIFT_TEMPS + UNDIFFERENCE_2D(PREDICTOR5A); + JPEG_UNUSED(Rc); +@@ -185,8 +185,8 @@ + const JDIFFROW diff_buf, const JDIFFROW prev_row, + JDIFFROW undiff_buf, JDIMENSION width) + { +- (void)cinfo; +- (void)comp_index; ++ //(void)cinfo; ++ //(void)comp_index; + SHIFT_TEMPS + UNDIFFERENCE_2D(PREDICTOR6); + JPEG_UNUSED(Rc); +@@ -198,8 +198,8 @@ + const JDIFFROW diff_buf, const JDIFFROW prev_row, + JDIFFROW undiff_buf, JDIMENSION width) + { +- (void)cinfo; +- (void)comp_index; ++ //(void)cinfo; ++ //(void)comp_index; + SHIFT_TEMPS + UNDIFFERENCE_2D(PREDICTOR6A); + JPEG_UNUSED(Rc); +@@ -211,8 +211,8 @@ + const JDIFFROW diff_buf, const JDIFFROW prev_row, + JDIFFROW undiff_buf, JDIMENSION width) + { +- (void)cinfo; +- (void)comp_index; ++ //(void)cinfo; ++ //(void)comp_index; + SHIFT_TEMPS + UNDIFFERENCE_2D(PREDICTOR7); + JPEG_UNUSED(Rc); +@@ -224,8 +224,8 @@ + const JDIFFROW diff_buf, const JDIFFROW prev_row, + JDIFFROW undiff_buf, JDIMENSION width) + { +- (void)cinfo; +- (void)comp_index; ++ //(void)cinfo; ++ //(void)comp_index; + SHIFT_TEMPS + UNDIFFERENCE_2D(PREDICTOR7A); + JPEG_UNUSED(Rc); +@@ -245,7 +245,7 @@ + const JDIFFROW diff_buf, JDIFFROW prev_row, + JDIFFROW undiff_buf, JDIMENSION width) + { +- (void)prev_row; ++ //(void)prev_row; + j_lossless_d_ptr losslsd = (j_lossless_d_ptr) cinfo->codec; + + UNDIFFERENCE_1D(INITIAL_PREDICTORx); +diff -urEb dcmtk-3.7.0.orig/dcmjpeg/libijg16/jdsample.c dcmtk-3.7.0/dcmjpeg/libijg16/jdsample.c +--- dcmtk-3.7.0.orig/dcmjpeg/libijg16/jdsample.c 2025-12-19 14:51:32.452813993 +0100 ++++ dcmtk-3.7.0/dcmjpeg/libijg16/jdsample.c 2025-12-19 15:04:05.399526318 +0100 +@@ -92,7 +92,7 @@ + JSAMPARRAY output_buf, JDIMENSION *out_row_ctr, + JDIMENSION out_rows_avail) + { +- (void)in_row_groups_avail; ++ //(void)in_row_groups_avail; + my_upsample_ptr upsample = (my_upsample_ptr) cinfo->upsample; + int ci; + jpeg_component_info * compptr; +@@ -158,8 +158,8 @@ + fullsize_upsample (j_decompress_ptr cinfo, jpeg_component_info * compptr, + JSAMPARRAY input_data, JSAMPARRAY * output_data_ptr) + { +- (void)cinfo; +- (void)compptr; ++ //(void)cinfo; ++ //(void)compptr; + *output_data_ptr = input_data; + } + +@@ -173,9 +173,9 @@ + noop_upsample (j_decompress_ptr cinfo, jpeg_component_info * compptr, + JSAMPARRAY input_data, JSAMPARRAY * output_data_ptr) + { +- (void)cinfo; +- (void)compptr; +- (void)input_data; ++ //(void)cinfo; ++ //(void)compptr; ++ //(void)input_data; + *output_data_ptr = NULL; /* safety check */ + } + +@@ -239,7 +239,7 @@ + h2v1_upsample (j_decompress_ptr cinfo, jpeg_component_info * compptr, + JSAMPARRAY input_data, JSAMPARRAY * output_data_ptr) + { +- (void)compptr; ++ //(void)compptr; + JSAMPARRAY output_data = *output_data_ptr; + register JSAMPROW inptr, outptr; + register JSAMPLE invalue; +@@ -268,7 +268,7 @@ + h2v2_upsample (j_decompress_ptr cinfo, jpeg_component_info * compptr, + JSAMPARRAY input_data, JSAMPARRAY * output_data_ptr) + { +- (void)compptr; ++ //(void)compptr; + JSAMPARRAY output_data = *output_data_ptr; + register JSAMPROW inptr, outptr; + register JSAMPLE invalue; +diff -urEb dcmtk-3.7.0.orig/dcmjpeg/libijg16/jdscale.c dcmtk-3.7.0/dcmjpeg/libijg16/jdscale.c +--- dcmtk-3.7.0.orig/dcmjpeg/libijg16/jdscale.c 2025-12-19 14:51:32.452813993 +0100 ++++ dcmtk-3.7.0/dcmjpeg/libijg16/jdscale.c 2025-12-19 15:04:56.602170799 +0100 +@@ -67,7 +67,7 @@ + const JDIFFROW diff_buf, JSAMPROW output_buf, + JDIMENSION width) + { +- (void)cinfo; ++ //(void)cinfo; + unsigned int xindex; + + for (xindex = 0; xindex < width; xindex++) +diff -urEb dcmtk-3.7.0.orig/dcmjpeg/libijg16/jerror.c dcmtk-3.7.0/dcmjpeg/libijg16/jerror.c +--- dcmtk-3.7.0.orig/dcmjpeg/libijg16/jerror.c 2025-12-19 14:51:32.452813993 +0100 ++++ dcmtk-3.7.0/dcmjpeg/libijg16/jerror.c 2025-12-19 15:25:12.405018478 +0100 +@@ -34,6 +34,10 @@ + #define EXIT_FAILURE 1 + #endif + ++#if defined(_MSC_VER) && _MSC_VER < 1900 ++#define snprintf _snprintf ++#endif ++ + + /* + * Create the message string table. +diff -urEb dcmtk-3.7.0.orig/dcmjpeg/libijg16/jmemnobs.c dcmtk-3.7.0/dcmjpeg/libijg16/jmemnobs.c +--- dcmtk-3.7.0.orig/dcmjpeg/libijg16/jmemnobs.c 2025-12-19 14:51:32.452813993 +0100 ++++ dcmtk-3.7.0/dcmjpeg/libijg16/jmemnobs.c 2025-12-19 14:57:34.138255801 +0100 +@@ -29,15 +29,15 @@ + GLOBAL(void *) + jpeg_get_small (j_common_ptr cinfo, size_t sizeofobject) + { +- (void) cinfo; ++ //(void) cinfo; + return (void *) malloc(sizeofobject); + } + + GLOBAL(void) + jpeg_free_small (j_common_ptr cinfo, void * object, size_t sizeofobject) + { +- (void) cinfo; +- (void) sizeofobject; ++ //(void) cinfo; ++ //(void) sizeofobject; + free(object); + } + +@@ -52,15 +52,15 @@ + GLOBAL(void FAR *) + jpeg_get_large (j_common_ptr cinfo, size_t sizeofobject) + { +- (void) cinfo; ++ //(void) cinfo; + return (void FAR *) malloc(sizeofobject); + } + + GLOBAL(void) + jpeg_free_large (j_common_ptr cinfo, void FAR * object, size_t sizeofobject) + { +- (void) cinfo; +- (void) sizeofobject; ++ //(void) cinfo; ++ //(void) sizeofobject; + free(object); + } + +@@ -74,9 +74,9 @@ + jpeg_mem_available (j_common_ptr cinfo, long min_bytes_needed, + long max_bytes_needed, long already_allocated) + { +- (void) cinfo; +- (void) min_bytes_needed; +- (void) already_allocated; ++ //(void) cinfo; ++ //(void) min_bytes_needed; ++ //(void) already_allocated; + return max_bytes_needed; + } + +@@ -91,8 +91,8 @@ + jpeg_open_backing_store (j_common_ptr cinfo, backing_store_ptr info, + long total_bytes_needed) + { +- (void) info; +- (void) total_bytes_needed; ++ //(void) info; ++ //(void) total_bytes_needed; + ERREXIT(cinfo, JERR_NO_BACKING_STORE); + } + +@@ -105,13 +105,13 @@ + GLOBAL(long) + jpeg_mem_init (j_common_ptr cinfo) + { +- (void) cinfo; ++ //(void) cinfo; + return 0; /* just set max_memory_to_use to 0 */ + } + + GLOBAL(void) + jpeg_mem_term (j_common_ptr cinfo) + { +- (void) cinfo; ++ //(void) cinfo; + /* no work */ + } +diff -urEb dcmtk-3.7.0.orig/dcmjpeg/libijg16/jquant1.c dcmtk-3.7.0/dcmjpeg/libijg16/jquant1.c +--- dcmtk-3.7.0.orig/dcmjpeg/libijg16/jquant1.c 2025-12-19 14:51:32.452813993 +0100 ++++ dcmtk-3.7.0/dcmjpeg/libijg16/jquant1.c 2025-12-19 15:01:35.213570972 +0100 +@@ -251,8 +251,8 @@ + * (Forcing the upper and lower values to the limits ensures that + * dithering can't produce a color outside the selected gamut.) + */ +- (void) cinfo; +- (void) ci; ++ //(void) cinfo; ++ //(void) ci; + return (int) (((IJG_INT32) j * MAXJSAMPLE + maxj/2) / maxj); + } + +@@ -262,8 +262,8 @@ + /* Return largest input value that should map to j'th output value */ + /* Must have largest(j=0) >= 0, and largest(j=maxj) >= MAXJSAMPLE */ + { +- (void) cinfo; +- (void) ci; ++ //(void) cinfo; ++ //(void) ci; + /* Breakpoints are halfway between values returned by output_value */ + return (int) (((IJG_INT32) (2*j + 1) * MAXJSAMPLE + maxj) / (2*maxj)); + } +@@ -744,7 +744,7 @@ + METHODDEF(void) + start_pass_1_quant (j_decompress_ptr cinfo, boolean is_pre_scan) + { +- (void) is_pre_scan; ++ //(void) is_pre_scan; + my_cquantize_ptr cquantize = (my_cquantize_ptr) cinfo->cquantize; + size_t arraysize; + int i; +@@ -802,7 +802,7 @@ + METHODDEF(void) + finish_pass_1_quant (j_decompress_ptr cinfo) + { +- (void) cinfo; ++ //(void) cinfo; + /* no work in 1-pass case */ + } + +diff -urEb dcmtk-3.7.0.orig/dcmjpeg/libijg16/jquant2.c dcmtk-3.7.0/dcmjpeg/libijg16/jquant2.c +--- dcmtk-3.7.0.orig/dcmjpeg/libijg16/jquant2.c 2025-12-19 14:51:32.452813993 +0100 ++++ dcmtk-3.7.0/dcmjpeg/libijg16/jquant2.c 2025-12-19 15:04:24.684392384 +0100 +@@ -224,7 +224,7 @@ + prescan_quantize (j_decompress_ptr cinfo, JSAMPARRAY input_buf, + JSAMPARRAY output_buf, int num_rows) + { +- (void) output_buf; ++ //(void) output_buf; + my_cquantize_ptr cquantize = (my_cquantize_ptr) cinfo->cquantize; + register JSAMPROW ptr; + register histptr histp; +@@ -1156,7 +1156,7 @@ + METHODDEF(void) + finish_pass2 (j_decompress_ptr cinfo) + { +- (void) cinfo; ++ //(void) cinfo; + /* no work */ + } + +diff -urEb dcmtk-3.7.0.orig/dcmjpeg/libijg8/jccoefct.c dcmtk-3.7.0/dcmjpeg/libijg8/jccoefct.c +--- dcmtk-3.7.0.orig/dcmjpeg/libijg8/jccoefct.c 2025-12-19 14:51:32.454813979 +0100 ++++ dcmtk-3.7.0/dcmjpeg/libijg8/jccoefct.c 2025-12-19 15:11:58.797834968 +0100 +@@ -343,7 +343,7 @@ + METHODDEF(boolean) + compress_output (j_compress_ptr cinfo, JSAMPIMAGE input_buf) + { +- (void)input_buf; ++ //(void)input_buf; + j_lossy_c_ptr lossyc = (j_lossy_c_ptr) cinfo->codec; + c_coef_ptr coef = (c_coef_ptr) lossyc->coef_private; + JDIMENSION MCU_col_num; /* index of current MCU within row */ +diff -urEb dcmtk-3.7.0.orig/dcmjpeg/libijg8/jccolor.c dcmtk-3.7.0/dcmjpeg/libijg8/jccolor.c +--- dcmtk-3.7.0.orig/dcmjpeg/libijg8/jccolor.c 2025-12-19 14:51:32.453813986 +0100 ++++ dcmtk-3.7.0/dcmjpeg/libijg8/jccolor.c 2025-12-19 15:15:25.917649634 +0100 +@@ -340,7 +340,7 @@ + METHODDEF(void) + null_method (j_compress_ptr cinfo) + { +- (void) cinfo; ++ //(void) cinfo; + /* no work needed */ + } + +diff -urEb dcmtk-3.7.0.orig/dcmjpeg/libijg8/jcdiffct.c dcmtk-3.7.0/dcmjpeg/libijg8/jcdiffct.c +--- dcmtk-3.7.0.orig/dcmjpeg/libijg8/jcdiffct.c 2025-12-19 14:51:32.454813979 +0100 ++++ dcmtk-3.7.0/dcmjpeg/libijg8/jcdiffct.c 2025-12-19 15:15:07.256759365 +0100 +@@ -302,7 +302,7 @@ + METHODDEF(boolean) + compress_output (j_compress_ptr cinfo, JSAMPIMAGE input_buf) + { +- (void)input_buf; ++ //(void)input_buf; + j_lossless_c_ptr losslsc = (j_lossless_c_ptr) cinfo->codec; + c_diff_ptr diff = (c_diff_ptr) losslsc->diff_private; + /* JDIMENSION MCU_col_num; */ /* index of current MCU within row */ +diff -urEb dcmtk-3.7.0.orig/dcmjpeg/libijg8/jclhuff.c dcmtk-3.7.0/dcmjpeg/libijg8/jclhuff.c +--- dcmtk-3.7.0.orig/dcmjpeg/libijg8/jclhuff.c 2025-12-19 14:51:32.454813979 +0100 ++++ dcmtk-3.7.0/dcmjpeg/libijg8/jclhuff.c 2025-12-19 15:15:44.771538259 +0100 +@@ -569,7 +569,7 @@ + METHODDEF(boolean) + need_optimization_pass (j_compress_ptr cinfo) + { +- (void)cinfo; ++ //(void)cinfo; + return TRUE; + } + +diff -urEb dcmtk-3.7.0.orig/dcmjpeg/libijg8/jcmarker.c dcmtk-3.7.0/dcmjpeg/libijg8/jcmarker.c +--- dcmtk-3.7.0.orig/dcmjpeg/libijg8/jcmarker.c 2025-12-19 14:51:32.454813979 +0100 ++++ dcmtk-3.7.0/dcmjpeg/libijg8/jcmarker.c 2025-12-19 15:14:27.566991001 +0100 +@@ -224,7 +224,7 @@ + /* Since the useful info is so small, we want to emit all the tables in */ + /* one DAC marker. Therefore this routine does its own scan of the table. */ + { +- (void)cinfo; ++ //(void)cinfo; + #ifdef C_ARITH_CODING_SUPPORTED + char dc_in_use[NUM_ARITH_TBLS]; + char ac_in_use[NUM_ARITH_TBLS]; +diff -urEb dcmtk-3.7.0.orig/dcmjpeg/libijg8/jcpred.c dcmtk-3.7.0/dcmjpeg/libijg8/jcpred.c +--- dcmtk-3.7.0.orig/dcmjpeg/libijg8/jcpred.c 2025-12-19 14:51:32.454813979 +0100 ++++ dcmtk-3.7.0/dcmjpeg/libijg8/jcpred.c 2025-12-19 15:12:51.227542314 +0100 +@@ -213,7 +213,7 @@ + const JSAMPROW input_buf, JSAMPROW prev_row, + JDIFFROW diff_buf, JDIMENSION width) + { +- (void)prev_row; ++ //(void)prev_row; + DIFFERENCE_1D(INITIAL_PREDICTORx); + + /* +diff -urEb dcmtk-3.7.0.orig/dcmjpeg/libijg8/jcsample.c dcmtk-3.7.0/dcmjpeg/libijg8/jcsample.c +--- dcmtk-3.7.0.orig/dcmjpeg/libijg8/jcsample.c 2025-12-19 14:51:32.454813979 +0100 ++++ dcmtk-3.7.0/dcmjpeg/libijg8/jcsample.c 2025-12-19 15:14:54.073836574 +0100 +@@ -74,7 +74,7 @@ + METHODDEF(void) + start_pass_downsample (j_compress_ptr cinfo) + { +- (void)cinfo; ++ //(void)cinfo; + /* no work for now */ + } + +diff -urEb dcmtk-3.7.0.orig/dcmjpeg/libijg8/jcscale.c dcmtk-3.7.0/dcmjpeg/libijg8/jcscale.c +--- dcmtk-3.7.0.orig/dcmjpeg/libijg8/jcscale.c 2025-12-19 14:51:32.454813979 +0100 ++++ dcmtk-3.7.0/dcmjpeg/libijg8/jcscale.c 2025-12-19 15:15:19.848685378 +0100 +@@ -34,7 +34,7 @@ + noscale(j_compress_ptr cinfo, + JSAMPROW input_buf, JSAMPROW output_buf, JDIMENSION width) + { +- (void)cinfo; ++ //(void)cinfo; + MEMCOPY(output_buf, input_buf, width * SIZEOF(JSAMPLE)); + return; + } +diff -urEb dcmtk-3.7.0.orig/dcmjpeg/libijg8/jcshuff.c dcmtk-3.7.0/dcmjpeg/libijg8/jcshuff.c +--- dcmtk-3.7.0.orig/dcmjpeg/libijg8/jcshuff.c 2025-12-19 14:51:32.454813979 +0100 ++++ dcmtk-3.7.0/dcmjpeg/libijg8/jcshuff.c 2025-12-19 15:15:31.926614192 +0100 +@@ -629,7 +629,7 @@ + METHODDEF(boolean) + need_optimization_pass (j_compress_ptr cinfo) + { +- (void)cinfo; ++ //(void)cinfo; + return TRUE; + } + +diff -urEb dcmtk-3.7.0.orig/dcmjpeg/libijg8/jctrans.c dcmtk-3.7.0/dcmjpeg/libijg8/jctrans.c +--- dcmtk-3.7.0.orig/dcmjpeg/libijg8/jctrans.c 2025-12-19 14:51:32.454813979 +0100 ++++ dcmtk-3.7.0/dcmjpeg/libijg8/jctrans.c 2025-12-19 15:13:07.840448439 +0100 +@@ -267,7 +267,7 @@ + METHODDEF(boolean) + compress_output (j_compress_ptr cinfo, JSAMPIMAGE input_buf) + { +- (void)input_buf; ++ //(void)input_buf; + j_lossy_c_ptr lossyc = (j_lossy_c_ptr) cinfo->codec; + c_coef_ptr coef = (c_coef_ptr) lossyc->coef_private; + JDIMENSION MCU_col_num; /* index of current MCU within row */ +diff -urEb dcmtk-3.7.0.orig/dcmjpeg/libijg8/jdatasrc.c dcmtk-3.7.0/dcmjpeg/libijg8/jdatasrc.c +--- dcmtk-3.7.0.orig/dcmjpeg/libijg8/jdatasrc.c 2025-12-19 14:51:32.454813979 +0100 ++++ dcmtk-3.7.0/dcmjpeg/libijg8/jdatasrc.c 2025-12-19 15:14:42.162906102 +0100 +@@ -168,7 +168,7 @@ + METHODDEF(void) + term_source (j_decompress_ptr cinfo) + { +- (void)cinfo; ++ //(void)cinfo; + /* no work necessary here */ + } + +diff -urEb dcmtk-3.7.0.orig/dcmjpeg/libijg8/jdcoefct.c dcmtk-3.7.0/dcmjpeg/libijg8/jdcoefct.c +--- dcmtk-3.7.0.orig/dcmjpeg/libijg8/jdcoefct.c 2025-12-19 14:51:32.454813979 +0100 ++++ dcmtk-3.7.0/dcmjpeg/libijg8/jdcoefct.c 2025-12-19 15:12:56.175514409 +0100 +@@ -229,7 +229,7 @@ + METHODDEF(int) + dummy_consume_data (j_decompress_ptr cinfo) + { +- (void)cinfo; ++ //(void)cinfo; + return JPEG_SUSPENDED; /* Always indicate nothing was done */ + } + +diff -urEb dcmtk-3.7.0.orig/dcmjpeg/libijg8/jdcolor.c dcmtk-3.7.0/dcmjpeg/libijg8/jdcolor.c +--- dcmtk-3.7.0.orig/dcmjpeg/libijg8/jdcolor.c 2025-12-19 14:51:32.454813979 +0100 ++++ dcmtk-3.7.0/dcmjpeg/libijg8/jdcolor.c 2025-12-19 15:15:38.962572627 +0100 +@@ -309,7 +309,7 @@ + METHODDEF(void) + start_pass_dcolor (j_decompress_ptr cinfo) + { +- (void)cinfo; ++ //(void)cinfo; + /* no work needed */ + } + +diff -urEb dcmtk-3.7.0.orig/dcmjpeg/libijg8/jddiffct.c dcmtk-3.7.0/dcmjpeg/libijg8/jddiffct.c +--- dcmtk-3.7.0.orig/dcmjpeg/libijg8/jddiffct.c 2025-12-19 14:51:32.454813979 +0100 ++++ dcmtk-3.7.0/dcmjpeg/libijg8/jddiffct.c 2025-12-19 15:11:22.867032134 +0100 +@@ -238,7 +238,7 @@ + METHODDEF(int) + dummy_consume_data (j_decompress_ptr cinfo) + { +- (void)cinfo; ++ //(void)cinfo; + return JPEG_SUSPENDED; /* Always indicate nothing was done */ + } + +diff -urEb dcmtk-3.7.0.orig/dcmjpeg/libijg8/jdmerge.c dcmtk-3.7.0/dcmjpeg/libijg8/jdmerge.c +--- dcmtk-3.7.0.orig/dcmjpeg/libijg8/jdmerge.c 2025-12-19 14:51:32.454813979 +0100 ++++ dcmtk-3.7.0/dcmjpeg/libijg8/jdmerge.c 2025-12-19 15:16:27.518283952 +0100 +@@ -148,7 +148,7 @@ + JDIMENSION out_rows_avail) + /* 2:1 vertical sampling case: may need a spare row. */ + { +- (void) in_row_groups_avail; ++ //(void) in_row_groups_avail; + my_upsample_ptr upsample = (my_upsample_ptr) cinfo->upsample; + JSAMPROW work_ptrs[2]; + JDIMENSION num_rows; /* number of rows returned to caller */ +@@ -198,8 +198,8 @@ + JDIMENSION out_rows_avail) + /* 1:1 vertical sampling case: much easier, never need a spare row. */ + { +- (void) in_row_groups_avail; +- (void) out_rows_avail; ++ //(void) in_row_groups_avail; ++ //(void) out_rows_avail; + my_upsample_ptr upsample = (my_upsample_ptr) cinfo->upsample; + + /* Just do the upsampling. */ +diff -urEb dcmtk-3.7.0.orig/dcmjpeg/libijg8/jdpostct.c dcmtk-3.7.0/dcmjpeg/libijg8/jdpostct.c +--- dcmtk-3.7.0.orig/dcmjpeg/libijg8/jdpostct.c 2025-12-19 14:51:32.454813979 +0100 ++++ dcmtk-3.7.0/dcmjpeg/libijg8/jdpostct.c 2025-12-19 15:12:21.383709591 +0100 +@@ -161,8 +161,8 @@ + JSAMPARRAY output_buf, JDIMENSION *out_row_ctr, + JDIMENSION out_rows_avail) + { +- (void) output_buf; +- (void) out_rows_avail; ++ //(void) output_buf; ++ //(void) out_rows_avail; + my_post_ptr post = (my_post_ptr) cinfo->post; + JDIMENSION old_next_row, num_rows; + +@@ -207,9 +207,9 @@ + JSAMPARRAY output_buf, JDIMENSION *out_row_ctr, + JDIMENSION out_rows_avail) + { +- (void) input_buf; +- (void) in_row_group_ctr; +- (void) in_row_groups_avail; ++ //(void) input_buf; ++ //(void) in_row_group_ctr; ++ //(void) in_row_groups_avail; + my_post_ptr post = (my_post_ptr) cinfo->post; + JDIMENSION num_rows, max_rows; + +diff -urEb dcmtk-3.7.0.orig/dcmjpeg/libijg8/jdpred.c dcmtk-3.7.0/dcmjpeg/libijg8/jdpred.c +--- dcmtk-3.7.0.orig/dcmjpeg/libijg8/jdpred.c 2025-12-19 14:51:32.454813979 +0100 ++++ dcmtk-3.7.0/dcmjpeg/libijg8/jdpred.c 2025-12-19 15:11:52.655868875 +0100 +@@ -101,8 +101,8 @@ + const JDIFFROW diff_buf, const JDIFFROW prev_row, + JDIFFROW undiff_buf, JDIMENSION width) + { +- (void)cinfo; +- (void)comp_index; ++ //(void)cinfo; ++ //(void)comp_index; + UNDIFFERENCE_1D(INITIAL_PREDICTOR2); + } + +@@ -111,8 +111,8 @@ + const JDIFFROW diff_buf, const JDIFFROW prev_row, + JDIFFROW undiff_buf, JDIMENSION width) + { +- (void)cinfo; +- (void)comp_index; ++ //(void)cinfo; ++ //(void)comp_index; + UNDIFFERENCE_2D(PREDICTOR2); + JPEG_UNUSED(Rc); + JPEG_UNUSED(Rb); +@@ -123,8 +123,8 @@ + const JDIFFROW diff_buf, const JDIFFROW prev_row, + JDIFFROW undiff_buf, JDIMENSION width) + { +- (void)cinfo; +- (void)comp_index; ++ //(void)cinfo; ++ //(void)comp_index; + UNDIFFERENCE_2D(PREDICTOR3); + JPEG_UNUSED(Rc); + JPEG_UNUSED(Rb); +@@ -135,8 +135,8 @@ + const JDIFFROW diff_buf, const JDIFFROW prev_row, + JDIFFROW undiff_buf, JDIMENSION width) + { +- (void)cinfo; +- (void)comp_index; ++ //(void)cinfo; ++ //(void)comp_index; + UNDIFFERENCE_2D(PREDICTOR4); + JPEG_UNUSED(Rc); + JPEG_UNUSED(Rb); +@@ -147,8 +147,8 @@ + const JDIFFROW diff_buf, const JDIFFROW prev_row, + JDIFFROW undiff_buf, JDIMENSION width) + { +- (void)cinfo; +- (void)comp_index; ++ //(void)cinfo; ++ //(void)comp_index; + SHIFT_TEMPS + UNDIFFERENCE_2D(PREDICTOR5); + JPEG_UNUSED(Rc); +@@ -160,8 +160,8 @@ + const JDIFFROW diff_buf, const JDIFFROW prev_row, + JDIFFROW undiff_buf, JDIMENSION width) + { +- (void)cinfo; +- (void)comp_index; ++ //(void)cinfo; ++ //(void)comp_index; + SHIFT_TEMPS + UNDIFFERENCE_2D(PREDICTOR6); + JPEG_UNUSED(Rc); +@@ -173,8 +173,8 @@ + const JDIFFROW diff_buf, const JDIFFROW prev_row, + JDIFFROW undiff_buf, JDIMENSION width) + { +- (void)cinfo; +- (void)comp_index; ++ //(void)cinfo; ++ //(void)comp_index; + SHIFT_TEMPS + UNDIFFERENCE_2D(PREDICTOR7); + JPEG_UNUSED(Rc); +@@ -194,7 +194,7 @@ + const JDIFFROW diff_buf, JDIFFROW prev_row, + JDIFFROW undiff_buf, JDIMENSION width) + { +- (void)prev_row; ++ //(void)prev_row; + j_lossless_d_ptr losslsd = (j_lossless_d_ptr) cinfo->codec; + + UNDIFFERENCE_1D(INITIAL_PREDICTORx); +diff -urEb dcmtk-3.7.0.orig/dcmjpeg/libijg8/jdsample.c dcmtk-3.7.0/dcmjpeg/libijg8/jdsample.c +--- dcmtk-3.7.0.orig/dcmjpeg/libijg8/jdsample.c 2025-12-19 14:51:32.454813979 +0100 ++++ dcmtk-3.7.0/dcmjpeg/libijg8/jdsample.c 2025-12-19 15:15:56.723467400 +0100 +@@ -92,7 +92,7 @@ + JSAMPARRAY output_buf, JDIMENSION *out_row_ctr, + JDIMENSION out_rows_avail) + { +- (void)in_row_groups_avail; ++ //(void)in_row_groups_avail; + my_upsample_ptr upsample = (my_upsample_ptr) cinfo->upsample; + int ci; + jpeg_component_info * compptr; +@@ -158,8 +158,8 @@ + fullsize_upsample (j_decompress_ptr cinfo, jpeg_component_info * compptr, + JSAMPARRAY input_data, JSAMPARRAY * output_data_ptr) + { +- (void)cinfo; +- (void)compptr; ++ //(void)cinfo; ++ //(void)compptr; + *output_data_ptr = input_data; + } + +@@ -173,9 +173,9 @@ + noop_upsample (j_decompress_ptr cinfo, jpeg_component_info * compptr, + JSAMPARRAY input_data, JSAMPARRAY * output_data_ptr) + { +- (void)cinfo; +- (void)compptr; +- (void)input_data; ++ //(void)cinfo; ++ //(void)compptr; ++ //(void)input_data; + *output_data_ptr = NULL; /* safety check */ + } + +@@ -239,7 +239,7 @@ + h2v1_upsample (j_decompress_ptr cinfo, jpeg_component_info * compptr, + JSAMPARRAY input_data, JSAMPARRAY * output_data_ptr) + { +- (void)compptr; ++ //(void)compptr; + JSAMPARRAY output_data = *output_data_ptr; + register JSAMPROW inptr, outptr; + register JSAMPLE invalue; +@@ -268,7 +268,7 @@ + h2v2_upsample (j_decompress_ptr cinfo, jpeg_component_info * compptr, + JSAMPARRAY input_data, JSAMPARRAY * output_data_ptr) + { +- (void)compptr; ++ //(void)compptr; + JSAMPARRAY output_data = *output_data_ptr; + register JSAMPROW inptr, outptr; + register JSAMPLE invalue; +diff -urEb dcmtk-3.7.0.orig/dcmjpeg/libijg8/jdscale.c dcmtk-3.7.0/dcmjpeg/libijg8/jdscale.c +--- dcmtk-3.7.0.orig/dcmjpeg/libijg8/jdscale.c 2025-12-19 14:51:32.453813986 +0100 ++++ dcmtk-3.7.0/dcmjpeg/libijg8/jdscale.c 2025-12-19 14:57:10.252423426 +0100 +@@ -67,7 +67,7 @@ + const JDIFFROW diff_buf, JSAMPROW output_buf, + JDIMENSION width) + { +- (void)cinfo; ++ //(void)cinfo; + unsigned int xindex; + + for (xindex = 0; xindex < width; xindex++) +diff -urEb dcmtk-3.7.0.orig/dcmjpeg/libijg8/jerror.c dcmtk-3.7.0/dcmjpeg/libijg8/jerror.c +--- dcmtk-3.7.0.orig/dcmjpeg/libijg8/jerror.c 2025-12-19 14:51:32.454813979 +0100 ++++ dcmtk-3.7.0/dcmjpeg/libijg8/jerror.c 2025-12-19 15:25:22.319955051 +0100 +@@ -34,6 +34,10 @@ + #define EXIT_FAILURE 1 + #endif + ++#if defined(_MSC_VER) && _MSC_VER < 1900 ++#define snprintf _snprintf ++#endif ++ + + /* + * Create the message string table. +diff -urEb dcmtk-3.7.0.orig/dcmjpeg/libijg8/jmemnobs.c dcmtk-3.7.0/dcmjpeg/libijg8/jmemnobs.c +--- dcmtk-3.7.0.orig/dcmjpeg/libijg8/jmemnobs.c 2025-12-19 14:51:32.453813986 +0100 ++++ dcmtk-3.7.0/dcmjpeg/libijg8/jmemnobs.c 2025-12-19 15:11:16.796065163 +0100 +@@ -29,15 +29,15 @@ + GLOBAL(void *) + jpeg_get_small (j_common_ptr cinfo, size_t sizeofobject) + { +- (void) cinfo; ++ //(void) cinfo; + return (void *) malloc(sizeofobject); + } + + GLOBAL(void) + jpeg_free_small (j_common_ptr cinfo, void * object, size_t sizeofobject) + { +- (void) cinfo; +- (void) sizeofobject; ++ //(void) cinfo; ++ //(void) sizeofobject; + free(object); + } + +@@ -52,15 +52,15 @@ + GLOBAL(void FAR *) + jpeg_get_large (j_common_ptr cinfo, size_t sizeofobject) + { +- (void) cinfo; ++ //(void) cinfo; + return (void FAR *) malloc(sizeofobject); + } + + GLOBAL(void) + jpeg_free_large (j_common_ptr cinfo, void FAR * object, size_t sizeofobject) + { +- (void) cinfo; +- (void) sizeofobject; ++ //(void) cinfo; ++ //(void) sizeofobject; + free(object); + } + +@@ -74,9 +74,9 @@ + jpeg_mem_available (j_common_ptr cinfo, long min_bytes_needed, + long max_bytes_needed, long already_allocated) + { +- (void) cinfo; +- (void) min_bytes_needed; +- (void) already_allocated; ++ //(void) cinfo; ++ //(void) min_bytes_needed; ++ //(void) already_allocated; + return max_bytes_needed; + } + +@@ -91,8 +91,8 @@ + jpeg_open_backing_store (j_common_ptr cinfo, backing_store_ptr info, + long total_bytes_needed) + { +- (void) info; +- (void) total_bytes_needed; ++ //(void) info; ++ //(void) total_bytes_needed; + ERREXIT(cinfo, JERR_NO_BACKING_STORE); + } + +@@ -105,13 +105,13 @@ + GLOBAL(long) + jpeg_mem_init (j_common_ptr cinfo) + { +- (void) cinfo; ++ //(void) cinfo; + return 0; /* just set max_memory_to_use to 0 */ + } + + GLOBAL(void) + jpeg_mem_term (j_common_ptr cinfo) + { +- (void) cinfo; ++ //(void) cinfo; + /* no work */ + } +diff -urEb dcmtk-3.7.0.orig/dcmjpeg/libijg8/jquant1.c dcmtk-3.7.0/dcmjpeg/libijg8/jquant1.c +--- dcmtk-3.7.0.orig/dcmjpeg/libijg8/jquant1.c 2025-12-19 14:51:32.454813979 +0100 ++++ dcmtk-3.7.0/dcmjpeg/libijg8/jquant1.c 2025-12-19 15:13:31.435314227 +0100 +@@ -251,8 +251,8 @@ + * (Forcing the upper and lower values to the limits ensures that + * dithering can't produce a color outside the selected gamut.) + */ +- (void) cinfo; +- (void) ci; ++ //(void) cinfo; ++ //(void) ci; + return (int) (((IJG_INT32) j * MAXJSAMPLE + maxj/2) / maxj); + } + +@@ -262,8 +262,8 @@ + /* Return largest input value that should map to j'th output value */ + /* Must have largest(j=0) >= 0, and largest(j=maxj) >= MAXJSAMPLE */ + { +- (void) cinfo; +- (void) ci; ++ //(void) cinfo; ++ //(void) ci; + /* Breakpoints are halfway between values returned by output_value */ + return (int) (((IJG_INT32) (2*j + 1) * MAXJSAMPLE + maxj) / (2*maxj)); + } +@@ -744,7 +744,7 @@ + METHODDEF(void) + start_pass_1_quant (j_decompress_ptr cinfo, boolean is_pre_scan) + { +- (void) is_pre_scan; ++ //(void) is_pre_scan; + my_cquantize_ptr cquantize = (my_cquantize_ptr) cinfo->cquantize; + size_t arraysize; + int i; +@@ -802,7 +802,7 @@ + METHODDEF(void) + finish_pass_1_quant (j_decompress_ptr cinfo) + { +- (void) cinfo; ++ //(void) cinfo; + /* no work in 1-pass case */ + } + +diff -urEb dcmtk-3.7.0.orig/dcmjpeg/libijg8/jquant2.c dcmtk-3.7.0/dcmjpeg/libijg8/jquant2.c +--- dcmtk-3.7.0.orig/dcmjpeg/libijg8/jquant2.c 2025-12-19 14:51:32.453813986 +0100 ++++ dcmtk-3.7.0/dcmjpeg/libijg8/jquant2.c 2025-12-19 15:16:14.085364127 +0100 +@@ -224,7 +224,7 @@ + prescan_quantize (j_decompress_ptr cinfo, JSAMPARRAY input_buf, + JSAMPARRAY output_buf, int num_rows) + { +- (void) output_buf; ++ //(void) output_buf; + my_cquantize_ptr cquantize = (my_cquantize_ptr) cinfo->cquantize; + register JSAMPROW ptr; + register histptr histp; +@@ -1156,7 +1156,7 @@ + METHODDEF(void) + finish_pass2 (j_decompress_ptr cinfo) + { +- (void) cinfo; ++ //(void) cinfo; + /* no work */ + } + +diff -urEb dcmtk-3.7.0.orig/oficonv/libsrc/citrus_bcs.h dcmtk-3.7.0/oficonv/libsrc/citrus_bcs.h +--- dcmtk-3.7.0.orig/oficonv/libsrc/citrus_bcs.h 2025-12-19 14:51:32.440814079 +0100 ++++ dcmtk-3.7.0/oficonv/libsrc/citrus_bcs.h 2025-12-19 15:28:43.259661159 +0100 +@@ -37,7 +37,21 @@ + #include <errno.h> + #include <stdint.h> + #include <limits.h> ++ ++#undef EOPNOTSUPP ++#define EOPNOTSUPP 130 // https://learn.microsoft.com/fr-fr/cpp/c-runtime-library/errno-constants ++ ++#if (_MSC_VER >= 1900) + #include <stdbool.h> ++#else ++#define bool int ++#define false 0 ++#define true 1 ++#endif ++ ++#if defined(_MSC_VER) && _MSC_VER < 1900 ++#define snprintf _snprintf ++#endif + + #define CITRUS_DECONST(type, var) ((type)(uintptr_t)(const void *)(var)) + +diff -urEb dcmtk-3.7.0.orig/oficonv/libsrc/citrus_big5.c dcmtk-3.7.0/oficonv/libsrc/citrus_big5.c +--- dcmtk-3.7.0.orig/oficonv/libsrc/citrus_big5.c 2025-12-19 14:51:32.431814143 +0100 ++++ dcmtk-3.7.0/oficonv/libsrc/citrus_big5.c 2025-12-19 15:29:26.484381052 +0100 +@@ -214,13 +214,6 @@ + return (0); + } + +-static const _citrus_prop_hint_t root_hints[] = { +- _CITRUS_PROP_HINT_NUM("row", &_citrus_BIG5_fill_rowcol), +- _CITRUS_PROP_HINT_NUM("col", &_citrus_BIG5_fill_rowcol), +- _CITRUS_PROP_HINT_NUM("excludes", &_citrus_BIG5_fill_excludes), +- _CITRUS_PROP_HINT_END +-}; +- + static void + /*ARGSUSED*/ + _citrus_BIG5_encoding_module_uninit(_BIG5EncodingInfo *ei) +@@ -241,6 +234,18 @@ + const char *s; + int err; + ++ _citrus_prop_hint_t root_hints[4]; ++ root_hints[0].name = "row"; ++ root_hints[0].type = _CITRUS_PROP_NUM; ++ root_hints[0].cb.num.func = _citrus_BIG5_fill_rowcol; ++ root_hints[1].name = "col"; ++ root_hints[1].type = _CITRUS_PROP_NUM; ++ root_hints[1].cb.num.func = _citrus_BIG5_fill_rowcol; ++ root_hints[2].name = "excludes"; ++ root_hints[2].type = _CITRUS_PROP_NUM; ++ root_hints[2].cb.num.func = _citrus_BIG5_fill_excludes; ++ root_hints[3].name = NULL; // _CITRUS_PROP_HINT_END ++ + memset((void *)ei, 0, sizeof(*ei)); + TAILQ_INIT(&ei->excludes); + +diff -urEb dcmtk-3.7.0.orig/oficonv/libsrc/citrus_db_hash.h dcmtk-3.7.0/oficonv/libsrc/citrus_db_hash.h +--- dcmtk-3.7.0.orig/oficonv/libsrc/citrus_db_hash.h 2025-12-19 14:51:32.430814151 +0100 ++++ dcmtk-3.7.0/oficonv/libsrc/citrus_db_hash.h 2025-12-19 15:29:39.684295407 +0100 +@@ -29,7 +29,7 @@ + + #include "dcmtk/config/osconfig.h" + #include "dcmtk/oficonv/oidefine.h" +-#include <inttypes.h> ++#include <stdint.h> + + struct _citrus_region; + +diff -urEb dcmtk-3.7.0.orig/oficonv/libsrc/citrus_esdb.c dcmtk-3.7.0/oficonv/libsrc/citrus_esdb.c +--- dcmtk-3.7.0.orig/oficonv/libsrc/citrus_esdb.c 2025-12-19 14:51:32.431814143 +0100 ++++ dcmtk-3.7.0/oficonv/libsrc/citrus_esdb.c 2025-12-19 15:30:05.057130649 +0100 +@@ -30,7 +30,15 @@ + #include <sys/types.h> + #include <errno.h> + #include <limits.h> ++ ++#if (_MSC_VER >= 1900) + #include <stdbool.h> ++#else ++#define bool int ++#define false 0 ++#define true 1 ++#endif ++ + #include <stdio.h> + #include <stdlib.h> + #include <string.h> +diff -urEb dcmtk-3.7.0.orig/oficonv/libsrc/citrus_esdb.h dcmtk-3.7.0/oficonv/libsrc/citrus_esdb.h +--- dcmtk-3.7.0.orig/oficonv/libsrc/citrus_esdb.h 2025-12-19 14:51:32.432814136 +0100 ++++ dcmtk-3.7.0/oficonv/libsrc/citrus_esdb.h 2025-12-19 15:30:31.960955765 +0100 +@@ -29,7 +29,14 @@ + + #include "dcmtk/config/osconfig.h" + #include "citrus_types.h" ++ ++#if (_MSC_VER >= 1900) + #include <stdbool.h> ++#else ++#define bool int ++#define false 0 ++#define true 1 ++#endif + + struct _citrus_esdb_charset { + _citrus_csid_t ec_csid; +diff -urEb dcmtk-3.7.0.orig/oficonv/libsrc/citrus_gbk2k.c dcmtk-3.7.0/oficonv/libsrc/citrus_gbk2k.c +--- dcmtk-3.7.0.orig/oficonv/libsrc/citrus_gbk2k.c 2025-12-19 14:51:32.440814079 +0100 ++++ dcmtk-3.7.0/oficonv/libsrc/citrus_gbk2k.c 2025-12-19 15:30:53.793813715 +0100 +@@ -30,7 +30,15 @@ + #include <sys/types.h> + #include <errno.h> + #include <limits.h> ++ ++#if (_MSC_VER >= 1900) + #include <stdbool.h> ++#else ++#define bool int ++#define false 0 ++#define true 1 ++#endif ++ + #include <stddef.h> + #include <stdio.h> + #include <stdlib.h> +diff -urEb dcmtk-3.7.0.orig/oficonv/libsrc/citrus_hz.c dcmtk-3.7.0/oficonv/libsrc/citrus_hz.c +--- dcmtk-3.7.0.orig/oficonv/libsrc/citrus_hz.c 2025-12-19 14:51:32.439814086 +0100 ++++ dcmtk-3.7.0/oficonv/libsrc/citrus_hz.c 2025-12-19 15:31:48.434457734 +0100 +@@ -569,13 +569,6 @@ + return (0); + } + +-static const _citrus_prop_hint_t escape_hints[] = { +-_CITRUS_PROP_HINT_STR("CH", &_citrus_HZ_parse_char), +-_CITRUS_PROP_HINT_STR("GL", &_citrus_HZ_parse_graphic), +-_CITRUS_PROP_HINT_STR("GR", &_citrus_HZ_parse_graphic), +-_CITRUS_PROP_HINT_END +-}; +- + static int + _citrus_HZ_parse_escape(void *context, const char *name, const char *s) + { +@@ -583,6 +576,18 @@ + escape_t *escape; + void *p[2]; + ++ _citrus_prop_hint_t escape_hints[4]; ++ escape_hints[0].name = "CH"; ++ escape_hints[0].type = _CITRUS_PROP_STR; ++ escape_hints[0].cb.str.func = _citrus_HZ_parse_char; ++ escape_hints[1].name = "GL"; ++ escape_hints[1].type = _CITRUS_PROP_STR; ++ escape_hints[1].cb.str.func = _citrus_HZ_parse_graphic; ++ escape_hints[2].name = "GR"; ++ escape_hints[2].type = _CITRUS_PROP_STR; ++ escape_hints[2].cb.str.func = _citrus_HZ_parse_graphic; ++ escape_hints[3].name = NULL; // _CITRUS_PROP_HINT_END ++ + ei = (_HZEncodingInfo *)context; + escape = calloc(1, sizeof(*escape)); + if (escape == NULL) +@@ -603,18 +608,21 @@ + escape_hints, (void *)&p[0], s, strlen(s))); + } + +-static const _citrus_prop_hint_t root_hints[] = { +-_CITRUS_PROP_HINT_STR("0", &_citrus_HZ_parse_escape), +-_CITRUS_PROP_HINT_STR("1", &_citrus_HZ_parse_escape), +-_CITRUS_PROP_HINT_END +-}; +- + static int + _citrus_HZ_encoding_module_init(_HZEncodingInfo * ei, + const void * var, size_t lenvar) + { + int errnum; + ++ _citrus_prop_hint_t root_hints[3]; ++ root_hints[0].name = "0"; ++ root_hints[0].type = _CITRUS_PROP_STR; ++ root_hints[0].cb.str.func = _citrus_HZ_parse_escape; ++ root_hints[1].name = "1"; ++ root_hints[1].type = _CITRUS_PROP_STR; ++ root_hints[1].cb.str.func = _citrus_HZ_parse_escape; ++ root_hints[2].name = NULL; // _CITRUS_PROP_HINT_END ++ + memset(ei, 0, sizeof(*ei)); + TAILQ_INIT(E0SET(ei)); + TAILQ_INIT(E1SET(ei)); +diff -urEb dcmtk-3.7.0.orig/oficonv/libsrc/citrus_iconv_local.h dcmtk-3.7.0/oficonv/libsrc/citrus_iconv_local.h +--- dcmtk-3.7.0.orig/oficonv/libsrc/citrus_iconv_local.h 2025-12-19 14:51:32.440814079 +0100 ++++ dcmtk-3.7.0/oficonv/libsrc/citrus_iconv_local.h 2025-12-19 15:32:12.929297944 +0100 +@@ -29,7 +29,15 @@ + + #include "dcmtk/config/osconfig.h" + #include "dcmtk/oficonv/iconv.h" ++ ++#if (_MSC_VER >= 1900) + #include <stdbool.h> ++#else ++#define bool int ++#define false 0 ++#define true 1 ++#endif ++ + #include <stdint.h> + + #ifdef HAVE_SYS_QUEUE_H +diff -urEb dcmtk-3.7.0.orig/oficonv/libsrc/citrus_iconv_none.c dcmtk-3.7.0/oficonv/libsrc/citrus_iconv_none.c +--- dcmtk-3.7.0.orig/oficonv/libsrc/citrus_iconv_none.c 2025-12-19 14:51:32.436814108 +0100 ++++ dcmtk-3.7.0/oficonv/libsrc/citrus_iconv_none.c 2025-12-19 15:32:25.843213651 +0100 +@@ -35,7 +35,15 @@ + + + #include <errno.h> ++ ++#if (_MSC_VER >= 1900) + #include <stdbool.h> ++#else ++#define bool int ++#define false 0 ++#define true 1 ++#endif ++ + #include <stdlib.h> + #include <string.h> + +diff -urEb dcmtk-3.7.0.orig/oficonv/libsrc/citrus_iconv_std.c dcmtk-3.7.0/oficonv/libsrc/citrus_iconv_std.c +--- dcmtk-3.7.0.orig/oficonv/libsrc/citrus_iconv_std.c 2025-12-19 14:51:32.436814108 +0100 ++++ dcmtk-3.7.0/oficonv/libsrc/citrus_iconv_std.c 2025-12-19 15:32:43.838096139 +0100 +@@ -36,7 +36,15 @@ + + #include <errno.h> + #include <limits.h> ++ ++#if (_MSC_VER >= 1900) + #include <stdbool.h> ++#else ++#define bool int ++#define false 0 ++#define true 1 ++#endif ++ + #include <stdio.h> + #include <stdlib.h> + #include <string.h> +diff -urEb dcmtk-3.7.0.orig/oficonv/libsrc/citrus_iso2022.c dcmtk-3.7.0/oficonv/libsrc/citrus_iso2022.c +--- dcmtk-3.7.0.orig/oficonv/libsrc/citrus_iso2022.c 2025-12-19 14:51:32.436814108 +0100 ++++ dcmtk-3.7.0/oficonv/libsrc/citrus_iso2022.c 2025-12-19 15:32:56.086016123 +0100 +@@ -31,7 +31,15 @@ + #include <sys/types.h> + #include <errno.h> + #include <limits.h> ++ ++#if (_MSC_VER >= 1900) + #include <stdbool.h> ++#else ++#define bool int ++#define false 0 ++#define true 1 ++#endif ++ + #include <stddef.h> + #include <stdio.h> + #include <stdlib.h> +diff -urEb dcmtk-3.7.0.orig/oficonv/libsrc/citrus_johab.c dcmtk-3.7.0/oficonv/libsrc/citrus_johab.c +--- dcmtk-3.7.0.orig/oficonv/libsrc/citrus_johab.c 2025-12-19 14:51:32.438814093 +0100 ++++ dcmtk-3.7.0/oficonv/libsrc/citrus_johab.c 2025-12-19 15:33:09.682927265 +0100 +@@ -30,7 +30,15 @@ + #include <sys/types.h> + #include <errno.h> + #include <limits.h> ++ ++#if (_MSC_VER >= 1900) + #include <stdbool.h> ++#else ++#define bool int ++#define false 0 ++#define true 1 ++#endif ++ + #include <stddef.h> + #include <stdint.h> + #include <stdio.h> +diff -urEb dcmtk-3.7.0.orig/oficonv/libsrc/citrus_module.c dcmtk-3.7.0/oficonv/libsrc/citrus_module.c +--- dcmtk-3.7.0.orig/oficonv/libsrc/citrus_module.c 2025-12-19 14:51:32.440814079 +0100 ++++ dcmtk-3.7.0/oficonv/libsrc/citrus_module.c 2025-12-19 15:33:21.398850671 +0100 +@@ -94,7 +94,15 @@ + #endif + #include <errno.h> + #include <limits.h> ++ ++#if (_MSC_VER >= 1900) + #include <stdbool.h> ++#else ++#define bool int ++#define false 0 ++#define true 1 ++#endif ++ + #include <stddef.h> + #include <stdio.h> + #include <stdlib.h> +diff -urEb dcmtk-3.7.0.orig/oficonv/libsrc/citrus_mskanji.c dcmtk-3.7.0/oficonv/libsrc/citrus_mskanji.c +--- dcmtk-3.7.0.orig/oficonv/libsrc/citrus_mskanji.c 2025-12-19 14:51:32.439814086 +0100 ++++ dcmtk-3.7.0/oficonv/libsrc/citrus_mskanji.c 2025-12-19 15:33:28.291805599 +0100 +@@ -63,7 +63,15 @@ + #include <sys/types.h> + #include <errno.h> + #include <limits.h> ++ ++#if (_MSC_VER >= 1900) + #include <stdbool.h> ++#else ++#define bool int ++#define false 0 ++#define true 1 ++#endif ++ + #include <stddef.h> + #include <stdio.h> + #include <stdlib.h> +diff -urEb dcmtk-3.7.0.orig/oficonv/libsrc/citrus_prop.c dcmtk-3.7.0/oficonv/libsrc/citrus_prop.c +--- dcmtk-3.7.0.orig/oficonv/libsrc/citrus_prop.c 2025-12-19 14:51:32.434814122 +0100 ++++ dcmtk-3.7.0/oficonv/libsrc/citrus_prop.c 2025-12-19 15:34:56.336229156 +0100 +@@ -30,7 +30,15 @@ + + #include <errno.h> + #include <limits.h> ++ ++#if (_MSC_VER >= 1900) + #include <stdbool.h> ++#else ++#define bool int ++#define false 0 ++#define true 1 ++#endif ++ + #include <stdio.h> + #include <stdlib.h> + #include <string.h> +diff -urEb dcmtk-3.7.0.orig/oficonv/libsrc/citrus_region.h dcmtk-3.7.0/oficonv/libsrc/citrus_region.h +--- dcmtk-3.7.0.orig/oficonv/libsrc/citrus_region.h 2025-12-19 14:51:32.436814108 +0100 ++++ dcmtk-3.7.0/oficonv/libsrc/citrus_region.h 2025-12-19 15:36:44.692518202 +0100 +@@ -31,7 +31,15 @@ + #include "dcmtk/config/osconfig.h" + #include <stdint.h> + #include <string.h> ++ ++#if (_MSC_VER >= 1900) + #include <stdbool.h> ++#else ++#define bool int ++#define false 0 ++#define true 1 ++#endif ++ + #include <sys/types.h> + + +diff -urEb dcmtk-3.7.0.orig/oficonv/libsrc/citrus_utf8.c dcmtk-3.7.0/oficonv/libsrc/citrus_utf8.c +--- dcmtk-3.7.0.orig/oficonv/libsrc/citrus_utf8.c 2025-12-19 14:51:32.439814086 +0100 ++++ dcmtk-3.7.0/oficonv/libsrc/citrus_utf8.c 2025-12-19 15:35:06.552162192 +0100 +@@ -62,7 +62,15 @@ + #include <sys/types.h> + #include <errno.h> + #include <limits.h> ++ ++#if (_MSC_VER >= 1900) + #include <stdbool.h> ++#else ++#define bool int ++#define false 0 ++#define true 1 ++#endif ++ + #include <stddef.h> + #include <stdio.h> + #include <stdlib.h> +diff -urEb dcmtk-3.7.0.orig/oficonv/libsrc/oficonv_iconv.c dcmtk-3.7.0/oficonv/libsrc/oficonv_iconv.c +--- dcmtk-3.7.0.orig/oficonv/libsrc/oficonv_iconv.c 2025-12-19 14:51:32.432814136 +0100 ++++ dcmtk-3.7.0/oficonv/libsrc/oficonv_iconv.c 2025-12-19 15:35:15.418104064 +0100 +@@ -37,7 +37,15 @@ + #include <sys/types.h> + #include <errno.h> + #include <limits.h> ++ ++#if (_MSC_VER >= 1900) + #include <stdbool.h> ++#else ++#define bool int ++#define false 0 ++#define true 1 ++#endif ++ + #include <stdlib.h> + #include <string.h> + #include <stdio.h> +diff -urEb dcmtk-3.7.0.orig/oficonv/libsrc/windows_mmap.h dcmtk-3.7.0/oficonv/libsrc/windows_mmap.h +--- dcmtk-3.7.0.orig/oficonv/libsrc/windows_mmap.h 2025-12-19 14:51:32.431814143 +0100 ++++ dcmtk-3.7.0/oficonv/libsrc/windows_mmap.h 2025-12-19 15:42:36.269444850 +0100 +@@ -74,6 +74,12 @@ + + static void *mmap(void *start, size_t length, int prot, int flags, int fd, off_t offset) + { ++ DWORD flProtect; ++ DWORD dwDesiredAccess; ++ HANDLE mmap_fd, h; ++ off_t end; ++ void *ret; ++ + (void) start; + + if (prot & ~(PROT_READ | PROT_WRITE | PROT_EXEC)) +@@ -84,7 +90,6 @@ + } else if (flags & MAP_ANON) + return MAP_FAILED; + +- DWORD flProtect; + flProtect = 0; + if (prot & PROT_WRITE) { + if (prot & PROT_EXEC) +@@ -99,8 +104,7 @@ + } else + flProtect = PAGE_READONLY; + +- off_t end = (off_t)(length + offset); +- HANDLE mmap_fd, h; ++ end = (off_t)(length + offset); + if (fd == -1) + mmap_fd = INVALID_HANDLE_VALUE; + else +@@ -109,7 +113,6 @@ + if (h == NULL) + return MAP_FAILED; + +- DWORD dwDesiredAccess; + if (prot & PROT_WRITE) + dwDesiredAccess = FILE_MAP_WRITE; + else +@@ -118,7 +121,7 @@ + dwDesiredAccess |= FILE_MAP_EXECUTE; + if (flags & MAP_PRIVATE) + dwDesiredAccess |= FILE_MAP_COPY; +- void *ret = MapViewOfFile(h, dwDesiredAccess, MM_DWORD_HI(offset), MM_DWORD_LO(offset), length); ++ ret = MapViewOfFile(h, dwDesiredAccess, MM_DWORD_HI(offset), MM_DWORD_LO(offset), length); + if (ret == NULL) { + CloseHandle(h); + ret = MAP_FAILED; +@@ -140,11 +143,13 @@ + + static void munmap(void *addr, size_t length) + { ++ mmap_cleanup_t **prevPtr; ++ mmap_cleanup_t *mc; ++ + (void) length; + UnmapViewOfFile(addr); + // Look up through the tracking elements to close the handle +- mmap_cleanup_t **prevPtr = &mmap_cleanup; +- mmap_cleanup_t *mc; ++ prevPtr = &mmap_cleanup; + for (mc = *prevPtr; mc != NULL; prevPtr = &mc->next, mc = *prevPtr) + { + if (mc->addr == addr) +diff -urEb dcmtk-3.7.0.orig/ofstd/include/dcmtk/ofstd/oftypes.h dcmtk-3.7.0/ofstd/include/dcmtk/ofstd/oftypes.h +--- dcmtk-3.7.0.orig/ofstd/include/dcmtk/ofstd/oftypes.h 2025-12-19 14:51:32.443814058 +0100 ++++ dcmtk-3.7.0/ofstd/include/dcmtk/ofstd/oftypes.h 2025-12-19 15:39:04.630598021 +0100 +@@ -79,8 +79,9 @@ + + #include <cstddef> + BEGIN_EXTERN_C ++#if defined(HAVE_STDINT_H) || _MSC_VER >= 1600 + #include <stdint.h> +-#include <inttypes.h> ++#endif + END_EXTERN_C + + #include "dcmtk/ofstd/ofstream.h"
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/OrthancFramework/Resources/Patches/dcmtk-3.7.0.patch Fri Dec 19 15:49:06 2025 +0100 @@ -0,0 +1,293 @@ +diff -urEb dcmtk-3.7.0.orig/CMake/GenerateDCMTKConfigure.cmake dcmtk-3.7.0/CMake/GenerateDCMTKConfigure.cmake +--- dcmtk-3.7.0.orig/CMake/GenerateDCMTKConfigure.cmake 2025-12-19 14:29:01.247154576 +0100 ++++ dcmtk-3.7.0/CMake/GenerateDCMTKConfigure.cmake 2025-12-19 14:29:46.562859573 +0100 +@@ -227,9 +227,12 @@ + + # Check the sizes of various types + include(CheckTypeSize) ++if (NOT CMAKE_SYSTEM_NAME STREQUAL "Emscripten") ++ # This doesn't work for wasm, Orthanc defines the macros manually + CHECK_TYPE_SIZE("int" SIZEOF_INT) + CHECK_TYPE_SIZE("long" SIZEOF_LONG) + CHECK_TYPE_SIZE("void*" SIZEOF_VOID_P) ++endif() + + # Check for include files, libraries, and functions + include("${DCMTK_CMAKE_INCLUDE}CMake/dcmtkTryCompile.cmake") +diff -urEb dcmtk-3.7.0.orig/dcmdata/include/dcmtk/dcmdata/dcdict.h dcmtk-3.7.0/dcmdata/include/dcmtk/dcmdata/dcdict.h +--- dcmtk-3.7.0.orig/dcmdata/include/dcmtk/dcmdata/dcdict.h 2025-12-19 14:29:01.223154732 +0100 ++++ dcmtk-3.7.0/dcmdata/include/dcmtk/dcmdata/dcdict.h 2025-12-19 14:30:11.875694664 +0100 +@@ -163,6 +163,12 @@ + /// returns an iterator to the end of the repeating groups data dictionary + DcmDictEntryListIterator repeatingEnd() { return repDict.end(); } + ++ // Function by the Orthanc project to load a dictionary from a ++ // memory buffer, which is necessary in sandboxed ++ // environments. This is an adapted version of ++ // DcmDataDictionary::loadDictionary(). ++ OFBool loadFromMemory(const std::string& content, OFBool errorIfAbsent = OFTrue); ++ + private: + + /** private undefined assignment operator +diff -urEb dcmtk-3.7.0.orig/dcmdata/libsrc/dcdict.cc dcmtk-3.7.0/dcmdata/libsrc/dcdict.cc +--- dcmtk-3.7.0.orig/dcmdata/libsrc/dcdict.cc 2025-12-19 14:29:01.230154687 +0100 ++++ dcmtk-3.7.0/dcmdata/libsrc/dcdict.cc 2025-12-19 14:32:07.304941668 +0100 +@@ -904,3 +904,5 @@ + wrlock().clear(); + wrunlock(); + } ++ ++#include "dcdict_orthanc.cc" +diff -urEb dcmtk-3.7.0.orig/dcmdata/libsrc/dcpxitem.cc dcmtk-3.7.0/dcmdata/libsrc/dcpxitem.cc +--- dcmtk-3.7.0.orig/dcmdata/libsrc/dcpxitem.cc 2025-12-19 14:29:01.226154713 +0100 ++++ dcmtk-3.7.0/dcmdata/libsrc/dcpxitem.cc 2025-12-19 14:32:22.058845317 +0100 +@@ -31,6 +31,8 @@ + #include "dcmtk/dcmdata/dcostrma.h" /* for class DcmOutputStream */ + #include "dcmtk/dcmdata/dcwcache.h" /* for class DcmWriteCache */ + ++#undef max ++#include "dcmtk/ofstd/oflimits.h" + + // ******************************** + +diff -urEb dcmtk-3.7.0.orig/dcmnet/libsrc/scu.cc dcmtk-3.7.0/dcmnet/libsrc/scu.cc +--- dcmtk-3.7.0.orig/dcmnet/libsrc/scu.cc 2025-12-19 14:29:01.298154244 +0100 ++++ dcmtk-3.7.0/dcmnet/libsrc/scu.cc 2025-12-19 14:32:55.028558816 +0100 +@@ -19,6 +19,11 @@ + * + */ + ++#if defined(_WIN32) ++# define __STDC_LIMIT_MACROS // Get access to UINT16_MAX ++# include <stdint.h> ++#endif ++ + #include "dcmtk/config/osconfig.h" /* make sure OS specific configuration is included first */ + + #include "dcmtk/dcmdata/dcostrmf.h" /* for class DcmOutputFileStream */ +diff -urEb dcmtk-3.7.0.orig/oficonv/include/dcmtk/oficonv/iconv.h dcmtk-3.7.0/oficonv/include/dcmtk/oficonv/iconv.h +--- dcmtk-3.7.0.orig/oficonv/include/dcmtk/oficonv/iconv.h 2025-12-19 14:29:01.259154498 +0100 ++++ dcmtk-3.7.0/oficonv/include/dcmtk/oficonv/iconv.h 2025-12-19 14:33:18.961339935 +0100 +@@ -53,7 +53,12 @@ + #endif + + struct __tag_iconv_t; ++ ++#if defined(__LSB_VERSION__) ++typedef void *iconv_t; ++#else + typedef struct __tag_iconv_t *iconv_t; ++#endif + + #ifndef OFICONV_CITRUS_WC_T_DEFINED + #define OFICONV_CITRUS_WC_T_DEFINED +diff -urEb dcmtk-3.7.0.orig/oficonv/libsrc/citrus_csmapper.c dcmtk-3.7.0/oficonv/libsrc/citrus_csmapper.c +--- dcmtk-3.7.0.orig/oficonv/libsrc/citrus_csmapper.c 2025-12-19 14:29:01.260154492 +0100 ++++ dcmtk-3.7.0/oficonv/libsrc/citrus_csmapper.c 2025-12-19 14:34:19.900793503 +0100 +@@ -61,7 +61,8 @@ + + #ifdef WITH_THREADS + #ifdef HAVE_WINDOWS_H +-static SRWLOCK ma_lock = SRWLOCK_INIT; ++static int ma_lock_initialized = 0; ++static CRITICAL_SECTION ma_lock; + #elif defined(HAVE_PTHREAD_H) + static pthread_rwlock_t ma_lock = PTHREAD_RWLOCK_INITIALIZER; + #endif +@@ -380,6 +381,14 @@ + char mapper_path[OFICONV_PATH_MAX]; + unsigned long norm; + int ret; ++ ++#if defined(WITH_THREADS) && defined(HAVE_WINDOWS_H) ++ if (ma_lock_initialized == 0) { /* Very minor risk of race condition here */ ++ InitializeCriticalSection(&ma_lock); ++ ma_lock_initialized = 1; ++ } ++#endif ++ + norm = 0; + + getCSMapperPath(mapper_path, sizeof(mapper_path), NULL); +diff -urEb dcmtk-3.7.0.orig/oficonv/libsrc/citrus_iconv.c dcmtk-3.7.0/oficonv/libsrc/citrus_iconv.c +--- dcmtk-3.7.0.orig/oficonv/libsrc/citrus_iconv.c 2025-12-19 14:29:01.284154336 +0100 ++++ dcmtk-3.7.0/oficonv/libsrc/citrus_iconv.c 2025-12-19 14:43:41.671257024 +0100 +@@ -47,7 +47,15 @@ + #endif + + #include <limits.h> ++ ++#if (_MSC_VER >= 1900) + #include <stdbool.h> ++#else ++#define bool int ++#define false 0 ++#define true 1 ++#endif ++ + #include <stdio.h> + #include <stdlib.h> + #include <string.h> +@@ -78,7 +86,8 @@ + + #ifdef WITH_THREADS + #ifdef HAVE_WINDOWS_H +-static SRWLOCK ci_lock = SRWLOCK_INIT; ++static int ci_lock_initialized = 0; ++static CRITICAL_SECTION ci_lock; + #elif defined(HAVE_PTHREAD_H) + static pthread_rwlock_t ci_lock = PTHREAD_RWLOCK_INITIALIZER; + #endif +@@ -297,14 +306,24 @@ + _citrus_iconv_open(struct _citrus_iconv * * rcv, + const char * src, const char * dst) + { +-struct _citrus_iconv *cv = NULL; ++#ifdef HAVE_WINDOWS_H ++ char current_codepage[20]; ++#endif ++ ++ struct _citrus_iconv *cv = NULL; + struct _citrus_iconv_shared *ci = NULL; + char realdst[OFICONV_PATH_MAX], realsrc[OFICONV_PATH_MAX]; + int ret; + ++#if defined(WITH_THREADS) && defined(HAVE_WINDOWS_H) ++ if (ci_lock_initialized == 0) { /* Very minor risk of race condition here */ ++ InitializeCriticalSection(&ci_lock); ++ ci_lock_initialized = 1; ++ } ++#endif ++ + init_cache(); + #ifdef HAVE_WINDOWS_H +- char current_codepage[20]; + snprintf(current_codepage, sizeof(current_codepage), "%lu", (unsigned long) GetConsoleOutputCP()); + #endif + +diff -urEb dcmtk-3.7.0.orig/oficonv/libsrc/citrus_lock.h dcmtk-3.7.0/oficonv/libsrc/citrus_lock.h +--- dcmtk-3.7.0.orig/oficonv/libsrc/citrus_lock.h 2025-12-19 14:29:01.279154368 +0100 ++++ dcmtk-3.7.0/oficonv/libsrc/citrus_lock.h 2025-12-19 14:44:56.261698027 +0100 +@@ -31,11 +31,11 @@ + + #ifdef WITH_THREADS + +-#ifdef HAVE_WINDOWS_H ++#if defined(HAVE_WINDOWS_H) + + #include <windows.h> +-#define WLOCK(lock) AcquireSRWLockExclusive(lock); +-#define UNLOCK(lock) ReleaseSRWLockExclusive(lock); ++#define WLOCK(lock) EnterCriticalSection(lock); ++#define UNLOCK(lock) LeaveCriticalSection(lock); + #define RLOCK(lock) AcquireSRWLockShared(lock); + #define UNRLOCK(lock) ReleaseSRWLockShared(lock); + +diff -urEb dcmtk-3.7.0.orig/oficonv/libsrc/citrus_mapper.c dcmtk-3.7.0/oficonv/libsrc/citrus_mapper.c +--- dcmtk-3.7.0.orig/oficonv/libsrc/citrus_mapper.c 2025-12-19 14:29:01.274154401 +0100 ++++ dcmtk-3.7.0/oficonv/libsrc/citrus_mapper.c 2025-12-19 14:45:32.613427883 +0100 +@@ -60,7 +60,8 @@ + + #ifdef WITH_THREADS + #ifdef HAVE_WINDOWS_H +-static SRWLOCK cm_lock = SRWLOCK_INIT; ++static int cm_lock_initialized = 0; ++static CRITICAL_SECTION cm_lock; + #elif defined(HAVE_PTHREAD_H) + static pthread_rwlock_t cm_lock = PTHREAD_RWLOCK_INITIALIZER; + #endif +@@ -354,6 +355,13 @@ + const char *module, *variable; + int hashval, ret; + ++#if defined(WITH_THREADS) && defined(HAVE_WINDOWS_H) ++ if (cm_lock_initialized == 0) { /* Very minor risk of race condition here */ ++ InitializeCriticalSection(&cm_lock); ++ cm_lock_initialized = 1; ++ } ++#endif ++ + variable = NULL; + + WLOCK(&cm_lock); +diff -urEb dcmtk-3.7.0.orig/oflog/include/dcmtk/oflog/thread/syncpub.h dcmtk-3.7.0/oflog/include/dcmtk/oflog/thread/syncpub.h +--- dcmtk-3.7.0.orig/oflog/include/dcmtk/oflog/thread/syncpub.h 2025-12-19 14:29:01.190154947 +0100 ++++ dcmtk-3.7.0/oflog/include/dcmtk/oflog/thread/syncpub.h 2025-12-19 14:45:55.441258943 +0100 +@@ -63,7 +63,7 @@ + + DCMTK_LOG4CPLUS_INLINE_EXPORT + Mutex::Mutex (Mutex::Type t) +- : mtx (DCMTK_LOG4CPLUS_THREADED (new impl::Mutex (t) + 0)) ++ : mtx (DCMTK_LOG4CPLUS_THREADED (new impl::Mutex (t))) + { } + + +@@ -106,7 +106,7 @@ + DCMTK_LOG4CPLUS_INLINE_EXPORT + Semaphore::Semaphore (unsigned DCMTK_LOG4CPLUS_THREADED (max), + unsigned DCMTK_LOG4CPLUS_THREADED (initial)) +- : sem (DCMTK_LOG4CPLUS_THREADED (new impl::Semaphore (max, initial) + 0)) ++ : sem (DCMTK_LOG4CPLUS_THREADED (new impl::Semaphore (max, initial))) + { } + + +@@ -190,7 +190,7 @@ + + DCMTK_LOG4CPLUS_INLINE_EXPORT + ManualResetEvent::ManualResetEvent (bool DCMTK_LOG4CPLUS_THREADED (sig)) +- : ev (DCMTK_LOG4CPLUS_THREADED (new impl::ManualResetEvent (sig) + 0)) ++ : ev (DCMTK_LOG4CPLUS_THREADED (new impl::ManualResetEvent (sig))) + { } + + +@@ -252,7 +252,7 @@ + + DCMTK_LOG4CPLUS_INLINE_EXPORT + SharedMutex::SharedMutex () +- : sm (DCMTK_LOG4CPLUS_THREADED (new impl::SharedMutex + 0)) ++ : sm (DCMTK_LOG4CPLUS_THREADED (new impl::SharedMutex)) + { } + + +diff -urEb dcmtk-3.7.0.orig/oflog/libsrc/oflog.cc dcmtk-3.7.0/oflog/libsrc/oflog.cc +--- dcmtk-3.7.0.orig/oflog/libsrc/oflog.cc 2025-12-19 14:29:01.191154941 +0100 ++++ dcmtk-3.7.0/oflog/libsrc/oflog.cc 2025-12-19 14:46:16.546103212 +0100 +@@ -19,6 +19,11 @@ + * + */ + ++ ++#if defined(_WIN32) ++# include <winsock2.h> ++#endif ++ + #include "dcmtk/config/osconfig.h" /* make sure OS specific configuration is included first */ + #include "dcmtk/oflog/oflog.h" + +diff -urEb dcmtk-3.7.0.orig/ofstd/include/dcmtk/ofstd/offile.h dcmtk-3.7.0/ofstd/include/dcmtk/ofstd/offile.h +--- dcmtk-3.7.0.orig/ofstd/include/dcmtk/ofstd/offile.h 2025-12-19 14:29:01.292154283 +0100 ++++ dcmtk-3.7.0/ofstd/include/dcmtk/ofstd/offile.h 2025-12-19 14:46:45.533889981 +0100 +@@ -560,7 +560,7 @@ + */ + void setlinebuf() + { +-#if defined(_WIN32) || defined(__hpux) ++#if defined(_WIN32) || defined(__hpux) || defined(__LSB_VERSION__) + this->setvbuf(NULL, _IOLBF, 0); + #else + :: setlinebuf(file_); +diff -urEb dcmtk-3.7.0.orig/ofstd/libsrc/ofstub.cc dcmtk-3.7.0/ofstd/libsrc/ofstub.cc +--- dcmtk-3.7.0.orig/ofstd/libsrc/ofstub.cc 2025-12-19 14:29:01.294154271 +0100 ++++ dcmtk-3.7.0/ofstd/libsrc/ofstub.cc 2025-12-19 14:47:06.737734493 +0100 +@@ -35,6 +35,10 @@ + #include <windows.h> + #endif /* HAVE_WINDOWS_H */ + ++#if defined(__LSB_VERSION__) ++#include <errno.h> ++#endif ++ + #define EXITCODE_CANNOT_DETERMINE_DIR 90 + #define EXITCODE_EXEC_FAILED 91 + #define EXITCODE_ILLEGAL_PARAMS 92
