summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorJames Laird <jlaird@hdfgroup.org>2004-07-01 17:38:04 (GMT)
committerJames Laird <jlaird@hdfgroup.org>2004-07-01 17:38:04 (GMT)
commiteab58732d86e9219fa9f41f9ab2e30fae94e4a7d (patch)
tree333b5f2c50c267c14611e042724a7f28d5156ab7 /tools
parent3f500747fa0f4379e8e03b82f6d679628d55a8c3 (diff)
downloadhdf5-eab58732d86e9219fa9f41f9ab2e30fae94e4a7d.zip
hdf5-eab58732d86e9219fa9f41f9ab2e30fae94e4a7d.tar.gz
hdf5-eab58732d86e9219fa9f41f9ab2e30fae94e4a7d.tar.bz2
[svn-r8781]
Purpose: HDF5 now supports SZIP with no encoder. Description: SZIP can be configured to have both encoder and decoder or just to have the decoder. HDF5 can now query the configuration of any filter, and will throw errors if users try to write using a filter with encoding disabled. Solution: Added H5Zget_filter_info function, changed API for H5Pget_filter and H5P_get_filter_by_id. See SZIP RFC. Platforms tested: Copper (fortran, C++, parallel), Sleipnir (C++), Arabica (fortran, C++), Verbena (fortran, C++) Misc. update:
Diffstat (limited to 'tools')
-rw-r--r--tools/h5dump/h5dump.c23
-rw-r--r--tools/h5dump/h5dumpgentest.c42
-rw-r--r--tools/h5ls/h5ls.c5
-rw-r--r--tools/h5repack/Makefile.in4
-rw-r--r--tools/h5repack/h5repack.c3
-rw-r--r--tools/h5repack/h5repack.sh178
-rwxr-xr-xtools/h5repack/h5repack.sh.in298
-rw-r--r--tools/h5repack/h5repack_copy.c2
-rw-r--r--tools/h5repack/h5repack_filters.c11
-rw-r--r--tools/h5repack/h5repack_verify.c11
-rw-r--r--tools/h5repack/testh5repack_filters.c38
-rw-r--r--tools/h5repack/testh5repack_main.c34
-rw-r--r--tools/lib/h5tools_filters.c4
13 files changed, 424 insertions, 229 deletions
diff --git a/tools/h5dump/h5dump.c b/tools/h5dump/h5dump.c
index 2f31dde..ed41369 100644
--- a/tools/h5dump/h5dump.c
+++ b/tools/h5dump/h5dump.c
@@ -2241,6 +2241,7 @@ dump_dcpl(hid_t dcpl_id,hid_t type_id, hid_t obj_id)
for (i=0; i<nfilters; i++)
{
cd_nelmts = NELMTS(cd_values);
+#ifdef H5_WANT_H5_V1_6_COMPAT
filtn = H5Pget_filter(dcpl_id,
(unsigned)i,
&filt_flags,
@@ -2248,6 +2249,16 @@ dump_dcpl(hid_t dcpl_id,hid_t type_id, hid_t obj_id)
cd_values,
sizeof(f_name),
f_name);
+#else
+ filtn = H5Pget_filter(dcpl_id,
+ (unsigned)i,
+ &filt_flags,
+ &cd_nelmts,
+ cd_values,
+ sizeof(f_name),
+ f_name,
+ NULL);
+#endif /* H5_WANT_H5_V1_6_COMPAT */
switch (filtn)
{
@@ -5572,9 +5583,15 @@ check_compression(hid_t dcpl)
if (nfilt <= 0)
return;
for (i = 0; i < nfilt; i++) {
+#ifdef H5_WANT_H5_V1_6_COMPAT
filter = H5Pget_filter(dcpl, i, &flags,
(size_t *) &cd_nelmts,
&cd_values, 20, namebuf);
+#else
+ filter = H5Pget_filter(dcpl, i, &flags,
+ (size_t *) &cd_nelmts,
+ &cd_values, 20, namebuf, NULL);
+#endif /* H5_WANT_H5_V1_6_COMPAT */
if (filter == H5Z_FILTER_DEFLATE) {
indentation(indent + COL);
printf("<%sCompression />\n",xmlnsprefix);
@@ -5614,9 +5631,15 @@ check_filters(hid_t dcpl)
if (nfilt <= 0)
return;
for (i = 0; i < nfilt; i++) {
+#ifdef H5_WANT_H5_V1_6_COMPAT
filter = H5Pget_filter(dcpl, (unsigned)i, &flags,
(size_t *) &cd_nelmts,
cd_values, 120, namebuf);
+#else
+ filter = H5Pget_filter(dcpl, (unsigned)i, &flags,
+ (size_t *) &cd_nelmts,
+ cd_values, 120, namebuf, NULL);
+#endif /* H5_WANT_H5_V1_6_COMPAT */
if (filter == H5Z_FILTER_DEFLATE) {
indentation(indent + COL);
printf("<%sDeflate Level=\"",xmlnsprefix);
diff --git a/tools/h5dump/h5dumpgentest.c b/tools/h5dump/h5dumpgentest.c
index 03ef95a..fdd4e5a 100644
--- a/tools/h5dump/h5dumpgentest.c
+++ b/tools/h5dump/h5dumpgentest.c
@@ -26,6 +26,10 @@
#include "hdf5.h"
#include "H5private.h"
+#ifdef H5_HAVE_FILTER_SZIP
+#include "szlib.h"
+#endif
+
#define FILE1 "tgroup.h5"
#define FILE2 "tdset.h5"
#define FILE3 "tattr.h5"
@@ -103,8 +107,10 @@ set_local_myfilter(hid_t dcpl_id, hid_t type_id, hid_t UNUSED space_id);
/* This message derives from H5Z */
const H5Z_class_t H5Z_MYFILTER[1] = {{
- MYFILTER_ID, /* Filter id number */
- "myfilter", /* Filter name for debugging */
+ H5Z_CLASS_T_VERS,
+ MYFILTER_ID, /* Filter id number */
+ 1, 1,
+ "myfilter", /* Filter name for debugging */
NULL, /* The "can apply" callback */
set_local_myfilter, /* The "set local" callback */
myfilter, /* The actual filter function */
@@ -4543,17 +4549,17 @@ static void gent_filters(void)
* SZIP
*-------------------------------------------------------------------------
*/
-#if defined (H5_HAVE_FILTER_SZIP)
- /* remove the filters from the dcpl */
- ret=H5Premove_filter(dcpl,H5Z_FILTER_ALL);
- assert(ret>=0);
+#if defined (H5_HAVE_FILTER_SZIP) && defined (H5_SZIP_CAN_ENCODE)
+ /* remove the filters from the dcpl */
+ ret=H5Premove_filter(dcpl,H5Z_FILTER_ALL);
+ assert(ret>=0);
- /* set szip data */
- ret=H5Pset_szip (dcpl,szip_options_mask,szip_pixels_per_block);
- assert(ret>=0);
+ /* set szip data */
+ ret=H5Pset_szip (dcpl,szip_options_mask,szip_pixels_per_block);
+ assert(ret>=0);
- ret=make_dset(fid,"szip",sid,dcpl,buf1);
- assert(ret>=0);
+ ret=make_dset(fid,"szip",sid,dcpl,buf1);
+ assert(ret>=0);
#endif
/*-------------------------------------------------------------------------
@@ -4623,11 +4629,11 @@ static void gent_filters(void)
assert(ret>=0);
#endif
-#if defined (H5_HAVE_FILTER_SZIP)
- szip_options_mask=H5_SZIP_CHIP_OPTION_MASK | H5_SZIP_EC_OPTION_MASK;
- /* set szip data */
- ret=H5Pset_szip (dcpl,szip_options_mask,szip_pixels_per_block);
- assert(ret>=0);
+#if defined (H5_HAVE_FILTER_SZIP) && defined (H5_SZIP_CAN_ENCODE)
+ szip_options_mask=H5_SZIP_CHIP_OPTION_MASK | H5_SZIP_EC_OPTION_MASK;
+ /* set szip data */
+ ret=H5Pset_szip (dcpl,szip_options_mask,szip_pixels_per_block);
+ assert(ret>=0);
#endif
#if defined (H5_HAVE_FILTER_DEFLATE)
@@ -4917,7 +4923,11 @@ set_local_myfilter(hid_t dcpl_id, hid_t UNUSED type_id, hid_t UNUSED space_id)
unsigned cd_values[2]={5,6}; /* Filter parameters */
/* Get the filter's current parameters */
+#ifdef H5_WANT_H5_V1_6_COMPAT
if(H5Pget_filter_by_id(dcpl_id,MYFILTER_ID,&flags,&cd_nelmts,cd_values,0,NULL)<0)
+#else
+ if(H5Pget_filter_by_id(dcpl_id,MYFILTER_ID,&flags,&cd_nelmts,cd_values,0,NULL,NULL)<0)
+#endif /* H5_WANT_H5_V1_6_COMPAT */
return(FAIL);
cd_nelmts=2;
diff --git a/tools/h5ls/h5ls.c b/tools/h5ls/h5ls.c
index 6bd6f87..ed73af4 100644
--- a/tools/h5ls/h5ls.c
+++ b/tools/h5ls/h5ls.c
@@ -1602,8 +1602,13 @@ dataset_list2(hid_t dset, const char UNUSED *name)
if ((nf = H5Pget_nfilters(dcpl))>0) {
for (i=0; i<nf; i++) {
cd_nelmts = NELMTS(cd_values);
+#ifdef H5_WANT_H5_V1_6_COMPAT
filt_id = H5Pget_filter(dcpl, (unsigned)i, &filt_flags, &cd_nelmts,
cd_values, sizeof(f_name), f_name);
+#else
+ filt_id = H5Pget_filter(dcpl, (unsigned)i, &filt_flags, &cd_nelmts,
+ cd_values, sizeof(f_name), f_name, NULL);
+#endif /* H5_WANT_H5_V1_6_COMPAT */
f_name[sizeof(f_name)-1] = '\0';
sprintf(s, "Filter-%d:", i);
printf(" %-10s %s-%u %s {", s,
diff --git a/tools/h5repack/Makefile.in b/tools/h5repack/Makefile.in
index 98f1fea..6e7c61c 100644
--- a/tools/h5repack/Makefile.in
+++ b/tools/h5repack/Makefile.in
@@ -28,8 +28,7 @@ CPPFLAGS=-I. -I$(srcdir) -I$(top_builddir)/src -I$(top_srcdir)/src \
## Test programs and scripts.
##
TEST_PROGS=h5repacktst
-TEST_SCRIPTS=$(srcdir)/h5repack.sh
-
+TEST_SCRIPTS=./h5repack.sh
## These are our main targets: library and tools.
##
@@ -48,6 +47,7 @@ PUB_LIB=
## Temporary files. *.h5 are generated by h5repack. They should
## copied to the testfiles/ directory if update is required.
MOSTLYCLEAN=*.h5
+DISTCLEAN=h5repack.sh
## Source and object files for programs...
##
diff --git a/tools/h5repack/h5repack.c b/tools/h5repack/h5repack.c
index bd89ca0..cd7a31b 100644
--- a/tools/h5repack/h5repack.c
+++ b/tools/h5repack/h5repack.c
@@ -68,7 +68,7 @@ int h5repack(const char* infile,
/* check input */
if (check_options(options)<0)
return -1;
-
+
/* check for objects in input that are in the file */
if (check_objects(infile,options)<0)
return -1;
@@ -76,7 +76,6 @@ int h5repack(const char* infile,
/* copy the objects */
if (copy_objects(infile,outfile,options)<0)
return -1;
-
return 0;
}
diff --git a/tools/h5repack/h5repack.sh b/tools/h5repack/h5repack.sh
deleted file mode 100644
index f1a6281..0000000
--- a/tools/h5repack/h5repack.sh
+++ /dev/null
@@ -1,178 +0,0 @@
-#! /bin/sh
-#
-# Copyright by the Board of Trustees of the University of Illinois.
-# All rights reserved.
-#
-# This file is part of HDF5. The full HDF5 copyright notice, including
-# terms governing use, modification, and redistribution, is contained in
-# the files COPYING and Copyright.html. COPYING can be found at the root
-# of the source code distribution tree; Copyright.html can be found at the
-# root level of an installed copy of the electronic HDF5 document set and
-# is linked from the top-level documents page. It can also be found at
-# http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have
-# access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu.
-#
-# Tests for the h5repack tool
-
-H5REPACK=h5repack # The tool name
-H5REPACK_BIN=`pwd`/$H5REPACK # The path of the tool binary
-
-H5DIFF=../h5diff/h5diff # The h5diff tool name
-H5DIFF_BIN=`pwd`/$H5DIFF # The path of the h5diff tool binary
-
-nerrors=0
-verbose=yes
-
-# The build (current) directory might be different than the source directory.
-#
-if test -z "$srcdir"; then
- srcdir=.
-fi
-
-test -d ../testfiles || mkdir ../testfiles
-
-# Print a line-line message left justified in a field of 70 characters
-# beginning with the word "Testing".
-#
-TESTING() {
- SPACES=" "
- echo "Testing $* $SPACES" | cut -c1-70 | tr -d '\012'
-}
-
-# Print a line-line message left justified in a field of 70 characters
-# beginning with the word "Verifying".
-#
-VERIFY() {
- SPACES=" "
- echo "Testing h5diff output $* $SPACES" | cut -c1-70 | tr -d '\012'
-}
-
-# Call the h5diff tool
-#
-DIFFTEST()
-{
- VERIFY $@
- if [ "`uname -s`" = "TFLOPS O/S" ]; then
- $RUNSERIAL $H5DIFF_BIN $@
- else
- $RUNSERIAL $H5DIFF_BIN "$@"
- fi
- RET=$?
- if [ $RET != 0 ] ; then
- echo "*FAILED*"
- nerrors="`expr $nerrors + 1`"
- else
- echo " PASSED"
- fi
-
-}
-
-# Call h5repack
-#
-TOOLTEST()
-{
- # Run test.
- # Tflops interprets "$@" as "" when no parameter is given (e.g., the
- # case of missing file name). Changed it to use $@ till Tflops fixes it.
- TESTING $H5REPACK $@
-
- infile=$srcdir/../testfiles/$1
- outfile=out.$1
- shift
- if [ "`uname -s`" = "TFLOPS O/S" ]; then
- $RUNSERIAL $H5REPACK_BIN -i $infile -o $outfile $@
- else
- $RUNSERIAL $H5REPACK_BIN -i $infile -o $outfile "$@"
- fi
-
- RET=$?
- if [ $RET != 0 ] ; then
- echo "*FAILED*"
- nerrors="`expr $nerrors + 1`"
- else
- echo " PASSED"
- DIFFTEST $infile $outfile
- fi
- rm -f $outfile
-}
-
-
-#
-# The tests
-# We use the files generated by h5repacktst
-# Each run generates "file4.out.h5" and the tool h5diff is used to
-# compare the input and output files
-#
-
-# copy files
-TOOLTEST test1.h5
-TOOLTEST test3.h5
-TOOLTEST test4.h5
-
-#TOOLTEST test5.h5
-
-# remove all filters
-TOOLTEST test4.h5 -f NONE
-
-# remove one filter
-TOOLTEST test4.h5 -f dset_gzip:NONE
-
-# gzip
-TOOLTEST test4.h5 -f dset1:GZIP=9
-TOOLTEST test4.h5 -f GZIP=1
-
-# szip
-TOOLTEST test4.h5 -f dset1:SZIP=8
-TOOLTEST test4.h5 -f SZIP=8
-
-# shuffle
-TOOLTEST test4.h5 -f dset1:SHUF
-TOOLTEST test4.h5 -f SHUF
-
-# fletcher
-TOOLTEST test4.h5 -f dset1:FLET
-TOOLTEST test4.h5 -f FLET
-
-#layout chunk
-TOOLTEST test4.h5 -l dset1:CHUNK=20x10
-TOOLTEST test4.h5 -l CHUNK=20x10
-
-#layout compact
-TOOLTEST test4.h5 -l dset1:COMPA
-TOOLTEST test4.h5 -l COMPA
-
-#layout contiguous
-TOOLTEST test4.h5 -l dset1:CONTI
-TOOLTEST test4.h5 -l CONTI
-
-#conversions
-TOOLTEST test4.h5 -l dset_compact:CONTI
-TOOLTEST test4.h5 -l dset_compact:CHUNK=2x5
-TOOLTEST test4.h5 -l dset_compact:COMPA
-TOOLTEST test4.h5 -l dset_contiguous:COMPA
-TOOLTEST test4.h5 -l dset_contiguous:CHUNK=3x6
-TOOLTEST test4.h5 -l dset_contiguous:CONTI
-TOOLTEST test4.h5 -l dset_chunk:COMPA
-TOOLTEST test4.h5 -l dset_chunk:CONTI
-TOOLTEST test4.h5 -l dset_chunk:CHUNK=18x13
-
-#filters
-TOOLTEST test4.h5 -f dset1:SHUF -f dset1,dset2:GZIP=6
-TOOLTEST test4.h5 -l dset1:CHUNK=20x10 -f dset1,dset2:SZIP=8
-
-#filter conversions
-TOOLTEST test4.h5 -f dset_gzip:SZIP=8
-TOOLTEST test4.h5 -f dset_szip:GZIP=1
-TOOLTEST test4.h5 -f dset_all:GZIP=1
-
-#limit
-TOOLTEST test4.h5 -f GZIP=1 -m 1024
-
-#file
-TOOLTEST test4.h5 -e ../testfiles/h5repack_info.txt
-
-if test $nerrors -eq 0 ; then
- echo "All $H5REPACK tests passed."
-fi
-
-exit $nerrors
diff --git a/tools/h5repack/h5repack.sh.in b/tools/h5repack/h5repack.sh.in
new file mode 100755
index 0000000..17c6869
--- /dev/null
+++ b/tools/h5repack/h5repack.sh.in
@@ -0,0 +1,298 @@
+#! /bin/sh
+#
+# Copyright by the Board of Trustees of the University of Illinois.
+# All rights reserved.
+#
+# This file is part of HDF5. The full HDF5 copyright notice, including
+# terms governing use, modification, and redistribution, is contained in
+# the files COPYING and Copyright.html. COPYING can be found at the root
+# of the source code distribution tree; Copyright.html can be found at the
+# root level of an installed copy of the electronic HDF5 document set and
+# is linked from the top-level documents page. It can also be found at
+# http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have
+# access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu.
+#
+# Tests for the h5repack tool
+
+# Determine if SZIP has the encoder available
+USE_FILTER_SZIP_ENCODER="@USE_FILTER_SZIP_ENCODER@"
+USE_FILTER_SZIP="@USE_FILTER_SZIP@"
+
+H5REPACK=h5repack # The tool name
+H5REPACK_BIN=`pwd`/$H5REPACK # The path of the tool binary
+
+H5DIFF=../h5diff/h5diff # The h5diff tool name
+H5DIFF_BIN=`pwd`/$H5DIFF # The path of the h5diff tool binary
+
+nerrors=0
+verbose=yes
+
+# The build (current) directory might be different than the source directory.
+#
+if test -z "$srcdir"; then
+ srcdir=.
+fi
+
+test -d ../testfiles || mkdir ../testfiles
+
+# Print a line-line message left justified in a field of 70 characters
+# beginning with the word "Testing".
+#
+TESTING() {
+ SPACES=" "
+ echo "Testing $* $SPACES" | cut -c1-70 | tr -d '\012'
+}
+
+# Print a line-line message left justified in a field of 70 characters
+# beginning with the word "Verifying".
+#
+VERIFY() {
+ SPACES=" "
+ echo "Testing h5diff output $* $SPACES" | cut -c1-70 | tr -d '\012'
+}
+
+# Print a message that a test has been skipped (because a required filter
+# was unavailable)
+SKIP() {
+ TESTING $H5REPACK $@
+ echo " -SKIP-"
+}
+
+# Call the h5diff tool
+#
+DIFFTEST()
+{
+ VERIFY $@
+ if [ "`uname -s`" = "TFLOPS O/S" ]; then
+ $RUNSERIAL $H5DIFF_BIN $@
+ else
+ $RUNSERIAL $H5DIFF_BIN "$@"
+ fi
+ RET=$?
+ if [ $RET != 0 ] ; then
+ echo "*FAILED*"
+ nerrors="`expr $nerrors + 1`"
+ else
+ echo " PASSED"
+ fi
+
+}
+
+# Call h5repack
+#
+TOOLTEST()
+{
+ # Run test.
+ # Tflops interprets "$@" as "" when no parameter is given (e.g., the
+ # case of missing file name). Changed it to use $@ till Tflops fixes it.
+ TESTING $H5REPACK $@
+
+ infile=$srcdir/../testfiles/$1
+ outfile=out.$1
+ shift
+ if [ "`uname -s`" = "TFLOPS O/S" ]; then
+ $RUNSERIAL $H5REPACK_BIN -i $infile -o $outfile $@
+ else
+ $RUNSERIAL $H5REPACK_BIN -i $infile -o $outfile "$@"
+ fi
+
+ RET=$?
+ if [ $RET != 0 ] ; then
+ echo "*FAILED*"
+ nerrors="`expr $nerrors + 1`"
+ else
+ echo " PASSED"
+ DIFFTEST $infile $outfile
+ fi
+ rm -f $outfile
+}
+
+#
+# The tests
+# We use the files generated by h5repacktst
+# Each run generates "file4.out.h5" and the tool h5diff is used to
+# compare the input and output files
+#
+
+# See which filters are usable (and skip tests for filters we
+# don't have). Do this by searching H5pubconf.h to see which
+# filters are defined.
+# A filter value of 3 means the filter can read and write, 2
+# is read-only, 1 is write-only, and 0 is not present.
+
+# copy files
+TOOLTEST test1.h5
+TOOLTEST test3.h5
+
+
+arg="test4.h5"
+if test $USE_FILTER_SZIP_ENCODER = "yes" -o $USE_FILTER_SZIP = "no" ; then
+ TOOLTEST $arg
+else
+ SKIP $arg
+fi
+
+#TOOLTEST test5.h5
+
+# remove all filters
+TOOLTEST test4.h5 -f NONE
+
+# remove one filter
+arg="test4.h5 -f dset_gzip:NONE"
+if test $USE_FILTER_SZIP_ENCODER = "yes" -o $USE_FILTER_SZIP = "no" ; then
+ TOOLTEST $arg
+else
+ SKIP $arg
+fi
+
+# gzip
+arg="test4.h5 -f dset1:GZIP=9"
+if test $USE_FILTER_SZIP_ENCODER = "yes" -o $USE_FILTER_SZIP = "no" ; then
+ TOOLTEST $arg
+else
+ SKIP $arg
+fi
+TOOLTEST test4.h5 -f GZIP=1
+
+# szip
+arg1="test4.h5 -f dset1:SZIP=8"
+arg2="test4.h5 -f SZIP=8"
+if test $USE_FILTER_SZIP_ENCODER = "yes" -a $USE_FILTER_SZIP = "yes" ; then
+ TOOLTEST $arg1
+ TOOLTEST $arg2
+else
+ SKIP $arg1
+ SKIP $arg2
+fi
+
+# shuffle
+arg="test4.h5 -f dset1:SHUF"
+if test $USE_FILTER_SZIP_ENCODER = "yes" -o $USE_FILTER_SZIP = "no" ; then
+ TOOLTEST $arg
+else
+ SKIP $arg
+fi
+TOOLTEST test4.h5 -f SHUF
+
+# fletcher
+arg="test4.h5 -f dset1:FLET"
+if test $USE_FILTER_SZIP_ENCODER = "yes" -o $USE_FILTER_SZIP = "no" ; then
+ TOOLTEST $arg
+else
+ SKIP $arg
+fi
+TOOLTEST test4.h5 -f FLET
+
+#layout chunk
+arg1="test4.h5 -l dset1:CHUNK=20x10"
+arg2="test4.h5 -l CHUNK=20x10"
+if test $USE_FILTER_SZIP_ENCODER = "yes" -o $USE_FILTER_SZIP = "no" ; then
+ TOOLTEST $arg1
+ TOOLTEST $arg2
+else
+ SKIP $arg1
+ SKIP $arg2
+fi
+
+#layout compact
+arg1="test4.h5 -l dset1:COMPA"
+arg2="test4.h5 -l COMPA"
+if test $USE_FILTER_SZIP_ENCODER = "yes" -o $USE_FILTER_SZIP = "no" ; then
+ TOOLTEST $arg1
+ TOOLTEST $arg2
+else
+ SKIP $arg1
+ SKIP $arg2
+fi
+
+#layout contiguous
+arg1="test4.h5 -l dset1:CONTI"
+arg2="test4.h5 -l CONTI"
+if test $USE_FILTER_SZIP_ENCODER = "yes" -o $USE_FILTER_SZIP = "no" ; then
+ TOOLTEST $arg1
+ TOOLTEST $arg2
+else
+ SKIP $arg1
+ SKIP $arg2
+fi
+
+#conversions
+arg1="test4.h5 -l dset_compact:CONTI"
+arg2="test4.h5 -l dset_compact:CHUNK=2x5"
+arg3="test4.h5 -l dset_compact:COMPA"
+arg4="test4.h5 -l dset_contiguous:COMPA"
+arg5="test4.h5 -l dset_contiguous:CHUNK=3x6"
+arg6="test4.h5 -l dset_contiguous:CONTI"
+arg7="test4.h5 -l dset_chunk:COMPA"
+arg8="test4.h5 -l dset_chunk:CONTI"
+arg9="test4.h5 -l dset_chunk:CHUNK=18x13"
+if test $USE_FILTER_SZIP_ENCODER = "yes" -o $USE_FILTER_SZIP = "no" ; then
+ TOOLTEST $arg1
+ TOOLTEST $arg2
+ TOOLTEST $arg3
+ TOOLTEST $arg4
+ TOOLTEST $arg5
+ TOOLTEST $arg6
+ TOOLTEST $arg7
+ TOOLTEST $arg8
+ TOOLTEST $arg9
+else
+ SKIP $arg1
+ SKIP $arg2
+ SKIP $arg3
+ SKIP $arg4
+ SKIP $arg5
+ SKIP $arg6
+ SKIP $arg7
+ SKIP $arg8
+ SKIP $arg9
+fi
+
+#filters
+arg1="test4.h5 -f dset1:SHUF -f dset1,dset2:GZIP=6"
+arg2="test4.h5 -l dset1:CHUNK=20x10 -f dset1,dset2:SZIP=8"
+if test $USE_FILTER_SZIP_ENCODER = "yes" -a $USE_FILTER_SZIP = "yes"; then
+ TOOLTEST $arg1
+ TOOLTEST $arg2
+elif test $USE_FILTER_SZIP = "yes" ; then # SZIP has no encoder
+ SKIP $arg1
+ SKIP $arg2
+else # SZIP is absent
+ TOOLTEST $arg1
+ SKIP $arg2
+fi
+
+#filter conversions
+arg1="test4.h5 -f dset_gzip:SZIP=8"
+arg2="test4.h5 -f dset_szip:GZIP=1"
+arg3="test4.h5 -f dset_all:GZIP=1"
+if test $USE_FILTER_SZIP_ENCODER = "yes" -a $USE_FILTER_SZIP = "yes" ; then
+ TOOLTEST $arg1
+ TOOLTEST $arg2
+ TOOLTEST $arg3
+elif test $USE_FILTER_SZIP = "yes" ; then # SZIP has no encoder
+ SKIP $arg1
+ SKIP $arg2
+ SKIP $arg3
+else # SZIP is absent
+ SKIP $arg1
+ TOOLTEST $arg2
+ TOOLTEST $arg3
+fi
+
+#limit
+TOOLTEST test4.h5 -f GZIP=1 -m 1024
+
+#file
+arg="test4.h5 -e ../testfiles/h5repack_info.txt"
+if test $USE_FILTER_SZIP_ENCODER = "yes" -a $USE_FILTER_SZIP = "yes" ; then
+ TOOLTEST $arg
+else
+ SKIP $arg
+fi
+
+if test $nerrors -eq 0 ; then
+ echo "All $H5REPACK tests passed."
+fi
+
+exit $nerrors
diff --git a/tools/h5repack/h5repack_copy.c b/tools/h5repack/h5repack_copy.c
index 7763bd2..70d90da 100644
--- a/tools/h5repack/h5repack_copy.c
+++ b/tools/h5repack/h5repack_copy.c
@@ -299,10 +299,12 @@ int do_copy_objects(hid_t fidin,
*/
if ((dset_out=H5Dcreate(fidout,travt->objs[i].name,mtype_id,space_id,dcpl_id))<0)
goto error;
+
if (dsize_in && nelmts) {
if (H5Dwrite(dset_out,mtype_id,H5S_ALL,H5S_ALL,H5P_DEFAULT,buf)<0)
goto error;
}
+
/*-------------------------------------------------------------------------
* copy attrs
*-------------------------------------------------------------------------
diff --git a/tools/h5repack/h5repack_filters.c b/tools/h5repack/h5repack_filters.c
index c8b9b5d..18080c6 100644
--- a/tools/h5repack/h5repack_filters.c
+++ b/tools/h5repack/h5repack_filters.c
@@ -293,6 +293,7 @@ int print_filters(hid_t dcpl_id)
for (i=0; i<nfilters; i++)
{
cd_nelmts = NELMTS(cd_values);
+#ifdef H5_WANT_H5_V1_6_COMPAT
filtn = H5Pget_filter(dcpl_id,
(unsigned)i,
&filt_flags,
@@ -300,6 +301,16 @@ int print_filters(hid_t dcpl_id)
cd_values,
sizeof(f_name),
f_name);
+#else
+ filtn = H5Pget_filter(dcpl_id,
+ (unsigned)i,
+ &filt_flags,
+ &cd_nelmts,
+ cd_values,
+ sizeof(f_name),
+ f_name,
+ NULL);
+#endif /* H5_WANT_H5_V1_6_COMPAT */
f_name[sizeof(f_name)-1] = '\0';
sprintf(s, "Filter-%d:", i);
diff --git a/tools/h5repack/h5repack_verify.c b/tools/h5repack/h5repack_verify.c
index 4f69d5f..d69465b 100644
--- a/tools/h5repack/h5repack_verify.c
+++ b/tools/h5repack/h5repack_verify.c
@@ -60,6 +60,7 @@ int has_filter(hid_t dcpl_id,
for (i=0; i<nfilters; i++)
{
cd_nelmts = NELMTS(cd_values);
+#ifdef H5_WANT_H5_V1_6_COMPAT
filtn = H5Pget_filter(dcpl_id,
(unsigned)i,
&filt_flags,
@@ -67,6 +68,16 @@ int has_filter(hid_t dcpl_id,
cd_values,
sizeof(f_name),
f_name);
+#else
+ filtn = H5Pget_filter(dcpl_id,
+ (unsigned)i,
+ &filt_flags,
+ &cd_nelmts,
+ cd_values,
+ sizeof(f_name),
+ f_name,
+ NULL);
+#endif /* H5_WANT_H5_V1_6_COMPAT */
if (filtnin==filtn)
have=1;
diff --git a/tools/h5repack/testh5repack_filters.c b/tools/h5repack/testh5repack_filters.c
index b285b28..597381c 100644
--- a/tools/h5repack/testh5repack_filters.c
+++ b/tools/h5repack/testh5repack_filters.c
@@ -76,12 +76,15 @@ int make_filters(hid_t loc_id)
* SZIP
*-------------------------------------------------------------------------
*/
- /* set szip data */
- if(H5Pset_szip (dcpl,szip_options_mask,szip_pixels_per_block)<0)
- goto out;
- if (make_dset(loc_id,"dset_szip",sid,dcpl,buf)<0)
- goto out;
+#if defined (H5_HAVE_FILTER_SZIP) && defined (H5_SZIP_CAN_ENCODE)
+ /* set szip data */
+ if(H5Pset_szip (dcpl,szip_options_mask,szip_pixels_per_block)<0)
+ goto out;
+ if (make_dset(loc_id,"dset_szip",sid,dcpl,buf)<0)
+ goto out;
+
+#endif /* H5_HAVE_FILTER_SZIP && H5_SZIP_CAN_ENCODE */
/*-------------------------------------------------------------------------
* GZIP
*-------------------------------------------------------------------------
@@ -128,18 +131,19 @@ int make_filters(hid_t loc_id)
* shuffle + SZIP
*-------------------------------------------------------------------------
*/
- /* remove the filters from the dcpl */
- if (H5Premove_filter(dcpl,H5Z_FILTER_ALL)<0)
- goto out;
- /* set the shuffle filter */
- if (H5Pset_shuffle(dcpl)<0)
- goto out;
- /* set szip data */
- if(H5Pset_szip (dcpl,szip_options_mask,szip_pixels_per_block)<0)
- goto out;
- if (make_dset(loc_id,"dset_all",sid,dcpl,buf)<0)
- goto out;
-
+#if defined (H5_HAVE_FILTER_SZIP) && defined (H5_SZIP_CAN_ENCODE)
+ /* remove the filters from the dcpl */
+ if (H5Premove_filter(dcpl,H5Z_FILTER_ALL)<0)
+ goto out;
+ /* set the shuffle filter */
+ if (H5Pset_shuffle(dcpl)<0)
+ goto out;
+ /* set szip data */
+ if(H5Pset_szip (dcpl,szip_options_mask,szip_pixels_per_block)<0)
+ goto out;
+ if (make_dset(loc_id,"dset_all",sid,dcpl,buf)<0)
+ goto out;
+#endif
/*-------------------------------------------------------------------------
* close space and dcpl
diff --git a/tools/h5repack/testh5repack_main.c b/tools/h5repack/testh5repack_main.c
index ddecd98..4c0a8c5 100644
--- a/tools/h5repack/testh5repack_main.c
+++ b/tools/h5repack/testh5repack_main.c
@@ -203,7 +203,8 @@ int main (void)
TESTING(" removing szip filter");
-#ifdef H5_HAVE_FILTER_SZIP
+#if defined (H5_HAVE_FILTER_SZIP) && defined (H5_SZIP_CAN_ENCODE)
+
if (h5repack_init (&pack_options, 0)<0)
TEST_ERROR;
if (h5repack_addfilter("dset_szip:NONE",&pack_options)<0)
@@ -216,7 +217,6 @@ int main (void)
TEST_ERROR;
if (h5repack_end (&pack_options)<0)
TEST_ERROR;
-
PASSED();
#else
SKIPPED();
@@ -330,12 +330,11 @@ int main (void)
TESTING(" adding szip filter");
-#ifdef H5_HAVE_FILTER_SZIP
-
/*-------------------------------------------------------------------------
* test an individual object option
*-------------------------------------------------------------------------
*/
+#if defined (H5_HAVE_FILTER_SZIP) && defined (H5_SZIP_CAN_ENCODE)
if (h5repack_init (&pack_options, 0)<0)
TEST_ERROR;
@@ -364,7 +363,7 @@ int main (void)
*/
TESTING(" adding szip filter to all");
-#ifdef H5_HAVE_FILTER_SZIP
+#if defined (H5_HAVE_FILTER_SZIP) && defined (H5_SZIP_CAN_ENCODE)
if (h5repack_init (&pack_options, 0)<0)
TEST_ERROR;
@@ -379,7 +378,8 @@ TESTING(" adding szip filter to all");
if (h5repack_end (&pack_options)<0)
TEST_ERROR;
- PASSED();
+ PASSED();
+
#else
SKIPPED();
#endif
@@ -522,8 +522,10 @@ TESTING(" addding shuffle filter to all");
#endif
if (h5repack_addfilter("dset1:SHUF",&pack_options)<0)
TEST_ERROR;
- if (h5repack_addfilter("dset1:SZIP=8",&pack_options)<0)
- TEST_ERROR;
+#if defined (H5_HAVE_FILTER_SZIP) && defined (H5_SZIP_CAN_ENCODE)
+ if (h5repack_addfilter("dset1:SZIP=8",&pack_options)<0)
+ TEST_ERROR;
+#endif
if (h5repack_addfilter("dset1:GZIP=1",&pack_options)<0)
TEST_ERROR;
if (h5repack(FNAME4,FNAME4OUT,&pack_options)<0)
@@ -542,7 +544,7 @@ TESTING(" addding shuffle filter to all");
* filter conversion from deflate to szip
*-------------------------------------------------------------------------
*/
-#ifdef H5_HAVE_FILTER_DEFLATE
+#if defined(H5_HAVE_FILTER_DEFLATE) && defined(H5_HAVE_FILTER_SZIP) && defined(H5_SZIP_CAN_ENCODE)
if (h5repack_init (&pack_options, 0)<0)
TEST_ERROR;
if (h5repack_addfilter("dset_gzip:SZIP=8",&pack_options)<0)
@@ -556,16 +558,18 @@ TESTING(" addding shuffle filter to all");
if (h5repack_end (&pack_options)<0)
TEST_ERROR;
PASSED();
-#else
+#else
SKIPPED();
-#endif
+#endif
+
TESTING(" filter conversion from szip to deflate");
/*-------------------------------------------------------------------------
* filter conversion from szip to deflate
*-------------------------------------------------------------------------
*/
-#ifdef H5_HAVE_FILTER_SZIP
+#if defined (H5_HAVE_FILTER_SZIP) && defined (H5_SZIP_CAN_ENCODE)
+
if (h5repack_init (&pack_options, 0)<0)
TEST_ERROR;
if (h5repack_addfilter("dset_szip:GZIP=1",&pack_options)<0)
@@ -579,6 +583,7 @@ TESTING(" addding shuffle filter to all");
if (h5repack_end (&pack_options)<0)
TEST_ERROR;
PASSED();
+
#else
SKIPPED();
#endif
@@ -588,7 +593,8 @@ TESTING(" addding shuffle filter to all");
* filter conversion from szip to deflate
*-------------------------------------------------------------------------
*/
-#ifdef H5_HAVE_FILTER_SZIP
+#if defined (H5_HAVE_FILTER_SZIP) && defined (H5_SZIP_CAN_ENCODE)
+
if (h5repack_init (&pack_options, 0)<0)
TEST_ERROR;
if (h5repack_addfilter("dset_all:GZIP=1",&pack_options)<0)
@@ -601,7 +607,7 @@ TESTING(" addding shuffle filter to all");
TEST_ERROR;
if (h5repack_end (&pack_options)<0)
TEST_ERROR;
- PASSED();
+ PASSED();
#else
SKIPPED();
#endif
diff --git a/tools/lib/h5tools_filters.c b/tools/lib/h5tools_filters.c
index bb69798..153c832 100644
--- a/tools/lib/h5tools_filters.c
+++ b/tools/lib/h5tools_filters.c
@@ -79,7 +79,11 @@ int h5tools_canreadf(const char* name, /* object name, serves also as boolean pr
/* check availability of filters */
for (i=0; i<nfilters; i++)
{
+#ifdef H5_WANT_H5_V1_6_COMPAT
if ((filtn = H5Pget_filter(dcpl_id,(unsigned)i,0,0,0,0,0))<0)
+#else
+ if ((filtn = H5Pget_filter(dcpl_id,(unsigned)i,0,0,0,0,0,NULL))<0)
+#endif
return -1;
switch (filtn)