From abefc47dadb03ee17f4963beaa63a418cbbce66b Mon Sep 17 00:00:00 2001 From: Peter Michael Green Date: Wed, 19 Jun 2024 20:44:47 +0000 Subject: [PATCH] Import dcmtk_3.6.7-13+rpi1.debian.tar.xz [dgit import tarball dcmtk 3.6.7-13+rpi1 dcmtk_3.6.7-13+rpi1.debian.tar.xz] --- .directory | 2 + NEWS | 24 + changelog | 927 ++++++++++++++++++ control | 101 ++ copyright | 566 +++++++++++ dcmqrscp.default | 3 + dcmqrscp.init | 89 ++ dcmtk-doc.doc-base | 12 + dcmtk-doc.docs | 1 + dcmtk.NEWS | 137 +++ dcmtk.README.Debian | 166 ++++ dcmtk.dirs | 1 + dcmtk.docs | 3 + dcmtk.examples | 2 + dcmtk.install | 7 + dcmtk.maintscript | 4 + dcmtk.manpages | 1 + dcmtk.postinst | 69 ++ dcmtk.postrm | 29 + dcmtk.preinst | 40 + dcmtk.prerm | 23 + libdcmtk-dev.install | 4 + libdcmtk17t64.install | 2 + libdcmtk17t64.lintian-overrides | 5 + patches/01_dcmtk_3.6.0-1.patch | 81 ++ patches/02_system_charls.patch | 82 ++ patches/03_datadic_install.patch | 69 ++ patches/07_dont_export_all_executables.patch | 25 + patches/09_charls-2.0.patch | 326 ++++++ ...b12d8ea0b727f0fe2ab076b6f180100fbd30.patch | 178 ++++ ...ca4bf6f7c92fc16f9e66faf49409c891a2b0.patch | 90 ++ ...02ee9d8f27054ad0c463a6799d8b10b4864b.patch | 138 +++ ...e8577ff0974efcfae2907c48baf6023c1160.patch | 25 + patches/bigendian.patch | 102 ++ patches/bug1000220.patch | 44 + ...4e46e672ad21accf04da0dc085e43be6f5e1.patch | 55 ++ ...867513524664a1b03dfcf812d8b60fdd02cc.patch | 252 +++++ patches/series | 12 + patches/test_failures.patch | 195 ++++ rules | 93 ++ salsa-ci.yml | 16 + source/format | 1 + tests/control | 3 + tests/run-unit-test | 139 +++ upstream/metadata | 15 + watch | 4 + 46 files changed, 4163 insertions(+) create mode 100644 .directory create mode 100644 NEWS create mode 100644 changelog create mode 100644 control create mode 100644 copyright create mode 100644 dcmqrscp.default create mode 100644 dcmqrscp.init create mode 100644 dcmtk-doc.doc-base create mode 100644 dcmtk-doc.docs create mode 100644 dcmtk.NEWS create mode 100644 dcmtk.README.Debian create mode 100644 dcmtk.dirs create mode 100644 dcmtk.docs create mode 100644 dcmtk.examples create mode 100644 dcmtk.install create mode 100644 dcmtk.maintscript create mode 100644 dcmtk.manpages create mode 100644 dcmtk.postinst create mode 100644 dcmtk.postrm create mode 100644 dcmtk.preinst create mode 100644 dcmtk.prerm create mode 100644 libdcmtk-dev.install create mode 100644 libdcmtk17t64.install create mode 100644 libdcmtk17t64.lintian-overrides create mode 100644 patches/01_dcmtk_3.6.0-1.patch create mode 100644 patches/02_system_charls.patch create mode 100644 patches/03_datadic_install.patch create mode 100644 patches/07_dont_export_all_executables.patch create mode 100644 patches/09_charls-2.0.patch create mode 100644 patches/0cf6b12d8ea0b727f0fe2ab076b6f180100fbd30.patch create mode 100644 patches/1c8cca4bf6f7c92fc16f9e66faf49409c891a2b0.patch create mode 100644 patches/3ae202ee9d8f27054ad0c463a6799d8b10b4864b.patch create mode 100644 patches/ab61e8577ff0974efcfae2907c48baf6023c1160.patch create mode 100644 patches/bigendian.patch create mode 100644 patches/bug1000220.patch create mode 100644 patches/c34f4e46e672ad21accf04da0dc085e43be6f5e1.patch create mode 100644 patches/f06a867513524664a1b03dfcf812d8b60fdd02cc.patch create mode 100644 patches/series create mode 100644 patches/test_failures.patch create mode 100755 rules create mode 100644 salsa-ci.yml create mode 100644 source/format create mode 100644 tests/control create mode 100644 tests/run-unit-test create mode 100644 upstream/metadata create mode 100644 watch diff --git a/.directory b/.directory new file mode 100644 index 00000000..8fa2f8fd --- /dev/null +++ b/.directory @@ -0,0 +1,2 @@ +[URL properties] +ViewMode=fsview_part diff --git a/NEWS b/NEWS new file mode 100644 index 00000000..e9f36334 --- /dev/null +++ b/NEWS @@ -0,0 +1,24 @@ +dcmtk (3.6.1~20150924-1) unstable; urgency=medium + + With this new snapshot upstream removed the wwwapps tools and + perl scripts that were developed for the CAR 1996 modality showcase, and + that are largely unused and unsupported. + + -- Gert Wollny Tue, 01 Dec 2015 02:46:03 +0100 + +dcmtk (3.6.1~20150629-2) unstable; urgency=medium + + Version 3.6.1 has compatible change of the index.dat format that is not + backward compatible, and the current dcmtk is trashing the memory (one + byte of) when using dcmqrscp. All files in + + /var/lib/dcmtk/*/index.dat + + that are create with version 3.6.0 or before will be corrupted and + users need to reconstruct the db. + + The interested user might like to inspect the upstream commit + + http://git.dcmtk.org/web?p=dcmtk.git;a=commitdiff;h=c8423ab1fcf0273061462697b8eca56f894984c7 + + -- Andreas Tille Thu, 08 Oct 2015 13:06:03 +0200 diff --git a/changelog b/changelog new file mode 100644 index 00000000..4e1dfb86 --- /dev/null +++ b/changelog @@ -0,0 +1,927 @@ +dcmtk (3.6.7-13+rpi1) trixie-staging; urgency=medium + + * Disable stack clash protection, it causes assembler errors on raspbian. + + -- Peter Michael Green Wed, 19 Jun 2024 20:44:47 +0000 + +dcmtk (3.6.7-13) unstable; urgency=medium + + * Team upload. + * Marked Debian-specific patches as not needing forwarding to + upstream. + * d/control: add explicit dependency on libnsl-dev. Closes: #1066422. + + -- Michael R. Crusoe Tue, 19 Mar 2024 15:24:15 +0100 + +dcmtk (3.6.7-12) unstable; urgency=medium + + * Team upload. + + [ Emanuele Rocca ] + * Do not build-depend on graphviz on armhf and armel. The package is + currently not installable on those arches due to the ongoing t64 + transition. Closes: #1067147 + + -- Michael R. Crusoe Tue, 19 Mar 2024 12:30:03 +0100 + +dcmtk (3.6.7-11) unstable; urgency=medium + + * Fix typo in target distribution during upload. + + -- Sebastien Jodogne Tue, 19 Mar 2024 11:54:38 +0100 + +dcmtk (3.6.7-10) unreleased; urgency=medium + + * Fix build on armel. Closes: #1060104 + + -- Sebastien Jodogne Tue, 19 Mar 2024 11:03:28 +0100 + +dcmtk (3.6.7-9.1) unstable; urgency=medium + + * Non-maintainer upload. + * Rename libraries for 64-bit time_t transition. Closes: #1062022 + + -- Michael Hudson-Doyle Wed, 28 Feb 2024 01:17:02 +0000 + +dcmtk (3.6.7-9) unstable; urgency=medium + + * Team upload. + * Fix postrm + Closes: #1038776 + + -- Andreas Tille Thu, 22 Jun 2023 09:53:48 +0200 + +dcmtk (3.6.7-8) unstable; urgency=medium + + * d/patches: Fix CVE-2022-43272. Closes: #1027165 + * d/control: Bump Std-Vers to 4.6.2 no changes needed + + -- Mathieu Malaterre Wed, 04 Jan 2023 11:15:13 +0100 + +dcmtk (3.6.7-7) unstable; urgency=medium + + [ Andreas Tille ] + * Team upload. + * Prevent bashism in run-unit-test + * Enable running run-unit-test from any directory + * Add maintscript to remove outdated conffiles + Closes: #990134 + * On purge remove /var/lib/dcmtk/db/STORESCP if exists + Closes: #990135 + + [ Mathieu Malaterre ] + * d/control: Add missing dependency on libjs-jquery. Closes: #989108 + + -- Andreas Tille Tue, 06 Dec 2022 11:52:52 +0100 + +dcmtk (3.6.7-6) unstable; urgency=medium + + [ Mathieu Malaterre ] + * Team upload. + * d/control: libdcmtk4 is not present in o-o-stable + * d/postrm: Fix possible-bashism-in-maintainer-script + * d/patches: CVE-2022-2119 CVE-2022-2120. Closes: #1017743 + + [ Mohammed Bilal ] + * Add autopkgtests + * Bump Standards-Version to 4.6.1 (no changes needed) + + -- Mathieu Malaterre Mon, 22 Aug 2022 17:02:26 +0200 + +dcmtk (3.6.7-5) unstable; urgency=medium + + [ Gregory C. Sharp ] + * Change CMAKE_INSTALL_DATADIC to CMAKE_INSTALL_DATADIR in an attempt + to fix dictionary load failure + + -- Andreas Tille Fri, 17 Jun 2022 21:41:44 +0200 + +dcmtk (3.6.7-4) unstable; urgency=medium + + * Team upload. + * Fix install dir of dictionaries + Closes: #1012417 + + -- Andreas Tille Tue, 07 Jun 2022 09:05:06 +0200 + +dcmtk (3.6.7-3) unstable; urgency=medium + + * Source-only upload + * Breaks+Replaces: libdcmtk16 + + -- Andreas Tille Mon, 06 Jun 2022 19:39:49 +0200 + +dcmtk (3.6.7-2) unstable; urgency=medium + + * Team upload. + * Upstream has bumped SONAME thus rename binary package for shared + library + Closes: #1010536 + + -- Andreas Tille Wed, 04 May 2022 09:08:00 +0200 + +dcmtk (3.6.7-1) unstable; urgency=medium + + * Team upload. + * New upstream version + Closes: #1010474 + * Point watch file to Github + * Drop useless get-orig-source target (routine-update) + * Remove trailing whitespace in debian/changelog (routine-update) + * Remove trailing whitespace in debian/rules (routine-update) + * Drop debian/gbp.conf + * Install pkgconfig file + * Review d/copyright + * Drop unneeded lintian-override + + -- Andreas Tille Tue, 03 May 2022 10:28:02 +0200 + +dcmtk (3.6.6-6) UNRELEASED; urgency=medium + + * d/dcmtk.postrm: Added check to remove dcmtk user (Closes: #987972) + * d/dcmtk.postinst: Change dcmtk user shell to nologin + + -- Lance Lin Wed, 13 Apr 2022 19:36:57 +0700 + +dcmtk (3.6.6-5) unstable; urgency=medium + + * d/rules: Re-exposed --interleave-none option. Closes: #1001703 + * d/rules: Start using c++17 since default for GCC-11 + + -- Mathieu Malaterre Thu, 06 Jan 2022 16:33:20 +0100 + +dcmtk (3.6.6-4) unstable; urgency=medium + + * d/u/metadata: Add publication about DCMTK + * d/patches: Add new patch to fix random unit test failures + * d/control: Bump Std-Vers to 4.6.0, no changes needed + * d/watch: Update to latest uscan version + * d/rules: Remove as-needed-linker-flag + * d/control: Add missing Rules-Requires-Root: no + * d/patches: Import bug-fixes from git/master + + -- Mathieu Malaterre Wed, 08 Dec 2021 10:27:21 +0100 + +dcmtk (3.6.6-3) unstable; urgency=medium + + * d/patches: Fix compilation of dicomscope. Closes: #1000220 + * d/control: Add myself as Uploader + + -- Mathieu Malaterre Tue, 23 Nov 2021 08:15:20 +0100 + +dcmtk (3.6.6-2) unstable; urgency=medium + + * Team upload. + * d/patches: Fix unit test suite on big endian machine + + -- Mathieu Malaterre Thu, 18 Nov 2021 08:44:13 +0100 + +dcmtk (3.6.6-1) unstable; urgency=medium + + [ Andreas Tille ] + * Team upload. + * Remove patches thanks to a hint by Jörg Riesmeier (see #981326) + * Rename debian/.gitlab-ci.yml to debian/salsa-ci.yml to use a unique + name in all Debian Med packages + + [ Mathieu Malaterre ] + * d/rules: Set ICONV to OFF + * d/rules: Remove bogus setting of c++11 in d/rules + * d/rules: Prefer stdlibc (iconv) setting over ICU. Closes: #988417 + * d/rules: Prefer STL over DCMTK convenient copy + * d/rules: DCMTK_ENABLE_CHARSET_CONVERSION is an internal variable + * d/patches: Properly install dcm2xml.dtd/dumppat.txt. Closes: #993025 + + -- Mathieu Malaterre Wed, 17 Nov 2021 11:07:39 +0100 + +dcmtk (3.6.6-1~ext1) experimental; urgency=medium + + * d/ci: delete some generated files + * New upstream version 3.6.6 + * d/: Update so-version + * d/copyright: Add new files with specific copyright + + -- Gert Wollny Sun, 11 Apr 2021 17:24:39 +0200 + +dcmtk (3.6.5-1) unstable; urgency=medium + + * debian/control: switch to comat level 10 + * d/rules: don't install libcharls.so Closes: #971433 + Closes: #971412 + * d/control: cme fix dpkg + * d/compat: remove obsolete file + + -- Gert Wollny Tue, 10 Nov 2020 15:08:59 +0100 + +dcmtk (3.6.5-1~exp1) experimental; urgency=medium + + [ Andreas Tille ] + * Remove myself as Uploader + + [ Gert Wollny ] + * New upstream version 3.6.5 + * d/p: Update patches and remove 08 (applied upstream) + * Update SO version to 15 + * d/copyright: all-over year and new files + + -- Gert Wollny Fri, 20 Dec 2019 21:31:03 +0100 + +dcmtk (3.6.4-2.1) unstable; urgency=medium + + * Non-maintainer upload. + * Revert to convenient charls copy for now. Closes: #923433 + + -- Mathieu Malaterre Tue, 28 May 2019 21:39:19 +0200 + +dcmtk (3.6.4-2) unstable; urgency=medium + + * d/rules,d/p/03: Fix DATADIC path, Closes: #913304 + + -- Gert Wollny Sat, 19 Jan 2019 10:36:10 +0100 + +dcmtk (3.6.4-1) unstable; urgency=medium + + * d/p/09: Fix build with CharLS 2.0 + * Upload to unstable + + -- Gert Wollny Sat, 12 Jan 2019 16:10:06 +0100 + +dcmtk (3.6.4-1~exp1) experimental; urgency=medium + + [ Jelmer Vernooij ] + * Move source package lintian overrides to debian/source. + * Trim trailing whitespace. + + [ Gert Wollny ] + * New upstream version 3.6.4 + * d/p: Update patches for new release and remove old patches + * d/control: Update lib package name + * d/rules: Change dict install directory to new lib name + * d/dcmtk.postinst: Disable running chown recursively + * d/copyright: Add new libcmr files with non-OFFICE copyright + + -- Gert Wollny Sun, 23 Dec 2018 10:43:41 +0100 + +dcmtk (3.6.3-1~exp1) experimental; urgency=medium + + * d/* correct by running 'git fix dpkg' + * d/watch: update link (thanks Pedro Fernando Arizpe Gómez) + * New upstream version 3.6.3 + * d/patches: Update patches to apply to new version + * d/ .gitlab-ci.yml: Add this CI file + * p/d/03: Set DATDIC in CMakeLists.txt + * d/ Update SO version to 13 + * d/p/03: Correct install path + * d/copyright: Update for added and moved files + + -- Gert Wollny Sat, 11 Aug 2018 09:35:25 +0200 + +dcmtk (3.6.2-3) unstable; urgency=medium + + * d/control: Remove Juergen Salk from uploaders, Closes: #846787 + * d/p/08: set CANONICAL_HOST_TYPE from cmake, Closes: #859203 + * d/p/09: Fix format errors, Closes: #865418 + * d/p/10:Add fix for possible string overflow + + -- Gert Wollny Wed, 06 Sep 2017 10:09:08 +0000 + +dcmtk (3.6.2-2) unstable; urgency=medium + + * d/rules: install examples in arch-indep build to fix -A build + + -- Gert Wollny Tue, 22 Aug 2017 12:46:09 +0000 + +dcmtk (3.6.2-1) unstable; urgency=medium + + * Upload to unstable + * d/control: Standards version 4.1.0 (no changes needed) + + -- Gert Wollny Tue, 22 Aug 2017 10:05:31 +0000 + +dcmtk (3.6.2-1~exp1) experimental; urgency=medium + + * Update d/watch + * New upstream version 3.6.2 Closes: #868867 + * d/p/* refresh patches + * drop d/p/09_ because it was applied upstream + * s/* update SO version + * d/copyright: add new files to copyright + * d/rules: drop more test programs and add manpage for msgserv + * d/rules enable use of C++11 features + * d/control: Add build dependency on help2man + + -- Gert Wollny Wed, 02 Aug 2017 13:48:47 +0000 + +dcmtk (3.6.1~20170228-2) unstable; urgency=medium + + * d/p/09: Improve numerical stability by rounding the time to + the six decimal digits supported by dicom. Closes: #859204 + #865452 + * d/control: Correct dependency on libssl-dev for libdcmtk-dev + * d/control: Update standards version (no action needed) + * d/control: cme fix dpkg-control + + -- Gert Wollny Thu, 22 Jun 2017 07:55:04 +0000 + +dcmtk (3.6.1~20170228-1) unstable; urgency=medium + + * Upload to unstable Closes: #747167 + * d/rules: correctly enabling private tags, Closes: #859201 + * d/rules: enable C++11 build + + -- Gert Wollny Tue, 20 Jun 2017 18:58:39 +0000 + +dcmtk (3.6.1~20170228-1~exp1) experimental; urgency=medium + + [ Gert Wollny ] + * Set dependency to libssl-dev, Closes: #851083 + * Update patches to new upstream + * d/p/02: correct calls to JpegLsEncode because system CharLS + interface of the bundled version differs from Debian version + * New upstream version 3.6.1~20170228 + * Change to libdcmtk11 because of soname change + * Remove d/p/09 patch + * d/* Update package names and build rules to new SO-version + * d/copyright: mention Frank Vanden Berghen and his AFPL license + Thanks for spotting this: Thorsten Alteholz + * d/control: update self e-mail address in uploaders + * d/copyright: Add copyright information for new files + + [ Mathieu Malaterre ] + * d/control: Remove self from Uploaders + + -- Gert Wollny Mon, 20 Feb 2017 13:15:40 +0100 + +dcmtk (3.6.1~20160216-2) unstable; urgency=medium + + * d/p/08: remove SYSTEM_PROCESSOR usage for reproducible builds + * d/p/09: add patch to enable compileing against openssl-1.1 + Closes: #828281 + * d/p/04: update patch to remove duplicate entries + * d/rules: add hardening flags + * d/control: change conflict with libinsighttoolkit4-dev to breaks + + -- Gert Wollny Sun, 03 Jul 2016 13:58:34 +0000 + +dcmtk (3.6.1~20160216-1) experimental; urgency=medium + + [ Gert Wollny ] + * New upstream version + * d/p/*: rebase patches + * d/p/06: Update patch to use ABI version as part of the library name + * d/*: Update files to correspond to new soversion 8. + Jumping from 5 to 8 because upstream uses 8. + * d/copyright: Update copyright information + * d/control: update standards version to 3.9.8 + * d/control + d/rules: drop dbg package in favour of antomatic ones + + [ Mattia Rizzolo ] + * d/control: Use secure URIs (https) in Vcs-Git. + * d/libdcmtk5.dirs: removed as useless. + * d/dcmtk.preinst: 'set -e' in the script instead of the shebang, + fixes lintian's maintainer-script-without-set-e + + -- Gert Wollny Sun, 08 May 2016 21:59:06 +0000 + +dcmtk (3.6.1~20150924-5) unstable; urgency=medium + + * d/libdcmtk-dev revert last change since ITK-4.9 now supports + properly the dcmtk*.cmake files. + * d/control: conflict with older versions of libinsighttoolkit-dev + + -- Gert Wollny Sat, 30 Jan 2016 23:11:21 +0100 + +dcmtk (3.6.1~20150924-4) unstable; urgency=medium + + * Do not install DCMTK*.cmake files, they break things. + cmake's FindDCMTK handles this case better without these files. + + -- Gert Wollny Tue, 05 Jan 2016 21:42:56 +0100 + +dcmtk (3.6.1~20150924-2) unstable; urgency=medium + + * Update internal use of DCMDICT path Closes: #807691 + * Correct Apache-2.0 copyright + + -- Gert Wollny Fri, 11 Dec 2015 17:42:45 +0100 + +dcmtk (3.6.1~20150924-1) unstable; urgency=medium + + * New upstream version + * Move vcs to git + * Remove dcmtk-www, because it is no longer provided by upstream + * Because of ABI change rename library package to libdcmtk5 + * Add libcharls-dev to libdcmtk-dev dependencies (reason: see below) + + -- Gert Wollny Tue, 01 Dec 2015 02:46:03 +0100 + +dcmtk (3.6.1~20150629-7) unstable; urgency=medium + + * d/control: Add more dependencies to libdcmtk-dev, because the + cmake based build system creates a cmake use file that pulls in + these libraries for linking. + + -- Gert Wollny Sun, 29 Nov 2015 21:16:37 +0100 + +dcmtk (3.6.1~20150629-6) unstable; urgency=medium + + * Change Provides:libdcmtk-dev to Provides:libdcmtk2-dev Closes: #805718 + + -- Gert Wollny Sat, 21 Nov 2015 13:58:54 +0100 + +dcmtk (3.6.1~20150629-5) unstable; urgency=medium + + * d/control: Add conflict/replace for libdcmtk4-dev + + -- Gert Wollny Thu, 12 Nov 2015 13:30:12 +0100 + +dcmtk (3.6.1~20150629-4) unstable; urgency=medium + + * Add patch soversion_abi.patch to change not only the library file + name but also in the cmake related files. + * Add patch dont_export.. to not export all executables for cmake + Closes: #803304 + * d/rules: remove code to add abi-suffix to libraries on install + * Add Gert Wollny to uploaders + + -- Gert Wollny Thu, 29 Oct 2015 11:51:54 +0100 + +dcmtk (3.6.1~20150629-3) unstable; urgency=medium + + * Adapt prerm script for dash + Closes: #803008 + * small DEP5 fixes + + -- Andreas Tille Mon, 26 Oct 2015 12:11:22 +0100 + +dcmtk (3.6.1~20150629-2) unstable; urgency=medium + + * debian/copyright: DEP5 + * unversioned -dev package + Closes: #800481 + * Inform users about non-backward compatible changes in dcmtk database + when using dcmqrscp + Closes: #799039 + * suppress lintian warnings no-symbols-control-file + * create empty dir /var/lib/dcmtk/db in package + Closes: #801735 + + -- Andreas Tille Fri, 23 Oct 2015 23:29:57 +0200 + +dcmtk (3.6.1~20150629-1) unstable; urgency=medium + + * New upstream version + * cme fix dpkg-control + * libdcmtk4-dev conflicts libdcmtk2-dev + Closes: #769151 + * Do gcc-5 transition on new version + * Conflicts/Replaces: libdcmtk3 + Closes: #754583 + * Do not hardcode path to invoke-rc.d in maintainer scripts + * Fix apache configuration (thanks for the patch to HAYASHI Kentaro + ) + Closes: #779700 + * Apply patch to fix performance problem (thanks for the patch to + Sebastien Jodogne ) + Closes: #785400) + * Enable reproducible build (Thanks for the patch to Maria Valentina Marin + ) + Closes: #790133 + + -- Andreas Tille Sun, 13 Sep 2015 20:31:57 +0200 + +dcmtk (3.6.1~20140617-3) experimental; urgency=low + + * Fix building/running on sparc. + * Really remove md5 files from doxygen HTML output + + -- Mathieu Malaterre Mon, 07 Jul 2014 09:09:49 +0200 + +dcmtk (3.6.1~20140617-2) experimental; urgency=low + + * Fix SIGSEGV on sparc + * Fix removal of md5 files on buildds + + -- Mathieu Malaterre Tue, 01 Jul 2014 11:15:54 +0200 + +dcmtk (3.6.1~20140617-1) experimental; urgency=low + + * New snapshot. Use ABI=4 as per upstream + * Refreshed patches, removed applied upstream + + -- Mathieu Malaterre Wed, 18 Jun 2014 08:44:51 +0200 + +dcmtk (3.6.1~20131114-7) experimental; urgency=low + + * Bump Std-Vers to 3.9.5, no changes needed + * Fix failing SCP test. Closes: #740342 + + -- Mathieu Malaterre Fri, 28 Feb 2014 13:19:20 +0100 + +dcmtk (3.6.1~20131114-6) experimental; urgency=low + + * Remove non-ASCII char. Closes: #732673 + * Fix setuid return value. Closes: #731434 + * Update old copyright. Closes: #732672 + + -- Mathieu Malaterre Thu, 27 Feb 2014 17:33:18 +0100 + +dcmtk (3.6.1~20131114-5) experimental; urgency=low + + * Increase timeout a little to fix issue on s390x + + d/p/timeout.patch + + -- Mathieu Malaterre Fri, 20 Dec 2013 11:02:48 +0100 + +dcmtk (3.6.1~20131114-4) experimental; urgency=low + + * Import patch from git (upstream) + + -- Mathieu Malaterre Thu, 19 Dec 2013 17:33:18 +0100 + +dcmtk (3.6.1~20131114-3) experimental; urgency=low + + * Another round of compilation fixes. Closes: #731434 + * Fix installation. Closes: #731752 + * Another attempt at fixing test. Closes: #730582 + + -- Mathieu Malaterre Tue, 10 Dec 2013 15:15:52 +0100 + +dcmtk (3.6.1~20131114-2) experimental; urgency=low + + * Fix failing test (ofstd_markup_6). Closes: #730582 + * Remove some spelling error in man pages. Closes: #730635 + * Remove CMake overriding our compilation flags. Closes: #730636 + + -- Mathieu Malaterre Thu, 05 Dec 2013 12:50:28 +0100 + +dcmtk (3.6.1~20131114-1) experimental; urgency=low + + * New snapshot. Closes: #723091, #715039 + * Refresh patches + + -- Mathieu Malaterre Fri, 22 Nov 2013 19:55:25 +0100 + +dcmtk (3.6.1~20121102-5) experimental; urgency=low + + * Fix jquery.js removal when executing build-indep + + -- Mathieu Malaterre Wed, 04 Sep 2013 09:08:29 +0200 + +dcmtk (3.6.1~20121102-4) experimental; urgency=low + + * Fix buffer overflow in StudyInstanceUID. Closes: #715011 + * Fix apache 2.4 transition. Closes: #669740 + * Fix -doc installation. Closes: #717968 + + -- Mathieu Malaterre Mon, 02 Sep 2013 11:13:46 +0200 + +dcmtk (3.6.1~20121102-3) experimental; urgency=low + + * fix lintian warning about jquery.js (doxygen generated) + * remove internal tests suite from dcmtk package + * cope with cmake and #701231 + * Update patch d/p/bug706062.patch. Closes: #706062 + * Upgrade for apache 2.4. Closes: #669740 + + -- Mathieu Malaterre Wed, 19 Jun 2013 13:51:22 +0200 + +dcmtk (3.6.1~20121102-2) experimental; urgency=low + + * Install *.dic to versioned dir (See #709123) + * Add preliminary work to get iconv support + + -- Mathieu Malaterre Fri, 31 May 2013 17:39:30 +0200 + +dcmtk (3.6.1~20121102-1) experimental; urgency=low + + * Use new dh syntax + * Run w-a-s. Use B-D-I for doxygen + * Switch to cmake build system (allows parallel builds). Closes: #701801 + * Use system CharLS. Closes: #705923 + * Use SOP class uid with option. Closes: #706062 + + -- Mathieu Malaterre Wed, 15 May 2013 10:34:58 +0200 + +dcmtk (3.6.0-13) unstable; urgency=low + + * Remove d/README.source, since source-format 3.0 + * Update dcmtk-www README for install instructions + * Remove obsolete DMUA flag + * Bump Std-Vers to 3.9.4, no changes needed + * Provide a debug package. Closes: #690733 + * Fix SIGSEGV. Closes: #703716 + + -- Mathieu Malaterre Wed, 15 May 2013 10:10:29 +0200 + +dcmtk (3.6.0-12) unstable; urgency=low + + [ Andrey Rahmatullin ] + * Fix underlinked libraries. Closes: #677721 + - debian/patches/underlink.patch + + -- Mathieu Malaterre Thu, 20 Dec 2012 13:20:45 +0100 + +dcmtk (3.6.0-11) unstable; urgency=low + + * Fix compilation with gcc 4.7. Closes: #674361 + - debian/patches/bug674361.patch + * Make sure to link against libxml2. Closes: #510120 + * Fix some underlinking. Closes: #674586 + - debian/patches/underlink.patch + + -- Mathieu Malaterre Thu, 31 May 2012 11:31:16 +0200 + +dcmtk (3.6.0-10) unstable; urgency=low + + [ Andreas Tille ] + * debian/dcmtk.prerm: when purging dirs in /var/lib need to be + removed in advance. Closes: #660346 + + [ Mathieu Malaterre ] + * Use libpng-dev. Closes: #662296 + * Use libtiff-dev for transition to tiff5 + * Bump Std-Vers to 3.9.3. No changes needed + + -- Mathieu Malaterre Tue, 06 Mar 2012 23:01:59 +0100 + +dcmtk (3.6.0-9) unstable; urgency=low + + * Remove dot wrapper, not required anymore. + * Generate doc using svg instead of png to save disk space + * Fix compilation. Thanks to Bhavani Shankar. Closes: #646316 + * Fix VCS URLs + + -- Mathieu Malaterre Wed, 23 Nov 2011 16:31:18 +0100 + +dcmtk (3.6.0-8) unstable; urgency=low + + * Adding a storescp daemon + * Remove convenient copy of CharLS. Closes: #631100 + + -- Mathieu Malaterre Tue, 19 Jul 2011 17:08:19 +0200 + +dcmtk (3.6.0-7) unstable; urgency=low + + * Add a patch (from current git/master) to fix a regression. Closes: #630781 + * Another fix to remove symlink only if exists + * Remove deprecated lintian override + + -- Mathieu Malaterre Fri, 17 Jun 2011 14:43:37 +0200 + +dcmtk (3.6.0-6) unstable; urgency=low + + * Make sure OFFIS_DCMTK_VERSION_NUMBER is really a number. Closes: #628168 + * Update Standard Version to 3.9.2. No changes needed + * Fix some lintian errors in control file + * Fix piuparts reports on remaining dcmtk apache configuration file + + -- Mathieu Malaterre Tue, 31 May 2011 23:28:12 +0200 + +dcmtk (3.6.0-5) unstable; urgency=low + + * Fix invalid dep. to apache with apache2 + * Remove explicit `invoke-rc.d dcmqrscp stop` since it makes package + un-removable. Let dh_installinit handles it + + -- Mathieu Malaterre Mon, 28 Mar 2011 15:33:06 +0200 + +dcmtk (3.6.0-4) unstable; urgency=low + + * new release fixes segfault. Closes: #615977 + * Update README. Closes: #618686 + * 3.6.0 is already packaged. Closes: #610855 + * Update postrm script. Closes: #618688 + + -- Mathieu Malaterre Thu, 17 Mar 2011 17:32:48 +0100 + +dcmtk (3.6.0-3) unstable; urgency=low + + * Properly conflict with dcmtk 3.5.4 and libdcmtk2 + * Remove reference to issue with UNIX FHS + + -- Mathieu Malaterre Tue, 08 Mar 2011 17:14:24 +0100 + +dcmtk (3.6.0-2) experimental; urgency=low + + * Update copyright to reflects 3.6.0 changes + * Update dcmtk.NEWS to reflects 3.6.0 news + * Minor update to dcmtk.README.Debian for build instructions + * Minor cosmetic changes to the patch series + + -- Mathieu Malaterre Tue, 08 Feb 2011 19:20:13 +0100 + +dcmtk (3.6.0-1) experimental; urgency=low + + [ Mathieu Malaterre ] + * New upstream: 3.6.0 + * Update SONAME to 2.0.0 because of change in log4cplus::Logger::addAppender + * Fix lintian errors on misc:Depends + * Fix lintian errors on init.d script + * Add a patch to link wth png/tiff libraries + * Update perl path patch + * debian/control: Update standards-version to 3.9.1 + * Fix new naming convention for this release + * Add get-orig-source target in rules file + * Fix CHANGES numbering into something more flexible for later revs. + * Move *.dic file to the libdcmtk2 package + * Switch to dpkg-source 3.0 (quilt) format + + [ Andreas Tille ] + * make sure *.dic file shwo up only in libdcmtk2 package + * Add -f to rm statement in clean target + + -- Andreas Tille Fri, 04 Feb 2011 22:24:40 +0100 + +dcmtk (3.5.4-4) unstable; urgency=low + + [Andreas Tille] + * Group maintenance according to Debian Med group policy + * Added myself as Uploader + * VCS fields + * Standards-Version: 3.8.3 (Added README.source) + * debhelper >= 7 + * Add passive mode to watch file + * make use of dh_install + * debian/patches/05_no_www_docs.patch: Just do not install those + files we do not need in the docs of the package in the first + place instead of removing them later + * Removed some lintian warnings + * debian/patches/06_old_patches_from_diff_gz.patch: Move changes + from diff.gz to quilt patches + * Remove unused config files from previous versions according to + http://wiki.debian.org/DpkgConffileHandling + (The former handling in preinst triggered a lintian error) + * debian/dcmtk.NEWS: Reformating according to developers reference + 6.3.4. Supplementing changelogs with NEWS.Debian files + * debian/{01_buildsystem_changes,01_fix_perl_script_path,02_dcmtk_3.5.4-3}.patch + split up patches of former maintainer into maintainable pieces + * Build-Depends: graphviz + * debian/dot: Hack to enable png:gd graphics in doxygen which was + told to be more compact and readable. The hack contains also + working code to create SVG, but I failed to patch the HTML files + to render SVG files + * debian/libdcmtk1.lintian-overrides: we bundle more than + one library in this package so the warning is void + * debian/rules: Try to make backups of original files in config + but failed for two remaining files (no idea why) + * Move all files of dcmtk-www to /usr/lib/dcmtk/cgi-bin and + provide apache configuration which enable easy access via + http://localhost/dcmtk_wlm/ + Closes: #553495 + + [Mathieu Malaterre] + * debian/rules would not honor DEB_BUILD_OPTIONS=nostrip, since + original Makefiles would hardcode call to `strip` directly + instead rely on dh_strip instead and remove direct call to + `strip` from Makefiles. + Closes: #511668, #436758 + + -- Andreas Tille Wed, 02 Dec 2009 09:54:56 +0100 + +dcmtk (3.5.4-3) unstable; urgency=low + + * debian/control: Update standards-version to 3.7.2 + * debian/dcmqrscp.init: Add LSB keyword section + * dcmnet/apps/{findscu,movescu}.cc: Apply patches in order + to fix --add-override-key bug (reported by Mike Miller + ) + Closes: #429041 + * debian/dcmtk.prerm: Stop dcmqrscp/imagectn more sanely + * debian/control: Replace ${Source-Version} by ${binary:Version} + + -- Juergen Salk Sun, 22 Jul 2007 20:41:22 +0200 + +dcmtk (3.5.4-2) unstable; urgency=low + + * debian/control: Added build dependency on autotools-dev + * debian/rules: Modified clean target to put config.{sub,guess} below ./config + * dcmdata/libsrc/Makefile.in: Modified distclean target to delete dicom.tmp as well + * debian/rules: Fixed installation path for include files + * debian/dcmtk.postinst: Fixed add{user,group} options to reveal possible error msgs + (reported by Lars Wirzenius ) + Closes: #353288 + * debian/control: Removed 'Uploaders: field. + | From: Pablo Sau + | Subject: Re: dcmtk + | Date: Thu, 19 Jan 2006 16:41:06 +0100 + | To: Juergen Salk + | Hi Juergen: + | > I am still keeping you as an active co-maintainer for the Debian + | > dcmtk packages in the debian/control file. Would you mind, if I + | > drop your name from the control file in one of the next releases? + | > + | Of course, you must do it! + | Thanks for your support of dcmtk and best regards. + | Pablo + + -- Juergen Salk Sun, 15 Jan 2006 17:31:38 +0000 + +dcmtk (3.5.4-1) unstable; urgency=low + + * New upstream release + * debian/dcmtk.NEWS: Added + * debian/copyright: Updated according to upstream's COPYRIGHT file + * debian/control: Unversioned build-dependency on libssl (now uses + OPENSSL_VERSION_NUMBER macro) + * debian/rules: Incremented SONAME version number (DcmFileFormat::loadFile changed) + * debian/rules: Changed dh_installinit --name argument to dcmqrscp + * debian/README.debian: Updated to reflect imagectn -> dcmqrscp transition + * debian/dcmtk.postinst: Added code for imagectn -> dcmqrscp transition + * debian/dcmtk.preinst: Created to handle imagectn -> dcmqrscp transition + * debian/dcmtk.postrm: Created to handle imagectn -> dcmqrscp transition + * debian/imagectn.init: Replaced by dcmqrscp.init + * debian/imagectn.default: Replaced by dcmqrscp.default + * debian/dcmtk.postinst: Added code to handle dcmtk user/group creation more sanely + * debian/control: Adjusted 'Maintainer:' field + * config/Makefile.def: Adjusted datadir and docdir + * dcmdata/libsrc/Makefile.in: Fixed bug for dicom.dic installation path + * dcmdata/apps/Makefile.in: Adjusted dcm2xml.dtd and dumppat.txt install paths + * dcmsr/apps/Makefile.in: Adjusted dsr2xml.xsd install path + * dcmwlm/perl/*.p[lh]: Adjusted perl hashbangs in CGI scripts + * dcmwlm/perl/prefs.ph: Adjusted cgi_path, html_path and data_path + * dcmqrdb/etc/dcmqrscp.cfg: Added UserName/GroupName config parameters + * dcmqrdb/etc/dcmqrscp.cfg: Commented out and adjusted example configuration + * dcmqrdb/docs/dcmqrcnf.txt: Adjusted UserName/GroupName examples + * dcmwlm/wlistdb/OFFIS: Added newline to prevent lintian "zero-bye" warning + + -- Juergen Salk Tue, 20 Dec 2005 20:29:15 +0000 + +dcmtk (3.5.3-5) unstable; urgency=low + + * ./dcmsign/libsrc/sicert.cc: Constified d2i_X509 argument to fix build + problems with libssl-0.9.8 + Closes: #335399 + * debian/control: Versioned build-depend on libssl (>= 0.9.8-1) + * ./dcmnet/etc/storescp.cfg: Added missing Verification SOP Class + + -- Juergen Salk Mon, 24 Oct 2005 20:16:56 +0000 + +dcmtk (3.5.3-4) unstable; urgency=low + + * debian/control: Added dependency on adduser for dcmtk package + * debian/control: Update Standards-Version to 3.6.2 + * debian/{control,rules}: Renamed libdcmtk0 to libdcmtk0c2 (gcc/g++-4.0 transition) + * debian/control: Added Conflicts/Replaces with previous non-c2 version + * config/{configure.in,aclocal.m4,include/cfunix.h.in}, + ofstd/libsrc/ofthread.cc: Backport HAVE_POINTER_TYPE_PTHREAD_T patch + from CVS version to fix build problems with gcc/g++-4.0 + + -- Juergen Salk Sun, 22 May 2005 22:02:31 +0200 + +dcmtk (3.5.3-3) unstable; urgency=low + + * debian/rules: Utilized binary-indep target for -doc package + (suggested by Marc 'HE' Brockschmidt ) + * debian/rules: Introduced {build,install}-{indep,arch} targets + * debian/rules: Removed unneeded dh_* calls from binary-arch target + * Removed stale debian/*.install files + + -- Juergen Salk Mon, 25 Apr 2005 20:13:09 +0200 + +dcmtk (3.5.3-2) unstable; urgency=medium + + * Added imagectn UserName/GroupName security patch + * Modified imagectn.cfg to reflect imagectn patch + * Modified debian/rules to create imagectn storage area + * Updated imagectn/docs/ctnconf.txt + * Fixed parser bug in CNF_readConfigLines() + (reported by R.M. Rutschmann ) + * Added debian/dcmtk.postinst script to create dcmtk system user/group + * Added debian/imagectn.init and debian/imagectn.default + (suggested by R.M. Rutschmann ) + * Updated debian/README.Debian + * Removed stale lintian override file + * Swapped 'Maintainer:' and 'Uploaders:' field + | From: Pablo Sau + | Subject: Re: New (inofficial) dcmtk packages available + | Date: Thu, 31 Mar 2005 16:44:50 +0200 + | > >> Why is Juergen "not official"? + | > > Historical reasons. It was Pablo who has filed the ITP for dcmtk + | > > initially. That's why we assigned maintainership to him for the + | > > first release. + | > If I understand Pablo right than he agreed that you will be put + | > in the Maintainer field. Pablo, correct me if I'm wrong. + | Yes of course,I filed the ITP for dcmtk initially but absolutely all + | work has been made by Juergen, so I think he must to be in the + | Maintainer field. + | Thanks Juergen for your great work and best regards to all of you. + + -- Juergen Salk Sat, 19 Mar 2005 22:58:21 +0100 + +dcmtk (3.5.3-1) unstable; urgency=low + + * Initial Release. + Closes: #278914 + * Adjusted toplevel Makefile and config/Makefile.def.in to fix $DESTDIR problems + * Fixed bug in config/configure.in for DCM_DICT_DEFAULT_PATH + * Modified dcmdata/libsrc/Makefile.in to adjust dicom.dic install path + * Modified dcmdata/apps/Makefile.in to adjust dcm2xml.dtd and dumppat.txt install paths + * Modified dcmsr/apps/Makefile.in to adjust dsr2xml.xsd install path + * Modified dcmwlm/Makefile.in to prevent wwwapps from being installed in ${bindir}. + * Set GENERATE_HTMLHELP = NO in doxygen/htmldocs to avoid index.hh?.gz cruft + * Adjusted hashbangs in dcmwlm/perl CGI scripts + * Adjusted cgi_path, html_path and data_path in dcmwlm/perl/prefs.ph + * Added newline in dcmwlm/wlistdb/OFFIS to prevent lintian "zero-bye" warning + + -- Juergen Salk Sat, 30 Oct 2004 11:02:48 +0200 diff --git a/control b/control new file mode 100644 index 00000000..cbb7fd57 --- /dev/null +++ b/control @@ -0,0 +1,101 @@ +Source: dcmtk +Maintainer: Debian Med Packaging Team +Uploaders: Gert Wollny , + Mathieu Malaterre +Section: science +Priority: optional +Build-Depends: dpkg-dev (>= 1.22.5), cmake, + debhelper-compat (= 13), + gettext, + help2man, + libpng-dev, + libsndfile1-dev, + libssl-dev, + libtiff-dev, + libwrap0-dev, + libnsl-dev, + libxml2-dev, + zlib1g-dev +Build-Depends-Indep: doxygen, + graphviz [!armhf !armel] +Standards-Version: 4.6.2 +Vcs-Browser: https://salsa.debian.org/med-team/dcmtk +Vcs-Git: https://salsa.debian.org/med-team/dcmtk.git +Homepage: https://dicom.offis.de/dcmtk +Rules-Requires-Root: no + +Package: dcmtk +Architecture: any +Depends: adduser, + ${misc:Depends}, + ${shlibs:Depends} +Description: OFFIS DICOM toolkit command line utilities + DCMTK includes a collection of libraries and applications for examining, + constructing and converting DICOM image files, handling offline media, + sending and receiving images over a network connection, as well as + demonstrative image storage and worklist servers. + . + This package contains the DCMTK utility applications. + . + Note: This version was compiled with libssl support. + +Package: libdcmtk17t64 +Provides: ${t64:Provides} +Architecture: any +Section: libs +Depends: ${misc:Depends}, + ${shlibs:Depends} +Breaks: libdcmtk17 (<< ${source:Version}), libdcmtk16 (= 3.6.7-1) +Replaces: libdcmtk17, libdcmtk16 (= 3.6.7-1) +Multi-Arch: same +Description: OFFIS DICOM toolkit runtime libraries + DCMTK includes a collection of libraries and applications for examining, + constructing and converting DICOM image files, handling offline media, + sending and receiving images over a network connection, as well as + demonstrative image storage and worklist servers. + . + This package contains the runtime libraries for the DCMTK utility + applications. + . + Note: This version was compiled with libssl support. + +Package: libdcmtk-dev +Architecture: any +Section: libdevel +Depends: libdcmtk17t64 (= ${binary:Version}), + libpng-dev, + libssl-dev, + libtiff-dev, + libwrap0-dev, + libnsl-dev, + libxml2-dev, + ${misc:Depends} +Suggests: dcmtk-doc +Provides: libdcmtk17-dev +Description: OFFIS DICOM toolkit development libraries and headers + DCMTK includes a collection of libraries and applications for examining, + constructing and converting DICOM image files, handling offline media, + sending and receiving images over a network connection, as well as + demonstrative image storage and worklist servers. + . + This package contains development libraries and headers for DCMTK. You + only need to install this if you are developing programs that use the + DCMTK libraries. + . + Note: This version was compiled with libssl support. + +Package: dcmtk-doc +Architecture: all +Section: doc +Depends: ${misc:Depends}, libjs-jquery +Suggests: dcmtk, + libdcmtk-dev +Multi-Arch: foreign +Description: OFFIS DICOM toolkit documentation + DCMTK includes a collection of libraries and applications for examining, + constructing and converting DICOM image files, handling offline media, + sending and receiving images over a network connection, as well as + demonstrative image storage and worklist servers. + . + This package contains the on-line documentation for the DCMTK libraries + and utilities in HTML format. diff --git a/copyright b/copyright new file mode 100644 index 00000000..4e05b0a9 --- /dev/null +++ b/copyright @@ -0,0 +1,566 @@ +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: DCMTK +Upstream-Contact: DCMTK Team +Source: https://github.com/commontk/DCMTK + +Files: * +Copyright: 1994-2019, OFFIS e.V. +License: OFFISeV + +Files: dcmnet/include/dcmtk/dcmnet/dimse.h + dcmnet/include/dcmtk/dcmnet/assoc.h + dcmnet/include/dcmtk/dcmnet/dicom.h + dcmnet/include/dcmtk/dcmnet/dcompat.h + dcmnet/include/dcmtk/dcmnet/diutil.h + dcmnet/libsrc/dimstore.cc + dcmnet/libsrc/assoc.cc + dcmnet/libsrc/dulextra.cc + dcmnet/libsrc/dcompat.cc + dcmnet/libsrc/diutil.cc + dcmnet/libsrc/dimcmd.h + dcmnet/libsrc/dimfind.cc + dcmnet/libsrc/dimse.cc + dcmnet/libsrc/dimcmd.cc + dcmnet/libsrc/dimcancl.cc + dcmnet/libsrc/dimecho.cc + dcmnet/libsrc/dimmove.cc +Copyright: 1993/1994, OFFIS, Oldenburg University and CERIUM +License: OFFIS + This software and supporting documentation were + developed by + . + Institut OFFIS + Bereich Kommunikationssysteme + Westerstr. 10-12 + 26121 Oldenburg, Germany + . + Fachbereich Informatik + Abteilung Prozessinformatik + Carl von Ossietzky Universitaet Oldenburg + Ammerlaender Heerstr. 114-118 + 26111 Oldenburg, Germany + . + CERIUM + Laboratoire SIM + Faculte de Medecine + 2 Avenue du Pr. Leon Bernard + 35043 Rennes Cedex, France + . + for CEN/TC251/WG4 as a contribution to the Radiological + Society of North America (RSNA) 1993 Digital Imaging and + Communications in Medicine (DICOM) Demonstration. + . + THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND NEITHER OFFIS, + OLDENBURG UNIVERSITY NOR CERIUM MAKE ANY WARRANTY REGARDING + THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY OR + FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER + DISEASES OR ITS CONFORMITY TO ANY SPECIFICATION. THE + ENTIRE RISK AS TO QUALITY AND PERFORMANCE OF THE SOFTWARE + IS WITH THE USER. + . + Copyright of the software and supporting documentation + is, unless otherwise stated, jointly owned by OFFIS, + Oldenburg University and CERIUM and free access is hereby + granted as a license to use this software, copy this + software and prepare derivative works based upon this + software. However, any distribution of this software + source code or supporting documentation or derivative + works (source code and supporting documentation) must + include the three paragraphs of this copyright notice. + +Files: dcmnet/include/dcmtk/dcmnet/dul.h + dcmnet/include/dcmtk/dcmnet/dulstruc.h + dcmnet/libsrc/dul.cc + dcmnet/libsrc/dulconst.cc + dcmnet/libsrc/dulpriv.h + dcmnet/libsrc/dulpres.cc + dcmnet/libsrc/dulfsm.h + dcmnet/libsrc/dulfsm.cc + dcmnet/libsrc/dulparse.cc +Copyright: 1993, 1994 RSNA and Washington University + 1994-2021, OFFIS e.V. +License: RSNA + The software and supporting documentation for the Radiological + Society of North America (RSNA) 1993, 1994 Digital Imaging and + Communications in Medicine (DICOM) Demonstration were developed + at the + Electronic Radiology Laboratory + Mallinckrodt Institute of Radiology + Washington University School of Medicine + 510 S. Kingshighway Blvd. + St. Louis, MO 63110 + as part of the 1993 DICOM Central Test Node project for, and + under contract with, the Radiological Society of North America. + . + THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND NEITHER RSNA NOR + WASHINGTON UNIVERSITY MAKE ANY WARRANTY ABOUT THE SOFTWARE, ITS + PERFORMANCE, ITS MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR + USE, FREEDOM FROM ANY COMPUTER DISEASES OR ITS CONFORMITY TO ANY + SPECIFICATION. THE ENTIRE RISK AS TO QUALITY AND PERFORMANCE OF + THE SOFTWARE IS WITH THE USER. + . + Copyright of the software and supporting documentation is + jointly owned by RSNA and Washington University, and free access + is hereby granted as a license to use this software, copy this + software and prepare derivative works based upon this software. + However, any distribution of this software source code or + supporting documentation or derivative works (source code and + supporting documentation) must include the three paragraphs of + the copyright notice. + +Files: dcmjpeg/libijg8/* + dcmjpeg/libijg12/* + dcmjpeg/libijg16/* +Copyright: 1991-1998, Thomas G. Lane. +License: JPEG + The authors make NO WARRANTY or representation, either express or implied, + with respect to this software, its quality, accuracy, merchantability, or + fitness for a particular purpose. This software is provided "AS IS", and you, + its user, assume the entire risk as to its quality and accuracy. + . + Permission is hereby granted to use, copy, modify, and distribute this + software (or portions thereof) for any purpose, without fee, subject to these + conditions: + (1) If any part of the source code for this software is distributed, then this + README file must be included, with this copyright and no-warranty notice + unaltered; and any additions, deletions, or changes to the original files + must be clearly indicated in accompanying documentation. + (2) If only executable code is distributed, then the accompanying + documentation must state that "this software is based in part on the work of + the Independent JPEG Group". + (3) Permission for use of this software is granted only if the user accepts + full responsibility for any undesirable consequences; the authors accept + NO LIABILITY for damages of any kind. + . + These conditions apply to any software derived from or based on the IJG code, + not just to the unmodified library. If you use our work, you ought to + acknowledge us. + . + Permission is NOT granted for the use of any IJG author's name or company name + in advertising or publicity relating to this software or products derived from + it. This software may be referred to only as "the Independent JPEG Group's + software". + . + We specifically permit and encourage the use of this software as the basis of + commercial products, provided that all warranty or liability claims are + assumed by the product vendor. + +Files: dcmimage/include/dcmtk/dcmimage/diqtpix.h +Copyright: 1991 by Jef Poskanzer. +License: pbmplus + Permission to use, copy, modify, and distribute this software and its + documentation for any purpose and without fee is hereby granted, provided + that the above copyright notice appear in all copies and that both that + copyright notice and this permission notice appear in supporting + documentation. This software is provided "as is" without express or + implied warranty. +Comment: The code for the interpolatePixel() image scaling algorithm in module + dcmimgle has been derived from code written by Jef Poskanzer for the + "Extended Portable Bitmap Toolkit" (pbmplus10dec91) + +Files: ofstd/libsrc/ofstd.cc +Copyright: 2001-2017 OFFIS e.V. + 1998 Todd C. Miller + 1988 Regents of the University of California + 1999 Bob Withers +License: OFFISeV + +Files: oflog/* +Copyright: 1999-2009 Contributors to log4cplus project. +License: BSD-2-clause + Redistribution and use in source and binary forms, with or without modifica- + tion, are permitted provided that the following conditions are met: + . + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + . + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + . + THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU- + DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +Files: oflog/include/dcmtk/oflog/config/macosx.h +Copyright: 2003-2010 Christopher R. Bailey +License: Apache-2.0 + +Files: oflog/include/dcmtk/oflog/windebap.h + oflog/libsrc/windebap.cc +Copyright: 2003-2010 Eduardo Francos, Odalio SARL +License: Apache-2.0 + +Files: oflog/libsrc/clogger.cc + oflog/include/dcmtk/oflog/clogger.h +Copyright: 2011 Jens Rehsack and Tad E. Smith +License: Apache-2.0 + +Files: oflog/include/dcmtk/oflog/ntelogap.h + oflog/libsrc/ntelogap.cc +Copyright: 2003-2010 Michael CATANZARITI +License: Apache-2.0 + +Files: oflog/include/dcmtk/oflog/log4judp.h + oflog/libsrc/log4judp.cc +Copyright: 2012 Siva Chandran P +License: Apache-2.0 + +Files: config/stdcxx.m4 +Copyright: 2008 Benjamin Kosnik + 2012 Zack Weinberg + 2013 Roy Stogner + 2014, 2015 Google Inc.; contributed by Alexey Sokolov + 2015 Paul Norman + 2015 Moritz Klammler + 2016 Krzesimir Nowak +License: stdcxx-m4 + Copying and distribution of this file, with or without modification, are + permitted in any medium without royalty provided the copyright notice + and this notice are preserved. This file is offered as-is, without any + warranty. + +Files: oflog/include/dcmtk/oflog/appender.h + oflog/include/dcmtk/oflog/config/win32.h + oflog/include/dcmtk/oflog/configrt.h + oflog/include/dcmtk/oflog/consap.h + oflog/include/dcmtk/oflog/fileap.h + oflog/include/dcmtk/oflog/fstreams.h + oflog/include/dcmtk/oflog/helpers/apndimpl.h + oflog/include/dcmtk/oflog/helpers/lloguser.h + oflog/include/dcmtk/oflog/helpers/loglog.h + oflog/include/dcmtk/oflog/helpers/pointer.h + oflog/include/dcmtk/oflog/helpers/property.h + oflog/include/dcmtk/oflog/helpers/sleep.h + oflog/include/dcmtk/oflog/helpers/sockbuff.h + oflog/include/dcmtk/oflog/helpers/socket.h + oflog/include/dcmtk/oflog/helpers/strhelp.h + oflog/include/dcmtk/oflog/helpers/threadcf.h + oflog/include/dcmtk/oflog/helpers/timehelp.h + oflog/include/dcmtk/oflog/hierarchy.h + oflog/include/dcmtk/oflog/hierlock.h + oflog/include/dcmtk/oflog/layout.h + oflog/include/dcmtk/oflog/logger.h + oflog/include/dcmtk/oflog/loglevel.h + oflog/include/dcmtk/oflog/logmacro.h + oflog/include/dcmtk/oflog/ndc.h + oflog/include/dcmtk/oflog/nullap.h + oflog/include/dcmtk/oflog/socketap.h + oflog/include/dcmtk/oflog/spi/apndatch.h + oflog/include/dcmtk/oflog/spi/factory.h + oflog/include/dcmtk/oflog/spi/filter.h + oflog/include/dcmtk/oflog/spi/logevent.h + oflog/include/dcmtk/oflog/spi/logfact.h + oflog/include/dcmtk/oflog/spi/logimpl.h + oflog/include/dcmtk/oflog/spi/objreg.h + oflog/include/dcmtk/oflog/spi/rootlog.h + oflog/include/dcmtk/oflog/streams.h + oflog/include/dcmtk/oflog/syslogap.h + oflog/include/dcmtk/oflog/thread/impl/thredimp.h + oflog/include/dcmtk/oflog/thread/threads.h + oflog/include/dcmtk/oflog/tstring.h + oflog/libsrc/apndimpl.cc + oflog/libsrc/appender.cc + oflog/libsrc/config.cc + oflog/libsrc/consap.cc + oflog/libsrc/factory.cc + oflog/libsrc/fileap.cc + oflog/libsrc/filter.cc + oflog/libsrc/globinit.cc + oflog/libsrc/hierarchy.cc + oflog/libsrc/hierlock.cc + oflog/libsrc/layout.cc + oflog/libsrc/lloguser.cc + oflog/libsrc/logevent.cc + oflog/libsrc/logger.cc + oflog/libsrc/logimpl.cc + oflog/libsrc/loglevel.cc + oflog/libsrc/loglog.cc + oflog/libsrc/ndc.cc + oflog/libsrc/nullap.cc + oflog/libsrc/objreg.cc + oflog/libsrc/patlay.cc + oflog/libsrc/pointer.cc + oflog/libsrc/property.cc + oflog/libsrc/rootlog.cc + oflog/libsrc/sleep.cc + oflog/libsrc/sockbuff.cc + oflog/libsrc/socket.cc + oflog/libsrc/socketap.cc + oflog/libsrc/strhelp.cc + oflog/libsrc/syslogap.cc + oflog/libsrc/threads.cc + oflog/libsrc/timehelp.cc + oflog/libsrc/unixsock.cc + oflog/libsrc/winsock.cc +Copyright: 2001-2010 Tad E. Smith +License: Apache-2.0 + +Files: oflog/include/dcmtk/oflog/tracelog.h + oflog/libsrc/logmacro.cc +Copyright: 2010 Vaclav Haisman +License: Apache-2.0 + +Files: dcmjpls/libcharls/* +Copyright: 2007-2010, Jan de Vaan +License: BSD-3-clause + +Files: ofstd/tests/tstring.cc +Copyright: 1997-2011, OFFIS e.V. + 1994 Free Software Foundation +License: GPL-2.0+ + All rights reserved. See COPYRIGHT file for details. + . + This software and supporting documentation were developed by + . + OFFIS e.V. + R&D Division Health + Escherweg 2 + D-26121 Oldenburg, Germany + . + This file is part of the GNU ANSI C++ Library. This library is free + software; you can redistribute it and/or modify it under the terms of + the GNU General Public License as published by the Free Software + Foundation; either version 2, or (at your option) any later version. + . + This library 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 General Public License for more details. + . + You should have received a copy of the GNU General Public License + along with this library; see the file COPYING, if not, see + . + . + On Debian systems, the complete text of the GNU General Public License + version 2 can be found in "/usr/share/common-licenses/GPL-2". + +Files: debian/* +Copyright: 2005-2011 Juergen Salk on + 2011-2014 Mathieu Malaterre + 2014-2015 Andreas Tille + 2015-2018 Gert Wollny +License: BSD-3-clause + +Files: ofstd/include/dcmtk/ofstd/ofxml.h + ofstd/libsrc/ofxml.cc +Copyright: 2002, Frank Vanden Berghen +License: dcmtk-or-AFPL + The following license terms apply to projects that are in some way related to + the "DCMTK project", including applications + using "DCMTK project" and tools developed + for enhancing "DCMTK project". All other projects + (not related to "DCMTK project") have to use this + code under the Aladdin Free Public License (AFPL) + See the file "AFPL-license.txt" for more information about the AFPL license. + (see http://www.artifex.com/downloads/doc/Public.htm for detailed AFPL terms) + . + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of Frank Vanden Berghen nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + THIS SOFTWARE IS PROVIDED BY Frank Vanden Berghen ``AS IS'' AND ANY + EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +Files: dcmrt/* +Copyright: 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + 2013-2021, J. Riesmeier, Oldenburg, Germany +License: BSD-3-clause-Riesmeier + +Files: dcmsr/include/dcmtk/dcmsr/dsrdncsr.h + dcmsr/include/dcmtk/dcmsr/dsrsaecc.h + dcmsr/libsrc/dsrdncsr.cc + dcmsr/libsrc/dsrsaecc.cc + dcmsr/include/dcmtk/dcmsr/cmr/tid1419m.h + dcmsr/include/dcmtk/dcmsr/cmr/tid1501.h + dcmsr/include/dcmtk/dcmsr/cmr/tid15def.h + dcmsr/include/dcmtk/dcmsr/cmr/tid300.h + dcmsr/include/dcmtk/dcmsr/dsrdnflt.h + dcmsr/include/dcmtk/dcmsr/dsritcsr.h + dcmsr/include/dcmtk/dcmsr/dsrprdcc.h + dcmsr/include/dcmtk/dcmsr/dsrpficc.h + dcmsr/libsrc/dsrpficc.cc + dcmsr/libsrc/dsrplicc.cc + dcmsr/libcmr/tid1419m.cc + dcmsr/libcmr/tid1501.cc + dcmsr/libcmr/tid15def.cc + dcmsr/libsrc/dsrdnflt.cc + dcmsr/libsrc/dsritcsr.cc + dcmsr/libsrc/dsrprdcc.cc +Copyright: 2016-2021, J. Riesmeier, Oldenburg, Germany +License: OFFISeV + +Files: dcmect/include/dcmtk/dcmect/def.h + dcmect/include/dcmtk/dcmect/enhanced_ct.h + dcmect/include/dcmtk/dcmect/types.h + dcmect/libsrc/enhanced_ct.cc + dcmect/libsrc/types.cc +Copyright: 2019 Open Connections GmbH +License: OFFISeV + +Files: dcmrt/include/dcmtk/dcmrt/drttypes.h + dcmrt/libsrc/drttypes.cc + dcmrt/libsrc/drtbvcps.cc + dcmrt/libsrc/drtmas.cc +Copyright: 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + 2013-2019, J. Riesmeier, Oldenburg, Germany +License: BSD-3-clause-Riesmeier + + +Files: dcmrt/include/dcmtk/dcmrt/drmdose.h + dcmrt/include/dcmtk/dcmrt/drmsrch.h + dcmrt/include/dcmtk/dcmrt/drmstrct.h + dcmrt/include/dcmtk/dcmrt/drmplan.h + dcmrt/libsrc/drmimage.cc + dcmrt/libsrc/drmplan.cc + dcmrt/libsrc/drmstrct.cc + dcmrt/tests/tsearch.cc +Copyright: 2012, OFFIS e.V. +License: OFFISeV + +Files: dcmrt/libsrc/drmdose.cc +Copyright: 2012-2015, OFFIS e.V. +License: OFFISeV + +Files: dcmrt/include/dcmtk/dcmrt/drmimage.h + dcmrt/tests/tests.cc +Copyright: 2012-2016, OFFIS e.V. +License: OFFISeV + +Files: dcmfg/include/dcmtk/dcmfg/fgframeanatomy.h + dcmfg/include/dcmtk/dcmfg/fgpixeltransform.h + dcmfg/include/dcmtk/dcmfg/fgparametricmapframetype.h + dcmfg/libsrc/fgframeanatomy.cc + dcmfg/libsrc/fgpixeltransform.cc + dcmfg/libsrc/fgparametricmapframetype.cc + dcmiod/include/dcmtk/dcmiod/iodcontentitemmacro.h + dcmiod/include/dcmtk/dcmiod/iodreferences.h + dcmiod/include/dcmtk/dcmiod/modfloatingpointimagepixel.h + dcmiod/include/dcmtk/dcmiod/modimagepixelbase.h + dcmiod/include/dcmtk/dcmiod/modimagepixelvariant.h + dcmiod/libsrc/iodcontentitemmacro.cc + dcmiod/libsrc/iodreferences.cc + dcmiod/libsrc/modfloatingpointimagepixel.cc + dcmiod/libsrc/modimagepixelbase.cc + dcmdata/tests/tnewdcme.cc +Copyright: Copyright (C) 2017, Open Connections GmbH +License: OFFISeV + +License: Apache-2.0 + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + . + http://www.apache.org/licenses/LICENSE-2.0 + . + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + . + On Debian GNU/Linux systems you can find this license under + /usr/share/common-licenses/Apache-2.0 + +License: BSD-3-clause + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + * + THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL + THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +License: BSD-3-clause-Riesmeier + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + . + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + . + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + . + * Neither the name of the copyright holders nor the names of its + contributors may be used to endorse or promote products derived from this + software without specific prior written permission. + . + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + +License: OFFISeV + This software and supporting documentation were developed by + . + OFFIS e.V. + R&D Division Health + Escherweg 2 + 26121 Oldenburg, Germany + . + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + - Neither the name of OFFIS nor the names of its contributors may be + used to endorse or promote products derived from this software + without specific prior written permission. + . + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/dcmqrscp.default b/dcmqrscp.default new file mode 100644 index 00000000..03a66998 --- /dev/null +++ b/dcmqrscp.default @@ -0,0 +1,3 @@ +# Run dcmqrscp at startup ? +DCMQRSCP_ENABLE=No + diff --git a/dcmqrscp.init b/dcmqrscp.init new file mode 100644 index 00000000..c7a08164 --- /dev/null +++ b/dcmqrscp.init @@ -0,0 +1,89 @@ +#! /bin/sh +# +# Start script for dcmqrscp from dcmtk-package +# Adapted from skeleton +# @(#)skeleton 2.85-23 28-Jul-2004 miquels@cistron.nl +# by Roland Marcus Rutschmann +# and Juergen Salk +# Version 0.2 Sun, 22 Jul 2007 21:32:42 +0200 +### BEGIN INIT INFO +# Provides: dcmqrscp +# Required-Start: $network $local_fs $remote_fs +# Required-Stop: $network $local_fs $remote_fs +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: Init-Script for DCMTK Central Test Node dcmqrscp +### END INIT INFO + + +set -e + +PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin +DESC="DCMTK Central Test Node" +NAME=dcmqrscp +DAEMON=/usr/bin/$NAME +PIDFILE=/var/run/$NAME.pid +SCRIPTNAME=/etc/init.d/$NAME +DCMQRSCP_CFG="/etc/dcmtk/dcmqrscp.cfg" + +# Gracefully exit if the package has been removed. +test -x $DAEMON || exit 0 + +# Read config file if it is present. +if [ -r /etc/default/$NAME ] +then + . /etc/default/$NAME +fi + +case "$DCMQRSCP_ENABLE" in + [Nn]*) + exit 0 + ;; +esac + + +# +# Function that starts the daemon/service. +# +d_start() { + start-stop-daemon --start --quiet --background \ + --make-pidfile --pidfile $PIDFILE \ + --exec $DAEMON -- +ac -c $DCMQRSCP_CFG +} + +# +# Function that stops the daemon/service. +# +d_stop() { + start-stop-daemon --stop --quiet --pidfile $PIDFILE \ + --name $NAME +} + +case "$1" in + start) + echo -n "Starting $DESC: $NAME" + d_start + echo "." + ;; + stop) + echo -n "Stopping $DESC: $NAME" + d_stop + echo "." + ;; + reload) + exit 0 + ;; + restart|force-reload) + echo -n "Restarting $DESC: $NAME" + d_stop + sleep 1 + d_start + echo "." + ;; + *) + echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2 + exit 1 + ;; +esac + +exit 0 diff --git a/dcmtk-doc.doc-base b/dcmtk-doc.doc-base new file mode 100644 index 00000000..eb33f9e6 --- /dev/null +++ b/dcmtk-doc.doc-base @@ -0,0 +1,12 @@ +Document: dcmtk-doc +Title: Documentation of DCMTK +Author: OFFIS DICOM Team +Abstract: This manual comprises the complete on-line documentation for the + DICOM ToolKit (DCMTK) packages. It covers the end user applications as well + as the development library interfaces including a wide variety of coding + examples. +Section: Science/Medicine + +Format: HTML +Index: /usr/share/doc/dcmtk/dcmtk/html/index.html +Files: /usr/share/doc/dcmtk/dcmtk/html/* diff --git a/dcmtk-doc.docs b/dcmtk-doc.docs new file mode 100644 index 00000000..470bae5f --- /dev/null +++ b/dcmtk-doc.docs @@ -0,0 +1 @@ +usr/share/doc/dcmtk/ diff --git a/dcmtk.NEWS b/dcmtk.NEWS new file mode 100644 index 00000000..02975c66 --- /dev/null +++ b/dcmtk.NEWS @@ -0,0 +1,137 @@ +dcmtk (3.6.0-1) unstable; urgency=low + + Version 3.6.0 of the OFFIS DCMTK (DICOM ToolKit) software is now available for + public release. This release includes the following main changes over the + previous version 3.5.4: + + - DCMTK 3.6.0 now also builds correctly with GNU gcc 4.1 (and higher), Visual + Studio 2008 and 2010. + + - Tested with latest versions of the following operating systems/environments: + + - Linux on x86 and x86_64 + - FreeBSD on x86 and x86_64 + - MacOS X on x86_64 + - Windows on x86 and x86_64 + - Cygwin and MinGW/MSys on x86 + + For a complete list of tested systems and compilers, see the INSTALL file. + + - The CMake build system can now also be used with other operating systems than + Windows. However, GNU autoconf is still supported and should be preferred on + systems where the CMake project files fail. + + - New module oflog introduces a unified DCMTK-wide approach for logging based + on the log4cplus library. Direct output to console, file, syslog and event + log. All DCMTK command line tools now have the same set of logging options. + + - New module dcmjpls adds support for JPEG-LS compressed DICOM images based on + the CharLS library. The tools dcmcjpls and dcmdjpls allow for compressing + and decompressing DICOM images with JPEG-LS from the command line. + + - New tool img2dcm allows for converting JPEG and BMP images to various DICOM + image IODs, e.g. old and new Secondary Capture, Visible Light Photographic. + The underlying C++ class library can also be used separately. + + - New tool dcm2pdf allows for extracting PDF files from DICOM Encapsulated PDF + Storage SOP instances. + + - New tool dcml2pnm allows for converting JPEG-LS compressed DICOM images to + standard image formats like TIFF or BMP. + + - The tools dcmdump and storescu have new options for searching directories + recursively for DICOM files. + + - The tool dcmdump now also has a colored output of the textual dump. So far, + this option is available on non-Windows systems only (uses ANSI escape code). + + - The tool dcmodify now also supports reading the value of insert and modify + statements from a file. This is especially useful for large element values. + + - The tool dsr2html now also supports the output in HTML 4.01 and XHTML 1.1 + format. There are also new options that affect the rendering result. + + - The tool dump2dcm now also supports compressed pixel data. In addition, + the memory requirements for very large data elements have been reduced. + + - The tool xml2dcm can now also read binary data (e.g. pixel data) from a + separate file. The corresponding feature is not yet available in dcm2xml. + + - The tool storescp now has a new option that allows for accepting all + supported transfer syntaxes on a single association. + + - The tool wlmscpfs now supports multi-process mode both on Posix and Windows + platforms where a new child process is created for each incoming association. + + - Refactored code of the tool findscu into a C++ class. This facilitates + re-use of the findscu code in other applications. + + - Added further "switches" to the dcmdata module which allow one to better cope + with incorrectly encoded DICOM files or datasets. These switches are also + available as new options to the tools dcmdump and dcmconv. + + - The dcmdata module now also gives access to partial attribute values without + loading the complete attribute value into memory, if kept in file. + + - The write methods in dcmdata now handle large raw data elements without + loading everything into memory. This allows very large images to be sent + over a network connection or to be copied without ever being fully in memory. + + - The dcmdata module now has a common interface for the frame-wise access to + compressed and uncompressed pixel data without ever loading the complete + object into main memory. + + - The dcmimgle/dcmimage module makes use of the new partial access to pixel + data for processing large multi-frame images in a stepwise manner. + + - The dcmimgle/dcmimage module and related tools now also support a new + bilinear and a bicubic scaling algorithm for image magnification. + Furthermore, the sigmoid VOI LUT function has been implemented. + + - Added support for Colon CAD SR, Spectacle Prescription Report, Macular Grid + Thickness and Volume Report as well as Implantation Plan SR documents to the + dcmsr module. + + - Incorporated fixes to dcmsr module which were introduced by various + correction proposals. Added support for the new optional Preliminary Flag. + + - DICOMDIR tools and classes now support all new SOP classes and directory + record types. Also added a new operating mode that allows for updating + existing entries in a DICOMDIR. + + - Introduced general path syntax for accessing nested elements from command + line tools like findscu or dcmodify. + + - Added methods for checking the value representation (VR) and value + multiplicity (VM) of data elements for conformance with the DICOM standard. + + - Network tools now support transmission and receipt of JPEG-LS and MPEG2 + transfer syntaxes. + + - Added support for the extended negotiation of user identity to the dcmnet + module. The first tool that makes use of this new feature is storescu. + + - Introduced new experimental SCU and SCP classes that act as a C++ wrapper to + the still C-based dcmnet module. + + - Added new class OFFile that provides a simple encapsulation layer for file + based stream I/O and, in particular, provides large file support (LFS) if + available on the underlying operating system/platform through a single API. + + - Out of the box compilation with OpenSSL 1.0.0 is now supported. + + - Revised installation directory scheme in order to be more compliant with the + Filesystem Hierarchy Standard (FHS) and derived file system standards. + + - Added data dictionary including private ASTM tags from DICONDE (Digital + Imaging and Communication in Nondestructive Evaluation) standard. + + - The DICOM data dictionary as well as the list of SOP classes and transfer + syntaxes have been re-worked based on the latest edition of the DICOM + standard plus all additionally approved supplements and correction proposals + (as of 2010-11-30). Please note that there have been minor name changes! + + - Many bug fixes and minor improvements as usual - see the more than 12,000 + lines long CHANGES.360 file for more details. + + -- Mathieu Malaterre Tue, 08 Feb 2011 19:14:53 +0100 diff --git a/dcmtk.README.Debian b/dcmtk.README.Debian new file mode 100644 index 00000000..96859ec7 --- /dev/null +++ b/dcmtk.README.Debian @@ -0,0 +1,166 @@ +DCMTK - The OFFIS DICOM ToolKit for Debian +========================================== + +General notes: + +DCMTK is a collection of libraries and applications implementing large +parts the DICOM standard. It includes software for examining, +constructing and converting DICOM image files, handling offline media, +sending and receiving images over a network connection, as well as +demonstrative image storage and worklist servers. DCMTK is written +in a mixture of ANSI C and C++. It comes in complete source code and +is made available as "open source" software under BSD like license +terms. For additional information about DCMTK have a look at the +OFFIS web page: + + http://dicom.offis.de/dcmtk.php.en + +DCMTK has been used at numerous DICOM demonstrations to provide +central, vendor-independent image storage and worklist servers (CTNs - +Central Test Nodes). It is used by hospitals and companies all over +the world for a wide variety of purposes ranging from being a tool for +product testing to being a building block for research projects, +prototypes and commercial products. + +DCMTK optionally supports some of the DICOM security extensions and +relies on the free OpenSSL toolkit for the underlying cryptographic +routines and the TLS protocol implementation. The Debian DCMTK package +has been built with OpenSSL support enabled. + +More information about using the DCMTK network applications for secure +DICOM communication can be found in + + /usr/share/docs/dcmtk/ciphers.txt + /usr/share/docs/dcmtk/randseed.txt + +DCMTK optionally supports Wietse Venema's TCP wrappers library +(libwrap) which is freely available for most Unix platforms and part +of the default installation of most recent Linux distributions. This +library allows one to enforce host-based access control via the +"/etc/hosts_deny" and "/etc/hosts_allow" configuration files. The +Debian DCMTK package has been compiled with TCP wrapper support +enabled. See hosts_access(5) man page for details. + +You can use the dcmnet applications for testing DICOM connectivity. A +brief description can be found in + + /usr/share/docs/dcmtk/testing.txt + + +The DCMTK dcmqrscp application implements a DICOM image +storage/query/retrieve SCP which has been designed primarily as an +independent framework for cooperative tests and demonstrations of +DICOM connectivity by medical imaging vendors. If you want to set up +dcmqrdb as a DICOM image storage server please read both the dcmqrscp +manual pages and the supplemental documentation in + + /usr/share/doc/dcmtk/dcmqrcnf.txt + /usr/share/doc/dcmtk/dcmqrset.txt + +The dcmqrscp application can be invoked as a daemon process at boot +time by setting DCMQRSCP_ENABLE=Yes in /etc/defaults/dcmqrscp. You will +have to adjust the system wide configuration file +/etc/dcmtk/dcmqrscp.cfg to suit your needs. This configuration file +provides optional UserName/GroupName keywords in the "Global +Parameter" section (see note in dcmqrcnf.txt). Running dcmqrscp with +root privileges is strongly discouraged. A dedicated system +user/group dcmtk/dcmtk is automatically added during the installation +of the Debian DCMTK package. It is important to note that dcmqrscp is +primarily intended to be used as a demonstration server rather than a +real "PACS replacement". Scalability is quite limited, both in terms +of number of images/studies and in number of parallel clients. If you +want to set up a real large database, you might be better off in using +an SQL based archive (such as the Mallinckrodt CTN). + + +DCMTK supports the Modality Worklist Management SOP Class as a SCP, which +allows modalities to query and retrieve worklist information from hospital +information systems. An example worklist database along with a set of +example queries can be found in + + /usr/share/doc/dcmtk/examples/wlistdb + +and + + /usr/share/doc/dcmtk/examples/wlistqry. + +Here is a brief instruction about how to make this work (based on a post +of Thomas Wilkens in comp.protocols.dicom): + +1. Use dump2dcm to convert all "*.dump" files in examples/wlistdb/OFFIS +to "*.wl" files (DICOM format): + + $ for f in *.dump; do dump2dcm "$f" "${f%.dump}".wl; done + +Note that these files have to have the extension "*.wl", otherwise wlmscpfs +will not find these files. These files represent your worklist database. +2. Use dump2dcm to convert all "*.dump" files in examples/wlistqry to +"*.dcm" files (DICOM format): + + $ for f in *.dump; do dump2dcm "$f" "${f%.dump}".dcm; done + +These files represent possible queries that can be used to query the worklist +database. +3. In one shell run the following command to start the worklist management SCP: + + $ wlmscpfs -v -dfp examples/wlistdb 1234 + +4. In another shell run the following command to send a certain query to the +WLM SCP: + + $ findscu -v --call OFFIS localhost 1234 examples/wlistqry/wlistqry0.dcm + +Step 3 will start the worklist management SCP which will listen on port 1234 +for incoming C-FIND RQ messages. The "-dfp examples/wlistdb" option +specifies that the worklist database can be found in folder "examples/wlistdb". +Note that the worklist database can be organized in different storage areas. +Subfolder "OFFIS" below "examples/wlistdb" is one (the only one in this case) +storage area. In an incoming C-FIND RQ, an SCU has to tell wlmscpfs which +storage area shall be queried; this is done by sending a certain "called AE title" +to wlmscpfs. + +Step 4 will send the query in file "examples/wlistqry/wlistqry0.dcm" +using a C-FIND-RQ message to the wlmscpfs application (which is running on +"localhost" and listening on port "1234"). Option "--call OFFIS" specifies +that the called AE title is "OFFIS" which in turn tells the wlmscpfs +application to query the storage area "OFFIS" in its worklist database. + +The two programs should then dump information that shows their internal +processings (C-FIND RQ - C-FIND RSP). You can also use a different query +file in folder "examples/wlistqry" for querying the worklist database. + +As the wlmscpfs is not a hospital information system, worklist entries +must be created, updated and deleted manually. The Debian dcmtk-www +package contains a cgi-based WWW server application which provides an easy +to use web interface for managing worklist entries from any workstation +in the network. More information about the DCMTK worklist web interface can +be found in + + /usr/share/doc/dcmtk-www/wwwapp.txt + + +For more information please visit the DCMTK homepage and the user forum at + + http://dicom.offis.de/dcmtk.php.en + +and + + http://forum.dcmtk.org/ + +--- + +DCMTK on Debian is either build using ICU or stdlibc (iconv) to support +CharacterSet in DICOM. However full support for CharacterSet is only +implemented in libiconv. Since Debian does not ship libiconv, user may get the +following error message for the non-supported CharacterSet (ISO 2022 IR 87 in +this case): + +E: DcmSpecificCharacterSet: 'ISO 2022 IR 87' is not supported by the utilized + character set conversion library 'ICU, Version 63.1.0' + +or + +E: DcmSpecificCharacterSet: 'ISO 2022 IR 87' is not supported by the utilized + character set conversion library 'GNU C library (iconv), version 2.28' + + -- Mathieu Malaterre Thu, 20 May 2021 11:36:10 +0200 diff --git a/dcmtk.dirs b/dcmtk.dirs new file mode 100644 index 00000000..716b8d83 --- /dev/null +++ b/dcmtk.dirs @@ -0,0 +1 @@ +/var/lib/dcmtk/db diff --git a/dcmtk.docs b/dcmtk.docs new file mode 100644 index 00000000..ccf9d946 --- /dev/null +++ b/dcmtk.docs @@ -0,0 +1,3 @@ +FAQ +README +debian/NEWS diff --git a/dcmtk.examples b/dcmtk.examples new file mode 100644 index 00000000..2c44e66e --- /dev/null +++ b/dcmtk.examples @@ -0,0 +1,2 @@ +debian/tmp/usr/share/dcmtk/wlistdb +debian/tmp/usr/share/dcmtk/wlistqry diff --git a/dcmtk.install b/dcmtk.install new file mode 100644 index 00000000..9c2b398c --- /dev/null +++ b/dcmtk.install @@ -0,0 +1,7 @@ +etc/dcmtk/* +usr/bin/* +usr/share/dcmtk/*.css +usr/share/dcmtk/*.lut +usr/share/dcmtk/dcm2xml.dtd +usr/share/dcmtk/dsr2xml.xsd +usr/share/dcmtk/dumppat.txt diff --git a/dcmtk.maintscript b/dcmtk.maintscript new file mode 100644 index 00000000..9eefb317 --- /dev/null +++ b/dcmtk.maintscript @@ -0,0 +1,4 @@ +rm_conffile /etc/init.d/storescp +rm_conffile /etc/init.d/dcmqrscp +rm_conffile /etc/default/storescp +rm_conffile /etc/default/dcmqrscp diff --git a/dcmtk.manpages b/dcmtk.manpages new file mode 100644 index 00000000..5ed5bcf0 --- /dev/null +++ b/dcmtk.manpages @@ -0,0 +1 @@ +usr/share/man/man1/*.1 diff --git a/dcmtk.postinst b/dcmtk.postinst new file mode 100644 index 00000000..525636d9 --- /dev/null +++ b/dcmtk.postinst @@ -0,0 +1,69 @@ +#!/bin/sh + +set -e + +# Create dcmtk user and group + +if ! getent passwd dcmtk >/dev/null 2>&1; then + if ! getent group dcmtk > /dev/null 2>&1; then + echo "Adding \`dcmtk' group to system ..." + addgroup --quiet --system dcmtk || true + fi + echo "Adding \`dcmtk' user to system ..." + adduser --quiet --system --ingroup dcmtk --home /var/lib/dcmtk/db \ + --shell /usr/sbin/nologin dcmtk || true +fi + +# work around possible adduser bug, see #119366 +[ -d /var/lib/dcmtk/db ] || mkdir -p /var/lib/dcmtk/db +chmod 755 /var/lib/dcmtk/db +chown -h dcmtk:dcmtk /var/lib/dcmtk/db || true + + +# Handle imagectn -> dcmqrdb transition in (3.5.3 -> 3.5.4) + + +LASTVERSION=3.5.3-5 + +case "$1" in +configure) + if dpkg --compare-versions "$2" le "$LASTVERSION"; then + + if [ -e "/etc/dcmtk/imagectn.cfg" ]; then + echo + echo "Configuration file /etc/dcmtk/imagectn.cfg has been modified by user." + echo "This file will be renamed to /etc/dcmtk/dcmqrscp.cfg." + echo "The package default version can be found in /etc/dcmtk/dcmqrscp.cfg.dpkg-new." + echo + mv -f /etc/dcmtk/dcmqrscp.cfg /etc/dcmtk/dcmqrscp.cfg.dpkg-new + mv -f /etc/dcmtk/imagectn.cfg /etc/dcmtk/dcmqrscp.cfg + fi + + if [ -e "/etc/default/imagectn" ]; then + echo "Configuration file /etc/default/imagectn has been modified by user." + echo "This file will be converted to and replaced by /etc/default/dcmqrscp." + echo "The user's old version can be found in /etc/default/imagectn.dpkg-old." + echo "The package default version can be found in /etc/default/dcmqrscp.dpkg-new." + echo + mv -f /etc/default/imagectn /etc/default/imagectn.dpkg-old + mv -f /etc/default/dcmqrscp /etc/default/dcmqrscp.dpkg-new + sed -e 's/IMAGECTN_ENABLE/DCMQRSCP_ENABLE/g' -e 's/imagectn/dcmqrscp/g' \ + /etc/default/dcmqrscp + fi + + if [ -e "/etc/init.d/imagectn" ]; then + echo "Configuration file /etc/init.d/imagectn has been modified by user." + echo "This file will be replaced by /etc/init.d/dcmqrscp." + echo "The user's old version can be found in /etc/init.d/imagectn.dpkg-old" + echo + mv -f /etc/init.d/imagectn /etc/init.d/imagectn.dpkg-old + fi + # Remove (dangling) symlinks in /etc/rcN.d + update-rc.d imagectn remove >/dev/null + fi +esac + + + +#DEBHELPER# + diff --git a/dcmtk.postrm b/dcmtk.postrm new file mode 100644 index 00000000..b8efc7e4 --- /dev/null +++ b/dcmtk.postrm @@ -0,0 +1,29 @@ +#!/bin/sh + +set -e + +# Remove possible leftovers of imagectn -> dcmqrscp transition + +if [ "$1" = "purge" ] ; then + + if [ -e /etc/default/imagectn.dpkg-old ]; then + rm -f /etc/default/imagectn.dpkg-old + fi + + if [ -e /etc/init.d/imagectn.dpkg-old ]; then + rm -f /etc/init.d/imagectn.dpkg-old + fi + + if [ -d /var/lib/dcmtk/db/STORESCP ]; then + rm -rf /var/lib/dcmtk/db/STORESCP + fi +fi + +# Remove dcmtk user/group if they exist on cleanup +if id -u "dcmtk" > /dev/null 2>&1; then + echo "Removing \`dcmtk' user and group from the system..." + userdel dcmtk +fi + +#DEBHELPER# + diff --git a/dcmtk.preinst b/dcmtk.preinst new file mode 100644 index 00000000..9f84376f --- /dev/null +++ b/dcmtk.preinst @@ -0,0 +1,40 @@ +#!/bin/sh + +set -e + +# Prepare to handle imagectn -> dcmqrdb (3.5.3 -> 3.5.4) transition +# without triggering a dpkg question +# # Adapted from http://wiki.debian.org/DpkgConffileHandling + +PKGNAME=dcmtk + +# Remove a no-longer used conffile +rm_conffile() { + CONFFILE="$1" + if [ -e "$CONFFILE" ]; then + md5sum="`md5sum \"$CONFFILE\" | sed -e \"s/ .*//\"`" + old_md5sum="`dpkg-query -W -f='${Conffiles}' $PKGNAME | sed -n -e \"\\\\' $CONFFILE '{s/ obsolete$//;s/.* //p}\"`" + if [ "$md5sum" != "$old_md5sum" ]; then + echo "Obsolete conffile $CONFFILE has been modified by you." + echo "Saving as $CONFFILE.dpkg-bak ..." + mv -f "$CONFFILE" "$CONFFILE".dpkg-bak + else + echo "Removing obsolete conffile $CONFFILE ..." + rm -f "$CONFFILE" + fi + fi +} + +LASTVERSION=3.5.3-5 + +case "$1" in +install|upgrade) + if dpkg --compare-versions "$2" le "$LASTVERSION"; then + rm_conffile "/etc/dcmtk/imagectn.cfg" + rm_conffile "/etc/default/imagectn" + rm_conffile "/etc/init.d/imagectn" + fi +esac + +#DEBHELPER# + diff --git a/dcmtk.prerm b/dcmtk.prerm new file mode 100644 index 00000000..15e7e018 --- /dev/null +++ b/dcmtk.prerm @@ -0,0 +1,23 @@ +#!/bin/sh +set -e + +# This is in case we upgrade from dcmtk version < 3.5.4 +if [ -x "/etc/init.d/imagectn" ]; then + if which invoke-rc.d ; then + invoke-rc.d --quiet imagectn stop + else + /etc/init.d/imagectn stop + fi +fi + +if [ -x "/etc/init.d/dcmqrscp" ]; then + if which invoke-rc.d ; then + invoke-rc.d --quiet dcmqrscp stop + else + /etc/init.d/dcmqrscp stop + fi +fi + +#DEBHELPER# + +exit 0 diff --git a/libdcmtk-dev.install b/libdcmtk-dev.install new file mode 100644 index 00000000..e6e70000 --- /dev/null +++ b/libdcmtk-dev.install @@ -0,0 +1,4 @@ +usr/include/dcmtk/* +usr/lib/*/*.so +usr/lib/*/cmake/ +usr/lib/*/pkgconfig \ No newline at end of file diff --git a/libdcmtk17t64.install b/libdcmtk17t64.install new file mode 100644 index 00000000..59844d52 --- /dev/null +++ b/libdcmtk17t64.install @@ -0,0 +1,2 @@ +usr/lib/*/*.so.* +usr/share/libdcmtk17/*.dic diff --git a/libdcmtk17t64.lintian-overrides b/libdcmtk17t64.lintian-overrides new file mode 100644 index 00000000..85e79be7 --- /dev/null +++ b/libdcmtk17t64.lintian-overrides @@ -0,0 +1,5 @@ +# There is more than one library in one package bundles which makes perfectly +# sense in this application but does not enable naming the library package apropriately +libdcmtk17t64: package-name-doesnt-match-sonames +libdcmtk17t64: embedded-library +libdcmtk17t64: no-symbols-control-file diff --git a/patches/01_dcmtk_3.6.0-1.patch b/patches/01_dcmtk_3.6.0-1.patch new file mode 100644 index 00000000..199bb782 --- /dev/null +++ b/patches/01_dcmtk_3.6.0-1.patch @@ -0,0 +1,81 @@ +Author: Jürgen Salk +Description: The original maintainer Jürgen Salk applied + a set of patches to the original code. This file contains + changes to C++ code +Forwarded: not-needed + +--- a/dcmqrdb/etc/dcmqrscp.cfg ++++ b/dcmqrdb/etc/dcmqrscp.cfg +@@ -21,8 +21,8 @@ + # SpecificCharacterSet = "ISO_IR 192", override, discard, transliterate + + # +-# UserName = +-# GroupName = ++UserName = dcmtk ++GroupName = dcmtk + + HostTable BEGIN + # +@@ -38,12 +38,13 @@ + # NOTE: in the current implementation you cannot substitute an IP address + # for a hostname. + # +-acme1 = (ACME1, acmehost1, 5678) +-acme2 = (ACME2, acmehost2, 5678) +-acmeCTcompany = acme1, acme2 +-united1 = (UNITED1, unitedhost1, 104) +-united2 = (UNITED2, unitedhost2, 104) +-unitedMRcompany = united1, united2 ++# Example: ++#acme1 = (ACME1, acmehost1, 5678) ++#acme2 = (ACME2, acmehost2, 5678) ++#acmeCTcompany = acme1, acme2 ++#united1 = (UNITED1, unitedhost1, 104) ++#united2 = (UNITED2, unitedhost2, 104) ++#unitedMRcompany = united1, united2 + # + HostTable END + +@@ -61,8 +62,9 @@ + # VendorName = SymbolicName + # The symbolic name should be defined in the HostTable. + # +-"Acme CT Company" = acmeCTcompany +-"United MR Company" = unitedMRcompany ++# Example: ++#"Acme CT Company" = acmeCTcompany ++#"United MR Company" = unitedMRcompany + # + VendorTable END + +@@ -80,8 +82,13 @@ + # Entry in HostTable | + # ANY + # +-COMMON /home/dicom/db/COMMON R (200, 1024mb) ANY +-ACME_STORE /home/dicom/db/ACME_STORE RW (9, 1024mb) acmeCTcompany +-UNITED_STORE /home/dicom/db/UNITED_STORE RW (9, 1024mb) unitedMRcompany ++# Example: ++# ++#ACME_STORE /var/lib/dcmtk/db/ACME_STORE RW (9, 1024mb) acmeCTcompany ++#UNITED_STORE /var/lib/dcmtk/db/UNITED_STORE RW (9, 1024mb) unitedMRcompany ++# ++# Uncomment and adjust the following lines for a common r/rw storage area: ++#READWRITE /var/lib/dcmtk/db/READWRITE RW (10, 1024mb) ANY ++#READ /var/lib/dcmtk/db/READ R (200, 1024mb) ANY + # + AETable END +--- a/dcmqrdb/docs/dcmqrcnf.txt ++++ b/dcmqrdb/docs/dcmqrcnf.txt +@@ -46,8 +46,8 @@ + MaxPDUSize = 8192 + MaxAssociations = 20 + SpecificCharacterSet = fallback +-UserName = (do not change user) +-GroupName = (do not change group) ++UserName = dcmtk ++GroupName = dcmtk + + Available options for specific character sets are: + diff --git a/patches/02_system_charls.patch b/patches/02_system_charls.patch new file mode 100644 index 00000000..fa562f71 --- /dev/null +++ b/patches/02_system_charls.patch @@ -0,0 +1,82 @@ +Description: Remove convenient copy of CharLS +Bug-Debian: https://bugs.debian.org/705923 +Forwarded: not-needed +Author: Mathieu Malaterre +--- a/dcmjpls/CMakeLists.txt ++++ b/dcmjpls/CMakeLists.txt +@@ -2,6 +2,6 @@ + project(dcmjpls) + + # recurse into subdirectories +-foreach(SUBDIR libsrc libcharls apps include) ++foreach(SUBDIR libsrc apps include) + add_subdirectory(${SUBDIR}) + endforeach() +--- a/dcmjpls/libsrc/djerror.h ++++ b/dcmjpls/libsrc/djerror.h +@@ -24,7 +24,7 @@ + + #include "dcmtk/config/osconfig.h" + #include "dcmtk/dcmjpls/djlsutil.h" /* For the OFCondition codes */ +-#include "intrface.h" /* CharLS include */ ++#include "CharLS/interface.h" /* CharLS include */ + + /** Helper class for converting between dcmjpls and CharLS error codes + */ +--- a/dcmjpls/libsrc/djcodecd.cc ++++ b/dcmjpls/libsrc/djcodecd.cc +@@ -37,7 +37,7 @@ + #include "djerror.h" /* for private class DJLSError */ + + // JPEG-LS library (CharLS) includes +-#include "intrface.h" ++#include "CharLS/interface.h" + + E_TransferSyntax DJLSLosslessDecoder::supportedTransferSyntax() const + { +--- a/dcmjpls/libsrc/djcodece.cc ++++ b/dcmjpls/libsrc/djcodece.cc +@@ -55,7 +55,7 @@ + #include "dcmtk/dcmimgle/dcmimage.h" /* for class DicomImage */ + + // JPEG-LS library (CharLS) includes +-#include "intrface.h" ++#include "CharLS/interface.h" + + BEGIN_EXTERN_C + #ifdef HAVE_FCNTL_H +@@ -664,7 +664,7 @@ + + size_t bytesWritten = 0; + +- JLS_ERROR err = JpegLsEncode(&buffer, &size, &bytesWritten, framePointer, frameSize, &jls_params); ++ JLS_ERROR err = JpegLsEncode(&buffer, size, &bytesWritten, framePointer, frameSize, &jls_params); + result = DJLSError::convert(err); + + if (result.good()) +@@ -1071,7 +1071,7 @@ + + size_t bytesWritten = 0; + +- JLS_ERROR err = JpegLsEncode(&compressed_buffer, &compressed_buffer_size, &bytesWritten, framePointer, buffer_size, &jls_params); ++ JLS_ERROR err = JpegLsEncode(&compressed_buffer, compressed_buffer_size, &bytesWritten, framePointer, buffer_size, &jls_params); + result = DJLSError::convert(err); + + if (result.good()) +--- a/dcmjpls/apps/CMakeLists.txt ++++ b/dcmjpls/apps/CMakeLists.txt +@@ -8,5 +8,5 @@ + + # make sure executables are linked to the corresponding libraries + foreach(PROGRAM dcmcjpls dcmdjpls dcml2pnm) +- DCMTK_TARGET_LINK_MODULES(${PROGRAM} dcmjpls charls dcmimage dcmimgle dcmdata oflog ofstd ofstd) ++ DCMTK_TARGET_LINK_MODULES(${PROGRAM} dcmjpls CharLS dcmimage dcmimgle dcmdata oflog ofstd ofstd) + endforeach() +--- a/dcmjpls/libsrc/CMakeLists.txt ++++ b/dcmjpls/libsrc/CMakeLists.txt +@@ -4,4 +4,4 @@ + # create library from source files + DCMTK_ADD_LIBRARY(dcmjpls djcparam djdecode djencode djrparam djcodecd djutils djcodece) + +-DCMTK_TARGET_LINK_MODULES(dcmjpls ofstd oflog dcmdata dcmimgle dcmimage charls) ++DCMTK_TARGET_LINK_MODULES(dcmjpls ofstd oflog dcmdata dcmimgle dcmimage CharLS) diff --git a/patches/03_datadic_install.patch b/patches/03_datadic_install.patch new file mode 100644 index 00000000..b0fa0af3 --- /dev/null +++ b/patches/03_datadic_install.patch @@ -0,0 +1,69 @@ +Description: Install dict to versioned dir +Bug-Debian: https://bugs.debian.org/709123 +Forwarded: not-needed +Author: Mathieu Malaterre +--- a/CMake/GenerateDCMTKConfigure.cmake ++++ b/CMake/GenerateDCMTKConfigure.cmake +@@ -118,23 +118,8 @@ endif() + + # Configure file + +-# Windows being windows, it lies about its processor type to 32 bit binaries +-set(SYSTEM_PROCESSOR "$ENV{PROCESSOR_ARCHITEW6432}") +-if(NOT SYSTEM_PROCESSOR) +- if(WIN32 AND NOT CYGWIN) +- if(CMAKE_GENERATOR_PLATFORM) +- set(SYSTEM_PROCESSOR "${CMAKE_GENERATOR_PLATFORM}") +- elseif(CMAKE_SIZEOF_VOID_P EQUAL 8) +- set(SYSTEM_PROCESSOR "x64") +- elseif(CMAKE_SIZEOF_VOID_P EQUAL 4) +- set(SYSTEM_PROCESSOR "Win32") +- endif() +- else() +- set(SYSTEM_PROCESSOR "${CMAKE_SYSTEM_PROCESSOR}") +- endif() +-endif() + # CMake doesn't provide a configure-style system type string +-set(CANONICAL_HOST_TYPE "${SYSTEM_PROCESSOR}-${CMAKE_SYSTEM_NAME}") ++set(CANONICAL_HOST_TYPE "Debian") + DCMTK_UNSET(SYSTEM_PROCESSOR) + + # Configure dictionary path and install prefix +@@ -147,10 +132,10 @@ if(WIN32 AND NOT CYGWIN) + set(ENVIRONMENT_PATH_SEPARATOR ";") + # Set dictionary path to the data dir inside install main dir (prefix) + if(DCMTK_DEFAULT_DICT STREQUAL "external") +- set(DCM_DICT_DEFAULT_PATH "${DCMTK_PREFIX}\\\\${CMAKE_INSTALL_DATADIR}\\\\dcmtk\\\\dicom.dic") ++ set(DCM_DICT_DEFAULT_PATH "${DCMTK_PREFIX}\\\\${CMAKE_INSTALL_DATADIR}\\\\dicom.dic") + # If private dictionary should be utilized, add it to default dictionary path. + if(ENABLE_PRIVATE_TAGS) +- set(DCM_DICT_DEFAULT_PATH "${DCM_DICT_DEFAULT_PATH};${DCMTK_PREFIX}\\\\${CMAKE_INSTALL_DATADIR}\\\\dcmtk\\\\private.dic") ++ set(DCM_DICT_DEFAULT_PATH "${DCM_DICT_DEFAULT_PATH};${DCMTK_PREFIX}\\\\${CMAKE_INSTALL_DATADIR}\\\\private.dic") + endif() + # Again, for Windows strip all / from path and replace it with \\. + string(REGEX REPLACE "/" "\\\\\\\\" DCM_DICT_DEFAULT_PATH "${DCM_DICT_DEFAULT_PATH}") +@@ -168,10 +153,10 @@ else() + set(ENVIRONMENT_PATH_SEPARATOR ":") + # Set dictionary path to the data dir inside install main dir (prefix). + if(DCMTK_DEFAULT_DICT STREQUAL "external") +- set(DCM_DICT_DEFAULT_PATH "${DCMTK_PREFIX}/${CMAKE_INSTALL_DATADIR}/dcmtk/dicom.dic") ++ set(DCM_DICT_DEFAULT_PATH "${DCMTK_PREFIX}/${CMAKE_INSTALL_DATADIC}/dicom.dic") + # If private dictionary should be utilized, add it to default dictionary path. + if(ENABLE_PRIVATE_TAGS) +- set(DCM_DICT_DEFAULT_PATH "${DCM_DICT_DEFAULT_PATH}:${DCMTK_PREFIX}/${CMAKE_INSTALL_DATADIR}/dcmtk/private.dic") ++ set(DCM_DICT_DEFAULT_PATH "${DCM_DICT_DEFAULT_PATH}:${DCMTK_PREFIX}/${CMAKE_INSTALL_DATADIC}/private.dic") + endif() + else() + set(DCM_DICT_DEFAULT_PATH "") +--- a/dcmdata/data/CMakeLists.txt ++++ b/dcmdata/data/CMakeLists.txt +@@ -1,5 +1,8 @@ + # declare installation files +-install(FILES dicom.dic acrnema.dic private.dic diconde.dic dcm2xml.dtd dumppat.txt SC.dump VLP.dump DESTINATION "${CMAKE_INSTALL_DATADIR}/dcmtk" COMPONENT data) ++set(DCMTK_INSTALL_DATDIR "share/libdcmtk${DCMTK_ABI_VERSION}") ++ ++install(FILES dcm2xml.dtd dumppat.txt SC.dump VLP.dump DESTINATION "${CMAKE_INSTALL_DATADIR}/dcmtk" COMPONENT data) ++install(FILES dicom.dic acrnema.dic private.dic diconde.dic DESTINATION ${CMAKE_INSTALL_DATADIC} COMPONENT data) + + # add paths to the dictionaries to a CMake variable for being used by the unit tests + set(DCMTK_DICOM_DICTIONARIES diff --git a/patches/07_dont_export_all_executables.patch b/patches/07_dont_export_all_executables.patch new file mode 100644 index 00000000..cb6ccbe9 --- /dev/null +++ b/patches/07_dont_export_all_executables.patch @@ -0,0 +1,25 @@ +Description: Don't add executables to cmake exports + CMake exports are used by other packages that compile + and link against dcmtk. Because Debian moves some of + these executables and also dosn't install the test + executables, this import may fail leading to failure + to configure the according package. +Bug-Debian: https://bugs.debian.org/803304 +Author: Gert Wollny +Forwarded: not-needed +--- a/CMake/dcmtkMacros.cmake ++++ b/CMake/dcmtkMacros.cmake +@@ -60,11 +60,11 @@ + endif() + + # Collect executable as part of global DCMTK_EXECUTABLE_TARGETS property +- set_property(GLOBAL APPEND PROPERTY DCMTK_EXECUTABLE_TARGETS ${PROGRAM}) ++ #set_property(GLOBAL APPEND PROPERTY DCMTK_EXECUTABLE_TARGETS ${PROGRAM}) + + # declare installation files, also export DCMTKTargets.cmake + install(TARGETS ${PROGRAM} +- EXPORT DCMTKTargets ++ # EXPORT DCMTKTargets + COMPONENT bin + DESTINATION ${CMAKE_INSTALL_BINDIR}) + endif() diff --git a/patches/09_charls-2.0.patch b/patches/09_charls-2.0.patch new file mode 100644 index 00000000..384a17ff --- /dev/null +++ b/patches/09_charls-2.0.patch @@ -0,0 +1,326 @@ +Description: Fix build with charls-2.0 +Author: Gert Wollny + +diff -ru dcmtk/dcmjpls/libsrc/djcodecd.cc dcmtk-3.6.4.new/dcmjpls/libsrc/djcodecd.cc +--- dcmtk/dcmjpls/libsrc/djcodecd.cc 2019-01-12 16:13:14.012002607 +0100 ++++ dcmtk-3.6.4.new/dcmjpls/libsrc/djcodecd.cc 2019-01-12 15:48:40.936001789 +0100 +@@ -37,7 +37,7 @@ + #include "djerror.h" /* for private class DJLSError */ + + // JPEG-LS library (CharLS) includes +-#include "CharLS/interface.h" ++#include "CharLS/charls.h" + + E_TransferSyntax DJLSLosslessDecoder::supportedTransferSyntax() const + { +@@ -382,9 +382,8 @@ + if (result.good()) + { + JlsParameters params; +- JLS_ERROR err; + +- err = JpegLsReadHeader(jlsData, compressedSize, ¶ms); ++ auto err = JpegLsReadHeader(jlsData, compressedSize, ¶ms, NULL); + result = DJLSError::convert(err); + + if (result.good()) +@@ -392,8 +391,8 @@ + if (params.width != imageColumns) result = EC_JLSImageDataMismatch; + else if (params.height != imageRows) result = EC_JLSImageDataMismatch; + else if (params.components != imageSamplesPerPixel) result = EC_JLSImageDataMismatch; +- else if ((bytesPerSample == 1) && (params.bitspersample > 8)) result = EC_JLSImageDataMismatch; +- else if ((bytesPerSample == 2) && (params.bitspersample <= 8)) result = EC_JLSImageDataMismatch; ++ else if ((bytesPerSample == 1) && (params.bitsPerSample > 8)) result = EC_JLSImageDataMismatch; ++ else if ((bytesPerSample == 2) && (params.bitsPerSample <= 8)) result = EC_JLSImageDataMismatch; + } + + if (!result.good()) +@@ -402,13 +401,13 @@ + } + else + { +- err = JpegLsDecode(buffer, bufSize, jlsData, compressedSize, ¶ms); ++ err = JpegLsDecode(buffer, bufSize, jlsData, compressedSize, ¶ms, NULL); + result = DJLSError::convert(err); + delete[] jlsData; + + if (result.good() && imageSamplesPerPixel == 3) + { +- if (imagePlanarConfiguration == 1 && params.ilv != ILV_NONE) ++ if (imagePlanarConfiguration == 1 && params.interleaveMode != charls::InterleaveMode::None) + { + // The dataset says this should be planarConfiguration == 1, but + // it isn't -> convert it. +@@ -418,7 +417,8 @@ + else + result = createPlanarConfiguration1Word(OFreinterpret_cast(Uint16*, buffer), imageColumns, imageRows); + } +- else if (imagePlanarConfiguration == 0 && params.ilv != ILV_SAMPLE && params.ilv != ILV_LINE) ++ else if (imagePlanarConfiguration == 0 && params.interleaveMode != charls::InterleaveMode::Sample && ++ params.interleaveMode != charls::InterleaveMode::Line) + { + // The dataset says this should be planarConfiguration == 0, but + // it isn't -> convert it. +diff -ru dcmtk/dcmjpls/libsrc/djcodece.cc dcmtk-3.6.4.new/dcmjpls/libsrc/djcodece.cc +--- dcmtk/dcmjpls/libsrc/djcodece.cc 2019-01-12 16:13:14.012002607 +0100 ++++ dcmtk-3.6.4.new/dcmjpls/libsrc/djcodece.cc 2019-01-12 16:04:27.288002315 +0100 +@@ -55,7 +55,7 @@ + #include "dcmtk/dcmimgle/dcmimage.h" /* for class DicomImage */ + + // JPEG-LS library (CharLS) includes +-#include "CharLS/interface.h" ++#include "CharLS/charls.h" + + BEGIN_EXTERN_C + #ifdef HAVE_FCNTL_H +@@ -70,6 +70,15 @@ + END_EXTERN_C + + ++#ifndef BYTE ++using BYTE=unsigned char; ++#endif ++ ++using charls::ApiResult; ++using charls::InterleaveMode; ++using charls::ColorTransformation; ++ ++ + E_TransferSyntax DJLSLosslessEncoder::supportedTransferSyntax() const + { + return EXS_JPEGLSLossless; +@@ -568,13 +577,13 @@ + + // Set up the information structure for CharLS + OFBitmanipTemplate::zeroMem((char *) &jls_params, sizeof(jls_params)); +- jls_params.bitspersample = bitsAllocated; ++ jls_params.bitsPerSample = bitsAllocated; + jls_params.height = height; + jls_params.width = width; +- jls_params.allowedlossyerror = 0; // must be zero for raw mode ++ jls_params.allowedLossyError = 0; // must be zero for raw mode + jls_params.outputBgr = false; + // No idea what this one does, but I don't think DICOM says anything about it +- jls_params.colorTransform = 0; ++ jls_params.colorTransformation = ColorTransformation::None; + + // Unset: jls_params.jfif (thumbnail, dpi) + +@@ -596,15 +605,15 @@ + else + return EC_IllegalCall; + +- enum interleavemode ilv; ++ enum InterleaveMode ilv; + switch (planarConfiguration) + { + // ILV_LINE is not supported by DICOM + case 0: +- ilv = ILV_SAMPLE; ++ ilv = InterleaveMode::Sample; + break; + case 1: +- ilv = ILV_NONE; ++ ilv = InterleaveMode::None; + break; + default: + return EC_IllegalCall; +@@ -613,39 +622,39 @@ + switch (djcp->getJplsInterleaveMode()) + { + case DJLSCodecParameter::interleaveSample: +- jls_params.ilv = ILV_SAMPLE; ++ jls_params.interleaveMode = InterleaveMode::Sample; + break; + case DJLSCodecParameter::interleaveLine: +- jls_params.ilv = ILV_LINE; ++ jls_params.interleaveMode = InterleaveMode::Line; + break; + case DJLSCodecParameter::interleaveNone: +- jls_params.ilv = ILV_NONE; ++ jls_params.interleaveMode = InterleaveMode::None; + break; + case DJLSCodecParameter::interleaveDefault: + default: + // In default mode we just never convert the image to another + // interleave-mode. Instead, we use what is already there. +- jls_params.ilv = ilv; ++ jls_params.interleaveMode = ilv; + break; + } + +- // Special case: one component images are always ILV_NONE (Standard requires this) ++ // Special case: one component images are always InterleaveMode::None (Standard requires this) + if (jls_params.components == 1) + { +- jls_params.ilv = ILV_NONE; ++ jls_params.interleaveMode = InterleaveMode::None; + // Don't try to convert to another interleave mode, not necessary +- ilv = ILV_NONE; ++ ilv = InterleaveMode::None; + } + + // Do we have to convert the image to some other interleave mode? +- if ((jls_params.ilv == ILV_NONE && (ilv == ILV_SAMPLE || ilv == ILV_LINE)) || +- (ilv == ILV_NONE && (jls_params.ilv == ILV_SAMPLE || jls_params.ilv == ILV_LINE))) ++ if ((jls_params.interleaveMode == InterleaveMode::None && (ilv == InterleaveMode::Sample || ilv == InterleaveMode::Line)) || ++ (ilv == InterleaveMode::None && (jls_params.interleaveMode == InterleaveMode::Sample || jls_params.interleaveMode == InterleaveMode::Line))) + { +- DCMJPLS_DEBUG("Converting image from " << (ilv == ILV_NONE ? "color-by-plane" : "color-by-pixel") +- << " to " << (jls_params.ilv == ILV_NONE ? "color-by-plane" : "color-by-pixel")); ++ DCMJPLS_DEBUG("Converting image from " << (ilv == InterleaveMode::None ? "color-by-plane" : "color-by-pixel") ++ << " to " << (jls_params.interleaveMode == InterleaveMode::None ? "color-by-plane" : "color-by-pixel")); + + frameBuffer = new Uint8[frameSize]; +- if (jls_params.ilv == ILV_NONE) ++ if (jls_params.interleaveMode == InterleaveMode::None) + result = convertToUninterleaved(frameBuffer, framePointer, samplesPerPixel, width, height, bitsAllocated); + else + /* For CharLS, sample-interleaved and line-interleaved is both expected to +@@ -664,7 +673,7 @@ + + size_t bytesWritten = 0; + +- JLS_ERROR err = JpegLsEncode(&buffer, size, &bytesWritten, framePointer, frameSize, &jls_params); ++ auto err = JpegLsEncode(&buffer, size, &bytesWritten, framePointer, frameSize, &jls_params, NULL); + result = DJLSError::convert(err); + + if (result.good()) +@@ -997,11 +1006,11 @@ + OFBitmanipTemplate::zeroMem((char *) &jls_params, sizeof(jls_params)); + jls_params.height = height; + jls_params.width = width; +- jls_params.allowedlossyerror = nearLosslessDeviation; ++ jls_params.allowedLossyError = nearLosslessDeviation; + jls_params.outputBgr = false; +- jls_params.bitspersample = depth; ++ jls_params.bitsPerSample = depth; + // No idea what this one does, but I don't think DICOM says anything about it +- jls_params.colorTransform = 0; ++ jls_params.colorTransformation = ColorTransformation::None; + + // This was already checked for a sane value above + jls_params.components = samplesPerPixel; +@@ -1009,11 +1018,11 @@ + { + case EPR_Uint8: + case EPR_Sint8: +- jls_params.bitspersample = 8; ++ jls_params.bitsPerSample = 8; + break; + case EPR_Uint16: + case EPR_Sint16: +- jls_params.bitspersample = 16; ++ jls_params.bitsPerSample = 16; + break; + default: + // Everything else was already handled above and can't happen here +@@ -1033,37 +1042,37 @@ + switch (djcp->getJplsInterleaveMode()) + { + case DJLSCodecParameter::interleaveSample: +- jls_params.ilv = ILV_SAMPLE; ++ jls_params.interleaveMode = InterleaveMode::Sample; + break; + case DJLSCodecParameter::interleaveLine: +- jls_params.ilv = ILV_LINE; ++ jls_params.interleaveMode = InterleaveMode::Line; + break; + case DJLSCodecParameter::interleaveNone: +- jls_params.ilv = ILV_NONE; ++ jls_params.interleaveMode = InterleaveMode::None; + break; + case DJLSCodecParameter::interleaveDefault: + default: +- // Default for the cooked encoder is always ILV_LINE +- jls_params.ilv = ILV_LINE; ++ // Default for the cooked encoder is always InterleaveMode::LINE ++ jls_params.interleaveMode = InterleaveMode::Line; + break; + } + +- // Special case: one component images are always ILV_NONE (Standard requires this) ++ // Special case: one component images are always InterleaveMode::None (Standard requires this) + if (jls_params.components == 1) + { +- jls_params.ilv = ILV_NONE; ++ jls_params.interleaveMode = InterleaveMode::None; + } + + Uint8 *frameBuffer = NULL; + Uint8 *framePointer = buffer; + // Do we have to convert the image to color-by-plane now? +- if (jls_params.ilv == ILV_NONE && jls_params.components != 1) ++ if (jls_params.interleaveMode == InterleaveMode::None && jls_params.components != 1) + { + DCMJPLS_DEBUG("Converting image from color-by-pixel to color-by-plane"); + + frameBuffer = new Uint8[buffer_size]; + framePointer = frameBuffer; +- result = convertToUninterleaved(frameBuffer, buffer, samplesPerPixel, width, height, jls_params.bitspersample); ++ result = convertToUninterleaved(frameBuffer, buffer, samplesPerPixel, width, height, jls_params.bitsPerSample); + } + + size_t compressed_buffer_size = buffer_size + 1024; +@@ -1071,7 +1080,7 @@ + + size_t bytesWritten = 0; + +- JLS_ERROR err = JpegLsEncode(&compressed_buffer, compressed_buffer_size, &bytesWritten, framePointer, buffer_size, &jls_params); ++ auto err = JpegLsEncode(&compressed_buffer, compressed_buffer_size, &bytesWritten, framePointer, buffer_size, &jls_params, NULL); + result = DJLSError::convert(err); + + if (result.good()) +diff -ru dcmtk/dcmjpls/libsrc/djerror.h dcmtk-3.6.4.new/dcmjpls/libsrc/djerror.h +--- dcmtk/dcmjpls/libsrc/djerror.h 2019-01-12 16:13:14.012002607 +0100 ++++ dcmtk-3.6.4.new/dcmjpls/libsrc/djerror.h 2019-01-12 15:46:22.784001713 +0100 +@@ -24,7 +24,7 @@ + + #include "dcmtk/config/osconfig.h" + #include "dcmtk/dcmjpls/djlsutil.h" /* For the OFCondition codes */ +-#include "CharLS/interface.h" /* CharLS include */ ++#include "CharLS/charls.h" /* CharLS include */ + + /** Helper class for converting between dcmjpls and CharLS error codes + */ +@@ -40,29 +40,29 @@ + * @param error The CharLS error code + * @return The OFCondition + */ +- static const OFConditionConst& convert(JLS_ERROR error) ++ static const OFConditionConst& convert(CharlsApiResultType error) + { + switch (error) + { +- case OK: ++ case charls::ApiResult::OK: + return EC_Normal; +- case UncompressedBufferTooSmall: ++ case charls::ApiResult::UncompressedBufferTooSmall: + return EC_JLSUncompressedBufferTooSmall; +- case CompressedBufferTooSmall: ++ case charls::ApiResult::CompressedBufferTooSmall: + return EC_JLSCompressedBufferTooSmall; +- case ImageTypeNotSupported: ++ case charls::ApiResult::ImageTypeNotSupported: + return EC_JLSCodecUnsupportedImageType; +- case InvalidJlsParameters: ++ case charls::ApiResult::InvalidJlsParameters: + return EC_JLSCodecInvalidParameters; +- case ParameterValueNotSupported: ++ case charls::ApiResult::ParameterValueNotSupported: + return EC_JLSCodecUnsupportedValue; +- case InvalidCompressedData: ++ case charls::ApiResult::InvalidCompressedData: + return EC_JLSInvalidCompressedData; +- case UnsupportedBitDepthForTransform: ++ case charls::ApiResult::UnsupportedBitDepthForTransform: + return EC_JLSUnsupportedBitDepthForTransform; +- case UnsupportedColorTransform: ++ case charls::ApiResult::UnsupportedColorTransform: + return EC_JLSUnsupportedColorTransform; +- case TooMuchCompressedData: ++ case charls::ApiResult::TooMuchCompressedData: + return EC_JLSTooMuchCompressedData; + default: + return EC_IllegalParameter; diff --git a/patches/0cf6b12d8ea0b727f0fe2ab076b6f180100fbd30.patch b/patches/0cf6b12d8ea0b727f0fe2ab076b6f180100fbd30.patch new file mode 100644 index 00000000..c420e622 --- /dev/null +++ b/patches/0cf6b12d8ea0b727f0fe2ab076b6f180100fbd30.patch @@ -0,0 +1,178 @@ +From 0cf6b12d8ea0b727f0fe2ab076b6f180100fbd30 Mon Sep 17 00:00:00 2001 +From: Michael Onken +Date: Thu, 25 Nov 2021 11:59:16 +0100 +Subject: [PATCH] Remove some typos in the codebase. + + * Concatentation -> Concatenation + * intialized -> initialized + * "permits to" -> "permits one to" + * "allow to" -> "allow one to" + * "allows to" -> "allows one to" + * truely -> truly + * additonal -> additional + +Thanks to GitHub user "malaterre" for the report and suggested fix. +--- + dcmfg/libsrc/concatenationcreator.cc | 2 +- + dcmfg/libsrc/concatenationloader.cc | 6 +++--- + dcmfg/tests/t_concatenation_loader.cc | 12 ++++++------ + dcmjpeg/docs/dcmcjpeg.man | 2 +- + dcmpstat/apps/dcmpsmk.cc | 2 +- + dcmpstat/docs/dcmp2pgm.man | 2 +- + dcmpstat/docs/dcmprscp.man | 2 +- + dcmpstat/docs/dcmpsmk.man | 2 +- + dcmwlm/docs/wlmscpfs.man | 2 +- + 9 files changed, 16 insertions(+), 16 deletions(-) + +Index: dcmtk/dcmfg/libsrc/concatenationcreator.cc +=================================================================== +--- dcmtk.orig/dcmfg/libsrc/concatenationcreator.cc ++++ dcmtk/dcmfg/libsrc/concatenationcreator.cc +@@ -246,7 +246,7 @@ size_t ConcatenationCreator::getNumInsta + OFCondition result = configureCommon(); + if (result.bad()) + { +- DCMFG_ERROR("Unable to compute number of instances for Concatenation, maybe input not intialized?)"); ++ DCMFG_ERROR("Unable to compute number of instances for Concatenation, maybe input not initialized?)"); + return 0; + } + } +Index: dcmtk/dcmfg/libsrc/concatenationloader.cc +=================================================================== +--- dcmtk.orig/dcmfg/libsrc/concatenationloader.cc ++++ dcmtk/dcmfg/libsrc/concatenationloader.cc +@@ -445,7 +445,7 @@ OFCondition ConcatenationLoader::insertD + char buf[100]; + dcmGenerateUniqueIdentifier(buf, SITE_INSTANCE_UID_ROOT); + uid = buf; +- DCMFG_WARN("SOP Instance UID of Concatentation Source (0020,0242) not set, created new SOP Instance UID " ++ DCMFG_WARN("SOP Instance UID of Concatenation Source (0020,0242) not set, created new SOP Instance UID " + << uid); + } + OFCondition result = m_Result->putAndInsertOFStringArray(DCM_SOPInstanceUID, uid); +@@ -551,8 +551,8 @@ void ConcatenationLoader::Info::print(OF + { + out << "Concatenation UID* : " << m_ConcatenationUID << OFendl; + out << " SOP Class UID* : " << m_SOPClassUID << OFendl; +- out << " Concatentation Source UID* : " << m_SourceUID << OFendl; +- out << " Concatentation Source File : " << m_FileConatenationSource << OFendl; ++ out << " Concatenation Source UID* : " << m_SourceUID << OFendl; ++ out << " Concatenation Source File : " << m_FileConatenationSource << OFendl; + out << " Number of Frames (computed): " << m_NumTotalFrames << OFendl; + out << " In-conc. Total Number : " << m_inConcatTotalNumber << OFendl; + out << " Patient ID : " << m_PatientID << OFendl; +Index: dcmtk/dcmfg/tests/t_concatenation_loader.cc +=================================================================== +--- dcmtk.orig/dcmfg/tests/t_concatenation_loader.cc ++++ dcmtk/dcmfg/tests/t_concatenation_loader.cc +@@ -114,8 +114,8 @@ static void prepare_scan_dump() + { + SCAN_DUMP += "Concatenation UID* : 1.3.6.1.4.1.5962.1.7.70.2.1.1166562673.14401\n"; + SCAN_DUMP += " SOP Class UID* : 1.2.840.10008.5.1.4.1.1.2.1\n"; +- SCAN_DUMP += " Concatentation Source UID* : \n"; +- SCAN_DUMP += " Concatentation Source File : \n"; ++ SCAN_DUMP += " Concatenation Source UID* : \n"; ++ SCAN_DUMP += " Concatenation Source File : \n"; + SCAN_DUMP += " Number of Frames (computed): 60\n"; + SCAN_DUMP += " In-conc. Total Number : 6\n"; + SCAN_DUMP += " Patient ID : 0070\n"; +@@ -152,8 +152,8 @@ static void prepare_scan_dump() + SCAN_DUMP += "--------------------------------------------------------------\n"; + SCAN_DUMP += "Concatenation UID* : 1.3.6.1.4.1.5962.1.7.70.2.2.1166562673.14401\n"; + SCAN_DUMP += " SOP Class UID* : 1.2.840.10008.5.1.4.1.1.2.1\n"; +- SCAN_DUMP += " Concatentation Source UID* : \n"; +- SCAN_DUMP += " Concatentation Source File : \n"; ++ SCAN_DUMP += " Concatenation Source UID* : \n"; ++ SCAN_DUMP += " Concatenation Source File : \n"; + SCAN_DUMP += " Number of Frames (computed): 30\n"; + SCAN_DUMP += " In-conc. Total Number : 3\n"; + SCAN_DUMP += " Patient ID : 0070\n"; +@@ -178,8 +178,8 @@ static void prepare_scan_dump() + SCAN_DUMP += "--------------------------------------------------------------\n"; + SCAN_DUMP += "Concatenation UID* : 1.3.6.1.4.1.5962.1.7.70.2.3.1166562673.14401\n"; + SCAN_DUMP += " SOP Class UID* : 1.2.840.10008.5.1.4.1.1.2.1\n"; +- SCAN_DUMP += " Concatentation Source UID* : \n"; +- SCAN_DUMP += " Concatentation Source File : \n"; ++ SCAN_DUMP += " Concatenation Source UID* : \n"; ++ SCAN_DUMP += " Concatenation Source File : \n"; + SCAN_DUMP += " Number of Frames (computed): 30\n"; + SCAN_DUMP += " In-conc. Total Number : 3\n"; + SCAN_DUMP += " Patient ID : 0070\n"; +Index: dcmtk/dcmjpeg/docs/dcmcjpeg.man +=================================================================== +--- dcmtk.orig/dcmjpeg/docs/dcmcjpeg.man ++++ dcmtk/dcmjpeg/docs/dcmcjpeg.man +@@ -148,7 +148,7 @@ lossless JPEG codec selection: + +tl --true-lossless + true lossless codec (default) + +- # This option selects an encoder, that guarantees truely lossless ++ # This option selects an encoder, that guarantees truly lossless + # image compression. See NOTES for further information. + + +pl --pseudo-lossless +Index: dcmtk/dcmpstat/apps/dcmpsmk.cc +=================================================================== +--- dcmtk.orig/dcmpstat/apps/dcmpsmk.cc ++++ dcmtk/dcmpstat/apps/dcmpsmk.cc +@@ -311,7 +311,7 @@ int main(int argc, char *argv[]) + /* add additional image references to pstate */ + if (cmd.getParamCount() > 2) + { +- OFLOG_INFO(dcmpsmkLogger, "adding additonal image reference(s)"); ++ OFLOG_INFO(dcmpsmkLogger, "adding additional image reference(s)"); + const int count = cmd.getParamCount(); + for (int i = 2; i < count; i++) + { +Index: dcmtk/dcmpstat/docs/dcmp2pgm.man +=================================================================== +--- dcmtk.orig/dcmpstat/docs/dcmp2pgm.man ++++ dcmtk/dcmpstat/docs/dcmp2pgm.man +@@ -19,7 +19,7 @@ a grayscale softcopy presentation state + with 8 bits/pixel. The bitmap is stored either as "Portable Gray Map" (PGM) + or as a DICOM secondary capture image object. If no presentation state is + read from file, a default presentation state is created. The utility allows +-to read a configuration file of the Softcopy Presentation State Viewer upon ++one to read a configuration file of the Softcopy Presentation State Viewer upon + startup. In this case, the settings from the configuration file affecting + the rendering of the presentation state are used, e.g. a correction of the + gray scale range according to Barten's model (DICOM part 14) can be +Index: dcmtk/dcmpstat/docs/dcmprscp.man +=================================================================== +--- dcmtk.orig/dcmpstat/docs/dcmprscp.man ++++ dcmtk/dcmpstat/docs/dcmprscp.man +@@ -22,7 +22,7 @@ The \b dcmprscp utility accepts print jo + not create real hardcopies but stores print jobs in the local DICOMscope + database as a set of Stored Print objects (one per page) and Hardcopy + Grayscale images (one per film box N-SET). The DICOMscope application allows +-to load a Stored Print object created by \b dcmprscp and to render a screen ++one to load a Stored Print object created by \b dcmprscp and to render a screen + preview of the hardcopy. The \b dcmprscp utility reads the characteristics of + the printer to be emulated from the configuration file. + +Index: dcmtk/dcmpstat/docs/dcmpsmk.man +=================================================================== +--- dcmtk.orig/dcmpstat/docs/dcmpsmk.man ++++ dcmtk/dcmpstat/docs/dcmpsmk.man +@@ -17,7 +17,7 @@ dcmpsmk [options] dcmfile-in dcmfile-out + The \b dcmpsmk utility reads a DICOM image file and creates a grayscale + softcopy presentation state object according to Supplement 33. The + presentation state object is written back to file. A number of command line +-options allow to specify how certain constructs that might be present in ++options allow one to specify how certain constructs that might be present in + the image file should be referenced or activated in the presentation state. + The newly created presentation state references the source image and + contains values that should allow for a "reasonable" display of the image +Index: dcmtk/dcmwlm/docs/wlmscpfs.man +=================================================================== +--- dcmtk.orig/dcmwlm/docs/wlmscpfs.man ++++ dcmtk/dcmwlm/docs/wlmscpfs.man +@@ -263,7 +263,7 @@ within the given directory. By default, + This should work as a default for most applications that would like to use + request files and want to ensure unique file names. If it is desired to change + this naming scheme, the option \e --request-file-format can be used. It +-permits to specify the file naming pattern used by \e --request-file-path. ++permits one to specify the file naming pattern used by \e --request-file-path. + + For flexibility, the following placeholders can be used in the pattern provided + for \e --request-file-format: diff --git a/patches/1c8cca4bf6f7c92fc16f9e66faf49409c891a2b0.patch b/patches/1c8cca4bf6f7c92fc16f9e66faf49409c891a2b0.patch new file mode 100644 index 00000000..cba4aa65 --- /dev/null +++ b/patches/1c8cca4bf6f7c92fc16f9e66faf49409c891a2b0.patch @@ -0,0 +1,90 @@ +From 1c8cca4bf6f7c92fc16f9e66faf49409c891a2b0 Mon Sep 17 00:00:00 2001 +From: Marco Eichelberg +Date: Fri, 5 Feb 2021 17:50:44 +0100 +Subject: [PATCH] Adjusted the number of digits printed for FL and FD. + +Adjusted the number of digits printed for FL elements to FLT_DECIMAL_DIG +(9) instead of 8, to make sure that the printed values can be converted +back to FL without loss. Fixed comment for FD, where the values was +already correct. + +Thanks to Mathieu Malaterre for pointing +out the issue. +--- + dcmdata/libsrc/dcvrfd.cc | 8 ++++---- + dcmdata/libsrc/dcvrfl.cc | 8 ++++---- + 2 files changed, 8 insertions(+), 8 deletions(-) + +diff --git a/dcmdata/libsrc/dcvrfd.cc b/dcmdata/libsrc/dcvrfd.cc +index 72d9dd5f8..3fabe0a7f 100644 +--- a/dcmdata/libsrc/dcvrfd.cc ++++ b/dcmdata/libsrc/dcvrfd.cc +@@ -1,6 +1,6 @@ + /* + * +- * Copyright (C) 1994-2020, OFFIS e.V. ++ * Copyright (C) 1994-2021, OFFIS e.V. + * All rights reserved. See COPYRIGHT file for details. + * + * This software and supporting documentation were developed by +@@ -190,11 +190,11 @@ void DcmFloatingPointDouble::print(STD_NAMESPACE ostream &out, + { + /* check whether first value is printed (omit delimiter) */ + if (i == 0) +- OFStandard::ftoa(buffer, sizeof(buffer), *doubleVals, 0, 0, 17 /* DBL_DIG + 2 for DICOM FD */); ++ OFStandard::ftoa(buffer, sizeof(buffer), *doubleVals, 0, 0, 17 /* DBL_DECIMAL_DIG for DICOM FD */); + else + { + buffer[0] = '\\'; +- OFStandard::ftoa(buffer + 1, sizeof(buffer) - 1, *doubleVals, 0, 0, 17 /* DBL_DIG + 2 for DICOM FD */); ++ OFStandard::ftoa(buffer + 1, sizeof(buffer) - 1, *doubleVals, 0, 0, 17 /* DBL_DECIMAL_DIG for DICOM FD */); + } + /* check whether current value sticks to the length limit */ + newLength = printedLength + OFstatic_cast(unsigned long, strlen(buffer)); +@@ -273,7 +273,7 @@ OFCondition DcmFloatingPointDouble::getOFString(OFString &stringVal, + { + /* ... and convert it to a character string */ + char buffer[64]; +- OFStandard::ftoa(buffer, sizeof(buffer), doubleVal, 0, 0, 17 /* DBL_DIG + 2 for DICOM FD */); ++ OFStandard::ftoa(buffer, sizeof(buffer), doubleVal, 0, 0, 17 /* DBL_DECIMAL_DIG for DICOM FD */); + /* assign result */ + stringVal = buffer; + } +diff --git a/dcmdata/libsrc/dcvrfl.cc b/dcmdata/libsrc/dcvrfl.cc +index 5eb83fafc..0934af4f1 100644 +--- a/dcmdata/libsrc/dcvrfl.cc ++++ b/dcmdata/libsrc/dcvrfl.cc +@@ -1,6 +1,6 @@ + /* + * +- * Copyright (C) 1994-2020, OFFIS e.V. ++ * Copyright (C) 1994-2021, OFFIS e.V. + * All rights reserved. See COPYRIGHT file for details. + * + * This software and supporting documentation were developed by +@@ -192,11 +192,11 @@ void DcmFloatingPointSingle::print(STD_NAMESPACE ostream &out, + { + /* check whether first value is printed (omit delimiter) */ + if (i == 0) +- OFStandard::ftoa(buffer, sizeof(buffer), *floatVals, 0, 0, 8 /* FLT_DIG + 2 for DICOM FL */); ++ OFStandard::ftoa(buffer, sizeof(buffer), *floatVals, 0, 0, 9 /* FLT_DECIMAL_DIG for DICOM FL */); + else + { + buffer[0] = '\\'; +- OFStandard::ftoa(buffer + 1, sizeof(buffer) - 1, *floatVals, 0, 0, 8 /* FLT_DIG + 2 for DICOM FL */); ++ OFStandard::ftoa(buffer + 1, sizeof(buffer) - 1, *floatVals, 0, 0, 9 /* FLT_DECIMAL_DIG for DICOM FL */); + } + /* check whether current value sticks to the length limit */ + newLength = printedLength + OFstatic_cast(unsigned long, strlen(buffer)); +@@ -275,7 +275,7 @@ OFCondition DcmFloatingPointSingle::getOFString(OFString &value, + { + /* ... and convert it to a character string */ + char buffer[64]; +- OFStandard::ftoa(buffer, sizeof(buffer), floatVal, 0, 0, 8 /* FLT_DIG + 2 for DICOM FL */); ++ OFStandard::ftoa(buffer, sizeof(buffer), floatVal, 0, 0, 9 /* FLT_DECIMAL_DIG for DICOM FL */); + /* assign result */ + value = buffer; + } +-- +2.30.2 + diff --git a/patches/3ae202ee9d8f27054ad0c463a6799d8b10b4864b.patch b/patches/3ae202ee9d8f27054ad0c463a6799d8b10b4864b.patch new file mode 100644 index 00000000..4459999c --- /dev/null +++ b/patches/3ae202ee9d8f27054ad0c463a6799d8b10b4864b.patch @@ -0,0 +1,138 @@ +From 3ae202ee9d8f27054ad0c463a6799d8b10b4864b Mon Sep 17 00:00:00 2001 +From: Joerg Riesmeier +Date: Thu, 30 Sep 2021 13:48:42 +0200 +Subject: [PATCH] Converted non-ASCII characters to ASCII. + +Thanks to GitHub user "malaterre" for the report and suggested fix. +--- + dcmect/libsrc/enhanced_ct.cc | 4 ++-- + dcmfg/libsrc/concatenationloader.cc | 4 ++-- + dcmiod/include/dcmtk/dcmiod/modsopcommon.h | 6 +++--- + dcmseg/include/dcmtk/dcmseg/segment.h | 6 +++--- + dcmtls/include/dcmtk/dcmtls/tlsciphr.h | 6 +++--- + 5 files changed, 13 insertions(+), 13 deletions(-) + +diff --git a/dcmect/libsrc/enhanced_ct.cc b/dcmect/libsrc/enhanced_ct.cc +index 007cb8813..619374290 100644 +--- a/dcmect/libsrc/enhanced_ct.cc ++++ b/dcmect/libsrc/enhanced_ct.cc +@@ -1,6 +1,6 @@ + /* + * +- * Copyright (C) 2019, Open Connections GmbH ++ * Copyright (C) 2019-2021, Open Connections GmbH + * All rights reserved. See COPYRIGHT file for details. + * + * This software and supporting documentation are maintained by +@@ -480,7 +480,7 @@ OFCondition EctEnhancedCT::loadDataset(DcmDataset& dataset, EctEnhancedCT*& ct) + else + { + DCMECT_ERROR("Invalid SOP Class: " +- << sopClass << ", only Enhanced CT Image Storage (1.2.840.10008.5.1.4.1.1.2.1​) supported"); ++ << sopClass << ", only Enhanced CT Image Storage (1.2.840.10008.5.1.4.1.1.2.1) supported"); + return ECT_InvalidSOPClass; + } + } +diff --git a/dcmfg/libsrc/concatenationloader.cc b/dcmfg/libsrc/concatenationloader.cc +index 3833ddc4f..aad76f69f 100644 +--- a/dcmfg/libsrc/concatenationloader.cc ++++ b/dcmfg/libsrc/concatenationloader.cc +@@ -1,6 +1,6 @@ + /* + * +- * Copyright (C) 2019-2020, Open Connections GmbH ++ * Copyright (C) 2019-2021, Open Connections GmbH + * All rights reserved. See COPYRIGHT file for details. + * + * This software and supporting documentation are maintained by +@@ -445,7 +445,7 @@ OFCondition ConcatenationLoader::insertDestinationAttributes() + char buf[100]; + dcmGenerateUniqueIdentifier(buf, SITE_INSTANCE_UID_ROOT); + uid = buf; +- DCMFG_WARN("SOP Instance UID of Concatentation Source (0020,0242)​ not set, created new SOP Instance UID " ++ DCMFG_WARN("SOP Instance UID of Concatentation Source (0020,0242) not set, created new SOP Instance UID " + << uid); + } + OFCondition result = m_Result->putAndInsertOFStringArray(DCM_SOPInstanceUID, uid); +diff --git a/dcmiod/include/dcmtk/dcmiod/modsopcommon.h b/dcmiod/include/dcmtk/dcmiod/modsopcommon.h +index fab033e3f..27f433ad2 100644 +--- a/dcmiod/include/dcmtk/dcmiod/modsopcommon.h ++++ b/dcmiod/include/dcmtk/dcmiod/modsopcommon.h +@@ -1,6 +1,6 @@ + /* + * +- * Copyright (C) 2015-2019, Open Connections GmbH ++ * Copyright (C) 2015-2021, Open Connections GmbH + * All rights reserved. See COPYRIGHT file for details. + * + * This software and supporting documentation are maintained by +@@ -177,8 +177,8 @@ public: + + /** Set Timezone Offset From UTC + * @param value Value to be set (single value only) or "" for no value. +- * Encoded as an ASCII string in the format “&ZZXX”. The components of this +- * string, from left to right, are & = “+” or “-”, and ZZ = Hours and ++ * Encoded as an ASCII string in the format "&ZZXX". The components of this ++ * string, from left to right, are & = "+" or "-", and ZZ = Hours and + * XX = Minutes of offset. + * @param checkValue Check 'value' for conformance with VR (SH) and VM (1) if enabled + * @return EC_Normal if successful, an error code otherwise +diff --git a/dcmseg/include/dcmtk/dcmseg/segment.h b/dcmseg/include/dcmtk/dcmseg/segment.h +index f7987c0c9..8c887a531 100644 +--- a/dcmseg/include/dcmtk/dcmseg/segment.h ++++ b/dcmseg/include/dcmtk/dcmseg/segment.h +@@ -1,6 +1,6 @@ + /* + * +- * Copyright (C) 2015-2019, Open Connections GmbH ++ * Copyright (C) 2015-2021, Open Connections GmbH + * All rights reserved. See COPYRIGHT file for details. + * + * This software and supporting documentation are maintained by +@@ -58,10 +58,10 @@ public: + * successful; memory is allocated by the function + * @param segmentLabel Free text label for the segment + * @param segmentedPropertyCategory The segmented property category. +- * Baseline CID 7150 “Segmentation Property Categories” should be ++ * Baseline CID 7150 "Segmentation Property Categories" should be + * used. + * @param segmentedPropertyType The segmented property type. Baseline CID +- * 7151 “Segmentation Property Types” ++ * 7151 "Segmentation Property Types" + * @param algoType The algorithm type used for segmenting this segment + * @param algoName Algorithm name (required if algoType is not MANUAL) + * @return EC_Normal if creation was successful, error otherwise +diff --git a/dcmtls/include/dcmtk/dcmtls/tlsciphr.h b/dcmtls/include/dcmtk/dcmtls/tlsciphr.h +index 6ffd4a962..c3ad28794 100644 +--- a/dcmtls/include/dcmtk/dcmtls/tlsciphr.h ++++ b/dcmtls/include/dcmtk/dcmtls/tlsciphr.h +@@ -132,7 +132,7 @@ enum DcmTLSCipherKeyExchange + /// Static RSA key exchange + TKE_RSA, + +- /// Elliptic Curve Diffie–Hellman ++ /// Elliptic Curve Diffie-Hellman + TKE_ECDH, + + /// Fixed ECDH with ECDSA-signed certificates +@@ -141,7 +141,7 @@ enum DcmTLSCipherKeyExchange + /// Fixed ECDH with RSA signatures + TKE_ECDH_RSA, + +- /// Diffie–Hellman key exchange ++ /// Diffie-Hellman key exchange + TKE_DH + + }; +@@ -157,7 +157,7 @@ enum DcmTLSCipherAuthentication + /// Digital Signature Standard + TCA_DSS, + +- /// Elliptic Curve Diffie–Hellman ++ /// Elliptic Curve Diffie-Hellman + TCA_ECDH, + + /// Elliptic Curve Digital Signature Algorithm +-- +2.30.2 + diff --git a/patches/ab61e8577ff0974efcfae2907c48baf6023c1160.patch b/patches/ab61e8577ff0974efcfae2907c48baf6023c1160.patch new file mode 100644 index 00000000..753437a8 --- /dev/null +++ b/patches/ab61e8577ff0974efcfae2907c48baf6023c1160.patch @@ -0,0 +1,25 @@ +From ab61e8577ff0974efcfae2907c48baf6023c1160 Mon Sep 17 00:00:00 2001 +From: Joerg Riesmeier +Date: Thu, 30 Sep 2021 13:08:23 +0200 +Subject: [PATCH] Replaced German umlaut by its transliteration. + +Replaced German umlaut in code meaning by its transliteration. + +Thanks to GitHub user "malaterre" for the report. +--- + dcmsr/include/dcmtk/dcmsr/codes/dcm.h | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +Index: dcmtk/dcmsr/include/dcmtk/dcmsr/codes/dcm.h +=================================================================== +--- dcmtk.orig/dcmsr/include/dcmtk/dcmsr/codes/dcm.h ++++ dcmtk/dcmsr/include/dcmtk/dcmsr/codes/dcm.h +@@ -1630,7 +1630,7 @@ + #define CODE_DCM_Generic3DPlanning DSRBasicCodedEntry("112341", "DCM", "Generic 3D Planning") + #define CODE_DCM_GenericPlanningForHipReplacement DSRBasicCodedEntry("112342", "DCM", "Generic Planning for Hip Replacement") + #define CODE_DCM_GenericPlanningForKneeReplacement DSRBasicCodedEntry("112343", "DCM", "Generic Planning for Knee Replacement") +-#define CODE_DCM_MuellerMethodPlanningForHipReplacement DSRBasicCodedEntry("112344", "DCM", "Müller Method Planning for Hip Replacement") ++#define CODE_DCM_MuellerMethodPlanningForHipReplacement DSRBasicCodedEntry("112344", "DCM", "Mueller Method Planning for Hip Replacement") + #define CODE_DCM_ImplantationPlan DSRBasicCodedEntry("112345", "DCM", "Implantation Plan") + #define CODE_DCM_SelectedImplantComponent DSRBasicCodedEntry("112346", "DCM", "Selected Implant Component") + #define CODE_DCM_ComponentID DSRBasicCodedEntry("112347", "DCM", "Component ID") diff --git a/patches/bigendian.patch b/patches/bigendian.patch new file mode 100644 index 00000000..007020e7 --- /dev/null +++ b/patches/bigendian.patch @@ -0,0 +1,102 @@ +Author: Mathieu Malaterre +Description: Fix unit test suite on big endian machine + Concatenation of upstream commits: + . + - b499d89e769feffce03c5d7cefa1cb06d33a2b5b + - 9e8434a2952ae39d1f9d0914173b5cc5b1b32175 + - 4df0f42790b9952aa75c7242fbcc47a348922bc6 +Forwarded: not-needed + +Index: dcmtk/dcmect/tests/t_roundtrip.cc +=================================================================== +--- dcmtk.orig/dcmect/tests/t_roundtrip.cc ++++ dcmtk/dcmect/tests/t_roundtrip.cc +@@ -1,6 +1,6 @@ + /* + * +- * Copyright (C) 2019-2020, OFFIS e.V. ++ * Copyright (C) 2019-2021, OFFIS e.V. + * All rights reserved. See COPYRIGHT file for details. + * + * This software and supporting documentation were developed by +@@ -28,6 +28,9 @@ + + #include "dcmtk/dcmect/enhanced_ct.h" + ++#include "dcmtk/dcmdata/dcxfer.h" ++#include "dcmtk/dcmdata/dcswap.h" ++ + #include "dcmtk/dcmfg/concatenationcreator.h" + #include "dcmtk/dcmfg/concatenationloader.h" + #include "dcmtk/dcmfg/fgctacquisitiondetails.h" +@@ -295,7 +298,6 @@ static void addSharedFGs(EctEnhancedCT* + OFCHECK(exp_item->setCTDIVol(0.1).good()); + CodeSequenceMacro* phantom_item = new CodeSequenceMacro("113682", "DCM", "ACR Accreditation Phantom - CT"); + exp_item->getCTDIPhantomTypeCodeSequence().push_back(phantom_item); +- OFCHECK(exp_item->setEstimatedDoseSaving(0.2).good()); + OFCHECK(exp_item->setExposureInMas(0.3).good()); + OFCHECK(exp_item->setExposureModulationType("WEIRD").good()); + OFCHECK(exp_item->setExposureTimeInMs(0.4).good()); +@@ -619,6 +621,7 @@ static void checkConcatenationInstance(s + // Check that all pixels are set to their original source instances frame number (starting from 1) + for (size_t pix = 0; pix < NUM_PIXELS_PER_FRAME; pix++) + { ++ swapIfNecessary(gLocalByteOrder, EBO_LittleEndian, &frame[pix], 2, sizeof(Uint16)); + OFCHECK(frame[pix] == numInstance + 1); + } + delete concat; +@@ -658,7 +661,11 @@ static void prepareExpectedDump() + { + EXPECTED_DUMP += "\n"; + EXPECTED_DUMP += "# Dicom-Data-Set\n"; +- EXPECTED_DUMP += "# Used TransferSyntax: Little Endian Explicit\n"; ++ // DcmDataset.print() produces dumps in local endianess, so make sure the dump reflects the current machine ++ if (gLocalByteOrder == EBO_LittleEndian) ++ EXPECTED_DUMP += "# Used TransferSyntax: Little Endian Explicit\n"; ++ else ++ EXPECTED_DUMP += "# Used TransferSyntax: Big Endian Explicit\n"; + EXPECTED_DUMP += "(0008,0008) CS [ORIGINAL\\PRIMARY\\VOLUME\\MAXIMUM] # 32, 4 ImageType\n"; + EXPECTED_DUMP += "(0008,0016) UI =EnhancedCTImageStorage # 28, 1 SOPClassUID\n"; + EXPECTED_DUMP +@@ -789,7 +796,7 @@ static void prepareExpectedDump() + EXPECTED_DUMP += " (fffe,e00d) na (ItemDelimitationItem for re-encoding) # 0, 0 ItemDelimitationItem\n"; + EXPECTED_DUMP += " (fffe,e0dd) na (SequenceDelimitationItem for re-encod.) # 0, 0 SequenceDelimitationItem\n"; + EXPECTED_DUMP += " (0018,9321) SQ (Sequence with explicit length #=1) # 0, 1 CTExposureSequence\n"; +- EXPECTED_DUMP += " (fffe,e000) na (Item with explicit length #=10) # 0, 1 Item\n"; ++ EXPECTED_DUMP += " (fffe,e000) na (Item with explicit length #=9) # 0, 1 Item\n"; + EXPECTED_DUMP += " (0018,115e) DS [0.5] # 4, 1 " + "ImageAndFluoroscopyAreaDoseProduct\n"; + EXPECTED_DUMP +@@ -807,7 +814,6 @@ static void prepareExpectedDump() + += " (fffe,e0dd) na (SequenceDelimitationItem for re-encod.) # 0, 0 SequenceDelimitationItem\n"; + EXPECTED_DUMP + += " (0018,9323) CS [WEIRD] # 6, 1 ExposureModulationType\n"; +- EXPECTED_DUMP += " (0018,9324) FD 0.2 # 8, 1 EstimatedDoseSaving\n"; + EXPECTED_DUMP += " (0018,9328) FD 0.4 # 8, 1 ExposureTimeInms\n"; + EXPECTED_DUMP += " (0018,9330) FD 0.7 # 8, 1 XRayTubeCurrentInmA\n"; + EXPECTED_DUMP += " (0018,9332) FD 0.3 # 8, 1 ExposureInmAs\n"; +Index: dcmtk/dcmseg/tests/troundtrip.cc +=================================================================== +--- dcmtk.orig/dcmseg/tests/troundtrip.cc ++++ dcmtk/dcmseg/tests/troundtrip.cc +@@ -31,6 +31,7 @@ + #include "dcmtk/dcmfg/fgplanpo.h" + #include "dcmtk/dcmfg/fgseg.h" + #include "dcmtk/dcmiod/iodmacro.h" ++#include "dcmtk/dcmdata/dcxfer.h" + #include "dcmtk/ofstd/ofmem.h" + #include "dcmtk/ofstd/ofstrutl.h" + #include "dcmtk/ofstd/oftempf.h" +@@ -406,7 +407,11 @@ static void prepareExpectedDump() + { + EXPECTED_DUMP = "\n"; + EXPECTED_DUMP += "# Dicom-Data-Set\n"; +- EXPECTED_DUMP += "# Used TransferSyntax: Little Endian Explicit\n"; ++ // DcmDataset.print() produces dumps in local endianess, so make sure the dump reflects the current machine ++ if (gLocalByteOrder == EBO_LittleEndian) ++ EXPECTED_DUMP += "# Used TransferSyntax: Little Endian Explicit\n"; ++ else ++ EXPECTED_DUMP += "# Used TransferSyntax: Big Endian Explicit\n"; + EXPECTED_DUMP += "(0008,0008) CS [DERIVED\\PRIMARY] # 16, 2 ImageType\n"; + EXPECTED_DUMP += "(0008,0016) UI =SegmentationStorage # 28, 1 SOPClassUID\n"; + EXPECTED_DUMP diff --git a/patches/bug1000220.patch b/patches/bug1000220.patch new file mode 100644 index 00000000..68c27ac5 --- /dev/null +++ b/patches/bug1000220.patch @@ -0,0 +1,44 @@ +From 8f6c9ba05eb146310a6325fb8ab18dfb14c1a291 Mon Sep 17 00:00:00 2001 +From: Joerg Riesmeier +Date: Mon, 22 Nov 2021 18:54:35 +0100 +Subject: [PATCH] Replaced OFListIterator by OFListConstIterator. + +Replaced type of iterator variable to OFListConstIterator to avoid +compiler errors reported by gcc when compiling DICOMscope with STL +and C++14 support enabled. + +Thanks to GitHub user "malaterre" for the report and suggested fix. +--- + dcmsr/include/dcmtk/dcmsr/dsrtlist.h | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/dcmsr/include/dcmtk/dcmsr/dsrtlist.h b/dcmsr/include/dcmtk/dcmsr/dsrtlist.h +index 5ec109aca..31759b851 100644 +--- a/dcmsr/include/dcmtk/dcmsr/dsrtlist.h ++++ b/dcmsr/include/dcmtk/dcmsr/dsrtlist.h +@@ -1,6 +1,6 @@ + /* + * +- * Copyright (C) 2000-2018, OFFIS e.V. ++ * Copyright (C) 2000-2021, OFFIS e.V. + * All rights reserved. See COPYRIGHT file for details. + * + * This software and supporting documentation were developed by +@@ -282,7 +282,7 @@ template class DSRListOfItems + ItemList.push_back(item); + result = EC_Normal; + } else { +- OFLIST_TYPENAME OFListIterator(T) iterator = ItemList.begin(); ++ OFLIST_TYPENAME OFListConstIterator(T) iterator = ItemList.begin(); + if (gotoItemPos(idx, iterator)) + { + ItemList.insert(iterator, 1, item); +@@ -299,7 +299,7 @@ template class DSRListOfItems + OFCondition removeItem(const size_t idx) + { + OFCondition result = EC_IllegalParameter; +- OFLIST_TYPENAME OFListIterator(T) iterator = ItemList.begin(); ++ OFLIST_TYPENAME OFListConstIterator(T) iterator = ItemList.begin(); + if (gotoItemPos(idx, iterator)) + { + ItemList.erase(iterator); diff --git a/patches/c34f4e46e672ad21accf04da0dc085e43be6f5e1.patch b/patches/c34f4e46e672ad21accf04da0dc085e43be6f5e1.patch new file mode 100644 index 00000000..975b9714 --- /dev/null +++ b/patches/c34f4e46e672ad21accf04da0dc085e43be6f5e1.patch @@ -0,0 +1,55 @@ +From c34f4e46e672ad21accf04da0dc085e43be6f5e1 Mon Sep 17 00:00:00 2001 +From: Marco Eichelberg +Date: Thu, 9 Jun 2022 10:03:38 +0200 +Subject: [PATCH] Fixed memory leak in single process mode. + +Fixed a memory leak in dcmqrscp's single process mode. + +Thanks to for the bug report and test data. +--- + dcmqrdb/libsrc/dcmqrsrv.cc | 24 ++++++++++-------------- + 1 file changed, 10 insertions(+), 14 deletions(-) + +diff --git a/dcmqrdb/libsrc/dcmqrsrv.cc b/dcmqrdb/libsrc/dcmqrsrv.cc +index 157e6c022..f5f9df661 100644 +--- a/dcmqrdb/libsrc/dcmqrsrv.cc ++++ b/dcmqrdb/libsrc/dcmqrsrv.cc +@@ -1,6 +1,6 @@ + /* + * +- * Copyright (C) 1993-2021, OFFIS e.V. ++ * Copyright (C) 1993-2022, OFFIS e.V. + * All rights reserved. See COPYRIGHT file for details. + * + * This software and supporting documentation were developed by +@@ -1126,21 +1126,17 @@ OFCondition DcmQueryRetrieveSCP::waitForAssociation(T_ASC_Network * theNet) + #endif + } + +- // cleanup code ++ // clean-up association + OFCondition oldcond = cond; /* store condition flag for later use */ +- if (!options_.singleProcess_ && (cond != ASC_SHUTDOWNAPPLICATION)) ++ cond = ASC_dropAssociation(assoc); ++ if (cond.bad()) + { +- /* the child will handle the association, we can drop it */ +- cond = ASC_dropAssociation(assoc); +- if (cond.bad()) +- { +- DCMQRDB_ERROR("Cannot Drop Association: " << DimseCondition::dump(temp_str, cond)); +- } +- cond = ASC_destroyAssociation(&assoc); +- if (cond.bad()) +- { +- DCMQRDB_ERROR("Cannot Destroy Association: " << DimseCondition::dump(temp_str, cond)); +- } ++ DCMQRDB_ERROR("Cannot Drop Association: " << DimseCondition::dump(temp_str, cond)); ++ } ++ cond = ASC_destroyAssociation(&assoc); ++ if (cond.bad()) ++ { ++ DCMQRDB_ERROR("Cannot Destroy Association: " << DimseCondition::dump(temp_str, cond)); + } + + if (oldcond == ASC_SHUTDOWNAPPLICATION) cond = oldcond; /* abort flag is reported to top-level wait loop */ diff --git a/patches/f06a867513524664a1b03dfcf812d8b60fdd02cc.patch b/patches/f06a867513524664a1b03dfcf812d8b60fdd02cc.patch new file mode 100644 index 00000000..f0f0d5e9 --- /dev/null +++ b/patches/f06a867513524664a1b03dfcf812d8b60fdd02cc.patch @@ -0,0 +1,252 @@ +From f06a867513524664a1b03dfcf812d8b60fdd02cc Mon Sep 17 00:00:00 2001 +From: Marco Eichelberg +Date: Fri, 6 May 2022 17:30:02 +0200 +Subject: [PATCH] Fixed path traversal vulnerability. + +Thanks to Sharon Brizinov >sharon.b@claroty.com> and Noam Moshe from +Claroty Research for the bug report and sample files. + +This closes DCMTK issue #1021. +--- + dcmnet/apps/movescu.cc | 3 ++- + dcmnet/apps/storescp.cc | 8 +++++-- + dcmnet/libsrc/dstorscp.cc | 5 ++++- + dcmnet/libsrc/scu.cc | 1 + + ofstd/include/dcmtk/ofstd/ofstd.h | 18 +++++++++++++++- + ofstd/libsrc/offname.cc | 19 ++++++++++------- + ofstd/libsrc/ofstd.cc | 35 ++++++++++++++++++++++++++++++- + 7 files changed, 76 insertions(+), 13 deletions(-) + +diff --git a/dcmnet/apps/movescu.cc b/dcmnet/apps/movescu.cc +index 40f41674c..7e444d46b 100644 +--- a/dcmnet/apps/movescu.cc ++++ b/dcmnet/apps/movescu.cc +@@ -1,6 +1,6 @@ + /* + * +- * Copyright (C) 1994-2021, OFFIS e.V. ++ * Copyright (C) 1994-2022, OFFIS e.V. + * All rights reserved. See COPYRIGHT file for details. + * + * This software and supporting documentation were developed by +@@ -1425,6 +1425,7 @@ static OFCondition storeSCP( + sprintf(imageFileName, "%s.%s", + dcmSOPClassUIDToModality(req->AffectedSOPClassUID), + req->AffectedSOPInstanceUID); ++ OFStandard::sanitizeFilename(imageFileName); + } + + OFString temp_str; +diff --git a/dcmnet/apps/storescp.cc b/dcmnet/apps/storescp.cc +index ee53f2887..68b7b4e97 100644 +--- a/dcmnet/apps/storescp.cc ++++ b/dcmnet/apps/storescp.cc +@@ -1853,12 +1853,14 @@ storeSCPCallback( + if (!subdirectoryName.empty()) + subdirectoryName += '_'; + subdirectoryName += currentStudyInstanceUID; ++ OFStandard::sanitizeFilename(subdirectoryName); + break; + case ESM_PatientName: + // pattern: "[Patient's Name]_[YYYYMMDD]_[HHMMSSMMM]" + subdirectoryName = currentPatientName; + subdirectoryName += '_'; + subdirectoryName += timestamp; ++ OFStandard::sanitizeFilename(subdirectoryName); + break; + case ESM_None: + break; +@@ -2065,9 +2067,11 @@ static OFCondition storeSCP( + } + else + { +- // don't create new UID, use the study instance UID as found in object ++ // Use the SOP instance UID as found in the C-STORE request message as part of the filename ++ OFString uid = req->AffectedSOPInstanceUID; ++ OFStandard::sanitizeFilename(uid); + sprintf(imageFileName, "%s%c%s.%s%s", opt_outputDirectory.c_str(), PATH_SEPARATOR, dcmSOPClassUIDToModality(req->AffectedSOPClassUID, "UNKNOWN"), +- req->AffectedSOPInstanceUID, opt_fileNameExtension.c_str()); ++ uid.c_str(), opt_fileNameExtension.c_str()); + } + } + +diff --git a/dcmnet/libsrc/dstorscp.cc b/dcmnet/libsrc/dstorscp.cc +index e491ae5ea..1811846a2 100644 +--- a/dcmnet/libsrc/dstorscp.cc ++++ b/dcmnet/libsrc/dstorscp.cc +@@ -1,6 +1,6 @@ + /* + * +- * Copyright (C) 2013-2021, OFFIS e.V. ++ * Copyright (C) 2013-2022, OFFIS e.V. + * All rights reserved. See COPYRIGHT file for details. + * + * This software and supporting documentation were developed by +@@ -425,6 +425,7 @@ OFCondition DcmStorageSCP::generateDirAndFilename(OFString &filename, + generatedFileName = tmpString; + OFSTRINGSTREAM_FREESTR(tmpString); + // combine the generated file name with the directory name ++ OFStandard::sanitizeFilename(generatedFileName); + OFStandard::combineDirAndFilename(filename, directoryName, generatedFileName); + } + break; +@@ -441,6 +442,7 @@ OFCondition DcmStorageSCP::generateDirAndFilename(OFString &filename, + generatedFileName = tmpString; + OFSTRINGSTREAM_FREESTR(tmpString); + // combine the generated file name with the directory name ++ OFStandard::sanitizeFilename(generatedFileName); + OFStandard::combineDirAndFilename(filename, directoryName, generatedFileName); + break; + } +@@ -469,6 +471,7 @@ OFCondition DcmStorageSCP::generateDirAndFilename(OFString &filename, + generatedFileName = tmpString; + OFSTRINGSTREAM_FREESTR(tmpString); + // combine the generated file name ++ OFStandard::sanitizeFilename(generatedFileName); + OFStandard::combineDirAndFilename(filename, directoryName, generatedFileName); + } else + status = EC_CouldNotGenerateFilename; +diff --git a/dcmnet/libsrc/scu.cc b/dcmnet/libsrc/scu.cc +index 34b252553..1cc9c3a46 100644 +--- a/dcmnet/libsrc/scu.cc ++++ b/dcmnet/libsrc/scu.cc +@@ -1418,6 +1418,7 @@ OFString DcmSCU::createStorageFilename(DcmDataset* dataset) + OFString name = dcmSOPClassUIDToModality(sopClassUID.c_str(), "UNKNOWN"); + name += "."; + name += sopInstanceUID; ++ OFStandard::sanitizeFilename(name); + OFString returnStr; + OFStandard::combineDirAndFilename(returnStr, m_storageDir, name, OFTrue); + return returnStr; +diff --git a/ofstd/include/dcmtk/ofstd/ofstd.h b/ofstd/include/dcmtk/ofstd/ofstd.h +index 1548e26d0..56054ccb0 100644 +--- a/ofstd/include/dcmtk/ofstd/ofstd.h ++++ b/ofstd/include/dcmtk/ofstd/ofstd.h +@@ -1,6 +1,6 @@ + /* + * +- * Copyright (C) 2000-2021, OFFIS e.V. ++ * Copyright (C) 2000-2022, OFFIS e.V. + * All rights reserved. See COPYRIGHT file for details. + * + * This software and supporting documentation were developed by +@@ -1165,6 +1165,22 @@ class DCMTK_OFSTD_EXPORT OFStandard + */ + static void forceSleep(Uint32 seconds); + ++ /** sanitize a filename (NOT a path name!) by replacing all path ++ * separators with underscores. This avoids possible path traversal ++ * vulnerabilities if malformed data read from file or received over ++ * a network is used as part of a filename. ++ * @param fname filename to be sanitized ++ */ ++ static void sanitizeFilename(OFString& fname); ++ ++ /** sanitize a filename (NOT a path name!) by replacing all path ++ * separators with underscores. This avoids possible path traversal ++ * vulnerabilities if malformed data read from file or received over ++ * a network is used as part of a filename. ++ * @param fname filename to be sanitized ++ */ ++ static void sanitizeFilename(char *fname); ++ + private: + + /** private implementation of strlcpy. Called when strlcpy +diff --git a/ofstd/libsrc/offname.cc b/ofstd/libsrc/offname.cc +index 832376189..a56a7e1b5 100644 +--- a/ofstd/libsrc/offname.cc ++++ b/ofstd/libsrc/offname.cc +@@ -1,6 +1,6 @@ + /* + * +- * Copyright (C) 1997-2021, OFFIS e.V. ++ * Copyright (C) 1997-2022, OFFIS e.V. + * All rights reserved. See COPYRIGHT file for details. + * + * This software and supporting documentation were developed by +@@ -73,18 +73,23 @@ OFBool OFFilenameCreator::makeFilename(unsigned int &seed, const char *dir, cons + { + // create filename + filename.clear(); +- if (dir) +- { +- filename = dir; +- filename += PATH_SEPARATOR; +- } +- if (prefix) filename += prefix; ++ if (prefix) filename = prefix; + addLongToString(creation_time, filename); + // on some systems OFrand_r may produce only 16-bit random numbers. + // To be on the safe side, we use two random numbers for the upper and the lower 16 bits. + addLongToString((((OFrand_r(seed) & 0xFFFF) << 16) | (OFrand_r(seed) & 0xFFFF)), filename); + if (postfix) filename += postfix; + ++ OFStandard::sanitizeFilename(filename); ++ ++ if (dir) ++ { ++ OFString dirname = dir; ++ dirname += PATH_SEPARATOR; ++ dirname += filename; ++ filename = dirname; ++ } ++ + // check if filename exists + stat_result = stat(filename.c_str(), &stat_buf); + if (stat_result == 0) +diff --git a/ofstd/libsrc/ofstd.cc b/ofstd/libsrc/ofstd.cc +index ae1466a9f..33ecd7954 100644 +--- a/ofstd/libsrc/ofstd.cc ++++ b/ofstd/libsrc/ofstd.cc +@@ -1,6 +1,6 @@ + /* + * +- * Copyright (C) 2001-2021, OFFIS e.V. ++ * Copyright (C) 2001-2022, OFFIS e.V. + * All rights reserved. See COPYRIGHT file for details. + * + * This software and supporting documentation were developed by +@@ -3245,6 +3245,39 @@ void OFStandard::forceSleep(Uint32 seconds) + } + } + ++ ++void OFStandard::sanitizeFilename(OFString& fname) ++{ ++ size_t len = fname.length(); ++ for (size_t i=0; i +Description: Fix random failure of unit test + Concatenation of upstream commits: + . + - cfbdf2748a9291d4d6170518b43d1d4258f8b272 + - 21eda2341946527f2f01e2be2b8a3a8e66a415f6 + - 0832266a6522214d191dc12771ff865ee9d07251 +Forwarded: not-needed + +Index: dcmtk/dcmtls/tests/tscuscptls.cc +=================================================================== +--- dcmtk.orig/dcmtls/tests/tscuscptls.cc ++++ dcmtk/dcmtls/tests/tscuscptls.cc +@@ -17,7 +17,7 @@ + * + * Purpose: TLS test for classes DcmSCP and DcmSCPPool + * +- * Note: This test will fail after 2029-02-25 due to certificate expiry. ++ * Note: This test will fail after 2029-02-25 due to certificate expiry. + * The keys embedded in this file should be replaced then (see below). + * + */ +@@ -28,6 +28,7 @@ + #include "dcmtk/ofstd/ofstdinc.h" + #include "dcmtk/ofstd/oftest.h" + #include "dcmtk/ofstd/oftimer.h" ++#include "dcmtk/ofstd/ofrand.h" + #include "dcmtk/oflog/consap.h" + #include "dcmtk/dcmnet/scp.h" + #include "dcmtk/dcmnet/scu.h" +@@ -37,6 +38,11 @@ + + #ifdef WITH_THREADS + ++#define BAILOUT(msg) do { \ ++ OFCHECK_FAIL(msg); \ ++ return; \ ++} while (0) ++ + /** Method that ensures that the current thread is actually sleeping for the + * defined number of seconds (at least). + * The problem with the regular sleep() function called from OFStandard::sleep +@@ -72,7 +78,8 @@ struct TestSCP: DcmSCP, OFThread + DcmSCP(), + m_listen_result(EC_NotYetImplemented), // value indicating "not set" + m_set_stop_after_assoc(OFFalse), +- m_set_stop_after_timeout(OFFalse) ++ m_set_stop_after_timeout(OFFalse), ++ m_is_running(OFFalse) + { + } + +@@ -83,6 +90,7 @@ struct TestSCP: DcmSCP, OFThread + m_listen_result = EC_NotYetImplemented; + m_set_stop_after_assoc = OFFalse; + m_set_stop_after_timeout = OFFalse; ++ m_is_running = OFFalse; + } + + /** Overwrite method from DcmSCP in order to test feature to stop after current +@@ -109,12 +117,16 @@ struct TestSCP: DcmSCP, OFThread + OFBool m_set_stop_after_assoc; + /// If set, the SCP should stop after TCP timeout occurred in non-blocking mode + OFBool m_set_stop_after_timeout; ++ /// indicates whether the thread is currently running ++ volatile OFBool m_is_running; + + /** Method called by OFThread to start SCP operation. Starts listen() loop of DcmSCP. + */ + virtual void run() + { ++ m_is_running = OFTrue; + m_listen_result = listen(); ++ m_is_running = OFFalse; + } + + }; +@@ -123,11 +135,22 @@ struct TestSCP: DcmSCP, OFThread + + struct TestPool : DcmSCPPool<>, OFThread + { +- OFCondition result; ++ OFCondition m_listen_result; ++ volatile OFBool m_is_running; ++ ++ TestPool() ++ : DcmSCPPool<>() ++ , OFThread() ++ , m_listen_result(EC_NotYetImplemented) ++ , m_is_running(OFFalse) ++ { } ++ + protected: + void run() + { +- result = listen(); ++ m_is_running = OFTrue; ++ m_listen_result = listen(); ++ m_is_running = OFFalse; + } + }; + +@@ -300,9 +323,9 @@ OFTEST_FLAGS(dcmtls_scp_tls, EF_None) + scpTlsLayer.setCertificateVerification(DCV_ignoreCertificate); + + /// Init and run Scp server with tls ++ OFRandom rnd; + TestSCP scp; + DcmSCPConfig& config = scp.getConfig(); +- config.setPort(11112); + config.setAETitle("ACCEPTOR"); + config.setACSETimeout(30); + config.setConnectionTimeout(1); +@@ -315,10 +338,24 @@ OFTEST_FLAGS(dcmtls_scp_tls, EF_None) + OFCHECK(config.addPresentationContext(UID_VerificationSOPClass, xfers, ASC_SC_ROLE_SCP).good()); + + config.setTransportLayer(&scpTlsLayer); +- scp.start(); + + // Ensure server is up and listening +- force_sleep(1); ++ int i = 0; ++ Uint16 port_number = 0; ++ OFMutex memory_barrier; ++ do ++ { ++ // generate a random port number between 61440 (0xF000) and 65535 ++ port_number = 0xF000 + (rnd.getRND16() & 0xFFF); ++ config.setPort(port_number); ++ scp.start(); ++ force_sleep(2); // wait 2 seconds for the SCP process to start ++ memory_barrier.lock(); ++ memory_barrier.unlock(); ++ } ++ while ((i++ < 5) && (! scp.m_is_running)); // try up to 5 port numbers before giving up ++ ++ if (! scp.m_is_running) BAILOUT("Start of the SCP thread failed: " << scp.m_listen_result.text()); + + // Configure SCU and run it against SCP + DcmTLSSCU scu; +@@ -329,7 +366,7 @@ OFTEST_FLAGS(dcmtls_scp_tls, EF_None) + scu.setPeerAETitle("ACCEPTOR"); + scu.setAETitle("REQUESTOR"); + scu.setPeerHostName("localhost"); +- scu.setPeerPort(11112); ++ scu.setPeerPort(port_number); + + scu.enableAuthentication(PRIVATE_KEY_FILENAME, PUBLIC_SELFSIGNED_CERT_FILENAME, PRIVATE_KEY_PWD, DCF_Filetype_PEM, DCF_Filetype_PEM); + scu.setPeerCertVerification(DCV_ignoreCertificate); +@@ -368,9 +405,9 @@ OFTEST_FLAGS(dcmtls_scp_pool_tls, EF_Non + scpTlsLayer.setCertificateVerification(DCV_ignoreCertificate); + + /// Init and run Scp server with tls ++ OFRandom rnd; + TestPool pool; + DcmSCPConfig& config = pool.getConfig(); +- config.setPort(11112); + config.setAETitle("ACCEPTOR"); + config.setACSETimeout(30); + config.setConnectionTimeout(1); +@@ -383,10 +420,23 @@ OFTEST_FLAGS(dcmtls_scp_pool_tls, EF_Non + OFCHECK(config.addPresentationContext(UID_VerificationSOPClass, xfers, ASC_SC_ROLE_DEFAULT).good()); + config.setTransportLayer(&scpTlsLayer); + pool.setMaxThreads(20); +- pool.start(); + + // Ensure server is up and listening +- force_sleep(1); ++ int i = 0; ++ Uint16 port_number = 0; ++ OFMutex memory_barrier; ++ do ++ { ++ // generate a random port number between 61440 (0xF000) and 65535 ++ port_number = 0xF000 + (rnd.getRND16() & 0xFFF); ++ config.setPort(port_number); ++ pool.start(); ++ force_sleep(2); // wait 2 seconds for the SCP process to start ++ memory_barrier.lock(); ++ memory_barrier.unlock(); ++ } ++ while ((i++ < 5) && (! pool.m_is_running)); // try up to 5 port numbers before giving up ++ if (! pool.m_is_running) BAILOUT("Start of the SCP thread ppol failed: " << pool.m_listen_result.text()); + + OFVector scus(20); + OFVector scuTlsLayers; +@@ -400,7 +450,7 @@ OFTEST_FLAGS(dcmtls_scp_pool_tls, EF_Non + (*it1)->setPeerAETitle("ACCEPTOR"); + (*it1)->setAETitle("REQUESTOR"); + (*it1)->setPeerHostName("localhost"); +- (*it1)->setPeerPort(11112); ++ (*it1)->setPeerPort(port_number); + (*it1)->enableAuthentication(PRIVATE_KEY_FILENAME, PUBLIC_SELFSIGNED_CERT_FILENAME, PRIVATE_KEY_PWD, DCF_Filetype_PEM, DCF_Filetype_PEM); + (*it1)->setPeerCertVerification(DCV_ignoreCertificate); + diff --git a/rules b/rules new file mode 100755 index 00000000..cb59c5a0 --- /dev/null +++ b/rules @@ -0,0 +1,93 @@ +#!/usr/bin/make -f +#export DH_VERBOSE=1 + +# export DEB_BUILD_MAINT_OPTIONS = hardening=+pie +#ifeq ($(DEB_TARGET_ARCH),armel) + # https://lists.debian.org/debian-arm/2024/01/msg00031.html + # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1060104 + export DEB_BUILD_MAINT_OPTIONS = hardening=+all,-stackclash optimize=+lto +#else +# export DEB_BUILD_MAINT_OPTIONS = hardening=+all optimize=+lto +#endif + +# needed for the tests +export DCMDICTPATH=$(CURDIR)/dcmdata/data/dicom.dic + +# deduce documentation option (build-indep target) +ifeq "" "$(filter %-doc,$(shell dh_listpackages))" + BUILDDOC = OFF +else + BUILDDOC = ON +endif + +# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1001703 +export DEB_CXXFLAGS_MAINT_APPEND=-DENABLE_DCMJPLS_INTERLEAVE_NONE + +# when BUILDDOC==OFF, convenient copies of doxygen man pages are used +# when BUILDDOC==ON, doxygen man pages are being regenerated, this may leads to +# improper md5sum... + +%: + dh $@ --buildsystem=cmake + +# SKIP_RPATH=OFF to run test suite: +# see #701231 +CMAKE_EXTRA_FLAGS += -DCMAKE_BUILD_TYPE:STRING=None \ + -DBUILD_SHARED_LIBS:BOOL=ON \ + -DDCMTK_WITH_OPENSSL:BOOL=ON \ + -DDCMTK_ENABLE_PRIVATE_TAGS:BOOL=ON \ + -DDCMTK_WITH_XML:BOOL=ON \ + -DDCMTK_WITH_DOXYGEN:BOOL=$(BUILDDOC) \ + -DDCMTK_WITH_TIFF:BOOL=ON \ + -DDCMTK_WITH_ZLIB:BOOL=ON \ + -DDCMTK_WITH_ICONV:BOOL=OFF \ + -DDCMTK_WITH_ICU:BOOL=OFF \ + -DUSE_COMPILER_HIDDEN_VISIBILITY:BOOL=ON \ + -DCMAKE_VERBOSE_MAKEFILE=ON \ + -DCMAKE_INSTALL_DATADIC:STRING=share/libdcmtk17 \ + -DCMAKE_SKIP_RPATH:BOOL=OFF \ + -DDCMTK_ENABLE_STL:BOOL=ON \ + -DCMAKE_CXX_STANDARD:STRING=17 + +override_dh_auto_configure: + dh_auto_configure -- $(CMAKE_EXTRA_FLAGS) + +override_dh_auto_build-arch: + # need man page in -arch packages: + #$(MAKE) -C obj-* man + dh_auto_build + +# Let's be smart with building doc +override_dh_auto_build-indep: + $(MAKE) -C obj-* DOXYGEN + +# No tests needed for docs +override_dh_auto_test-indep: + + +override_dh_auto_install-arch: + dh_auto_install + +override_dh_auto_install-indep: + DESTDIR=$(CURDIR)/debian/tmp $(MAKE) -C obj-*/doxygen install + DESTDIR=$(CURDIR)/debian/tmp $(MAKE) -C obj-*/dcmwlm/data install + + +override_dh_installdocs: + dh_installdocs + # do the doxygen / jquery fix: + dh_link -pdcmtk-doc usr/share/javascript/jquery/jquery.js usr/share/doc/dcmtk-doc/html/jquery.js + +override_dh_install-arch: + dh_install # --list-missing + #remove test binaries + rm ./debian/dcmtk/usr/bin/*_tests + rm ./debian/dcmtk/usr/bin/drttest + rm ./debian/dcmtk/usr/bin/mkreport + rm ./debian/dcmtk/usr/bin/msgserv + rm ./debian/dcmtk/usr/bin/wltest + rm ./debian/tmp/usr/share/dcmtk/SC.dump + rm ./debian/tmp/usr/share/dcmtk/VLP.dump + + +.PHONY: get-orig-source diff --git a/salsa-ci.yml b/salsa-ci.yml new file mode 100644 index 00000000..3122a171 --- /dev/null +++ b/salsa-ci.yml @@ -0,0 +1,16 @@ +image: debian:sid + +build: + stage: build + before_script: + - apt-get update && apt-get -y install devscripts git-buildpackage + - mk-build-deps --tool "apt -y -o Debug::pkgProblemResolver=yes --no-install-recommends" --install -r debian/control + - rm *.buildinfo *.changes + script: + - git checkout pristine-tar + - git pull + - git checkout master + - git pull + # silence build to not exceed build log size of gitlab-ci + - gbp buildpackage -uc -us 2>&1 >../build.log && exit 0 || tail -n 100 ../build.log && exit -1 + diff --git a/source/format b/source/format new file mode 100644 index 00000000..163aaf8d --- /dev/null +++ b/source/format @@ -0,0 +1 @@ +3.0 (quilt) diff --git a/tests/control b/tests/control new file mode 100644 index 00000000..71db9e6c --- /dev/null +++ b/tests/control @@ -0,0 +1,3 @@ +Tests: run-unit-test +Depends: @, python3-pydicom +Restrictions: allow-stderr diff --git a/tests/run-unit-test b/tests/run-unit-test new file mode 100644 index 00000000..5ed6c1f7 --- /dev/null +++ b/tests/run-unit-test @@ -0,0 +1,139 @@ +#!/bin/sh +set -e + +pkg=dcmtk + +CUR_DIR=`pwd` + + +export LC_ALL=C.UTF-8 +if [ "${AUTOPKGTEST_TMP}" = "" ] ; then + AUTOPKGTEST_TMP=$(mktemp -d /tmp/${pkg}-test.XXXXXX) + trap "rm -rf ${AUTOPKGTEST_TMP}" 0 INT QUIT ABRT PIPE TERM +fi + +cp -a /usr/lib/python3/dist-packages/pydicom/data/test_files/CT_small.dcm "${AUTOPKGTEST_TMP}" +cp -a /usr/share/libdcmtk17/dicom.dic "${AUTOPKGTEST_TMP}" + + +export DCMDICTPATH=${AUTOPKGTEST_TMP}/dicom.dic + +cd "${AUTOPKGTEST_TMP}" + +echo "15e7e2a11cdeabac32e1134674beda6b CT_small.dcm" >> checksums + +echo "Running Tests" + +echo "Test 1" + +dcm2json CT_small.dcm dcm2json.json + +echo "Test 2" + +dcm2xml CT_small.dcm dcm2xml.xml + +echo "Test 3" + +dcmconv --convert-to-latin1 CT_small.dcm dcmconv.out + +echo "Test 4" + +dcmcrle CT_small.dcm dcmcrle.out + +echo "Test 5" + +dcmdrle dcmcrle.out dcmdrle.out + +echo "Test 6" + +dcmdump CT_small.dcm > dcmdump.out + +echo "Test 7" + +dump2dcm dcmdump.out dump2dcm.dcm + +echo "Test 8" + +dcmftest CT_small.dcm + +echo "Test 9" + +dcmodify -e "(0008,0031)" CT_small.dcm + +echo "Test 10" + +dcm2pnm +Rtd CT_small.dcm dcm2pnm.png + +echo "Test 11" + +dcmscale +Sxf 2.0 CT_small.dcm dcmscale.out + +echo "Test 12" + +dcmcjpls CT_small.dcm dcmcjpls.out + +echo "Test 13" + +dcmdjpls dcmcjpls.out dcmdjpls.out + +echo "Test 14" + +dcml2pnm CT_small.dcm dcml2pnm.png + +echo "Test 15" + +cat <> crv.txt + 256.451947 1.000000 + 477.689863 128.822080 + 128.822080 477.689863 + 35.310137 128.822080 + 256.451947 1.000000 +EOT + +dcmmkcrv CT_small.dcm crv.txt dcmmkcrv.out + +echo "Test 16" + +dcmmklut dcmmklut.out + +echo "Test 17" + +dcmp2pgm CT_small.dcm dcmp2pgm.out + +echo "Test 18" +dcmpsmk CT_small.dcm dcmpsmk.out + +echo "Test 19" +mkdir dcmqridx + +dcmqridx dcmqridx/ CT_small.dcm + +echo "Test 20" +dcmsign -q CT_small.dcm + +if [ -f dcmqridx/index.dat ] && \ + [ -f dcmpsmk.out ] && \ + [ -f dcmmklut.out ] && \ + [ -f dcm2json.json ] && \ + [ -f dcm2xml.xml ] && \ + [ -f dcmconv.out ] && \ + [ -f dcmcrle.out ] && \ + [ -f dcmdrle.out ] && \ + [ -f dcmdump.out ] && \ + [ -f dump2dcm.dcm ] && \ + [ -f dcm2pnm.png ] && \ + [ -f dcmscale.out ] && \ + [ -f dcmcjpls.out ] && \ + [ -f dcmdjpls.out ] && \ + [ -f dcml2pnm.png ] && \ + [ -f dcmmkcrv.out ] && \ + [ -f dcmp2pgm.out ] && \ + md5sum --check checksums; then + + echo "PASS" + +else + echo "FAIL" + +fi + diff --git a/upstream/metadata b/upstream/metadata new file mode 100644 index 00000000..b5a6e26c --- /dev/null +++ b/upstream/metadata @@ -0,0 +1,15 @@ +Repository: https://git.dcmtk.org/?p=dcmtk.git +Repository-Browse: https://git.dcmtk.org/?p=dcmtk.git +Bug-Database: https://support.dcmtk.org/redmine/issues/ +Reference: + Author: > + Lien, Chung-Yueh and Onken, Michael and Eichelberg, Marco and + Kao, Tsair and Hein, Andreas + Title: Open Source Tools for Standardized Privacy Protection of Medical Images + Journal: Progress in Biomedical Optics and Imaging - Proceedings of SPIE + Year: 2011 + Volume: 7967 + Pages: 79670M-79670M + DOI: 10.1117/12.877989 + URL: https://www.researchgate.net/publication/234046268_Open_Source_Tools_for_Standardized_Privacy_Protection_of_Medical_Images + eprint: https://www.researchgate.net/publication/234046268_Open_Source_Tools_for_Standardized_Privacy_Protection_of_Medical_Images diff --git a/watch b/watch new file mode 100644 index 00000000..09f6a971 --- /dev/null +++ b/watch @@ -0,0 +1,4 @@ +version=4 + +opts="filenamemangle=s%(?:.*?)?v?(\d[\d.]*)\.tar\.gz%@PACKAGE@-$1.tar.gz%" \ + https://github.com/DCMTK/dcmtk/tags (?:.*?/)?DCMTK-(\d[\d.]*)\.tar\.gz -- 2.30.2