ENH: Update DMCTK to use snapshot DCMTK-3.6.1_20150924 #359

Closed
wants to merge 1 commit into
from

Conversation

Projects
None yet
6 participants
Member

fedorov commented Sep 30, 2015

This PR is the update on #329, with the commits squashed.

@jcfr I confirm the test is passing after removing the check for env DCMDICTPATH variable, which is included in this commit. I would appreciate if you let me know as soon as feasible if there is any other issue with it.

Copying all participants of #329: @pieper @michaelonken @msmolens


The important improvements provided by the new version of DCMTK
is the support for new API that in particular greatly simplify creation of and
interaction with DICOM Segmentation image objects.

More specifically, it introduces the dcmiod, dcmfg and dcmseg classes
helpful in creating multiframe DICOM objects, such as segmentation and
parametric map objects.

Considering that standard and private dictionaries can now be embedded
in DCMTK library, this commit partially reverts r24473 (ENH: Add support
for DCMTK private dictionary). The test DCMTKPrivateDictTest.py was updated to
not expect DCMDICTPATH environment variable that is no longer needed and is not
initialized.

List of DCMTK changes:

$ git shortlog 3366181..DCMTK-3.6.1_20150924 --no-merges

Andreas Thiel (1):
Updated man pages for new development snapshot.

Jan Schlamelcher (86):
Some workarounds for VC6 compiler peculiarity.
Introduced OFunique_ptr as a fallback if std::unique_ptr is not available.
Make use of unique pointer (free memory if C-MOVE/C-FIND is canceled).
Fixed dll build on windows.
Correction of inconsistent previous commit.
Fixed DcmSCPPool test case failing on older systems.
Enabled shutdown functionality of DcmSCPPool.
Fixed building with mingw-w64.
Fixed most of the warnings in dcmjpeg.
Fixed potential bug in dcmjpeg 12 and 16 bit variants.
Marked SCPPool-Test (dcmnet_scp_pool) as exhaustive.
Fixed most of the warnings in dcmdata.
Fixed a mistake in CHANGES.361.
Minor fixes in dcmdata.
Added support for some C++11 types, literals and traits.
Added documentation for the new macro "DOXYGEN".
Fixed most of the warnings in ofstd and oflog.
Added support for some additional C++11 traits.
Introduced the new explicit boolean type OFExplicitBool.
Fixed possibly wrong overload resolution in DSRCodedEntryValue.
Minor fixes (whitespace and line ending errors).
Modified DcmQuantColorHashTable to perform lazy initialization.
Introduced OFoptional, implementing optional types.
Renamed DoxygenLayout.xml to comply with filename conventions.
Minor fixes and workarounds for Microsoft's compilers.
Fixed ofstd_tatof error on older MSVC versions.
Fixed DCMTK-Exports for custom module setups.
Fixed and suppressed some warnings.
Added 'DCMTK_USE_CXX11_STL' and 'DCMTK_CXX11_FLAGS'.
Updated manpages.
Updated DCMTK_ABI_VERSION for new development snapshot.
Clarified an ambiguous configure message.
Removed misleading comment in dcmjpeg.
Fixed a wrong type-alias for OFintegral_constant.
Introduced C++11-like alignment support.
Fixed an alignment problem in OFoptional.
Fixed building 32 bit targets with mingw-w64.
Refined definition of numeric types and traits.
Fixed a problem with Microsoft Safe CRT in oflog.
Fixed a bug in dcmdata.
Introduced DcmOutputBufferStream::filled() method.
Fixed a problem in storescp.
Modified some of OFoptional's comparison operators.
Introduced OFtuple implementing generic tuples.
Introduced move emulation for pre C++11 compilers.
Small fixes for a previous commit about OFtuple.
Several fixes and additions for yesterday's commits.
Reintroduced bugfix-comment in dcmjpeg.
Fixed autoconf install regarding ofstd variadic.
Introduced OFnumeric_limits.
Several fixes regarding OFnumeric_limits.
Fixed possible arith.h generation problem on MinGW.
Introduced basic support for assisted cross compiling.
Fixed some problems regarding DCMTK's C++11 support.
Added support for trusted client certificates.
Adjusted DCMNET's default socket buffer length.
Introduced cross compiling support for Android.
Fixed a const correctness problem within DCMTLS.
Introduced check-exhaustive targets to Autoconf.
Corrections regarding recent commits.
Modified CMake minimum version as required.
Revised cleanup of temporary unit test files.
Updated Autoconf dependencies.
Updated man pages for new development snapshot.
Updated DCMTK_ABI_VERSION for new development snapshot.
Fixed a CMake problem with paths containing spaces.
Moved some utility functions inside OFStandard.
Modified fallback implementation of OFtuple.
Added additional configuration methods for DCMTLS.
Updated Makefile dependencies.
Updated DCMTK_ABI_VERSION for new development snapshot.
Moved CHANGES.361 to /docs.
Updated Doxygen configuration files.
Updated man pages.
Updated default compiler flags.
Refactored handling of some functions.
Fixed problems with previous commit.
Fixed cross compiling via MinGW and Wine.
Fixed building on FreeBSD.
Fixed building on FreeBSD with C++11 enabled.
Fixed inconsistent defines in CMake's osconfig.h.
Fixed a problem in DcmAttributeFilter's unit test.
Fixed building via GCC 4.2 on OpenBSD.
Updated man pages for new development snapshot.
Updated DCMTK_ABI_VERSION for new development snapshot.
Updated CHANGES.361 for new development snapshot.

