From 86f603e6f936634b7179b07c751af0d7741e2047 Mon Sep 17 00:00:00 2001 From: Larry Knox Date: Thu, 23 May 2024 07:43:29 -0500 Subject: [PATCH] Sync develop changes May 6 - May 20 to hdf5_1_14 (#4503) * win32defs: Fix Wundef warning (#4467) * Refactor error handling code to eliminate internal ID calls (#4453) All calls to the H5I routines are now made in API routines (sometimes in FUNC_ENTER/LEAVE_* macros), except for some calls to H5E_clear_stack() within the library, but I'm planning to remove those over time. Also, made all the library internal error messages into static const variables, instead of malloc'ing them, which means that they can just be referenced and not copied. Several new and updated auto-generated header files were necessary to enable this. * CMake: Fix mingw/fortran build (#4466) * Update for blosc2 in plugins and prefix hdf5 cmake varnames (#4468) * Fix an issue where compound datatype member IDs can be leaked during conversion (#4459) Also fixes issues with handling of partially initialized datatypes during library shutdown * H5Group: Fix operator= (#4473) Closes #4472 * Fix github issue #2523: doxygen -- fix grammatically incorrect sentence alias (#4474) * Remove env step not used by CI in testing (#4476) * Add H5fortkit dependecy for H5Rff.F90 (#4482) * Properly clean up cache when failing to load an object header (#4477) * Properly clean up cache when failing to load an object header * Don't check message type a second time in H5G__open_oid if the first attempt returns error * Add more asserts to H5O__assert() to avoid segfaults --------- Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com> * Add a missing image from the original document (#4490) * Disable EOF checks for SWMR readers in more cases. (#4489) Fixes a race condition where the reader opens the file and sets its EOF from the file's size (from the stat() call in the driver open callback). Then, before the reader can read the file's superblock, a SWMR writer races in, extends the file, and closes the file, writing an updated superblock with the 'writer' and 'SWMR writer' flags in the superblock off (appropriately). Then the reader proceeds to read the superblock, and flags the EOF as wrong. Taking out the check for the 'writer' and 'SWMR writer' flags will cause SWMR readers to avoid flagging the file as incorrect. * Remove unnecessary fortran install (#4498) * Only one version of binaries is produced for platforms (#4496) * Fix for github issue #2220. (#4497) Document the limitation in the Passthrough Conncector section of the VOL Connector Author Guide. The limitation is posted by Neil in the github issue on Dec 22, 2022. * Release asset tarballs with no version filenames (#4494) * Improve spec. reading superblock into cache (a little) by using v2 size (#4491) * Improve spec. reading superblock into cache (a little) by using v2 size Instead of reading the absolute minimal possible, use the likely value of a v2+ superblock w/8-byte addresses & lengths. * Fix for github Issue #1388 can't delete renamed dense attribute with corder tracking enabled (#4462) * Fix for github issue #1388: can't delete renamed dense attribute with corder tracking enabled The problem occurs in step 3(b) below which will delete the attribute with corder x from the creation order index v2 B-tree. The rename sequence in H5A__dense_rename() occurs in the following order: 1) The old attribute with corder x was removed from the creation order index v2 B-tree 2) The new renamed attribute was inserted via H5A__dense_insert(): (a) insert the attribute with new name j into the name index v2 B-tree (b) insert the attribute with corder x into the creation order index v2 B-tree 3) The old attribute was removed via H5A__dense_remove(): (a) remove the attribute with old name k from the name index v2 B-tree (b) remove the attribute with coorder x from the creation order index v2 B-tree Fix: deactivate the "corder_bt2_addr" field so that H5A__dense_remove() won't delete the attribute with corder x from the creation order index v2 B-tree. * Fix/revert a libtool sed hack (#4501) * Revert "Remove Autotools sed hack (#3848)" This reverts commit 8b3ffdef3099d2699ec71a5f855966132b3d3c25. * Fix libtool sed cleanup on MacOS Convert sed -i line to sed > libtool.bak && mv libtool.bak libtool to avoid non-portable -i option. * Update src/H5public.h * Set H5 specific vars immediately if legacy find (#4512) * Correct find process vars (vs in-line build) * Correct SZIP find * Everything is libaec 1.0.6 or newer * Correct option help text --- .github/workflows/cmake-bintest.yml | 14 +- .github/workflows/cmake-ctest.yml | 9 +- .github/workflows/main-cmake.yml | 2 +- .github/workflows/release-files.yml | 29 +- .github/workflows/remove-files.yml | 2 +- .github/workflows/tarball.yml | 24 + .gitignore | 2 + CMakeFilters.cmake | 52 +- CMakeInstallation.cmake | 16 +- CMakeLists.txt | 6 +- CMakePlugins.cmake | 6 +- CMakePresets.json | 2 + HDF5Examples/C/H5FLT/CMakeLists.txt | 8 + HDF5Examples/C/H5FLT/h5ex_d_blosc2.c | 234 ++++ HDF5Examples/C/H5FLT/tfiles/h5ex_d_blosc2.ddl | 209 ++++ HDF5Examples/C/H5FLT/tfiles/h5ex_d_blosc2.h5 | Bin 0 -> 25319 bytes HDF5Examples/C/H5FLT/tfiles/h5ex_d_blosc2.tst | 11 + bin/h5vers | 2 + bin/make_err | 174 ++- c++/src/H5Attribute.cpp | 4 +- c++/src/H5Group.cpp | 4 +- config/cmake/HDF5PluginCache.cmake | 2 +- config/cmake/HDF5PluginMacros.cmake | 2 +- config/cmake/HDFLibMacros.cmake | 24 +- config/cmake/cacheinit.cmake | 12 + config/cmake/scripts/HDF5options.cmake | 4 +- configure.ac | 7 + doxygen/dox/IntroParHDF5.dox | 7 +- doxygen/dox/VOLConnGuide.dox | 7 + doxygen/img/pimplayer.gif | Bin 0 -> 5330 bytes fortran/src/CMakeLists.txt | 2 +- fortran/src/Makefile.am | 2 +- hl/fortran/src/CMakeLists.txt | 2 +- java/lib/junit.jar | Bin 245039 -> 384581 bytes java/test/junit.sh.in | 86 -- java/test/testfiles/JUnit-TestH5.txt | 2 +- java/test/testfiles/JUnit-TestH5A.txt | 2 +- java/test/testfiles/JUnit-TestH5Arw.txt | 2 +- java/test/testfiles/JUnit-TestH5D.txt | 2 +- java/test/testfiles/JUnit-TestH5Dparams.txt | 2 +- java/test/testfiles/JUnit-TestH5Dplist.txt | 2 +- java/test/testfiles/JUnit-TestH5Drw.txt | 2 +- java/test/testfiles/JUnit-TestH5E.txt | 2 +- java/test/testfiles/JUnit-TestH5Edefault.txt | 2 +- java/test/testfiles/JUnit-TestH5Eparams.txt | 2 +- java/test/testfiles/JUnit-TestH5Eregister.txt | 2 +- java/test/testfiles/JUnit-TestH5F.txt | 2 +- java/test/testfiles/JUnit-TestH5Fbasic.txt | 2 +- java/test/testfiles/JUnit-TestH5Fparams.txt | 2 +- java/test/testfiles/JUnit-TestH5Fswmr.txt | 2 +- java/test/testfiles/JUnit-TestH5G.txt | 2 +- java/test/testfiles/JUnit-TestH5Gbasic.txt | 2 +- java/test/testfiles/JUnit-TestH5Giterate.txt | 2 +- java/test/testfiles/JUnit-TestH5Lbasic.txt | 2 +- java/test/testfiles/JUnit-TestH5Lcreate.txt | 2 +- java/test/testfiles/JUnit-TestH5Lparams.txt | 2 +- java/test/testfiles/JUnit-TestH5Obasic.txt | 2 +- java/test/testfiles/JUnit-TestH5Ocopy.txt | 2 +- java/test/testfiles/JUnit-TestH5OcopyOld.txt | 2 +- java/test/testfiles/JUnit-TestH5Ocreate.txt | 2 +- java/test/testfiles/JUnit-TestH5Oparams.txt | 2 +- java/test/testfiles/JUnit-TestH5P.txt | 2 +- java/test/testfiles/JUnit-TestH5PData.txt | 2 +- java/test/testfiles/JUnit-TestH5PL.txt | 2 +- java/test/testfiles/JUnit-TestH5Pfapl.txt | 2 +- java/test/testfiles/JUnit-TestH5Pfaplhdfs.txt | 2 +- java/test/testfiles/JUnit-TestH5Pfapls3.txt | 2 +- java/test/testfiles/JUnit-TestH5Plist.txt | 2 +- java/test/testfiles/JUnit-TestH5Pvirtual.txt | 2 +- java/test/testfiles/JUnit-TestH5R.txt | 2 +- java/test/testfiles/JUnit-TestH5Rref.txt | 2 +- java/test/testfiles/JUnit-TestH5S.txt | 2 +- java/test/testfiles/JUnit-TestH5Sbasic.txt | 2 +- java/test/testfiles/JUnit-TestH5T.txt | 2 +- java/test/testfiles/JUnit-TestH5Tbasic.txt | 2 +- java/test/testfiles/JUnit-TestH5Tparams.txt | 2 +- java/test/testfiles/JUnit-TestH5VL.txt | 2 +- java/test/testfiles/JUnit-TestH5Z.txt | 2 +- release_docs/INSTALL_CMake.txt | 30 +- release_docs/RELEASE.txt | 43 +- src/CMakeLists.txt | 2 + src/H5Adense.c | 9 +- src/H5Apublic.h | 20 +- src/H5D.c | 4 +- src/H5Dint.c | 2 +- src/H5Dmodule.h | 1 + src/H5Dvirtual.c | 4 +- src/H5E.c | 873 ++------------ src/H5Edeprec.c | 32 +- src/H5Eint.c | 1034 +++++++++++++++-- src/H5Epkg.h | 74 +- src/H5Eprivate.h | 11 +- src/H5FDfamily.c | 4 +- src/H5FDonion.c | 2 +- src/H5Fint.c | 18 +- src/H5Fpkg.h | 4 + src/H5Fsuper.c | 12 +- src/H5Fsuper_cache.c | 3 +- src/H5Gint.c | 15 +- src/H5Gloc.c | 2 +- src/H5Gnode.c | 2 +- src/H5Gstab.c | 2 +- src/H5Gtraverse.c | 2 +- src/H5Iint.c | 74 +- src/H5Iprivate.h | 1 - src/H5Ocopy.c | 2 +- src/H5Odbg.c | 6 + src/H5Oint.c | 19 +- src/H5Opublic.h | 6 +- src/H5Ppublic.h | 2 +- src/H5SM.c | 8 +- src/H5Spublic.h | 4 +- src/H5T.c | 14 +- src/H5Tcommit.c | 2 +- src/H5VLcallback.c | 2 +- src/H5Z.c | 8 +- src/H5private.h | 2 +- src/H5public.h | 4 + src/H5win32defs.h | 2 +- src/Makefile.am | 6 +- test/tattr.c | 9 +- 121 files changed, 2047 insertions(+), 1382 deletions(-) create mode 100644 HDF5Examples/C/H5FLT/h5ex_d_blosc2.c create mode 100644 HDF5Examples/C/H5FLT/tfiles/h5ex_d_blosc2.ddl create mode 100644 HDF5Examples/C/H5FLT/tfiles/h5ex_d_blosc2.h5 create mode 100644 HDF5Examples/C/H5FLT/tfiles/h5ex_d_blosc2.tst create mode 100755 doxygen/img/pimplayer.gif diff --git a/.github/workflows/cmake-bintest.yml b/.github/workflows/cmake-bintest.yml index 48be210173b..4f815a4102e 100644 --- a/.github/workflows/cmake-bintest.yml +++ b/.github/workflows/cmake-bintest.yml @@ -163,7 +163,7 @@ jobs: - name: Get published binary (MacOS) uses: actions/download-artifact@65a9edc5881444af0b9093a5e628f2fe47ea3b2e # v4.1.7 with: - name: tgz-osx12-${{ inputs.build_mode }}-binary + name: tgz-osx-${{ inputs.build_mode }}-binary path: ${{ github.workspace }} - name: Uncompress hdf5 binary (MacOS) @@ -189,12 +189,12 @@ jobs: ls ${{ runner.workspace }} # symlinks the compiler executables to a common location - - name: Setup GNU Fortran - uses: fortran-lang/setup-fortran@v1 - id: setup-fortran - with: - compiler: gcc - version: 12 + # - name: Setup GNU Fortran + # uses: fortran-lang/setup-fortran@v1 + # id: setup-fortran + # with: + # compiler: gcc + # version: 12 - name: Run ctest (MacOS) id: run-ctest diff --git a/.github/workflows/cmake-ctest.yml b/.github/workflows/cmake-ctest.yml index 1a69de624e6..6cf9b96209e 100644 --- a/.github/workflows/cmake-ctest.yml +++ b/.github/workflows/cmake-ctest.yml @@ -308,7 +308,7 @@ jobs: cp ${{ runner.workspace }}/hdf5/build114/${{ inputs.preset_name }}-Clang/README.md ${{ runner.workspace }}/build114/hdf5 cp ${{ runner.workspace }}/hdf5/build114/${{ inputs.preset_name }}-Clang/*.tar.gz ${{ runner.workspace }}/build114/hdf5 cd "${{ runner.workspace }}/build114" - tar -zcvf ${{ steps.set-file-base.outputs.FILE_BASE }}-osx12.tar.gz hdf5 + tar -zcvf ${{ steps.set-file-base.outputs.FILE_BASE }}-osx.tar.gz hdf5 shell: bash - name: List files in the space (MacOS) @@ -320,8 +320,8 @@ jobs: - name: Save published binary (MacOS) uses: actions/upload-artifact@v4 with: - name: tgz-osx12-binary - path: ${{ runner.workspace }}/build114/${{ steps.set-file-base.outputs.FILE_BASE }}-osx12.tar.gz + name: tgz-osx-binary + path: ${{ runner.workspace }}/build114/${{ steps.set-file-base.outputs.FILE_BASE }}-osx.tar.gz if-no-files-found: error # 'warn' or 'ignore' are also available, defaults to `warn` build_and_test_S3_linux: @@ -413,9 +413,6 @@ jobs: compiler: intel version: '2024.1' - - name: Enable Developer Command Prompt - uses: ilammy/msvc-dev-cmd@v1.13.0 - - name: Set file base name (Windows_intel) id: set-file-base run: | diff --git a/.github/workflows/main-cmake.yml b/.github/workflows/main-cmake.yml index 0a0842f7b94..5e5fb054673 100644 --- a/.github/workflows/main-cmake.yml +++ b/.github/workflows/main-cmake.yml @@ -261,7 +261,7 @@ jobs: - name: Save published binary (Mac) uses: actions/upload-artifact@v4 with: - name: tgz-osx12-${{ inputs.build_mode }}-binary + name: tgz-osx-${{ inputs.build_mode }}-binary path: ${{ runner.workspace }}/build/HDF5-*-Darwin.tar.gz if-no-files-found: error # 'warn' or 'ignore' are also available, defaults to `warn` if: ${{ (matrix.os == 'macos-13') && (inputs.thread_safety != 'TS') }} diff --git a/.github/workflows/release-files.yml b/.github/workflows/release-files.yml index e4d1a093af7..6b881b40f68 100644 --- a/.github/workflows/release-files.yml +++ b/.github/workflows/release-files.yml @@ -103,7 +103,7 @@ jobs: - name: Get published binary (MacOS) uses: actions/download-artifact@65a9edc5881444af0b9093a5e628f2fe47ea3b2e # v4.1.7 with: - name: tgz-osx12-binary + name: tgz-osx-binary path: ${{ github.workspace }} - name: Get published binary (Linux) @@ -148,12 +148,26 @@ jobs: name: abi-reports path: ${{ github.workspace }} + - name: Get published nonversioned source (tgz) + if: ${{ (inputs.use_environ == 'release') }} + uses: actions/download-artifact@65a9edc5881444af0b9093a5e628f2fe47ea3b2e # v4.1.7 + with: + name: tgz-tarball-nover + path: ${{ github.workspace }} + + - name: Get published nonversioned source (zip) + if: ${{ (inputs.use_environ == 'release') }} + uses: actions/download-artifact@65a9edc5881444af0b9093a5e628f2fe47ea3b2e # v4.1.7 + with: + name: zip-tarball-nover + path: ${{ github.workspace }} + - name: Create sha256 sums for files run: | sha256sum ${{ steps.get-file-base.outputs.FILE_BASE }}.doxygen.zip > ${{ steps.get-file-base.outputs.FILE_BASE }}.sha256sums.txt sha256sum ${{ steps.get-file-base.outputs.FILE_BASE }}.tar.gz >> ${{ steps.get-file-base.outputs.FILE_BASE }}.sha256sums.txt sha256sum ${{ steps.get-file-base.outputs.FILE_BASE }}.zip >> ${{ steps.get-file-base.outputs.FILE_BASE }}.sha256sums.txt - sha256sum ${{ steps.get-file-base.outputs.FILE_BASE }}-osx12.tar.gz >> ${{ steps.get-file-base.outputs.FILE_BASE }}.sha256sums.txt + sha256sum ${{ steps.get-file-base.outputs.FILE_BASE }}-osx.tar.gz >> ${{ steps.get-file-base.outputs.FILE_BASE }}.sha256sums.txt sha256sum ${{ steps.get-file-base.outputs.FILE_BASE }}-ubuntu-2204_gcc.tar.gz >> ${{ steps.get-file-base.outputs.FILE_BASE }}.sha256sums.txt sha256sum ${{ steps.get-file-base.outputs.FILE_BASE }}-ubuntu-2204_gcc.deb.tar.gz >> ${{ steps.get-file-base.outputs.FILE_BASE }}.sha256sums.txt sha256sum ${{ steps.get-file-base.outputs.FILE_BASE }}-ubuntu-2204_gcc.rpm.tar.gz >> ${{ steps.get-file-base.outputs.FILE_BASE }}.sha256sums.txt @@ -163,6 +177,11 @@ jobs: sha256sum ${{ steps.get-file-base.outputs.FILE_BASE }}-win-vs2022_intel.zip >> ${{ steps.get-file-base.outputs.FILE_BASE }}.sha256sums.txt sha256sum ${{ steps.get-file-base.outputs.FILE_BASE }}.html.abi.reports.tar.gz >> ${{ steps.get-file-base.outputs.FILE_BASE }}.sha256sums.txt + - name: Create sha256 sums for files for nonversioned files + run: | + sha256sum hdf5.zip >> ${{ steps.get-file-base.outputs.FILE_BASE }}.sha256sums.txt + sha256sum hdf5.tar.gz >> ${{ steps.get-file-base.outputs.FILE_BASE }}.sha256sums.txt + - name: Store snapshot name run: | echo "${{ steps.get-file-base.outputs.FILE_BASE }}" > ./last-file.txt @@ -190,7 +209,7 @@ jobs: ${{ steps.get-file-base.outputs.FILE_BASE }}.doxygen.zip ${{ steps.get-file-base.outputs.FILE_BASE }}.tar.gz ${{ steps.get-file-base.outputs.FILE_BASE }}.zip - ${{ steps.get-file-base.outputs.FILE_BASE }}-osx12.tar.gz + ${{ steps.get-file-base.outputs.FILE_BASE }}-osx.tar.gz ${{ steps.get-file-base.outputs.FILE_BASE }}-ubuntu-2204_gcc.tar.gz ${{ steps.get-file-base.outputs.FILE_BASE }}-ubuntu-2204_gcc.deb.tar.gz ${{ steps.get-file-base.outputs.FILE_BASE }}-ubuntu-2204_gcc.rpm.tar.gz @@ -214,7 +233,9 @@ jobs: ${{ steps.get-file-base.outputs.FILE_BASE }}.doxygen.zip ${{ steps.get-file-base.outputs.FILE_BASE }}.tar.gz ${{ steps.get-file-base.outputs.FILE_BASE }}.zip - ${{ steps.get-file-base.outputs.FILE_BASE }}-osx12.tar.gz + hdf5.tar.gz + hdf5.zip + ${{ steps.get-file-base.outputs.FILE_BASE }}-osx.tar.gz ${{ steps.get-file-base.outputs.FILE_BASE }}-ubuntu-2204_gcc.tar.gz ${{ steps.get-file-base.outputs.FILE_BASE }}-ubuntu-2204_gcc.deb.tar.gz ${{ steps.get-file-base.outputs.FILE_BASE }}-ubuntu-2204_gcc.rpm.tar.gz diff --git a/.github/workflows/remove-files.yml b/.github/workflows/remove-files.yml index 3238bc50096..032130cc8ff 100644 --- a/.github/workflows/remove-files.yml +++ b/.github/workflows/remove-files.yml @@ -50,7 +50,7 @@ jobs: ${{ steps.get-file-base.outputs.FILE_BASE }}.doxygen.zip ${{ steps.get-file-base.outputs.FILE_BASE }}.tar.gz ${{ steps.get-file-base.outputs.FILE_BASE }}.zip - ${{ steps.get-file-base.outputs.FILE_BASE }}-osx12.tar.gz + ${{ steps.get-file-base.outputs.FILE_BASE }}-osx.tar.gz ${{ steps.get-file-base.outputs.FILE_BASE }}-ubuntu-2204_gcc.tar.gz ${{ steps.get-file-base.outputs.FILE_BASE }}-ubuntu-2204_gcc.deb.tar.gz ${{ steps.get-file-base.outputs.FILE_BASE }}-ubuntu-2204_gcc.rpm.tar.gz diff --git a/.github/workflows/tarball.yml b/.github/workflows/tarball.yml index 8286f9860cc..db566f8c8d7 100644 --- a/.github/workflows/tarball.yml +++ b/.github/workflows/tarball.yml @@ -144,6 +144,14 @@ jobs: mv hdf5-${{ steps.version.outputs.SOURCE_TAG }}.zip ${{ inputs.use_tag }}.zip shell: bash + - name: Copy the release file source to a non-versioned file name + id: cp-to-non-versioned + if: ${{ (inputs.use_environ == 'release') }} + run: | + cp ${{ inputs.use_tag }}.tar.gz hdf5.tar.gz + cp ${{ inputs.use_tag }}.zip hdf5.zip + shell: bash + - name: List files in the repository run: | ls -l ${{ github.workspace }} @@ -164,6 +172,22 @@ jobs: path: ${{ steps.set-file-base.outputs.FILE_BASE }}.zip if-no-files-found: error # 'warn' or 'ignore' are also available, defaults to `warn` + - name: Save tgz-tarball-nover + if: ${{ (inputs.use_environ == 'release') }} + uses: actions/upload-artifact@v4 + with: + name: tgz-tarball-nover + path: hdf5.tar.gz + if-no-files-found: error # 'warn' or 'ignore' are also available, defaults to `warn` + + - name: Save zip-tarball-nover + if: ${{ (inputs.use_environ == 'release') }} + uses: actions/upload-artifact@v4 + with: + name: zip-tarball-nover + path: hdf5.zip + if-no-files-found: error # 'warn' or 'ignore' are also available, defaults to `warn` + - name: Save NEWSLETTER uses: actions/upload-artifact@v4 with: diff --git a/.gitignore b/.gitignore index d2fc4c79651..d6b8b714dcb 100644 --- a/.gitignore +++ b/.gitignore @@ -34,6 +34,8 @@ m4/ltversion.m4 m4/lt~obsolete.m4 src/H5Edefin.h src/H5Einit.h +src/H5Emajdef.h +src/H5Emindef.h src/H5Epubgen.h src/H5Eterm.h src/H5config.h.in diff --git a/CMakeFilters.cmake b/CMakeFilters.cmake index dbd68fd110d..6329fefd816 100644 --- a/CMakeFilters.cmake +++ b/CMakeFilters.cmake @@ -9,9 +9,9 @@ # If you do not have access to either file, you may request a copy from # help@hdfgroup.org. # -option (USE_LIBAEC_STATIC "Use static AEC library " OFF) -option (ZLIB_USE_EXTERNAL "Use External Library Building for ZLIB" OFF) -option (SZIP_USE_EXTERNAL "Use External Library Building for SZIP" OFF) +option (USE_LIBAEC_STATIC "Use static AEC library" OFF) +option (ZLIB_USE_EXTERNAL "Use External Library Building for ZLIB else search" OFF) +option (SZIP_USE_EXTERNAL "Use External Library Building for SZIP else search" OFF) if (NOT ZLIB_USE_LOCALCONTENT) set (ZLIB_URL ${ZLIB_TGZ_ORIGPATH}/${ZLIB_TGZ_NAME}) @@ -32,8 +32,8 @@ include (ExternalProject) set (HDF5_ALLOW_EXTERNAL_SUPPORT "NO" CACHE STRING "Allow External Library Building (NO GIT TGZ)") set_property (CACHE HDF5_ALLOW_EXTERNAL_SUPPORT PROPERTY STRINGS NO GIT TGZ) if (HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "GIT" OR HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "TGZ") - set (ZLIB_USE_EXTERNAL ON CACHE BOOL "Use External Library Building for ZLIB" FORCE) - set (SZIP_USE_EXTERNAL ON CACHE BOOL "Use External Library Building for SZIP" FORCE) + set (ZLIB_USE_EXTERNAL ON CACHE BOOL "Use External Library Building for ZLIB else search" FORCE) + set (SZIP_USE_EXTERNAL ON CACHE BOOL "Use External Library Building for SZIP else search" FORCE) if (HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "GIT") set (ZLIB_URL ${ZLIB_GIT_URL} CACHE STRING "Path to zlib git repository") set (ZLIB_BRANCH ${ZLIB_GIT_BRANCH}) @@ -57,9 +57,9 @@ if (HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "GIT" OR HDF5_ALLOW_EXTERNAL_SUPPORT MAT endif () else () set (HDF5_ENABLE_Z_LIB_SUPPORT OFF CACHE BOOL "" FORCE) - set (ZLIB_USE_EXTERNAL OFF CACHE BOOL "Use External Library Building for ZLIB") + set (ZLIB_USE_EXTERNAL OFF CACHE BOOL "Use External Library Building for ZLIB else search") set (HDF5_ENABLE_SZIP_SUPPORT OFF CACHE BOOL "" FORCE) - set (SZIP_USE_EXTERNAL OFF CACHE BOOL "Use External Library Building for SZIP") + set (SZIP_USE_EXTERNAL OFF CACHE BOOL "Use External Library Building for SZIP else search") endif () endif () @@ -71,20 +71,20 @@ if (HDF5_ENABLE_Z_LIB_SUPPORT) if (NOT H5_ZLIB_HEADER) if (NOT ZLIB_USE_EXTERNAL) find_package (ZLIB NAMES ${ZLIB_PACKAGE_NAME}${HDF_PACKAGE_EXT} COMPONENTS static shared) - if (NOT ZLIB_FOUND) + if (NOT H5_ZLIB_FOUND) find_package (ZLIB) # Legacy find endif () - if (ZLIB_FOUND) + if (H5_ZLIB_FOUND) set (H5_ZLIB_HEADER "zlib.h") - set (ZLIB_INCLUDE_DIR_GEN ${ZLIB_INCLUDE_DIR}) - set (ZLIB_INCLUDE_DIRS ${ZLIB_INCLUDE_DIRS} ${ZLIB_INCLUDE_DIR}) + set (H5_ZLIB_INCLUDE_DIR_GEN ${ZLIB_INCLUDE_DIR}) + set (H5_ZLIB_INCLUDE_DIRS ${H5_ZLIB_INCLUDE_DIRS} ${ZLIB_INCLUDE_DIR}) set (LINK_COMP_LIBS ${LINK_COMP_LIBS} ${ZLIB_LIBRARIES}) endif () else () if (HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "GIT" OR HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "TGZ") EXTERNAL_ZLIB_LIBRARY (${HDF5_ALLOW_EXTERNAL_SUPPORT}) message (VERBOSE "Filter HDF5_ZLIB is built") - set (LINK_COMP_LIBS ${LINK_COMP_LIBS} ${ZLIB_STATIC_LIBRARY}) + set (LINK_COMP_LIBS ${LINK_COMP_LIBS} ${H5_ZLIB_STATIC_LIBRARY}) endif () endif () else () @@ -93,14 +93,14 @@ if (HDF5_ENABLE_Z_LIB_SUPPORT) set (H5_HAVE_ZLIB_H 1) set (H5_HAVE_LIBZ 1) endif () - if (ZLIB_FOUND) + if (H5_ZLIB_FOUND) set (H5_HAVE_FILTER_DEFLATE 1) set (H5_HAVE_ZLIB_H 1) set (H5_HAVE_LIBZ 1) if (H5_HAVE_FILTER_DEFLATE) set (EXTERNAL_FILTERS "${EXTERNAL_FILTERS} DEFLATE") endif () - set (HDF5_COMP_INCLUDE_DIRECTORIES "${HDF5_COMP_INCLUDE_DIRECTORIES};${ZLIB_INCLUDE_DIRS}") + set (HDF5_COMP_INCLUDE_DIRECTORIES "${HDF5_COMP_INCLUDE_DIRECTORIES};${H5_ZLIB_INCLUDE_DIRS}") message (VERBOSE "Filter HDF5_ZLIB is ON") else () set (HDF5_ENABLE_Z_LIB_SUPPORT OFF CACHE BOOL "" FORCE) @@ -115,21 +115,15 @@ option (HDF5_ENABLE_SZIP_SUPPORT "Use SZip Filter" ON) if (HDF5_ENABLE_SZIP_SUPPORT) option (HDF5_ENABLE_SZIP_ENCODING "Use SZip Encoding" ON) if (NOT SZIP_USE_EXTERNAL) + set(libaec_USE_STATIC_LIBS ${HDF5_USE_LIBAEC_STATIC}) set(SZIP_FOUND FALSE) - set(libaec_USE_STATIC_LIBS ${USE_LIBAEC_STATIC}) - find_package (libaec 1.0.5 CONFIG) - if (SZIP_FOUND) - set (LINK_COMP_LIBS ${LINK_COMP_LIBS} ${SZIP_LIBRARIES}) - endif () + find_package (SZIP NAMES ${LIBAEC_PACKAGE_NAME}${HDF_PACKAGE_EXT} COMPONENTS static shared) if (NOT SZIP_FOUND) - find_package (SZIP NAMES ${LIBAEC_PACKAGE_NAME}${HDF_PACKAGE_EXT} COMPONENTS static shared) - if (NOT SZIP_FOUND) - find_package (SZIP) # Legacy find - endif () + find_package (SZIP) # Legacy find endif () - if (SZIP_FOUND) - set (SZIP_INCLUDE_DIR_GEN ${SZIP_INCLUDE_DIR}) - set (SZIP_INCLUDE_DIRS ${SZIP_INCLUDE_DIRS} ${SZIP_INCLUDE_DIR}) + if (H5_SZIP_FOUND) + set (H5_SZIP_INCLUDE_DIR_GEN ${SZIP_INCLUDE_DIR}) + set (H5_SZIP_INCLUDE_DIRS ${H5_SZIP_INCLUDE_DIRS} ${SZIP_INCLUDE_DIR}) set (LINK_COMP_LIBS ${LINK_COMP_LIBS} ${SZIP_LIBRARIES}) endif () else () @@ -137,14 +131,14 @@ if (HDF5_ENABLE_SZIP_SUPPORT) EXTERNAL_SZIP_LIBRARY (${HDF5_ALLOW_EXTERNAL_SUPPORT} ${HDF5_ENABLE_SZIP_ENCODING}) message (VERBOSE "Filter SZIP is built") message (VERBOSE "... with library AEC") - set (LINK_COMP_LIBS ${LINK_COMP_LIBS} ${SZIP_STATIC_LIBRARY}) + set (LINK_COMP_LIBS ${LINK_COMP_LIBS} ${H5_SZIP_STATIC_LIBRARY}) endif () endif () - if (SZIP_FOUND) + if (H5_SZIP_FOUND) set (H5_HAVE_FILTER_SZIP 1) set (H5_HAVE_SZLIB_H 1) set (H5_HAVE_LIBSZ 1) - set (HDF5_COMP_INCLUDE_DIRECTORIES "${HDF5_COMP_INCLUDE_DIRECTORIES};${SZIP_INCLUDE_DIRS}") + set (HDF5_COMP_INCLUDE_DIRECTORIES "${HDF5_COMP_INCLUDE_DIRECTORIES};${H5_SZIP_INCLUDE_DIRS}") message (VERBOSE "Filter SZIP is ON") if (H5_HAVE_FILTER_SZIP) set (EXTERNAL_FILTERS "${EXTERNAL_FILTERS} DECODE") diff --git a/CMakeInstallation.cmake b/CMakeInstallation.cmake index 9229c4e1a7e..10e4036ca34 100644 --- a/CMakeInstallation.cmake +++ b/CMakeInstallation.cmake @@ -454,20 +454,20 @@ The HDF5 data model, file format, API, library, and tools are open and distribut if (HDF5_PACKAGE_EXTLIBS) if (HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "GIT" OR HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "TGZ") - if (ZLIB_FOUND AND ZLIB_USE_EXTERNAL) + if (H5_ZLIB_FOUND AND ZLIB_USE_EXTERNAL) if (WIN32) - set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${ZLIB_INCLUDE_DIR_GEN};HDF5_ZLIB;ALL;/") + set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${H5_ZLIB_INCLUDE_DIR_GEN};HDF5_ZLIB;ALL;/") else () - set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${ZLIB_INCLUDE_DIR_GEN};HDF5_ZLIB;libraries;/") - set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${ZLIB_INCLUDE_DIR_GEN};HDF5_ZLIB;configinstall;/") + set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${H5_ZLIB_INCLUDE_DIR_GEN};HDF5_ZLIB;libraries;/") + set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${H5_ZLIB_INCLUDE_DIR_GEN};HDF5_ZLIB;configinstall;/") endif () endif () - if (SZIP_FOUND AND SZIP_USE_EXTERNAL) + if (H5_SZIP_FOUND AND SZIP_USE_EXTERNAL) if (WIN32) - set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${SZIP_INCLUDE_DIR_GEN};SZIP;ALL;/") + set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${H5_SZIP_INCLUDE_DIR_GEN};SZIP;ALL;/") else () - set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${SZIP_INCLUDE_DIR_GEN};SZIP;libraries;/") - set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${SZIP_INCLUDE_DIR_GEN};SZIP;configinstall;/") + set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${H5_SZIP_INCLUDE_DIR_GEN};SZIP;libraries;/") + set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${H5_SZIP_INCLUDE_DIR_GEN};SZIP;configinstall;/") endif () endif () if (PLUGIN_FOUND AND PLUGIN_USE_EXTERNAL) diff --git a/CMakeLists.txt b/CMakeLists.txt index ee65c2a607d..4527d8024e1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -105,8 +105,8 @@ mark_as_advanced (HDF5_LIB_INFIX) # else () # set (H5_ZLIB_HEADER "vtk_zlib.h") # # Set vars that FindZlib would have set if used in sub project -# set (ZLIB_INCLUDE_DIRS "${VTK_ZLIB_INCLUDE_DIRS}") -# set (ZLIB_LIBRARIES vtkzlib) +# set (H5_ZLIB_INCLUDE_DIRS "${VTK_H5_ZLIB_INCLUDE_DIRS}") +# set (H5_ZLIB_LIBRARIES vtkzlib) # endif () # endif () # @@ -947,7 +947,7 @@ endif () add_subdirectory (src) if (HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "GIT" OR HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "TGZ") - if ((ZLIB_FOUND AND ZLIB_USE_EXTERNAL) OR (SZIP_FOUND AND SZIP_USE_EXTERNAL)) + if ((H5_ZLIB_FOUND AND ZLIB_USE_EXTERNAL) OR (H5_SZIP_FOUND AND SZIP_USE_EXTERNAL)) if (BUILD_STATIC_LIBS) add_dependencies (${HDF5_LIB_TARGET} ${LINK_COMP_LIBS}) endif () diff --git a/CMakePlugins.cmake b/CMakePlugins.cmake index 7fd332a2ebe..f607c2cfb39 100644 --- a/CMakePlugins.cmake +++ b/CMakePlugins.cmake @@ -9,7 +9,7 @@ # If you do not have access to either file, you may request a copy from # help@hdfgroup.org. # -option (PLUGIN_USE_EXTERNAL "Use External Library Building for filter PLUGIN" OFF) +option (PLUGIN_USE_EXTERNAL "Use External Library Building for filter PLUGIN else search" OFF) if (NOT PLUGIN_USE_LOCALCONTENT) set (PLUGIN_URL ${PLUGIN_TGZ_ORIGPATH}/${PLUGIN_TGZ_NAME}) @@ -26,7 +26,7 @@ include (ExternalProject) set (HDF5_ALLOW_EXTERNAL_SUPPORT "NO" CACHE STRING "Allow External Library Building (NO GIT TGZ)") set_property (CACHE HDF5_ALLOW_EXTERNAL_SUPPORT PROPERTY STRINGS NO GIT TGZ) if (HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "GIT" OR HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "TGZ") - set (PLUGIN_USE_EXTERNAL ON CACHE BOOL "Use External Library Building for PLUGIN" FORCE) + set (PLUGIN_USE_EXTERNAL ON CACHE BOOL "Use External Library Building for PLUGIN else search" FORCE) if (HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "GIT") set (PLUGIN_URL ${PLUGIN_GIT_URL} CACHE STRING "Path to PLUGIN git repository") set (PLUGIN_BRANCH ${PLUGIN_GIT_BRANCH}) @@ -41,7 +41,7 @@ if (HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "GIT" OR HDF5_ALLOW_EXTERNAL_SUPPORT MAT endif () endif () else () - set (PLUGIN_USE_EXTERNAL OFF CACHE BOOL "Use External Library Building for PLUGIN") + set (PLUGIN_USE_EXTERNAL OFF CACHE BOOL "Use External Library Building for PLUGIN else search") message (VERBOSE "Filter PLUGIN not built") endif () endif () diff --git a/CMakePresets.json b/CMakePresets.json index 61afadd7b92..de1229d57c4 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -46,6 +46,8 @@ "BLOSC_PACKAGE_NAME": {"type": "STRING", "value": "blosc"}, "BLOSC_ZLIB_TGZ_NAME": {"type": "STRING", "value": "zlib-1.3.tar.gz"}, "BLOSC_ZLIB_PACKAGE_NAME": {"type": "STRING", "value": "zlib"}, + "BLOSC2_TGZ_NAME": {"type": "STRING", "value": "c-blosc2-2.14.4.tar.gz"}, + "BLOSC2_PACKAGE_NAME": {"type": "STRING", "value": "blosc2"}, "BZ2_TGZ_NAME": {"type": "STRING", "value": "bzip2-bzip2-1.0.8.tar.gz"}, "BZ2_PACKAGE_NAME": {"type": "STRING", "value": "bz2"}, "FPZIP_TGZ_NAME": {"type": "STRING", "value": "fpzip-1.3.0.tar.gz"}, diff --git a/HDF5Examples/C/H5FLT/CMakeLists.txt b/HDF5Examples/C/H5FLT/CMakeLists.txt index 9345b662565..79c7e794685 100644 --- a/HDF5Examples/C/H5FLT/CMakeLists.txt +++ b/HDF5Examples/C/H5FLT/CMakeLists.txt @@ -24,6 +24,14 @@ else () set (BLOSC_AVAILABLE 0) endif () +option (ENABLE_BLOSC2 "Enable Library Building for blosc2 plugin" ON) +if (ENABLE_BLOSC2) + set (BLOSC_AVAILABLE 1) + set (dyn_examples ${dyn_examples} h5ex_d_blosc2) +else () + set (BLOSC_AVAILABLE 0) +endif () + option (ENABLE_BSHUF "Enable Library Building for bshuf plugin" ON) if (ENABLE_BSHUF) if (NOT CMAKE_C_COMPILER_ID STREQUAL "Intel") diff --git a/HDF5Examples/C/H5FLT/h5ex_d_blosc2.c b/HDF5Examples/C/H5FLT/h5ex_d_blosc2.c new file mode 100644 index 00000000000..dae0becb4a2 --- /dev/null +++ b/HDF5Examples/C/H5FLT/h5ex_d_blosc2.c @@ -0,0 +1,234 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * All rights reserved. * + * * + * This file is part of the HDF5 BLOSC2 filter plugin source. The full * + * copyright notice, including terms governing use, modification, and * + * terms governing use, modification, and redistribution, is contained in * + * the file COPYING, which can be found at the root of the BLOSC2 source code * + * distribution tree. If you do not have access to this file, you may * + * request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/************************************************************ + + This example shows how to write data and read it from a dataset + using blosc2 compression. + blosc2 filter is not available in HDF5. + The example uses a new feature available in HDF5 version 1.8.11 + to discover, load and register filters at run time. + + ************************************************************/ + +#include "hdf5.h" +#include +#include + +#define FILE "h5ex_d_blosc2.h5" +#define DATASET "DS1" +#define DIM0 32 +#define DIM1 64 +#define CHUNK0 4 +#define CHUNK1 8 +#define H5Z_FILTER_BLOSC2 32026 + +int +main(void) +{ + hid_t file_id = H5I_INVALID_HID; /* Handles */ + hid_t space_id = H5I_INVALID_HID; /* Handles */ + hid_t dset_id = H5I_INVALID_HID; /* Handles */ + hid_t dcpl_id = H5I_INVALID_HID; /* Handles */ + herr_t status; + htri_t avail; + H5Z_filter_t filter_id = 0; + char filter_name[128]; + hsize_t dims[2] = {DIM0, DIM1}, chunk[2] = {CHUNK0, CHUNK1}; + size_t nelmts = 10; /* number of elements in cd_values */ + unsigned int flags; + unsigned filter_config; + const unsigned int cd_values[10] = {0, 0, 0, 0, 4, 1, 2, 2, 4, 8}; /* blosc parameters */ + unsigned int values_out[10] = {99, 99, 99, 99, 99, 99, 99, 99, 99, 99}; + int wdata[DIM0][DIM1], /* Write buffer */ + rdata[DIM0][DIM1], /* Read buffer */ + max; + hsize_t i, j; + int ret_value = 1; + + /* + * Initialize data. + */ + for (i = 0; i < DIM0; i++) + for (j = 0; j < DIM1; j++) + wdata[i][j] = i * j - j; + + /* + * Create a new file using the default properties. + */ + file_id = H5Fcreate(FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); + if (file_id < 0) + goto done; + + /* + * Create dataspace. Setting maximum size to NULL sets the maximum + * size to be the current size. + */ + space_id = H5Screate_simple(2, dims, NULL); + if (space_id < 0) + goto done; + + /* + * Create the dataset creation property list, add the gzip + * compression filter and set the chunk size. + */ + dcpl_id = H5Pcreate(H5P_DATASET_CREATE); + if (dcpl_id < 0) + goto done; + + status = H5Pset_filter(dcpl_id, H5Z_FILTER_BLOSC2, H5Z_FLAG_OPTIONAL, nelmts, cd_values); + if (status < 0) + goto done; + + /* + * Check that filter is registered with the library now. + * If it is registered, retrieve filter's configuration. + */ + avail = H5Zfilter_avail(H5Z_FILTER_BLOSC2); + if (avail) { + status = H5Zget_filter_info(H5Z_FILTER_BLOSC2, &filter_config); + if ((filter_config & H5Z_FILTER_CONFIG_ENCODE_ENABLED) && + (filter_config & H5Z_FILTER_CONFIG_DECODE_ENABLED)) + printf("blosc2 filter is available for encoding and decoding.\n"); + } + else { + printf("H5Zfilter_avail - not found.\n"); + goto done; + } + status = H5Pset_chunk(dcpl_id, 2, chunk); + if (status < 0) + printf("failed to set chunk.\n"); + + /* + * Create the dataset. + */ + printf("....Create dataset ................\n"); + dset_id = H5Dcreate(file_id, DATASET, H5T_STD_I32LE, space_id, H5P_DEFAULT, dcpl_id, H5P_DEFAULT); + if (dset_id < 0) { + printf("failed to create dataset.\n"); + goto done; + } + + /* + * Write the data to the dataset. + */ + printf("....Writing blosc2 compressed data ................\n"); + status = H5Dwrite(dset_id, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, wdata[0]); + if (status < 0) + printf("failed to write data.\n"); + + /* + * Close and release resources. + */ + H5Dclose(dset_id); + dset_id = -1; + H5Pclose(dcpl_id); + dcpl_id = -1; + H5Sclose(space_id); + space_id = -1; + H5Fclose(file_id); + file_id = -1; + status = H5close(); + if (status < 0) { + printf("/nFAILED to close library/n"); + goto done; + } + + printf("....Close the file and reopen for reading ........\n"); + /* + * Now we begin the read section of this example. + */ + + /* + * Open file and dataset using the default properties. + */ + file_id = H5Fopen(FILE, H5F_ACC_RDONLY, H5P_DEFAULT); + if (file_id < 0) + goto done; + + dset_id = H5Dopen(file_id, DATASET, H5P_DEFAULT); + if (dset_id < 0) + goto done; + + /* + * Retrieve dataset creation property list. + */ + dcpl_id = H5Dget_create_plist(dset_id); + if (dcpl_id < 0) + goto done; + + /* + * Retrieve and print the filter id, compression level and filter's name for blosc. + */ + filter_id = H5Pget_filter2(dcpl_id, (unsigned)0, &flags, &nelmts, values_out, sizeof(filter_name), + filter_name, NULL); + printf("Filter info is available from the dataset creation property\n "); + printf(" Filter identifier is "); + switch (filter_id) { + case H5Z_FILTER_BLOSC2: + printf("%d\n", filter_id); + printf(" Number of parameters is %d with the value %u %u %u\n", nelmts, values_out[4], + values_out[5], values_out[6]); + printf(" To find more about the filter check %s\n", filter_name); + break; + default: + printf("Not expected filter\n"); + break; + } + + /* + * Read the data using the default properties. + */ + printf("....Reading blosc2 compressed data ................\n"); + status = H5Dread(dset_id, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, rdata[0]); + if (status < 0) + printf("failed to read data.\n"); + + /* + * Find the maximum value in the dataset, to verify that it was + * read correctly. + */ + max = rdata[0][0]; + for (i = 0; i < DIM0; i++) + for (j = 0; j < DIM1; j++) { + /*printf("%d \n", rdata[i][j]); */ + if (max < rdata[i][j]) + max = rdata[i][j]; + } + /* + * Print the maximum value. + */ + printf("Maximum value in %s is %d\n", DATASET, max); + /* + * Check that filter is registered with the library now. + */ + avail = H5Zfilter_avail(H5Z_FILTER_BLOSC2); + if (avail) + printf("blosc2 filter is available now since H5Dread triggered loading of the filter.\n"); + + ret_value = 0; + +done: + /* + * Close and release resources. + */ + if (dcpl_id >= 0) + H5Pclose(dcpl_id); + if (dset_id >= 0) + H5Dclose(dset_id); + if (space_id >= 0) + H5Sclose(space_id); + if (file_id >= 0) + H5Fclose(file_id); + + return ret_value; +} diff --git a/HDF5Examples/C/H5FLT/tfiles/h5ex_d_blosc2.ddl b/HDF5Examples/C/H5FLT/tfiles/h5ex_d_blosc2.ddl new file mode 100644 index 00000000000..df86cd05ef3 --- /dev/null +++ b/HDF5Examples/C/H5FLT/tfiles/h5ex_d_blosc2.ddl @@ -0,0 +1,209 @@ +HDF5 "h5ex_d_blosc2.h5" { +GROUP "/" { + DATASET "DS1" { + DATATYPE H5T_STD_I32LE + DATASPACE SIMPLE { ( 32, 64 ) / ( 32, 64 ) } + STORAGE_LAYOUT { + CHUNKED ( 4, 8 ) + SIZE 21247 (0.386:1 COMPRESSION) + } + FILTERS { + USER_DEFINED_FILTER { + FILTER_ID 32026 + COMMENT HDF5 blosc2 filter; see https://github.com/HDFGroup/hdf5_plugins/blob/master/docs/RegisteredFilterPlugins.md + PARAMS { 1 0 4 128 4 1 2 2 4 8 } + } + } + FILLVALUE { + FILL_TIME H5D_FILL_TIME_IFSET + VALUE H5D_FILL_VALUE_DEFAULT + } + ALLOCATION_TIME { + H5D_ALLOC_TIME_INCR + } + DATA { + (0,0): 0, -1, -2, -3, -4, -5, -6, -7, -8, -9, -10, -11, -12, -13, -14, + (0,15): -15, -16, -17, -18, -19, -20, -21, -22, -23, -24, -25, -26, + (0,27): -27, -28, -29, -30, -31, -32, -33, -34, -35, -36, -37, -38, + (0,39): -39, -40, -41, -42, -43, -44, -45, -46, -47, -48, -49, -50, + (0,51): -51, -52, -53, -54, -55, -56, -57, -58, -59, -60, -61, -62, + (0,63): -63, + (1,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (1,21): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (1,42): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (1,63): 0, + (2,0): 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, + (2,18): 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + (2,34): 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + (2,50): 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + (3,0): 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, + (3,17): 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, + (3,33): 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, + (3,49): 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, + (3,62): 124, 126, + (4,0): 0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, + (4,17): 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, + (4,33): 99, 102, 105, 108, 111, 114, 117, 120, 123, 126, 129, 132, 135, + (4,46): 138, 141, 144, 147, 150, 153, 156, 159, 162, 165, 168, 171, + (4,58): 174, 177, 180, 183, 186, 189, + (5,0): 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60, 64, + (5,17): 68, 72, 76, 80, 84, 88, 92, 96, 100, 104, 108, 112, 116, 120, + (5,31): 124, 128, 132, 136, 140, 144, 148, 152, 156, 160, 164, 168, + (5,43): 172, 176, 180, 184, 188, 192, 196, 200, 204, 208, 212, 216, + (5,55): 220, 224, 228, 232, 236, 240, 244, 248, 252, + (6,0): 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, + (6,16): 80, 85, 90, 95, 100, 105, 110, 115, 120, 125, 130, 135, 140, + (6,29): 145, 150, 155, 160, 165, 170, 175, 180, 185, 190, 195, 200, + (6,41): 205, 210, 215, 220, 225, 230, 235, 240, 245, 250, 255, 260, + (6,53): 265, 270, 275, 280, 285, 290, 295, 300, 305, 310, 315, + (7,0): 0, 6, 12, 18, 24, 30, 36, 42, 48, 54, 60, 66, 72, 78, 84, 90, + (7,16): 96, 102, 108, 114, 120, 126, 132, 138, 144, 150, 156, 162, 168, + (7,29): 174, 180, 186, 192, 198, 204, 210, 216, 222, 228, 234, 240, + (7,41): 246, 252, 258, 264, 270, 276, 282, 288, 294, 300, 306, 312, + (7,53): 318, 324, 330, 336, 342, 348, 354, 360, 366, 372, 378, + (8,0): 0, 7, 14, 21, 28, 35, 42, 49, 56, 63, 70, 77, 84, 91, 98, 105, + (8,16): 112, 119, 126, 133, 140, 147, 154, 161, 168, 175, 182, 189, + (8,28): 196, 203, 210, 217, 224, 231, 238, 245, 252, 259, 266, 273, + (8,40): 280, 287, 294, 301, 308, 315, 322, 329, 336, 343, 350, 357, + (8,52): 364, 371, 378, 385, 392, 399, 406, 413, 420, 427, 434, 441, + (9,0): 0, 8, 16, 24, 32, 40, 48, 56, 64, 72, 80, 88, 96, 104, 112, 120, + (9,16): 128, 136, 144, 152, 160, 168, 176, 184, 192, 200, 208, 216, + (9,28): 224, 232, 240, 248, 256, 264, 272, 280, 288, 296, 304, 312, + (9,40): 320, 328, 336, 344, 352, 360, 368, 376, 384, 392, 400, 408, + (9,52): 416, 424, 432, 440, 448, 456, 464, 472, 480, 488, 496, 504, + (10,0): 0, 9, 18, 27, 36, 45, 54, 63, 72, 81, 90, 99, 108, 117, 126, + (10,15): 135, 144, 153, 162, 171, 180, 189, 198, 207, 216, 225, 234, + (10,27): 243, 252, 261, 270, 279, 288, 297, 306, 315, 324, 333, 342, + (10,39): 351, 360, 369, 378, 387, 396, 405, 414, 423, 432, 441, 450, + (10,51): 459, 468, 477, 486, 495, 504, 513, 522, 531, 540, 549, 558, + (10,63): 567, + (11,0): 0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, + (11,15): 150, 160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, + (11,27): 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, + (11,39): 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, + (11,51): 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, + (11,63): 630, + (12,0): 0, 11, 22, 33, 44, 55, 66, 77, 88, 99, 110, 121, 132, 143, 154, + (12,15): 165, 176, 187, 198, 209, 220, 231, 242, 253, 264, 275, 286, + (12,27): 297, 308, 319, 330, 341, 352, 363, 374, 385, 396, 407, 418, + (12,39): 429, 440, 451, 462, 473, 484, 495, 506, 517, 528, 539, 550, + (12,51): 561, 572, 583, 594, 605, 616, 627, 638, 649, 660, 671, 682, + (12,63): 693, + (13,0): 0, 12, 24, 36, 48, 60, 72, 84, 96, 108, 120, 132, 144, 156, + (13,14): 168, 180, 192, 204, 216, 228, 240, 252, 264, 276, 288, 300, + (13,26): 312, 324, 336, 348, 360, 372, 384, 396, 408, 420, 432, 444, + (13,38): 456, 468, 480, 492, 504, 516, 528, 540, 552, 564, 576, 588, + (13,50): 600, 612, 624, 636, 648, 660, 672, 684, 696, 708, 720, 732, + (13,62): 744, 756, + (14,0): 0, 13, 26, 39, 52, 65, 78, 91, 104, 117, 130, 143, 156, 169, + (14,14): 182, 195, 208, 221, 234, 247, 260, 273, 286, 299, 312, 325, + (14,26): 338, 351, 364, 377, 390, 403, 416, 429, 442, 455, 468, 481, + (14,38): 494, 507, 520, 533, 546, 559, 572, 585, 598, 611, 624, 637, + (14,50): 650, 663, 676, 689, 702, 715, 728, 741, 754, 767, 780, 793, + (14,62): 806, 819, + (15,0): 0, 14, 28, 42, 56, 70, 84, 98, 112, 126, 140, 154, 168, 182, + (15,14): 196, 210, 224, 238, 252, 266, 280, 294, 308, 322, 336, 350, + (15,26): 364, 378, 392, 406, 420, 434, 448, 462, 476, 490, 504, 518, + (15,38): 532, 546, 560, 574, 588, 602, 616, 630, 644, 658, 672, 686, + (15,50): 700, 714, 728, 742, 756, 770, 784, 798, 812, 826, 840, 854, + (15,62): 868, 882, + (16,0): 0, 15, 30, 45, 60, 75, 90, 105, 120, 135, 150, 165, 180, 195, + (16,14): 210, 225, 240, 255, 270, 285, 300, 315, 330, 345, 360, 375, + (16,26): 390, 405, 420, 435, 450, 465, 480, 495, 510, 525, 540, 555, + (16,38): 570, 585, 600, 615, 630, 645, 660, 675, 690, 705, 720, 735, + (16,50): 750, 765, 780, 795, 810, 825, 840, 855, 870, 885, 900, 915, + (16,62): 930, 945, + (17,0): 0, 16, 32, 48, 64, 80, 96, 112, 128, 144, 160, 176, 192, 208, + (17,14): 224, 240, 256, 272, 288, 304, 320, 336, 352, 368, 384, 400, + (17,26): 416, 432, 448, 464, 480, 496, 512, 528, 544, 560, 576, 592, + (17,38): 608, 624, 640, 656, 672, 688, 704, 720, 736, 752, 768, 784, + (17,50): 800, 816, 832, 848, 864, 880, 896, 912, 928, 944, 960, 976, + (17,62): 992, 1008, + (18,0): 0, 17, 34, 51, 68, 85, 102, 119, 136, 153, 170, 187, 204, 221, + (18,14): 238, 255, 272, 289, 306, 323, 340, 357, 374, 391, 408, 425, + (18,26): 442, 459, 476, 493, 510, 527, 544, 561, 578, 595, 612, 629, + (18,38): 646, 663, 680, 697, 714, 731, 748, 765, 782, 799, 816, 833, + (18,50): 850, 867, 884, 901, 918, 935, 952, 969, 986, 1003, 1020, 1037, + (18,62): 1054, 1071, + (19,0): 0, 18, 36, 54, 72, 90, 108, 126, 144, 162, 180, 198, 216, 234, + (19,14): 252, 270, 288, 306, 324, 342, 360, 378, 396, 414, 432, 450, + (19,26): 468, 486, 504, 522, 540, 558, 576, 594, 612, 630, 648, 666, + (19,38): 684, 702, 720, 738, 756, 774, 792, 810, 828, 846, 864, 882, + (19,50): 900, 918, 936, 954, 972, 990, 1008, 1026, 1044, 1062, 1080, + (19,61): 1098, 1116, 1134, + (20,0): 0, 19, 38, 57, 76, 95, 114, 133, 152, 171, 190, 209, 228, 247, + (20,14): 266, 285, 304, 323, 342, 361, 380, 399, 418, 437, 456, 475, + (20,26): 494, 513, 532, 551, 570, 589, 608, 627, 646, 665, 684, 703, + (20,38): 722, 741, 760, 779, 798, 817, 836, 855, 874, 893, 912, 931, + (20,50): 950, 969, 988, 1007, 1026, 1045, 1064, 1083, 1102, 1121, 1140, + (20,61): 1159, 1178, 1197, + (21,0): 0, 20, 40, 60, 80, 100, 120, 140, 160, 180, 200, 220, 240, 260, + (21,14): 280, 300, 320, 340, 360, 380, 400, 420, 440, 460, 480, 500, + (21,26): 520, 540, 560, 580, 600, 620, 640, 660, 680, 700, 720, 740, + (21,38): 760, 780, 800, 820, 840, 860, 880, 900, 920, 940, 960, 980, + (21,50): 1000, 1020, 1040, 1060, 1080, 1100, 1120, 1140, 1160, 1180, + (21,60): 1200, 1220, 1240, 1260, + (22,0): 0, 21, 42, 63, 84, 105, 126, 147, 168, 189, 210, 231, 252, 273, + (22,14): 294, 315, 336, 357, 378, 399, 420, 441, 462, 483, 504, 525, + (22,26): 546, 567, 588, 609, 630, 651, 672, 693, 714, 735, 756, 777, + (22,38): 798, 819, 840, 861, 882, 903, 924, 945, 966, 987, 1008, 1029, + (22,50): 1050, 1071, 1092, 1113, 1134, 1155, 1176, 1197, 1218, 1239, + (22,60): 1260, 1281, 1302, 1323, + (23,0): 0, 22, 44, 66, 88, 110, 132, 154, 176, 198, 220, 242, 264, 286, + (23,14): 308, 330, 352, 374, 396, 418, 440, 462, 484, 506, 528, 550, + (23,26): 572, 594, 616, 638, 660, 682, 704, 726, 748, 770, 792, 814, + (23,38): 836, 858, 880, 902, 924, 946, 968, 990, 1012, 1034, 1056, + (23,49): 1078, 1100, 1122, 1144, 1166, 1188, 1210, 1232, 1254, 1276, + (23,59): 1298, 1320, 1342, 1364, 1386, + (24,0): 0, 23, 46, 69, 92, 115, 138, 161, 184, 207, 230, 253, 276, 299, + (24,14): 322, 345, 368, 391, 414, 437, 460, 483, 506, 529, 552, 575, + (24,26): 598, 621, 644, 667, 690, 713, 736, 759, 782, 805, 828, 851, + (24,38): 874, 897, 920, 943, 966, 989, 1012, 1035, 1058, 1081, 1104, + (24,49): 1127, 1150, 1173, 1196, 1219, 1242, 1265, 1288, 1311, 1334, + (24,59): 1357, 1380, 1403, 1426, 1449, + (25,0): 0, 24, 48, 72, 96, 120, 144, 168, 192, 216, 240, 264, 288, 312, + (25,14): 336, 360, 384, 408, 432, 456, 480, 504, 528, 552, 576, 600, + (25,26): 624, 648, 672, 696, 720, 744, 768, 792, 816, 840, 864, 888, + (25,38): 912, 936, 960, 984, 1008, 1032, 1056, 1080, 1104, 1128, 1152, + (25,49): 1176, 1200, 1224, 1248, 1272, 1296, 1320, 1344, 1368, 1392, + (25,59): 1416, 1440, 1464, 1488, 1512, + (26,0): 0, 25, 50, 75, 100, 125, 150, 175, 200, 225, 250, 275, 300, + (26,13): 325, 350, 375, 400, 425, 450, 475, 500, 525, 550, 575, 600, + (26,25): 625, 650, 675, 700, 725, 750, 775, 800, 825, 850, 875, 900, + (26,37): 925, 950, 975, 1000, 1025, 1050, 1075, 1100, 1125, 1150, 1175, + (26,48): 1200, 1225, 1250, 1275, 1300, 1325, 1350, 1375, 1400, 1425, + (26,58): 1450, 1475, 1500, 1525, 1550, 1575, + (27,0): 0, 26, 52, 78, 104, 130, 156, 182, 208, 234, 260, 286, 312, + (27,13): 338, 364, 390, 416, 442, 468, 494, 520, 546, 572, 598, 624, + (27,25): 650, 676, 702, 728, 754, 780, 806, 832, 858, 884, 910, 936, + (27,37): 962, 988, 1014, 1040, 1066, 1092, 1118, 1144, 1170, 1196, + (27,47): 1222, 1248, 1274, 1300, 1326, 1352, 1378, 1404, 1430, 1456, + (27,57): 1482, 1508, 1534, 1560, 1586, 1612, 1638, + (28,0): 0, 27, 54, 81, 108, 135, 162, 189, 216, 243, 270, 297, 324, + (28,13): 351, 378, 405, 432, 459, 486, 513, 540, 567, 594, 621, 648, + (28,25): 675, 702, 729, 756, 783, 810, 837, 864, 891, 918, 945, 972, + (28,37): 999, 1026, 1053, 1080, 1107, 1134, 1161, 1188, 1215, 1242, + (28,47): 1269, 1296, 1323, 1350, 1377, 1404, 1431, 1458, 1485, 1512, + (28,57): 1539, 1566, 1593, 1620, 1647, 1674, 1701, + (29,0): 0, 28, 56, 84, 112, 140, 168, 196, 224, 252, 280, 308, 336, + (29,13): 364, 392, 420, 448, 476, 504, 532, 560, 588, 616, 644, 672, + (29,25): 700, 728, 756, 784, 812, 840, 868, 896, 924, 952, 980, 1008, + (29,37): 1036, 1064, 1092, 1120, 1148, 1176, 1204, 1232, 1260, 1288, + (29,47): 1316, 1344, 1372, 1400, 1428, 1456, 1484, 1512, 1540, 1568, + (29,57): 1596, 1624, 1652, 1680, 1708, 1736, 1764, + (30,0): 0, 29, 58, 87, 116, 145, 174, 203, 232, 261, 290, 319, 348, + (30,13): 377, 406, 435, 464, 493, 522, 551, 580, 609, 638, 667, 696, + (30,25): 725, 754, 783, 812, 841, 870, 899, 928, 957, 986, 1015, 1044, + (30,37): 1073, 1102, 1131, 1160, 1189, 1218, 1247, 1276, 1305, 1334, + (30,47): 1363, 1392, 1421, 1450, 1479, 1508, 1537, 1566, 1595, 1624, + (30,57): 1653, 1682, 1711, 1740, 1769, 1798, 1827, + (31,0): 0, 30, 60, 90, 120, 150, 180, 210, 240, 270, 300, 330, 360, + (31,13): 390, 420, 450, 480, 510, 540, 570, 600, 630, 660, 690, 720, + (31,25): 750, 780, 810, 840, 870, 900, 930, 960, 990, 1020, 1050, 1080, + (31,37): 1110, 1140, 1170, 1200, 1230, 1260, 1290, 1320, 1350, 1380, + (31,47): 1410, 1440, 1470, 1500, 1530, 1560, 1590, 1620, 1650, 1680, + (31,57): 1710, 1740, 1770, 1800, 1830, 1860, 1890 + } + } +} +} diff --git a/HDF5Examples/C/H5FLT/tfiles/h5ex_d_blosc2.h5 b/HDF5Examples/C/H5FLT/tfiles/h5ex_d_blosc2.h5 new file mode 100644 index 0000000000000000000000000000000000000000..27339367f5de8c02dfd0eadc2c4577b7b4cb1075 GIT binary patch literal 25319 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 OWd#FKE35yNK=dD-wHe?5 literal 0 HcmV?d00001 diff --git a/HDF5Examples/C/H5FLT/tfiles/h5ex_d_blosc2.tst b/HDF5Examples/C/H5FLT/tfiles/h5ex_d_blosc2.tst new file mode 100644 index 00000000000..de97edfa1b6 --- /dev/null +++ b/HDF5Examples/C/H5FLT/tfiles/h5ex_d_blosc2.tst @@ -0,0 +1,11 @@ +blosc2 filter is available for encoding and decoding. +....Create dataset ................ +....Writing blosc2 compressed data ................ +....Close the file and reopen for reading ........ +Filter info is available from the dataset creation property + Filter identifier is 32026 + Number of parameters is 10 with the value 4 1 2 + To find more about the filter check HDF5 blosc2 filter; see https://github.com/HDFGroup/hdf5_plugins/blob/master/docs/RegisteredFilterPlugins.md +....Reading blosc2 compressed data ................ +Maximum value in DS1 is 1890 +blosc2 filter is available now since H5Dread triggered loading of the filter. diff --git a/bin/h5vers b/bin/h5vers index 29470e1968b..129ad1bf526 100755 --- a/bin/h5vers +++ b/bin/h5vers @@ -95,6 +95,8 @@ sub setvers { $_[0] =~ s/^(\#\s*define\s+H5_VERS_MINOR\s+)\d+/$1$vers[1]/m; $_[0] =~ s/^(\#\s*define\s+H5_VERS_RELEASE\s+)\d+/$1$vers[2]/m; $_[0] =~ s/^(\#\s*define\s+H5_VERS_SUBRELEASE\s+\")[^\"]*/$1$vers[3]/m; + $_[0] =~ s/^(\#\s*define\s+H5_VERS_STR\s+\")[^\"]*/ + sprintf("%s%d.%d.%d%s%s", $1, @vers[0,1,2], $vers[3]?"-":"", $vers[3])/me; $_[0] =~ s/^(\#\s*define\s+H5_VERS_INFO\s+\")[^\"]*/ sprintf("%sHDF5 library version: %d.%d.%d%s%s", $1, @vers[0,1,2], $vers[3]?"-":"", $vers[3])/me; diff --git a/bin/make_err b/bin/make_err index 618a2df46ac..58722a4fd82 100755 --- a/bin/make_err +++ b/bin/make_err @@ -47,7 +47,7 @@ sub print_warning ($) { my $fh = shift; print $fh "\n/* Generated automatically by bin/make_err -- do not edit */\n"; - print $fh "/* Add new errors to H5err.txt file */\n\n"; + print $fh "/* Add new errors to H5err.txt file */\n"; } ############################################################################## @@ -92,7 +92,7 @@ sub parse_line ($) { # Get the major error's name & description ($name, $desc) = ($line =~ /^\s*MAJOR,\s*(\w*),\s*(.*)\n/); #print "MAJOR: name=$name, desc=$desc\n"; - + # Check if the name already exists as a major or minor error message if(exists($major{$name}) || exists($minor{$name})) { die "duplicated name: $name"; @@ -103,12 +103,12 @@ sub parse_line ($) { } # Parse minor error lines elsif($line =~ /^\s*MINOR,/) { - my $min_section; # Minor errors have a section they below to also + my $min_section; # Minor errors have a section they belong to also # Get the minor error's section, name & description ($min_section, $name, $desc) = ($line =~ /^\s*MINOR,\s*(\w*),\s*(\w*),\s*(.*)\n/); #print "MINOR: min_section=$min_section, name=$name, desc=$desc\n"; - + # Check for valid section if(!exists($section{$min_section})) { die "unknown section: $min_section"; @@ -121,7 +121,7 @@ sub parse_line ($) { # Store the minor errors in a hash table, indexed by the name $minor{$name}=$desc; - + # Add the minor error to the list for the section push @{$section_list{$min_section}}, $name; } @@ -130,7 +130,7 @@ sub parse_line ($) { # Get the section's name & description ($name, $desc) = ($line =~ /^\s*SECTION,\s*(\w*),\s*(.*)\n/); #print "SECTION: name=$name, desc=$desc\n"; - + # Check if the section has already been defined if(exists($section{$name})) { die "duplicated name: $name"; @@ -178,10 +178,10 @@ sub create_public ($) { print HEADER "\n/*********************/\n"; print HEADER "/* Major error codes */\n"; print HEADER "/*********************/\n\n"; - foreach $name (keys %major) { + foreach $name (sort keys %major) { printf HEADER "#define %-20s (H5OPEN %s_g)\n",$name,$name; } - foreach $name (keys %major) { + foreach $name (sort keys %major) { printf HEADER "H5_DLLVAR hid_t %-20s /* %s */\n","${name}_g;",$major{$name}; } @@ -189,14 +189,14 @@ sub create_public ($) { print HEADER "\n/*********************/\n"; print HEADER "/* Minor error codes */\n"; print HEADER "/*********************/\n"; - while ( ($sect_name, $sect_desc) = each (%section)) { - print HEADER "\n/* $sect_desc */\n"; + foreach $sect_name (sort keys %section) { + print HEADER "\n/* $section{$sect_name} */\n"; # Iterate over all the minor errors in each section - for $name ( @{$section_list{$sect_name}}) { + for $name (sort @{$section_list{$sect_name}}) { printf HEADER "#define %-20s (H5OPEN %s_g)\n",$name,$name; } - for $name ( @{$section_list{$sect_name}}) { + for $name (sort @{$section_list{$sect_name}}) { printf HEADER "H5_DLLVAR hid_t %-20s /* %s */\n","${name}_g;",$minor{$name}; } } @@ -213,6 +213,84 @@ sub create_public ($) { close HEADER; } +############################################################################## +# Create the generated portion of the H5E major message definition code +# +sub create_majdef ($) { + my $prefix = shift; # Get the prefix for the generated file + my $file = "H5Emajdef.h"; # Name of file to generate + my $name; # Name of error message + + # Rename previous file +# rename "${prefix}${file}", "${prefix}${file}~" or die "unable to make backup"; + + # Open new header file + open HEADER, ">${prefix}${file}" or die "unable to modify source"; + + # Create file contents + + print_copyright(*HEADER); + print_warning(*HEADER); + print_startprotect(*HEADER, $file); + + # Iterate over all the major errors + print HEADER "\n/***********************************/\n"; + print HEADER "/* Major error message definitions */\n"; + print HEADER "/***********************************/\n\n"; + print HEADER "/* clang-format off */\n"; + foreach $name (sort keys %major) { + printf HEADER "static const H5E_msg_t ${name}_msg_s = {false, \"${major{$name}}\", H5E_MAJOR, &H5E_err_cls_s};\n"; + } + print HEADER "/* clang-format on */\n"; + + print_endprotect(*HEADER, $file); + + # Close header file + close HEADER; +} + +############################################################################## +# Create the generated portion of the H5E minor message definition code +# +sub create_mindef ($) { + my $prefix = shift; # Get the prefix for the generated file + my $file = "H5Emindef.h"; # Name of file to generate + my $name; # Name of error message + my $sect_name; # Section of minor error messages + + # Rename previous file +# rename "${prefix}${file}", "${prefix}${file}~" or die "unable to make backup"; + + # Open new header file + open HEADER, ">${prefix}${file}" or die "unable to modify source"; + + # Create file contents + + print_copyright(*HEADER); + print_warning(*HEADER); + print_startprotect(*HEADER, $file); + + # Iterate over all the minor error sections + print HEADER "\n/***********************************/\n"; + print HEADER "/* Minor error message definitions */\n"; + print HEADER "/***********************************/\n\n"; + print HEADER "/* clang-format off */\n"; + foreach $sect_name (sort keys %section) { + print HEADER "\n/* $sect_name: $section{$sect_name} */\n"; + + # Iterate over all the minor errors in each section + for $name (sort @{$section_list{$sect_name}}) { + printf HEADER "static const H5E_msg_t ${name}_msg_s = {false, \"${minor{$name}}\", H5E_MINOR, &H5E_err_cls_s};\n"; + } + } + print HEADER "/* clang-format on */\n"; + + print_endprotect(*HEADER, $file); + + # Close header file + close HEADER; +} + ############################################################################## # Create the generated portion of the H5E initialization code # @@ -220,6 +298,7 @@ sub create_init ($) { my $prefix = shift; # Get the prefix for the generated file my $file = "H5Einit.h"; # Name of file to generate my $name; # Name of error message + my $last_name; # Name of previous error message my $desc; # Description of error message my $sect_name; # Section of minor error messages my $sect_desc; # Description of section @@ -242,18 +321,17 @@ sub create_init ($) { print HEADER "\n/*********************/\n"; print HEADER "/* Major error codes */\n"; print HEADER "/*********************/\n\n"; - foreach $name (keys %major) { - print HEADER " "x(0*$indent),"assert(${name}_g==H5I_INVALID_HID);\n"; - print HEADER " "x(0*$indent),"if((msg = H5E__create_msg(cls, H5E_MAJOR, \"${major{$name}}\"))==NULL)\n"; - print HEADER " "x(1*$indent),"HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, \"error message initialization failed\");\n"; - print HEADER " "x(0*$indent),"if((${name}_g = H5I_register(H5I_ERROR_MSG, msg, false))<0)\n"; + foreach $name (sort keys %major) { + print HEADER "/* $name */\n"; + print HEADER " "x(0*$indent),"assert(H5I_INVALID_HID == ${name}_g);\n"; + print HEADER " "x(0*$indent),"if((${name}_g = H5I_register(H5I_ERROR_MSG, &${name}_msg_s, false)) < 0)\n"; print HEADER " "x(1*$indent),"HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, \"can't register error message\");\n"; if ($first_major == 0) { print HEADER " "x(0*$indent),"\n/* Remember first major error code ID */\n"; print HEADER " "x(0*$indent),"assert(H5E_first_maj_id_g==H5I_INVALID_HID);\n"; print HEADER " "x(0*$indent),"H5E_first_maj_id_g = ${name}_g;\n\n"; $first_major = 1; - } + } $last_name = $name; } print HEADER " "x(0*$indent),"\n/* Remember last major error code ID */\n"; @@ -264,15 +342,14 @@ sub create_init ($) { print HEADER "\n/*********************/\n"; print HEADER "/* Minor error codes */\n"; print HEADER "/*********************/\n\n"; - while ( ($sect_name, $sect_desc) = each (%section)) { - print HEADER "\n"," "x(0*$indent),"/* $sect_desc */\n"; + foreach $sect_name (sort keys %section) { + print HEADER "\n/* $section{$sect_name} */\n"; # Iterate over all the minor errors in each section - for $name ( @{$section_list{$sect_name}}) { - print HEADER " "x(0*$indent),"assert(${name}_g==H5I_INVALID_HID);\n"; - print HEADER " "x(0*$indent),"if((msg = H5E__create_msg(cls, H5E_MINOR, \"${minor{$name}}\"))==NULL)\n"; - print HEADER " "x(1*$indent),"HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, \"error message initialization failed\");\n"; - print HEADER " "x(0*$indent),"if((${name}_g = H5I_register(H5I_ERROR_MSG, msg, true))<0)\n"; + for $name (sort @{$section_list{$sect_name}}) { + print HEADER "/* $name */\n"; + print HEADER " "x(0*$indent),"assert(H5I_INVALID_HID == ${name}_g);\n"; + print HEADER " "x(0*$indent),"if((${name}_g = H5I_register(H5I_ERROR_MSG, &${name}_msg_s, false)) < 0)\n"; print HEADER " "x(1*$indent),"HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, \"can't register error message\");\n"; if ($first_minor == 0) { @@ -319,25 +396,25 @@ sub create_term ($) { # Iterate over all the major errors print HEADER "\n/* Reset major error IDs */\n"; - foreach $name (keys %major) { - print HEADER " "x($indent),"\n${name}_g="; + foreach $name (sort keys %major) { + print HEADER " "x($indent),"${name}_g =\n"; } - print HEADER " H5I_INVALID_HID;\n"; - print HEADER " "x(0*$indent),"H5E_first_maj_id_g = H5I_INVALID_HID;\n\n"; + print HEADER " "x(2*$indent),"H5I_INVALID_HID;\n"; + print HEADER "\n"," "x(0*$indent),"H5E_first_maj_id_g = H5I_INVALID_HID;\n"; print HEADER " "x(0*$indent),"H5E_last_maj_id_g = H5I_INVALID_HID;\n\n"; # Iterate over all the minor error sections print HEADER "\n/* Reset minor error IDs */\n"; - while ( ($sect_name, $sect_desc) = each (%section)) { - print HEADER "\n"," "x(0*$indent),"\n/* $sect_desc */"; + foreach $sect_name (sort keys %section) { + print HEADER "\n/* $sect_name: $section{$sect_name} */\n"; # Iterate over all the minor errors in each section - for $name ( @{$section_list{$sect_name}}) { - print HEADER " "x($indent),"\n${name}_g="; + for $name (sort @{$section_list{$sect_name}}) { + print HEADER " "x($indent),"${name}_g =\n"; } } - print HEADER " H5I_INVALID_HID;\n"; - print HEADER " "x(0*$indent),"H5E_first_min_id_g = H5I_INVALID_HID;\n\n"; + print HEADER " "x(2*$indent),"H5I_INVALID_HID;\n"; + print HEADER "\n"," "x(0*$indent),"H5E_first_min_id_g = H5I_INVALID_HID;\n"; print HEADER " "x(0*$indent),"H5E_last_min_id_g = H5I_INVALID_HID;\n\n"; print_endprotect(*HEADER, $file); @@ -356,6 +433,7 @@ sub create_define ($) { my $desc; # Description of error message my $sect_name; # Section of minor error messages my $sect_desc; # Description of section + my $num_msg; # Number of messages # Rename previous file # rename "${prefix}${file}", "${prefix}${file}~" or die "unable to make backup"; @@ -370,21 +448,29 @@ sub create_define ($) { print_startprotect(*HEADER, $file); # Iterate over all the major errors + $num_msg = 0; print HEADER "\n/* Major error IDs */\n"; - foreach $name (keys %major) { - printf HEADER "hid_t %-20s = FAIL; /* %s */\n","${name}_g",$major{$name}; + foreach $name (sort keys %major) { + printf HEADER "hid_t %-20s = H5I_INVALID_HID; /* %s */\n","${name}_g",$major{$name}; + $num_msg++; } + print HEADER "\n/* Number of major error messages */\n"; + printf HEADER "#define H5E_NUM_MAJ_ERRORS %d\n", $num_msg; # Iterate over all the minor error sections + $num_msg = 0; print HEADER "\n/* Minor error IDs */\n"; - while ( ($sect_name, $sect_desc) = each (%section)) { - print HEADER "\n/* $sect_desc */\n"; + foreach $sect_name (sort keys %section) { + print HEADER "\n/* $sect_name: $section{$sect_name} */\n"; # Iterate over all the minor errors in each section - for $name ( @{$section_list{$sect_name}}) { - printf HEADER "hid_t %-20s = FAIL; /* %s */\n","${name}_g",$minor{$name}; + for $name (sort @{$section_list{$sect_name}}) { + printf HEADER "hid_t %-20s = H5I_INVALID_HID; /* %s */\n","${name}_g",$minor{$name}; + $num_msg++; } } + print HEADER "\n/* Number of minor error messages */\n"; + printf HEADER "#define H5E_NUM_MIN_ERRORS %d\n", $num_msg; print_endprotect(*HEADER, $file); @@ -409,10 +495,14 @@ for $file (@ARGV) { } } close SOURCE; - + # Create header files print "Generating 'H5Epubgen.h'\n"; create_public($prefix); + print "Generating 'H5Emajdef.h'\n"; + create_majdef($prefix); + print "Generating 'H5Emindef.h'\n"; + create_mindef($prefix); print "Generating 'H5Einit.h'\n"; create_init($prefix); print "Generating 'H5Eterm.h'\n"; diff --git a/c++/src/H5Attribute.cpp b/c++/src/H5Attribute.cpp index e629a800c76..a79d7c3a024 100644 --- a/c++/src/H5Attribute.cpp +++ b/c++/src/H5Attribute.cpp @@ -610,9 +610,7 @@ Attribute::~Attribute() Attribute & Attribute::operator=(const Attribute &original) { - if (&original != this) { - setId(original.id); - } + IdComponent::operator=(original); return *this; } diff --git a/c++/src/H5Group.cpp b/c++/src/H5Group.cpp index 248e71f9571..48358b3a5cb 100644 --- a/c++/src/H5Group.cpp +++ b/c++/src/H5Group.cpp @@ -279,9 +279,7 @@ Group::~Group() Group & Group::operator=(const Group &original) { - if (&original != this) { - setId(original.id); - } + IdComponent::operator=(original); return *this; } diff --git a/config/cmake/HDF5PluginCache.cmake b/config/cmake/HDF5PluginCache.cmake index e96c45db371..8c667077b88 100644 --- a/config/cmake/HDF5PluginCache.cmake +++ b/config/cmake/HDF5PluginCache.cmake @@ -6,7 +6,7 @@ # examples are the tests for plugins set (H5PL_BUILD_TESTING ON CACHE BOOL "Enable H5PL testing" FORCE) -set (BUILD_EXAMPLES ${HDF5_BUILD_EXAMPLES} CACHE BOOL "Build H5PL Examples" FORCE) +set (H5PL_BUILD_EXAMPLES ${HDF5_BUILD_EXAMPLES} CACHE BOOL "Build H5PL Examples" FORCE) #preset HDF5 cache vars to this projects libraries instead of searching set (H5PL_HDF5_HEADER "H5pubconf.h" CACHE STRING "Name of HDF5 header" FORCE) diff --git a/config/cmake/HDF5PluginMacros.cmake b/config/cmake/HDF5PluginMacros.cmake index e2bdce3f33f..3ef5b90527e 100644 --- a/config/cmake/HDF5PluginMacros.cmake +++ b/config/cmake/HDF5PluginMacros.cmake @@ -44,7 +44,7 @@ macro (FILTER_OPTION plname) string(TOLOWER ${plname} PLUGIN_NAME) option (ENABLE_${plname} "Enable Library Building for ${plname} plugin" ON) if (ENABLE_${plname}) - option (HDF_${plname}_USE_EXTERNAL "Use External Library Building for ${PLUGIN_NAME} plugin" OFF) + option (HDF_${plname}_USE_EXTERNAL "Use External Library Building for ${PLUGIN_NAME} plugin else search" OFF) mark_as_advanced (HDF_${plname}_USE_EXTERNAL) if (H5PL_ALLOW_EXTERNAL_SUPPORT MATCHES "GIT" OR H5PL_ALLOW_EXTERNAL_SUPPORT MATCHES "TGZ") set (HDF_${plname}_USE_EXTERNAL ON CACHE BOOL "Use External Library Building for ${PLUGIN_NAME} plugin" FORCE) diff --git a/config/cmake/HDFLibMacros.cmake b/config/cmake/HDFLibMacros.cmake index 4039a503825..8a8813c3036 100644 --- a/config/cmake/HDFLibMacros.cmake +++ b/config/cmake/HDFLibMacros.cmake @@ -34,13 +34,13 @@ macro (EXTERNAL_ZLIB_LIBRARY compress_type) endif() add_library(${HDF_PACKAGE_NAMESPACE}zlib-static ALIAS zlib-static) - set (ZLIB_STATIC_LIBRARY "${HDF_PACKAGE_NAMESPACE}zlib-static") - set (ZLIB_LIBRARIES ${ZLIB_STATIC_LIBRARY}) + set (H5_ZLIB_STATIC_LIBRARY "${HDF_PACKAGE_NAMESPACE}zlib-static") + set (H5_ZLIB_LIBRARIES ${H5_ZLIB_STATIC_LIBRARY}) - set (ZLIB_INCLUDE_DIR_GEN "${hdf5_zlib_BINARY_DIR}") - set (ZLIB_INCLUDE_DIR "${hdf5_zlib_SOURCE_DIR}") - set (ZLIB_FOUND 1) - set (ZLIB_INCLUDE_DIRS ${ZLIB_INCLUDE_DIR_GEN} ${ZLIB_INCLUDE_DIR}) + set (H5_ZLIB_INCLUDE_DIR_GEN "${hdf5_zlib_BINARY_DIR}") + set (H5_ZLIB_INCLUDE_DIR "${hdf5_zlib_SOURCE_DIR}") + set (H5_ZLIB_FOUND 1) + set (H5_ZLIB_INCLUDE_DIRS ${H5_ZLIB_INCLUDE_DIR_GEN} ${H5_ZLIB_INCLUDE_DIR}) endmacro () #------------------------------------------------------------------------------- @@ -70,11 +70,11 @@ macro (EXTERNAL_SZIP_LIBRARY compress_type encoding) add_library (${HDF_PACKAGE_NAMESPACE}szaec-static ALIAS szaec-static) add_library (${HDF_PACKAGE_NAMESPACE}aec-static ALIAS aec-static) - set (SZIP_STATIC_LIBRARY "${HDF_PACKAGE_NAMESPACE}szaec-static;${HDF_PACKAGE_NAMESPACE}aec-static") - set (SZIP_LIBRARIES ${SZIP_STATIC_LIBRARY}) + set (H5_SZIP_STATIC_LIBRARY "${HDF_PACKAGE_NAMESPACE}szaec-static;${HDF_PACKAGE_NAMESPACE}aec-static") + set (H5_SZIP_LIBRARIES ${H5_SZIP_STATIC_LIBRARY}) - set (SZIP_INCLUDE_DIR_GEN "${szip_BINARY_DIR}") - set (SZIP_INCLUDE_DIR "${szip_SOURCE_DIR}/include") - set (SZIP_FOUND 1) - set (SZIP_INCLUDE_DIRS ${SZIP_INCLUDE_DIR_GEN} ${SZIP_INCLUDE_DIR}) + set (H5_SZIP_INCLUDE_DIR_GEN "${szip_BINARY_DIR}") + set (H5_SZIP_INCLUDE_DIR "${szip_SOURCE_DIR}/include") + set (H5_SZIP_FOUND 1) + set (H5_SZIP_INCLUDE_DIRS ${H5_SZIP_INCLUDE_DIR_GEN} ${H5_SZIP_INCLUDE_DIR}) endmacro () diff --git a/config/cmake/cacheinit.cmake b/config/cmake/cacheinit.cmake index 6a3526febf6..590be628211 100644 --- a/config/cmake/cacheinit.cmake +++ b/config/cmake/cacheinit.cmake @@ -113,6 +113,18 @@ set (BLOSC_ZLIB_TGZ_NAME "zlib-1.3.tar.gz" CACHE STRING "Use ZLib from compresse set (BLOSC_ZLIB_PACKAGE_NAME "zlib" CACHE STRING "Name of BLOSC_ZLIB package" FORCE) +######## +# blosc2 +######## + +set (BLOSC2_GIT_URL "https://github.com/Blosc/c-blosc2.git" CACHE STRING "Use BLOSC2 from Github repository" FORCE) +set (BLOSC2_GIT_BRANCH "main" CACHE STRING "" FORCE) + +set (BLOSC2_TGZ_ORIGPATH "https://github.com/Blosc/c-blosc2/archive/refs/tags" CACHE STRING "Use PLUGINS from original location" FORCE) +set (BLOSC2_TGZ_NAME "c-blosc2-2.14.4.tar.gz" CACHE STRING "Use BLOSC2 from compressed file" FORCE) + +set (BLOSC2_PACKAGE_NAME "blosc2" CACHE STRING "Name of BLOSC2 package" FORCE) + ######## # bzip2 ######## diff --git a/config/cmake/scripts/HDF5options.cmake b/config/cmake/scripts/HDF5options.cmake index d208d65e888..33bdf10d7f8 100644 --- a/config/cmake/scripts/HDF5options.cmake +++ b/config/cmake/scripts/HDF5options.cmake @@ -62,9 +62,9 @@ set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_ALLOW_EXTERNAL_SUPPORT:STRIN ### ext libs on system #set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_ALLOW_EXTERNAL_SUPPORT:STRING=NO") #set(ENV{ZLIB_ROOT} "some_location") -#set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DZLIB_LIBRARY:FILEPATH=some_location/lib/zlib.lib -DZLIB_INCLUDE_DIR:PATH=some_location/include") +#set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DH5_ZLIB_LIBRARY:FILEPATH=some_location/lib/zlib.lib -DH5_ZLIB_INCLUDE_DIR:PATH=some_location/include") #set(ENV{SZIP_ROOT} "some_location") -#set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DSZIP_LIBRARY:FILEPATH=some_location/lib/szlib.lib -DSZIP_INCLUDE_DIR:PATH=some_location/include") +#set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DH5_SZIP_LIBRARY:FILEPATH=some_location/lib/szlib.lib -DH5_SZIP_INCLUDE_DIR:PATH=some_location/include") ### disable using ext zlib #set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_ENABLE_Z_LIB_SUPPORT:BOOL=OFF") diff --git a/configure.ac b/configure.ac index 3486e80129a..4d64c5a4f52 100644 --- a/configure.ac +++ b/configure.ac @@ -4609,5 +4609,12 @@ if test "X$HDF_FORTRAN" = "Xyes"; then esac fi +## HDF5 configure code created by autotools with gcc 4.9.2 is adding problematic +## linker flags: -l with no library name; -l , specifically gfortran or m. +## This sed script corrects "-l " first and then "-l " with no library name. +## If the order is not preserved, all instances of "-l " will be removed. +sed -e '/^postdeps/ s/-l \([a-zA-Z]\)/-l\1/g' -e '/^postdeps/ s/-l //g' libtool > libtool.bak +mv -- libtool.bak libtool + ## show the configure settings cat src/libhdf5.settings diff --git a/doxygen/dox/IntroParHDF5.dox b/doxygen/dox/IntroParHDF5.dox index 414a186af89..884d9d254b2 100644 --- a/doxygen/dox/IntroParHDF5.dox +++ b/doxygen/dox/IntroParHDF5.dox @@ -23,8 +23,13 @@ Implementation requirements were to: \li Not have a reserved process, as this might interfere with parallel algorithms. \li Not spawn any processes, as this is not even commonly supported now. -The following shows the Parallel HDF5 implementation layers. +The following shows the Parallel HDF5 implementation layers: + + +
+\image html pimplayer.gif +
\subsection subsec_pintro_prog Parallel Programming with HDF5 This tutorial assumes that you are somewhat familiar with parallel programming with MPI (Message Passing Interface). diff --git a/doxygen/dox/VOLConnGuide.dox b/doxygen/dox/VOLConnGuide.dox index d1b78506fbe..190d1fb2048 100644 --- a/doxygen/dox/VOLConnGuide.dox +++ b/doxygen/dox/VOLConnGuide.dox @@ -306,6 +306,13 @@ it may be some time before that work is complete. \subsection subsecVOLPassthrough Passthrough Connectors Coming Soon +Note: +Passthrough VOL connectors should avoid doing anything with the file in the open and create +callbacks except opening it. If connectors need to do anything else they should use the post +open callback (H5VL_NATIVE_FILE_POST_OPEN op_type for the file "optional" callback), +making sure to perform operations on the file only after passing the post open call down to +the terminal connector. The post open callback is made for both file open and file create calls. + \subsection subsecVOLAsync Asynchronous Operations Coming Soon diff --git a/doxygen/img/pimplayer.gif b/doxygen/img/pimplayer.gif new file mode 100755 index 0000000000000000000000000000000000000000..7413b697ae66efa8ecbd2ef613b46d0fe61dc9bc GIT binary patch literal 5330 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

uoE6StR*EwTrVQ?b9%0O5F&crIhcO@_ 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 lx1 zi4z+(mf)SOWuiW1m&a>90TBhbLmKr*C5}2U%KWcMl(H~a5(aQdUXsRn z_b_s*II{$_k*gTg5VIGl*g*O^!BLQ`Jy6YoJ7XP@z`<{M$EC=J=IDWTySN2}&?;xf zwjU5wUH90@qwW~N*Yx?xWnlB%;tj@OB1zO{#s-$R-+DYwX}J5&0A;7js@bbY%1hM1 zd5KhPZbT&Y9egvQx8SDtq(4^{;KW@&`mv6O7Q+6ZHFzY>pn;1aO{-O3XQA^WpX3)a zDpWmS$=U)#YtE~FHIJaEm?XKS5Aq1%qq~Rl^6O~xwPapijc+<%8(-U$k{|P zGaaJ^{Elb7>p&sxfRy$~%y&x8@d!<0W{$K0RL?=Py<`0|Y3OzF5*~a7r`&&$5lrT{ z1tkF%s#zp!>?6)fsix;2k1JYK!+Z6@{ zXsgNF&4m^A^PsCak2|5BF2)~nqOj__laU8eRNbOZPyC~vGfruixPU*jd#hrz;bve2 zwpCX@5T*>Tv*h%CE@Z@5l`~hRLLjfY-a&{?$WYN*q)0r<%ml~q5fe3L-GMt1w@IRr)hDh&j(5X9iO~pJpnGt0^q!#V_$*Lp$ zNRl7eZNika=^;XDMy1_ECpOyfMG0HCo5cp-n+Db zwCdBGSo9hsD@z57BQXe>g9@fM2|xgn9vgWS*$}i=dXS4IP-<$k{S8Wn;LGHfAfw5G z?zJE+HjFxG$XMvau$GIiE20S3c{xnbUvZQZi8U=7XC}f}U&gO+N=>G#uW(^+0uWmN z5fdCO??GhS&(-~GGP4m;l?LGAKDxpZu;m?Npkc1kw5dTa=KKueTW-u(HDChHu0Ztd zxoDRLm*spuR76nd!K~+T8B2PeDb`KFfJGmGY~&e&Ltu#FlV!vWcyi0-$%}W>LNS)? zfu(R0=&KHiKWhlez7lW*(uD_`c*r(TswJz!t%Gt-}7oe6hwv6 zt363fSXb59U=||j-7xV1`D1`0HAwC{uRqsjWtJvRbZoeR-Uc=<%!J&vBWrnviflOh zg-+8OMT5}P2w5prThp}^OD|gBNqgy4hRgPM{h1fWuK1)7*%xh;xGwAV;t}0`JS_K- z2h{@>YKT$y2n&y}dYN!XQXVg|JMlZX5$Hftfz1VooC3rNtdLeC*QpqJsHZz+dQlJN%H zMqfYCwF5>mCmX?fBCHElHv4_?i&;* za!!e9$-Rg6v9XDRpK@_)_)m7u{B00k4%JwO(djK-@5b8=|FP-Wf-2eYoX)Big8p!P zcn;@8XFO?>@5y3@x+oMvJ(61!;B&|zpSznJLn~~W$mf-4`oo3CU=>j&u;G?i!8LlGGqJB?X{~*5Uh+@+4V_yAVYb#5PP?sGm=gyHF(vnYE@R z@UV;jnJ&tO#FHY$LgQ)R;siS|AOuuUzE%m`-oD?RtCew7nnM z^4=%*wLWb_=Eoc4B!J%oQeu|1Y9}0cVFNw{lcEFd1hc->ycIPG;tui@bmKPq^eMe$ zl7R3#*+Ool5zv^dywp=eti1G7(IGRw@@CHk)85p9@^D9{LT*BRrhOVA^24p2UUGc` zmd_nl-QUNsj9=nt|HZuU((F@b^-}FyVtr4Sc=3SViaF{IxdsyITlH}WKg%P0l4*Tv zH~7#5+J@AEZOvS7Fjfscv3dza5N-om-xd0zg`T${~Df2Swi1dL-`-8azfeKJ+N&z7wMJ)-{ z5S5e!j>Gs;Dj-XF4pPyaNt1x_zJp1Wz)@sHYSW`hMzgcU&~q}V1z+|rH{Fs(C; zUc&-DJG-gP9&L2usJw*OtP_I9x{-VMM2KqXqWDD{2%uiaMU8*A0E;no1-4YtMC|)| zU@ATfxl$3MDS70)K1q7Q)@ANin(SfA-o!Dc+9_a&X ze{vhuDEF@XP|HYUt}HE77yGSQ-R)6Wk532Gf2fk*g) zw@53O_})?22Cr1+IWNt`eN^O9nN)%F5e?dbid5!`{fk2o?G=lp5;m_j73TCa4yDqW z_x*y@G1((!*omku<5*lH=PHINt5*A-eVNs$6Ceh`*|`n&NDbWWNvT1FBz_9(Ef*?> z$L}GN`c$5ReNr(KzZMB$)quB7X7m>xzIRPWZeuyEjewIi%>f}+6C+cZv9Y~{Bfc$# znHv&GOBd4AlXQ7%5ovU=5!wf%I*JfkOLmsRX{8?6BYe>i{O@)KR~M6i(S{@?!eS1f z$$*vUvXfDO^itj!(nx5*?12LLeY$#vbT+xKOxh;7)Z82@JA=XLrp&>7iOl5+mWr>y z0>dELS+CCWjd1*+xHz7of3?-Un9S%1-E+Bz?kI%Vxst@LOyP*=a3@DMqK8V5H%?W1 zB_8ZDt48EryQk)`o(t1r#|tMbX4DoC4~*CkGd#e+t_ct~6k~ZgFF09lDH|`Q*Ef)M zb9WvmCXrSey1N0zZ{7`RD^sR%QmqD{Yh@GF9di;9Z&Hkv-vID~q1y==a;-3C7Njza zpVTN#*nhffG9ZLcwdaJa|7`2xP2k=PT&m&7LY#EUKxun4 z^%H3eD~;@rL>=q#T9uki&H84$X*vB?nvzJ>VuCSRwGHM-=WG{LRi%;+TiA%cMtYUL zp{{#kR3t65N~W4Uw}1&Va#&a$0ot-GB3c4d+ETTu;*Z>ru-Vg?h%p_@2h_sk)@>|D z)O9YS-}Ozj*EkzPVJc{IZdA3dH_xDdbVadnYSg`$UQj)?(0!$FTzM?oM@nNkQ&+w1)iky7S;RB*1o?x;1D@iR=JcdaBoH<9ha$(SU<4(_UF+R zFFX1N$gWD@vpTYK)0ZagPPF$g#KMaQXdV&VwE(oE5Ffwo5W(O+jucgDH&dT`VczL+ z6<~o|qX|x##PCwHEGU^{Kvwh(gj*Ca9zsOExU)>~bl%$S2hH7^PVFQzSTF-eg`2@GNQ<(eUm&U@r@$y4u~ENZ@$0I1$F zS1Q~?aW_w_B(2t&4oeM`>GTMz=A+z1bCZ=5-A*;!z=xZ`iaksrSKe7yXvUQ%#st^! z%Pcqxkyf{~W@)u|fnzC9Yt$1CF7FwNR>mE1gOI53De+W@LCQfdH^H!r1logZk1EQC zr(>P*BNE_^QpA282d*95$MR`Y(61sN4IEP&FksA0Rb3r{J)mcdRN_o zo(fM(7@VC6yEE&Pym)Ue^OMlS9jaLt*!tH-$@#7NIiocO^q!R;Q%APuQm8(n49K4F-dYHbM%cc<6g7(ZK85fSk3Zz?k(Md)IamM}qJhjy zWCKKVeo=`*jJoUup?2b0XuZ6@g3oAOP$-n4VSlEaea{GBm&3Ww>qXhQtg0kdLggbM zf~MMgky?9kf%rQ|DCjR^oRgnvg_Fb$`oac%uPzi%SdGDbVwds%ON_w>UfDZS}@qlMnRN%Rk7tWNI*Q1Uv zpjgxSB3y%Mz1H`2uH_aKFv#$|7rQc|LhFYi&nL004(4>n?}cRU$;5*_{E`8l)NoIG z42r=7d`oQ)CPF^9THUNhv%YM`7gb}I&i=+Ti`&o#w%8KX`pNvlf^o^YzXTMP)SNG~ zdGX%xz@oq+_8lO!<)HUPKAeU&{UwO}-+9c7%7N_F$0YF2R4+kJ|8j13Op`F~HHIv) z3y2Eb=nB35U}=LJyEloW0fO#oifL@K`|O^F%t*hBPQg$|)|TJPpzK+_|KR28vtG1B6YlSIue^*EY5340!SvWHx_W z@o;0+gbH~4Rr~~H4@W3wqJN_+wy)>ame&tgch8^>lALc&ocEMOC5Us04g%0Mi1eWP z;S-!rqB_s(!M-a7<33Z?-yzp-qhL4a6%C6}|slk9{Op_KAto&FF; z>m6(T#q4hA0u;;2GlBC)=u|^1Ge~Lc5}4MISz)a37T!K2rV;>Jv}K-zc(^&M?V57{v}4=0ZQFJ_?xbUz9o_wXbIzPIck0gF zRl6!xN&b4*TJQQjj51&q>m`0l6n)%Yx4)v$h}*0++a2E08yfGV^76}X!vl!DbKCcw zrBjLJG;em#BdRWRGj#iVsxT|MB;o94B8h*`k+@Pc#nRaRq052)1JRu{e3WUOaE-tl zdL{OiTVnK`w%**8x6f}=aR2xW;aWL*^LWn&@F9J@*6RoI-CQuf7_f3{u}AfNA~j&j=KnGCQbUPJ1^`ooC)6H?A+#G$3142 zfXy$E;fOQ_NsMRORqnvJw_jt{n-}Wp*D1?6KFYu^7CD1q+$opcBcWQpU zI{c7j#>o7^P~N74@RHNmlHdFRA42LSK{79&;t&~V@Jc4#V`&J&fg)v}q1~4UC0RU> z>jld${L)2wag=qGttMKG^yAEHtbEG{6d*aMTV?}78vlO#>gUpVLHk>^9>&W9ifOA% znO3O~SE)2(t}3HGN3K_`IZvZnC|5hu$C?0g8S-;Ono_5zt zNYDfPpurtopQ~-(_UiTi=yY2wGU?Oomi=|5<^{keR#N}CEqCrWJUT~vt0~&3KVW_I z0J7r;ud^dcVd{P!IGNi*Y0z+-wM5|Q?H6ekrwI=OC)pqVJZ3{&0ntwIc~yPXRrEtQ zaYOOD1lXLhgJvq}>r#B@Ud?dT)~ym6o6BnCpLmXL2yGoCF;F0%S~zyrSWf%4=?_uG zxT4Ltw~|rlICbsOTm`RQj5SudqC~2WXVU$=9*lRA`xurbi(-MWoyiz z?2yi%8IS-yykmMJGnUBt8feh;l4<)^8`+#Dd9Sw@+N;jbrJv2~7t~A78tsgUx)92f zD3~L0?yl@e4DvtH{P+3?tp;|%eGqiWt8(Tb^NlhhM7u6}v7=1m<>P*wsAqmUyW2pT>=oN1O-jEYp5T8w8awZg(MnsgH*`pIPUp z$?gX0uvuVEL?w0V@k>VaEaf|yVA#eme!>eCv)+>TF#B3V$CJXPy@Oq~sB$vk5E;+7@r;wAO? z3E#{QSU=LgW#&Ze$CAFPGKAvzV_M!mbIem+W%(W;Zb8)JD{(FRxvd3_e8$gP+& z%fgCBiN`Q1(^RZ4GnN8Dw_LH^a2%oAazoG%nuJ*V)*T6(vG?u*OJdSqm7ixa&=fsB zFwymU>huniT@S52%6|GJhWbtr=O#tg7(Zu>E3*6m)L&V?pJj8Y>bEC{8)Ks>XCdt4 z@k`f(V!v>gb^f)Z3N3)mve=w=i&Y(d18=L2%x%q)H75OODvNJ@`wQrg=`)5C0vk&w zotCKDyw)Bch-`b}MCPcf_-vZA5K7--jz4P6R>oSNx(XP)i_&swH5@el>SMK?&;1J* z!%OE0iLb&1(rEM{d;9p1EiUi!5Kt9&*GvWzV%r_fSk?gsWTF7u5#1)Y+8xK0ajkZuYFTTw8v-3@yvF!j<#FUdd^z|5lH+N zhjf@q-@VyQz<;(}tj&Fwqtf)LZ#oSw8+>pbWxW_?5+{JOCA?G?TQdHAqUh)vxsE!O zVmwcUy(Z-gA%p-xZLLXhCqx0cutApU_ucBoG$mH0OebG54Pv-t zB&XW96ik!iaq4tl>(yI0?kKs+(#a%wxZ)|yr0=EO$+C!mSK{<>jI1c9;iQybT1FQ| z=Sz;5lx$g|(u34lKOJ>TNJ;cZgg%g0^1XQJBV`dBcJU`$Al)%0aS8ht90{vZ&=3ef z5U{RO!ra+(N4OC7K!MF{D1X$x`TF>-jd{Q#{#<9$i=#UJtR!pg0eRl)cavDM#(ItL0)KS)lq*!=c4bUdh_c&vRQZ?^_ zc0~-vy=pS*!+kR-Y)LoSAX0Q7hfJ^u`{+P49t!1D*2NSY+d#p8=xzP&hQAj>Q4TNd z?=!_rB8xVD6vh|)jf?3SZ#~2DPD_wHLY*Wc87vC~ppw+MBu^TGb3TZ$Z5=?xY`ra* z>(EQvw0)qX_SVYz$BGe!n*w6#cL~kzt6=|VcwUYWfiTQY(+S6 zdEZ{eJ$9YP^^rlvahsB3%E4|4F+PiPgCODT5r+0dhne%1f-RHQ^7|`WCRm0QKd%AE zv;k-a;AVe&^%aa8b-cGOHE1K3I{Dn1B#gKC39th!eiD`H+!`jUdfL{2bgHN5 zEo8lRY~O~(t0{7dWC1^L(PL!gCa6YWB-SSo02M(b!YXY@K{Czi=aH%4LLcTp8{$8pe=r_$ws`qn4sM2x2__l=0(0RI zFe6iX%D6SmSh)jeBSUMZ@Ko75_Q@65YFhbk2#K42?`4acpRCApu5TLKarX})?ee==spTigOmmG24mo{Rg>}F@RK(m@?`>{BakyAXAYAAVv z;pg|E?liMjawS7D-w;p$5a|+%HVuZIVpPOYIT8Chm$1f;Bs=&m+s?#p)J33D_q1c- zPB(Tx8Ve-2uOT|>pmL!3m#TZyr-IQ{_39E}e6a|6mgw-n*RUN?B}gNZ1dDEX-dX3> zZ`UyXFuUvGPfBAqT_AzG%3xcJM%vtb7!)@y^89=dB0=IYvSkk{faUDRVZ3r-q25br z%^OFsmE?&>bW?~G0c+ZUVNz|SpvIa$oNEdxYS}~WfJ5{u0hntq@$5ML3MnADeK-je zfkS6Vi;06n>v6SNzkBjxf|u1B9lMKm+_@jI%14JGEk*Czv^*Eo&6=(o=r$4HG%hx2 zg(_o=l<&Fr?0Jp=jEFCD`SEO&A^T>|O%VemZ32#@FXKIS(MfW6#l+t5lPQP$Fl(0K z!Qq>nmm|M}$6jNfCf995kwmZV>WkS@en9NP=M$B!b4s{{j7G3pVp&czW2T^uJ3wpf z3^G&5d>`NPn%?SB4#1-j32&JTF8tKkr9G9;Q<_K9Z%pw7XvgpKN1&H5&dMw$kQF?_ ztH+b~h{|NsMn3%+()lvDkMo;xQP<*Fr>J?z zB96F6npegujmGDz0M7OpkQ6kM(qC$KdB1 z=t;@42-#3KTS{vfrq?|_V}vH7v1K8K`lmjX?+55#m!nqy$|PvuJ?G)y)F6rTptz~> z4xo^!F@<1Az*I6D4LmVyUy3-}20EGOfZ(6snzThwJ8>DSA(dpUB10m<^KT+865+?4 zzjbnTHqrowwuQRqCxBH@E^kVN+v!0?L6HZ8Q@1mB{8xAS=C`xGfH#;OK2?>pp-^sm zqVa>A7`989jZs{Fse&R>e=&sIQ_0^S;3?PXy8J730J`4>mQ-hH17HNS9%aAdLq_4z zXl*h#ny)5eQ#Dp_YSiBH%q}EyNUOd&|FE>1*S6n?(J)R^DXFLf`|VM!C()$A7Yk+M zONCvd`gn0=M~fO`qn4$J%&+FAokL&X$BHfW<@>&LBjK2#E7|yR=x6ulU*sQr|u6h`AiZ`Rx-m%$R*XI z1~`4IbD0z}BpQ3PdS2+$D8tqS(`#FU3zc`?G;j07+>w%{n&n`##eK%raeWVI;5dEl zBA#*L!$A)@`B0_yRs(maYuCiJoTt;1zKeb{iOjLRr*wdSrTTvq>e zE-^KuhWL{vS!d?sQx1PTo1c+tt0c*j58#PYbn+X!9gtRf#DrjtY|IA627BK%V){D% zUCn29K_w&MPAKKfv|YaQ4et}@Jnp+^oTVJq8L9BEzG?mj$zKZ@-XWTo?ok9ZJ;a`H zINH&KA#aDvTn`!QC!ax&*cYCc(0lD~4q*btpFjH>PaHzvMkp zZ`MTiC#(b$5>&+@6>FY+1#VGXVgcVoWiUij@_;PkfS^&l{2}!RJoQ-o&s9O2S(Zwg zG>QD$`hYfLrdVdRNf~nV&k0MtcXce|^gvCDU;TP+_5%Z*`|(9Y3&y!GF~YQmArs)%j{Hwr5+J*Z`M)$+BDM}DHvbSB2gk|DfC<5e zY&UJ#>#el>ob^=d5A;0V)w)qePAUjZ`Bi#0C%-k5^sWfp-mn3?f5{F}S#3}-hWw>i z6mHFhfBiDh2f;U*3=9kj#i;7gbgvhp%B8AaP!V?e%u{e&Kh#FGCMZ5I`v$-nYomlj zNfaLqA~}uJTzkUjK9M93Qs!a#jnFT!qCIjUNfvI}wZVMDgl(}Y5Y{M3A;iJH$P*t@ z*sbd%TV|Orryys_-v`lumO+PjklyfKX%O&Ja}$<`JW0>?Pg%iXfz;~95tQ&2Y@p<^ zks~|yB-6Wp$CDHdWzb=+PaPnTgmF3t)PV2{cxs^^pO*78c*emA?1nRIMiT$)Ir;#hCVN6!|c#-WMcpqQ|aaJtBLq%@+Jdta@_cj$~UtA z*4F(UR^aUR_Xr9QwQ~8(?x0{VYG&+a@sDSatfr#_94Yle$>7OUV8Mh$b##RA66Tc3 zQ@@2Rl&G=^(o4pB^7u33!zXgGDxKwCw|{^bc$95hFh1`bxqJ$JMs>`PA+#&;YTCZb@9t%T7P z(Pvyipu7Jqj!(gVI#}>a;M;Y$e}F%^f0+g?59nTSghqqAO%1H=#mxo#D3bmB1kAky z&#-oR(Po0*D*AD@T2v+)XQHR?`Vx14ty&9=Z%3Z4MSF{eYZtrL(m|E5nM}$`ap}GL zAPxfHdlI8#4IFE&H$naGAv+Rk27igYk;cc@3+=x$s9uD|Oa$APwVAGxt-WIK>P8GL zlKL!piaVDrnkaaTEzY*hPEyX7`wD5=x#$-vXxdrIegG*~u3pl4wxhHv^+|V#9=lOz zz0tc1zEf@UE_i&OLS2opZ1*>M1vM}=Cl`PUrC{Eh*h%8+PQJdu_+)T0lh4Oe?PJ8C|Px{VSz0 z@7@Hd^=Vx!+sbfl2-Y6=d1;8gDg%3v)>Dg>IiM(Y%7TOxw93pf2YfTuXg%GdKs?rM&6ZLbbhm zm!Z(d&#TPv;9|D+E0KZL=Ha}!r2T6v75%G2-9FO_!ctCSlhbm%w>{7Dx{}22Ch}_^ zmQPY$!!U9z9*UpF(>3V_V5cYcPmO>?)k0RzWjiZ+0uwi{7ZRQYgYUj1qDu&^@fIia ze^}aAUV11dO_OEah(h@epcdfXHfUB)psm?PBw|3&2t7e3R+sZ3Pl2uo%_zJHLdKAZI-=Zk_jhZZe zKvk0|oQ-8F>a5;Y_c3+E%whomb&N%2iinKW7Al1cDV z<8z}|f%KKYnhNw1^$*VnX{Q{`p6U*XZ3?sI2SSb&4Xa0_b)Fc)Mf#4uhDk^d9RvGP zUHe&Dnz~8vkJn#wFD{xDh^RK3+B+9ar`i7)Wf%ks5to5SG%56dGRpzaXe@x0otcB1 z>%StJ(Mj9#z;R}z*Q!;oMGr&?E+R~A={ttHX!pFOakA)wUwyLZWsBK@z1H`{iyHnU z5LhqLJ~zIWNIjjs<+ok(9Womj!Z#K1`FL|xYU zFs35s0}y!tfowIWnoCa6MgwpG)dydzfKj`Z>+tQ3<9*+-@5i-@jU+K6&fvAFSNGvf%vO#nZ@x!|s+Arp znHJzL5jbqY=rL;u(OY-eaewHaduH;QG7b1J z=hE8ZkH}}dZh6YhpFrh}5$c&%P>8}W27|Q^O{xZPR^6FtFv(#UAcv=6k1CkEIL@23BUj3USU;G+65JOyAg1Pv_t)lZ=+zvy_G(n*P z>hOpL)QG!a&R)PQ~_TZZs z628|?DoUx?EY3#Bp#es3Kh1PdVuNVA!Z3>pIta{V;7I}V1SlCBBvJg=V-=m7iBo2o zhw9jyx-Qm}&N|4P?SpZ;q@*GW!;eFqtJM*PnHmHQ_Zr@jJUqO02T#S!)L_P60zbqr z+Yhgq&`ojdD!6&*6%^)fhW7!P#PNwWIQa|BZY@~heS0zOxFPjk$ZI{VCa;LqWz~R& zAeK3Pkz^m=F}YALufy+r*Re%x4K^BN3x#$sPKMzKIu)0lHN{jKDt%`;2haHz7kXJ5 zxGvm>^?8LvVB8(^g@sr?+>p!#d*qmIyeY@YqB5GMRKMi72Kx{?+~@#>vM=**_t+yJ zuN*ibnRWwnGf0S8v+xGa^hM%lRzIOnecTK*lho*w#VMjZkmqk$(e1JBYdO-t5g6HO z2`_=GIhdzTP*lkPanJikn5sj2**Ko(J}NzGJ=a+>PcJiyFKo&zW$_Dv=Ih4kVOhpf24ORIz(kj0 z)21@>7jsBqMyKsf7+}sO*@4d9gvC+RVw4^Iz0k`nJPlib3;p>2ztGWA&$&P`0O~p# zXd37rAwjY%;AB)wGRvBbL1frf5m?BP)Y>`$SXAg&gG?d)Mj`U%ik@D_y~ipan^5&5y7E#R>;)AMqV>!f@ zMqGKTi;aCecqrLBgwOajU@9S(_L%?4Yr*v_!X9ejl|UMHsrXhNf-f4SD39N|a&mbr zxTJ)Ne@W3HjU_$Yy8fUD<(tAl=mOfw<* zn_YX$W#(P;LZS3h*;g9QKah#A@@(5ma;wWF{#G?xlyC*r%H>shkbBBLl4eNQ6)yKy zJJOHNRwv;87ofWOu&FO*51T*FlJ&eWr?fUg9DCFVU+IPp5l;p-##T8U+V-`D zwz5>6682H*xhS6}=8W=as%X#-G`C^#O5OF`sq>+ZQ#&#YzT zaO+_RC;x>v21Qrxh9pMKyZEafeQiPZ zXRzt`ImI#-?1987H`!UH%lurIxX#CB?OQD{E61ynLDjAUeh!=ZZecZZ-FGXT``CWY z$iH2GKm+jL#rO$mdZ8L zLy6Aa=fm}&93T_%%6|S!>uBjuB_59UWSL}zcxUN~>GErXOqIdw`T(SBJMtV}`rWWw zucSsyvV7;MyQ$ATT^yk>(md8~MDlL`lr^^?U!mvZO`m|zT|3AuQS4G+P0-{k*VzF_ z6necj+0U=!!kBWOQP(z2_M?)E-%Ailwfm0~IbpXwA^@D+80G>AT4CGsQwEmXf~GAp zdJ^}sQ@LU9etURx=BzfBIuc!R2YEi?*wY^oF_=?tL5R$gNfw!G^28L|*+$-Bh*=^W zGpy)=WKRCHSX`Y!u}oyt6jpE8+sRt@GPi{o4aTmxTqmbr>L+Tj!l}nb7WBMW*4SNP z3-h_RYXS2c-Uw-UHjd00{Iq*0q{Vled}B_rOQ;QS>}z5*$&DUTxV^f}JrivqFLF$P z@HJP8joz3V_VesD`CZnMix{$a2HGV_vg3z3wxl>$?S08PnB{pXNp7_@v55)S8pXt| z24Rc9Gth2epF!!4nb3YkWoCND@$7``Lv6mq4}g}W#eoK>__2trZ)^jiu-i$8#JG?6 z6-dW5^6O35!&_Qs4pRbmc6uUWwg~OPg{+)FbK%e!OY(u|EQ{WNxWn|8KE(~L6w*&? zrK)|K(tVSd5y$S`xu-YSP;S<>mDSnP2sueCeW__^Eo+PsK2s2VE);zZ=A^bu6C`zO zV#yV%S?Q2WO35huoy3Xqj&KE93`IT*jzra!8u?`d({Fe*8SVhiZ5oqh*Xmi@b#a&Qb5|*I?L46twx^>D^ z4TzHtE5cWP7%|$bL4_I>x9Qxq@K1ss@+azx6`o>HlaX4&uWMpG+v0FA|8@EC_V5nn zhnsU?xZA^mlvGZo(#!-kIso}i&NhAZ+iw<4N?t0N{yi#FDz;a^TTmwmQl~vnyzi>d zOq>cdZh0HD$I1yDBXM6BD7?q+Ly)PawRpqX<8xmkiTvizT(mPsKC2?tU3sR~|cw6_llZ;GtzcYlqL8cmV(oUaehh?ZEbj~`{n!#uQGZ8P4Z!L&sOT(1tH;VIOM9C6Emg}n8e zF<0rYLnr?rbS^<2Tt8@+?BK%Xn46xVmw(QN72z$P{m9-4xgT% z9_t@FN|yifBSG3rS;h-B9vBK64T=e)SF~pHCzrf;*EXszYZ}Eos~Ux6rhz%&xA*Wl z7J*B)ZHloUpjDH^=IjO5eooQ-mckxInz=_<{0bwR*a;!r8hQ_}!TQfj)Z~I&Q&~e` z?{h?{cO@IVwic=tCE^UrQs$xgsW}L&oyAOvz)B->ET`A_Ngcu?CbS~Zgaqp7L;;Ox~_tX0m#t=Rd z#nnW2WEol*+d%?-g`3I$Y;!Yg?%Eu@HSW+TBy)qMf!8NAvlC@=knAce0pMgX(j>T% zakwwjVFoAaQn`*NSIr$#eh9xI1=qxgJKS)nO0Q?wX2g|PsVUZ6RDD3d^?m6DSDqqS z&ce#VW`qh)Uj1v9BmyovM5Dh75V-ZA*xF`495BhJjrOd9sA*`!cx{7Iqog zYF$+yU5#wqv>tOusgQ2{D2QQuth*SL7> z3U%4s+2N+%NQ*;dB~9yQ&=W^qkp+k&1>gJW^M0=$a+c`_456zM8`3HdT zsxk!tm9bOm^LAizSk_os{=`8jh_4`Z)ip@h zo8Iexf_tL1kCd@#EOMX7fLps(7-tNLw�=G~Q3SEy_q8OjFE1 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 E^2Cxg_kf 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 Y>%-p+gcH1GuBPEa3yZ3eh&LAh2U#8qQUCw| delta 199601 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

@n2kVBKBPeZ5aQj9 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%0A5Bt9 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 JUnit-TestH5.out if diff JUnit-TestH5.out JUnit-TestH5.txt > /dev/null; then @@ -372,8 +370,6 @@ TESTING JUnit-TestH5Eparams sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5Eparams.ext > JUnit-TestH5Eparams.out if diff JUnit-TestH5Eparams.out JUnit-TestH5Eparams.txt > /dev/null; then @@ -393,8 +389,6 @@ TESTING JUnit-TestH5Eregister sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5Eregister.ext > JUnit-TestH5Eregister.out if diff JUnit-TestH5Eregister.out JUnit-TestH5Eregister.txt > /dev/null; then @@ -414,8 +408,6 @@ TESTING JUnit-TestH5Fparams sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5Fparams.ext > JUnit-TestH5Fparams.out if diff JUnit-TestH5Fparams.out JUnit-TestH5Fparams.txt > /dev/null; then @@ -435,8 +427,6 @@ TESTING JUnit-TestH5Fbasic sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5Fbasic.ext > JUnit-TestH5Fbasic.out if diff JUnit-TestH5Fbasic.out JUnit-TestH5Fbasic.txt > /dev/null; then @@ -456,8 +446,6 @@ TESTING JUnit-TestH5F sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5F.ext > JUnit-TestH5F.out if diff JUnit-TestH5F.out JUnit-TestH5F.txt > /dev/null; then @@ -477,8 +465,6 @@ TESTING JUnit-TestH5Fswmr sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5Fswmr.ext > JUnit-TestH5Fswmr.out if diff JUnit-TestH5Fswmr.out JUnit-TestH5Fswmr.txt > /dev/null; then @@ -498,8 +484,6 @@ TESTING JUnit-TestH5Gbasic sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5Gbasic.ext > JUnit-TestH5Gbasic.out if diff JUnit-TestH5Gbasic.out JUnit-TestH5Gbasic.txt > /dev/null; then @@ -519,8 +503,6 @@ TESTING JUnit-TestH5G sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5G.ext > JUnit-TestH5G.out if diff JUnit-TestH5G.out JUnit-TestH5G.txt > /dev/null; then @@ -540,8 +522,6 @@ TESTING JUnit-TestH5Sbasic sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5Sbasic.ext > JUnit-TestH5Sbasic.out if diff JUnit-TestH5Sbasic.out JUnit-TestH5Sbasic.txt > /dev/null; then @@ -561,8 +541,6 @@ TESTING JUnit-TestH5S sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5S.ext > JUnit-TestH5S.out if diff JUnit-TestH5S.out JUnit-TestH5S.txt > /dev/null; then @@ -582,8 +560,6 @@ TESTING JUnit-TestH5Tparams sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5Tparams.ext > JUnit-TestH5Tparams.out if diff JUnit-TestH5Tparams.out JUnit-TestH5Tparams.txt > /dev/null; then @@ -603,8 +579,6 @@ TESTING JUnit-TestH5Tbasic sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5Tbasic.ext > JUnit-TestH5Tbasic.out if diff JUnit-TestH5Tbasic.out JUnit-TestH5Tbasic.txt > /dev/null; then @@ -624,8 +598,6 @@ TESTING JUnit-TestH5T sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5T.ext > JUnit-TestH5T.out if diff JUnit-TestH5T.out JUnit-TestH5T.txt > /dev/null; then @@ -645,8 +617,6 @@ TESTING JUnit-TestH5Dparams sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5Dparams.ext > JUnit-TestH5Dparams.out if diff JUnit-TestH5Dparams.out JUnit-TestH5Dparams.txt > /dev/null; then @@ -666,8 +636,6 @@ TESTING JUnit-TestH5D sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5D.ext > JUnit-TestH5D.out if diff JUnit-TestH5D.out JUnit-TestH5D.txt > /dev/null; then @@ -687,8 +655,6 @@ TESTING JUnit-TestH5Drw sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5Drw.ext > JUnit-TestH5Drw.out if diff JUnit-TestH5Drw.out JUnit-TestH5Drw.txt > /dev/null; then @@ -708,8 +674,6 @@ TESTING JUnit-TestH5Dplist sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5Dplist.ext > JUnit-TestH5Dplist.out if diff JUnit-TestH5Dplist.out JUnit-TestH5Dplist.txt > /dev/null; then @@ -729,8 +693,6 @@ TESTING JUnit-TestH5Lparams sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5Lparams.ext > JUnit-TestH5Lparams.out if diff JUnit-TestH5Lparams.out JUnit-TestH5Lparams.txt > /dev/null; then @@ -750,8 +712,6 @@ TESTING JUnit-TestH5Lbasic sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5Lbasic.ext > JUnit-TestH5Lbasic.out if diff JUnit-TestH5Lbasic.out JUnit-TestH5Lbasic.txt > /dev/null; then @@ -771,8 +731,6 @@ TESTING JUnit-TestH5Lcreate sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5Lcreate.ext > JUnit-TestH5Lcreate.out if diff JUnit-TestH5Lcreate.out JUnit-TestH5Lcreate.txt > /dev/null; then @@ -792,8 +750,6 @@ TESTING JUnit-TestH5R sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5R.ext > JUnit-TestH5R.out if diff JUnit-TestH5R.out JUnit-TestH5R.txt > /dev/null; then @@ -813,8 +769,6 @@ TESTING JUnit-TestH5Rref sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5Rref.ext > JUnit-TestH5Rref.out if diff JUnit-TestH5Rref.out JUnit-TestH5Rref.txt > /dev/null; then @@ -834,8 +788,6 @@ TESTING JUnit-TestH5P sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5P.ext > JUnit-TestH5P.out if diff JUnit-TestH5P.out JUnit-TestH5P.txt > /dev/null; then @@ -855,8 +807,6 @@ TESTING JUnit-TestH5PData sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5PData.ext > JUnit-TestH5PData.out if diff JUnit-TestH5PData.out JUnit-TestH5PData.txt > /dev/null; then @@ -876,8 +826,6 @@ TESTING JUnit-TestH5Pfapl sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5Pfapl.ext > JUnit-TestH5Pfapl.out if diff JUnit-TestH5Pfapl.out JUnit-TestH5Pfapl.txt > /dev/null; then @@ -897,8 +845,6 @@ TESTING JUnit-TestH5Pvirtual sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5Pvirtual.ext > JUnit-TestH5Pvirtual.out if diff JUnit-TestH5Pvirtual.out JUnit-TestH5Pvirtual.txt > /dev/null; then @@ -918,8 +864,6 @@ TESTING JUnit-TestH5Plist sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5Plist.ext > JUnit-TestH5Plist.out if diff JUnit-TestH5Plist.out JUnit-TestH5Plist.txt > /dev/null; then @@ -939,8 +883,6 @@ TESTING JUnit-TestH5A sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5A.ext > JUnit-TestH5A.out if diff JUnit-TestH5A.out JUnit-TestH5A.txt > /dev/null; then @@ -960,8 +902,6 @@ TESTING JUnit-TestH5Arw sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5Arw.ext > JUnit-TestH5Arw.out if diff JUnit-TestH5Arw.out JUnit-TestH5Arw.txt > /dev/null; then @@ -981,8 +921,6 @@ TESTING JUnit-TestH5Oparams sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5Oparams.ext > JUnit-TestH5Oparams.out if diff JUnit-TestH5Oparams.out JUnit-TestH5Oparams.txt > /dev/null; then @@ -1002,8 +940,6 @@ TESTING JUnit-TestH5Obasic sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5Obasic.ext > JUnit-TestH5Obasic.out if diff JUnit-TestH5Obasic.out JUnit-TestH5Obasic.txt > /dev/null; then @@ -1023,8 +959,6 @@ TESTING JUnit-TestH5Ocreate sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5Ocreate.ext > JUnit-TestH5Ocreate.out if diff JUnit-TestH5Ocreate.out JUnit-TestH5Ocreate.txt > /dev/null; then @@ -1044,8 +978,6 @@ TESTING JUnit-TestH5OcopyOld sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5OcopyOld.ext > JUnit-TestH5OcopyOld.out if diff JUnit-TestH5OcopyOld.out JUnit-TestH5OcopyOld.txt > /dev/null; then @@ -1065,8 +997,6 @@ TESTING JUnit-TestH5Ocopy sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5Ocopy.ext > JUnit-TestH5Ocopy.out if diff JUnit-TestH5Ocopy.out JUnit-TestH5Ocopy.txt > /dev/null; then @@ -1086,8 +1016,6 @@ TESTING JUnit-TestH5PL sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5PL.ext > JUnit-TestH5PL.out if diff JUnit-TestH5PL.out JUnit-TestH5PL.txt > /dev/null; then @@ -1107,8 +1035,6 @@ TESTING JUnit-TestH5VL sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5VL.ext > JUnit-TestH5VL.out if diff JUnit-TestH5VL.out JUnit-TestH5VL.txt > /dev/null; then @@ -1128,8 +1054,6 @@ TESTING JUnit-TestH5Z sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5Z.ext > JUnit-TestH5Z.out if diff JUnit-TestH5Z.out JUnit-TestH5Z.txt > /dev/null; then @@ -1149,8 +1073,6 @@ TESTING JUnit-TestH5E sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5E.ext > JUnit-TestH5E.out if diff JUnit-TestH5E.out JUnit-TestH5E.txt > /dev/null; then @@ -1170,8 +1092,6 @@ TESTING JUnit-TestH5Edefault sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5Edefault.ext > JUnit-TestH5Edefault.out if diff JUnit-TestH5Edefault.out JUnit-TestH5Edefault.txt > /dev/null; then @@ -1192,8 +1112,6 @@ if test $USE_FILTER_SZIP = "yes"; then sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5Giterate.ext > JUnit-TestH5Giterate.out if diff JUnit-TestH5Giterate.out JUnit-TestH5Giterate.txt > /dev/null; then @@ -1214,8 +1132,6 @@ if test "X$ROS3_VFD" = "Xyes"; then sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*\.,[0-9]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5Pfapls3.ext > JUnit-TestH5Pfapls3.out if diff JUnit-TestH5Pfapls3.out JUnit-TestH5Pfapls3.txt > /dev/null; then @@ -1236,8 +1152,6 @@ if test "X$HAVE_LIBHDFS" = "Xyes"; then sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*\.,[0-9]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5Pfaplhdfs.ext > JUnit-TestH5Pfaplhdfs.out if diff JUnit-TestH5Pfaplhdfs.out JUnit-TestH5Pfaplhdfs.txt > /dev/null; then diff --git a/java/test/testfiles/JUnit-TestH5.txt b/java/test/testfiles/JUnit-TestH5.txt index b282a9138c5..a8d3b963972 100644 --- a/java/test/testfiles/JUnit-TestH5.txt +++ b/java/test/testfiles/JUnit-TestH5.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5get_libversion_null_param .testJ2C .testIsSerializable diff --git a/java/test/testfiles/JUnit-TestH5A.txt b/java/test/testfiles/JUnit-TestH5A.txt index f31c86c6f4a..9661285eca1 100644 --- a/java/test/testfiles/JUnit-TestH5A.txt +++ b/java/test/testfiles/JUnit-TestH5A.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5Acreate2_nullname .testH5Acreate_by_name .testH5Aget_name_by_idx diff --git a/java/test/testfiles/JUnit-TestH5Arw.txt b/java/test/testfiles/JUnit-TestH5Arw.txt index 49d3b1c3db4..7f3904222de 100644 --- a/java/test/testfiles/JUnit-TestH5Arw.txt +++ b/java/test/testfiles/JUnit-TestH5Arw.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5Aread_128bit_floats .testH5Aread_64bit_floats .testH5Aread_8bit_ints diff --git a/java/test/testfiles/JUnit-TestH5D.txt b/java/test/testfiles/JUnit-TestH5D.txt index 4c306213450..1651176c1ee 100644 --- a/java/test/testfiles/JUnit-TestH5D.txt +++ b/java/test/testfiles/JUnit-TestH5D.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5DArrayenum_rw .testH5DVLwrVL .testH5Dget_storage_size diff --git a/java/test/testfiles/JUnit-TestH5Dparams.txt b/java/test/testfiles/JUnit-TestH5Dparams.txt index 9acedd7e19a..127c9ea29d9 100644 --- a/java/test/testfiles/JUnit-TestH5Dparams.txt +++ b/java/test/testfiles/JUnit-TestH5Dparams.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5Dget_space_status_invalid .testH5Dget_access_plist_invalid .testH5Dget_type_invalid diff --git a/java/test/testfiles/JUnit-TestH5Dplist.txt b/java/test/testfiles/JUnit-TestH5Dplist.txt index 64e924a9860..5f0f15b2e66 100644 --- a/java/test/testfiles/JUnit-TestH5Dplist.txt +++ b/java/test/testfiles/JUnit-TestH5Dplist.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5P_dset_no_attrs_hint .testH5Dset_extent diff --git a/java/test/testfiles/JUnit-TestH5Drw.txt b/java/test/testfiles/JUnit-TestH5Drw.txt index 6b854cf3570..4453bbde866 100644 --- a/java/test/testfiles/JUnit-TestH5Drw.txt +++ b/java/test/testfiles/JUnit-TestH5Drw.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5Dread_32bit_floats .testH5Dread_32bit_ints .testH5Dread_64bit_ints diff --git a/java/test/testfiles/JUnit-TestH5E.txt b/java/test/testfiles/JUnit-TestH5E.txt index 8c5e5e41606..172c6d79957 100644 --- a/java/test/testfiles/JUnit-TestH5E.txt +++ b/java/test/testfiles/JUnit-TestH5E.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5Eget_msg_major .testH5Eget_msg_minor .testH5Epush diff --git a/java/test/testfiles/JUnit-TestH5Edefault.txt b/java/test/testfiles/JUnit-TestH5Edefault.txt index bb43c643e8a..04e724aa83c 100644 --- a/java/test/testfiles/JUnit-TestH5Edefault.txt +++ b/java/test/testfiles/JUnit-TestH5Edefault.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5Eset_current_stack_invalid_stkid .testH5Eset_current_stack .testH5Eget_num diff --git a/java/test/testfiles/JUnit-TestH5Eparams.txt b/java/test/testfiles/JUnit-TestH5Eparams.txt index 92f80685560..08a24667030 100644 --- a/java/test/testfiles/JUnit-TestH5Eparams.txt +++ b/java/test/testfiles/JUnit-TestH5Eparams.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5EprintInt .testH5Eget_msg .testH5Eget_num diff --git a/java/test/testfiles/JUnit-TestH5Eregister.txt b/java/test/testfiles/JUnit-TestH5Eregister.txt index 132e123b700..223104ffd89 100644 --- a/java/test/testfiles/JUnit-TestH5Eregister.txt +++ b/java/test/testfiles/JUnit-TestH5Eregister.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5Eregister_class_lib_name_null .testH5Eregister_class_version_null .testH5Eunregister_class_invalid_classid diff --git a/java/test/testfiles/JUnit-TestH5F.txt b/java/test/testfiles/JUnit-TestH5F.txt index f79ac40ee1d..d408fa18a8d 100644 --- a/java/test/testfiles/JUnit-TestH5F.txt +++ b/java/test/testfiles/JUnit-TestH5F.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5Fget_access_plist .testH5Fget_fileno_diff .testH5Fget_fileno_same diff --git a/java/test/testfiles/JUnit-TestH5Fbasic.txt b/java/test/testfiles/JUnit-TestH5Fbasic.txt index cd4e2826f92..7626c1415af 100644 --- a/java/test/testfiles/JUnit-TestH5Fbasic.txt +++ b/java/test/testfiles/JUnit-TestH5Fbasic.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5Fget_mdc_size .testH5Fget_mdc_hit_rate .testH5F_dset_no_attrs_hint diff --git a/java/test/testfiles/JUnit-TestH5Fparams.txt b/java/test/testfiles/JUnit-TestH5Fparams.txt index 91a843517b7..b7ce871ce63 100644 --- a/java/test/testfiles/JUnit-TestH5Fparams.txt +++ b/java/test/testfiles/JUnit-TestH5Fparams.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5Fis_accessible_null .testH5Fcreate_null .testH5Fflush_local diff --git a/java/test/testfiles/JUnit-TestH5Fswmr.txt b/java/test/testfiles/JUnit-TestH5Fswmr.txt index f943892de53..14a301e3a1b 100644 --- a/java/test/testfiles/JUnit-TestH5Fswmr.txt +++ b/java/test/testfiles/JUnit-TestH5Fswmr.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5Fstart_swmr_write .testH5Fswmr_read_attempts diff --git a/java/test/testfiles/JUnit-TestH5G.txt b/java/test/testfiles/JUnit-TestH5G.txt index cbcea1d7ac3..331b7755354 100644 --- a/java/test/testfiles/JUnit-TestH5G.txt +++ b/java/test/testfiles/JUnit-TestH5G.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5Gget_info_by_name .testH5Gget_create_plist .testH5Gopen diff --git a/java/test/testfiles/JUnit-TestH5Gbasic.txt b/java/test/testfiles/JUnit-TestH5Gbasic.txt index 35216965b5b..b2dff333ca5 100644 --- a/java/test/testfiles/JUnit-TestH5Gbasic.txt +++ b/java/test/testfiles/JUnit-TestH5Gbasic.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5Gget_info_by_name_not_exists .testH5Gget_info_by_idx_not_exists .testH5Gget_info_by_name diff --git a/java/test/testfiles/JUnit-TestH5Giterate.txt b/java/test/testfiles/JUnit-TestH5Giterate.txt index 38402afcbf1..057a023b348 100644 --- a/java/test/testfiles/JUnit-TestH5Giterate.txt +++ b/java/test/testfiles/JUnit-TestH5Giterate.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5Gget_obj_info_all Time: XXXX diff --git a/java/test/testfiles/JUnit-TestH5Lbasic.txt b/java/test/testfiles/JUnit-TestH5Lbasic.txt index b9b580c2fb9..50419b942a3 100644 --- a/java/test/testfiles/JUnit-TestH5Lbasic.txt +++ b/java/test/testfiles/JUnit-TestH5Lbasic.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5Lget_info_by_idx_not_exist_name .testH5Lget_name_by_idx_not_exist .testH5Lvisit diff --git a/java/test/testfiles/JUnit-TestH5Lcreate.txt b/java/test/testfiles/JUnit-TestH5Lcreate.txt index cbd5d36c88c..aac49fb4177 100644 --- a/java/test/testfiles/JUnit-TestH5Lcreate.txt +++ b/java/test/testfiles/JUnit-TestH5Lcreate.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5Lget_info_by_idx_n0_create .testH5Ldelete_soft_link_dangle .testH5Lget_value_by_idx_external_create diff --git a/java/test/testfiles/JUnit-TestH5Lparams.txt b/java/test/testfiles/JUnit-TestH5Lparams.txt index a22741c360a..33b2161b621 100644 --- a/java/test/testfiles/JUnit-TestH5Lparams.txt +++ b/java/test/testfiles/JUnit-TestH5Lparams.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5Lcopy_invalid .testH5Lget_value_by_idx_null .testH5Lcreate_external_invalid diff --git a/java/test/testfiles/JUnit-TestH5Obasic.txt b/java/test/testfiles/JUnit-TestH5Obasic.txt index c39c01d4937..6aaa4b45e3a 100644 --- a/java/test/testfiles/JUnit-TestH5Obasic.txt +++ b/java/test/testfiles/JUnit-TestH5Obasic.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5Oexists_by_name .testH5Oget_native_info_dataset .testH5Oopen_by_token diff --git a/java/test/testfiles/JUnit-TestH5Ocopy.txt b/java/test/testfiles/JUnit-TestH5Ocopy.txt index 7f66410e109..a070bbcb979 100644 --- a/java/test/testfiles/JUnit-TestH5Ocopy.txt +++ b/java/test/testfiles/JUnit-TestH5Ocopy.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5OcopyRefsDatasettosameFile .testH5OcopyNullRef .testH5OcopyRefsDatasettodiffFile diff --git a/java/test/testfiles/JUnit-TestH5OcopyOld.txt b/java/test/testfiles/JUnit-TestH5OcopyOld.txt index 7f66410e109..a070bbcb979 100644 --- a/java/test/testfiles/JUnit-TestH5OcopyOld.txt +++ b/java/test/testfiles/JUnit-TestH5OcopyOld.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5OcopyRefsDatasettosameFile .testH5OcopyNullRef .testH5OcopyRefsDatasettodiffFile diff --git a/java/test/testfiles/JUnit-TestH5Ocreate.txt b/java/test/testfiles/JUnit-TestH5Ocreate.txt index 5bc9e077222..ad1a31f8da5 100644 --- a/java/test/testfiles/JUnit-TestH5Ocreate.txt +++ b/java/test/testfiles/JUnit-TestH5Ocreate.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5Oget_info_by_idx_n0_create .testH5Oget_info_softlink_dangle .testH5Oget_info_softlink diff --git a/java/test/testfiles/JUnit-TestH5Oparams.txt b/java/test/testfiles/JUnit-TestH5Oparams.txt index b756bcf784c..1a6533f8275 100644 --- a/java/test/testfiles/JUnit-TestH5Oparams.txt +++ b/java/test/testfiles/JUnit-TestH5Oparams.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5Oget_comment_by_name_null .testH5Oget_native_info_by_name_invalid .testH5Ovisit_by_name_nullname diff --git a/java/test/testfiles/JUnit-TestH5P.txt b/java/test/testfiles/JUnit-TestH5P.txt index 01acadd200f..429a83a8bbb 100644 --- a/java/test/testfiles/JUnit-TestH5P.txt +++ b/java/test/testfiles/JUnit-TestH5P.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5Pset_nbit .testH5Pset_shared_mesg_index_InvalidFlag .testH5Pset_shared_mesg_phase_change diff --git a/java/test/testfiles/JUnit-TestH5PData.txt b/java/test/testfiles/JUnit-TestH5PData.txt index 6356d69997c..5ae27f26a6f 100644 --- a/java/test/testfiles/JUnit-TestH5PData.txt +++ b/java/test/testfiles/JUnit-TestH5PData.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5P_buffer .testH5Pdata_transform diff --git a/java/test/testfiles/JUnit-TestH5PL.txt b/java/test/testfiles/JUnit-TestH5PL.txt index fb78bb534ec..fa848300f9e 100644 --- a/java/test/testfiles/JUnit-TestH5PL.txt +++ b/java/test/testfiles/JUnit-TestH5PL.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .TestH5PLplugins .TestH5PLpaths diff --git a/java/test/testfiles/JUnit-TestH5Pfapl.txt b/java/test/testfiles/JUnit-TestH5Pfapl.txt index c34ac1c28de..d48e89f19ea 100644 --- a/java/test/testfiles/JUnit-TestH5Pfapl.txt +++ b/java/test/testfiles/JUnit-TestH5Pfapl.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5P_elink_fapl .testH5P_fapl_direct .testH5P_alignment diff --git a/java/test/testfiles/JUnit-TestH5Pfaplhdfs.txt b/java/test/testfiles/JUnit-TestH5Pfaplhdfs.txt index 47a00a4eb92..7c66937697f 100644 --- a/java/test/testfiles/JUnit-TestH5Pfaplhdfs.txt +++ b/java/test/testfiles/JUnit-TestH5Pfaplhdfs.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5Pget_fapl_hdfs_invalid_fapl_id .testH5Pget_fapl_hdfs_fapl_id_of_wrong_driver_type .testHDFS_fapl diff --git a/java/test/testfiles/JUnit-TestH5Pfapls3.txt b/java/test/testfiles/JUnit-TestH5Pfapls3.txt index 3f46342cca4..232ff961a6d 100644 --- a/java/test/testfiles/JUnit-TestH5Pfapls3.txt +++ b/java/test/testfiles/JUnit-TestH5Pfapls3.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5Pset_fapl_ros3_specified .testH5Pset_fapl_ros3 .testH5Pget_fapl_ros3_invalid_fapl_id diff --git a/java/test/testfiles/JUnit-TestH5Plist.txt b/java/test/testfiles/JUnit-TestH5Plist.txt index ed9843a9a2e..037615a86f7 100644 --- a/java/test/testfiles/JUnit-TestH5Plist.txt +++ b/java/test/testfiles/JUnit-TestH5Plist.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5P_genprop_basic_class .testH5P_genprop_class_iter .testH5P_genprop_basic_class_prop diff --git a/java/test/testfiles/JUnit-TestH5Pvirtual.txt b/java/test/testfiles/JUnit-TestH5Pvirtual.txt index e57f6832d8b..1c90ecf5517 100644 --- a/java/test/testfiles/JUnit-TestH5Pvirtual.txt +++ b/java/test/testfiles/JUnit-TestH5Pvirtual.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5Pget_source_datasetname .testH5Pvirtual_storage .testH5Pget_selection_source_dataset diff --git a/java/test/testfiles/JUnit-TestH5R.txt b/java/test/testfiles/JUnit-TestH5R.txt index 2420d62cd96..728adfa692b 100644 --- a/java/test/testfiles/JUnit-TestH5R.txt +++ b/java/test/testfiles/JUnit-TestH5R.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5Ropen_attr_Nullref .testH5Rget_attr_name_Nullref .testH5Ropen_region_Nullref diff --git a/java/test/testfiles/JUnit-TestH5Rref.txt b/java/test/testfiles/JUnit-TestH5Rref.txt index 05019c03561..7695c9231af 100644 --- a/java/test/testfiles/JUnit-TestH5Rref.txt +++ b/java/test/testfiles/JUnit-TestH5Rref.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5Rget_region_dataset .testH5Rget_object .testH5Rget_region_attribute diff --git a/java/test/testfiles/JUnit-TestH5S.txt b/java/test/testfiles/JUnit-TestH5S.txt index 6bde487845b..2a177179a05 100644 --- a/java/test/testfiles/JUnit-TestH5S.txt +++ b/java/test/testfiles/JUnit-TestH5S.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5Sget_select_npoints .testH5Sget_select_type .testH5Sset_extent_simple diff --git a/java/test/testfiles/JUnit-TestH5Sbasic.txt b/java/test/testfiles/JUnit-TestH5Sbasic.txt index 34224429f3f..459f2b1accd 100644 --- a/java/test/testfiles/JUnit-TestH5Sbasic.txt +++ b/java/test/testfiles/JUnit-TestH5Sbasic.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5Sclose_invalid .testH5Screate_simple_max_default .testH5Screate_simple_dims_null diff --git a/java/test/testfiles/JUnit-TestH5T.txt b/java/test/testfiles/JUnit-TestH5T.txt index 446adcb63bd..06e7a9cbb5b 100644 --- a/java/test/testfiles/JUnit-TestH5T.txt +++ b/java/test/testfiles/JUnit-TestH5T.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5Tvlen_create .testH5Tenum_create_functions .testH5Tenum_functions diff --git a/java/test/testfiles/JUnit-TestH5Tbasic.txt b/java/test/testfiles/JUnit-TestH5Tbasic.txt index 131c4f58677..9023a4f702e 100644 --- a/java/test/testfiles/JUnit-TestH5Tbasic.txt +++ b/java/test/testfiles/JUnit-TestH5Tbasic.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5Tequal_not .testH5Tcopy .testH5Tequal diff --git a/java/test/testfiles/JUnit-TestH5Tparams.txt b/java/test/testfiles/JUnit-TestH5Tparams.txt index 9f725ac0386..fba219dd235 100644 --- a/java/test/testfiles/JUnit-TestH5Tparams.txt +++ b/java/test/testfiles/JUnit-TestH5Tparams.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5Tget_member_type_invalid .testH5Treclaim_invalid .testH5Tenum_insert_null diff --git a/java/test/testfiles/JUnit-TestH5VL.txt b/java/test/testfiles/JUnit-TestH5VL.txt index ff949693535..7e05fd79e0a 100644 --- a/java/test/testfiles/JUnit-TestH5VL.txt +++ b/java/test/testfiles/JUnit-TestH5VL.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5VLget_connector_id_by_name .testH5VLget_connector_id_by_value .testH5VLget_connector_id diff --git a/java/test/testfiles/JUnit-TestH5Z.txt b/java/test/testfiles/JUnit-TestH5Z.txt index 63fc2277f42..c299507145e 100644 --- a/java/test/testfiles/JUnit-TestH5Z.txt +++ b/java/test/testfiles/JUnit-TestH5Z.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5Zfilter_avail .testH5Zunregister_predefined .testH5Zget_filter_info diff --git a/release_docs/INSTALL_CMake.txt b/release_docs/INSTALL_CMake.txt index d36e80e1027..553030f6cba 100644 --- a/release_docs/INSTALL_CMake.txt +++ b/release_docs/INSTALL_CMake.txt @@ -283,11 +283,11 @@ IV. Further considerations A. Download the binary packages and install them in a central location. For example on Windows, create a folder extlibs and install the packages there. Add the following CMake options: - -DZLIB_LIBRARY:FILEPATH=some_location/lib/zlib.lib - -DZLIB_INCLUDE_DIR:PATH=some_location/include + -DH5_ZLIB_LIBRARY:FILEPATH=some_location/lib/zlib.lib + -DH5_ZLIB_INCLUDE_DIR:PATH=some_location/include -DZLIB_USE_EXTERNAL:BOOL=OFF - -DSZIP_LIBRARY:FILEPATH=some_location/lib/szlib.lib - -DSZIP_INCLUDE_DIR:PATH=some_location/include + -DH5_SZIP_LIBRARY:FILEPATH=some_location/lib/szlib.lib + -DH5_SZIP_INCLUDE_DIR:PATH=some_location/include -DSZIP_USE_EXTERNAL:BOOL=OFF where "some_location" is the full path to the extlibs folder. Also the appropriate environment variable must be set; @@ -499,10 +499,10 @@ These five steps are described in detail below. * Visual Studio 17 2022 is: - * SZIP_INCLUDE_DIR:PATH= - * SZIP_LIBRARY:FILEPATH= - * ZLIB_INCLUDE_DIR:PATH= - * ZLIB_LIBRARY:FILEPATH= + * H5_SZIP_INCLUDE_DIR:PATH= + * H5_SZIP_LIBRARY:FILEPATH= + * H5_ZLIB_INCLUDE_DIR:PATH= + * H5_ZLIB_LIBRARY:FILEPATH= * :BOOL=[ON | OFF] is: @@ -574,6 +574,14 @@ These five steps are described in detail below. set (BLOSC_ZLIB_TGZ_NAME "zlib-1.3.tar.gz" CACHE STRING "Use ZLib from compressed file" FORCE) set (BLOSC_ZLIB_PACKAGE_NAME "zlib" CACHE STRING "Name of BLOSC_ZLIB package" FORCE) ######## + # blosc2 + ######## + set (BLOSC2_GIT_URL "https://github.com/Blosc/c-blosc2.git" CACHE STRING "Use BLOSC2 from Github repository" FORCE) + set (BLOSC2_GIT_BRANCH "main" CACHE STRING "" FORCE) + set (BLOSC2_TGZ_ORIGPATH "https://github.com/Blosc/c-blosc2/archive/refs/tags" CACHE STRING "Use PLUGINS from original location" FORCE) + set (BLOSC2_TGZ_NAME "c-blosc2-2.14.4.tar.gz" CACHE STRING "Use BLOSC2 from compressed file" FORCE) + set (BLOSC2_PACKAGE_NAME "blosc2" CACHE STRING "Name of BLOSC2 package" FORCE) + ######## # bzip2 ######## set (BZ2_GIT_URL "https://github.com/libarchive/bzip2.git" CACHE STRING "Use BZ2 from GitHub repository" FORCE) @@ -918,19 +926,19 @@ HDF5_ENABLE_PLUGIN_SUPPORT "Enable PLUGIN Filters" OFF HDF5_ENABLE_SZIP_SUPPORT "Use SZip Filter" OFF HDF5_ENABLE_Z_LIB_SUPPORT "Enable Zlib Filters" ON -ZLIB_USE_EXTERNAL "Use External Library Building for ZLIB" OFF +ZLIB_USE_EXTERNAL "Use External Library Building for ZLIB else search" OFF ZLIB_TGZ_ORIGPATH "Use ZLIB from original location" "https://github.com/madler/zlib/releases/download/v1.2.13" ZLIB_TGZ_NAME "Use ZLIB from original compressed file" "zlib-1.2.13.tar.gz" ZLIB_USE_LOCALCONTENT "Use local file for ZLIB FetchContent" ON -SZIP_USE_EXTERNAL "Use External Library Building for SZIP" OFF +SZIP_USE_EXTERNAL "Use External Library Building for SZIP else search" OFF if (HDF5_ENABLE_SZIP_SUPPORT) HDF5_ENABLE_SZIP_ENCODING "Use SZip Encoding" ON LIBAEC_TGZ_ORIGPATH "Use LIBAEC from original location" "https://github.com/MathisRosenhauer/libaec/releases/download/v1.0.6" LIBAEC_TGZ_NAME "Use LIBAEC from original compressed file" "libaec-1.0.6.tar.gz" LIBAEC_USE_LOCALCONTENT "Use local file for LIBAEC FetchContent" ON -PLUGIN_USE_EXTERNAL "Use External Library Building for PLUGINS" OFF +PLUGIN_USE_EXTERNAL "Use External Library Building for PLUGINS else search" OFF if (WINDOWS) H5_DEFAULT_PLUGINDIR "%ALLUSERSPROFILE%/hdf5/lib/plugin" else () diff --git a/release_docs/RELEASE.txt b/release_docs/RELEASE.txt index 0108f235722..c0237ab9e85 100644 --- a/release_docs/RELEASE.txt +++ b/release_docs/RELEASE.txt @@ -502,6 +502,23 @@ Bug Fixes since HDF5-1.14.4 release =================================== Library ------- + - Fixed a leak of datatype IDs created internally during datatype conversion + + Fixed an issue where the library could leak IDs that it creates internally + for compound datatype members during datatype conversion. When the library's + table of datatype conversion functions is modified (such as when a new + conversion function is registered with the library from within an application), + the compound datatype conversion function has to recalculate data that it + has cached. When recalculating that data, the library was registering new + IDs for each of the members of the source and destination compound datatypes + involved in the conversion process and was overwriting the old cached IDs + without first closing them. This would result in use-after-free issues due + to multiple IDs pointing to the same internal H5T_t structure, as well as + crashes due to the library not gracefully handling partially initialized or + partially freed datatypes on library termination. + + Fixes h5py GitHub #2419 + - Fixed function H5Requal actually to compare the reference pointers Fixed an issue with H5Requal always returning true because the @@ -1019,6 +1036,22 @@ Bug Fixes since HDF5-1.14.4 release Configuration ------------- + - Fixed/reverted an Autotools configure hack that causes problems on MacOS + + A sed line in configure.ac was added in the past to paper over some + problems with older versions of the Autotools that would add incorrect + linker flags. This used the -i option in a way that caused silent + errors on MacOS that did not break the build. + + The original fix for this problem (in 1.14.4) removed the sed line + entirely, but it turns out that the sed cleanup is still necessary + on some systems, where empty -l options will be added to the libtool + script. + + This sed line has been restored and reworked to not use -i. + + Fixes GitHub issues #3843 and #4448 + - Fixed a list index out of range issue in the runTest.cmake file Fixed an issue in config/cmake/runTest.cmake where the CMake logic @@ -1046,16 +1079,6 @@ Bug Fixes since HDF5-1.14.4 release * HDF5_ENABLE_DOXY_WARNINGS: ON/OFF (Default: OFF) * --enable-doxygen-errors: enable/disable (Default: disable) - - Removed an Autotools configure hack that causes problems on MacOS - - A sed line in configure.ac was added in the past to paper over some - problems with older versions of the Autotools that would add incorrect - linker flags. This hack is not needed with recent versions of the - Autotools and the sed line errors on MacOS (though this was a silent - error that didn't break the build) so the hack has been removed. - - Fixes GitHub issue #3843 - - Fixed an issue where the h5tools_test_utils test program was being installed on the system for Autotools builds of HDF5 diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 8ff62e8c9f9..f1b77ec1da8 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -870,6 +870,8 @@ set (H5_PRIVATE_HEADERS ${HDF5_SRC_DIR}/H5Edefin.h ${HDF5_SRC_DIR}/H5Einit.h + ${HDF5_SRC_DIR}/H5Emajdef.h + ${HDF5_SRC_DIR}/H5Emindef.h ${HDF5_SRC_DIR}/H5Epkg.h ${HDF5_SRC_DIR}/H5Eprivate.h ${HDF5_SRC_DIR}/H5Eterm.h diff --git a/src/H5Adense.c b/src/H5Adense.c index 48004d2aa70..52a6244d7be 100644 --- a/src/H5Adense.c +++ b/src/H5Adense.c @@ -839,6 +839,7 @@ H5A__dense_rename(H5F_t *f, const H5O_ainfo_t *ainfo, const char *old_name, cons htri_t attr_sharable; /* Flag indicating attributes are shareable */ htri_t shared_mesg; /* Should this message be stored in the Shared Message table? */ bool attr_exists; /* Attribute exists in v2 B-tree */ + H5O_ainfo_t tainfo = *ainfo; /* Copy of ainfo */ herr_t ret_value = SUCCEED; /* Return value */ FUNC_ENTER_PACKAGE @@ -977,8 +978,12 @@ H5A__dense_rename(H5F_t *f, const H5O_ainfo_t *ainfo, const char *old_name, cons else if (shared_mesg < 0) HGOTO_ERROR(H5E_ATTR, H5E_WRITEERROR, FAIL, "error determining if message should be shared"); - /* Delete old attribute from dense storage */ - if (H5A__dense_remove(f, ainfo, old_name) < 0) + /* Deactivate the field so that H5A__dense_remove() won't delete the new renamed attribute + that was just added to the creation order index v2 B-tree via H5A__dense_insert() */ + tainfo.corder_bt2_addr = HADDR_UNDEF; + + /* Only delete the old attribute (before rename) from the name index v2 B-tree */ + if (H5A__dense_remove(f, (const H5O_ainfo_t *)&tainfo, old_name) < 0) HGOTO_ERROR(H5E_ATTR, H5E_CANTDELETE, FAIL, "unable to delete attribute in dense storage"); done: diff --git a/src/H5Apublic.h b/src/H5Apublic.h index 7960efd546b..256d19cf355 100644 --- a/src/H5Apublic.h +++ b/src/H5Apublic.h @@ -115,7 +115,7 @@ H5_DLL herr_t H5Aclose_async(hid_t attr_id, hid_t es_id); * \acpl_id * \aapl_id * - * \return \hid_tv{attribute} + * \return \hid_ti{attribute} * * \details H5Acreate2() creates an attribute, \p attr_name, which is attached * to the object specified by the identifier \p loc_id. @@ -173,7 +173,7 @@ H5_DLL hid_t H5Acreate_async(hid_t loc_id, const char *attr_name, hid_t type_id * \aapl_id * \lapl_id * - * \return \hid_tv{attribute} + * \return \hid_ti{attribute} * * \details H5Acreate_by_name() creates an attribute, \p attr_name, which is * attached to the object specified by \p loc_id and \p obj_name. @@ -389,7 +389,7 @@ H5_DLL herr_t H5Aexists_by_name_async(hid_t loc_id, const char *obj_name, const * * \attr_id * - * \return \hid_tv{attribute's creation property list} + * \return \hid_ti{attribute's creation property list} * * \details H5Aget_create_plist() returns an identifier for the attribute * creation property list associated with the attribute specified @@ -567,7 +567,7 @@ H5_DLL ssize_t H5Aget_name_by_idx(hid_t loc_id, const char *obj_name, H5_index_t * * \attr_id * - * \return \hid_tv{attribute dataspace} + * \return \hid_ti{attribute dataspace} * * \details H5Aget_space() retrieves a copy of the dataspace for an * attribute. The dataspace identifier returned from this @@ -747,7 +747,7 @@ H5_DLL herr_t H5Aiterate_by_name(hid_t loc_id, const char *obj_name, H5_index_t * \param[in] attr_name Name of attribute to open * \aapl_id * - * \return \hid_tv{attribute} + * \return \hid_ti{attribute} * * \details H5Aopen() opens an existing attribute, \p attr_name, that is * attached to the object specified by an object identifier, \p obj_id. @@ -795,7 +795,7 @@ H5_DLL hid_t H5Aopen_async(hid_t obj_id, const char *attr_name, hid_t aapl_id, * \aapl_id * \lapl_id * - * \return \hid_tv{attribute} + * \return \hid_ti{attribute} * * \details H5Aopen_by_idx() opens an existing attribute that is attached * to an object specified by location and name, \p loc_id and @@ -850,7 +850,7 @@ H5_DLL hid_t H5Aopen_by_idx_async(hid_t loc_id, const char *obj_name, H5_index_ * \aapl_id * \lapl_id * - * \return \hid_tv{attribute} + * \return \hid_ti{attribute} * * \details H5Aopen_by_name() opens an existing attribute, \p attr_name, * that is attached to an object specified by location and name, @@ -1128,7 +1128,7 @@ typedef herr_t (*H5A_operator1_t)(hid_t location_id /*in*/, const char *attr_nam * \space_id * \acpl_id * - * \return \hid_tv{attribute} + * \return \hid_ti{attribute} * * \deprecation_note{H5Acreate2()} * @@ -1215,7 +1215,7 @@ H5_DLL herr_t H5Aiterate1(hid_t loc_id, unsigned *idx, H5A_operator1_t op, void * \loc_id * \param[in] idx Index of the attribute to open * - * \return \hid_tv{attribute} + * \return \hid_ti{attribute} * * \deprecation_note{H5Aopen_by_idx()} * @@ -1241,7 +1241,7 @@ H5_DLL hid_t H5Aopen_idx(hid_t loc_id, unsigned idx); * \loc_id * \param[in] name Attribute name * - * \return \hid_tv{attribute} + * \return \hid_ti{attribute} * * \deprecation_note{H5Aopen_by_name()} * diff --git a/src/H5D.c b/src/H5D.c index d15c4fa2dcd..d014d27cacb 100644 --- a/src/H5D.c +++ b/src/H5D.c @@ -2137,7 +2137,7 @@ H5Dformat_convert(hid_t dset_id) /* Convert the dataset */ if (H5VL_dataset_optional(vol_obj, &vol_cb_args, H5P_DATASET_XFER_DEFAULT, H5_REQUEST_NULL) < 0) - HGOTO_ERROR(H5E_DATASET, H5E_INTERNAL, FAIL, "can't convert dataset format"); + HGOTO_ERROR(H5E_DATASET, H5E_CANTUPDATE, FAIL, "can't convert dataset format"); done: FUNC_LEAVE_API(ret_value) @@ -2442,7 +2442,7 @@ H5Dchunk_iter(hid_t dset_id, hid_t dxpl_id, H5D_chunk_iter_op_t op, void *op_dat /* Iterate over the chunks */ if ((ret_value = H5VL_dataset_optional(vol_obj, &vol_cb_args, dxpl_id, H5_REQUEST_NULL)) < 0) - HERROR(H5E_BADITER, H5E_BADITER, "error iterating over dataset chunks"); + HERROR(H5E_DATASET, H5E_BADITER, "error iterating over dataset chunks"); done: FUNC_LEAVE_API(ret_value) diff --git a/src/H5Dint.c b/src/H5Dint.c index 71ddda387c7..66340c8fa54 100644 --- a/src/H5Dint.c +++ b/src/H5Dint.c @@ -1495,7 +1495,7 @@ H5D_open(const H5G_loc_t *loc, hid_t dapl_id) /* Check if dataset was already open */ if (NULL == (shared_fo = (H5D_shared_t *)H5FO_opened(dataset->oloc.file, dataset->oloc.addr))) { /* Clear any errors from H5FO_opened() */ - H5E_clear_stack(NULL); + H5E_clear_stack(); /* Open the dataset object */ if (H5D__open_oid(dataset, dapl_id) < 0) diff --git a/src/H5Dmodule.h b/src/H5Dmodule.h index 27e5799968e..e791f7cf00e 100644 --- a/src/H5Dmodule.h +++ b/src/H5Dmodule.h @@ -2737,6 +2737,7 @@ allocated if necessary. * * * + * * * * diff --git a/src/H5Dvirtual.c b/src/H5Dvirtual.c index d6ab1a8836c..11874878fd7 100644 --- a/src/H5Dvirtual.c +++ b/src/H5Dvirtual.c @@ -884,7 +884,7 @@ H5D__virtual_open_source_dset(const H5D_t *vdset, H5O_storage_virtual_ent_t *vir src_file_open = true; else /* Reset the error stack */ - H5E_clear_stack(NULL); + H5E_clear_stack(); } /* end if */ else /* Source file is ".", use the virtual dataset's file */ @@ -906,7 +906,7 @@ H5D__virtual_open_source_dset(const H5D_t *vdset, H5O_storage_virtual_ent_t *vir /* Dataset does not exist */ if (NULL == source_dset->dset) { /* Reset the error stack */ - H5E_clear_stack(NULL); + H5E_clear_stack(); source_dset->dset_exists = false; } /* end if */ diff --git a/src/H5E.c b/src/H5E.c index 4f2edd78ebf..0eb256f4ad4 100644 --- a/src/H5E.c +++ b/src/H5E.c @@ -57,10 +57,6 @@ /* Local Macros */ /****************/ -/* HDF5 error class */ -#define H5E_CLS_NAME "HDF5" -#define H5E_CLS_LIB_NAME "HDF5" - /******************/ /* Local Typedefs */ /******************/ @@ -72,30 +68,13 @@ /********************/ /* Local Prototypes */ /********************/ -/* Static function declarations */ -static herr_t H5E__set_default_auto(H5E_t *stk); -static H5E_cls_t *H5E__register_class(const char *cls_name, const char *lib_name, const char *version); -static herr_t H5E__unregister_class(H5E_cls_t *cls, void **request); -static ssize_t H5E__get_class_name(const H5E_cls_t *cls, char *name, size_t size); -static int H5E__close_msg_cb(void *obj_ptr, hid_t obj_id, void *udata); -static herr_t H5E__close_msg(H5E_msg_t *err, void **request); -static H5E_msg_t *H5E__create_msg(H5E_cls_t *cls, H5E_type_t msg_type, const char *msg); -static H5E_t *H5E__get_current_stack(void); -static herr_t H5E__set_current_stack(H5E_t *estack); -static herr_t H5E__close_stack(H5E_t *err_stack, void **request); -static ssize_t H5E__get_num(const H5E_t *err_stack); -static herr_t H5E__print2(hid_t err_stack, FILE *stream); -static herr_t H5E__append_stack(H5E_t *dst_estack, const H5E_t *src_stack); /*********************/ /* Package Variables */ /*********************/ -/* First & last major and minor error codes registered by the library */ -hid_t H5E_first_maj_id_g = H5I_INVALID_HID; -hid_t H5E_last_maj_id_g = H5I_INVALID_HID; -hid_t H5E_first_min_id_g = H5I_INVALID_HID; -hid_t H5E_last_min_id_g = H5I_INVALID_HID; +/* Declare extern the free list to manage the H5E_stack_t struct */ +H5FL_EXTERN(H5E_stack_t); /*****************************/ /* Library Private Variables */ @@ -105,280 +84,6 @@ hid_t H5E_last_min_id_g = H5I_INVALID_HID; /* Local Variables */ /*******************/ -/* Declare a free list to manage the H5E_t struct */ -H5FL_DEFINE_STATIC(H5E_t); - -/* Declare a free list to manage the H5E_cls_t struct */ -H5FL_DEFINE_STATIC(H5E_cls_t); - -/* Declare a free list to manage the H5E_msg_t struct */ -H5FL_DEFINE_STATIC(H5E_msg_t); - -/* Error class ID class */ -static const H5I_class_t H5I_ERRCLS_CLS[1] = {{ - H5I_ERROR_CLASS, /* ID class value */ - 0, /* Class flags */ - 0, /* # of reserved IDs for class */ - (H5I_free_t)H5E__unregister_class /* Callback routine for closing objects of this class */ -}}; - -/* Error message ID class */ -static const H5I_class_t H5I_ERRMSG_CLS[1] = {{ - H5I_ERROR_MSG, /* ID class value */ - 0, /* Class flags */ - 0, /* # of reserved IDs for class */ - (H5I_free_t)H5E__close_msg /* Callback routine for closing objects of this class */ -}}; - -/* Error stack ID class */ -static const H5I_class_t H5I_ERRSTK_CLS[1] = {{ - H5I_ERROR_STACK, /* ID class value */ - 0, /* Class flags */ - 0, /* # of reserved IDs for class */ - (H5I_free_t)H5E__close_stack /* Callback routine for closing objects of this class */ -}}; - -/*------------------------------------------------------------------------- - * Function: H5E_init - * - * Purpose: Initialize the interface from some other layer. - * - * Return: Success: non-negative - * Failure: negative - *------------------------------------------------------------------------- - */ -herr_t -H5E_init(void) -{ - H5E_cls_t *cls; /* Pointer to error class */ - H5E_msg_t *msg; /* Pointer to new error message */ - char lib_vers[128]; /* Buffer to constructu library version within */ - herr_t ret_value = SUCCEED; /* Return value */ - - FUNC_ENTER_NOAPI(FAIL) - - /* Initialize the ID group for the error class IDs */ - if (H5I_register_type(H5I_ERRCLS_CLS) < 0) - HGOTO_ERROR(H5E_ID, H5E_CANTINIT, FAIL, "unable to initialize ID group"); - - /* Initialize the ID group for the major error IDs */ - if (H5I_register_type(H5I_ERRMSG_CLS) < 0) - HGOTO_ERROR(H5E_ID, H5E_CANTINIT, FAIL, "unable to initialize ID group"); - - /* Initialize the ID group for the error stacks */ - if (H5I_register_type(H5I_ERRSTK_CLS) < 0) - HGOTO_ERROR(H5E_ID, H5E_CANTINIT, FAIL, "unable to initialize ID group"); - -#ifndef H5_HAVE_THREADSAFE - H5E_stack_g[0].nused = 0; - H5E__set_default_auto(H5E_stack_g); -#endif /* H5_HAVE_THREADSAFE */ - - /* Allocate the HDF5 error class */ - assert(H5E_ERR_CLS_g == (-1)); - snprintf(lib_vers, sizeof(lib_vers), "%u.%u.%u%s", H5_VERS_MAJOR, H5_VERS_MINOR, H5_VERS_RELEASE, - (strlen(H5_VERS_SUBRELEASE) > 0 ? "-" H5_VERS_SUBRELEASE : "")); - if (NULL == (cls = H5E__register_class(H5E_CLS_NAME, H5E_CLS_LIB_NAME, lib_vers))) - HGOTO_ERROR(H5E_ERROR, H5E_CANTINIT, FAIL, "class initialization failed"); - if ((H5E_ERR_CLS_g = H5I_register(H5I_ERROR_CLASS, cls, false)) < 0) - HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error class"); - -/* Include the automatically generated error code initialization */ -#include "H5Einit.h" - -done: - FUNC_LEAVE_NOAPI(ret_value) -} - -/*------------------------------------------------------------------------- - * Function: H5E_term_package - * - * Purpose: Terminates the H5E interface - * - * Return: Success: Positive if anything is done that might - * affect other interfaces; zero otherwise. - * - * Failure: Negative - * - *------------------------------------------------------------------------- - */ -int -H5E_term_package(void) -{ - int n = 0; - - FUNC_ENTER_NOAPI_NOINIT_NOERR - - int64_t ncls, nmsg, nstk; - - /* Check if there are any open error stacks, classes or messages */ - ncls = H5I_nmembers(H5I_ERROR_CLASS); - nmsg = H5I_nmembers(H5I_ERROR_MSG); - nstk = H5I_nmembers(H5I_ERROR_STACK); - - if ((ncls + nmsg + nstk) > 0) { - /* Clear the default error stack. Note that - * the following H5I_clear_type calls do not - * force the clears and will not be able to - * clear any error message IDs that are still - * in use by the default error stack unless we - * clear that stack manually. - * - * Error message IDs will typically still be - * in use by the default error stack when the - * application does H5E_BEGIN/END_TRY cleanup - * at the very end. - */ - H5E_clear_stack(NULL); - - /* Clear any outstanding error stacks */ - if (nstk > 0) - (void)H5I_clear_type(H5I_ERROR_STACK, false, false); - - /* Clear all the error classes */ - if (ncls > 0) { - (void)H5I_clear_type(H5I_ERROR_CLASS, false, false); - - /* Reset the HDF5 error class, if its been closed */ - if (H5I_nmembers(H5I_ERROR_CLASS) == 0) - H5E_ERR_CLS_g = -1; - } /* end if */ - - /* Clear all the error messages */ - if (nmsg > 0) { - (void)H5I_clear_type(H5I_ERROR_MSG, false, false); - - /* Reset the HDF5 error messages, if they've been closed */ - if (H5I_nmembers(H5I_ERROR_MSG) == 0) { -/* Include the automatically generated error code termination */ -#include "H5Eterm.h" - } /* end if */ - } /* end if */ - - n++; /*H5I*/ - } /* end if */ - else { - /* Destroy the error class, message, and stack id groups */ - n += (H5I_dec_type_ref(H5I_ERROR_STACK) > 0); - n += (H5I_dec_type_ref(H5I_ERROR_CLASS) > 0); - n += (H5I_dec_type_ref(H5I_ERROR_MSG) > 0); - - } /* end else */ - - FUNC_LEAVE_NOAPI(n) -} /* end H5E_term_package() */ - -/*-------------------------------------------------------------------------- - * Function: H5E__set_default_auto - * - * Purpose: Initialize "automatic" error stack reporting info to library - * default - * - * Return: SUCCEED/FAIL - * - *-------------------------------------------------------------------------- - */ -static herr_t -H5E__set_default_auto(H5E_t *stk) -{ - FUNC_ENTER_PACKAGE_NOERR - -#ifndef H5_NO_DEPRECATED_SYMBOLS -#ifdef H5_USE_16_API_DEFAULT - stk->auto_op.vers = 1; -#else /* H5_USE_16_API */ - stk->auto_op.vers = 2; -#endif /* H5_USE_16_API_DEFAULT */ - - stk->auto_op.func1 = stk->auto_op.func1_default = (H5E_auto1_t)H5Eprint1; - stk->auto_op.func2 = stk->auto_op.func2_default = (H5E_auto2_t)H5E__print2; - stk->auto_op.is_default = true; -#else /* H5_NO_DEPRECATED_SYMBOLS */ - stk->auto_op.func2 = (H5E_auto2_t)H5E__print2; -#endif /* H5_NO_DEPRECATED_SYMBOLS */ - - stk->auto_data = NULL; - - FUNC_LEAVE_NOAPI(SUCCEED) -} /* end H5E__set_default_auto() */ - -#ifdef H5_HAVE_THREADSAFE -/*------------------------------------------------------------------------- - * Function: H5E__get_stack - * - * Purpose: Support function for H5E__get_my_stack() to initialize and - * acquire per-thread error stack. - * - * Return: Success: Pointer to an error stack struct (H5E_t *) - * - * Failure: NULL - * - *------------------------------------------------------------------------- - */ -H5E_t * -H5E__get_stack(void) -{ - H5E_t *estack = NULL; - - FUNC_ENTER_PACKAGE_NOERR - - estack = (H5E_t *)H5TS_get_thread_local_value(H5TS_errstk_key_g); - - if (!estack) { - /* No associated value with current thread - create one */ -#ifdef H5_HAVE_WIN_THREADS - /* Win32 has to use LocalAlloc to match the LocalFree in DllMain */ - estack = (H5E_t *)LocalAlloc(LPTR, sizeof(H5E_t)); -#else - /* Use malloc here since this has to match the free in the - * destructor and we want to avoid the codestack there. - */ - estack = (H5E_t *)malloc(sizeof(H5E_t)); -#endif /* H5_HAVE_WIN_THREADS */ - assert(estack); - - /* Set the thread-specific info */ - estack->nused = 0; - H5E__set_default_auto(estack); - - /* (It's not necessary to release this in this API, it is - * released by the "key destructor" set up in the H5TS - * routines. See calls to pthread_key_create() in H5TS.c -QAK) - */ - H5TS_set_thread_local_value(H5TS_errstk_key_g, (void *)estack); - } /* end if */ - - /* Set return value */ - FUNC_LEAVE_NOAPI(estack) -} /* end H5E__get_stack() */ -#endif /* H5_HAVE_THREADSAFE */ - -/*------------------------------------------------------------------------- - * Function: H5E__free_class - * - * Purpose: Private function to free an error class. - * - * Return: SUCCEED/FAIL - * - *------------------------------------------------------------------------- - */ -static herr_t -H5E__free_class(H5E_cls_t *cls) -{ - FUNC_ENTER_PACKAGE_NOERR - - /* Check arguments */ - assert(cls); - - /* Free error class structure */ - cls->cls_name = (char *)H5MM_xfree((void *)cls->cls_name); - cls->lib_name = (char *)H5MM_xfree((void *)cls->lib_name); - cls->lib_vers = (char *)H5MM_xfree((void *)cls->lib_vers); - cls = H5FL_FREE(H5E_cls_t, cls); - - FUNC_LEAVE_NOAPI(SUCCEED) -} /* end H5E__free_class() */ - /*------------------------------------------------------------------------- * Function: H5Eregister_class * @@ -413,52 +118,6 @@ H5Eregister_class(const char *cls_name, const char *lib_name, const char *versio FUNC_LEAVE_API(ret_value) } /* end H5Eregister_class() */ -/*------------------------------------------------------------------------- - * Function: H5E__register_class - * - * Purpose: Private function to register an error class. - * - * Return: Success: Pointer to an error class struct - * Failure: NULL - * - *------------------------------------------------------------------------- - */ -static H5E_cls_t * -H5E__register_class(const char *cls_name, const char *lib_name, const char *version) -{ - H5E_cls_t *cls = NULL; /* Pointer to error class */ - H5E_cls_t *ret_value = NULL; /* Return value */ - - FUNC_ENTER_PACKAGE - - /* Check arguments */ - assert(cls_name); - assert(lib_name); - assert(version); - - /* Allocate space for new error class */ - if (NULL == (cls = H5FL_CALLOC(H5E_cls_t))) - HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed"); - - /* Duplicate string information */ - if (NULL == (cls->cls_name = strdup(cls_name))) - HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed"); - if (NULL == (cls->lib_name = strdup(lib_name))) - HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed"); - if (NULL == (cls->lib_vers = strdup(version))) - HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed"); - - /* Set the return value */ - ret_value = cls; - -done: - if (!ret_value) - if (cls && H5E__free_class(cls) < 0) - HDONE_ERROR(H5E_ERROR, H5E_CANTRELEASE, NULL, "unable to free error class"); - - FUNC_LEAVE_NOAPI(ret_value) -} /* end H5E__register_class() */ - /*------------------------------------------------------------------------- * Function: H5Eunregister_class * @@ -490,37 +149,6 @@ H5Eunregister_class(hid_t class_id) FUNC_LEAVE_API(ret_value) } /* end H5Eunregister_class() */ -/*------------------------------------------------------------------------- - * Function: H5E__unregister_class - * - * Purpose: Private function to close an error class. - * - * Return: SUCCEED/FAIL - * - *------------------------------------------------------------------------- - */ -static herr_t -H5E__unregister_class(H5E_cls_t *cls, void H5_ATTR_UNUSED **request) -{ - herr_t ret_value = SUCCEED; /* Return value */ - - FUNC_ENTER_PACKAGE - - /* Check arguments */ - assert(cls); - - /* Iterate over all the messages and delete those in this error class */ - if (H5I_iterate(H5I_ERROR_MSG, H5E__close_msg_cb, cls, false) < 0) - HGOTO_ERROR(H5E_ERROR, H5E_BADITER, FAIL, "unable to free all messages in this error class"); - - /* Free error class structure */ - if (H5E__free_class(cls) < 0) - HGOTO_ERROR(H5E_ERROR, H5E_CANTRELEASE, FAIL, "unable to free error class"); - -done: - FUNC_LEAVE_NOAPI(ret_value) -} /* end H5E__unregister_class() */ - /*------------------------------------------------------------------------- * Function: H5Eget_class_name * @@ -551,75 +179,6 @@ H5Eget_class_name(hid_t class_id, char *name /*out*/, size_t size) FUNC_LEAVE_API(ret_value) } /* end H5Eget_class_name() */ -/*------------------------------------------------------------------------- - * Function: H5E__get_class_name - * - * Purpose: Private function to retrieve error class name. - * - * Return: Success: Name length (zero means no name) - * Failure: -1 - * - *------------------------------------------------------------------------- - */ -static ssize_t -H5E__get_class_name(const H5E_cls_t *cls, char *name, size_t size) -{ - ssize_t len = -1; /* Length of error class's name */ - - FUNC_ENTER_PACKAGE_NOERR - - /* Check arguments */ - assert(cls); - - /* Get the class's name */ - len = (ssize_t)strlen(cls->cls_name); - - /* Set the user's buffer, if provided */ - if (name) { - strncpy(name, cls->cls_name, size); - if ((size_t)len >= size) - name[size - 1] = '\0'; - } /* end if */ - - /* Return the full length */ - FUNC_LEAVE_NOAPI(len) -} /* end H5E__get_class_name() */ - -/*------------------------------------------------------------------------- - * Function: H5E__close_msg_cb - * - * Purpose: H5I_iterate callback function to close error messages in the - * error class. - * - * Return: Success: H5_ITER_CONT (0) - * Failure: H5_ITER_ERROR (-1) - * - *------------------------------------------------------------------------- - */ -static int -H5E__close_msg_cb(void *obj_ptr, hid_t obj_id, void *udata) -{ - H5E_msg_t *err_msg = (H5E_msg_t *)obj_ptr; - H5E_cls_t *cls = (H5E_cls_t *)udata; - int ret_value = H5_ITER_CONT; /* Return value */ - - FUNC_ENTER_PACKAGE - - /* Check arguments */ - assert(err_msg); - - /* Close the message if it is in the class being closed */ - if (err_msg->cls == cls) { - if (H5E__close_msg(err_msg, NULL) < 0) - HGOTO_ERROR(H5E_ERROR, H5E_CANTCLOSEOBJ, H5_ITER_ERROR, "unable to close error message"); - if (NULL == H5I_remove(obj_id)) - HGOTO_ERROR(H5E_ERROR, H5E_CANTREMOVE, H5_ITER_ERROR, "unable to remove error message"); - } /* end if */ - -done: - FUNC_LEAVE_NOAPI(ret_value) -} /* end H5E__close_msg_cb() */ - /*------------------------------------------------------------------------- * Function: H5Eclose_msg * @@ -648,31 +207,6 @@ H5Eclose_msg(hid_t err_id) FUNC_LEAVE_API(ret_value) } /* end H5Eclose_msg() */ -/*------------------------------------------------------------------------- - * Function: H5E__close_msg - * - * Purpose: Private function to close an error message. - * - * Return: SUCCEED/FAIL - * - *------------------------------------------------------------------------- - */ -static herr_t -H5E__close_msg(H5E_msg_t *err, void H5_ATTR_UNUSED **request) -{ - FUNC_ENTER_PACKAGE_NOERR - - /* Check arguments */ - assert(err); - - /* Release message */ - err->msg = (char *)H5MM_xfree((void *)err->msg); - /* Don't free err->cls here */ - err = H5FL_FREE(H5E_msg_t, err); - - FUNC_LEAVE_NOAPI(SUCCEED) -} /* end H5E__close_msg() */ - /*------------------------------------------------------------------------- * Function: H5Ecreate_msg * @@ -714,50 +248,6 @@ H5Ecreate_msg(hid_t class_id, H5E_type_t msg_type, const char *msg_str) FUNC_LEAVE_API(ret_value) } /* end H5Ecreate_msg() */ -/*------------------------------------------------------------------------- - * Function: H5E__create_msg - * - * Purpose: Private function to create a major or minor error. - * - * Return: Success: Pointer to a message struct - * Failure: NULL - * - *------------------------------------------------------------------------- - */ -static H5E_msg_t * -H5E__create_msg(H5E_cls_t *cls, H5E_type_t msg_type, const char *msg_str) -{ - H5E_msg_t *msg = NULL; /* Pointer to new error message */ - H5E_msg_t *ret_value = NULL; /* Return value */ - - FUNC_ENTER_PACKAGE - - /* Check arguments */ - assert(cls); - assert(msg_type == H5E_MAJOR || msg_type == H5E_MINOR); - assert(msg_str); - - /* Allocate new message object */ - if (NULL == (msg = H5FL_MALLOC(H5E_msg_t))) - HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed"); - - /* Fill new message object */ - msg->cls = cls; - msg->type = msg_type; - if (NULL == (msg->msg = strdup(msg_str))) - HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed"); - - /* Set return value */ - ret_value = msg; - -done: - if (!ret_value) - if (msg && H5E__close_msg(msg, NULL) < 0) - HDONE_ERROR(H5E_ERROR, H5E_CANTCLOSEOBJ, NULL, "unable to close error message"); - - FUNC_LEAVE_NOAPI(ret_value) -} /* end H5E__create_msg() */ - /*------------------------------------------------------------------------- * Function: H5Eget_msg * @@ -801,13 +291,13 @@ H5Eget_msg(hid_t msg_id, H5E_type_t *type /*out*/, char *msg_str /*out*/, size_t hid_t H5Ecreate_stack(void) { - H5E_t *stk; /* Error stack */ - hid_t ret_value = H5I_INVALID_HID; /* Return value */ + H5E_stack_t *stk; /* Error stack */ + hid_t ret_value = H5I_INVALID_HID; /* Return value */ FUNC_ENTER_API(H5I_INVALID_HID) /* Allocate a new error stack */ - if (NULL == (stk = H5FL_CALLOC(H5E_t))) + if (NULL == (stk = H5FL_CALLOC(H5E_stack_t))) HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, H5I_INVALID_HID, "memory allocation failed"); /* Set the "automatic" error reporting info to the library default */ @@ -835,8 +325,8 @@ H5Ecreate_stack(void) hid_t H5Eget_current_stack(void) { - H5E_t *stk; /* Error stack */ - hid_t ret_value = H5I_INVALID_HID; /* Return value */ + H5E_stack_t *stk; /* Error stack */ + hid_t ret_value = H5I_INVALID_HID; /* Return value */ /* Don't clear the error stack! :-) */ FUNC_ENTER_API_NOCLEAR(H5I_INVALID_HID) @@ -853,68 +343,6 @@ H5Eget_current_stack(void) FUNC_LEAVE_API(ret_value) } /* end H5Eget_current_stack() */ -/*------------------------------------------------------------------------- - * Function: H5E__get_current_stack - * - * Purpose: Private function to register an error stack. - * - * Return: Success: Pointer to an error class struct - * Failure: NULL - * - *------------------------------------------------------------------------- - */ -static H5E_t * -H5E__get_current_stack(void) -{ - H5E_t *current_stack; /* Pointer to the current error stack */ - H5E_t *estack_copy = NULL; /* Pointer to new error stack to return */ - unsigned u; /* Local index variable */ - H5E_t *ret_value = NULL; /* Return value */ - - FUNC_ENTER_PACKAGE - - /* Get a pointer to the current error stack */ - if (NULL == (current_stack = H5E__get_my_stack())) - HGOTO_ERROR(H5E_ERROR, H5E_CANTGET, NULL, "can't get current error stack"); - - /* Allocate a new error stack */ - if (NULL == (estack_copy = H5FL_CALLOC(H5E_t))) - HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed"); - - /* Make a copy of current error stack */ - estack_copy->nused = current_stack->nused; - for (u = 0; u < current_stack->nused; u++) { - H5E_error2_t *current_error, *new_error; /* Pointers to errors on each stack */ - - /* Get pointers into the current error stack location */ - current_error = &(current_stack->slot[u]); - new_error = &(estack_copy->slot[u]); - - /* Set error stack entry */ - if (H5E__set_stack_entry(new_error, current_error->file_name, current_error->func_name, - current_error->line, current_error->cls_id, current_error->maj_num, - current_error->min_num, current_error->desc) < 0) - HGOTO_ERROR(H5E_ERROR, H5E_CANTSET, NULL, "can't set error entry"); - } /* end for */ - - /* Copy the "automatic" error reporting information */ - estack_copy->auto_op = current_stack->auto_op; - estack_copy->auto_data = current_stack->auto_data; - - /* Empty current error stack */ - H5E_clear_stack(current_stack); - - /* Set the return value */ - ret_value = estack_copy; - -done: - if (ret_value == NULL) - if (estack_copy) - estack_copy = H5FL_FREE(H5E_t, estack_copy); - - FUNC_LEAVE_NOAPI(ret_value) -} /* end H5E__get_current_stack() */ - /*------------------------------------------------------------------------- * Function: H5Eset_current_stack * @@ -928,13 +356,13 @@ H5E__get_current_stack(void) herr_t H5Eset_current_stack(hid_t err_stack) { - H5E_t *estack; - herr_t ret_value = SUCCEED; /* Return value */ + H5E_stack_t *estack; + herr_t ret_value = SUCCEED; /* Return value */ FUNC_ENTER_API(FAIL) if (err_stack != H5E_DEFAULT) { - if (NULL == (estack = (H5E_t *)H5I_object_verify(err_stack, H5I_ERROR_STACK))) + if (NULL == (estack = (H5E_stack_t *)H5I_object_verify(err_stack, H5I_ERROR_STACK))) HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a error stack ID"); /* Set the current error stack */ @@ -953,54 +381,6 @@ H5Eset_current_stack(hid_t err_stack) FUNC_LEAVE_API(ret_value) } /* end H5Eset_current_stack() */ -/*------------------------------------------------------------------------- - * Function: H5E__set_current_stack - * - * Purpose: Private function to replace an error stack. - * - * Return: SUCCEED/FAIL - * - *------------------------------------------------------------------------- - */ -static herr_t -H5E__set_current_stack(H5E_t *estack) -{ - H5E_t *current_stack; /* Default error stack */ - unsigned u; /* Local index variable */ - herr_t ret_value = SUCCEED; /* Return value */ - - FUNC_ENTER_PACKAGE - - /* Sanity check */ - assert(estack); - - /* Get a pointer to the current error stack */ - if (NULL == (current_stack = H5E__get_my_stack())) - HGOTO_ERROR(H5E_ERROR, H5E_CANTGET, FAIL, "can't get current error stack"); - - /* Empty current error stack */ - H5E_clear_stack(current_stack); - - /* Copy new stack to current error stack */ - current_stack->nused = estack->nused; - for (u = 0; u < current_stack->nused; u++) { - H5E_error2_t *current_error, *new_error; /* Pointers to errors on each stack */ - - /* Get pointers into the current error stack location */ - current_error = &(current_stack->slot[u]); - new_error = &(estack->slot[u]); - - /* Set error stack entry */ - if (H5E__set_stack_entry(current_error, new_error->file_name, new_error->func_name, new_error->line, - new_error->cls_id, new_error->maj_num, new_error->min_num, - new_error->desc) < 0) - HGOTO_ERROR(H5E_ERROR, H5E_CANTSET, FAIL, "can't set error entry"); - } /* end for */ - -done: - FUNC_LEAVE_NOAPI(ret_value) -} /* end H5E__set_current_stack() */ - /*------------------------------------------------------------------------- * Function: H5Eclose_stack * @@ -1034,32 +414,6 @@ H5Eclose_stack(hid_t stack_id) FUNC_LEAVE_API(ret_value) } /* end H5Eclose_stack() */ -/*------------------------------------------------------------------------- - * Function: H5E__close_stack - * - * Purpose: Private function to close an error stack. - * - * Return: SUCCEED/FAIL - * - *------------------------------------------------------------------------- - */ -static herr_t -H5E__close_stack(H5E_t *estack, void H5_ATTR_UNUSED **request) -{ - FUNC_ENTER_PACKAGE_NOERR - - /* Sanity check */ - assert(estack); - - /* Release the stack's error information */ - H5E_clear_stack(estack); - - /* Free the stack structure */ - estack = H5FL_FREE(H5E_t, estack); - - FUNC_LEAVE_NOAPI(SUCCEED) -} /* end H5E__close_stack() */ - /*------------------------------------------------------------------------- * Function: H5Eget_num * @@ -1073,8 +427,8 @@ H5E__close_stack(H5E_t *estack, void H5_ATTR_UNUSED **request) ssize_t H5Eget_num(hid_t error_stack_id) { - H5E_t *estack; /* Error stack to operate on */ - ssize_t ret_value; /* Return value */ + H5E_stack_t *estack; /* Error stack to operate on */ + ssize_t ret_value; /* Return value */ /* Don't clear the error stack! :-) */ FUNC_ENTER_API_NOCLEAR((-1)) @@ -1086,10 +440,10 @@ H5Eget_num(hid_t error_stack_id) } /* end if */ else { /* Only clear the error stack if it's not the default stack */ - H5E_clear_stack(NULL); + H5E_clear_stack(); /* Get the error stack to operate on */ - if (NULL == (estack = (H5E_t *)H5I_object_verify(error_stack_id, H5I_ERROR_STACK))) + if (NULL == (estack = (H5E_stack_t *)H5I_object_verify(error_stack_id, H5I_ERROR_STACK))) HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, (-1), "not an error stack ID"); } /* end else */ @@ -1101,26 +455,6 @@ H5Eget_num(hid_t error_stack_id) FUNC_LEAVE_API(ret_value) } /* end H5Eget_num() */ -/*------------------------------------------------------------------------- - * Function: H5E__get_num - * - * Purpose: Private function to retrieve number of errors in error stack. - * - * Return: Success: The number of errors - * Failure: -1 (can't fail at this time) - * - *------------------------------------------------------------------------- - */ -static ssize_t -H5E__get_num(const H5E_t *estack) -{ - FUNC_ENTER_PACKAGE_NOERR - - assert(estack); - - FUNC_LEAVE_NOAPI((ssize_t)estack->nused) -} /* end H5E__get_num() */ - /*------------------------------------------------------------------------- * Function: H5Epop * @@ -1133,8 +467,8 @@ H5E__get_num(const H5E_t *estack) herr_t H5Epop(hid_t err_stack, size_t count) { - H5E_t *estack; - herr_t ret_value = SUCCEED; /* Return value */ + H5E_stack_t *estack; + herr_t ret_value = SUCCEED; /* Return value */ /* Don't clear the error stack! :-) */ FUNC_ENTER_API_NOCLEAR(FAIL) @@ -1146,10 +480,10 @@ H5Epop(hid_t err_stack, size_t count) } /* end if */ else { /* Only clear the error stack if it's not the default stack */ - H5E_clear_stack(NULL); + H5E_clear_stack(); /* Get the error stack to operate on */ - if (NULL == (estack = (H5E_t *)H5I_object_verify(err_stack, H5I_ERROR_STACK))) + if (NULL == (estack = (H5E_stack_t *)H5I_object_verify(err_stack, H5I_ERROR_STACK))) HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a error stack ID"); } /* end else */ @@ -1188,11 +522,12 @@ herr_t H5Epush2(hid_t err_stack, const char *file, const char *func, unsigned line, hid_t cls_id, hid_t maj_id, hid_t min_id, const char *fmt, ...) { - va_list ap; /* Varargs info */ - H5E_t *estack; /* Pointer to error stack to modify */ - char *tmp = NULL; /* Buffer to place formatted description in */ - bool va_started = false; /* Whether the variable argument list is open */ - herr_t ret_value = SUCCEED; /* Return value */ + H5E_stack_t *estack; /* Pointer to error stack to modify */ + va_list ap; /* Varargs info */ + bool va_started = false; /* Whether the variable argument list is open */ + const char *tmp_file; /* Copy of the file name */ + const char *tmp_func; /* Copy of the function name */ + herr_t ret_value = SUCCEED; /* Return value */ /* Don't clear the error stack! :-) */ FUNC_ENTER_API_NOCLEAR(FAIL) @@ -1201,10 +536,10 @@ H5Epush2(hid_t err_stack, const char *file, const char *func, unsigned line, hid estack = NULL; else { /* Only clear the error stack if it's not the default stack */ - H5E_clear_stack(NULL); + H5E_clear_stack(); /* Get the error stack to operate on */ - if (NULL == (estack = (H5E_t *)H5I_object_verify(err_stack, H5I_ERROR_STACK))) + if (NULL == (estack = (H5E_stack_t *)H5I_object_verify(err_stack, H5I_ERROR_STACK))) HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a error stack ID"); } /* end else */ @@ -1217,22 +552,30 @@ H5Epush2(hid_t err_stack, const char *file, const char *func, unsigned line, hid va_start(ap, fmt); va_started = true; - /* Use the vasprintf() routine, since it does what we're trying to do below */ - if (HDvasprintf(&tmp, fmt, ap) < 0) - HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "memory allocation failed"); + /* Duplicate string information */ + if (NULL == (tmp_file = strdup(file))) + HGOTO_ERROR(H5E_ERROR, H5E_CANTALLOC, FAIL, "can't duplicate file string"); + if (NULL == (tmp_func = strdup(func))) + HGOTO_ERROR(H5E_ERROR, H5E_CANTALLOC, FAIL, "can't duplicate function string"); + + /* Increment refcount on non-library IDs */ + if (cls_id != H5E_ERR_CLS_g) + if (H5I_inc_ref(cls_id, false) < 0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINC, FAIL, "can't increment class ID"); + if (maj_id < H5E_first_maj_id_g || maj_id > H5E_last_maj_id_g) + if (H5I_inc_ref(maj_id, false) < 0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINC, FAIL, "can't increment major error ID"); + if (min_id < H5E_first_min_id_g || min_id > H5E_last_min_id_g) + if (H5I_inc_ref(min_id, false) < 0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINC, FAIL, "can't increment minor error ID"); /* Push the error on the stack */ - if (H5E__push_stack(estack, file, func, line, cls_id, maj_id, min_id, tmp) < 0) + if (H5E__push_stack(estack, true, tmp_file, tmp_func, line, cls_id, maj_id, min_id, fmt, &ap) < 0) HGOTO_ERROR(H5E_ERROR, H5E_CANTSET, FAIL, "can't push error on stack"); done: if (va_started) va_end(ap); - /* Memory was allocated with HDvasprintf so it needs to be freed - * with free - */ - if (tmp) - free(tmp); FUNC_LEAVE_API(ret_value) } /* end H5Epush2() */ @@ -1249,8 +592,8 @@ H5Epush2(hid_t err_stack, const char *file, const char *func, unsigned line, hid herr_t H5Eclear2(hid_t err_stack) { - H5E_t *estack; /* Error stack to operate on */ - herr_t ret_value = SUCCEED; /* Return value */ + H5E_stack_t *estack; /* Error stack to operate on */ + herr_t ret_value = SUCCEED; /* Return value */ /* Don't clear the error stack! :-) */ FUNC_ENTER_API_NOCLEAR(FAIL) @@ -1260,14 +603,14 @@ H5Eclear2(hid_t err_stack) estack = NULL; else { /* Only clear the error stack if it's not the default stack */ - H5E_clear_stack(NULL); + H5E_clear_stack(); - if (NULL == (estack = (H5E_t *)H5I_object_verify(err_stack, H5I_ERROR_STACK))) + if (NULL == (estack = (H5E_stack_t *)H5I_object_verify(err_stack, H5I_ERROR_STACK))) HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a error stack ID"); } /* end else */ /* Clear the error stack */ - if (H5E_clear_stack(estack) < 0) + if (H5E__clear_stack(estack) < 0) HGOTO_ERROR(H5E_ERROR, H5E_CANTSET, FAIL, "can't clear error stack"); done: @@ -1302,44 +645,6 @@ H5Eprint2(hid_t err_stack, FILE *stream) FUNC_LEAVE_API(ret_value) } /* end H5Eprint2() */ -/*------------------------------------------------------------------------- - * Function: H5E__print2 - * - * Purpose: Internal helper routine for H5Eprint2. - * - * Return: Non-negative on success/Negative on failure - * - *------------------------------------------------------------------------- - */ -static herr_t -H5E__print2(hid_t err_stack, FILE *stream) -{ - H5E_t *estack; /* Error stack to operate on */ - herr_t ret_value = SUCCEED; /* Return value */ - - FUNC_ENTER_PACKAGE - - /* Need to check for errors */ - if (err_stack == H5E_DEFAULT) { - if (NULL == (estack = H5E__get_my_stack())) - HGOTO_ERROR(H5E_ERROR, H5E_CANTGET, FAIL, "can't get current error stack"); - } /* end if */ - else { - /* Only clear the error stack if it's not the default stack */ - H5E_clear_stack(NULL); - - if (NULL == (estack = (H5E_t *)H5I_object_verify(err_stack, H5I_ERROR_STACK))) - HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a error stack ID"); - } /* end else */ - - /* Print error stack */ - if (H5E__print(estack, stream, false) < 0) - HGOTO_ERROR(H5E_ERROR, H5E_CANTLIST, FAIL, "can't display error stack"); - -done: - FUNC_LEAVE_NOAPI(ret_value) -} /* end H5E__print2() */ - /*------------------------------------------------------------------------- * Function: H5Ewalk2 * @@ -1353,7 +658,7 @@ H5E__print2(hid_t err_stack, FILE *stream) herr_t H5Ewalk2(hid_t err_stack, H5E_direction_t direction, H5E_walk2_t stack_func, void *client_data) { - H5E_t *estack; /* Error stack to operate on */ + H5E_stack_t *estack; /* Error stack to operate on */ H5E_walk_op_t op; /* Operator for walking error stack */ herr_t ret_value = SUCCEED; /* Return value */ @@ -1367,9 +672,9 @@ H5Ewalk2(hid_t err_stack, H5E_direction_t direction, H5E_walk2_t stack_func, voi } /* end if */ else { /* Only clear the error stack if it's not the default stack */ - H5E_clear_stack(NULL); + H5E_clear_stack(); - if (NULL == (estack = (H5E_t *)H5I_object_verify(err_stack, H5I_ERROR_STACK))) + if (NULL == (estack = (H5E_stack_t *)H5I_object_verify(err_stack, H5I_ERROR_STACK))) HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a error stack ID"); } /* end else */ @@ -1398,7 +703,7 @@ H5Ewalk2(hid_t err_stack, H5E_direction_t direction, H5E_walk2_t stack_func, voi herr_t H5Eget_auto2(hid_t estack_id, H5E_auto2_t *func /*out*/, void **client_data /*out*/) { - H5E_t *estack; /* Error stack to operate on */ + H5E_stack_t *estack; /* Error stack to operate on */ H5E_auto_op_t op; /* Error stack function */ herr_t ret_value = SUCCEED; /* Return value */ @@ -1411,9 +716,9 @@ H5Eget_auto2(hid_t estack_id, H5E_auto2_t *func /*out*/, void **client_data /*ou } /* end if */ else { /* Only clear the error stack if it's not the default stack */ - H5E_clear_stack(NULL); + H5E_clear_stack(); - if (NULL == (estack = (H5E_t *)H5I_object_verify(estack_id, H5I_ERROR_STACK))) + if (NULL == (estack = (H5E_stack_t *)H5I_object_verify(estack_id, H5I_ERROR_STACK))) HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a error stack ID"); } /* end else */ @@ -1456,7 +761,7 @@ H5Eget_auto2(hid_t estack_id, H5E_auto2_t *func /*out*/, void **client_data /*ou herr_t H5Eset_auto2(hid_t estack_id, H5E_auto2_t func, void *client_data) { - H5E_t *estack; /* Error stack to operate on */ + H5E_stack_t *estack; /* Error stack to operate on */ H5E_auto_op_t op; /* Error stack operator */ herr_t ret_value = SUCCEED; /* Return value */ @@ -1469,9 +774,9 @@ H5Eset_auto2(hid_t estack_id, H5E_auto2_t func, void *client_data) } /* end if */ else { /* Only clear the error stack if it's not the default stack */ - H5E_clear_stack(NULL); + H5E_clear_stack(); - if (NULL == (estack = (H5E_t *)H5I_object_verify(estack_id, H5I_ERROR_STACK))) + if (NULL == (estack = (H5E_stack_t *)H5I_object_verify(estack_id, H5I_ERROR_STACK))) HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a error stack ID"); } /* end else */ @@ -1514,8 +819,8 @@ H5Eset_auto2(hid_t estack_id, H5E_auto2_t func, void *client_data) herr_t H5Eauto_is_v2(hid_t estack_id, unsigned *is_stack) { - H5E_t *estack; /* Error stack to operate on */ - herr_t ret_value = SUCCEED; /* Return value */ + H5E_stack_t *estack; /* Error stack to operate on */ + herr_t ret_value = SUCCEED; /* Return value */ /* Don't clear the error stack! :-) */ FUNC_ENTER_API_NOCLEAR(FAIL) @@ -1526,9 +831,9 @@ H5Eauto_is_v2(hid_t estack_id, unsigned *is_stack) } /* end if */ else { /* Only clear the error stack if it's not the default stack */ - H5E_clear_stack(NULL); + H5E_clear_stack(); - if (NULL == (estack = (H5E_t *)H5I_object_verify(estack_id, H5I_ERROR_STACK))) + if (NULL == (estack = (H5E_stack_t *)H5I_object_verify(estack_id, H5I_ERROR_STACK))) HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a error stack ID"); } /* end else */ @@ -1557,16 +862,16 @@ H5Eauto_is_v2(hid_t estack_id, unsigned *is_stack) herr_t H5Eappend_stack(hid_t dst_stack_id, hid_t src_stack_id, hbool_t close_source_stack) { - H5E_t *dst_stack, *src_stack; /* Error stacks */ - herr_t ret_value = SUCCEED; /* Return value */ + H5E_stack_t *dst_stack, *src_stack; /* Error stacks */ + herr_t ret_value = SUCCEED; /* Return value */ /* Don't clear the error stack! :-) */ FUNC_ENTER_API(FAIL) /* Check args */ - if (NULL == (dst_stack = (H5E_t *)H5I_object_verify(dst_stack_id, H5I_ERROR_STACK))) + if (NULL == (dst_stack = (H5E_stack_t *)H5I_object_verify(dst_stack_id, H5I_ERROR_STACK))) HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "dst_stack_id not a error stack ID"); - if (NULL == (src_stack = (H5E_t *)H5I_object_verify(src_stack_id, H5I_ERROR_STACK))) + if (NULL == (src_stack = (H5E_stack_t *)H5I_object_verify(src_stack_id, H5I_ERROR_STACK))) HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "src_stack_id not a error stack ID"); /* Append the source stack to the destination stack */ @@ -1584,51 +889,3 @@ H5Eappend_stack(hid_t dst_stack_id, hid_t src_stack_id, hbool_t close_source_sta done: FUNC_LEAVE_API(ret_value) } /* end H5Eappend_stack() */ - -/*------------------------------------------------------------------------- - * Function: H5E__append_stack - * - * Purpose: Private function to append error stacks. - * - * Return: Non-negative value on success/Negative on failure - * - *------------------------------------------------------------------------- - */ -static herr_t -H5E__append_stack(H5E_t *dst_stack, const H5E_t *src_stack) -{ - unsigned u; /* Local index variable */ - herr_t ret_value = SUCCEED; /* Return value */ - - FUNC_ENTER_PACKAGE - - /* Sanity checks */ - assert(dst_stack); - assert(src_stack); - - /* Copy the errors from the source stack to the destination stack */ - for (u = 0; u < src_stack->nused; u++) { - const H5E_error2_t *src_error; /* Pointers to source error on stack */ - H5E_error2_t *dst_error; /* Pointers to destination error on stack */ - - /* Get pointers into the current error stack location */ - src_error = &(src_stack->slot[u]); - dst_error = &(dst_stack->slot[dst_stack->nused]); - - /* Set error stack entry */ - if (H5E__set_stack_entry(dst_error, src_error->file_name, src_error->func_name, src_error->line, - src_error->cls_id, src_error->maj_num, src_error->min_num, - src_error->desc) < 0) - HGOTO_ERROR(H5E_ERROR, H5E_CANTSET, FAIL, "can't set error entry"); - - /* Increment # of errors in destination stack */ - dst_stack->nused++; - - /* Check for destination stack full */ - if (dst_stack->nused >= H5E_NSLOTS) - break; - } /* end for */ - -done: - FUNC_LEAVE_NOAPI(ret_value) -} /* end H5E__append_stack() */ diff --git a/src/H5Edeprec.c b/src/H5Edeprec.c index 1f85b00c8f2..06648000ae1 100644 --- a/src/H5Edeprec.c +++ b/src/H5Edeprec.c @@ -182,13 +182,29 @@ H5Eget_minor(H5E_minor_t min) herr_t H5Epush1(const char *file, const char *func, unsigned line, H5E_major_t maj, H5E_minor_t min, const char *str) { - herr_t ret_value = SUCCEED; /* Return value */ + const char *tmp_file; /* Copy of the file name */ + const char *tmp_func; /* Copy of the function name */ + herr_t ret_value = SUCCEED; /* Return value */ /* Don't clear the error stack! :-) */ FUNC_ENTER_API_NOCLEAR(FAIL) + /* Duplicate string information */ + if (NULL == (tmp_file = strdup(file))) + HGOTO_ERROR(H5E_ERROR, H5E_CANTALLOC, FAIL, "can't duplicate file string"); + if (NULL == (tmp_func = strdup(func))) + HGOTO_ERROR(H5E_ERROR, H5E_CANTALLOC, FAIL, "can't duplicate function string"); + + /* Increment refcount on non-library IDs */ + if (maj < H5E_first_maj_id_g || maj > H5E_last_maj_id_g) + if (H5I_inc_ref(maj, false) < 0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINC, FAIL, "can't increment major error ID"); + if (min < H5E_first_min_id_g || min > H5E_last_min_id_g) + if (H5I_inc_ref(min, false) < 0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINC, FAIL, "can't increment minor error ID"); + /* Push the error on the default error stack */ - if (H5E__push_stack(NULL, file, func, line, H5E_ERR_CLS_g, maj, min, str) < 0) + if (H5E__push_stack(NULL, true, tmp_file, tmp_func, line, H5E_ERR_CLS_g, maj, min, str, NULL) < 0) HGOTO_ERROR(H5E_ERROR, H5E_CANTSET, FAIL, "can't push error on stack"); done: @@ -214,7 +230,7 @@ H5Eclear1(void) FUNC_ENTER_API_NOCLEAR(FAIL) /* Clear the default error stack */ - if (H5E_clear_stack(NULL) < 0) + if (H5E_clear_stack() < 0) HGOTO_ERROR(H5E_ERROR, H5E_CANTSET, FAIL, "can't clear error stack"); done: @@ -237,8 +253,8 @@ H5Eclear1(void) herr_t H5Eprint1(FILE *stream) { - H5E_t *estack; /* Error stack to operate on */ - herr_t ret_value = SUCCEED; /* Return value */ + H5E_stack_t *estack; /* Error stack to operate on */ + herr_t ret_value = SUCCEED; /* Return value */ /* Don't clear the error stack! :-) */ FUNC_ENTER_API_NOCLEAR(FAIL) @@ -268,7 +284,7 @@ H5Eprint1(FILE *stream) herr_t H5Ewalk1(H5E_direction_t direction, H5E_walk1_t func, void *client_data) { - H5E_t *estack; /* Error stack to operate on */ + H5E_stack_t *estack; /* Error stack to operate on */ H5E_walk_op_t walk_op; /* Error stack walking callback */ herr_t ret_value = SUCCEED; /* Return value */ @@ -304,7 +320,7 @@ H5Ewalk1(H5E_direction_t direction, H5E_walk1_t func, void *client_data) herr_t H5Eget_auto1(H5E_auto1_t *func /*out*/, void **client_data /*out*/) { - H5E_t *estack; /* Error stack to operate on */ + H5E_stack_t *estack; /* Error stack to operate on */ H5E_auto_op_t auto_op; /* Error stack operator */ herr_t ret_value = SUCCEED; /* Return value */ @@ -352,7 +368,7 @@ H5Eget_auto1(H5E_auto1_t *func /*out*/, void **client_data /*out*/) herr_t H5Eset_auto1(H5E_auto1_t func, void *client_data) { - H5E_t *estack; /* Error stack to operate on */ + H5E_stack_t *estack; /* Error stack to operate on */ H5E_auto_op_t auto_op; /* Error stack operator */ herr_t ret_value = SUCCEED; /* Return value */ diff --git a/src/H5Eint.c b/src/H5Eint.c index e59988d0264..00b6efbe33d 100644 --- a/src/H5Eint.c +++ b/src/H5Eint.c @@ -30,6 +30,7 @@ /***********/ #include "H5private.h" /* Generic Functions */ #include "H5Epkg.h" /* Error handling */ +#include "H5FLprivate.h" /* Free lists */ #include "H5Iprivate.h" /* IDs */ #include "H5MMprivate.h" /* Memory management */ #include "H5TSprivate.h" /* Thread stuff */ @@ -38,6 +39,10 @@ /* Local Macros */ /****************/ +/* HDF5 error class */ +#define H5E_CLS_NAME "HDF5" +#define H5E_CLS_LIB_NAME "HDF5" + /******************/ /* Local Typedefs */ /******************/ @@ -59,7 +64,15 @@ typedef struct H5E_print_t { static herr_t H5E__walk1_cb(int n, H5E_error1_t *err_desc, void *client_data); #endif /* H5_NO_DEPRECATED_SYMBOLS */ static herr_t H5E__walk2_cb(unsigned n, const H5E_error2_t *err_desc, void *client_data); -static herr_t H5E__clear_entries(H5E_t *estack, size_t nentries); +static herr_t H5E__copy_stack_entry(H5E_entry_t *dst_entry, const H5E_entry_t *src_entry); +static herr_t H5E__set_stack_entry(H5E_error2_t *err_entry, const char *file, const char *func, unsigned line, + hid_t cls_id, hid_t maj_id, hid_t min_id, const char *desc, va_list *ap); +static herr_t H5E__clear_entries(H5E_stack_t *estack, size_t nentries); +static herr_t H5E__unregister_class(H5E_cls_t *cls, void **request); +static int H5E__close_msg_cb(void *obj_ptr, hid_t obj_id, void *udata); +static void H5E__free_msg(H5E_msg_t *msg); +static herr_t H5E__close_msg(H5E_msg_t *err, void **request); +static herr_t H5E__close_stack(H5E_stack_t *err_stack, void **request); /*********************/ /* Package Variables */ @@ -69,9 +82,18 @@ static herr_t H5E__clear_entries(H5E_t *estack, size_t nentries); /* * The current error stack. */ -H5E_t H5E_stack_g[1]; +H5E_stack_t H5E_stack_g[1]; #endif /* H5_HAVE_THREADSAFE */ +/* Declare a free list to manage the H5E_stack_t struct */ +H5FL_DEFINE(H5E_stack_t); + +/* Declare a free list to manage the H5E_cls_t struct */ +H5FL_DEFINE_STATIC(H5E_cls_t); + +/* Declare a free list to manage the H5E_msg_t struct */ +H5FL_DEFINE_STATIC(H5E_msg_t); + /*****************************/ /* Library Private Variables */ /*****************************/ @@ -98,6 +120,738 @@ char H5E_mpi_error_str[MPI_MAX_ERROR_STRING]; int H5E_mpi_error_str_len; #endif /* H5_HAVE_PARALLEL */ +/* First & last major and minor error codes registered by the library */ +hid_t H5E_first_maj_id_g = H5I_INVALID_HID; +hid_t H5E_last_maj_id_g = H5I_INVALID_HID; +hid_t H5E_first_min_id_g = H5I_INVALID_HID; +hid_t H5E_last_min_id_g = H5I_INVALID_HID; + +/* Error class ID class */ +static const H5I_class_t H5I_ERRCLS_CLS[1] = {{ + H5I_ERROR_CLASS, /* ID class value */ + 0, /* Class flags */ + 0, /* # of reserved IDs for class */ + (H5I_free_t)H5E__unregister_class /* Callback routine for closing objects of this class */ +}}; + +/* Error message ID class */ +static const H5I_class_t H5I_ERRMSG_CLS[1] = {{ + H5I_ERROR_MSG, /* ID class value */ + 0, /* Class flags */ + 0, /* # of reserved IDs for class */ + (H5I_free_t)H5E__close_msg /* Callback routine for closing objects of this class */ +}}; + +/* Error stack ID class */ +static const H5I_class_t H5I_ERRSTK_CLS[1] = {{ + H5I_ERROR_STACK, /* ID class value */ + 0, /* Class flags */ + 0, /* # of reserved IDs for class */ + (H5I_free_t)H5E__close_stack /* Callback routine for closing objects of this class */ +}}; + +/* Library's error class */ +static const H5E_cls_t H5E_err_cls_s = {false, H5E_CLS_NAME, H5E_CLS_LIB_NAME, H5_VERS_STR}; + +/* Include the automatically generated major error message definitions */ +#include "H5Emajdef.h" + +/* Include the automatically generated minor error message definitions */ +#include "H5Emindef.h" + +/*------------------------------------------------------------------------- + * Function: H5E_init + * + * Purpose: Initialize the interface from some other layer. + * + * Return: Success: non-negative + * Failure: negative + *------------------------------------------------------------------------- + */ +herr_t +H5E_init(void) +{ + herr_t ret_value = SUCCEED; /* Return value */ + + FUNC_ENTER_NOAPI(FAIL) + + /* Initialize the ID group for the error class IDs */ + if (H5I_register_type(H5I_ERRCLS_CLS) < 0) + HGOTO_ERROR(H5E_ID, H5E_CANTINIT, FAIL, "unable to initialize ID group"); + + /* Initialize the ID group for the major error IDs */ + if (H5I_register_type(H5I_ERRMSG_CLS) < 0) + HGOTO_ERROR(H5E_ID, H5E_CANTINIT, FAIL, "unable to initialize ID group"); + + /* Initialize the ID group for the error stacks */ + if (H5I_register_type(H5I_ERRSTK_CLS) < 0) + HGOTO_ERROR(H5E_ID, H5E_CANTINIT, FAIL, "unable to initialize ID group"); + +#ifndef H5_HAVE_THREADSAFE + H5E_stack_g[0].nused = 0; + H5E__set_default_auto(H5E_stack_g); +#endif /* H5_HAVE_THREADSAFE */ + + /* Register the HDF5 error class */ + if ((H5E_ERR_CLS_g = H5I_register(H5I_ERROR_CLASS, &H5E_err_cls_s, false)) < 0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREGISTER, FAIL, "can't register error class"); + +/* Include the automatically generated error code initialization */ +#include "H5Einit.h" + +done: + FUNC_LEAVE_NOAPI(ret_value) +} + +/*------------------------------------------------------------------------- + * Function: H5E_term_package + * + * Purpose: Terminates the H5E interface + * + * Return: Success: Positive if anything is done that might + * affect other interfaces; zero otherwise. + * + * Failure: Negative + * + *------------------------------------------------------------------------- + */ +int +H5E_term_package(void) +{ + int n = 0; + + FUNC_ENTER_NOAPI_NOINIT_NOERR + + int64_t ncls, nmsg, nstk; + + /* Check if there are any open error stacks, classes or messages */ + ncls = H5I_nmembers(H5I_ERROR_CLASS); + nmsg = H5I_nmembers(H5I_ERROR_MSG); + nstk = H5I_nmembers(H5I_ERROR_STACK); + + if ((ncls + nmsg + nstk) > 0) { + /* Clear the default error stack. Note that + * the following H5I_clear_type calls do not + * force the clears and will not be able to + * clear any error message IDs that are still + * in use by the default error stack unless we + * clear that stack manually. + * + * Error message IDs will typically still be + * in use by the default error stack when the + * application does H5E_BEGIN/END_TRY cleanup + * at the very end. + */ + H5E_clear_stack(); + + /* Clear any outstanding error stacks */ + if (nstk > 0) + (void)H5I_clear_type(H5I_ERROR_STACK, false, false); + + /* Clear all the error classes */ + if (ncls > 0) { + (void)H5I_clear_type(H5I_ERROR_CLASS, false, false); + + /* Reset the HDF5 error class, if its been closed */ + if (H5I_nmembers(H5I_ERROR_CLASS) == 0) + H5E_ERR_CLS_g = H5I_INVALID_HID; + } /* end if */ + + /* Clear all the error messages */ + if (nmsg > 0) { + (void)H5I_clear_type(H5I_ERROR_MSG, false, false); + + /* Reset the HDF5 error messages, if they've been closed */ + if (H5I_nmembers(H5I_ERROR_MSG) == 0) { +/* Include the automatically generated error code termination */ +#include "H5Eterm.h" + } /* end if */ + } /* end if */ + + n++; /*H5I*/ + } /* end if */ + else { + /* Destroy the error class, message, and stack id groups */ + n += (H5I_dec_type_ref(H5I_ERROR_STACK) > 0); + n += (H5I_dec_type_ref(H5I_ERROR_CLASS) > 0); + n += (H5I_dec_type_ref(H5I_ERROR_MSG) > 0); + + } /* end else */ + + FUNC_LEAVE_NOAPI(n) +} /* end H5E_term_package() */ + +#ifdef H5_HAVE_THREADSAFE +/*------------------------------------------------------------------------- + * Function: H5E__get_stack + * + * Purpose: Support function for H5E__get_my_stack() to initialize and + * acquire per-thread error stack. + * + * Return: Success: Pointer to an error stack struct (H5E_t *) + * + * Failure: NULL + * + *------------------------------------------------------------------------- + */ +H5E_stack_t * +H5E__get_stack(void) +{ + H5E_stack_t *estack = NULL; + + FUNC_ENTER_PACKAGE_NOERR + + estack = (H5E_stack_t *)H5TS_get_thread_local_value(H5TS_errstk_key_g); + + if (!estack) { + /* No associated value with current thread - create one */ +#ifdef H5_HAVE_WIN_THREADS + /* Win32 has to use LocalAlloc to match the LocalFree in DllMain */ + estack = (H5E_stack_t *)LocalAlloc(LPTR, sizeof(H5E_stack_t)); +#else + /* Use malloc here since this has to match the free in the + * destructor and we want to avoid the codestack there. + */ + estack = (H5E_stack_t *)malloc(sizeof(H5E_stack_t)); +#endif /* H5_HAVE_WIN_THREADS */ + assert(estack); + + /* Set the thread-specific info */ + estack->nused = 0; + H5E__set_default_auto(estack); + + /* (It's not necessary to release this in this API, it is + * released by the "key destructor" set up in the H5TS + * routines. See calls to pthread_key_create() in H5TS.c -QAK) + */ + H5TS_set_thread_local_value(H5TS_errstk_key_g, (void *)estack); + } /* end if */ + + /* Set return value */ + FUNC_LEAVE_NOAPI(estack) +} /* end H5E__get_stack() */ +#endif /* H5_HAVE_THREADSAFE */ + +/*------------------------------------------------------------------------- + * Function: H5E__free_class + * + * Purpose: Private function to free an error class. + * + * Return: SUCCEED/FAIL + * + *------------------------------------------------------------------------- + */ +static herr_t +H5E__free_class(H5E_cls_t *cls) +{ + FUNC_ENTER_PACKAGE_NOERR + + /* Check arguments */ + assert(cls); + + /* Free resources, if application registered this class */ + if (cls->app_cls) { + /* Free error class structure */ + cls->cls_name = H5MM_xfree_const(cls->cls_name); + cls->lib_name = H5MM_xfree_const(cls->lib_name); + cls->lib_vers = H5MM_xfree_const(cls->lib_vers); + cls = H5FL_FREE(H5E_cls_t, cls); + } + + FUNC_LEAVE_NOAPI(SUCCEED) +} /* end H5E__free_class() */ + +/*------------------------------------------------------------------------- + * Function: H5E__register_class + * + * Purpose: Private function to register an error class. + * + * Return: Success: Pointer to an error class struct + * Failure: NULL + * + *------------------------------------------------------------------------- + */ +H5E_cls_t * +H5E__register_class(const char *cls_name, const char *lib_name, const char *version) +{ + H5E_cls_t *cls = NULL; /* Pointer to error class */ + H5E_cls_t *ret_value = NULL; /* Return value */ + + FUNC_ENTER_PACKAGE + + /* Check arguments */ + assert(cls_name); + assert(lib_name); + assert(version); + + /* Allocate space for new error class */ + if (NULL == (cls = H5FL_CALLOC(H5E_cls_t))) + HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed"); + + /* Application registered class */ + cls->app_cls = true; + + /* Duplicate string information */ + if (NULL == (cls->cls_name = strdup(cls_name))) + HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed"); + if (NULL == (cls->lib_name = strdup(lib_name))) + HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed"); + if (NULL == (cls->lib_vers = strdup(version))) + HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed"); + + /* Set the return value */ + ret_value = cls; + +done: + if (!ret_value) + if (cls && H5E__free_class(cls) < 0) + HDONE_ERROR(H5E_ERROR, H5E_CANTRELEASE, NULL, "unable to free error class"); + + FUNC_LEAVE_NOAPI(ret_value) +} /* end H5E__register_class() */ + +/*------------------------------------------------------------------------- + * Function: H5E__unregister_class + * + * Purpose: Private function to close an error class. + * + * Return: SUCCEED/FAIL + * + *------------------------------------------------------------------------- + */ +static herr_t +H5E__unregister_class(H5E_cls_t *cls, void H5_ATTR_UNUSED **request) +{ + herr_t ret_value = SUCCEED; /* Return value */ + + FUNC_ENTER_PACKAGE + + /* Check arguments */ + assert(cls); + + /* Iterate over all the messages and delete those in this error class */ + if (H5I_iterate(H5I_ERROR_MSG, H5E__close_msg_cb, cls, false) < 0) + HGOTO_ERROR(H5E_ERROR, H5E_BADITER, FAIL, "unable to free all messages in this error class"); + + /* Free error class structure */ + if (H5E__free_class(cls) < 0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTRELEASE, FAIL, "unable to free error class"); + +done: + FUNC_LEAVE_NOAPI(ret_value) +} /* end H5E__unregister_class() */ + +/*------------------------------------------------------------------------- + * Function: H5E__get_class_name + * + * Purpose: Private function to retrieve error class name. + * + * Return: Success: Name length (zero means no name) + * Failure: -1 + * + *------------------------------------------------------------------------- + */ +ssize_t +H5E__get_class_name(const H5E_cls_t *cls, char *name, size_t size) +{ + ssize_t len = -1; /* Length of error class's name */ + + FUNC_ENTER_PACKAGE_NOERR + + /* Check arguments */ + assert(cls); + + /* Get the class's name */ + len = (ssize_t)strlen(cls->cls_name); + + /* Set the user's buffer, if provided */ + if (name) { + strncpy(name, cls->cls_name, size); + if ((size_t)len >= size) + name[size - 1] = '\0'; + } /* end if */ + + /* Return the full length */ + FUNC_LEAVE_NOAPI(len) +} /* end H5E__get_class_name() */ + +/*------------------------------------------------------------------------- + * Function: H5E__close_msg_cb + * + * Purpose: H5I_iterate callback function to close error messages in the + * error class. + * + * Return: Success: H5_ITER_CONT (0) + * Failure: H5_ITER_ERROR (-1) + * + *------------------------------------------------------------------------- + */ +static int +H5E__close_msg_cb(void *obj_ptr, hid_t obj_id, void *udata) +{ + H5E_msg_t *err_msg = (H5E_msg_t *)obj_ptr; + H5E_cls_t *cls = (H5E_cls_t *)udata; + int ret_value = H5_ITER_CONT; /* Return value */ + + FUNC_ENTER_PACKAGE + + /* Check arguments */ + assert(err_msg); + + /* Close the message if it is in the class being closed */ + if (err_msg->cls == cls) { + if (H5E__close_msg(err_msg, NULL) < 0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTCLOSEOBJ, H5_ITER_ERROR, "unable to close error message"); + if (NULL == H5I_remove(obj_id)) + HGOTO_ERROR(H5E_ERROR, H5E_CANTREMOVE, H5_ITER_ERROR, "unable to remove error message"); + } /* end if */ + +done: + FUNC_LEAVE_NOAPI(ret_value) +} /* end H5E__close_msg_cb() */ + +/*------------------------------------------------------------------------- + * Function: H5E__free_msg + * + * Purpose: Private function to free an application error message. + * + * Return: none + * + *------------------------------------------------------------------------- + */ +static void +H5E__free_msg(H5E_msg_t *msg) +{ + FUNC_ENTER_PACKAGE_NOERR + + /* Check arguments */ + assert(msg); + assert(msg->app_msg); + + /* Free resources */ + msg->msg = H5MM_xfree_const(msg->msg); + msg = H5FL_FREE(H5E_msg_t, msg); + + FUNC_LEAVE_NOAPI_VOID +} /* end H5E__free_msg() */ + +/*------------------------------------------------------------------------- + * Function: H5E__close_msg + * + * Purpose: Private function to close an error message. + * + * Return: SUCCEED/FAIL + * + *------------------------------------------------------------------------- + */ +static herr_t +H5E__close_msg(H5E_msg_t *err, void H5_ATTR_UNUSED **request) +{ + FUNC_ENTER_PACKAGE_NOERR + + /* Check arguments */ + assert(err); + + /* Free resources, if application registered this message */ + if (err->app_msg) + /* Free message */ + H5E__free_msg(err); + + FUNC_LEAVE_NOAPI(SUCCEED) +} /* end H5E__close_msg() */ + +/*------------------------------------------------------------------------- + * Function: H5E__create_msg + * + * Purpose: Private function to create a major or minor error. + * + * Return: Success: Pointer to a message struct + * Failure: NULL + * + *------------------------------------------------------------------------- + */ +H5E_msg_t * +H5E__create_msg(H5E_cls_t *cls, H5E_type_t msg_type, const char *msg_str) +{ + H5E_msg_t *msg = NULL; /* Pointer to new error message */ + H5E_msg_t *ret_value = NULL; /* Return value */ + + FUNC_ENTER_PACKAGE + + /* Check arguments */ + assert(cls); + assert(msg_type == H5E_MAJOR || msg_type == H5E_MINOR); + assert(msg_str); + + /* Allocate new message object */ + if (NULL == (msg = H5FL_CALLOC(H5E_msg_t))) + HGOTO_ERROR(H5E_ERROR, H5E_CANTALLOC, NULL, "memory allocation failed"); + + /* Fill new message object */ + msg->app_msg = true; + msg->cls = cls; + msg->type = msg_type; + if (NULL == (msg->msg = strdup(msg_str))) + HGOTO_ERROR(H5E_ERROR, H5E_CANTALLOC, NULL, "memory allocation failed"); + + /* Set return value */ + ret_value = msg; + +done: + if (!ret_value) + if (msg) + H5E__free_msg(msg); + + FUNC_LEAVE_NOAPI(ret_value) +} /* end H5E__create_msg() */ + +/*------------------------------------------------------------------------- + * Function: H5E__get_current_stack + * + * Purpose: Private function to register an error stack. + * + * Return: Success: Pointer to an error class struct + * Failure: NULL + * + *------------------------------------------------------------------------- + */ +H5E_stack_t * +H5E__get_current_stack(void) +{ + H5E_stack_t *current_stack; /* Pointer to the current error stack */ + H5E_stack_t *estack_copy = NULL; /* Pointer to new error stack to return */ + unsigned u; /* Local index variable */ + H5E_stack_t *ret_value = NULL; /* Return value */ + + FUNC_ENTER_PACKAGE + + /* Get a pointer to the current error stack */ + if (NULL == (current_stack = H5E__get_my_stack())) + HGOTO_ERROR(H5E_ERROR, H5E_CANTGET, NULL, "can't get current error stack"); + + /* Allocate a new error stack */ + if (NULL == (estack_copy = H5FL_CALLOC(H5E_stack_t))) + HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed"); + + /* Make a copy of current error stack */ + estack_copy->nused = current_stack->nused; + for (u = 0; u < current_stack->nused; u++) + if (H5E__copy_stack_entry(&estack_copy->entries[u], ¤t_stack->entries[u]) < 0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTSET, NULL, "can't set error entry"); + + /* Copy the "automatic" error reporting information */ + estack_copy->auto_op = current_stack->auto_op; + estack_copy->auto_data = current_stack->auto_data; + + /* Empty current error stack */ + H5E__clear_stack(current_stack); + + /* Set the return value */ + ret_value = estack_copy; + +done: + if (ret_value == NULL) + if (estack_copy) + estack_copy = H5FL_FREE(H5E_stack_t, estack_copy); + + FUNC_LEAVE_NOAPI(ret_value) +} /* end H5E__get_current_stack() */ + +/*------------------------------------------------------------------------- + * Function: H5E__set_current_stack + * + * Purpose: Private function to replace an error stack. + * + * Return: SUCCEED/FAIL + * + *------------------------------------------------------------------------- + */ +herr_t +H5E__set_current_stack(H5E_stack_t *estack) +{ + H5E_stack_t *current_stack; /* Default error stack */ + unsigned u; /* Local index variable */ + herr_t ret_value = SUCCEED; /* Return value */ + + FUNC_ENTER_PACKAGE + + /* Sanity check */ + assert(estack); + + /* Get a pointer to the current error stack */ + if (NULL == (current_stack = H5E__get_my_stack())) + HGOTO_ERROR(H5E_ERROR, H5E_CANTGET, FAIL, "can't get current error stack"); + + /* Empty current error stack */ + H5E__clear_stack(current_stack); + + /* Copy new stack to current error stack */ + current_stack->nused = estack->nused; + for (u = 0; u < current_stack->nused; u++) + if (H5E__copy_stack_entry(¤t_stack->entries[u], &estack->entries[u]) < 0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTSET, FAIL, "can't set error entry"); + +done: + FUNC_LEAVE_NOAPI(ret_value) +} /* end H5E__set_current_stack() */ + +/*------------------------------------------------------------------------- + * Function: H5E__close_stack + * + * Purpose: Private function to close an error stack. + * + * Return: SUCCEED/FAIL + * + *------------------------------------------------------------------------- + */ +static herr_t +H5E__close_stack(H5E_stack_t *estack, void H5_ATTR_UNUSED **request) +{ + FUNC_ENTER_PACKAGE_NOERR + + /* Sanity check */ + assert(estack); + + /* Release the stack's error information */ + H5E__clear_stack(estack); + + /* Free the stack structure */ + estack = H5FL_FREE(H5E_stack_t, estack); + + FUNC_LEAVE_NOAPI(SUCCEED) +} /* end H5E__close_stack() */ + +/*------------------------------------------------------------------------- + * Function: H5E__get_num + * + * Purpose: Private function to retrieve number of errors in error stack. + * + * Return: Success: The number of errors + * Failure: -1 (can't fail at this time) + * + *------------------------------------------------------------------------- + */ +ssize_t +H5E__get_num(const H5E_stack_t *estack) +{ + FUNC_ENTER_PACKAGE_NOERR + + assert(estack); + + FUNC_LEAVE_NOAPI((ssize_t)estack->nused) +} /* end H5E__get_num() */ + +/*------------------------------------------------------------------------- + * Function: H5E__print2 + * + * Purpose: Internal helper routine for H5Eprint2. + * + * Return: Non-negative on success/Negative on failure + * + *------------------------------------------------------------------------- + */ +herr_t +H5E__print2(hid_t err_stack, FILE *stream) +{ + H5E_stack_t *estack; /* Error stack to operate on */ + herr_t ret_value = SUCCEED; /* Return value */ + + FUNC_ENTER_PACKAGE + + /* Need to check for errors */ + if (err_stack == H5E_DEFAULT) { + if (NULL == (estack = H5E__get_my_stack())) + HGOTO_ERROR(H5E_ERROR, H5E_CANTGET, FAIL, "can't get current error stack"); + } /* end if */ + else { + /* Only clear the error stack if it's not the default stack */ + H5E_clear_stack(); + + if (NULL == (estack = (H5E_stack_t *)H5I_object_verify(err_stack, H5I_ERROR_STACK))) + HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a error stack ID"); + } /* end else */ + + /* Print error stack */ + if (H5E__print(estack, stream, false) < 0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTLIST, FAIL, "can't display error stack"); + +done: + FUNC_LEAVE_NOAPI(ret_value) +} /* end H5E__print2() */ + +/*------------------------------------------------------------------------- + * Function: H5E__append_stack + * + * Purpose: Private function to append error stacks. + * + * Return: Non-negative value on success/Negative on failure + * + *------------------------------------------------------------------------- + */ +herr_t +H5E__append_stack(H5E_stack_t *dst_stack, const H5E_stack_t *src_stack) +{ + unsigned u; /* Local index variable */ + herr_t ret_value = SUCCEED; /* Return value */ + + FUNC_ENTER_PACKAGE + + /* Sanity checks */ + assert(dst_stack); + assert(src_stack); + + /* Copy the errors from the source stack to the destination stack */ + for (u = 0; u < src_stack->nused; u++) { + /* Copy error stack entry */ + if (H5E__copy_stack_entry(&dst_stack->entries[dst_stack->nused], &src_stack->entries[u]) < 0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTSET, FAIL, "can't set error entry"); + + /* Increment # of errors in destination stack */ + dst_stack->nused++; + + /* Check for destination stack full */ + if (dst_stack->nused >= H5E_MAX_ENTRIES) + break; + } /* end for */ + +done: + FUNC_LEAVE_NOAPI(ret_value) +} /* end H5E__append_stack() */ + +/*-------------------------------------------------------------------------- + * Function: H5E__set_default_auto + * + * Purpose: Initialize "automatic" error stack reporting info to library + * default + * + * Return: SUCCEED/FAIL + * + *-------------------------------------------------------------------------- + */ +void +H5E__set_default_auto(H5E_stack_t *stk) +{ + FUNC_ENTER_PACKAGE_NOERR + +#ifndef H5_NO_DEPRECATED_SYMBOLS +#ifdef H5_USE_16_API_DEFAULT + stk->auto_op.vers = 1; +#else /* H5_USE_16_API */ + stk->auto_op.vers = 2; +#endif /* H5_USE_16_API_DEFAULT */ + + stk->auto_op.func1 = stk->auto_op.func1_default = (H5E_auto1_t)H5Eprint1; + stk->auto_op.func2 = stk->auto_op.func2_default = (H5E_auto2_t)H5E__print2; + stk->auto_op.is_default = true; +#else /* H5_NO_DEPRECATED_SYMBOLS */ + stk->auto_op.func2 = (H5E_auto2_t)H5E__print2; +#endif /* H5_NO_DEPRECATED_SYMBOLS */ + + stk->auto_data = NULL; + + FUNC_LEAVE_NOAPI_VOID +} /* end H5E__set_default_auto() */ + /*------------------------------------------------------------------------- * Function: H5E__get_msg * @@ -171,15 +925,15 @@ H5E__get_msg(const H5E_msg_t *msg, H5E_type_t *type, char *msg_str, size_t size) static herr_t H5E__walk1_cb(int n, H5E_error1_t *err_desc, void *client_data) { - H5E_print_t *eprint = (H5E_print_t *)client_data; - FILE *stream; /* I/O stream to print output to */ - H5E_cls_t *cls_ptr; /* Pointer to error class */ - H5E_msg_t *maj_ptr; /* Pointer to major error info */ - H5E_msg_t *min_ptr; /* Pointer to minor error info */ - const char *maj_str = "No major description"; /* Major error description */ - const char *min_str = "No minor description"; /* Minor error description */ - unsigned have_desc = 1; /* Flag to indicate whether the error has a "real" description */ - herr_t ret_value = SUCCEED; + H5E_print_t *eprint = (H5E_print_t *)client_data; + FILE *stream; /* I/O stream to print output to */ + const H5E_cls_t *cls_ptr; /* Pointer to error class */ + H5E_msg_t *maj_ptr; /* Pointer to major error info */ + H5E_msg_t *min_ptr; /* Pointer to minor error info */ + const char *maj_str = "No major description"; /* Major error description */ + const char *min_str = "No minor description"; /* Minor error description */ + bool have_desc = true; /* Flag to indicate whether the error has a "real" description */ + herr_t ret_value = SUCCEED; FUNC_ENTER_PACKAGE_NOERR @@ -250,7 +1004,7 @@ H5E__walk1_cb(int n, H5E_error1_t *err_desc, void *client_data) /* Check for "real" error description - used to format output more nicely */ if (err_desc->desc == NULL || strlen(err_desc->desc) == 0) - have_desc = 0; + have_desc = false; /* Print error message */ fprintf(stream, "%*s#%03d: %s line %u in %s()%s%s\n", H5E_INDENT, "", n, err_desc->file_name, @@ -301,7 +1055,7 @@ H5E__walk2_cb(unsigned n, const H5E_error2_t *err_desc, void *client_data) H5E_msg_t *min_ptr; /* Pointer to minor error info */ const char *maj_str = "No major description"; /* Major error description */ const char *min_str = "No minor description"; /* Minor error description */ - unsigned have_desc = 1; /* Flag to indicate whether the error has a "real" description */ + bool have_desc = true; /* Flag to indicate whether the error has a "real" description */ herr_t ret_value = SUCCEED; FUNC_ENTER_PACKAGE_NOERR @@ -378,7 +1132,7 @@ H5E__walk2_cb(unsigned n, const H5E_error2_t *err_desc, void *client_data) /* Check for "real" error description - used to format output more nicely */ if (err_desc->desc == NULL || strlen(err_desc->desc) == 0) - have_desc = 0; + have_desc = false; /* Print error message */ fprintf(stream, "%*s#%03u: %s line %u in %s()%s%s\n", H5E_INDENT, "", n, err_desc->file_name, @@ -404,7 +1158,7 @@ H5E__walk2_cb(unsigned n, const H5E_error2_t *err_desc, void *client_data) *------------------------------------------------------------------------- */ herr_t -H5E__print(const H5E_t *estack, FILE *stream, bool bk_compatible) +H5E__print(const H5E_stack_t *estack, FILE *stream, bool bk_compatible) { H5E_print_t eprint; /* Callback information to pass to H5E_walk() */ H5E_walk_op_t walk_op; /* Error stack walking callback */ @@ -474,7 +1228,7 @@ H5E__print(const H5E_t *estack, FILE *stream, bool bk_compatible) *------------------------------------------------------------------------- */ herr_t -H5E__walk(const H5E_t *estack, H5E_direction_t direction, const H5E_walk_op_t *op, void *client_data) +H5E__walk(const H5E_stack_t *estack, H5E_direction_t direction, const H5E_walk_op_t *op, void *client_data) { int i; /* Local index variable */ herr_t ret_value = H5_ITER_CONT; /* Return value */ @@ -499,12 +1253,12 @@ H5E__walk(const H5E_t *estack, H5E_direction_t direction, const H5E_walk_op_t *o if (H5E_WALK_UPWARD == direction) { for (i = 0; i < (int)estack->nused && ret_value == H5_ITER_CONT; i++) { /* Point to each error record on the stack and pass it to callback function.*/ - old_err.maj_num = estack->slot[i].maj_num; - old_err.min_num = estack->slot[i].min_num; - old_err.func_name = estack->slot[i].func_name; - old_err.file_name = estack->slot[i].file_name; - old_err.desc = estack->slot[i].desc; - old_err.line = estack->slot[i].line; + old_err.maj_num = estack->entries[i].err.maj_num; + old_err.min_num = estack->entries[i].err.min_num; + old_err.file_name = estack->entries[i].err.file_name; + old_err.func_name = estack->entries[i].err.func_name; + old_err.line = estack->entries[i].err.line; + old_err.desc = estack->entries[i].err.desc; ret_value = (op->u.func1)(i, &old_err, client_data); } /* end for */ @@ -513,12 +1267,12 @@ H5E__walk(const H5E_t *estack, H5E_direction_t direction, const H5E_walk_op_t *o H5_CHECK_OVERFLOW(estack->nused - 1, size_t, int); for (i = (int)(estack->nused - 1); i >= 0 && ret_value == H5_ITER_CONT; i--) { /* Point to each error record on the stack and pass it to callback function.*/ - old_err.maj_num = estack->slot[i].maj_num; - old_err.min_num = estack->slot[i].min_num; - old_err.func_name = estack->slot[i].func_name; - old_err.file_name = estack->slot[i].file_name; - old_err.desc = estack->slot[i].desc; - old_err.line = estack->slot[i].line; + old_err.maj_num = estack->entries[i].err.maj_num; + old_err.min_num = estack->entries[i].err.min_num; + old_err.file_name = estack->entries[i].err.file_name; + old_err.func_name = estack->entries[i].err.func_name; + old_err.line = estack->entries[i].err.line; + old_err.desc = estack->entries[i].err.desc; ret_value = (op->u.func1)((int)(estack->nused - (size_t)(i + 1)), &old_err, client_data); } /* end for */ @@ -537,13 +1291,13 @@ H5E__walk(const H5E_t *estack, H5E_direction_t direction, const H5E_walk_op_t *o ret_value = SUCCEED; if (H5E_WALK_UPWARD == direction) { for (i = 0; i < (int)estack->nused && ret_value == H5_ITER_CONT; i++) - ret_value = (op->u.func2)((unsigned)i, estack->slot + i, client_data); + ret_value = (op->u.func2)((unsigned)i, &estack->entries[i].err, client_data); } /* end if */ else { H5_CHECK_OVERFLOW(estack->nused - 1, size_t, int); for (i = (int)(estack->nused - 1); i >= 0 && ret_value == H5_ITER_CONT; i--) - ret_value = (op->u.func2)((unsigned)(estack->nused - (size_t)(i + 1)), estack->slot + i, - client_data); + ret_value = (op->u.func2)((unsigned)(estack->nused - (size_t)(i + 1)), + &estack->entries[i].err, client_data); } /* end else */ if (ret_value < 0) @@ -567,7 +1321,7 @@ H5E__walk(const H5E_t *estack, H5E_direction_t direction, const H5E_walk_op_t *o *------------------------------------------------------------------------- */ herr_t -H5E__get_auto(const H5E_t *estack, H5E_auto_op_t *op, void **client_data) +H5E__get_auto(const H5E_stack_t *estack, H5E_auto_op_t *op, void **client_data) { FUNC_ENTER_PACKAGE_NOERR @@ -603,7 +1357,7 @@ H5E__get_auto(const H5E_t *estack, H5E_auto_op_t *op, void **client_data) *------------------------------------------------------------------------- */ herr_t -H5E__set_auto(H5E_t *estack, const H5E_auto_op_t *op, void *client_data) +H5E__set_auto(H5E_stack_t *estack, const H5E_auto_op_t *op, void *client_data) { FUNC_ENTER_PACKAGE_NOERR @@ -626,11 +1380,10 @@ H5E__set_auto(H5E_t *estack, const H5E_auto_op_t *op, void *client_data) *------------------------------------------------------------------------- */ herr_t -H5E_printf_stack(H5E_t *estack, const char *file, const char *func, unsigned line, hid_t cls_id, hid_t maj_id, - hid_t min_id, const char *fmt, ...) +H5E_printf_stack(const char *file, const char *func, unsigned line, hid_t maj_id, hid_t min_id, + const char *fmt, ...) { va_list ap; /* Varargs info */ - char *tmp = NULL; /* Buffer to place formatted description in */ bool va_started = false; /* Whether the variable argument list is open */ herr_t ret_value = SUCCEED; /* Return value */ @@ -644,9 +1397,8 @@ H5E_printf_stack(H5E_t *estack, const char *file, const char *func, unsigned lin FUNC_ENTER_NOAPI_NOINIT_NOERR /* Sanity check */ - assert(cls_id > 0); - assert(maj_id > 0); - assert(min_id > 0); + assert(maj_id >= H5E_first_maj_id_g && maj_id <= H5E_last_maj_id_g); + assert(min_id >= H5E_first_min_id_g && min_id <= H5E_last_min_id_g); assert(fmt); /* Note that the variable-argument parsing for the format is identical in @@ -658,22 +1410,13 @@ H5E_printf_stack(H5E_t *estack, const char *file, const char *func, unsigned lin va_start(ap, fmt); va_started = true; - /* Use the vasprintf() routine, since it does what we're trying to do below */ - if (HDvasprintf(&tmp, fmt, ap) < 0) - HGOTO_DONE(FAIL); - /* Push the error on the stack */ - if (H5E__push_stack(estack, file, func, line, cls_id, maj_id, min_id, tmp) < 0) + if (H5E__push_stack(NULL, false, file, func, line, H5E_ERR_CLS_g, maj_id, min_id, fmt, &ap) < 0) HGOTO_DONE(FAIL); done: if (va_started) va_end(ap); - /* Memory was allocated with HDvasprintf so it needs to be freed - * with free - */ - if (tmp) - free(tmp); FUNC_LEAVE_NOAPI(ret_value) } /* end H5E_printf_stack() */ @@ -696,8 +1439,8 @@ H5E_printf_stack(H5E_t *estack, const char *file, const char *func, unsigned lin *------------------------------------------------------------------------- */ herr_t -H5E__push_stack(H5E_t *estack, const char *file, const char *func, unsigned line, hid_t cls_id, hid_t maj_id, - hid_t min_id, const char *desc) +H5E__push_stack(H5E_stack_t *estack, bool app_entry, const char *file, const char *func, unsigned line, + hid_t cls_id, hid_t maj_id, hid_t min_id, const char *fmt, va_list *ap) { herr_t ret_value = SUCCEED; /* Return value */ @@ -723,9 +1466,10 @@ H5E__push_stack(H5E_t *estack, const char *file, const char *func, unsigned line /* * Push the error if there's room. Otherwise just forget it. */ - if (estack->nused < H5E_NSLOTS) { - if (H5E__set_stack_entry(&estack->slot[estack->nused], file, func, line, cls_id, maj_id, min_id, - desc) < 0) + if (estack->nused < H5E_MAX_ENTRIES) { + estack->entries[estack->nused].app_entry = app_entry; + if (H5E__set_stack_entry(&estack->entries[estack->nused].err, file, func, line, cls_id, maj_id, + min_id, fmt, ap) < 0) HGOTO_DONE(FAIL); estack->nused++; } /* end if */ @@ -734,6 +1478,56 @@ H5E__push_stack(H5E_t *estack, const char *file, const char *func, unsigned line FUNC_LEAVE_NOAPI(ret_value) } /* end H5E__push_stack() */ +/*------------------------------------------------------------------------- + * Function: H5E__copy_stack_entry + * + * Purpose: Copy a stack entry + * + * Return: SUCCEED/FAIL + * + *------------------------------------------------------------------------- + */ +static herr_t +H5E__copy_stack_entry(H5E_entry_t *dst_entry, const H5E_entry_t *src_entry) +{ + herr_t ret_value = SUCCEED; /* Return value */ + + FUNC_ENTER_PACKAGE + + /* Sanity check */ + assert(dst_entry); + assert(src_entry); + + /* Shallow copy all fields */ + *dst_entry = *src_entry; + + /* Deep copy application entries */ + if (dst_entry->app_entry) { + /* Note: don't waste time incrementing library internal error IDs */ + if (dst_entry->err.cls_id != H5E_ERR_CLS_g) + if (H5I_inc_ref(dst_entry->err.cls_id, false) < 0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINC, FAIL, "unable to increment ref count on error class"); + if (dst_entry->err.maj_num < H5E_first_maj_id_g || dst_entry->err.maj_num > H5E_last_maj_id_g) + if (H5I_inc_ref(dst_entry->err.maj_num, false) < 0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINC, FAIL, "unable to increment ref count on error message"); + if (dst_entry->err.min_num < H5E_first_min_id_g || dst_entry->err.min_num > H5E_last_min_id_g) + if (H5I_inc_ref(dst_entry->err.min_num, false) < 0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTINC, FAIL, "unable to increment ref count on error message"); + /* The library's 'func' & 'file' strings are statically allocated (by the compiler) + * there's no need to duplicate them. + */ + if (NULL == (dst_entry->err.file_name = strdup(src_entry->err.file_name))) + HGOTO_ERROR(H5E_ERROR, H5E_CANTCOPY, FAIL, "unable to duplicate file name"); + if (NULL == (dst_entry->err.func_name = strdup(src_entry->err.func_name))) + HGOTO_ERROR(H5E_ERROR, H5E_CANTCOPY, FAIL, "unable to duplicate function name"); + } + if (NULL == (dst_entry->err.desc = strdup(src_entry->err.desc))) + HGOTO_ERROR(H5E_ERROR, H5E_CANTCOPY, FAIL, "unable to duplicate error description"); + +done: + FUNC_LEAVE_NOAPI(ret_value) +} /* end H5E__copy_stack_entry() */ + /*------------------------------------------------------------------------- * Function: H5E__set_stack_entry * @@ -743,9 +1537,9 @@ H5E__push_stack(H5E_t *estack, const char *file, const char *func, unsigned line * *------------------------------------------------------------------------- */ -herr_t +static herr_t H5E__set_stack_entry(H5E_error2_t *err_entry, const char *file, const char *func, unsigned line, hid_t cls_id, - hid_t maj_id, hid_t min_id, const char *desc) + hid_t maj_id, hid_t min_id, const char *fmt, va_list *ap) { herr_t ret_value = SUCCEED; /* Return value */ @@ -772,31 +1566,40 @@ H5E__set_stack_entry(H5E_error2_t *err_entry, const char *file, const char *func func = "Unknown_Function"; if (!file) file = "Unknown_File"; - if (!desc) - desc = "No description given"; + if (!fmt) + fmt = "No description given"; - /* Increment the IDs to indicate that they are used in this stack */ - /* Note: don't waste time incrementing library internal error IDs */ - if (cls_id != H5E_ERR_CLS_g) - if (H5I_inc_ref_noherr(cls_id, false) < 0) - HGOTO_DONE(FAIL); - err_entry->cls_id = cls_id; - if (maj_id < H5E_first_maj_id_g || maj_id > H5E_last_maj_id_g) - if (H5I_inc_ref_noherr(maj_id, false) < 0) - HGOTO_DONE(FAIL); + /* Set the entry fields */ + /* NOTE: non-library IDs have already been incremented */ + err_entry->cls_id = cls_id; err_entry->maj_num = maj_id; - if (min_id < H5E_first_min_id_g || min_id > H5E_last_min_id_g) - if (H5I_inc_ref_noherr(min_id, false) < 0) - HGOTO_DONE(FAIL); err_entry->min_num = min_id; - /* The 'func' & 'file' strings are statically allocated (by the compiler) - * there's no need to duplicate them. + /* The 'func' & 'file' strings are either statically allocated (by the + * compiler), for internal error messages, or have already been duplicated, + * for application errors, so there's no need to duplicate them here. */ err_entry->func_name = func; err_entry->file_name = file; err_entry->line = line; - if (NULL == (err_entry->desc = strdup(desc))) - HGOTO_DONE(FAIL); + if (ap) { + char *desc = NULL; + + /* GCC complains about the 'fmt' parameter, but it's either from static + * strings in the library, which we know are OK, or from application + * error push calls, and the application should be sanity checking their + * strings. + */ + H5_GCC_CLANG_DIAG_OFF("format-nonliteral") + if (HDvasprintf(&desc, fmt, *ap) < 0) + HGOTO_DONE(FAIL); + H5_GCC_CLANG_DIAG_ON("format-nonliteral") + + err_entry->desc = desc; + } + else { + if (NULL == (err_entry->desc = strdup(fmt))) + HGOTO_DONE(FAIL); + } done: FUNC_LEAVE_NOAPI(ret_value) @@ -813,11 +1616,10 @@ H5E__set_stack_entry(H5E_error2_t *err_entry, const char *file, const char *func *------------------------------------------------------------------------- */ static herr_t -H5E__clear_entries(H5E_t *estack, size_t nentries) +H5E__clear_entries(H5E_stack_t *estack, size_t nentries) { - H5E_error2_t *error; /* Pointer to error stack entry to clear */ - unsigned u; /* Local index variable */ - herr_t ret_value = SUCCEED; /* Return value */ + unsigned u; /* Local index variable */ + herr_t ret_value = SUCCEED; /* Return value */ FUNC_ENTER_PACKAGE @@ -827,29 +1629,34 @@ H5E__clear_entries(H5E_t *estack, size_t nentries) /* Empty the error stack from the top down */ for (u = 0; nentries > 0; nentries--, u++) { - error = &(estack->slot[estack->nused - (u + 1)]); + H5E_entry_t *error; /* Pointer to error stack entry to clear */ + + error = &(estack->entries[estack->nused - (u + 1)]); /* Decrement the IDs to indicate that they are no longer used by this stack */ /* (In reverse order that they were incremented, so that reference counts work well) */ /* Note: don't decrement library internal error IDs, since they weren't incremented */ - if (error->min_num < H5E_first_min_id_g || error->min_num > H5E_last_min_id_g) - if (H5I_dec_ref(error->min_num) < 0) + if (error->err.min_num < H5E_first_min_id_g || error->err.min_num > H5E_last_min_id_g) + if (H5I_dec_ref(error->err.min_num) < 0) HGOTO_ERROR(H5E_ERROR, H5E_CANTDEC, FAIL, "unable to decrement ref count on error message"); - if (error->maj_num < H5E_first_maj_id_g || error->maj_num > H5E_last_maj_id_g) - if (H5I_dec_ref(error->maj_num) < 0) + if (error->err.maj_num < H5E_first_maj_id_g || error->err.maj_num > H5E_last_maj_id_g) + if (H5I_dec_ref(error->err.maj_num) < 0) HGOTO_ERROR(H5E_ERROR, H5E_CANTDEC, FAIL, "unable to decrement ref count on error message"); - if (error->cls_id != H5E_ERR_CLS_g) - if (H5I_dec_ref(error->cls_id) < 0) + if (error->err.cls_id != H5E_ERR_CLS_g) + if (H5I_dec_ref(error->err.cls_id) < 0) HGOTO_ERROR(H5E_ERROR, H5E_CANTDEC, FAIL, "unable to decrement ref count on error class"); /* Release strings */ - /* The 'func' & 'file' strings are statically allocated (by the compiler) - * and are not allocated, so there's no need to free them. + /* The library's 'func' & 'file' strings are statically allocated (by the + * compiler) and are not allocated, so there's no need to free them. */ - error->func_name = NULL; - error->file_name = NULL; - if (error->desc) - error->desc = (const char *)H5MM_xfree_const(error->desc); + if (error->app_entry) { + H5MM_xfree_const(error->err.file_name); + H5MM_xfree_const(error->err.func_name); + } + error->err.file_name = NULL; + error->err.func_name = NULL; + error->err.desc = (const char *)H5MM_xfree_const(error->err.desc); } /* Decrement number of errors on stack */ @@ -862,34 +1669,61 @@ H5E__clear_entries(H5E_t *estack, size_t nentries) /*------------------------------------------------------------------------- * Function: H5E_clear_stack * - * Purpose: Private function to clear the error stack for the - * specified error stack. + * Purpose: Clear the default error stack * * Return: SUCCEED/FAIL * *------------------------------------------------------------------------- */ herr_t -H5E_clear_stack(H5E_t *estack) +H5E_clear_stack(void) { - herr_t ret_value = SUCCEED; /* Return value */ + H5E_stack_t *estack; /* Error stack to clear */ + herr_t ret_value = SUCCEED; /* Return value */ FUNC_ENTER_NOAPI(FAIL) + /* Get 'default' error stack */ + if (NULL == (estack = H5E__get_my_stack())) + HGOTO_ERROR(H5E_ERROR, H5E_CANTGET, FAIL, "can't get current error stack"); + + /* Empty the error stack */ + if (H5E__clear_entries(estack, estack->nused) < 0) + HGOTO_ERROR(H5E_ERROR, H5E_CANTSET, FAIL, "can't clear error stack"); + +done: + FUNC_LEAVE_NOAPI(ret_value) +} /* end H5E_clear_stack() */ + +/*------------------------------------------------------------------------- + * Function: H5E__clear_stack + * + * Purpose: Clear the specified error stack + * + * Return: SUCCEED/FAIL + * + *------------------------------------------------------------------------- + */ +herr_t +H5E__clear_stack(H5E_stack_t *estack) +{ + herr_t ret_value = SUCCEED; /* Return value */ + + FUNC_ENTER_PACKAGE + /* Check for 'default' error stack */ if (estack == NULL) if (NULL == (estack = H5E__get_my_stack())) HGOTO_ERROR(H5E_ERROR, H5E_CANTGET, FAIL, "can't get current error stack"); /* Empty the error stack */ - assert(estack); if (estack->nused) if (H5E__clear_entries(estack, estack->nused) < 0) HGOTO_ERROR(H5E_ERROR, H5E_CANTSET, FAIL, "can't clear error stack"); done: FUNC_LEAVE_NOAPI(ret_value) -} /* end H5E_clear_stack() */ +} /* end H5E__clear_stack() */ /*------------------------------------------------------------------------- * Function: H5E__pop @@ -902,7 +1736,7 @@ H5E_clear_stack(H5E_t *estack) *------------------------------------------------------------------------- */ herr_t -H5E__pop(H5E_t *estack, size_t count) +H5E__pop(H5E_stack_t *estack, size_t count) { herr_t ret_value = SUCCEED; /* Return value */ @@ -934,8 +1768,8 @@ H5E__pop(H5E_t *estack, size_t count) herr_t H5E_dump_api_stack(void) { - H5E_t *estack = H5E__get_my_stack(); - herr_t ret_value = SUCCEED; /* Return value */ + H5E_stack_t *estack = H5E__get_my_stack(); + herr_t ret_value = SUCCEED; /* Return value */ FUNC_ENTER_NOAPI_NOERR diff --git a/src/H5Epkg.h b/src/H5Epkg.h index 48373f4d974..2d950ca3d7b 100644 --- a/src/H5Epkg.h +++ b/src/H5Epkg.h @@ -34,8 +34,8 @@ /* Amount to indent each error */ #define H5E_INDENT 2 -/* Number of slots in an error stack */ -#define H5E_NSLOTS 32 +/* Number of entries in an error stack */ +#define H5E_MAX_ENTRIES 32 #ifdef H5_HAVE_THREADSAFE /* @@ -45,7 +45,7 @@ * be handled by the pthread library. * * In order for this macro to work, H5E__get_my_stack() must be preceded - * by "H5E_t *estack =". + * by "H5E_stack_t *estack =". */ #define H5E__get_my_stack() H5E__get_stack() #else /* H5_HAVE_THREADSAFE */ @@ -88,25 +88,33 @@ typedef struct { /* Error class */ typedef struct H5E_cls_t { - char *cls_name; /* Name of error class */ - char *lib_name; /* Name of library within class */ - char *lib_vers; /* Version of library */ + bool app_cls; /* Whether the class came from app */ + const char *cls_name; /* Name of error class */ + const char *lib_name; /* Name of library within class */ + const char *lib_vers; /* Version of library */ } H5E_cls_t; /* Major or minor message */ typedef struct H5E_msg_t { - char *msg; /* Message for error */ - H5E_type_t type; /* Type of error (major or minor) */ - H5E_cls_t *cls; /* Which error class this message belongs to */ + bool app_msg; /* Whether the message came from app */ + const char *msg; /* Message for error */ + H5E_type_t type; /* Type of error (major or minor) */ + const H5E_cls_t *cls; /* Which error class this message belongs to */ } H5E_msg_t; +/* Error stack entry */ +typedef struct H5E_entry_t { + bool app_entry; /* Whether the entry came from app */ + H5E_error2_t err; /* Error entry */ +} H5E_entry_t; + /* Error stack */ -struct H5E_t { - size_t nused; /* Num slots currently used in stack */ - H5E_error2_t slot[H5E_NSLOTS]; /* Array of error records */ - H5E_auto_op_t auto_op; /* Operator for 'automatic' error reporting */ - void *auto_data; /* Callback data for 'automatic error reporting */ -}; +typedef struct H5E_stack_t { + size_t nused; /* Num entries currently on stack */ + H5E_entry_t entries[H5E_MAX_ENTRIES]; /* Array of error entries */ + H5E_auto_op_t auto_op; /* Operator for 'automatic' error reporting */ + void *auto_data; /* Callback data for 'automatic error reporting */ +} H5E_stack_t; /*****************************/ /* Package Private Variables */ @@ -116,7 +124,7 @@ struct H5E_t { /* * The current error stack. */ -H5_DLLVAR H5E_t H5E_stack_g[1]; +H5_DLLVAR H5E_stack_t H5E_stack_g[1]; #endif /* First & last major and minor error codes registered by the library */ @@ -128,20 +136,28 @@ H5_DLLVAR hid_t H5E_last_min_id_g; /******************************/ /* Package Private Prototypes */ /******************************/ -H5_DLL herr_t H5E__term_deprec_interface(void); #ifdef H5_HAVE_THREADSAFE -H5_DLL H5E_t *H5E__get_stack(void); +H5_DLL H5E_stack_t *H5E__get_stack(void); #endif /* H5_HAVE_THREADSAFE */ -H5_DLL herr_t H5E__push_stack(H5E_t *estack, const char *file, const char *func, unsigned line, hid_t cls_id, - hid_t maj_id, hid_t min_id, const char *desc); -H5_DLL herr_t H5E__set_stack_entry(H5E_error2_t *err_entry, const char *file, const char *func, unsigned line, - hid_t cls_id, hid_t maj_id, hid_t min_id, const char *desc); -H5_DLL ssize_t H5E__get_msg(const H5E_msg_t *msg_ptr, H5E_type_t *type, char *msg, size_t size); -H5_DLL herr_t H5E__print(const H5E_t *estack, FILE *stream, bool bk_compat); -H5_DLL herr_t H5E__walk(const H5E_t *estack, H5E_direction_t direction, const H5E_walk_op_t *op, - void *client_data); -H5_DLL herr_t H5E__get_auto(const H5E_t *estack, H5E_auto_op_t *op, void **client_data); -H5_DLL herr_t H5E__set_auto(H5E_t *estack, const H5E_auto_op_t *op, void *client_data); -H5_DLL herr_t H5E__pop(H5E_t *err_stack, size_t count); +H5_DLL H5E_cls_t *H5E__register_class(const char *cls_name, const char *lib_name, const char *version); +H5_DLL ssize_t H5E__get_class_name(const H5E_cls_t *cls, char *name, size_t size); +H5_DLL H5E_msg_t *H5E__create_msg(H5E_cls_t *cls, H5E_type_t msg_type, const char *msg); +H5_DLL ssize_t H5E__get_msg(const H5E_msg_t *msg_ptr, H5E_type_t *type, char *msg, size_t size); +H5_DLL void H5E__set_default_auto(H5E_stack_t *stk); +H5_DLL H5E_stack_t *H5E__get_current_stack(void); +H5_DLL herr_t H5E__set_current_stack(H5E_stack_t *estack); +H5_DLL ssize_t H5E__get_num(const H5E_stack_t *err_stack); +H5_DLL herr_t H5E__push_stack(H5E_stack_t *estack, bool app_entry, const char *file, const char *func, + unsigned line, hid_t cls_id, hid_t maj_id, hid_t min_id, const char *fmt, + va_list *ap); +H5_DLL herr_t H5E__print(const H5E_stack_t *estack, FILE *stream, bool bk_compat); +H5_DLL herr_t H5E__print2(hid_t err_stack, FILE *stream); +H5_DLL herr_t H5E__walk(const H5E_stack_t *estack, H5E_direction_t direction, const H5E_walk_op_t *op, + void *client_data); +H5_DLL herr_t H5E__get_auto(const H5E_stack_t *estack, H5E_auto_op_t *op, void **client_data); +H5_DLL herr_t H5E__set_auto(H5E_stack_t *estack, const H5E_auto_op_t *op, void *client_data); +H5_DLL herr_t H5E__pop(H5E_stack_t *err_stack, size_t count); +H5_DLL herr_t H5E__append_stack(H5E_stack_t *dst_estack, const H5E_stack_t *src_stack); +H5_DLL herr_t H5E__clear_stack(H5E_stack_t *estack); #endif /* H5Epkg_H */ diff --git a/src/H5Eprivate.h b/src/H5Eprivate.h index fd86e96806b..3777805aeb9 100644 --- a/src/H5Eprivate.h +++ b/src/H5Eprivate.h @@ -21,9 +21,6 @@ /* Private headers needed by this file */ #include "H5private.h" -/* Typedef for error stack (defined in H5Epkg.h) */ -typedef struct H5E_t H5E_t; - /* * HERROR macro, used to facilitate error reporting between a FUNC_ENTER() * and a FUNC_LEAVE() within a function body. The arguments are the major @@ -31,7 +28,7 @@ typedef struct H5E_t H5E_t; */ #define HERROR(maj_id, min_id, ...) \ do { \ - H5E_printf_stack(NULL, __FILE__, __func__, __LINE__, H5E_ERR_CLS_g, maj_id, min_id, __VA_ARGS__); \ + H5E_printf_stack(__FILE__, __func__, __LINE__, maj_id, min_id, __VA_ARGS__); \ } while (0) /* @@ -185,9 +182,9 @@ extern int H5E_mpi_error_str_len; /* Library-private functions defined in H5E package */ H5_DLL herr_t H5E_init(void); -H5_DLL herr_t H5E_printf_stack(H5E_t *estack, const char *file, const char *func, unsigned line, hid_t cls_id, - hid_t maj_id, hid_t min_id, const char *fmt, ...) H5_ATTR_FORMAT(printf, 8, 9); -H5_DLL herr_t H5E_clear_stack(H5E_t *estack); +H5_DLL herr_t H5E_printf_stack(const char *file, const char *func, unsigned line, hid_t maj_idx, + hid_t min_idx, const char *fmt, ...) H5_ATTR_FORMAT(printf, 6, 7); +H5_DLL herr_t H5E_clear_stack(void); H5_DLL herr_t H5E_dump_api_stack(void); #endif /* H5Eprivate_H */ diff --git a/src/H5FDfamily.c b/src/H5FDfamily.c index 22efa901812..49fd484a4eb 100644 --- a/src/H5FDfamily.c +++ b/src/H5FDfamily.c @@ -779,7 +779,7 @@ H5FD__family_open(const char *name, unsigned flags, hid_t fapl_id, haddr_t maxad if (!file->memb[file->nmembs]) { if (0 == file->nmembs) HGOTO_ERROR(H5E_FILE, H5E_CANTOPENFILE, NULL, "unable to open member file"); - H5E_clear_stack(NULL); + H5E_clear_stack(); break; } file->nmembs++; @@ -1497,7 +1497,7 @@ H5FD__family_delete(const char *filename, hid_t fapl_id) if (0 == current_member) HGOTO_ERROR(H5E_VFL, H5E_CANTDELETEFILE, FAIL, "unable to delete member file"); else - H5E_clear_stack(NULL); + H5E_clear_stack(); break; } current_member++; diff --git a/src/H5FDonion.c b/src/H5FDonion.c index 45a90de9165..f1b46d83ada 100644 --- a/src/H5FDonion.c +++ b/src/H5FDonion.c @@ -468,7 +468,7 @@ H5FD__onion_commit_new_revision_record(H5FD_onion_t *file) if ((true == file->is_open_rw) && (H5FD__onion_merge_revision_index_into_archival_index( file->rev_index, &file->curr_rev_record.archival_index) < 0)) - HGOTO_ERROR(H5E_VFL, H5E_INTERNAL, FAIL, "unable to update index to write"); + HGOTO_ERROR(H5E_VFL, H5E_CANTUPDATE, FAIL, "unable to update index to write"); if (NULL == (buf = H5MM_malloc(H5FD_ONION_ENCODED_SIZE_REVISION_RECORD + (size_t)rec->comment_size + (H5FD_ONION_ENCODED_SIZE_INDEX_ENTRY * rec->archival_index.n_entries)))) diff --git a/src/H5Fint.c b/src/H5Fint.c index 45ded824a7e..3c3c4cb8dd3 100644 --- a/src/H5Fint.c +++ b/src/H5Fint.c @@ -859,7 +859,7 @@ H5F_prefix_open_file(H5F_t *primary_file, H5F_prefix_open_t prefix_type, const c char *ptr; /* Reset the error stack */ - H5E_clear_stack(NULL); + H5E_clear_stack(); /* Get last component of file_name */ H5_GET_LAST_DELIMITER(file_name, ptr) @@ -880,7 +880,7 @@ H5F_prefix_open_file(H5F_t *primary_file, H5F_prefix_open_t prefix_type, const c /* Adjust temporary file name if file not opened */ if (NULL == src_file) { /* Reset the error stack */ - H5E_clear_stack(NULL); + H5E_clear_stack(); /* Strip ":" */ strncpy(temp_file_name, &file_name[2], temp_file_name_len); @@ -928,11 +928,11 @@ H5F_prefix_open_file(H5F_t *primary_file, H5F_prefix_open_t prefix_type, const c /* Check for file not opened */ if (NULL == src_file) /* Reset the error stack */ - H5E_clear_stack(NULL); + H5E_clear_stack(); /* Leave if file was opened */ else break; - H5E_clear_stack(NULL); + H5E_clear_stack(); } /* end if */ } /* end while */ @@ -955,7 +955,7 @@ H5F_prefix_open_file(H5F_t *primary_file, H5F_prefix_open_t prefix_type, const c /* Check for file not opened */ if (NULL == src_file) /* Reset the error stack */ - H5E_clear_stack(NULL); + H5E_clear_stack(); } /* end if */ /* Try searching from main file's "extpath": see description in H5F_open() & H5_build_extpath() */ @@ -976,7 +976,7 @@ H5F_prefix_open_file(H5F_t *primary_file, H5F_prefix_open_t prefix_type, const c /* Check for file not opened */ if (NULL == src_file) /* Reset the error stack */ - H5E_clear_stack(NULL); + H5E_clear_stack(); } /* end if */ } /* end if */ @@ -988,7 +988,7 @@ H5F_prefix_open_file(H5F_t *primary_file, H5F_prefix_open_t prefix_type, const c /* Check for file not opened */ if (NULL == src_file) /* Reset the error stack */ - H5E_clear_stack(NULL); + H5E_clear_stack(); } /* end if */ /* try the 'resolved' name for the virtual file */ @@ -1019,7 +1019,7 @@ H5F_prefix_open_file(H5F_t *primary_file, H5F_prefix_open_t prefix_type, const c /* Check for file not opened */ if (NULL == src_file) /* Reset the error stack */ - H5E_clear_stack(NULL); + H5E_clear_stack(); } /* end if */ /* Set return value (possibly NULL or valid H5F_t *) */ @@ -1893,7 +1893,7 @@ H5F_open(const char *name, unsigned flags, hid_t fcpl_id, hid_t fapl_id) */ if ((tent_flags == flags) || (lf == NULL)) { if (tent_flags != flags) { - H5E_clear_stack(NULL); + H5E_clear_stack(); tent_flags = flags; } diff --git a/src/H5Fpkg.h b/src/H5Fpkg.h index 7e12ff111d0..06d13ebffdd 100644 --- a/src/H5Fpkg.h +++ b/src/H5Fpkg.h @@ -131,6 +131,10 @@ (H5F_SUPERBLOCK_FIXED_SIZE + \ H5F_SUPERBLOCK_VARLEN_SIZE((s)->super_vers, (s)->sizeof_addr, (s)->sizeof_size)) +/* Optimistic read size for superblock */ +/* Size of a v2+ superblock, w/8-byte addresses & lengths */ +#define H5F_SUPERBLOCK_SPEC_READ_SIZE (H5F_SUPERBLOCK_FIXED_SIZE + H5F_SUPERBLOCK_VARLEN_SIZE(2, 8, 8)) + /* For superblock version 0 & 1: Offset to the file consistency flags (status_flags) in the superblock (excluding H5F_SUPERBLOCK_FIXED_SIZE) */ diff --git a/src/H5Fsuper.c b/src/H5Fsuper.c index 3e5bc9a3a2b..b42240dfb11 100644 --- a/src/H5Fsuper.c +++ b/src/H5Fsuper.c @@ -415,8 +415,7 @@ H5F__super_read(H5F_t *f, H5P_genplist_t *fa_plist, bool initial_read) HGOTO_ERROR(H5E_FILE, H5E_BADTYPE, FAIL, "can't get property list"); /* Make certain we can read the fixed-size portion of the superblock */ - if (H5F__set_eoa(f, H5FD_MEM_SUPER, - (haddr_t)(H5F_SUPERBLOCK_FIXED_SIZE + H5F_SUPERBLOCK_MINIMAL_VARLEN_SIZE)) < 0) + if (H5F__set_eoa(f, H5FD_MEM_SUPER, (haddr_t)H5F_SUPERBLOCK_SPEC_READ_SIZE) < 0) HGOTO_ERROR(H5E_FILE, H5E_CANTSET, FAIL, "set end of space allocation request failed"); /* Set up the user data for cache callbacks */ @@ -582,13 +581,10 @@ H5F__super_read(H5F_t *f, H5P_genplist_t *fa_plist, bool initial_read) if (H5F_INTENT(f) & H5F_ACC_SWMR_READ) { /* - * When the file is opened for SWMR read access, skip the check if: - * --the file is already marked for SWMR writing and - * --the file has version 3 superblock for SWMR support + * When the file is opened for SWMR read access, skip the check if + * the file has a version 3 superblock capable of SWMR support */ - if ((sblock->status_flags & H5F_SUPER_SWMR_WRITE_ACCESS) && - (sblock->status_flags & H5F_SUPER_WRITE_ACCESS) && - sblock->super_vers >= HDF5_SUPERBLOCK_VERSION_3) + if (sblock->super_vers >= HDF5_SUPERBLOCK_VERSION_3) skip_eof_check = true; } if (!skip_eof_check && initial_read) { diff --git a/src/H5Fsuper_cache.c b/src/H5Fsuper_cache.c index 9c475ab26a2..2a425099b47 100644 --- a/src/H5Fsuper_cache.c +++ b/src/H5Fsuper_cache.c @@ -306,8 +306,7 @@ H5F__cache_superblock_get_initial_load_size(void H5_ATTR_UNUSED *_udata, size_t assert(image_len); /* Set the initial image length size */ - *image_len = H5F_SUPERBLOCK_FIXED_SIZE + /* Fixed size of superblock */ - H5F_SUPERBLOCK_MINIMAL_VARLEN_SIZE; + *image_len = H5F_SUPERBLOCK_SPEC_READ_SIZE; FUNC_LEAVE_NOAPI(SUCCEED) } /* end H5F__cache_superblock_get_initial_load_size() */ diff --git a/src/H5Gint.c b/src/H5Gint.c index 34072df90e6..a7268adcbba 100644 --- a/src/H5Gint.c +++ b/src/H5Gint.c @@ -439,7 +439,7 @@ H5G_open(const H5G_loc_t *loc) if ((shared_fo = (H5G_shared_t *)H5FO_opened(grp->oloc.file, grp->oloc.addr)) == NULL) { /* Clear any errors from H5FO_opened() */ - H5E_clear_stack(NULL); + H5E_clear_stack(); /* Open the group object */ if (H5G__open_oid(grp) < 0) @@ -506,7 +506,8 @@ static herr_t H5G__open_oid(H5G_t *grp) { bool obj_opened = false; - herr_t ret_value = SUCCEED; + htri_t msg_exists; + herr_t ret_value = SUCCEED; FUNC_ENTER_PACKAGE @@ -523,8 +524,14 @@ H5G__open_oid(H5G_t *grp) obj_opened = true; /* Check if this object has the right message(s) to be treated as a group */ - if ((H5O_msg_exists(&(grp->oloc), H5O_STAB_ID) <= 0) && (H5O_msg_exists(&(grp->oloc), H5O_LINFO_ID) <= 0)) - HGOTO_ERROR(H5E_SYM, H5E_CANTOPENOBJ, FAIL, "not a group"); + if ((msg_exists = H5O_msg_exists(&(grp->oloc), H5O_STAB_ID)) < 0) + HGOTO_ERROR(H5E_SYM, H5E_CANTGET, FAIL, "can't check if symbol table message exists"); + if (!msg_exists) { + if ((msg_exists = H5O_msg_exists(&(grp->oloc), H5O_LINFO_ID)) < 0) + HGOTO_ERROR(H5E_SYM, H5E_CANTGET, FAIL, "can't check if link info message exists"); + if (!msg_exists) + HGOTO_ERROR(H5E_SYM, H5E_CANTOPENOBJ, FAIL, "not a group"); + } done: if (ret_value < 0) { diff --git a/src/H5Gloc.c b/src/H5Gloc.c index 6e9d29845a0..897debcb1bd 100644 --- a/src/H5Gloc.c +++ b/src/H5Gloc.c @@ -591,7 +591,7 @@ H5G__loc_exists_cb(H5G_loc_t H5_ATTR_UNUSED *grp_loc /*in*/, const char H5_ATTR_ if (lnk) *exists = false; else - HGOTO_ERROR(H5E_SYM, H5E_INTERNAL, FAIL, "no object or link info?"); + HGOTO_ERROR(H5E_SYM, H5E_NOTFOUND, FAIL, "no object or link info?"); else *exists = true; diff --git a/src/H5Gnode.c b/src/H5Gnode.c index f211e74e041..cc45f39b1d6 100644 --- a/src/H5Gnode.c +++ b/src/H5Gnode.c @@ -1428,7 +1428,7 @@ H5G_node_debug(H5F_t *f, haddr_t addr, FILE *stream, int indent, int fwidth, had if (NULL == (sn = (H5G_node_t *)H5AC_protect(f, H5AC_SNODE, addr, f, H5AC__READ_ONLY_FLAG))) { H5G_bt_common_t udata; /*data to pass through B-tree */ - H5E_clear_stack(NULL); /* discard that error */ + H5E_clear_stack(); /* discard that error */ udata.heap = heap; udata.block_size = H5HL_heap_get_size(heap); if (H5B_debug(f, addr, stream, indent, fwidth, H5B_SNODE, &udata) < 0) diff --git a/src/H5Gstab.c b/src/H5Gstab.c index 1ebd13681b1..6c7e6db8824 100644 --- a/src/H5Gstab.c +++ b/src/H5Gstab.c @@ -999,7 +999,7 @@ H5G__stab_valid(H5O_loc_t *grp_oloc, H5O_stab_t *alt_stab) /* Update the symbol table message and clear errors if necessary */ if (changed) { - H5E_clear_stack(NULL); + H5E_clear_stack(); if (H5O_msg_write(grp_oloc, H5O_STAB_ID, 0, H5O_UPDATE_TIME | H5O_UPDATE_FORCE, &stab) < 0) HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "unable to correct symbol table message"); } /* end if */ diff --git a/src/H5Gtraverse.c b/src/H5Gtraverse.c index 00732c3c987..d113b576b18 100644 --- a/src/H5Gtraverse.c +++ b/src/H5Gtraverse.c @@ -199,7 +199,7 @@ H5G__traverse_ud(const H5G_loc_t *grp_loc /*in,out*/, const H5O_link_t *lnk, H5G /* Check if we just needed to know if the object exists */ if (target & H5G_TARGET_EXISTS) { /* Clear any errors from the stack */ - H5E_clear_stack(NULL); + H5E_clear_stack(); /* Indicate that the object doesn't exist */ *obj_exists = false; diff --git a/src/H5Iint.c b/src/H5Iint.c index 1df3ae907a8..fe3b90c2454 100644 --- a/src/H5Iint.c +++ b/src/H5Iint.c @@ -1230,27 +1230,6 @@ H5I_dec_app_ref_always_close_async(hid_t id, void **token) FUNC_LEAVE_NOAPI(ret_value) } /* end H5I_dec_app_ref_always_close_async() */ -/*------------------------------------------------------------------------- - * Function: H5I_do_inc_ref - * - * Purpose: Helper function for H5I_inc_ref/H5I_inc_ref_noherr to - * actually increment the reference count for an object. - * - * Return: The new reference count (can't fail) - * - *------------------------------------------------------------------------- - */ -static inline int -H5I_do_inc_ref(H5I_id_info_t *info, bool app_ref) -{ - /* Adjust reference counts */ - ++(info->count); - if (app_ref) - ++(info->app_count); - - return (int)(app_ref ? info->app_count : info->count); -} - /*------------------------------------------------------------------------- * Function: H5I_inc_ref * @@ -1276,58 +1255,17 @@ H5I_inc_ref(hid_t id, bool app_ref) if (NULL == (info = H5I__find_id(id))) HGOTO_ERROR(H5E_ID, H5E_BADID, (-1), "can't locate ID"); - /* Set return value */ - ret_value = H5I_do_inc_ref(info, app_ref); - -done: - FUNC_LEAVE_NOAPI(ret_value) -} /* end H5I_inc_ref() */ - -/*------------------------------------------------------------------------- - * Function: H5I_inc_ref_noherr - * - * Purpose: Increment the reference count for an object. Exactly like - * H5I_inc_ref, except that it makes use of HGOTO_DONE on - * failure instead of HGOTO_ERROR. This function is - * specifically meant to be used in the H5E package, where we - * have to avoid calling any function or macro that may call - * HGOTO_ERROR and similar. Otherwise, we can cause a stack - * overflow that looks like (for example): - * - * H5E_printf_stack() - * H5E__push_stack() - * H5I_inc_ref() - * H5I__find_id() (FAIL) - * HGOTO_ERROR() - * H5E_printf_stack() - * ... - * - * Return: Success: The new reference count - * Failure: -1 - * - *------------------------------------------------------------------------- - */ -int -H5I_inc_ref_noherr(hid_t id, bool app_ref) -{ - H5I_id_info_t *info = NULL; /* Pointer to the ID info */ - int ret_value = 0; /* Return value */ - - FUNC_ENTER_NOAPI_NOERR - - /* Sanity check */ - assert(id >= 0); - - /* General lookup of the ID */ - if (NULL == (info = H5I__find_id(id))) - HGOTO_DONE((-1)); + /* Adjust reference counts */ + ++(info->count); + if (app_ref) + ++(info->app_count); /* Set return value */ - ret_value = H5I_do_inc_ref(info, app_ref); + ret_value = (int)(app_ref ? info->app_count : info->count); done: FUNC_LEAVE_NOAPI(ret_value) -} /* end H5I_inc_ref_noherr() */ +} /* end H5I_inc_ref() */ /*------------------------------------------------------------------------- * Function: H5I_get_ref diff --git a/src/H5Iprivate.h b/src/H5Iprivate.h index 83fdacc686f..75a5787b616 100644 --- a/src/H5Iprivate.h +++ b/src/H5Iprivate.h @@ -68,7 +68,6 @@ H5_DLL H5I_type_t H5I_get_type(hid_t id); H5_DLL herr_t H5I_iterate(H5I_type_t type, H5I_search_func_t func, void *udata, bool app_ref); H5_DLL int H5I_get_ref(hid_t id, bool app_ref); H5_DLL int H5I_inc_ref(hid_t id, bool app_ref); -H5_DLL int H5I_inc_ref_noherr(hid_t id, bool app_ref); H5_DLL int H5I_dec_ref(hid_t id); H5_DLL int H5I_dec_app_ref(hid_t id); H5_DLL int H5I_dec_app_ref_async(hid_t id, void **token); diff --git a/src/H5Ocopy.c b/src/H5Ocopy.c index d6002046269..6299b7583af 100644 --- a/src/H5Ocopy.c +++ b/src/H5Ocopy.c @@ -1468,7 +1468,7 @@ H5O__copy_search_comm_dt(H5F_t *file_src, H5O_t *oh_src, H5O_loc_t *oloc_dst /*i if (H5G_loc_find(&dst_root_loc, suggestion->path, &obj_loc /*out*/) < 0) /* Ignore errors - i.e. suggestions not present in * destination file */ - H5E_clear_stack(NULL); + H5E_clear_stack(); else /* Check object and add to skip list if appropriate */ if (H5O__copy_search_comm_dt_check(&obj_oloc, &udata) < 0) { diff --git a/src/H5Odbg.c b/src/H5Odbg.c index 78bace66392..cfdff270e40 100644 --- a/src/H5Odbg.c +++ b/src/H5Odbg.c @@ -87,6 +87,10 @@ H5O__assert(const H5O_t *oh) FUNC_ENTER_PACKAGE_NOERR + assert(oh); + assert(oh->chunk || oh->nchunks == 0); + assert(oh->mesg || oh->nmesgs == 0); + /* Initialize the tracking variables */ hdr_size = 0; meta_space = (size_t)H5O_SIZEOF_HDR(oh) + (size_t)(H5O_SIZEOF_CHKHDR_OH(oh) * (oh->nchunks - 1)); @@ -140,6 +144,8 @@ H5O__assert(const H5O_t *oh) uint8_t H5_ATTR_NDEBUG_UNUSED *curr_hdr; /* Start of current message header */ size_t curr_tot_size; /* Total size of current message (including header) */ + assert(curr_msg->type); + curr_hdr = curr_msg->raw - H5O_SIZEOF_MSGHDR_OH(oh); curr_tot_size = curr_msg->raw_size + (size_t)H5O_SIZEOF_MSGHDR_OH(oh); diff --git a/src/H5Oint.c b/src/H5Oint.c index cf414a2d407..460ccb63a7b 100644 --- a/src/H5Oint.c +++ b/src/H5Oint.c @@ -1112,7 +1112,9 @@ H5O_protect(const H5O_loc_t *loc, unsigned prot_flags, bool pin_all_chunks) if (cont_msg_info.msgs) cont_msg_info.msgs = (H5O_cont_t *)H5FL_SEQ_FREE(H5O_cont_t, cont_msg_info.msgs); - if (H5O_unprotect(loc, oh, H5AC__NO_FLAGS_SET) < 0) + /* Unprotect the ohdr and delete it from cache since if we failed to load it it's in an inconsistent + * state */ + if (H5O_unprotect(loc, oh, H5AC__DELETED_FLAG) < 0) HDONE_ERROR(H5E_OHDR, H5E_CANTUNPROTECT, NULL, "unable to release object header"); } @@ -1233,10 +1235,21 @@ H5O_unprotect(const H5O_loc_t *loc, H5O_t *oh, unsigned oh_flags) } /* end if */ } /* end for */ - /* Reet the flag from the unprotect */ + /* Reset the flag from the unprotect */ oh->chunks_pinned = false; } /* end if */ + /* Remove the other chunks if we're removing the ohdr (due to a failure) */ + if (oh_flags & H5AC__DELETED_FLAG) { + unsigned u; /* Local index variable */ + + /* Iterate over chunks > 0 */ + for (u = 1; u < oh->nchunks; u++) + /* Expunge chunk proxy from cache */ + if (H5AC_expunge_entry(loc->file, H5AC_OHDR_CHK, oh->chunk[u].addr, H5AC__NO_FLAGS_SET) < 0) + HGOTO_ERROR(H5E_OHDR, H5E_CANTUNPIN, FAIL, "unable to expunge object header chunk"); + } /* end if */ + /* Unprotect the object header */ if (H5AC_unprotect(loc->file, H5AC_OHDR, oh->chunk[0].addr, oh, oh_flags) < 0) HGOTO_ERROR(H5E_OHDR, H5E_CANTUNPROTECT, FAIL, "unable to release object header"); @@ -1600,7 +1613,7 @@ H5O__obj_type_real(const H5O_t *oh, H5O_type_t *obj_type) /* Look up class for object header */ if (NULL == (obj_class = H5O__obj_class_real(oh))) { /* Clear error stack from "failed" class lookup */ - H5E_clear_stack(NULL); + H5E_clear_stack(); /* Set type to "unknown" */ *obj_type = H5O_TYPE_UNKNOWN; diff --git a/src/H5Opublic.h b/src/H5Opublic.h index 23c4e4eb59b..28954d4cb45 100644 --- a/src/H5Opublic.h +++ b/src/H5Opublic.h @@ -234,7 +234,7 @@ extern "C" { * \param[in] name Path to the object; relative to \p loc_id * \lapl_id * - * \return \hid_tv{object} + * \return \hid_ti{object} * * \details H5Oopen() opens a group, dataset, or committed (named) datatype * specified by a location, \p loc_id, and a path name, \p name, in an HDF5 file. @@ -311,7 +311,7 @@ H5_DLL hid_t H5Oopen_by_token(hid_t loc_id, H5O_token_t token); * \param[in] n Object to open * \lapl_id * - * \return \hid_tv{object} + * \return \hid_ti{object} * * \details H5Oopen_by_idx() opens the nth object in the group specified by \p loc_id * and \p group_name. @@ -1769,7 +1769,7 @@ typedef herr_t (*H5O_iterate1_t)(hid_t obj, const char *name, const H5O_info1_t * \fgdta_loc_obj_id{loc_id} * \param[in] addr Object's address in the file * - * \return \hid_tv{object} + * \return \hid_ti{object} * * \deprecated As of HDF5-1.12 this function has been deprecated in favor of * the function H5Oopen_by_token(). diff --git a/src/H5Ppublic.h b/src/H5Ppublic.h index 13688ce6f15..0f05977cec3 100644 --- a/src/H5Ppublic.h +++ b/src/H5Ppublic.h @@ -882,7 +882,7 @@ H5_DLL hid_t H5Pcreate_class(hid_t parent, const char *name, H5P_cls_create_func * * \param[in] buf Buffer holding the encoded property list * - * \return \hid_tv{object} + * \return \hid_ti{object} * * \details Given a binary property list description in a buffer, H5Pdecode() * reconstructs the HDF5 property list and returns an identifier diff --git a/src/H5SM.c b/src/H5SM.c index 5179a285ee9..94f2ea534fc 100644 --- a/src/H5SM.c +++ b/src/H5SM.c @@ -944,7 +944,7 @@ H5SM_can_share(H5F_t *f, H5SM_master_table_t *table, ssize_t *sohm_index_num, un * then this type of message isn't shareable */ if ((index_num = H5SM__get_index(my_table, type_id)) < 0) { - H5E_clear_stack(NULL); /*ignore error*/ + H5E_clear_stack(); /*ignore error*/ HGOTO_DONE(false); } /* end if */ @@ -1337,9 +1337,9 @@ H5SM__write_mesg(H5F_t *f, H5O_t *open_oh, H5SM_index_header_t *header, bool def found = true; } /* end if */ else - H5E_clear_stack(NULL); /*ignore error*/ - } /* end else */ - } /* end else */ + H5E_clear_stack(); /*ignore error*/ + } /* end else */ + } /* end else */ if (found) { /* If the message was found, it's shared in the heap (now). Set up a diff --git a/src/H5Spublic.h b/src/H5Spublic.h index a05b8c56437..3697374d49c 100644 --- a/src/H5Spublic.h +++ b/src/H5Spublic.h @@ -179,7 +179,7 @@ H5_DLL herr_t H5Sclose(hid_t space_id); * \param[in] count Number of blocks included in the hyperslab * \param[in] block Size of a block in the hyperslab * - * \return \hid_tv{dataspace} + * \return \hid_t{dataspace} * * \details H5Scombine_hyperslab() combines a hyperslab selection specified * by \p start, \p stride, \p count and \p block with the current @@ -224,7 +224,7 @@ H5_DLL hid_t H5Scombine_select(hid_t space1_id, H5S_seloper_t op, hid_t space2_i * * \space_id * - * \return \hid_tv{dataspace} + * \return \hid_t{dataspace} * * \details H5Scopy() creates a new dataspace which is an exact copy of the * dataspace identified by \p space_id. The dataspace identifier diff --git a/src/H5T.c b/src/H5T.c index 7d63d003e27..3e0c0b75072 100644 --- a/src/H5T.c +++ b/src/H5T.c @@ -2724,14 +2724,14 @@ H5T__register(H5T_pers_t pers, const char *name, H5T_t *src, H5T_t *dst, H5T_con "unable to decrement reference count on temporary ID"); tmp_sid = tmp_did = H5I_INVALID_HID; tmp_stype = tmp_dtype = NULL; - if (H5E_clear_stack(NULL) < 0) + if (H5E_clear_stack() < 0) HGOTO_ERROR(H5E_DATATYPE, H5E_CANTRESET, FAIL, "unable to clear current error stack"); continue; } /* end if */ } /* end if */ else if ((conv->u.lib_func)(old_path->src, old_path->dst, &cdata, &conv_ctx, 0, 0, 0, NULL, NULL) < 0) { - if (H5E_clear_stack(NULL) < 0) + if (H5E_clear_stack() < 0) HGOTO_ERROR(H5E_DATATYPE, H5E_CANTRESET, FAIL, "unable to clear current error stack"); continue; } /* end if */ @@ -2773,7 +2773,7 @@ H5T__register(H5T_pers_t pers, const char *name, H5T_t *src, H5T_t *dst, H5T_con } /* We don't care about any failures during the freeing process */ - if (H5E_clear_stack(NULL) < 0) + if (H5E_clear_stack() < 0) HGOTO_ERROR(H5E_DATATYPE, H5E_CANTRESET, FAIL, "unable to clear current error stack"); } /* end for */ } /* end else */ @@ -3888,7 +3888,7 @@ H5T_copy_reopen(H5T_t *old_dt) if (NULL == (reopened_fo = (H5T_shared_t *)H5FO_opened(old_dt->sh_loc.file, old_dt->sh_loc.u.loc.oh_addr))) { /* Clear any errors from H5FO_opened() */ - H5E_clear_stack(NULL); + H5E_clear_stack(); /* Open named datatype again */ if (H5O_open(&old_dt->oloc) < 0) @@ -5294,7 +5294,7 @@ H5T__init_path_table(void) fprintf(H5DEBUG(T), "H5T: unable to initialize no-op conversion function (ignored)\n"); #endif /* Ignore any errors from the conversion function */ - if (H5E_clear_stack(NULL) < 0) + if (H5E_clear_stack() < 0) HGOTO_ERROR(H5E_DATATYPE, H5E_CANTRESET, FAIL, "unable to clear current error stack"); } /* end if */ @@ -5427,7 +5427,7 @@ H5T__path_find_init_new_path(H5T_path_t *path, const H5T_t *src, const H5T_t *ds if (status < 0) { memset(&(path->cdata), 0, sizeof(H5T_cdata_t)); /* ignore the error */ - if (H5E_clear_stack(NULL) < 0) + if (H5E_clear_stack() < 0) HGOTO_ERROR(H5E_DATATYPE, H5E_CANTRESET, FAIL, "unable to clear current error stack"); path_init_error = true; } @@ -5512,7 +5512,7 @@ H5T__path_free(H5T_path_t *path, H5T_conv_ctx_t *conv_ctx) if (status < 0) { /* Ignore any error from shutting down the path */ - if (H5E_clear_stack(NULL) < 0) + if (H5E_clear_stack() < 0) /* Push error, but keep going */ HDONE_ERROR(H5E_DATATYPE, H5E_CANTRESET, FAIL, "unable to clear current error stack"); diff --git a/src/H5Tcommit.c b/src/H5Tcommit.c index eed0e3b1dc4..e1b4e0d1a7a 100644 --- a/src/H5Tcommit.c +++ b/src/H5Tcommit.c @@ -1037,7 +1037,7 @@ H5T_open(const H5G_loc_t *loc) /* Check if datatype was already open */ if (NULL == (shared_fo = (H5T_shared_t *)H5FO_opened(loc->oloc->file, loc->oloc->addr))) { /* Clear any errors from H5FO_opened() */ - H5E_clear_stack(NULL); + H5E_clear_stack(); /* Open the datatype object */ if (NULL == (dt = H5T__open_oid(loc))) diff --git a/src/H5VLcallback.c b/src/H5VLcallback.c index f34954d1517..02622dab936 100644 --- a/src/H5VLcallback.c +++ b/src/H5VLcallback.c @@ -3806,7 +3806,7 @@ H5VL_file_open(H5VL_connector_prop_t *connector_prop, const char *name, unsigned * Otherwise, if no VOL connectors are available, throw * error from original file open failure. */ - H5E_clear_stack(NULL); + H5E_clear_stack(); if (NULL == (ret_value = H5VL__file_open(find_connector_ud.cls, name, flags, find_connector_ud.fapl_id, dxpl_id, req))) diff --git a/src/H5Z.c b/src/H5Z.c index a7c1d76c782..d995f0676c6 100644 --- a/src/H5Z.c +++ b/src/H5Z.c @@ -781,7 +781,7 @@ H5Z__prelude_callback(const H5O_pline_t *pline, hid_t dcpl_id, hid_t type_id, hi if (NULL == (fclass = H5Z_find(pline->filter[u].id))) { /* Ignore errors from optional filters */ if (pline->filter[u].flags & H5Z_FLAG_OPTIONAL) - H5E_clear_stack(NULL); + H5E_clear_stack(); else HGOTO_ERROR(H5E_PLINE, H5E_NOTFOUND, FAIL, "required filter was not located"); } /* end if */ @@ -1448,7 +1448,7 @@ H5Z_pipeline(const H5O_pline_t *pline, unsigned flags, unsigned *filter_mask /*i *nbytes = *buf_size; failed |= (unsigned)1 << idx; - H5E_clear_stack(NULL); + H5E_clear_stack(); } else *nbytes = new_nbytes; @@ -1465,7 +1465,7 @@ H5Z_pipeline(const H5O_pline_t *pline, unsigned flags, unsigned *filter_mask /*i if ((pline->filter[idx].flags & H5Z_FLAG_OPTIONAL) == 0) HGOTO_ERROR(H5E_PLINE, H5E_WRITEERROR, FAIL, "required filter is not registered"); failed |= (unsigned)1 << idx; - H5E_clear_stack(NULL); + H5E_clear_stack(); continue; /* filter excluded */ } /* end if */ @@ -1501,7 +1501,7 @@ H5Z_pipeline(const H5O_pline_t *pline, unsigned flags, unsigned *filter_mask /*i *nbytes = *buf_size; } failed |= (unsigned)1 << idx; - H5E_clear_stack(NULL); + H5E_clear_stack(); } else *nbytes = new_nbytes; diff --git a/src/H5private.h b/src/H5private.h index 5654fd900b7..0a55fc15a46 100644 --- a/src/H5private.h +++ b/src/H5private.h @@ -1305,7 +1305,7 @@ H5_DLL herr_t H5CX_pop(bool update_dxpl_props); FUNC_ENTER_API_INIT(err); \ FUNC_ENTER_API_PUSH(err); \ /* Clear thread error stack entering public functions */ \ - H5E_clear_stack(NULL); \ + H5E_clear_stack(); \ { /* diff --git a/src/H5public.h b/src/H5public.h index 940f1bea372..21134ed1cfa 100644 --- a/src/H5public.h +++ b/src/H5public.h @@ -88,6 +88,10 @@ * For pre-releases like \c snap0. Empty string for official releases. */ #define H5_VERS_SUBRELEASE "1" +/** + * Short version string + */ +#define H5_VERS_STR "1.14.5-1" /** * Full version string */ diff --git a/src/H5win32defs.h b/src/H5win32defs.h index 05d291ec03b..a996f60ab01 100644 --- a/src/H5win32defs.h +++ b/src/H5win32defs.h @@ -57,7 +57,7 @@ struct timezone { * MinGW and the newer, conforming MSVC preprocessor do not exhibit this * behavior. */ -#if (defined(_MSC_VER) && !defined(_MSVC_TRADITIONAL)) || _MSVC_TRADITIONAL +#if (defined(_MSC_VER) && !defined(_MSVC_TRADITIONAL)) || defined(_MSVC_TRADITIONAL) /* Using the MSVC traditional preprocessor */ #define HDopen(S, F, ...) Wopen(S, F, __VA_ARGS__) #else diff --git a/src/Makefile.am b/src/Makefile.am index 29706101001..7cc64eff84a 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -182,9 +182,9 @@ settings_DATA=libhdf5.settings # Error header generation # -# Actually, H5Einit.h, H5Eterm.h, H5Edefin.h and H5Epubgen.h all -# depend on H5err.txt, but the perl script generates them all, so just -# list one here. +# Actually, H5Einit.h, H5Eterm.h, H5Edefin.h, H5Emajdef.h, H5Emindef.h, +# and H5Epubgen.h all depend on H5err.txt, but the perl script generates them +# all, so just list one here. $(top_srcdir)/src/H5Edefin.h: $(top_srcdir)/src/H5err.txt perl $(top_srcdir)/bin/make_err $? diff --git a/test/tattr.c b/test/tattr.c index d38fdaabc8d..e15ed5fb736 100644 --- a/test/tattr.c +++ b/test/tattr.c @@ -2898,6 +2898,11 @@ test_attr_dense_rename(hid_t fcpl, hid_t fapl) VERIFY(is_dense, true, "H5O__is_attr_dense_test"); } + /* Verify github issue #1388 that the last renamed attribute + with/without tracking corder can be deleted */ + ret = H5Adelete(dataset, new_attrname); + CHECK(ret, FAIL, "H5Adelete"); + /* Close Dataset */ ret = H5Dclose(dataset); CHECK(ret, FAIL, "H5Dclose"); @@ -2930,8 +2935,8 @@ test_attr_dense_rename(hid_t fcpl, hid_t fapl) dataset = H5Dopen2(fid, DSET1_NAME, H5P_DEFAULT); CHECK(dataset, H5I_INVALID_HID, "H5Dopen2"); - /* Verify renamed attributes */ - for (u = 0; u < (max_compact * 2); u++) { + /* Verify renamed attributes (the last attribute was deleted) */ + for (u = 0; u < (max_compact * 2 - 1); u++) { unsigned value; /* Attribute value */ /* Open attribute */
FilterSetFilter Params
BLOSCUD=32001,0,0
BLOSC2UD=32026,0,0
BSHUFUD=32004,0,0
BZIP2UD=307,0,1,9
JPEGUD=32019,0,4,q,c,r,t