Skip to content
Commits on Source (2)
orthanc (1.5.1+dfsg-2) unstable; urgency=medium
* Fix FTBFS with DCMTK 3.6.4. Closes: #919193
-- Sebastien Jodogne <s.jodogne@gmail.com> Mon, 14 Jan 2019 10:13:39 +0100
orthanc (1.5.1+dfsg-1) unstable; urgency=medium
* New upstream version
......
Description: Fix compatibility with DCMTK 3.6.4
Author: Sebastien Jodogne <s.jodogne@gmail.com>
---
This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
Index: Orthanc-1.5.1/Core/DicomNetworking/Internals/CommandDispatcher.cpp
===================================================================
--- Orthanc-1.5.1.orig/Core/DicomNetworking/Internals/CommandDispatcher.cpp
+++ Orthanc-1.5.1/Core/DicomNetworking/Internals/CommandDispatcher.cpp
@@ -83,6 +83,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE
#include "../../PrecompiledHeaders.h"
#include "CommandDispatcher.h"
+#if !defined(DCMTK_VERSION_NUMBER)
+# error The macro DCMTK_VERSION_NUMBER must be defined
+#endif
+
#include "FindScp.h"
#include "StoreScp.h"
#include "MoveScp.h"
@@ -364,7 +368,11 @@ namespace Orthanc
UID_RETIRED_UltrasoundImageStorage,
UID_RETIRED_UltrasoundMultiframeImageStorage,
UID_RETIRED_VLImageStorage,
+#if DCMTK_VERSION_NUMBER >= 364
+ UID_RETIRED_VLMultiframeImageStorage,
+#else
UID_RETIRED_VLMultiFrameImageStorage,
+#endif
UID_RETIRED_XRayAngiographicBiPlaneImageStorage,
// draft
UID_DRAFT_SRAudioStorage,
@@ -469,8 +477,16 @@ namespace Orthanc
DIC_AE calledAet_C;
DIC_AE remoteIp_C;
DIC_AE calledIP_C;
- if (ASC_getAPTitles(assoc->params, remoteAet_C, calledAet_C, NULL).bad() ||
- ASC_getPresentationAddresses(assoc->params, remoteIp_C, calledIP_C).bad())
+
+ if (
+#if DCMTK_VERSION_NUMBER >= 364
+ ASC_getAPTitles(assoc->params, remoteAet_C, sizeof(remoteAet_C), calledAet_C, sizeof(calledAet_C), NULL, 0).bad() ||
+ ASC_getPresentationAddresses(assoc->params, remoteIp_C, sizeof(remoteIp_C), calledIP_C, sizeof(calledIP_C)).bad()
+#else
+ ASC_getAPTitles(assoc->params, remoteAet_C, calledAet_C, NULL).bad() ||
+ ASC_getPresentationAddresses(assoc->params, remoteIp_C, calledIP_C).bad()
+#endif
+ )
{
T_ASC_RejectParameters rej =
{
@@ -606,7 +622,12 @@ namespace Orthanc
ASC_setAPTitles(assoc->params, NULL, NULL, server.GetApplicationEntityTitle().c_str());
/* acknowledge or reject this association */
+#if DCMTK_VERSION_NUMBER >= 364
+ cond = ASC_getApplicationContextName(assoc->params, buf, sizeof(buf));
+#else
cond = ASC_getApplicationContextName(assoc->params, buf);
+#endif
+
if ((cond.bad()) || strcmp(buf, UID_StandardApplicationContext) != 0)
{
/* reject: the application context name is not supported */
Index: Orthanc-1.5.1/Core/DicomNetworking/DicomUserConnection.cpp
===================================================================
--- Orthanc-1.5.1.orig/Core/DicomNetworking/DicomUserConnection.cpp
+++ Orthanc-1.5.1/Core/DicomNetworking/DicomUserConnection.cpp
@@ -82,6 +82,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE
#include "../PrecompiledHeaders.h"
#include "DicomUserConnection.h"
+#if !defined(DCMTK_VERSION_NUMBER)
+# error The macro DCMTK_VERSION_NUMBER must be defined
+#endif
+
#include "../DicomFormat/DicomArray.h"
#include "../Logging.h"
#include "../OrthancException.h"
@@ -330,7 +334,12 @@ namespace Orthanc
// Figure out which SOP class and SOP instance is encapsulated in the file
DIC_UI sopClass;
DIC_UI sopInstance;
+
+#if DCMTK_VERSION_NUMBER >= 364
+ if (!DU_findSOPClassAndInstanceInDataSet(dcmff.getDataset(), sopClass, sizeof(sopClass), sopInstance, sizeof(sopInstance)))
+#else
if (!DU_findSOPClassAndInstanceInDataSet(dcmff.getDataset(), sopClass, sopInstance))
+#endif
{
throw OrthancException(ErrorCode_NoSopClassOrInstance);
}
@@ -572,7 +581,15 @@ namespace Orthanc
T_DIMSE_C_FindRSP response;
DcmDataset* statusDetail = NULL;
+
+#if DCMTK_VERSION_NUMBER >= 364
+ int responseCount;
+#endif
+
OFCondition cond = DIMSE_findUser(association, presID, &request, dataset,
+#if DCMTK_VERSION_NUMBER >= 364
+ responseCount,
+#endif
FindCallback, &payload,
/*opt_blockMode*/ DIMSE_BLOCKING,
/*opt_dimse_timeout*/ dimseTimeout,
Index: Orthanc-1.5.1/Core/DicomNetworking/Internals/StoreScp.cpp
===================================================================
--- Orthanc-1.5.1.orig/Core/DicomNetworking/Internals/StoreScp.cpp
+++ Orthanc-1.5.1/Core/DicomNetworking/Internals/StoreScp.cpp
@@ -83,6 +83,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE
#include "../../PrecompiledHeaders.h"
#include "StoreScp.h"
+#if !defined(DCMTK_VERSION_NUMBER)
+# error The macro DCMTK_VERSION_NUMBER must be defined
+#endif
+
#include "../../DicomParsing/FromDcmtkBridge.h"
#include "../../DicomParsing/ToDcmtkBridge.h"
#include "../../OrthancException.h"
@@ -188,10 +192,16 @@ namespace Orthanc
if (rsp->DimseStatus == STATUS_Success)
{
// which SOP class and SOP instance ?
+
+#if DCMTK_VERSION_NUMBER >= 364
+ if (!DU_findSOPClassAndInstanceInDataSet(*imageDataSet, sopClass, sizeof(sopClass),
+ sopInstance, sizeof(sopInstance), /*opt_correctUIDPadding*/ OFFalse))
+#else
if (!DU_findSOPClassAndInstanceInDataSet(*imageDataSet, sopClass, sopInstance, /*opt_correctUIDPadding*/ OFFalse))
+#endif
{
- //LOG4CPP_ERROR(Internals::GetLogger(), "bad DICOM file: " << fileName);
- rsp->DimseStatus = STATUS_STORE_Error_CannotUnderstand;
+ //LOG4CPP_ERROR(Internals::GetLogger(), "bad DICOM file: " << fileName);
+ rsp->DimseStatus = STATUS_STORE_Error_CannotUnderstand;
}
else if (strcmp(sopClass, req->AffectedSOPClassUID) != 0)
{
Index: Orthanc-1.5.1/Core/DicomParsing/FromDcmtkBridge.cpp
===================================================================
--- Orthanc-1.5.1.orig/Core/DicomParsing/FromDcmtkBridge.cpp
+++ Orthanc-1.5.1/Core/DicomParsing/FromDcmtkBridge.cpp
@@ -41,6 +41,10 @@
# error The macro ORTHANC_SANDBOXED must be defined
#endif
+#if !defined(DCMTK_VERSION_NUMBER)
+# error The macro DCMTK_VERSION_NUMBER must be defined
+#endif
+
#include "FromDcmtkBridge.h"
#include "ToDcmtkBridge.h"
#include "../Logging.h"
@@ -165,7 +169,11 @@ namespace Orthanc
~DictionaryLocker()
{
+#if DCMTK_VERSION_NUMBER >= 364
+ dcmDataDict.wrunlock();
+#else
dcmDataDict.unlock();
+#endif
}
DcmDataDictionary& operator*()
Index: Orthanc-1.5.1/Plugins/Engine/OrthancPlugins.cpp
===================================================================
--- Orthanc-1.5.1.orig/Plugins/Engine/OrthancPlugins.cpp
+++ Orthanc-1.5.1/Plugins/Engine/OrthancPlugins.cpp
@@ -38,6 +38,10 @@
#error The plugin support is disabled
#endif
+#if !defined(DCMTK_VERSION_NUMBER)
+# error The macro DCMTK_VERSION_NUMBER must be defined
+#endif
+
#include "../../Core/ChunkedBuffer.h"
#include "../../Core/DicomFormat/DicomArray.h"
@@ -2416,7 +2420,11 @@ namespace Orthanc
~DictionaryReadLocker()
{
+#if DCMTK_VERSION_NUMBER >= 364
+ dcmDataDict.rdunlock();
+#else
dcmDataDict.unlock();
+#endif
}
const DcmDataDictionary* operator->()