Joerg Riesmeier (511):
Added support for CP-1236 to data dictionary.
Added support for CP-1236 to checkAndUpdateVR() method.
Added support for Supplement 154 to the data dictionary.
Added support for new SOP Class UIDs from Supplement 154.
Added support for directory record type "SURFACE SCAN".
Added new SOP Class UID from Supplement 162.
Added missing assignment of member variable.
Added full support for the new Comprehensive 3D SR IOD.
Fixed various issues in syntax usage output.
Minor fixes in comments, e.g. typos.
Minor fixes in comments. Also made some input parameters "const".
Use non-throwing new and delete operator.
Fixed two possible memory leaks.
Added comment to variable that is currently unused.
Fixed issue with odd-length pixel data.
Added missing sub-directory to "make install" target.
Added some debug output to lookForXfer() method.
Added some debug output to read() method.
Added new print options for SOP class output.
Added new command line options for print output.
Fixed bug in checkSOPClassUID() method.
Added note on support for shared libraries.
Added support for CP-1246 and CP-1249 to data dictionary.
Fixed some tag key constants of recently retired attributes.
Fixed issue with unnecessary call to clearNodeCursorStack().
Added missing support for the new print options.
Enhanced output to trace logger.
Fixed inconsistencies introduced with last commit.
Various fixes to comments. Removed trailing spaces.
Added support for recently approved Correction Items.
Enhanced documentation of complete flag methods.
Added support for Supplement 157 to data dictionary.
Added SOP Class UIDs from Supplement 157.
Minor fixes to comments on VOI-related methods.
Fixed bug in getTimeZoneFromString() method.
Fixed issue with misplaced log output.
Replaced "OFString::length() == 0" by "OFString::empty()".
Replaced "OFString::length() != 0" by "!OFString::empty()".
Replaced "OFString::length() > 0" by "!OFString::empty()".
Added support for new VR "Other Double String" (OD)
Added private tags for AGFA IMPACS 6.5.x Solution.
Fixed wrong VR for private AGFA IMPAX tag.
Updated version number of snapshot compilers.
Added comment on inappropriate use of EC_IllegalCall.
Fixed various oddities and inconsistencies:
Replaced tabulator by space characters.
Fixed various oddities and inconsistencies.
Really call shouldStopAfterCurrentSOPInstance():
Fixed further documentation issues.
Removed trailing space characters.
Fixed various typos.
Added releaseAssociation() and abortAssociation()
Fixed various typos and other Doxygen issues.
Enable WITH_THREADS for thread-related classes.
Added new condition constants.
Fixed various typos.
Use optional fields in sendSTOREResponse().
Reimplemented sendSTOREResponse() method.
Modified log output in loadAssociationCfgFile().
Fixed issues with optional message fields.
Removed unused fields from sendACTIONResponse().
Added file missing for last commit :(
Added progress notification to DcmSCP.
Removed trailing spaces.
Added global helper function createDirectory().
Fixed some minor Doxygen issues.
Added new class DcmStorageSCP.
Added new command line tool "dcmrecv".
Added comments to unused exit codes.
Rebuilt Makefile dependencies.
Updated man pages.
Function createDirectory() also works on Windows:
Updated CMake version.
Fixed various typos.
Deprecated closeAssociation() method.
Added support for Supplement 163 to data dictionary.
Added meta header to stored DICOM files.
Fixed various typos in comments.
Pass existing dataset to handleSTORERequest().
Fixed various inconsistencies in comments.
Do not copy received dataset in memory.
Removed class name from derived method calls.
Removed "&" from constant integer parameters.
Fixed wrong log message in handleMOVERequest().
Fixed various typos in comments.
Restructured implementation of handleSTORERequest().
Introduced dataset storage mode.
Fixed various typos in comments.
Receive C-STORE request dataset directly to file.
Added new dataset storage mode.
dded new storage mode options.
Updated copyright dates (where appropriate).
Added support for generating a Doxygen tag file.
Fixed wrong Doxygen reference to a method.
Minor fixes, e.g. added Doxygen markup.
Fixed issue with CP-246 files and private tags.
Slightly changed output of print() method.
Added new print flag for showing invalid codes.
Added new option for printing invalid codes.
Added missing references to closed DCMTK features.
Fixed typos.
Added support for XML element.
Clarified use of writeXML() flags.
Fixed typo copied from Supplement 163.
Output a warning message if the VR is unknown.
Output currently processed line of input file.
Removed superfluous footnote symbol "()".
Fixed various coding style issues.
Added trace log message on VR replacement.
Added two new global flags for VR generation.
Made use of new global flags for VR generation:
Updated our email address for bug reports.
Updated to autoconf 2.69.
Added definition of DCMTK_PACKAGE_URL.
Added Doxygen tag file to .gitignore.
Added *.patch files to .gitignore.
Also updated autoconf support files.
Updated automake script to version 1.14.
Fixed typos.
Fixed various typos.
Fixed various typos in comments.
Added method to determine SpecificCharacterSet.
Added 'charset' parameter to checkStringValue().
Added new variant of checkElementValue().
Avoid unnecessary copies of sequence elements.
Enhanced implementation of checkCode() method.
Report warning on unsupported character set.
Use helper function findAndGetSequence().
Updated comment on current character set issue.
Fixed memory leak in log4cplus code.
Minor fixes in comments.
Minor changes to comments.
Updated Doxygen configuration files.
Removed outdated custom CSS file.
Updated URL of DCMTK's home page.
Fixed timeout issue in handleAssociation().
Fixed source code formatting and various comments.
Fixed wrong content type of XML element in DTD.
Do not output group length in Native DICOM Model.
Fixed outdated comment on 1st PN component group.
Removed redundant API comment.
Added support for CP-1268 to data dictionary.
Added support for Supplement 168 to data dictionary.
Added support for new UID from Supplement 168.
Never output NULL bytes to markup string/stream.
Adapted test cases for markup conversion.
Iterate more efficiently over sequence items.
Use helper method for deleting data elements.
Added comments on missing features.
Fixed small typos in comments.
Added support for Real World Value Mapping objects.
Added comment on getFrameList() method.
Moved checkCurrentValue() to "protected" section.
Slightly enhanced comments.
Check return value of write() methods.
Added support for Referenced Segment Number.
Updated CMake version.
Fixed small issue reported by CMake 2.8.12.
Added Corneal Topography Map Storage SOP Class.
Fixed bug that could cause a crash.
Fixed doubled output of XML start tag for VR=OD.
Added comment on wrong color model for icon images.
Fixed issue with color icon images.
Removed trailing white spaces from man pages files.
Fixed build issue with shared libraries (Win32).
Avoid CMake warning on non-installable files.
Added missing break statements to switch cases.
Removed redundant and outdated Word document.
Added global flag for disabling the VR checker.
Added new option for disabling the VR checker.
Fixed minor Doxygen-related issue in documentation.
Fixed name of PN component in Native DICOM Model.
Fixed minor Doxygen-related issue in documentation.
Fixed issue with test "ofstd_markup_6" (Win32).
Fixed various typos in man pages.
Fixed output of AT values in Native DICOM Model.
Do not check valueLoaded() for Native DICOM Model.
Completed support for XML element.
Second try to fix the issue with "ofstd_markup_6".
Fixed typos, comments and coding style.
Replaced deprecated DcmSCU::closeAssociation().
Removed check on number of command line arguments.
Cleaned up source code in various aspects.
Again, fixed comments to be consistent with code.
Fixed comments and documented default values.
Added support for recently approved CPs.
Added support for Supplement 165 to data dictionary.
Added support for new UIDs from Supplement 165.
Fixed wrong/missing comment on method parameter.
Fixed various minor documentation issues.
Added missing module dcmrt to include directories.
Removed comment on UID_HangingProtocolStorage.
Added support for approved but still missing CPs.
Added comments on some ACR/NEMA attributes.
Fixed timeout issue in DIMSE_moveUser().
Fixed typos in comments.
Moved ACR/NEMA data dictionary to a separate file.
Fixed issue with wrong check on stream compression.
Fixed wrong VR for some retired command fields.
Consistently use upper case letters for DICOM tags.
Added new test cases for testing helper functions.
Fixed typo and added comment.
Added OFFilename versions to some helper functions.
Added new helper function for renaming files.
Added function for appending filename extension.
Added wide character support to this tool.
Added new helper function for copying files.
Changed file mode bits back from "0755" to "0644".
Fixed typo in comment.
Added new command line option --create-backup.
Avoid passing invalid values to rename().
Avoid passing NULL to OFString, which is deprecated.
Added support for wide chars to DICOMDIR code.
Fixed issue when compiled with wide char support.
Added new condition constant and fixed typo.
Fixed issue with missing terminating NULL byte.
Always use OFFilename() instead of "" as a default.
Use printError() instead of OFLOG_FATAL().
Fixed further issues with wide char support.
Allow empty file-set ID in DICOMDIR (type 2).
Fixed some comments.
Fixed wrong tag in CodingSchemeIdentificationSequence.
Made installation of tag file optional.
Added another addContentItem() method.
Replaced tabs by spaces and fixed indention.
Fixed various issues in Doxygen comments.
Fixed various minor issues in new helper class.
Rebuilt Makefile dependencies.
Added missing data elements to BD profiles.
Added check for Shared Functional Groups Sequence.
DIMSE_createFilestream() now uses an OFFilename.
Fixed various typo.
Pass OFString to DIMSE_createFilestream().
Added support for CP-1090 to the data dictionary.
Fixed issue with automatically generated classes.
Removed superfluous quotations marks.
Fixed small typos in comments.
Added readPatientData() and readStudyData().
Updated outdated comments on "log stream".
Made sure that header file is parsed by Doxygen.
Made sure that "Files" section is available.
Added further header files to Doxygen documentation.
Added support for recently approved CPs.
Fixed some issues with wide character support.
Added test for OFStandard::appendFilenameExtension().
Fixed issue with untyped NULL reported by MSVC++.
Fixed various typos in comments.
Enhanced removeRootDirFromPathname() function.
Enhanced createDirectory() function.
Use non-throwing new and delete operator.
Fixed typo in comment.
Output to debug logger if memory allocation fails.
Simplified creation of temporary DICOMDIR file.
Optionally disable isFilenameValid() check.
Added support for new UIDs from Supplement 124.
Added support for Supplement 124 to data dictionary.
Removed superfluous member initialization.
Fixed typo in comments.
Added support for determining the FrameTime.
Access the (total) number of frames in an image.
Fixed inconsistent parameter type.
Added explicit type casts to avoid warnings.
Fixed inconsistent parameter type.
Updated data dictionary for DICOM 2013 edition.
Fixed typos in comments.
Added further error handling options.
Fixed typos in comments.
Fixed typos, added missing documentation, etc.
Various minor fixes for development version.
Fixed typos in comments.
Made sure that the move originator is cleared.
Fixed issue with text alignment in PatternLayout.
Fixed some Doxygen related issues (and a typo).
Consistently use "presInfo" for variables/parameters.
Added support for Supplement 159 to data dictionary.
Added support for new UID from Supplement 159.
Added support for new SR IOD from Supplement 159.
Added DcmSCP::abortAssociation() method.
Fixed typo and updated copyright date.
Removed meaningless layout file setting.
Renamed Doxygen's layout file again.
Made sure that header file is parsed by Doxygen.
Group condition constants in Doxygen output.
Avoid full directory path in Doxygen footer.
Replaced CMake variable in Doxygen config file.
Removed outdated comment on DICOM 2008 standard.
Added missing empty line.
Fixed typos and other minor issues.
Updated reference to DICOM standard edition.
Updated DCMTK's copyright date.
Added support for CP-1125 to SR implementation.
Fixed incomplete #include comment.
Added support for recently approved CPs.
Updated comment based on CP-1335.
Added support for new Colon CAD SR constraints.
Fixed various typos and minor Doxygen issues.
Updated data dictionary for DICOM 2014a edition.
Removed year component from version field.
Minor fixes to file's comment header.
Updated copyright date and other minor changes.
Implemented copy constructors and added clone().
Added explaining comment on new copy constructor.
Removed outdated CMake exclude pattern.
Excluded "
.md5" files from installation.
Made sure that all top-level nodes are deleted.
Added method counting the number of nodes.
Added two new convenience functions.
Fixed issue with tests run in different order.
Fixed various Doxygen-related issues.
Introduced new class DSRDocumentSubTree.
Implemented copy constructors for tree classes.
Added getPreviousNode() and getChildNode().
Added further checking methods to cursor class.
Added gotoFirst() and gotoLast() methods.
Minor fixes on "const" declaration of pointers.
Added cloneSubTree() method to tree classes.
Changed return type of addContentItem(node*).
Reimplemented various getXXX() methods.
Cleaned up handling of "unknown" relationships.
Restructured classes for nodes and trees.
Fixed a bug in convertNewlineCharacters().
Added insertSubTree() method to subtree class.
Added checking of IOD-specific constraints.
Fixed two memory leaks in recently added code.
Clarified use of template identification.
Removed DLL specifier from template classes.
Slightly enhanced layout of Doxygen documentation.
Added public method to change SR document type.
Fixed wrong term in Doxygen documentation.
Added removeSubTree() method to subtree class.
Added extractSubTree() method to tree classes.
Enhanced support for by-reference relationships.
Further enhanced by-reference relationships.
Insert a subtree into an empty document tree.
Added dcmIsImageStorageSOPClassUID() function.
Added check on valid "IMAGE" SOP Classes.
Added support for optional JPEG fill byte.
Removed misleading comment from checkStringValue().
Fixed typos in comments and other minor issues.
Added support for new value representation "UR".
Updated data dictionary for DICOM 2014b edition.
Added functions to enable/disable post-1993 VRs.
Enhanced rewriting rules in DcmVR::getValidEVR().
Use new VR "UR" for Pixel Data Provider URL.
Fixed typo in method name.
RLE images should not use multiple fragments.
Added missing documentation for --propose-deflated.
Attribute (0040,4005) has not been retired.
Fixed wrong term "Device Driving Level".
Updated "dcmrt" classes based on DICOM 2014b.
Added "data correction" options to findscu.
Fixed issue when scaling certain images.
Removed unneeded header include.
Fixed typo in comment.
Fixed wrong validation of PN, LO and SH values.
Added check for requirements clarified by CP-1401.
Updated data dictionary for DICOM 2014c edition.
Added support for new UIDs from DICOM 2014c.
Fixed typo in comment.
Added new temporarily generates files.
Use "try and catch" block around new[].
Fixed error handling in detachValueField().
Fixed error handling in changeValue().
Added new test case for VR=FD.
Changed attribute used for the "FD" test.
Added support for new value representation "UC".
Added support for recently approved CPs.
Added Mapping Resource UID from CP-1417.
Removed outdated name suffix from EXS_xxx constant.
Added missing standard include for assert().
Fixed another CMake 3.1.x quotation issue.
Updated latest tested CMake version.
Fixed documentation of default TCP buffer length.
Updated data dictionary for DICOM 2015a edition.
Fixed typos in comments and other minor issues.
Updated Makefile dependencies again.
Updated outdated API documentation.
Output message to logger on wrong pixel data class.
Enhanced use of DSRCodingSchemeIdentificationList.
Added support for recently approved CPs.
Added support for Supplement 173 to dictionary.
Added support for new UIDs from Supplement 173.
Added support for recently approved CP-1425.
Fixed test after after implementing CP-1425.
Added further test cases for VR checker.
Added read flag to all readXXX() methods.
Optionally accept invalid content item values.
Distinguish b/w invalid content items and values.
Enhanced output to debug logger.
Fixed wrong position counter in tree node.
Added regression test for DSRTree::getPosition().
Added method for counting number of child nodes.
Fixed issue with VR checker for PN values.
Fixed warning C4800 reported by Visual Studio.
Updated data dictionary for DICOM 2015b edition.
Ignore empty value for XML element 'charset'.
Added support for optional Mapping Resource UID.
Pass OFList parameter by-reference not by-value.
Fixed issue with interpolation algorithm.
Added hasTemplateIdentification() method.
Replace the document tree of an SR document.
Added initial support for SR templates.
Added helpers for setting a value from dataset.
Set observation date/time from dataset.
Moved various methods to protected section.
Added helpers for setting a value from element.
Set observation date/time from element.
Avoid using "check" parameter of SR code class.
Introduced new error code "Unknow VR".
Fixed source code and/or comment formatting.
Do not check invalid UID values for IMAGE node.
Added support for long code values (CP-1031).
New class for "Basic Coded Entry Attributes".
Fixed bug in time normalization code.
Added missing empty() method to OFMap.
Added new option for print() method.
Added new comparison method to DSRCodedEntryValue.
Made getAndRemoveRootNode() public.
Fixed issue with addNode() in basic tree class.
Added new and enhanced existing swap() function.
Check whether a template is extensible.
Added initial support for Supplement 186.
Added initial support for Supplement 180.
Made constructor and destructor "protected".
Removed explicit name of base class from call.
Added mechanism for remembering node positions.
Added base class for context groups.
Added initial version of DCM code definitions.
Added first specific Templates and Context Groups.
Updated "DCM" codes for DICOM 2015c edition.
Updated data dictionary for DICOM 2015c edition.
Fixed issue with wrong quotation marks.
Added static initialization function (MT-safe).
Fixed issue in OFStandard::combineDirAndFilename().
Enhanced check on empty dataset.
Improved documentation of disableXXXCheck().
Consistently use "file-set" and "file format".
Allow for disabling check on "DICOM file format".
Renamed ANNOUNCE file (removed version suffix).
Enhanced documentation of createNewSOPInstance().
Added conversion operator to context group class.
Added support for CID 42 (Numeric Value Qualifier).
Added function that initializes all context groups.
Updated copyright date.
Fixed wrong documentation of return value.
Removed superfluous OFStringStream_ends statement.
Fixed wrong exit code on invalid input file.
Added support for further Context Groups.
Fixed various typos in comments.
Enhanced handling of empty Measured Value Sequence.
Added check for CID 42 to NUM values.
Added support for Context Group CID 29.
Added general information on coding scheme "DCM".
Added easier method to set a composite reference.
Fixed issue reported by Clang 3.5 on OpenBSD.
Introduced condition constant EC_NotYetImplemented.
Do not set empty concept name codes.
Added missing DCMTK_DCMDATA_EXPORT macro.
Added new helper method gotoEntryFromNodeList().
Added method to look up a context group entry
Added new mode for adding nodes to the tree.
Fixed typos in comment.
Added comment on reserved error codes (for "cmr").
Fixed wrong comment.
Introduced new flag to customize the print output.
Added new command line options to dsrdump.
Added specific logger for submodule "dcmsr/cmr".
Added parameter "pos" to getStringValueFromDataset.
Added static method setEnhancedEncodingMode().
Clarified use of invalid coded entries.
Added support for Context Group CID 244.
Made sure that IOD constraint checker is used.
Added "Extensible SR" to known document types.
Added enhanced versions of CID 29, 244 and 4031.
Added cleanup() function to context group classes.
Fixed typo and other minor issues in comments.
Added name prefix to class ContentMappingResource.
Fixed copyright header in module "dcmsr".
Added new optional parameter "vm" to readSequence.
Added methods to read/write to/from sequence items.
Fixed inconsistencies regarding the use of OFMap.
Updated Makefile dependencies.
Added enhanced versions of CID 10013 and 10033.
Added initial version of SRT and UCUM codes.
Introduced type for list of CID 7445 values.
Updated Makefile dependencies.
Added initial version of TID 1600 (Image Library).
Slightly changed conversion operator.
Extracted general information from template.
Avoid seperator if time component is empty.
Added support for annotating content items.
Added support for Context Group CID 100 and 7021.
Added support for clearing tree node annotations.
Made sure that tree node annotations are copied.
Made sure that "dicom.dic" is loaded for tests.
Fixed various issues in test case.
Fixed "cardinality" for SQ elements in comments.
Added comment that "Big Endian" is retired.
Removed version suffix "3" from dictionary entries.
Check logger for debug output of template tree.
Introduced global definitions for certain tags.
Added CREDITS file.
Added "YXLON" to the new CREDITS file.
Added support for recently approved CPs.
Added support for Supplement 156 to dictionary.
Added support for new UIDs from Supplement 156.
Check for recently approved multi-frame images.
Updated currently supported compiler versions.
Fixed various minor issues in module descriptions.
Fixed order of modules in main HTML file.
Added three new DCMTK modules to README.

Marco Eichelberg (5):
Introduced OFStandard::dropPrivileges().
Tools now use OFStandard::dropPrivileges().
Fixed minor bug in DICOM upper layer FSM.
Always use current dicom.dic for dcmdata unit tests.
Removed unsupported wwwapps and perl scripts from module dcmwlm.

Michael Onken (84):
Added (optional) originating C-MOVE AE title and message ID to C-STORE message.
Make DcmStorageSCU make use of new MoveOriginator feature.
Added optional status detail when sending C-MOVE response.
Make sure memcpy does not copy to NULL destination. Thanks to Francesco Gigante for the report.
Added option to discard illegal characters when converting between DICOM character sets.
Add "Discard illegal character" support to dcmconv and classes like DcmItem.
Make sure SCU and SCP request/response data structures are initially zeroed.
Fixed typo (coersion -> coercion) in DIMSE status constant.
Added missing kudos.
Fixed too small buffer for UID in Q/R server.
Fixed issues where JPEG marker map was not cleared if more than one JPEG was converted using the same plugin instance.
Fixed possible doubled destruction of association.
Make sure oflog also compiles if threads are disabled.
Always write meta header when receiving files. Removed Winsock comment.
Added missing CHANGES entry.
Warning to re-create index.dat after 20130705:
Create DcmFileFormat from DcmDataset w/o copying.
Do not copy DcmDataset during C-GET receive.
Worklist SCP support for Responsible Person/Role.
Replaced tabs with spaces.
Support explicit item length denoting too many bytes.
Corrected misleading transfer syntax error message.
Fixed Comments.
Described movescu storage SCP timeout problem.
Make sure CMAKE_BUILD_TYPE has a default value.
Fixed doubled tag output in XML output of VR OF.
Avoid second OpenSSL initialization in constructor.
Documentation for CMAKE_BUILD_TYPE default value.
Fixed typo.
Fixed CHANGES entries.
Fixed some inconsistencies in documentation.
Make sure to handle setuid() return code properly.
Add libjpeg dependency for libtiff and minor changes.
Fixed shared library build under Unix (configure).
Enhanced DCMTK CMake exports for external projects.
Capitalized all CMake key words for consistency.
Ensure CMake v2.6 still writes DCMTKConfig.cmake.
DCMTK.cmake and DCMTKTargets.cmake documentation.
Added helpers to copy common modules between items.
Fixed Makefile.dep for new files from last comit.
Switched windows line endings to unix line endings.
Added further module helpers and fixed small issues.
Fixed comments and error message.
Updated module helpers to latest DICOM 2013 draft.
Fixed wrong ifdef syntax.
Add connection timeout setting to SCU class.
Fixed possible memory leak.
Specific error if no presentation context proposed.
Reverted false retirement status of some SOP Classes.
Fix last commit by including implementation file.
New compare() function for dcmdata object values.
Make sure dcmdata tests compile with autoconf.
Make new compare() method more reliable.
Fixed conversion of color to palette color mode.
Documented DCMTK's C++ cast macros.
Fixed installation and added CHANGES file.
Disable built-in dictionary for CMake Unix builds.
Make sure presentation contexts do not interfer.
Fixed iterator type.
Introduced new modules dcmiod, dcmfg and dcmseg.
Removed accidentially checked in test files.
Removed more accidentially checked in test files.
Fixed iterator dereference.
Fixed iterator constness.
Fixed possible DICOM VR problems.
Removed unused method.
Fixed mostly constness for some compilers.
Fixed various doxygen formatting issues.
Fixed compilers errors (mostly STL-specific).
Removed unused link libraries.
Made copyright header consistent in new modules.
Build flags for internal and external dictionary.
Updated dictionary build and code documentation.
Added shared library export maro to IODModule.
Added more files to be ignored by git.
Added mising "check-exhaustive" targets.
Replaced tab characters with spaces.
Use static_cast instead of dynamic_cast.
Renamed dictionary configuration build options.
Simplified builtin dictionary infrastructure.
Fixed typo in CMake script that can cause warnings.
Fixed typo and made documentation more consistent.
Fixed another typo.
Enable private tags in builtin dictionary on CMake.

Nikolas Goldhammer (1):
Replaced deprecated CMake expressions.

Uli Schlachter (13):
Fixed wrong definition of Value Representation Person Name (PN)
Removed unused local variable which shadowed a variable with the same name.
Use ".NOTPARALLEL:" to make parallel builds (e.g. -j4) possible.
Update rootconf for changes which were done directly to generated files.
Fixed various issues found via cppcheck.
Use DcmTagKey's output operator where possible.
Don't include intrin.h on Visual Studio 2005 because of build errors.
Fixed bug in OFString::copy() and improved unit tests.
Fixed compiler warnings in ConvertIntegerToString with unsigned integers.
Worked around compiler warnings on 32bit systems for too large shifts.
Fixed crash if less than four transfer syntaxes are enabled.
Silence some more compiler warnings about implicit casts.
Don't set the defines for thread local storage support incorrectly.

@fedorov fedorov ENH: Update DMCTK to use version DCMTK-3.6.1_20150924
The important improvements provided by the new version of DCMTK
is the support for new API that in particular greatly simplify creation of and
interaction with DICOM Segmentation image objects.

More specifically, it introduces the dcmiod, dcmfg and dcmseg classes
helpful in creating multiframe DICOM objects, such as segmentation and
parametric map objects.

Considering that standard and private dictionaries can now be  embedded
in DCMTK library, this commit partially reverts r24473 (ENH: Add support
for DCMTK private dictionary). The test DCMTKPrivateDictTest.py was updated to
not expect DCMDICTPATH environment variable that is no longer needed and is not
initialized.

List of DCMTK changes:

$ git shortlog 3366181..DCMTK-3.6.1_20150924 --no-merges

Andreas Thiel (1):
      Updated man pages for new development snapshot.

Jan Schlamelcher (86):
      Some workarounds for VC6 compiler peculiarity.
      Introduced OFunique_ptr as a fallback if std::unique_ptr is not available.
      Make use of  unique pointer (free memory if C-MOVE/C-FIND is canceled).
      Fixed dll build on windows.
      Correction of inconsistent previous commit.
      Fixed DcmSCPPool test case failing on older systems.
      Enabled shutdown functionality of DcmSCPPool.
      Fixed building with mingw-w64.
      Fixed most of the warnings in dcmjpeg.
      Fixed potential bug in dcmjpeg 12 and 16 bit variants.
      Marked SCPPool-Test (dcmnet_scp_pool) as exhaustive.
      Fixed most of the warnings in dcmdata.
      Fixed a mistake in CHANGES.361.
      Minor fixes in dcmdata.
      Added support for some C++11 types, literals and traits.
      Added documentation for the new macro "DOXYGEN".
      Fixed most of the warnings in ofstd and oflog.
      Added support for some additional C++11 traits.
      Introduced the new explicit boolean type OFExplicitBool.
      Fixed possibly wrong overload resolution in DSRCodedEntryValue.
      Minor fixes (whitespace and line ending errors).
      Modified DcmQuantColorHashTable to perform lazy initialization.
      Introduced OFoptional, implementing optional types.
      Renamed DoxygenLayout.xml to comply with filename conventions.
      Minor fixes and workarounds for Microsoft's compilers.
      Fixed ofstd_tatof error on older MSVC versions.
      Fixed DCMTK-Exports for custom module setups.
      Fixed and suppressed some warnings.
      Added 'DCMTK_USE_CXX11_STL' and 'DCMTK_CXX11_FLAGS'.
      Updated manpages.
      Updated DCMTK_ABI_VERSION for new development snapshot.
      Clarified an ambiguous configure message.
      Removed misleading comment in dcmjpeg.
      Fixed a wrong type-alias for OFintegral_constant.
      Introduced C++11-like alignment support.
      Fixed an alignment problem in OFoptional.
      Fixed building 32 bit targets with mingw-w64.
      Refined definition of numeric types and traits.
      Fixed a problem with Microsoft Safe CRT in oflog.
      Fixed a bug in dcmdata.
      Introduced DcmOutputBufferStream::filled() method.
      Fixed a problem in storescp.
      Modified some of OFoptional's comparison operators.
      Introduced OFtuple implementing generic tuples.
      Introduced move emulation for pre C++11 compilers.
      Small fixes for a previous commit about OFtuple.
      Several fixes and additions for yesterday's commits.
      Reintroduced bugfix-comment in dcmjpeg.
      Fixed autoconf install regarding ofstd variadic.
      Introduced OFnumeric_limits.
      Several fixes regarding OFnumeric_limits.
      Fixed possible arith.h generation problem on MinGW.
      Introduced basic support for assisted cross compiling.
      Fixed some problems regarding DCMTK's C++11 support.
      Added support for trusted client certificates.
      Adjusted DCMNET's default socket buffer length.
      Introduced cross compiling support for Android.
      Fixed a const correctness problem within DCMTLS.
      Introduced check-exhaustive targets to Autoconf.
      Corrections regarding recent commits.
      Modified CMake minimum version as required.
      Revised cleanup of temporary unit test files.
      Updated Autoconf dependencies.
      Updated man pages for new development snapshot.
      Updated DCMTK_ABI_VERSION for new development snapshot.
      Fixed a CMake problem with paths containing spaces.
      Moved some utility functions inside OFStandard.
      Modified fallback implementation of OFtuple.
      Added additional configuration methods for DCMTLS.
      Updated Makefile dependencies.
      Updated DCMTK_ABI_VERSION for new development snapshot.
      Moved CHANGES.361 to /docs.
      Updated Doxygen configuration files.
      Updated man pages.
      Updated default compiler flags.
      Refactored handling of some <cmath> functions.
      Fixed problems with previous commit.
      Fixed cross compiling via MinGW and Wine.
      Fixed building on FreeBSD.
      Fixed building on FreeBSD with C++11 enabled.
      Fixed inconsistent defines in CMake's osconfig.h.
      Fixed a problem in DcmAttributeFilter's unit test.
      Fixed building via GCC 4.2 on OpenBSD.
      Updated man pages for new development snapshot.
      Updated DCMTK_ABI_VERSION for new development snapshot.
      Updated CHANGES.361 for new development snapshot.

Joerg Riesmeier (511):
      Added support for CP-1236 to data dictionary.
      Added support for CP-1236 to checkAndUpdateVR() method.
      Added support for Supplement 154 to the data dictionary.
      Added support for new SOP Class UIDs from Supplement 154.
      Added support for directory record type "SURFACE SCAN".
      Added new SOP Class UID from Supplement 162.
      Added missing assignment of member variable.
      Added full support for the new Comprehensive 3D SR IOD.
      Fixed various issues in syntax usage output.
      Minor fixes in comments, e.g. typos.
      Minor fixes in comments. Also made some input parameters "const".
      Use non-throwing new and delete operator.
      Fixed two possible memory leaks.
      Added comment to variable that is currently unused.
      Fixed issue with odd-length pixel data.
      Added missing sub-directory to "make install" target.
      Added some debug output to lookForXfer() method.
      Added some debug output to read() method.
      Added new print options for SOP class output.
      Added new command line options for print output.
      Fixed bug in checkSOPClassUID() method.
      Added note on support for shared libraries.
      Added support for CP-1246 and CP-1249 to data dictionary.
      Fixed some tag key constants of recently retired attributes.
      Fixed issue with unnecessary call to clearNodeCursorStack().
      Added missing support for the new print options.
      Enhanced output to trace logger.
      Fixed inconsistencies introduced with last commit.
      Various fixes to comments. Removed trailing spaces.
      Added support for recently approved Correction Items.
      Enhanced documentation of complete flag methods.
      Added support for Supplement 157 to data dictionary.
      Added SOP Class UIDs from Supplement 157.
      Minor fixes to comments on VOI-related methods.
      Fixed bug in getTimeZoneFromString() method.
      Fixed issue with misplaced log output.
      Replaced "OFString::length() == 0" by "OFString::empty()".
      Replaced "OFString::length() != 0" by "!OFString::empty()".
      Replaced "OFString::length() > 0" by "!OFString::empty()".
      Added support for new VR "Other Double String" (OD)
      Added private tags for AGFA IMPACS 6.5.x Solution.
      Fixed wrong VR for private AGFA IMPAX tag.
      Updated version number of snapshot compilers.
      Added comment on inappropriate use of EC_IllegalCall.
      Fixed various oddities and inconsistencies:
      Replaced tabulator by space characters.
      Fixed various oddities and inconsistencies.
      Really call shouldStopAfterCurrentSOPInstance():
      Fixed further documentation issues.
      Removed trailing space characters.
      Fixed various typos.
      Added releaseAssociation() and abortAssociation()
      Fixed various typos and other Doxygen issues.
      Enable WITH_THREADS for thread-related classes.
      Added new condition constants.
      Fixed various typos.
      Use optional fields in sendSTOREResponse().
      Reimplemented sendSTOREResponse() method.
      Modified log output in loadAssociationCfgFile().
      Fixed issues with optional message fields.
      Removed unused fields from sendACTIONResponse().
      Added file missing for last commit :(
      Added progress notification to DcmSCP.
      Removed trailing spaces.
      Added global helper function createDirectory().
      Fixed some minor Doxygen issues.
      Added new class DcmStorageSCP.
      Added new command line tool "dcmrecv".
      Added comments to unused exit codes.
      Rebuilt Makefile dependencies.
      Updated man pages.
      Function createDirectory() also works on Windows:
      Updated CMake version.
      Fixed various typos.
      Deprecated closeAssociation() method.
      Added support for Supplement 163 to data dictionary.
      Added meta header to stored DICOM files.
      Fixed various typos in comments.
      Pass existing dataset to handleSTORERequest().
      Fixed various inconsistencies in comments.
      Do not copy received dataset in memory.
      Removed class name from derived method calls.
      Removed "&" from constant integer parameters.
      Fixed wrong log message in handleMOVERequest().
      Fixed various typos in comments.
      Restructured implementation of handleSTORERequest().
      Introduced dataset storage mode.
      Fixed various typos in comments.
      Receive C-STORE request dataset directly to file.
      Added new dataset storage mode.
      dded new storage mode options.
      Updated copyright dates (where appropriate).
      Added support for generating a Doxygen tag file.
      Fixed wrong Doxygen reference to a method.
      Minor fixes, e.g. added Doxygen markup.
      Fixed issue with CP-246 files and private tags.
      Slightly changed output of print() method.
      Added new print flag for showing invalid codes.
      Added new option for printing invalid codes.
      Added missing references to closed DCMTK features.
      Fixed typos.
      Added support for <InlineBinary> XML element.
      Clarified use of writeXML() flags.
      Fixed typo copied from Supplement 163.
      Output a warning message if the VR is unknown.
      Output currently processed line of input file.
      Removed superfluous footnote symbol "(*)".
      Fixed various coding style issues.
      Added trace log message on VR replacement.
      Added two new global flags for VR generation.
      Made use of new global flags for VR generation:
      Updated our email address for bug reports.
      Updated to autoconf 2.69.
      Added definition of DCMTK_PACKAGE_URL.
      Added Doxygen tag file to .gitignore.
      Added *.patch files to .gitignore.
      Also updated autoconf support files.
      Updated automake script to version 1.14.
      Fixed typos.
      Fixed various typos.
      Fixed various typos in comments.
      Added method to determine SpecificCharacterSet.
      Added 'charset' parameter to checkStringValue().
      Added new variant of checkElementValue().
      Avoid unnecessary copies of sequence elements.
      Enhanced implementation of checkCode() method.
      Report warning on unsupported character set.
      Use helper function findAndGetSequence().
      Updated comment on current character set issue.
      Fixed memory leak in log4cplus code.
      Minor fixes in comments.
      Minor changes to comments.
      Updated Doxygen configuration files.
      Removed outdated custom CSS file.
      Updated URL of DCMTK's home page.
      Fixed timeout issue in handleAssociation().
      Fixed source code formatting and various comments.
      Fixed wrong content type of XML element in DTD.
      Do not output group length in Native DICOM Model.
      Fixed outdated comment on 1st PN component group.
      Removed redundant API comment.
      Added support for CP-1268 to data dictionary.
      Added support for Supplement 168 to data dictionary.
      Added support for new UID from Supplement 168.
      Never output NULL bytes to markup string/stream.
      Adapted test cases for markup conversion.
      Iterate more efficiently over sequence items.
      Use helper method for deleting data elements.
      Added comments on missing features.
      Fixed small typos in comments.
      Added support for Real World Value Mapping objects.
      Added comment on getFrameList() method.
      Moved checkCurrentValue() to "protected" section.
      Slightly enhanced comments.
      Check return value of write() methods.
      Added support for Referenced Segment Number.
      Updated CMake version.
      Fixed small issue reported by CMake 2.8.12.
      Added Corneal Topography Map Storage SOP Class.
      Fixed bug that could cause a crash.
      Fixed doubled output of XML start tag for VR=OD.
      Added comment on wrong color model for icon images.
      Fixed issue with color icon images.
      Removed trailing white spaces from man pages files.
      Fixed build issue with shared libraries (Win32).
      Avoid CMake warning on non-installable files.
      Added missing break statements to switch cases.
      Removed redundant and outdated Word document.
      Added global flag for disabling the VR checker.
      Added new option for disabling the VR checker.
      Fixed minor Doxygen-related issue in documentation.
      Fixed name of PN component in Native DICOM Model.
      Fixed minor Doxygen-related issue in documentation.
      Fixed issue with test "ofstd_markup_6" (Win32).
      Fixed various typos in man pages.
      Fixed output of AT values in Native DICOM Model.
      Do not check valueLoaded() for Native DICOM Model.
      Completed support for <InlineBinary> XML element.
      Second try to fix the issue with "ofstd_markup_6".
      Fixed typos, comments and coding style.
      Replaced deprecated DcmSCU::closeAssociation().
      Removed check on number of command line arguments.
      Cleaned up source code in various aspects.
      Again, fixed comments to be consistent with code.
      Fixed comments and documented default values.
      Added support for recently approved CPs.
      Added support for Supplement 165 to data dictionary.
      Added support for new UIDs from Supplement 165.
      Fixed wrong/missing comment on method parameter.
      Fixed various minor documentation issues.
      Added missing module dcmrt to include directories.
      Removed comment on UID_HangingProtocolStorage.
      Added support for approved but still missing CPs.
      Added comments on some ACR/NEMA attributes.
      Fixed timeout issue in DIMSE_moveUser().
      Fixed typos in comments.
      Moved ACR/NEMA data dictionary to a separate file.
      Fixed issue with wrong check on stream compression.
      Fixed wrong VR for some retired command fields.
      Consistently use upper case letters for DICOM tags.
      Added new test cases for testing helper functions.
      Fixed typo and added comment.
      Added OFFilename versions to some helper functions.
      Added new helper function for renaming files.
      Added function for appending filename extension.
      Added wide character support to this tool.
      Added new helper function for copying files.
      Changed file mode bits back from "0755" to "0644".
      Fixed typo in comment.
      Added new command line option --create-backup.
      Avoid passing invalid values to rename().
      Avoid passing NULL to OFString, which is deprecated.
      Added support for wide chars to DICOMDIR code.
      Fixed issue when compiled with wide char support.
      Added new condition constant and fixed typo.
      Fixed issue with missing terminating NULL byte.
      Always use OFFilename() instead of "" as a default.
      Use printError() instead of OFLOG_FATAL().
      Fixed further issues with wide char support.
      Allow empty file-set ID in DICOMDIR (type 2).
      Fixed some comments.
      Fixed wrong tag in CodingSchemeIdentificationSequence.
      Made installation of tag file optional.
      Added another addContentItem() method.
      Replaced tabs by spaces and fixed indention.
      Fixed various issues in Doxygen comments.
      Fixed various minor issues in new helper class.
      Rebuilt Makefile dependencies.
      Added missing data elements to BD profiles.
      Added check for Shared Functional Groups Sequence.
      DIMSE_createFilestream() now uses an OFFilename.
      Fixed various typo.
      Pass OFString to DIMSE_createFilestream().
      Added support for CP-1090 to the data dictionary.
      Fixed issue with automatically generated classes.
      Removed superfluous quotations marks.
      Fixed small typos in comments.
      Added readPatientData() and readStudyData().
      Updated outdated comments on "log stream".
      Made sure that header file is parsed by Doxygen.
      Made sure that "Files" section is available.
      Added further header files to Doxygen documentation.
      Added support for recently approved CPs.
      Fixed some issues with wide character support.
      Added test for OFStandard::appendFilenameExtension().
      Fixed issue with untyped NULL reported by MSVC++.
      Fixed various typos in comments.
      Enhanced removeRootDirFromPathname() function.
      Enhanced createDirectory() function.
      Use non-throwing new and delete operator.
      Fixed typo in comment.
      Output to debug logger if memory allocation fails.
      Simplified creation of temporary DICOMDIR file.
      Optionally disable isFilenameValid() check.
      Added support for new UIDs from Supplement 124.
      Added support for Supplement 124 to data dictionary.
      Removed superfluous member initialization.
      Fixed typo in comments.
      Added support for determining the FrameTime.
      Access the (total) number of frames in an image.
      Fixed inconsistent parameter type.
      Added explicit type casts to avoid warnings.
      Fixed inconsistent parameter type.
      Updated data dictionary for DICOM 2013 edition.
      Fixed typos in comments.
      Added further error handling options.
      Fixed typos in comments.
      Fixed typos, added missing documentation, etc.
      Various minor fixes for development version.
      Fixed typos in comments.
      Made sure that the move originator is cleared.
      Fixed issue with text alignment in PatternLayout.
      Fixed some Doxygen related issues (and a typo).
      Consistently use "presInfo" for variables/parameters.
      Added support for Supplement 159 to data dictionary.
      Added support for new UID from Supplement 159.
      Added support for new SR IOD from Supplement 159.
      Added DcmSCP::abortAssociation() method.
      Fixed typo and updated copyright date.
      Removed meaningless layout file setting.
      Renamed Doxygen's layout file again.
      Made sure that header file is parsed by Doxygen.
      Group condition constants in Doxygen output.
      Avoid full directory path in Doxygen footer.
      Replaced CMake variable in Doxygen config file.
      Removed outdated comment on DICOM 2008 standard.
      Added missing empty line.
      Fixed typos and other minor issues.
      Updated reference to DICOM standard edition.
      Updated DCMTK's copyright date.
      Added support for CP-1125 to SR implementation.
      Fixed incomplete #include comment.
      Added support for recently approved CPs.
      Updated comment based on CP-1335.
      Added support for new Colon CAD SR constraints.
      Fixed various typos and minor Doxygen issues.
      Updated data dictionary for DICOM 2014a edition.
      Removed year component from version field.
      Minor fixes to file's comment header.
      Updated copyright date and other minor changes.
      Implemented copy constructors and added clone().
      Added explaining comment on new copy constructor.
      Removed outdated CMake exclude pattern.
      Excluded "*.md5" files from installation.
      Made sure that all top-level nodes are deleted.
      Added method counting the number of nodes.
      Added two new convenience functions.
      Fixed issue with tests run in different order.
      Fixed various Doxygen-related issues.
      Introduced new class DSRDocumentSubTree.
      Implemented copy constructors for tree classes.
      Added getPreviousNode() and getChildNode().
      Added further checking methods to cursor class.
      Added gotoFirst() and gotoLast() methods.
      Minor fixes on "const" declaration of pointers.
      Added cloneSubTree() method to tree classes.
      Changed return type of addContentItem(node*).
      Reimplemented various getXXX() methods.
      Cleaned up handling of "unknown" relationships.
      Restructured classes for nodes and trees.
      Fixed a bug in convertNewlineCharacters().
      Added insertSubTree() method to subtree class.
      Added checking of IOD-specific constraints.
      Fixed two memory leaks in recently added code.
      Clarified use of template identification.
      Removed DLL specifier from template classes.
      Slightly enhanced layout of Doxygen documentation.
      Added public method to change SR document type.
      Fixed wrong term in Doxygen documentation.
      Added removeSubTree() method to subtree class.
      Added extractSubTree() method to tree classes.
      Enhanced support for by-reference relationships.
      Further enhanced by-reference relationships.
      Insert a subtree into an empty document tree.
      Added dcmIsImageStorageSOPClassUID() function.
      Added check on valid "IMAGE" SOP Classes.
      Added support for optional JPEG fill byte.
      Removed misleading comment from checkStringValue().
      Fixed typos in comments and other minor issues.
      Added support for new value representation "UR".
      Updated data dictionary for DICOM 2014b edition.
      Added functions to enable/disable post-1993 VRs.
      Enhanced rewriting rules in DcmVR::getValidEVR().
      Use new VR "UR" for Pixel Data Provider URL.
      Fixed typo in method name.
      RLE images should not use multiple fragments.
      Added missing documentation for --propose-deflated.
      Attribute (0040,4005) has not been retired.
      Fixed wrong term "Device Driving Level".
      Updated "dcmrt" classes based on DICOM 2014b.
      Added "data correction" options to findscu.
      Fixed issue when scaling certain images.
      Removed unneeded header include.
      Fixed typo in comment.
      Fixed wrong validation of PN, LO and SH values.
      Added check for requirements clarified by CP-1401.
      Updated data dictionary for DICOM 2014c edition.
      Added support for new UIDs from DICOM 2014c.
      Fixed typo in comment.
      Added new temporarily generates files.
      Use "try and catch" block around new[].
      Fixed error handling in detachValueField().
      Fixed error handling in changeValue().
      Added new test case for VR=FD.
      Changed attribute used for the "FD" test.
      Added support for new value representation "UC".
      Added support for recently approved CPs.
      Added Mapping Resource UID from CP-1417.
      Removed outdated name suffix from EXS_xxx constant.
      Added missing standard include for assert().
      Fixed another CMake 3.1.x quotation issue.
      Updated latest tested CMake version.
      Fixed documentation of default TCP buffer length.
      Updated data dictionary for DICOM 2015a edition.
      Fixed typos in comments and other minor issues.
      Updated Makefile dependencies again.
      Updated outdated API documentation.
      Output message to logger on wrong pixel data class.
      Enhanced use of DSRCodingSchemeIdentificationList.
      Added support for recently approved CPs.
      Added support for Supplement 173 to dictionary.
      Added support for new UIDs from Supplement 173.
      Added support for recently approved CP-1425.
      Fixed test after after implementing CP-1425.
      Added further test cases for VR checker.
      Added read flag to all readXXX() methods.
      Optionally accept invalid content item values.
      Distinguish b/w invalid content items and values.
      Enhanced output to debug logger.
      Fixed wrong position counter in tree node.
      Added regression test for DSRTree::getPosition().
      Added method for counting number of child nodes.
      Fixed issue with VR checker for PN values.
      Fixed warning C4800 reported by Visual Studio.
      Updated data dictionary for DICOM 2015b edition.
      Ignore empty value for XML element 'charset'.
      Added support for optional Mapping Resource UID.
      Pass OFList parameter by-reference not by-value.
      Fixed issue with interpolation algorithm.
      Added hasTemplateIdentification() method.
      Replace the document tree of an SR document.
      Added initial support for SR templates.
      Added helpers for setting a value from dataset.
      Set observation date/time from dataset.
      Moved various methods to protected section.
      Added helpers for setting a value from element.
      Set observation date/time from element.
      Avoid using "check" parameter of SR code class.
      Introduced new error code "Unknow VR".
      Fixed source code and/or comment formatting.
      Do not check invalid UID values for IMAGE node.
      Added support for long code values (CP-1031).
      New class for "Basic Coded Entry Attributes".
      Fixed bug in time normalization code.
      Added missing empty() method to OFMap.
      Added new option for print() method.
      Added new comparison method to DSRCodedEntryValue.
      Made getAndRemoveRootNode() public.
      Fixed issue with addNode() in basic tree class.
      Added new and enhanced existing swap() function.
      Check whether a template is extensible.
      Added initial support for Supplement 186.
      Added initial support for Supplement 180.
      Made constructor and destructor "protected".
      Removed explicit name of base class from call.
      Added mechanism for remembering node positions.
      Added base class for context groups.
      Added initial version of DCM code definitions.
      Added first specific Templates and Context Groups.
      Updated "DCM" codes for DICOM 2015c edition.
      Updated data dictionary for DICOM 2015c edition.
      Fixed issue with wrong quotation marks.
      Added static initialization function (MT-safe).
      Fixed issue in OFStandard::combineDirAndFilename().
      Enhanced check on empty dataset.
      Improved documentation of disableXXXCheck().
      Consistently use "file-set" and "file format".
      Allow for disabling check on "DICOM file format".
      Renamed ANNOUNCE file (removed version suffix).
      Enhanced documentation of createNewSOPInstance().
      Added conversion operator to context group class.
      Added support for CID 42 (Numeric Value Qualifier).
      Added function that initializes all context groups.
      Updated copyright date.
      Fixed wrong documentation of return value.
      Removed superfluous OFStringStream_ends statement.
      Fixed wrong exit code on invalid input file.
      Added support for further Context Groups.
      Fixed various typos in comments.
      Enhanced handling of empty Measured Value Sequence.
      Added check for CID 42 to NUM values.
      Added support for Context Group CID 29.
      Added general information on coding scheme "DCM".
      Added easier method to set a composite reference.
      Fixed issue reported by Clang 3.5 on OpenBSD.
      Introduced condition constant EC_NotYetImplemented.
      Do not set empty concept name codes.
      Added missing DCMTK_DCMDATA_EXPORT macro.
      Added new helper method gotoEntryFromNodeList().
      Added method to look up a context group entry
      Added new mode for adding nodes to the tree.
      Fixed typos in comment.
      Added comment on reserved error codes (for "cmr").
      Fixed wrong comment.
      Introduced new flag to customize the print output.
      Added new command line options to dsrdump.
      Added specific logger for submodule "dcmsr/cmr".
      Added parameter "pos" to getStringValueFromDataset.
      Added static method setEnhancedEncodingMode().
      Clarified use of invalid coded entries.
      Added support for Context Group CID 244.
      Made sure that IOD constraint checker is used.
      Added "Extensible SR" to known document types.
      Added enhanced versions of CID 29, 244 and 4031.
      Added cleanup() function to context group classes.
      Fixed typo and other minor issues in comments.
      Added name prefix to class ContentMappingResource.
      Fixed copyright header in module "dcmsr".
      Added new optional parameter "vm" to readSequence.
      Added methods to read/write to/from sequence items.
      Fixed inconsistencies regarding the use of OFMap.
      Updated Makefile dependencies.
      Added enhanced versions of CID 10013 and 10033.
      Added initial version of SRT and UCUM codes.
      Introduced type for list of CID 7445 values.
      Updated Makefile dependencies.
      Added initial version of TID 1600 (Image Library).
      Slightly changed conversion operator.
      Extracted general information from template.
      Avoid seperator if time component is empty.
      Added support for annotating content items.
      Added support for Context Group CID 100 and 7021.
      Added support for clearing tree node annotations.
      Made sure that tree node annotations are copied.
      Made sure that "dicom.dic" is loaded for tests.
      Fixed various issues in test case.
      Fixed "cardinality" for SQ elements in comments.
      Added comment that "Big Endian" is retired.
      Removed version suffix "3" from dictionary entries.
      Check logger for debug output of template tree.
      Introduced global definitions for certain tags.
      Added CREDITS file.
      Added "YXLON" to the new CREDITS file.
      Added support for recently approved CPs.
      Added support for Supplement 156 to dictionary.
      Added support for new UIDs from Supplement 156.
      Check for recently approved multi-frame images.
      Updated currently supported compiler versions.
      Fixed various minor issues in module descriptions.
      Fixed order of modules in main HTML file.
      Added three new DCMTK modules to README.

Marco Eichelberg (5):
      Introduced OFStandard::dropPrivileges().
      Tools now use OFStandard::dropPrivileges().
      Fixed minor bug in DICOM upper layer FSM.
      Always use current dicom.dic for dcmdata unit tests.
      Removed unsupported wwwapps and perl scripts from module dcmwlm.

Michael Onken (84):
      Added (optional) originating C-MOVE AE title and message ID to C-STORE message.
      Make DcmStorageSCU make use of new MoveOriginator feature.
      Added optional status detail when sending C-MOVE response.
      Make sure memcpy does not copy to NULL destination. Thanks to Francesco Gigante     for the report.
      Added option to discard illegal characters when converting between     DICOM character sets.
      Add "Discard illegal character" support to dcmconv and classes like DcmItem.
      Make sure SCU and SCP request/response data structures are initially zeroed.
      Fixed typo (coersion -> coercion) in DIMSE status constant.
      Added missing kudos.
      Fixed too small buffer for UID in Q/R server.
      Fixed issues where JPEG marker map was not cleared if more than one JPEG     was converted using the same plugin instance.
      Fixed possible doubled destruction of association.
      Make sure oflog also compiles if threads are disabled.
      Always write meta header when receiving files. Removed Winsock comment.
      Added missing CHANGES entry.
      Warning to re-create index.dat after 20130705:
      Create DcmFileFormat from DcmDataset w/o copying.
      Do not copy DcmDataset during C-GET receive.
      Worklist SCP support for Responsible Person/Role.
      Replaced tabs with spaces.
      Support explicit item length denoting too many bytes.
      Corrected misleading transfer syntax error message.
      Fixed Comments.
      Described movescu storage SCP timeout problem.
      Make sure CMAKE_BUILD_TYPE has a default value.
      Fixed doubled tag output in XML output of VR OF.
      Avoid second OpenSSL initialization in constructor.
      Documentation for CMAKE_BUILD_TYPE default value.
      Fixed typo.
      Fixed CHANGES entries.
      Fixed some inconsistencies in documentation.
      Make sure to handle setuid() return code properly.
      Add libjpeg dependency for libtiff and minor changes.
      Fixed shared library build under Unix (configure).
      Enhanced DCMTK CMake exports for external projects.
      Capitalized all CMake key words for consistency.
      Ensure CMake v2.6 still writes DCMTKConfig.cmake.
      DCMTK.cmake and DCMTKTargets.cmake documentation.
      Added helpers to copy common modules between items.
      Fixed Makefile.dep for new files from last comit.
      Switched windows line endings to unix line endings.
      Added further module helpers and fixed small issues.
      Fixed comments and error message.
      Updated module helpers to latest DICOM 2013 draft.
      Fixed wrong ifdef syntax.
      Add connection timeout setting to SCU class.
      Fixed possible memory leak.
      Specific error if no presentation context proposed.
      Reverted false retirement status of some SOP Classes.
      Fix last commit by including implementation file.
      New compare() function for dcmdata object values.
      Make sure dcmdata tests compile with autoconf.
      Make new compare() method more reliable.
      Fixed conversion of color to palette color mode.
      Documented DCMTK's C++ cast macros.
      Fixed installation and added CHANGES file.
      Disable built-in dictionary for CMake Unix builds.
      Make sure presentation contexts do not interfer.
      Fixed iterator type.
      Introduced new modules dcmiod, dcmfg and dcmseg.
      Removed accidentially checked in test files.
      Removed more accidentially checked in test files.
      Fixed iterator dereference.
      Fixed iterator constness.
      Fixed possible DICOM VR problems.
      Removed unused method.
      Fixed mostly constness for some compilers.
      Fixed various doxygen formatting issues.
      Fixed compilers errors (mostly STL-specific).
      Removed unused link libraries.
      Made copyright header consistent in new modules.
      Build flags for internal and external dictionary.
      Updated dictionary build and code documentation.
      Added shared library export maro to IODModule.
      Added more files to be ignored by git.
      Added mising "check-exhaustive" targets.
      Replaced tab characters with spaces.
      Use static_cast instead of dynamic_cast.
      Renamed dictionary configuration build options.
      Simplified builtin dictionary infrastructure.
      Fixed typo in CMake script that can cause warnings.
      Fixed typo and made documentation more consistent.
      Fixed another typo.
      Enable private tags in builtin dictionary on CMake.

Nikolas Goldhammer (1):
      Replaced deprecated CMake expressions.

Uli Schlachter (13):
      Fixed wrong definition of Value Representation Person Name (PN)
      Removed unused local variable which shadowed a variable with the same name.
      Use ".NOTPARALLEL:" to make parallel builds (e.g. -j4) possible.
      Update rootconf for changes which were done directly to generated files.
      Fixed various issues found via cppcheck.
      Use DcmTagKey's output operator where possible.
      Don't include intrin.h on Visual Studio 2005 because of build errors.
      Fixed bug in OFString::copy() and improved unit tests.
      Fixed compiler warnings in ConvertIntegerToString with unsigned integers.
      Worked around compiler warnings on 32bit systems for too large shifts.
      Fixed crash if less than four transfer syntaxes are enabled.
      Silence some more compiler warnings about implicit casts.
      Don't set the defines for thread local storage support incorrectly.
665c2b3

@jcfr jcfr added lgtm and removed wip feedback labels Sep 30, 2015

Owner

jcfr commented Sep 30, 2015

👍

Owner

jcfr commented Sep 30, 2015

That is great. Thanks for the updated PR.

Assuming the build issue you initially mentioned was due to a non-clean build tree, feel free to integrate. 🎱

Member

fedorov commented Sep 30, 2015

Thanks JC! Regarding the build error, it must have been non-clean build tree. All I can say I could not reproduce the issue while building from scratch.

I will merge today.

Owner

jcfr commented Sep 30, 2015

Thanks JC! Regarding the build error, it must have been non-clean build tree.
All I can say I could not reproduce the issue while building from scratch.

Makes sense.

Could you send a short note on the dev list to indicate that user may have to do a clean build if they experience build error following the update ?

I will merge today.

👍

Member

fedorov commented Sep 30, 2015

Merged in r24586 = 3c0c211

fedorov closed this Sep 30, 2015

Member

fedorov commented Sep 30, 2015

Very unfortunately, this broke the build ... This is on Mac Snow Leopard. I tested on Yosemite, and did not have build errors....

http://trunk.cdash.org/viewBuildError.php?buildid=662460

Error while building C++ shared library " ../../lib/libcmr.3.6.1.dylib" in target cmr
Command 
[+] "/usr/bin/clang++"
Directory   /Users/kitware/Dashboards/Continuous/Slicer-0-build/DCMTK-build/dcmsr/libcmr

Undefined symbols for architecture x86_64:
  "DSRTree<DSRDocumentTreeNode>::getRoot() const", referenced from:
      vtable for TID1001_ObservationContext in tid1001.cc.o
      vtable for TID1204_LanguageOfContentItemAndDescendants in tid1204.cc.o
      vtable for TID1600_ImageLibrary in tid1600.cc.o
ld: symbol(s) not found for architecture x86_64

fedorov reopened this Sep 30, 2015

Member

fedorov commented Sep 30, 2015

@michaelonken do you know if OFFIS tested DCMTK on Mac SnowLeopard?

Owner

jcfr commented Sep 30, 2015

@fedorov Looking at the error on the factory now.

From the Dashboard I can see it is darwin 14.4.0 which seems to belong to Mac OS X 10.10 "Yosemite". This is the only Apple platform tested. Probably you need a patch; I am happy to integrate it into DCMTK upstream.

Owner

jcfr commented Sep 30, 2015

The error happen when building the target cmr:

$ make cmr/fast  VERBOSE=1
make -f dcmsr/libcmr/CMakeFiles/cmr.dir/build.make dcmsr/libcmr/CMakeFiles/cmr.dir/build
Linking CXX shared library ../../lib/libcmr.dylib
cd /Users/kitware/Dashboards/Continuous/Slicer-0-build/DCMTK-build/dcmsr/libcmr && "/Users/kitware/Dashboards/Support/CMake 3.0.1.app/Contents/bin/cmake" -E cmake_link_script CMakeFiles/cmr.dir/link.txt --verbose=1
"/Users/kitware/Dashboards/Support/CMake 3.0.1.app/Contents/bin/ctest" --launch --target-name cmr --build-dir /Users/kitware/Dashboards/Continuous/Slicer-0-build/DCMTK-build/dcmsr/libcmr --output ../../lib/libcmr.3.6.1.dylib --target-type SHARED_LIBRARY --language CXX -- /usr/bin/clang++    -fvisibility=hidden -D_XOPEN_SOURCE_EXTENDED -D_BSD_SOURCE -D_BSD_COMPAT -D_OSF_SOURCE -D_DARWIN_C_SOURCE -fPIC -O3 -DNDEBUG -arch x86_64 -isysroot /Developer/SDKs/MacOSX10.6.sdk -mmacosx-version-min=10.6 -dynamiclib -Wl,-headerpad_max_install_names   -compatibility_version 7.0.0 -current_version 3.6.1 -o ../../lib/libcmr.3.6.1.dylib -install_name /Users/kitware/Dashboards/Continuous/Slicer-0-build/DCMTK-build/lib/libcmr.7.dylib CMakeFiles/cmr.dir/init.cc.o CMakeFiles/cmr.dir/logger.cc.o CMakeFiles/cmr.dir/srnumvl.cc.o CMakeFiles/cmr.dir/tid1001.cc.o CMakeFiles/cmr.dir/tid1204.cc.o CMakeFiles/cmr.dir/tid1600.cc.o CMakeFiles/cmr.dir/cid11.cc.o CMakeFiles/cmr.dir/cid29.cc.o CMakeFiles/cmr.dir/cid29e.cc.o CMakeFiles/cmr.dir/cid42.cc.o CMakeFiles/cmr.dir/cid100.cc.o CMakeFiles/cmr.dir/cid244.cc.o CMakeFiles/cmr.dir/cid244e.cc.o CMakeFiles/cmr.dir/cid4020.cc.o CMakeFiles/cmr.dir/cid4021.cc.o CMakeFiles/cmr.dir/cid4031.cc.o CMakeFiles/cmr.dir/cid4031e.cc.o CMakeFiles/cmr.dir/cid5000.cc.o CMakeFiles/cmr.dir/cid5001.cc.o CMakeFiles/cmr.dir/cid7021.cc.o CMakeFiles/cmr.dir/cid7445.cc.o CMakeFiles/cmr.dir/cid7452.cc.o CMakeFiles/cmr.dir/cid7453.cc.o CMakeFiles/cmr.dir/cid10013.cc.o CMakeFiles/cmr.dir/cid10013e.cc.o CMakeFiles/cmr.dir/cid10033.cc.o CMakeFiles/cmr.dir/cid10033e.cc.o ../../lib/libdcmsr.3.6.1.dylib ../../lib/libdcmimage.3.6.1.dylib ../../lib/libdcmimgle.3.6.1.dylib ../../lib/libdcmdata.3.6.1.dylib ../../lib/liboflog.3.6.1.dylib ../../lib/libofstd.3.6.1.dylib -lpthread 
Undefined symbols for architecture x86_64:
  "DSRTree<DSRDocumentTreeNode>::getRoot() const", referenced from:
      vtable for TID1001_ObservationContext in tid1001.cc.o
      vtable for TID1204_LanguageOfContentItemAndDescendants in tid1204.cc.o
      vtable for TID1600_ImageLibrary in tid1600.cc.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[1]: *** [lib/libcmr.3.6.1.dylib] Error 1
make: *** [cmr/fast] Error 2
$ /usr/bin/clang++ --version
clang version 3.1 (tags/RELEASE_31/final)
Target: x86_64-apple-darwin10.8.0
Thread model: posix
Member

fedorov commented Sep 30, 2015

@jcfr yes, that's right, but the function is defined.

@michaelonken this seems to be some fancy C++ magic - do you have any idea what might be incompatible?

virtual T *getRoot() const;
...
template<typename T>
T *DSRTree<T>::getRoot() const
{
    return RootNode;
}

We saw the same error on 32 Bit Linux using Clang 3.0-6.2. We blamed it on an error in that clang version, later versions (obviously not all...) of clang we tested handled it flawlessly. So we decided not to fix it (unitl now:).

So, no idea!

Member

fedorov commented Sep 30, 2015

@jcfr sorry, here's the version that should be accessible from the outside (it is cross-referenced source code, might be easier to track the issue): http://tiny-qiicr.partners.org/source/xref/dcmtk/dcmsr/include/dcmtk/dcmsr/dsrtree.h#349

One way to work around the issue is to build without libcmr; it's new and you don't use it so far.

Member

fedorov commented Sep 30, 2015

True, but I did not enable it explicitly, so we will still need to patch dcmtk... Let's see if Jorg has any suggestions (I emailed him).

Member

fedorov commented Sep 30, 2015

Adding @jriesmeier!

Member

fedorov commented Sep 30, 2015

This is my configuration on which this code compiles fine:

$ clang++ --version
Apple LLVM version 7.0.0 (clang-700.0.72)
Target: x86_64-apple-darwin14.5.0
Thread model: posix
Owner

jcfr commented Sep 30, 2015

We could configure DCMTK explicitly setting the list of modules we would like to use:

-DDCMTK_MODULES:STRING="ofstd;oflog;dcmdata;dcmimgle;dcmimage;dcmjpeg;dcmjpls;dcmtls;dcmnet;dcmsign;dcmwlm;dcmqrdb;dcmpstat;dcmrt;dcmiod;dcmfg;dcmseg"

Alternatively we could also introduce an option named DCMTK_DISABLED_MODULES allowing to set a list of modules to disable ...

Unfortunately libcmr is not a module, but more a sub library of the dcmsr module and thus is not directly configurable via CMake (there could be such an option, though; the same applies to the libi2d library inside dcmdata which Jörg used as a template in terms of code structure).

Member

fedorov commented Sep 30, 2015

And to add to what Michael said, we would prefer not to disable dcmsr altogether. Let's wait a bit to see what dashboards show for win and linux, and see if there's any response from Jörg.

I will also investigate if I can set up a linux virtual machine with that version of clang to try to debug/test the issue ...

Owner

jcfr commented Sep 30, 2015

linux virtual machine with that version of clang

More details about the compiler used on MAcOSX are reported here: http://wiki.slicer.org/slicerWiki/index.php/Documentation/Nightly/Developers/Factory#factory.kitware

Member

fedorov commented Sep 30, 2015

Not reproducible on Ubuntu 12.04 x86 with clang 3.0 :(((

[100%] Built target dcmsr
fedorov@ubuntu:~/Downloads/dcmtk-build$ clang++ --version
Ubuntu clang version 3.0-6ubuntu3 (tags/RELEASE_30/final) (based on LLVM 3.0)
Target: i386-pc-linux-gnu
Thread model: posix
fedorov@ubuntu:~/Downloads/dcmtk-build$ uname -a
Linux ubuntu 3.13.0-32-generic #57~precise1-Ubuntu SMP Tue Jul 15 03:50:54 UTC 2014 i686 i686 i386 GNU/Linux
Owner

jcfr commented Sep 30, 2015

On Linux (g++ (Ubuntu 4.8.4-2ubuntu1~14.04) 4.8.4):

$ nm ./dcmsr/libcmr/CMakeFiles/cmr.dir/tid1001.cc.o  | grep getRoot | c++filt 
0000000000000000 W DSRTree<DSRDocumentTreeNode>::getRoot() const

On MacOSX (clang 3.1):

$ nm ./dcmsr/libcmr/CMakeFiles/cmr.dir/tid1001.cc.o  | grep getRoot | c++filt 
                 U DSRTree<DSRDocumentTreeNode>::getRoot() const

@jcfr jcfr added a commit to commontk/DCMTK that referenced this pull request Sep 30, 2015

@jcfr jcfr Fix dcmsr build error on clang 3.1 on MacOSX. See Slicer/Slicer#359
This commit fixes the build error reported below by explicitly
instantiating the DSRTree<DSRDocumentTreeNode>.

Build error happening using Clang 3.1 downloaded from [1]
on MacOSX SnowLeopard:

//---------------
$ make cmr/fast  VERBOSE=1
make -f dcmsr/libcmr/CMakeFiles/cmr.dir/build.make dcmsr/libcmr/CMakeFiles/cmr.dir/build
Linking CXX shared library ../../lib/libcmr.dylib
cd /Users/kitware/Dashboards/Continuous/Slicer-0-build/DCMTK-build/dcmsr/libcmr && "/Users/kitware/Dashboards/Support/CMake 3.0.1.app/Contents/bin/cmake" -E cmake_link_script CMakeFiles/cmr.dir/link.txt --verbose=1
"/Users/kitware/Dashboards/Support/CMake 3.0.1.app/Contents/bin/ctest" --launch --target-name cmr --build-dir /Users/kitware/Dashboards/Continuous/Slicer-0-build/DCMTK-build/dcmsr/libcmr --output ../../lib/libcmr.3.6.1.dylib --target-type SHARED_LIBRARY --language CXX -- /usr/bin/clang++    -fvisibility=hidden -D_XOPEN_SOURCE_EXTENDED -D_BSD_SOURCE -D_BSD_COMPAT -D_OSF_SOURCE -D_DARWIN_C_SOURCE -fPIC -O3 -DNDEBUG -arch x86_64 -isysroot /Developer/SDKs/MacOSX10.6.sdk -mmacosx-version-min=10.6 -dynamiclib -Wl,-headerpad_max_install_names   -compatibility_version 7.0.0 -current_version 3.6.1 -o ../../lib/libcmr.3.6.1.dylib -install_name /Users/kitware/Dashboards/Continuous/Slicer-0-build/DCMTK-build/lib/libcmr.7.dylib CMakeFiles/cmr.dir/init.cc.o CMakeFiles/cmr.dir/logger.cc.o CMakeFiles/cmr.dir/srnumvl.cc.o CMakeFiles/cmr.dir/tid1001.cc.o CMakeFiles/cmr.dir/tid1204.cc.o CMakeFiles/cmr.dir/tid1600.cc.o CMakeFiles/cmr.dir/cid11.cc.o CMakeFiles/cmr.dir/cid29.cc.o CMakeFiles/cmr.dir/cid29e.cc.o CMakeFiles/cmr.dir/cid42.cc.o CMakeFiles/cmr.dir/cid100.cc.o CMakeFiles/cmr.dir/cid244.cc.o CMakeFiles/cmr.dir/cid244e.cc.o CMakeFiles/cmr.dir/cid4020.cc.o CMakeFiles/cmr.dir/cid4021.cc.o CMakeFiles/cmr.dir/cid4031.cc.o CMakeFiles/cmr.dir/cid4031e.cc.o CMakeFiles/cmr.dir/cid5000.cc.o CMakeFiles/cmr.dir/cid5001.cc.o CMakeFiles/cmr.dir/cid7021.cc.o CMakeFiles/cmr.dir/cid7445.cc.o CMakeFiles/cmr.dir/cid7452.cc.o CMakeFiles/cmr.dir/cid7453.cc.o CMakeFiles/cmr.dir/cid10013.cc.o CMakeFiles/cmr.dir/cid10013e.cc.o CMakeFiles/cmr.dir/cid10033.cc.o CMakeFiles/cmr.dir/cid10033e.cc.o ../../lib/libdcmsr.3.6.1.dylib ../../lib/libdcmimage.3.6.1.dylib ../../lib/libdcmimgle.3.6.1.dylib ../../lib/libdcmdata.3.6.1.dylib ../../lib/liboflog.3.6.1.dylib ../../lib/libofstd.3.6.1.dylib -lpthread
Undefined symbols for architecture x86_64:
  "DSRTree<DSRDocumentTreeNode>::getRoot() const", referenced from:
      vtable for TID1001_ObservationContext in tid1001.cc.o
      vtable for TID1204_LanguageOfContentItemAndDescendants in tid1204.cc.o
      vtable for TID1600_ImageLibrary in tid1600.cc.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[1]: *** [lib/libcmr.3.6.1.dylib] Error 1
make: *** [cmr/fast] Error 2
//---------------

[1] http://llvm.org/releases/download.html#3.1
ade7e93

@jcfr jcfr added a commit that referenced this pull request Sep 30, 2015

@jcfr jcfr COMP: Fix DCMTK build error on Clang 3.1 on MacOSX
This commit fixes build error introduced by previous commit by updating
the version of DCMTK.

Updated version of DCMTK includes this commit:

//--------------
commit commontk/DCMTK@ade7e93
Author: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>
Date:   Wed Sep 30 15:24:53 2015 -0400

    Fix dcmsr build error on clang 3.1 on MacOSX. See Slicer/Slicer#359

    This commit fixes the build error reported below by explicitly
    instantiating the DSRTree<DSRDocumentTreeNode>.

    Build error happening using Clang 3.1 downloaded from [1]
    on MacOSX SnowLeopard:

    //---------------
    $ make cmr/fast  VERBOSE=1
    make -f dcmsr/libcmr/CMakeFiles/cmr.dir/build.make dcmsr/libcmr/CMakeFiles/cmr.dir/build
    Linking CXX shared library ../../lib/libcmr.dylib
    cd /Users/kitware/Dashboards/Continuous/Slicer-0-build/DCMTK-build/dcmsr/libcmr && "/Users/kitware/Dashboards/Support/CMake 3.0.1.app/Contents/bin/cmake" -E cmake_link_script CMakeFiles/cmr.dir/link.txt --verbose=1
    "/Users/kitware/Dashboards/Support/CMake 3.0.1.app/Contents/bin/ctest" --launch --target-name cmr --build-dir /Users/kitware/Dashboards/Continuous/Slicer-0-build/DCMTK-build/dcmsr/libcmr --output ../../lib/libcmr.3.6.1.dylib --target-type SHARED_LIBRARY --language CXX -- /usr/bin/clang++    -fvisibility=hidden -D_XOPEN_SOURCE_EXTENDED -D_BSD_SOURCE -D_BSD_COMPAT -D_OSF_SOURCE -D_DARWIN_C_SOURCE -fPIC -O3 -DNDEBUG -arch x86_64 -isysroot /Developer/SDKs/MacOSX10.6.sdk -mmacosx-version-min=10.6 -dynamiclib -Wl,-headerpad_max_install_names   -compatibility_version 7.0.0 -current_version 3.6.1 -o ../../lib/libcmr.3.6.1.dylib -install_name /Users/kitware/Dashboards/Continuous/Slicer-0-build/DCMTK-build/lib/libcmr.7.dylib CMakeFiles/cmr.dir/init.cc.o CMakeFiles/cmr.dir/logger.cc.o CMakeFiles/cmr.dir/srnumvl.cc.o CMakeFiles/cmr.dir/tid1001.cc.o CMakeFiles/cmr.dir/tid1204.cc.o CMakeFiles/cmr.dir/tid1600.cc.o CMakeFiles/cmr.dir/cid11.cc.o CMakeFiles/cmr.dir/cid29.cc.o CMakeFiles/cmr.dir/cid29e.cc.o CMakeFiles/cmr.dir/cid42.cc.o CMakeFiles/cmr.dir/cid100.cc.o CMakeFiles/cmr.dir/cid244.cc.o CMakeFiles/cmr.dir/cid244e.cc.o CMakeFiles/cmr.dir/cid4020.cc.o CMakeFiles/cmr.dir/cid4021.cc.o CMakeFiles/cmr.dir/cid4031.cc.o CMakeFiles/cmr.dir/cid4031e.cc.o CMakeFiles/cmr.dir/cid5000.cc.o CMakeFiles/cmr.dir/cid5001.cc.o CMakeFiles/cmr.dir/cid7021.cc.o CMakeFiles/cmr.dir/cid7445.cc.o CMakeFiles/cmr.dir/cid7452.cc.o CMakeFiles/cmr.dir/cid7453.cc.o CMakeFiles/cmr.dir/cid10013.cc.o CMakeFiles/cmr.dir/cid10013e.cc.o CMakeFiles/cmr.dir/cid10033.cc.o CMakeFiles/cmr.dir/cid10033e.cc.o ../../lib/libdcmsr.3.6.1.dylib ../../lib/libdcmimage.3.6.1.dylib ../../lib/libdcmimgle.3.6.1.dylib ../../lib/libdcmdata.3.6.1.dylib ../../lib/liboflog.3.6.1.dylib ../../lib/libofstd.3.6.1.dylib -lpthread
    Undefined symbols for architecture x86_64:
      "DSRTree<DSRDocumentTreeNode>::getRoot() const", referenced from:
          vtable for TID1001_ObservationContext in tid1001.cc.o
          vtable for TID1204_LanguageOfContentItemAndDescendants in tid1204.cc.o
          vtable for TID1600_ImageLibrary in tid1600.cc.o
    ld: symbol(s) not found for architecture x86_64
    clang: error: linker command failed with exit code 1 (use -v to see invocation)
    make[1]: *** [lib/libcmr.3.6.1.dylib] Error 1
    make: *** [cmr/fast] Error 2
    //---------------

    [1] http://llvm.org/releases/download.html#3.1
//--------------

git-svn-id: http://svn.slicer.org/Slicer4/trunk@24587 3bd1e089-480b-0410-8dfb-8563597acbee
d83b7ed
Owner

jcfr commented Sep 30, 2015

Fixed in r24587

@michaelonken @jriesmeier The associated patch to integrate in DCMTK master is commontk/DCMTK@ade7e93

jcfr closed this Sep 30, 2015

Member

fedorov commented Sep 30, 2015

👍 thank you JC!

The library "cmr" (Content Mapping Resource) is an optional extension to the DCMTK module "dcmsr" (DICOM Structured Reporting), which adds support for specific Templates and Context Groups, e.g. those that are needed for QIICR. Optional means that not all programs using "dcmsr" also need to link "cmr". In my opinion, it makes no sense to introduce another (CMake) configuration option to enable/disable compilation of this submodule.

With regard to the compilation issue on Mac OS X: as Michael already wrote, we experienced the same problem with Clang 3.0.x (and "share libs" enabled) - but only with this particular version. Newer versions of Clang (e.g. 3.3 and 3.4 I've installed temporarily on my Linux machine) work as expected. Also Clang 3.0-6.2 with static linkage works out of the box (according to our Dashboard). Not sure whether this is an issue with the source code or with the compiler/linker.

Since our own Dashboard does not yet allow us to start a compilation process on a particular machine with a particular version of the source code, I don't know how I/we should find a solution. I don't want to have "test commits" in the DCMTK repository and we don't want to have "merge commits" either.

Any other suggestion?

@jcfr Done. Now in DCMTK's "testing" branch. Will show up in "master" probably tomorrow after the nightly build on all other tested platforms was successful (or at least not worse ;).

Thanks!

Owner

jcfr commented Oct 1, 2015

Great. Thanks.
Jc
On Oct 1, 2015 5:16 AM, "J. Riesmeier" notifications@github.com wrote:

@jcfr https://github.com/jcfr Done. Now in DCMTK's "testing" branch.
Will show up in "master" probably tomorrow after the nightly build on all
other tested platforms was successful (or at least not worse ;).

Thanks!


Reply to this email directly or view it on GitHub
#359 (comment).

Member

fedorov commented Oct 1, 2015

@michaelonken @jriesmeier there is another set of errors with VS2008: http://trunk.cdash.org/buildSummary.php?buildid=663433

39>6>12>C:\D\N\Slicer-1-build\DCMTK\ofstd\include\dcmtk/ofstd/oftypes.h(111) : error C2146: syntax error : missing ';' before identifier 'Sint64'
39>6>12>C:\D\N\Slicer-1-build\DCMTK\ofstd\include\dcmtk/ofstd/oftypes.h(111) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
39>6>12>C:\D\N\Slicer-1-build\DCMTK\ofstd\include\dcmtk/ofstd/oftypes.h(111) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
39>6>12>C:\D\N\Slicer-1-build\DCMTK\ofstd\include\dcmtk/ofstd/oftypes.h(125) : error C2146: syntax error : missing ';' before identifier 'Uint64'
39>6>12>C:\D\N\Slicer-1-build\DCMTK\ofstd\include\dcmtk/ofstd/oftypes.h(125) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
39>6>12>C:\D\N\Slicer-1-build\DCMTK\ofstd\include\dcmtk/ofstd/oftypes.h(125) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
39>6>12>C:\D\N\Slicer-1-build\DCMTK\ofstd\include\dcmtk/ofstd/oftypes.h(145) : error C2146: syntax error : missing ';' before identifier 'OFintptr_t'
39>6>12>C:\D\N\Slicer-1-build\DCMTK\ofstd\include\dcmtk/ofstd/oftypes.h(145) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
39>6>12>C:\D\N\Slicer-1-build\DCMTK\ofstd\include\dcmtk/ofstd/oftypes.h(145) : error C2378: 'Sint64' : redefinition; symbol cannot be overloaded with a typedef
39>6>12>        C:\D\N\Slicer-1-build\DCMTK\ofstd\include\dcmtk/ofstd/oftypes.h(111) : see declaration of 'Sint64'
39>6>12>C:\D\N\Slicer-1-build\DCMTK\ofstd\include\dcmtk/ofstd/oftypes.h(145) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
39>6>12>C:\D\N\Slicer-1-build\DCMTK\ofstd\include\dcmtk/ofstd/oftypes.h(150) : error C2146: syntax error : missing ';' before identifier 'OFuintptr_t'
39>6>12>C:\D\N\Slicer-1-build\DCMTK\ofstd\include\dcmtk/ofstd/oftypes.h(150) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
39>6>12>C:\D\N\Slicer-1-build\DCMTK\ofstd\include\dcmtk/ofstd/oftypes.h(150) : error C2378: 'Uint64' : redefinition; symbol cannot be overloaded with a typedef

<many more>
Member

fedorov commented Oct 1, 2015

@jcfr do you have a suggestion how to proceed with debugging this issue? I do not have a system set up with a VS2008 compiler to work on a patch.

Do we have to revert this commit until it is confirmed DCMTK can be compiled with VS2008?

In fact, DCMTK - also the latest snapshot - can be compiled with VS 2008 (according to DCMTK's Dashboard). Maybe, your problems result from a mixture of different source code packages? Something that is related to the particular CMake configuration or the superbuild feature, which is not used on DCMTK's Dashboard?

Member

fedorov commented Oct 1, 2015

@jriesmeier these look like purely DCMTK compile errors. I can't think of a DCMTK dependency that is compiled by Slicer superbuild. However, maybe it works differently on the Slicer factory because we use different build options? The ones used in Slicer are here: https://github.com/Slicer/Slicer/blob/master/SuperBuild/External_DCMTK.cmake#L39-L67

Looking at my mac build, DCMTK_CXX11_FLAGS is set to -std=c++11 -- is this how you tested the build on the OFFIS factories?

@jcfr are there any more detailed options about VS2008 compiler configuration that can be relevant? I looked at http://wiki.slicer.org/slicerWiki/index.php/Documentation/Nightly/Developers/Factory#VM:_Windows_7, but did not find much detail.

Owner

jcfr commented Oct 1, 2015

Interestingly, going in the build directory on the factory and clicking on "Build all", it completes without error. See below.

I suspect this is an error happening only when doing a clean build tree ... will report back.

1>------ Skipped Build: Project: RUN_TESTS, Configuration: Release x64 ------
1>Project not selected to build for this solution configuration 
2>------ Skipped Build: Project: mkvrscan, Configuration: Release x64 ------
2>Project not selected to build for this solution configuration 
3>------ Build started: Project: mkdictbi, Configuration: Release x64 ------
4>------ Build started: Project: mkdeftag, Configuration: Release x64 ------
4>Compiling...
4>dctypes.cc
4>cmdlnarg.cc
4>dchashdi.cc
4>dcvr.cc
4>dcdict.cc
4>dcdicent.cc
5>------ Skipped Build: Project: INSTALL, Configuration: Release x64 ------
5>Project not selected to build for this solution configuration 
4>dctagkey.cc
4>mkdeftag.cc
4>Performing Pre-Link Event...
3>Compiling...
4>Linking...
3>dctypes.cc
3>cmdlnarg.cc
3>dchashdi.cc
3>dcvr.cc
4>Embedding manifest...
4>Build log was saved at "file://c:\D\N\Slicer-1-build\DCMTK-build\dcmdata\libsrc\mkdeftag.dir\Release\BuildLog.htm"
4>mkdeftag - 0 error(s), 0 warning(s)
6>------ Skipped Build: Project: updatedeftag, Configuration: Release x64 ------
6>Project not selected to build for this solution configuration 
3>dcdict.cc
3>dcdicent.cc
3>dctagkey.cc
3>mkdictbi.cc
3>Performing Pre-Link Event...
3>Linking...
3>Embedding manifest...
3>Build log was saved at "file://c:\D\N\Slicer-1-build\DCMTK-build\dcmdata\libsrc\mkdictbi.dir\Release\BuildLog.htm"
3>mkdictbi - 0 error(s), 0 warning(s)
7>------ Skipped Build: Project: updatebuiltindict, Configuration: Release x64 ------
7>Project not selected to build for this solution configuration 
========== Build: 2 succeeded, 0 failed, 88 up-to-date, 5 skipped ==========

lassoan commented Oct 1, 2015

The error happens when you build the target CTKDICOMCorePythonQt, not when building DCMTK.

32>3>3>------ Build started: Project: CTKDICOMCorePythonQt, Configuration: Release x64 ------
32>3>3>Compiling...
32>3>2>   Creating library F:\SAB\Slicer-Nightly-build\CTK-build\CTK-build\bin\Release\CTKVisualizationVTKCore.lib and object F:\SAB\Slicer-Nightly-build\CTK-build\CTK-build\bin\Release\CTKVisualizationVTKCore.exp
32>3>3>org_commontk_CTKDICOMCore_init.cpp
32>3>1>moc_ctkPopupWidget_p.cxx
32>3>3>F:\SAB\Slicer-Nightly-build\DCMTK-build\config\include\dcmtk/config/osconfig.h(175) : warning C4005: 'HAVE_FTIME' : macro redefinition
32>3>3>        f:\sab\slicer-nightly-build\python-install\include\pyconfig.h(582) : see previous definition of 'HAVE_FTIME'
32>3>3>F:\SAB\Slicer-Nightly-build\DCMTK-build\config\include\dcmtk/config/osconfig.h(217) : warning C4005: 'HAVE_GETPID' : macro redefinition
31>10>sitkAntiAliasBinaryImageFilter.cxx
32>3>3>        f:\sab\slicer-nightly-build\python-install\include\pyconfig.h(593) : see previous definition of 'HAVE_GETPID'
31>7>Build log was saved at "file://f:\SAB\Slicer-Nightly-build\SimpleITK-build\Code\BasicFilters\src\SimpleITKBasicFilters5.dir\Release\BuildLog.htm"
32>3>3>F:\SAB\Slicer-Nightly-build\DCMTK-build\config\include\dcmtk/config/osconfig.h(274) : warning C4005: 'HAVE_IO_H' : macro redefinition
31>7>SimpleITKBasicFilters5 - 3 error(s), 0 warning(s)
32>3>3>        f:\sab\slicer-nightly-build\python-install\include\pyconfig.h(58) : see previous definition of 'HAVE_IO_H'
31>9>Generating Code...
32>3>3>F:\SAB\Slicer-Nightly-build\DCMTK-build\config\include\dcmtk/config/osconfig.h(622) : warning C4005: 'HAVE_STRERROR' : macro redefinition
32>3>3>        f:\sab\slicer-nightly-build\python-install\include\pyconfig.h(64) : see previous definition of 'HAVE_STRERROR'
32>3>3>F:\SAB\Slicer-Nightly-build\DCMTK-build\config\include\dcmtk/config/osconfig.h(718) : warning C4005: 'HAVE_SYS_UTIME_H' : macro redefinition
32>3>3>        f:\sab\slicer-nightly-build\python-install\include\pyconfig.h(59) : see previous definition of 'HAVE_SYS_UTIME_H'
32>3>3>F:\SAB\Slicer-Nightly-build\DCMTK-build\config\include\dcmtk/config/osconfig.h(727) : warning C4005: 'HAVE_TEMPNAM' : macro redefinition
32>3>3>        f:\sab\slicer-nightly-build\python-install\include\pyconfig.h(60) : see previous definition of 'HAVE_TEMPNAM'
32>3>3>F:\SAB\Slicer-Nightly-build\DCMTK-build\config\include\dcmtk/config/osconfig.h(736) : warning C4005: 'HAVE_TMPNAM' : macro redefinition
32>3>3>        f:\sab\slicer-nightly-build\python-install\include\pyconfig.h(62) : see previous definition of 'HAVE_TMPNAM'
32>3>3>F:\SAB\Slicer-Nightly-build\DCMTK-build\config\include\dcmtk/config/osconfig.h(974) : warning C4005: 'HAVE_LONG_LONG' : macro redefinition
32>3>3>        f:\sab\slicer-nightly-build\python-install\include\pyconfig.h(304) : see previous definition of 'HAVE_LONG_LONG'
32>3>1>moc_ctkPathListButtonsWidget.cxx
32>3>3>F:\SAB\Slicer-Nightly-build\DCMTK\ofstd\include\dcmtk/ofstd/oftypes.h(111) : error C2146: syntax error : missing ';' before identifier 'Sint64'
32>3>3>F:\SAB\Slicer-Nightly-build\DCMTK\ofstd\include\dcmtk/ofstd/oftypes.h(111) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int

By the way, according to the change log, it's been removed from DCMTK long time ago (see CHANGES.360):

  • Removed Sint64 and Uint64 since there is no 64bit int available everywhere.
    Affects: ofstd/include/dcmtk/ofstd/oftypes.h
Member

fedorov commented Oct 1, 2015

Ah! Thanks a lot Andras! 👍

This is a partial relief :)

Looking at my mac build, DCMTK_CXX11_FLAGS is set to -std=c++11 -- is this how you tested the build on the OFFIS factories?"

@fedorov No, I don't think so, and I personally would not use DCMTK with "C++11" support enabled -- at least not, until the implementation proved to work on more than a few systems. This is still "work in progress" or "experimental", whatever you'd like to call it. I'm not the author of these things.

lassoan commented Oct 1, 2015

The issue is that int64_t is not defined and it is expected because HAVE_INT64_T is defined by PythonQt.h (I don't know why). We can fix the build issue by adding a #undef HAVE_INT64_T in CTK\CMake\ctkWrapPythonQt.py to:

#include <PythonQt.h>
// XXX Avoid  warning: "HAVE_STAT" redefined
#undef HAVE_STAT
#undef HAVE_INT64_T
#include "${namespace}_${target}.h" 

Note that there is already a similar hack there for HAVE_STAT.

Owner

jcfr commented Oct 1, 2015

Few updates:

  1. About the build error detailed by @lassoan previous comment, the macro HAVE_INT64_T is defined as a side-effect of including python.h. A workaround would be undefined the macro. More about the macro in the next bullet point.
  2. regarding the redefined warnings. I have a PR in CTK to workaround these. See commontk/CTK#605. This approach is not sustainable since we have to replicate the workaround in few other location ... @jriesmeier @michaelonken Would it make sense to update CMake/osconfig.h.in (and eventually config/include/dcmtk/config/osconfig.h.in) undefining the macro if it as already been defined ? osconfig.h would basically include a header named ospreconfig.h that would undef all the macros used by DCMTK.
  3. about cxx11 - the current CMake code does not seem to give the option to disable the support. It will systematically enable it compiler support it. See here and here

@jcfr Documentation for C++11 support in DCMTK is here: http://support.dcmtk.org/docs-snapshot/cxx11_support.html

Unless you activate DCMTK_USE_CXX11_STL, C++11 support should be disabled (even though the compiler supports it). The naming conventions of all these xxx_USE_xxx, xxx_WITH_xxx options will probably change since they do not yet follow the DCMTK conventions.

Regarding 2. Could you please send your proposal to "bugs/at/dcmtk/dot/org" so that the other DCMTK development team members can also have a look at it?

lassoan commented Oct 1, 2015

Long-term solution may be to rename HAVE_INT64_T in DCMTK (to something more specific, such as DCMTK_HAVE_INT64_T), because undefining HAVE_INT64_T may cause side effects elsewhere in the software (for example it may break PythonQt).

Owner

jcfr commented Oct 1, 2015

@fedorov Having the variable DCMTK_CXX11_FLAGS set is independent of having C++11 support enabled, if you didn't explicitly enabled the option DCMTK_USE_CXX11_STL, there are no problem on that side.

Member

fedorov commented Oct 1, 2015

@jcfr thank you for the clarification. No, I didn't enable anything manually. I just wanted to mention the settings superbuild set for DCMTK on my machine automatically.

Owner

jcfr commented Oct 1, 2015

@fedorov Makes sense. While we are at it, could you also check that (1) DCMTK_USE_CXX11_STL is disabled in the CMakeCache.txt and (2) CMAKE_CXX_FLAGS does NOT contain -std=c++11 ?

Member

fedorov commented Oct 1, 2015

@fedorov Makes sense. While we are at it, could you also check that (1) DCMTK_USE_CXX11_STL
is disabled in the CMakeCache.txt and (2) CMAKE_CXX_FLAGS does NOT contain -std=c++11 ?

Yes, I confirm DCMTK_USE_CXX11_STL is disabled in the CMakeCache.txt and CMAKE_CXX_FLAGS does NOT contain -std=c++11.

fedorov changed the title from ENH: Update DMCTK to use version DCMTK-3.6.1_20150924 to ENH: Update DMCTK to use snapshot DCMTK-3.6.1_20150924 Oct 1, 2015

To my understanding Python.h (or the included pyconfig.h?) is setting HAVE_INT64_T wrongly, since it does NOT seem to be supported on the system, right? So is that a problem with the python package used?

I then would not work around it in DCMTK but in the code using Python.h and report that to the python package maintainers if not already fixed in later versions.

I think renaming the macro in DCMTK would solve the problem, sure, but actually the macro name uses the common convention (?) for type checks with the idea that one can reuse them in code once detected. Actually the macro documentation in pyconfig.h says it should exactly signal whether int64_t is available or not.

lassoan commented Oct 1, 2015

Both Python's and DCMTK's use of HAVE_INT64_T is valid they are just different. If you do a quick web search you can see that HAVE_INT64_T is used by many software packages and almost all of them compute the value differently. The best is to keep yourself away from this name.

@jcfr jcfr added a commit to jcfr/CTK that referenced this pull request Oct 1, 2015

@jcfr jcfr Fix CTKDICOMWidgetsPythonQt windows build error undefining HAVE_INT64_T
This is a workaround to allow the build against DCMTK
version DCMTK-3.6.1_20150924 to succeed.

A more appropriate solution could be to update DCMTK so that it uses
namespaced macros like DCMTK_HAVE_INT64_T

This commit fixes the following build error:

//----
error C2146: syntax error : missing ';' before identifier 'Sint64'
C:\D\N\Slicer-1-build\DCMTK\ofstd\include\dcmtk/ofstd/oftypes.h(111) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
//----

See Slicer/Slicer#359

Reported-by: Andriy Fedorov <fedorov@bwh.harvard.edu>
Thanks: Andras Lasso <lasso@queensu.ca>
281ffb7
Owner

jcfr commented Oct 1, 2015

Issue has been fixed in r24588

That said, I still think DCMTK should be fixed. Here is the proposal I would like to share on "bugs/at/dcmtk/dot/org":

Relying on macro starting with HAVE_ in public header cause problem when DCMTK is integrated with other libraries doing the same (ie python). In addition to have undesired "undefined warning" (see commontk/CTK@7aaf1ac), it can also cause build error because the meaning associated with a given macro can be different across libraries (See commontk/CTK@281ffb7 and here)

The plan would be the following:

  • Update all DCMTK macros to be prefixed with DCMTK_
  • By default, the original HAVE_XXXX will also be defined to ensure code relying on them can still build.
  • An option named USE_GENERIC_HAVE_MACROS (or similar name) will be added to allow project to build with/without setting the HAVE_XXXX macros.

@Slicer/slicer-core-team Let me know what you think. Thanks

Member

fedorov commented Oct 2, 2015

@jcfr having read the discussion - yes, what you propose makes sense to me. I don't think it is feasible to expect different packages to agree on a consistent definition of HAVE_XXXX.

Owner

pieper commented Oct 2, 2015

+1

On Thursday, October 1, 2015, Andrey Fedorov notifications@github.com
wrote:

@jcfr https://github.com/jcfr having read the discussion - yes, what
you propose makes sense to me. I don't think it is feasible to expect
different packages to agree on a consistent definition of HAVE_XXXX.


Reply to this email directly or view it on GitHub
#359 (comment).

Thanks for the fix jc and clarification, Andras. We discuss the issue with the dcmtk team and see and let you know what we do about it.

Member

fedorov commented Oct 5, 2015

@pieper reported a problem below. Does this make we cannot make both new and old mac compilers happy?

d83b7ed#commitcomment-13598280

Just updated Slicer on my Mac.
This commit
d83b7ed

Produces this error
Linking CXX shared library ../../lib/libdcmsr.dylib
ld: duplicate symbol DSRTree<DSRDocumentTreeNode>::isEmpty() const  in
CMakeFiles/dcmsr.dir/dsrdocst.cc.o and
CMakeFiles/dcmsr.dir/dsrdoc.cc.o for architecture x86_64
collect2: ld returned 1 exit status
make[2]: *** [lib/libdcmsr.3.6.1.dylib] Error 1
make[1]: *** [dcmsr/libsrc/CMakeFiles/dcmsr.dir/all] Error 2

My gcc compiler version is:
i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 (Based on Apple Inc.
build 5658) (LLVM build 2336.1.00)
Owner

jcfr commented Oct 5, 2015

@fedorov It should be possible to keep both compiler happy. Let's move the discussion here: commontk/DCMTK@ade7e93#commitcomment-13535781

We sat together with the DCMTK team today and also discussed the macro naming issue. As a result, we'll keep the HAVE_... macro names for now as they are, since this is the only time (we remember) a problem with them occurred. However we see it could make sense to shift them to their own "namespace" in the future, so we added that as a feature ticket to the DCMTK issue tracker.

In this particular case, I'm (stil) not quite sure that the #define in the python header is actually correct (related to its own documentation) but it doesn't matter for the general case, anyway ;)

Owner

jcfr commented Oct 9, 2015

Hi Michael,

Thanks for the update. It all makes sense.

On my side, I will discuss the HAVE_* issue with the CMake team to get
their feedback.

Note that I will be travelling this coming week and will provide some more
feedback when I return.

Thanks
Jc

On Fri, Oct 9, 2015 at 11:49 AM, Michael Onken notifications@github.com
wrote:

We sat together with the DCMTK team today and also discussed the macro
naming issue. As a result, we'll keep the HAVE_... macro names for now as
they are, since this is the only time (we remember) a problem with them
occurred. However we see it could make sense to shift them to their own
"namespace" in the future, so we added that as a feature ticket to the
DCMTK issue tracker http://support.dcmtk.org/redmine/issues/668.

In this particular case, I'm (stil) not quite sure that the #define in the
python header is actually correct (related to its own documentation) but it
doesn't matter for the general case, anyway ;)


Reply to this email directly or view it on GitHub
#359 (comment).

+1 919 869 8849

@jcfr jcfr added a commit to jcfr/Slicer that referenced this pull request Jun 22, 2016

@jcfr jcfr ENH: Update LibArchive
$ git shortlog 453b390..22bca29 --no-merges

Abhinav Upadhyay (1):
      Remove .Pp before .Bl

Alessandro Ghedini (1):
      Add ARCHIVE_EXTRACT_SECURE_NOABSOLUTEPATHS option

Alexey Spiridonov (1):
      Do not request 0-length skips; sanity-check return.

Allan McRae (1):
      Fix mtree generation

Andreas Schwab (1):
      Fix more uses of EXT2_IOC_[GS]ETFLAGS

Andreas Stieger (1):
      Fix a subtle wrong library check that caused libarchive to depend on libattr when it should be using glibc.

Andres Mejia (101):
      Implement support for reading from multiple data objects as one large stream.     This enables support for reading archives split using the split utility.
      Implement support for reading multivolume RAR archive files.
      Fix build failure of test cases using autotools build system.
      Fix build failure of test_write_compress_lrzip.c, use archive_write_add_filter_lrzip().
      Add INCLUDE_DIRECTORIES directive to fix build failure on cmake 2.8.9.
      Seperate single RAR test into multiple test cases.
      Seperate get_test_set() function out into a utility source file used by all test programs.
      Update .gitignore to ignore library and Testing folder
      Implement filtering of test cases run using glob pattern matching.     A test case will run if it matches a specified glob pattern. Test cases can     also be filtered out by including a '^' at the beginning of a pattern.
      Add test_utils.h to test_utils_SOURCES, fixes use of 'make dist'.
      Implement function used to seek within data blocks.     This only implements seeking fully for uncompressed RAR files. Seeking is not     implemented for compressed RAR files and for the other formats (ZIP, TAR, etc.).
      Implement command to test if commands are available in the current platform.
      Implement functions to manually set the format and filters used.
      Separate code to set formats/filters into different source files.     This needs close_filters and free_filters to be globally available     as global symbols __archive_read_close_filters and     __archive_read_free_filters.
      Fixup paths to reference files in Makefile.am.
      Remove comment and fix failure message to indicate gzip is expected.
      Bump libarchive version to 3.0.5.
      Update NEWS entries for release of libarchive 3.0.5.
      Update configure script and header files to new libarchive version.
      Add generated release zip files to .gitignore.
      Bump version to 3.1.0 due to API/ABI changes.
      Bump soname major version to 13.
      Remove developer CFLAGS if a release build is to be made.
      Add notes on how to make a new release of libarchive for developers.
      Fix formatting from build/bump-version.sh for NEWS file.
      Bump soname major version in CMakeLists.txt.
      Update libarchive to 3.1.1.
      Reenable developer CFLAGS.
      Fix check for compression method in rar seek method.
      Fix broken RAR seek support.     Using SEEK_CUR or SEEK_END produced the wrong results, SEEK_SET was     fine however. Note that archive_read_data() doesn't function exactly     as POSIX read. Currently, downstreams will have to check the current     file position after after call to archive_read_data() if they are     to use SEEK_CUR afterwards.
      Give formats/filters way to know data amount requested from archive_read_data().
      Update RAR test case to expect correct results from calls to archive_read_data().
      Fix build failure when doing normal builds.     These are builds done running a standard './configure && make'. This     will also fix a corner case where the whence is set to anything other than     SEEK_SET, SEEK_CUR, or SEEK_END. The behavior is to use SEEK_SET by default.
      Fix check for EOF in RAR format reader.
      Add checks for proper return value reading past EOF in RAR archives.
      Change how seek support in stored RARs are handled.     This fixes various test cases when seeking is used.
      Add new tests in multivolume RAR seek test case.
      Add new test case to thouroughly test multivolume RAR seek support.
      Write common checks for files in a separate function.
      Remove error about unreachable code, fixes build on Visual Studio 12.
      Fix build errors on Visual Studio from negating value of sizeof operator.
      Support POSIX regular expression support using PCRE in CMake builds.
      Add CMake option to explicitly enable/disable /SAFESEH linker flag for Visual Studio builds.
      Rename PCREPOSIX_INCLUDE* to PCRE_INCLUDE* as pcreposix.h will be found alongside pcre.h.
      Minor formatting change, no functional change.
      Redo check for pcreposix library.
      Add check for build without PCRE_STATIC defined.
      Check that build did not succeed with WITHOUT_PCRE_STATIC before defining PCRE_STATIC.
      Modify CHECK_C_SOURCE_* checks to fix builds using Visual Studio 12.
      Set use of /SAFESEH linker flag for all LIBARCHIVE_CHECK_C_SOURCE_* checks.
      Fix test failures in libarchive built using Visual Studio.
      Fix checks for crypto algorithms in Visual Studio builds.
      Use a string option WINDOWS_VERSION to set WINVER and _WIN32_WINNT in Windows build.
      Use cmake module similar to FindLZMA.cmake to find Nettle include dir and library.
      Add Nettle include dir in check for nettle crypto functions.
      Use a string option to select what library is to support POSIX regular expressions.
      Change ordering of libraries to check for POSIX regular expression support.
      Use same check from cmake in autotools for POSIX regex support.
      Do not ignore errors when generating documentation.     This will ensure documentation is actually generated when building     release tarballs.
      Use different check for libbz2 on Windows.
      Make POSIX regex checks cleaner.
      Fix mingw build because of bad check for libpcreposix.
      Add *.exe to .gitignore.
      Make sure to check for Windows crypto functions for both mingw and cygwin.
      Update the ordering of preferred libraries that provide crypto functions.
      Partially revert commit 58dc42aaea93cd281aafaaaa4c3926c3578b7e26 as this broke mingw builds.
      Correct ordering of preferred library for crypto function in mingw builds.
      Fix crypto check failures on Windows.
      Add check for finding libgcc.
      Fix pcre checks to work on visual studio builds using pcre static libraries built using mingw toolchain.
      Provide better check for when libpcreposix is to be used for regex support.
      Remove redundant defines of WINVER and _WIN32_WINNT from CRYPTO_CHECK_WIN.
      Set WINVER default to use Windows 2000 API.
      Model the pcre checks for the autotools build system to be similar as that used in the cmake build system.
      Fix warning about unused variable triggered when not building on WIN32.
      Fix warnings about redefinition of variables, use either sys/xattr.h or attr/xattr.h.
      Cast comparison functions to __compar_fn_t if stdlib.h defines it.
      Initialize buff, fix valgrind warning about use of uninitialized bytes.
      Change crypto checks, find necessary library before corresponding checks are done.     LIBS are set back to original value if all crypto checks for that implementation     fail.
      Fix check for openssl on Windows.
      Remove the 4th argument to CRYPTO_CHECK, it is no longer used.
      Update libarchive website location.
      Bump version to 3.1.2.
      Remove developer cflags.
      Update NEWS file.
      Reenable developer cflags.
      Add a convenience function to sort a list of strings.     This is useful for sorting a list of filepaths to     multivolume RARs for example.
      Redo the strings sorting function, allocate/free memory as needed.     This is the normal implementation of quicksort.
      Test correct archive in test_extract_cpio_lzo test case.
      Add test case for adding pathnames with no leading './' in mtree format.     libarchive should add the leading './' for such pathnames.
      Fix compiler warning from compiling with clang.     Assigning from a read-only variable to a regular variable will issue     a warning from clang.
      Fix compile warning due to -Wcast-qual.
      Allow adding extra CFLAGS with a configure option.     This is a convenience option to pass in extra CFLAGS without overriding other     CFLAGS.
      Remove unnecessary use of arguments from AC_ARG_WITH([extra-cflags]).
      Revert "Remove unnecessary use of arguments from AC_ARG_WITH([extra-cflags])."
      Revert "Allow adding extra CFLAGS with a configure option."
      Fix test cases for LZO write support.     Some architectures would produce a bigger archive for compression     level 9 than with the default level, possibly due to memory     limitations.     Fixes #303
      Initialize buff to all zeros.
      Allow the option to use no 2nd stage compression with lrzip.
      Fix test_archive_write_add_filter_by_name_lrzip test case.     There's some bug in lrzip where small files cannot use 2nd stage     compression.     See http://ck-hack.blogspot.com/2012/03/lrzip-0612.html?showComment=1337356929450#c3154145708572533571
      Add more files autogenerated by automake build system to .gitignore.

Andrew Gregory (4):
      Restore modified path after lstat
      add test for SECURE_SYMLINKS for first child
      Skip root directory symlink check
      add test for SECURE_SYMLINKS with absolute path

Benjamin Drung (2):
      Fix build failure of example program because of __FBSDID define.     Fixes #283     Signed-off-by: Andres Mejia <amejia004@gmail.com>
      Set a default error message if message passed in is NULL.     Signed-off-by: Andres Mejia <amejia004@gmail.com>

Benoît Amiaux (2):
      Fix test_read_append_filter_program
      Do not require exclusive read access when reading files under windows

Bjoern Jacke (4):
      bsdtar: move list_item_verbose() into common util.c
      bsdtar: also print preceding "x" when extracting in vv mode
      bsdtar: add support for "vv" verbose style when writing archives
      add vv option details in bsdtar man page

Brad King (30):
      archive_read_disk_windows.c: Fix typo in allocation error message
      Simplify passing of linker flags to try_compile calls
      Avoid struct init with variable
      libarchive: Use ARCHIVE_LITERAL_ULL to add ULL integer suffix
      Do not require LibXml2 to configure
      Fix compilation on Tru64 with F_SETTIMES
      INSTALL: Update Wiki link to refer to GitHub wiki
      README: Update issue tracker link to refer to GitHub issues
      Define ARCHIVE_VERSION_NUMBER before first use
      Fix typo in archive_write_set_options.3
      Fix typo in archive_write_set_format_mtree.c comment
      Fix typo in archive_write_add_filter_lzop.c comment
      Avoid left-shift overflow of signed integer
      Avoid using name 'u_long'
      Avoid using 'uint8_t' as bitfield type
      Update 'inline' portability for old IBM and Sun compilers
      Port main library code to OSF operating system
      Workaround missing byte swap symbol on VS 7.1 Debug builds
      Avoid trailing `,` in enum for ISO C90 compatiblity
      Avoid non-portable u_int8_t
      Improve argument names of xmemmem
      Guard inclusion of bcrypt.h with HAVE_BCRYPT_H
      Improve readability of ternary expression checking for empty string
      Invert logic of ternary pointer checks
      Use macros for ZIP format integer constants
      Forward declare __archive_get_date in a dedicated internal header
      Define O_CLOEXEC when missing in archive_random.c
      Do not use pthread.h API without header
      Use CommonCrypto APIs on OS X only when available
      Fix spelling typos in comments

Brian Weaver (3):
      Add tighter checks to avoid reading past end of buffer
      Add tighter checks to avoid reading past end of buffer
      Refactored common code into a single function

Brooks Davis (2):
      Add a new archive_write_disk option:ARCHIVE_EXTRACT_CLEAR_NOCHANGE_FFLAGS     that clears platform-specific file flags that might prevent the removal     of a file system object before attempting to remove it.
      Add a new tar option --clear-nochange-fflags that causes file system     flags which might prevent the removal or modifiction of files to     be cleared before attempting to remove them.

Bruce Cran (3):
      Fix typos of "Illegal" and "Unknown".
      VS 2010 doesn't understand __func__ so use the older __FUNCTION__ instead.
      Fix Visual C++ 2010 build by using __FUNCTION__

Colin Percival (3):
      Strings: fix an incorrect name of a function
      Comments: small spelling and grammar fixes
      Free any allocated memory upon allocation failure

Con Kolivas (3):
      Add basic archive read and write filter support for lrzip.
      Add silent build rules for lrzip.
      Fix probable leak with program write add filters.

Dan McGee (5):
      Use memcmp to find SP extension bytes
      Fix segfault in iso9660 reader
      Remove fallthough-based logic from iso9660 reader
      Fixes for GCC 4.7.0
      Fix build failure when ACL_TYPE_NFS4 is not defined.

Daniel Pfeifer (1):
      Fix int32_t in config.h.in

Dave Reisner (2):
      build-sys: install all library manpages
      mtree: fix line filename length calculation.     Fixes #301.     Signed-off-by: Andres Mejia <amejia004@gmail.com>

Dimitry Andric (1):
      Fix the following -Werror warning from clang 3.5.0, while building cpio.c on amd64 (or any arch with 64-bit time_t):

Eric N. Vander Weele (3):
      Dynamically determine supported compiler flags during configure
      Replace usage of _NSIG with SIGRTMAX
      Support CMake build on AIX

Florian Pritz (1):
      mtree: Make reading additional information from the fs optional

Graham Percival (7):
      add missing tests to automake
      Warn if target of hard-link is not present
      Add test for #595 "warn missing hardlink target"
      Check for strdup() allocation failure
      Fix trailing whitespace in Makefile.am
      Check for memory allocation errors in archive_entry_xattr_add_entry
      Remove dead code in archive_entry_xattr_add_entry()

Guilherme Steinmann (2):
      Update xz compatibility for reading 7zip.
      Update xz compatibility for reading xz.

Hans Hinrichsen (4):
      Fixes for VS2012 Compile
      Fixes for VS2012 Compile
      test_leading_slash compatibility with Windows
      Visual Studio 2015 Changes

Hans Johnson (1):
      ENH: Allow fine grained control over dependancies

Jean-Christophe Fillion-Robin (3):
      Fix warnings for CMake Policy CMP0054
      gitignore: Remove *.cmake to ensure update to CMake module are detected
      Use CMake module "CheckStructHasMember" and remove custom "CheckStructMember"

Jean-Yves Migeon (12):
      sha384 and sha512 are supported tags, add them to mtree.5.
      "optional" is also supported, so add it to mtree.5.
      Typo fix.
      Document the "device" keyword and its value.
      Add the device parsing logic. It allows mtree's libarchive to     parse device entries like NetBSD's mtree and its multiple possible     format: native, 386bsd, 4bsd, bsdos, freebsd, hpux, isc, linux, netbsd,     osf1, sco, solaris, sunos, svr3, svr4, and ultrix.
      Start implementing the "resdevice" (resident device) keyword. It     corresponds to the st_dev field of stat(2), e.g. the ID of the     device that contains the inode.
      Small typo fix in parse_device()'s description.
      Implement "resdevice" and "inode" in the mtree(5) spec.     - resdevice is the keyword that corresponds to the "resident" device,     e.g. the one where the entry resides;     - inode is entry's inode number.
      Document "resdevice" and "inode".
      Bug fix (segfault): check filename against NULL in case we want     the output to go to stdout.
      st_dev field corresponds to dev{major,minor} and not rdev{major,minor}.
      Hide *lafe_progname and provide getter/setter instead.

Jiri Malak (3):
      fixes to build by Open Watcom toolchain
      rest of changes to be buildable by Open Watcom
      fixes for test programs to be buildable by Open Watcom

Joe Damato (1):
      Fix shadowing warning for identifier symlink

Joerg Sonnenberger (4):
      Fix typo
      Fix man page syntax to include a description.
      Add short description of the manpage.
      Typo

Josh Klontz (3):
      Expose ADDITIONAL_LIBS for projects using libarchive as a subdirectory and linking against archive_static.
      fixed 'current scope has no parent' warning
      just link the archive_static with ADDITIONAL_LIBS

Juan RP (1):
      configure.ac: define HAVE_LZMA_STREAM_ENCODER_MT if it is detected properly.

Julien Finet (1):
      Do not preppend \\?\ if it is already there

Jung-uk Kim (1):
      Do not overwrite file size if the local file header has valid file size.     This allows us to extract index.xml from Apple iWork '09 format files.

Kevin Locke (4):
      Only consume a second all-null record
      Add read_concatenated_archives
      Add a test for read_concatenated_archives
      Add --ignore-zeros option to bsdtar

Kirill Okhotnikov (5):
      Warning of unsed function "aes_ctr_encrypt_counter" were fixed.
      New functionality added for automatically choose write file format and filter by filename.
      Small cosmetic changes.
      archive_write_set_format_filter_by_ext: man pages updated.
      BSD format in manual.

Konrad Kleine (9):
      Run code coverage on your local machine
      Added all Zip compression names from 6.3.3 format
      Simplified and fixed Zip compression method array
      Removed compression_method struct type
      Detect encrypted archive entries (ZIP, RAR, 7Zip)
      Store encryption info in single char of entry
      Better archive_read_has_encrypted_entries function
      Moved local code coverage code separate script
      Include coverage script if ENABLE_COVERAGE is set

Krzysztof Kowalczyk (1):
      speed up new_node() by reallocating more than one node at a time (fixes https://code.google.com/p/libarchive/issues/detail?id=370)

Kylie McClain (1):
      configure.ac: Use pkg-config to find libxml2. Fixes cross compilation

Maks Naumov (3):
      remove duplicate expressions in entry_copy_bhfi()
      remove duplicate expressions in file_information()
      Fix check for ZIP_ENTRY_FLAG_ENCRYPTED

Marek Kubica (1):
      Made calls to the finish_entry callback optional

Martin Matuska (6):
      Add missing variable initialization.
      Support appending to empty archives.
      Declare lafe_progname static
      Fix const char warning
      cat: declare static variables and fix several compiler warnings
      Disable ARCHIVE_EXTRACT_SECURE_NOABSOLUTEPATHS in bsdcpio p mode

Martin Müllenhaupt (2):
      fix CMake CMP0054 warnings
      fix capitalized windows includes

Martin Pitt (2):
      Use correct define for libarchive version number in archive.h.     Signed-off-by: Andres Mejia <amejia004@gmail.com>
      Set offset to correct data type.     Fixes #282     Signed-off-by: Andres Mejia <amejia004@gmail.com>

Matt Arsenault (1):
      Fix cmake test builds when building as a sub-project

Matthias Brantner (1):
      two new functions:     - archive_write_zip_set_compression_deflate     - archive_write_zip_set_compression_store

Maurus Cuelenaere (1):
      Use correct variable types for ASCII Windows functions.

Maxin B. John (2):
      configure.ac: check acl/libacl.h and sys/acl.h based on requirement
      Makefile.am: Remove non-existing file

Michihiro NAKAJIMA (309):
      Initialize the buffer used for FIEMAP to avoid the error messages     valgrind complains about.
      Fix build failure on Visual Studio.
      Fix the build failure of libarchive_test on Visual Studio.
      Remove unneeded code.
      Avoid a warning that Clang Static Analyzer complained     "Access to field 'unconsumed' results in a dereference of a null      pointer (loaded from field 'entry_cfdata."
      Fix a memory leak.
      Fix the dereference of null pointer, which Clang Static Analyzer complained.
      Fix the failure of archive_read_open_filename_w on Windows.     Thas caused test_archive_match_path and test_open_filename failure.
      Remove dead assignment that Clang Static Analyzer pointed out.
      Fix a memory leak that Clang Static Analyzer pointed out.
      Fix dereference of null pointer that Clang Static Analyzer pointed out.
      Fix a memory leak that Clang Static Analyzer pointed out.
      Fix a bug that Clang Static Analyzer said "Assigned value is garbage or undefined".
      Fix bugs that Clang Static Analyzer pointed out:      - Double free      - Use-after-free
      Fix use-after-free that Clang Static Analyzer pointed out.
      Fix bugs that Clang Static Analyzer pointed out:      - Memory leak;      - Result of operation is garbage or undefined;      - Undefined allocation of 0 bytes.
      Remove dead assignment that Clang Static Analyzer pointed out.
      Fix build failure on linux made by commit b3296a25e1 to be able to compile     the source file without warnings on gcc and clang.
      Fix a part of a commit 221f63f2f8.     The double free bug Clang Static Anlyzer(trunk) claimed of was the Clang's bug,     which is currently fixed, and it made a memory leak.
      Fix a possibility of memory leaks when realloc fails.     Do not assign the return value of realloc into the variable that has     the original pointer because if realloc failed we will lose the chance     to release the address.
      Add support for a mtree form that NetBSD's mtree -D generates, which places     the path as last parameter.
      Separate test_read_format_mtree to know easily which tests failed.
      Do not add "./" prefix to the current directory name ".", it is not necessary.     Add test for appending "./" prefix.
      Do not write absolute paths to mtree archives.
      Fix a mtree detection bug brought by a commit 78307be86b71.
      Allow FreeBSD mtree's nochange keyword.
      Add support for writing mtree classic format, which mtree utility generates by default.
      Fix build failure on Clang.
      Disable some mode tests on Windows. We cannot perform it as POSIX systems.
      Reduce the amount of memory in mtree writer.
      Fix build failure on linux; remove unused variables and a function.
      Fix bugs introdueced by f87e3db94c.
      Plug the possibility of memory leak.
      Use a character table to check safe characters in filenames in a mtree archive,     and add a test for it.
      Back out of b0eb750cab. It caused several tar/pax test failures.
      Minor improvement in the mtree bidder.      - During checking NetBSD mtree -D format, if the first character of        the last filed in an entry line is '/', fail the test bidding mtree        format.
      Apply *_CLOEXEC flags to system calls which can be used with     to avoid file descriptor leaks to the child process.     - Pass O_CLOEXEC to open(2) system call if it is defined.     - Use fcntl(2) and F_DUPFD_CLOEXEC instead of dup(2)       if F_DUPFD_CLOEXEC is defined.     - Set FD_CLOEXEC with fcntl(2) if a file descriptor does not have.
      Fix a bug that Clang Static Analyzer claimed it is potential insecure     implementation-specific behavior in call 'vfork' and recommended the     use of posix_spawn instead of vfork.
      Add --older,--older-than,--older-mtime and --older-mtime-than to bsdtar to     enable only including files and directories older than specified date or file.
      Fix test_option_older_than failure on linux.      - Use pax format in test_option_older_than and test_option_newer_than        to make sure the nano second of a file time is recorded.
      Increase a registered filter bidder size to avoid tests failure.       - test_read_format_cpio_bin_gz       - test_read_format_gtar_lzma.
      Add extraction tests for compressed files to bsdtar_test.
      Remove unnecessary build condition for a use of     __archive_create_child().  It has worked well on both POSIX     system and non-POSIX system since libarchive 2.7.0.
      Fix build failure on mingw32.
      Fix build failure on mingw32 for x86-64.
      Make configure detect ARCHIVE_CRYPTO_*_WIN on mingw.
      Make a filter program be called with its arguments.
      Avoid infinity wait in ReadFile during running an external program as     decoding filter on Windows.
      Use -q option to lrzip to be quiet.
      When zlib is not available, use "gzip -d" insted of gunzip     because gzip is widely available than gunzip is.
      Avoid test_read_format_cab failure if no zlib.
      Rename test_read_compress_program.c to test_read_filter_program.c
      Rename test_read_uu.c to test_read_filter_uudecode.c, and     divide test_read_uu to test_read_filter_uudecode and     test_read_filter_uudecode_base64.
      Fix a cause of segmentation fault in case of creating a child     process failed. It occured when archive_write_close() was called     after an opening filter process failed.
      Get a full path of a command name for CreateProcess().
      Revert part of d1be20168 because gunzip is still used in     test_read_filter_program and test_read_filter_program_signature,     which cannot give arguments to the program.
      Tweak indent.
      Fix comments on gunzip.
      lrunzip is no longer used.
      Remove __archive_read_program(), use __archive_read_programl() instead.
      Fix a filter name of the writing filter program.
      Fix a long standing bug that archive_write_add_filter_program     incorrectly handles the return value of __archive_write_filter().
      Add support for lzop.
      Add a test for bsdtar --lzma option.
      Add a test for bsdtar --xz option.
      Improve test_write_compress_lrzip not to use deprecated functions.
      Add --lrzip option to bsdtar and bsdcpio to use lrzip compression.
      Stop using deprecated functions. Much remains to be replaced.     s/archive_write_set_compression_/archive_write_add_filter_/
      Stop using deprecated functions. Much remains to be replaced.     s/archive_compression(/archive_filter_code(/
      Stop using deprecated functions. Much remains to be replaced.     s/archive_compression_name(/archive_filter_name(/
      Stop using deprecated functions. Much remains to be replaced.     s/archive_position_uncompressed(a)/archive_filter_bytes(a, 0)/
      Stop using deprecated functions. Much remains to be replaced.     s/archive_position_compressed(a)/archive_filter_bytes(a, -1)/
      Stop using deprecated functions.     s/archive_read_open_file/archive_read_open_filename/     s/archive_write_open_file/archive_write_open_filename/
      Apply __attribute__((deprecated)) to archive_read_open_file,     archive_write_open_file, archive_position_compressed,     archive_position_uncompressed, archive_compression_name and     archive_compression.
      Rename test_compat_lrzip to test_read_filter_lrzip since lrzip reader     entirely uses an external program, lrzip(1). It is not a compatible test.
      archive_read_support_filter_lrzip and archive_write_add_filter_lrzip     should return ARCHIVE_WARN instead of ARCHIVE_OK since those filters     always use an external program, lrzip(1) and other filters do so     if they use an external program instead of implemented code with     the library. It is clear that returning ARCHIVE_WARN means the filter     uses an external program.
      Surely skip test_read_filter_lrzip and test_read_filter_lzop when     the compression commands are not available.
      Add archive_write_add_filter_lzop.c entry into CMakeList.txt.
      Fix decoded data loss in uudecode filter.
      Improve compatibility to uudecode command.     Ignore junk data after an end sequence detected.
      Fix potential memory leaks found with Clang.
      Introduce uuencode filter.
      Introduce b64encode filter.
      s/test_write_compress_/test_write_filter_/     So as to match the API names.
      Add decompression tests to bsdcpio and bsdtar.
      Rename filter_fork.c to filter_fork_posix.c.     It is clear the file is used for which platform.
      Rename test_compat_lrzip.tar.lrz.uu to test_read_filter_lrzip.tar.lrz.uu
      Make lrzip and lzop write filters set correct filter name and code     even if thery actually use archive_write_filter_program.
      Replace deprecated macro ARCHIVE_COMPRESSION_* by ARCHIVE_FILTER_*.
      Replace deprecated archive_read_finish by archive_read_free     and deprecated archive_write_finish by archive_write_free.
      Set deprecated attribute to remaining deprecated functions.
      - Clean up style.     - Divide archive_read_format_iso9660_read_header function into two       functions to be somewhat readable.
      Enable the iso9660 reader to seek a file pointer for reading     its contents.
      Remove outdated comments.
      Fix style and Make source files be somewhat readable.
      Set correct arg0; consider that arg0 may have space characters.
      Fix matching test name to correctly check a test name terminator.
      Add support for grzip compression.
      Place canGrzip before canGzip.
      Improve archive_write_filter_program handing to be able to     use options for an external program from     archive_write_filter_{grzip,lrzip,lzop}.
      Support lrzip options for writing.
      Support lzop options for writing.
      Parse a command line instead of using        archive_write_add_filter_programl,        archive_write_add_filter_programv,        archive_read_support_filter_programl,        archive_read_support_filter_programv,        archive_read_support_filter_programl_signature and        archive_read_support_filter_programv_signature.     And so remove those functions, which I recently added.
      Set warning messages.
      canGunzip is no longer needed. We use "gzip -d" for gzip decompression.
      Fix few bugs in archive_cmdline.
      Add a test for archive_cmdline.
      Fix style.
      Move archive_compressor_gzip_free and archive_compressor_gzip_options     after archive_write_add_filter_gzip. This is preparation to use an     external program gzip if zlib is not available.
      Properly call next filter even if the external program is already closed     or not opend.
      Use an external gzip program when zlib is unavailable.
      Integrate __archive_write_program_set_cmd into __archive_write_program_open.
      Switch an external program for bzip2 decompression from "bunzip2"     to "bzip2 -d".
      Enable bzip2 compression to use an external bzip2 program when     libbz2 is unavailable.
      Fix typo.
      Fix an external program name for lzip decompression.
      Correct detection error messages in a lack of liblzma.
      Switch an external program for lzip decompression from "lunzip" to     "lzip -d".
      Switch an external program for lzma decompression from "unlzma" to     "lzma -d".
      Switch an external program for xz decompression from "unxz" to     "xz -d".
      Make external programs lzip, lzma and xz be quiet when reading     corrupted compressed data.
      Fix a handing of readdir_r on AIX. The meaning of the return value is     different from other posix systems.
      Fix build and test failure without libbz2.
      Fix build failure without zlib.
      Fix a skip message in no zlib.
      Add test_option_z to the bsdtar_test.
      Add test_option_j to the bsdtar_test.
      Perform 'bzip2 -d -V'  instead of 'bzip2 -V' for a bzip2 availableness     test because the process on FreeBSD 9 does not finish its program     when redirecting stdout to /dev/null.
      Remove redundant initialization.
      Make sure that we consume remaining data bytes before reading     entries in a directory in case of reading the ISO image made     by makefs.
      Use liblzo2 for the lzop reader filter if available.
      Add mtree test entries into CMakefile.txt.
      Remove debug lines.
      Use liblzo2 for the lzop write filter.
      Add test_compat_lzop_1.tar.lzo entry into the test_fuzz list for     the lzop read filter.
      Add support for writing v7 tar format.
      Use lzo_adler32 instead of using own founction when if zlib unavailable.
      Introduce -a/--auto-compress option into bsdtar.     This automatically decides on a creation format and filters by     the archive suffix.
      Introduce gzip:timestamp option into gzip write filter to     control recording timestamp.
      Change the minimum number of gzip:compression-level from 0 to 1     described in bsdtar.1 since an external gzip(1) utility does not     handle compression level 0.
      Describe lrzip:compression, lrzip:compression-level and     lzop:compression-level.
      Fix typo; mtree utility is section 8.
      Update a comment about lzop.
      Add lacking filter entries to the table of     archive_write_add_filter function.
      Add experimental support for HFS+ Compression.      - bsdtar provides --hfsCompression option.
      Set UF_COMPRESSED flag before write Resource Frok.
      Do not depend on sys/decmpfs.h since Snow Leopard does not have it.
      Simplify converting endianness of the decmpfs header and flushing     the last compressed block.
      Fix build failure on Mac OS X Mountain Lion.
      Fix a segmentation fault when getting xattr list failed.
      Fix a segmentation fault when files for assertionEqualFile do not exist.
      Remove an unnecessary check of file xattrs used for HFS+ compression     since the file was removed if existent.
      Fix making Resource Fork header and footer for HFS+ Compression.
      Correct handling user_umask in create_filesystem_object function.     It usually made a new file with a zero file mode though that     was changed later.     The file its mode was a zero prevented doing fsetxattr system call     in success with the exception of running by super user on Mac.
      Early versions of Mac OS X do not support HFS+ Compression.
      Ignore a request of HFS+ Compression if the filesystem a file     is restoring on does not support.
      Add --nopreserveHFSCompression option to bsdtar to prevent     a file which was compressed before archived from automatically     HFS+ Compression.
      Plug memory leaks on Mac.
      If ARCHIVE_EXTRACT_FFLAGS is not set, do not set file flags with     the exception of UF_COMPRESSED when HFS+ compression is processed.
      Do not process HFS+ compression if the file name begins with "._".
      Ignore .DS_Store made by Finder on MacOS X.
      Change compiling conditions for support for HFS+ Compression     since it is only for MacOS X.
      Use mkstemp rather than tempnam for security.
      If a restoring file name begins with "._" and its form is     AppleDouble, link it with the data fork file and remove it.
      Correct the location the resource fork footer is added.
      Improve a test for HFS+ Compression.
      Cancel HFS+ compression if the compressed size is not enouph small.
      Do not directly copy mac metadata to the data fork file if the file     is compressed by HFS+ compression through copyfile() because it makes     the file uncompressed.
      Remove debug code for HFS+ compresison.
      Fix issue 271; Handle the central directory including a zip comment.
      Fix style. No functional changes.
      Use memcmp to check null bytes for iso9660 bidder to improve     the performance.
      Add support for TAR_WRITE_OPTIONS and TAR_READ_OPTIONS environmment     variables to set default options to writing or reading archives with     bsdtar.
      Fix build failure on Win64.
      Fix test failure on Windows. A '\' is a path separater on Windows.
      Fix build failure with zlib on Win64.
      Increase the number of data bytes reading from the tail of     a zip archive file up to 16K bytes because Info-Zip may do so.
      Fix build failure without zlib and liblzo.
      Add support for __MACOSX directory in Zip archives, which resource     forks are stored in.
      Fix build failure on FreeBSD.
      Plug a memory leak.
      Fix a bug that Clang Static Analyzer complains that     "Dereference of null pointer".
      Fix build failure on linux.
      Fix build failure without zlib.
      Fix test failure without zlib.
      Fix build failure without HAVE_UTIMES.
      Fix bugs in test programs which Clang Static Analyzer pointed out.
      Do not return "Unknown module name" error when a format name matches     a specfied module name and the option name is wrong and filter names     do not matche the specfied module name.
      Fix a bug in 7zip writer that the writer cannot correctly handle     large data(more than 60K bytes) in a writing request.
      Fix a null pointer dereference bug in ar writer.
      Split a test for 7-Zip writer into seven tests to know easily what     compression fails.
      Fix a null pointer dereference bug in zip writer.
      Fix the potential for a buffer underflow.
      Fix memory leaks in pax writer when handing mac metadata.
      Issue 269. Stop using deprecated functions in example source code.
      Separate test_write_format_7zip.c into three files.
      Split test_fuzz by a format type in order to test a specific format easily.
      Split test_read_format_7zip by a compression type in order to test     a specific compression easily.
      Use a proper structure for a test for gnutar header.
      Avoid arithmetic overflow warning(C6297) found by Visual studio     static analysis.
      Fix issue 257. Revise zip header offsets for reading SFX.
      Split test_read_truncated_filter to know what compression fails easily.
      Fix build failure on Visutal Studio on Win32.
      Plug address space leaks on Windows.
      Fix build failure without XATTR support on Mac.
      Add tests for archive_write_set_format_by_name.
      Add tests for archive_write_add_filter_by_name.
      Fix build failure without zlib.
      Fix test failure without zlib.
      Fix memory overflow.
      Fix test failure without liblzma.
      Fix issue 293; plug memory leaks.
      Fix build failure.     error: declaration shadows a variable in the global scope [-Werror,-Wshadow]
      Apply recent changs in libarvhie/test/main.c to {tar,cpio,cat}/test/main.c for keeping maintenacebility.
      Add bsdcat_test.log and bsdcat_test.trs to .gitignore.
      Add a test utility function, copy_reference_file simply coping     a sample file to the current directory of a running test.     A uudecode filter test will use it for its new test.
      Fix a bug which uudecode filter wrongly decoded the uuencoded data     which size was more than 64K bytes.
      Fix builid failure on FreeBSD 10.     On FreeBSD 10, ENOTSUP and EOPNOTSUPP are the same value,     so it cannot be used in the same switch statement.
      Fix build failure on Ubuntu.
      Fix test_compat_mac failure on non-mac OS X platform.     It requries an option 'mac-ext' to pass the test     since commit 95e0b3a4f.
      Add support for lz4 read filter.     TODO: detecting liblz4 library by CMake.
      Properly set buffer,offset and size when lha format reader returns     ARCHIVE_WAR by getting CRC error.o
      Fix a bug in lha read format.     The bug was it could not correctly extract the compressed data     which had just one repated pattern.
      Add a test for a bug fix of lha reader.
      Fix dead store which Clang Static Analyser pointed out,     and some style changes. No functional changes.
      Fix garbag return value which Clang Static Analyser pointed out.
      Plug memory leaks which Clang Static Analyser pointed out.
      Fix dereference of null pointer which Clang Static Analyser pointed out.
      Style fix. space -> tab.
      Add lz4 detection for CMake configuration.
      Fix issue 356: properly skip a sparse file entry in a tar file.
      Simply finding a file name in mtree format to avoid redundant code.
      Fix issue363:Unable to extract large 7z files.     Properly changing a variable type up to uint64_t.
      Fix issue336:7zip can not be read when opened with archive_read_open_fd.     Implenent a seek callback in archive_read_open_fd by bringin the code     from archive_open_filename.
      Properly set a error message when a client seeker callback is not     defined.
      Add support for lz4 write filter.
      Fix build failure with lz4 r120 and later.
      Fix build failure on FreeBSD 8.x.
      Display filename encoding test names respectively to know what encoding test     was successful, failed or skipped.
      Eliminate dead assignment.
      Avoid an analyzer error "Dereference of null pointer",     which will not happen but analyzer claims.
      Add lz4 filter entry to archive_read_append_filter function.
      Update xxhash.c to lz4 r120 version;     o remove xxhash.h, which is unneeded in libarchive and causes       build failure for function definitions.     o convert single comment statements to block comment statements       because some C compiler cannot handle it.
      Improve lha decompression performance.
      Document lz4 compression, lzop compression and other filters     which were not documented in archive_read_filter.3 or     archive_write_filter.3.
      Add lz4 test for bsdcat.      - add test utility function canLz4()      - fix test_write_filter_lz4 to use canLz4()
      Add additional tests for lz4 compression in front-end applications.
      Fix issue 375: failure to read some larger .7z archives     Increase a maxinum entry limitation up to 100000000 from 1000000.
      Style fix.
      Fix build failure of xxhash on Ubuntu.
      Add support for Traditional PKWARE decryption to zip reader.
      Add support for extracting WinZIp AES encryption.
      Simply traditioal encryption api.
      Fix comment. Do not use one line comment statement '//'     because some compiler does not recognize it.
      Fix decryption in streamable mode.
      Add support for traditional PKWARE encryption.
      Make sure zip reader skips whole its contens.
      Rename archive_hmac.h archive_hmac_private.h
      Move cryptographic functions into archive_cryptor.c.     I will rename archive_crypto.c to archive_digest.c.
      Add support for WinZip AES encryption.
      Skip a test if the platform does not have cryptographic functionarity.
      Document zip:encryption option.     Use 'zipcrypt' insted of 'traditional' for zip:encryption option.
      Add new APIs that pass passphrases for reading and writing     encrypted archives.
      Switch passing passphrases from option framework to new APIs for     encryption and decryption.
      Fix build failure on Ubuntu.
      Fix build failure on FreeBSD 9.2.
      Skip encryption/decryption tests for WinZip AES if platform does not     provide PBKDF2 functionarity.
      Fix style.
      Add test_archive_write_add_filter_by_name_lz4.
      Add test_archive_write_set_format_by_name_warc.
      Split test_read_format_zip_filename to know what filename conversion     is tested or skipped.
      Change digest functionarity files and relative global variables from     archive_crypto to archive_digest.
      Property handle __archive_read_next_passphrase function.     Return the same passphrase while the passphraes is passed     even if it was passed by a callback function.
      Add --passphrase option to bsdtar and bsdcpio.
      Fix detecting message digest functions.     This bug was caused by renaming archive_crypto.
      Correctly set a terminator.
      Add a new API, archive_write_set_passphrase_callback, for encryption.
      Implement reading a passphrase from ttys.
      Fix build failure on Ubuntu.
      Correct an archive object for set_reader_options function.
      Do not ask passphrases when a passphrase was already specified with     --passphrase option.
      Add tests for --passphrase option.
      Correct detecting iconv liberary with Clang.
      Remove unneeded null check.
      Fix the potential of a dereference of null pointer.
      Remove unneeded code.
      Remove unneeded length check to avoid the potential of a dereference of     null pointer.
      Fix the potential of memory leaks in our test suit.
      Fix the potential of memory leaks in our test suit, which     Xcode Analyzer pointed out.
      Avoid code analyzer error.
      Fix build failure on Windows.
      Fix build failure on Windows.      - Apply cast statement      - Do not use snprintf directly      - Use ARCHIVE_LITERALL_LL macro for portability
      Fix build failure on Windows.      - MSC does not allow this statement, char buf[static 10U].      - Use archive_string utility instead of snprintf.      - Use gmtime_r or _gmtime64_s if available for thread safe.
      Fix build failure on Windows.      - Visual Studio does not provide unistd.h      - Visual Studio does not provide getopt      - Increase portability
      Include stdlib.h to avoid build failure on Windows.
      Fix typo.
      Fix style.
      Plug memory leak made by my recent changes.
      Fix build failure with zlib on Windows.
      Implement HMAC, PBKDF2 and AES support on Windows using CNG for     Zip encryption and decryption.
      Implement readpassphrase function, which read a passphrase from console, on Windows.
      Fix build failure without zlib.
      Fix test failure without zlib.
      Use archive_random() function instead of rand() function.
      Avoid CMake Warning that used GET_TARGET_PROPERTY with LOCATION property,     so we should use $<TARGET_FILE> expression instead.
      Fix CMake warnings on Mac OS X.
      Fix build failure with gcc.
      Fix build failure without cryptography library.
      Fix a lack of definitions for OpenSSL library on CMake build system.

Mike Frysinger (1):
      add missing _PC_NAME_MAX checks

Mike Kazantsev (10):
      Add optional bsdcat tool.
      Use getopt() instead of getopt_long() in bsdcat for compatibility reasons.
      Change bsdcat behavior to process as many files as possible.
      Minor cleanup of a redundant check in bsdcat cli parsing.
      Minor style correction in bsdcat.
      Sort .gitignore, add cat deps/dirstamp files.
      Add missing backslash before bsdcat_EXTRA_DIST.
      Return success exit code from "bsdcat --help" and print usage to stdout.
      Exit with error status from bsdcat if any errors occurred.
      Add basic tests for bsdcat.

Nate Rosenblum (5):
      Fix sparse tests with holes at the end
      Make assertions explicit in sparse tests
      Support fully-sparse files
      Fix C90 build errors
      Remove now-unnecessary test workaround

NiLuJe (14):
      Fix autotools build.
      Fix issue 317
      Make the CMake build more pkg-config friendly
      Revert "Remove unnecessary windows.h include"
      Better fix.
      Fix cpio build on MinGW.
      Fix previous commit.
      More MinGW trickery...
      Make sure has_encrypted_entries is a signed int
      Missed two tests!
      Move .pc generation to a dedicated script (#55).
      Harmless typo in a comment.
      Fix a minor sign issue.
      Fix a couple of minor warnings.

Nicolas Cornu (1):
      Add a support for utf-8 in archive_entry fields

Nikolai Vavilov (1):
      Remove unnecessary windows.h include

Nils Gladitz (1):
      Fall back to base-256 encoding for UID/GID like GNU tar does.

OBATA Akio (1):
      Ensure to declare UINTMAX_MAX, INTMAX_MAX and INTMAX_MIN

Paul Barker (8):
      Fix out-of-tree build
      Refactor archive_read_extract
      Split archive_read_extract2 from archive_read_extract
      Prevent unnecessary linking against deflate code
      Fix intermittent segfault when reading zip files
      Use snprintf to print to zip->format_name
      Cleanup error message printing in minitar example
      Issue 578: Close temp_fd in 7zip and xar writers

Paul Harris (7):
      Fix CMake build - add HAVE_WMEMMOVE to config.h.in
      Fix a few compile warnings (g++ 4.7.2)
      Bugfix - should be copy+converting from mbs to utf. Not mbs to mbs.
      Add vim swap files to .gitignore
      Test 330 - Add assert to catch a segfault.
      Correct comment regarding traverse mount points
      Add support for archive_read_data() for read_disk archives.

Pavel Raiskup (1):
      Use ustar format in the test_option_b test

Philippe Daouadi (2):
      Do not use private macros for special types
      Add compatibility with old #defines

Philippe Ombredanne (3):
      Fixing path to UC Regents-copyrighted file.
      Updating references to tar/matching.c and get_date
      Fixed minor typo

Rolf Eike Beer (1):
      Fix compilation on newer HP-UX versions

Romain Fliedel (1):
      Silently ignore lchmod failure in when not supported

Ross Burton (1):
      build: fix out of tree builds

Ross Lagerwall (1):
      Show third party library versions in version string

Rui Paulo (2):
      libarchive: use lzma_stream_encoder_mt() if it's available.
      xz: add the xz:threads option.

Ryan Lucchese (1):
      fixed hang in UUEncode filter

Sean Farley (1):
      Apply global flag in substitution

Sean McBride (1):
      Fix undefined left shift with signed ints

Sebastian Freundt (23):
      Provide ISO 28500:2009 writer (aka warc, aka web archive)
      Provide ISO 28500:2009 reader (aka warc, aka web archive)
      Implant WARC support in tar's get_format_code()
      Provide WARC read/write tests
      fix, never write more bytes in _warc_data() than ...
      fix, request just the bare minimum for a WARC header
      fix, WARC files urgently need the filesize to be known when the header is written
      Obey gcc warnings,
      Fix, actually consume data between calls to _warc_read()
      Store and read back mtimes through Last-Modified custom header
      Hygiene, clean up xmemmem() code a little, use xor sums.
      Tests, heed Tim's advice and emit ARCHIVE_FAILED for entries ...
      Fix, an empty WARC archive needs a bit more than 256 bytes.
      Hygiene, protect against NULL filenames in _warc_header()
      Hygiene, trust __archive_read_ahead() and kick superfluous check.
      Hygiene, use FALLTHROUGH instead of lint's @fallthrough@
      Hygiene, always use xmemmem() because memmem() is a GNU extension
      Hygiene, set unconsumed slot exactly once for each branch
      Tests, provide known-good archive read test.
      Set archive format, and archive format name.
      Check for legal HTTP but illegal unix filenames in WARCs archives.
      Provide regression test case for bsdcat on empty compressed files
      Allow empty files (after filters) in bsdcat command.

Sergiu Dotenco (4):
      Do not redefine _WIN32_WINNT and WINVER
      check handle validity when closing a file
      fixed vc compilation errors
      fixed another compilation error

Sevan Janiyan (1):
      Update tar.5

Terrell Russell (1):
      include linux/types.h on CentOS 5 in test_sparse_basic.c

Tim Kientzle (306):
      Only look for libmd if OpenSSL is not present.
      Resuscitate the old NFS4 support code and make it work on FreeBSD-CURRENT.     This includes a new test that archive_write_disk and archive_read_disk     consistently read/write ACL information to/from disk.     This new test currently passes on FreeBSD-CURRENT.
      Fix the setup_acls placeholder used on systems where we don't have     system-dependent ACL support yet.
      Add archive_write_fail() utility to force a write     handle to abort prematurely.
      Add lrzip files to the cmake build.
      Add canLrzip() utility to probe for existence of lrzip executable on this platform.
      Only test lrzip extraction if the lrzip executable is available.
      Only test lrzip write filtering if the lrzip executable is available.
      Lrzip doesn't have gradations of support.
      lrzip support isn't legacy, so we don't need legacy shims for it.
      Don't use __func__ or __FUNCTION__: there are too     many broken compilers in the world.
      Add a comment suggesting -n with -T.
      Include archive_write_disk_acl.c in the autoconf build.
      Fix flags on Linux.
      I'm not entirely happy with Xi Wang's solution to this mess.     The cast to (unsigned) feels like we're just exploiting     a compiler limitation.     The original idea here was to detect overflow and therefore     avoid hard-coding assumptions about the platform arithmetic.     But allowing compilers to assume that overflow can never happen     means that portable C code can never really detect overflow     without hackish workarounds.
      Fix util.c compile, remove extraneous NULL check.
      Tweak a comment.
      "now - 2 hours" should be the same as "2 hours ago"     This was broken by a mis-parsing of the "2 hours" phrase.
      Style: Whitespace around '='
      style fix
      write_raw support from Marek Kubica
      Limit write requests to at most INT_MAX.     This prevents a certain common programming error (passing -1 to write)     from leading to other problems deeper in the library.
      If seek fails, fail the xar read.  We should be able to do better than this.
      Expose the generic archive_free hook
      Issue 314:  A tar archive containing only a single 'g' record     should be treated as a valid empty tar archive.     (Such archives are generated by 'git archive' from an empty     repository.)
      Updated libarchive.spec from Nikolai Lifanov.
      Rework the sign-extension to avoid left-shift of     an explicit negative number (which newer GCC complains about).
      http://code.google.com/p/libarchive/issues/detail?id=325
      http://code.google.com/p/libarchive/issues/detail?id=325
      Some more test cases around the "2 hours ago" concept.
      Mention the -r option when we can't find our reference files.
      Export the seekable and streamable zip readers separately     to simplify testing.
      Add tests to verify that the seeking Zip reader can correctly     ignore padding at beginning or end.  Fix Issue #257.
      Issue 332: Be more careful guessing file mode information from     incomplete Zip archives.  In particular, some epub files have     0 in the file type part of the mode field.
      Start refactoring Zip writer:      * Build list of entries for Central directory at entry_finish        (So we can switch in-memory Central dir to a list of binary blobs.)      * Rename some variables to clarify the code.      * Add 'zip64' option to force zip64 extensions for testing
      Adjust format for longer test names.
      Support Zip64 extra data fields for handling large entries.
      Refactor Zip writer.
      Remove the redundant test.
      Remove deleted test from makefiles
      gitignore all emacs backup files
      Remove unused variables
      Issue 320:  Rewrite (again) to avoid the left shift that CLang dislikes so much.
      Fix tabs.
      tar option mac-ext can now be used to control whether mac extensions are processed; defaults to off on non-MacOS
      Fix tar test build with CMake
      Checkpoint work on zip64 support
      Refactor lafe_setprogname slightly to avoid the repeated logic about default handling
      Refactor archive_version_details to eliminate size and printf concerns
      Ignore emacs backup files
      Zip and Rar store file times in local time,     so we can't verify them in tests (since the     time varies depending on the time zone where     the tests are being run).
      Style:  Don't check for entry being non-NULL (none     of the archive_entry routines do this); adjust     some indentation to match the other code.
      Style:  Use 'int' not 'char' for status return types.     Fix a const mistake.
      Move the strsep() implementation to the mtree reader, which is     the only place it's used.
      Cleanups for zip64 support
      Fix typo
      Fix warnings:  mismatched signs, unused variables.
      Fix mismatched sign warning
      Break Zip compatibility test into 5 separate tests.
      Set compiler flags for Clang.
      Out-of-range seeks should fail, not truncate the seek.
      Fix all current tests:      * When searching for start of Central directory, DTRT if there are no entries.      * Find end-of-archive marker when it is exactly at end of file      * Recognize zip64 central directory locator (not yet fully parsed)      * Don't return entry size if length-at-end, even if size looks reasonable
      Adjust expected permissions; zip code has slightly tightened     the default permissions used when extracting files.
      More error reporting on these assertions.
      Be more careful about enabling zip64 (fixes zip_compression_store test)     Add test for empty zip64 file     Fix reader to read empty zip64 files
      Test that we can read the Zip64 extensions that we write.
      Comment this test a little bit.
      Rename write/read round-trip test.
      Don't try to verify deflated data if zlib is unavailable.
      Test detailed zip format for regular file entry.     Fix tests when built w/o zlib.
      Finish the detailed verification of zip archive with single entry for both zip64 and non-zip64 cases.     Fix a few minor issues this uncovers.
      Fix whitespace
      Read Zip64 EOCD; work around an Info-Zip bug.
      Test for large Zip archives, following code for large Tar test.     Fix several bugs:      * comparison function for ordering entries in reader was wrong      * writer wasn't including 64-bit sizes for entries of exactly 0xffffffff bytes     Also, add options to suppress CRC calculations and checks     (otherwise, this test spends a *lot* of time in CRC routines).
      Parse out the extra data before trying to insert into the tree.
      Expand the large zip test a bit
      Extend large zip test to cover streaming reader as well.
      Update some comments
      Skip stored data quickly when size is known at beginning even when CRC is at end
      Return uncompressed size if it's known, even if compressed size and/or CRC are deferred.
      Fix large zip test in streaming mode.
      Make zip->offset tracking more consistent.
      Eliminate zip reader's redundant tracking of file position (the archive already does this).
      Move a 1MB buffer off the stack and onto the heap.
      Clarify the wording.
      Optimize skipping entries in seeking mode
      Remove some redundant vars; more code reorg
      Update some comments, fine-tune the streaming bid
      More code rearranging
      Convert some booleans into more compact bitfields
      Comment the definitive Zip documentation for future maintainers; note the history of this code.
      Support experimental "at" extra block for better streaming.
      Be stricter about the checksum field; reduce false-positives on the bid
      A couple of changes to the experimental new extra block, as suggested by Steven Schweda.
      Only write the new 'LA' experimental extra block if it's explicitly enabled.     Enable it in the appropriate tests.
      Improve memory management in the large zip test
      Change the first field of the 'LA' extra block to the full 'version made by'
      Add a bitmap to indicate which fields are included for compression and for future expansion
      Change new extra block from 'LA' to 'el' to follow updated draft spec
      Issue #329: https://code.google.com/p/libarchive/issues/detail?id=329
      Only enable the still-experimental 'el' extra block     if option 'zip:experimental' is specified.     This should limit the use of this option until the     final format is actually nailed down.
      Verify the end-of-archive information as part of the large zip test.
      Verify that Zip writer rejects too-large files when Zip64 is disabled.
      Include tests for new zip64 functionality in autoconf-based build.
      Include missing test in cmake build, sort the file list.
      Fix the zip tests that were inadvertently disabled (and hence broken).
      Make the backslash line continuations more consistent for automatic updating; update the libarchive test data
      Zip: Make Mac extension handling optional with "mac-ext" option for Zip, default true on Mac OS"
      Fix: process directory entries even when mac extensions are turned off
      Enable mac extensions for mac extension test
      streaming zip reader does not support mac extensions
      Return correct error when multiple modules match an option spec
      Add missing file.
      Add lafe files to cat project
      Zip: Adjust streaming extension field to match the final spec worked out with Info-Zip folks
      Issue #359:  Rar drops file if previous filename is a prefix
      Document the buggy return codes of archive_write_data when writing to an archive_write_disk handle; comment that this should change in libarchive 4
      returns >0 are not errors here
      untar.c bootstrap program is public domain
      document Zip writer options
      Remove extraneous {}
      Fix refs to libarchive.3 manpage
      Generate crossrefs, fix some punctuation
      Fix environment tables
      start/end display cannot have extra trailing whitespace
      Don't put '' around options within literals
      Replace \e with plain \
      Fix multi-line display
      interpret times in UTC, not local timezone
      Mark which tests have skips
      Use ARCHIVE_VERSION macros instead of PACKAGE
      Tab after #define
      Reformat long calculation, make consistent across copies
      Do not assume dir atime updates; not everyone does
      Fix --one-file-system: do not descend, but do visit the root of a new filesystem
      Fix cmake check for arc4random_buf
      Include new hmac/random support files in cmake build
      Issue 378: compute string pointers after concatenation, to protect against reallocation moving the string
      Fix handling of leading slashes for hardlinks
      Issue 382: Move variables to top of function for non-C99 compilers.
      Use binary mode when opening files.
      Fix typos in archive_pathmatch logic.
      Issue 379: Zip containing another Zip is misparsed
      Issue 379: Zip containing another Zip misparsed
      Pass the correct pointer when checking the Zip64 end-of-central-directory     locator.
      Issue 327:  tar should accept zero-sized exclude files with -X
      Issue #131: Implement tar --no-xattr
      Fix a potential crash issue discovered by Alexander Cherepanov:
      Force binary output when extracting to stdout on Windows.
      Expand verbose output with -x.
      Skip the --lz4 test if libarchive was compiled without the library     and this platform does not have an lz4 executable.
      Missing .El at end of list.
      A couple of stray files that should be cleaned by the clean script.
      Duplicate the cpio_bin_be test to build a basic cpio_bin_le test.
      Extend the fuzz test to fuzz more bytes in small files;     add the sample cpio_bin_le file to the test.
      Issue 394: Segfault when reading malformed old-style cpio archives
      Add a check to archive_read_filter_consume to reject any     attempts to move the file pointer by a negative amount.
      Set a proper error message if we hit end-of-file when     trying to read a cpio header.
      Issues 396, 397: Ignore entries with empty filenames.
      Issue 398: Overlapping memcpy
      Issue 400: Crash reading malformed compress (.Z) input
      Issue 403: Buffer underflow parsing 'ar' header
      Issue 404: Read past end of string parsing fflags
      Correct the spelling of 'wcscmp'.
      Issue 402: Failed to recognize empty dir name in lha/lzh file
      A correct fix for Issue 404: Read past end of string parsing fflags
      Issue 406: Segfault on malformed Zip archive
      Issue 405: segfault on malformed 7z archive
      Issue 409: archive_read_extract object leaked
      Issue 412: Visual Studio 2008 does not support C99
      Issue 412: Be more careful about symlink length before trying to read it
      Issue 412: Use uint64_t throughout for file sizes
      Issue 407: Tar reader tries to examine last character of an empty filename
      Issue 408: Fix escaped newline parsing
      Remove mentions of a required signature.  This was added     by libarchive but never caught on with other mtree implementations.
      Issue 410: Segfault on invalid rar archive
      Read_open_memory does not alter the data passed to it, so should accept const void * arguments
      Split out the compiler flags to make it easier to adjust locally.
      Issue 270:  Correct spelling of 'archive_write_header'
      If lzma_cputhreads() is unavailable, default the number of threads to 1.
      Select Zip64 extensions a little more aggressively.
      Issue #522: Dir loop in malformed ISO causes segfault
      Github Issue #522: Detect cycles in the ISO directory tree
      Nudge the Zip64 cutoff a little higher.
      Reword this warning message.
      Update iconv.m4
      Test support for UTF8 pathname extension in Zip archives
      Add a CONTRIBUTING file.  Github shows a link to this in the Issues tracker.
      Fix markdown typos
      Expand CONTRIBUTING
      More wording changes
      Fix a missing asterisk in the sample code.
      Use a macro wrapper on LL literals for compatibility with certain old Windows compilers.
      Extend Zip64 test to verify more of the format details
      Fix printing of special chars in strdump
      Github Issue #529:  mismatched const usage in archive_read_open_memory.c
      Fix spel…
0fd5f66
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment