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