summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
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)