From bc6ab7c0a6ff27d3d52707419385ccd0771ffa0c Mon Sep 17 00:00:00 2001
From: Pedro Vicente Nunes <pvn@hdfgroup.org>
Date: Tue, 13 Jul 2004 14:09:41 -0500
Subject: [svn-r8869] Purpose: h5repack changes

Description:
there were some requests to change some minor h5repack features
h5repack only made a warning about a non available filter in verbose mode ( -v )
without -v it kept silent, and users sometimes missed this warning

the request was that it should print this warning always. so, the new format, is e.g

./h5repack -i test_szip.h5 -o out.h5
Warning: dataset </dset_szip> cannot be read, SZIP filter is not available


due to this, and to avoid a lot of these messages in the shell test script, I modified
the script h5repack.sh so that it detects the presence of all filters in the environment
(previously it only detected SZIP)
the test files were also divided in more files , to make the script code easier to
follow


Solution:

Platforms tested:
linux
AIX (no szip)
solaris (no szip, no gzip )

Misc. update:
---
 MANIFEST                              |   8 +-
 tools/h5repack/Makefile.in            |   5 +-
 tools/h5repack/h5repack.c             |  29 +-
 tools/h5repack/h5repack.h             |  24 +-
 tools/h5repack/h5repack.sh.in         | 334 +++++++++++++---------
 tools/h5repack/h5repack_copy.c        |  43 +--
 tools/h5repack/h5repack_filters.c     |   8 +-
 tools/h5repack/h5repack_list.c        |   6 +-
 tools/h5repack/h5repack_parse.c       |   2 +-
 tools/h5repack/h5repack_refs.c        |  33 ++-
 tools/h5repack/h5repack_verify.c      |   8 +-
 tools/h5repack/testh5repack_attr.c    |   2 +-
 tools/h5repack/testh5repack_filters.c | 170 ------------
 tools/h5repack/testh5repack_layout.c  | 108 --------
 tools/h5repack/testh5repack_main.c    | 492 +++++++++++++++++---------------
 tools/h5repack/testh5repack_make.c    | 508 +++++++++++++++++++++++++++++++++-
 tools/h5repack/testh5repack_util.c    |   6 +-
 tools/lib/h5tools_filters.c           |   9 +-
 tools/testfiles/h5repack_info.txt     |   2 +-
 tools/testfiles/test1.h5              | Bin 34520 -> 33920 bytes
 tools/testfiles/test3.h5              | Bin 6984 -> 6984 bytes
 tools/testfiles/test4.h5              | Bin 57696 -> 29384 bytes
 tools/testfiles/test5.h5              | Bin 0 -> 259464 bytes
 tools/testfiles/test_all.h5           | Bin 0 -> 5925 bytes
 tools/testfiles/test_deflate.h5       | Bin 0 -> 5954 bytes
 tools/testfiles/test_fletcher32.h5    | Bin 0 -> 7880 bytes
 tools/testfiles/test_shuffle.h5       | Bin 0 -> 7864 bytes
 tools/testfiles/test_szip.h5          | Bin 0 -> 5588 bytes
 28 files changed, 1086 insertions(+), 711 deletions(-)
 delete mode 100644 tools/h5repack/testh5repack_filters.c
 delete mode 100644 tools/h5repack/testh5repack_layout.c
 create mode 100644 tools/testfiles/test5.h5
 create mode 100644 tools/testfiles/test_all.h5
 create mode 100644 tools/testfiles/test_deflate.h5
 create mode 100644 tools/testfiles/test_fletcher32.h5
 create mode 100644 tools/testfiles/test_shuffle.h5
 create mode 100644 tools/testfiles/test_szip.h5

diff --git a/MANIFEST b/MANIFEST
index ef8399d..d5d43b8 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -1153,10 +1153,8 @@
 ./tools/h5repack/h5repack_parse.c
 ./tools/h5repack/testh5repack_attr.c
 ./tools/h5repack/testh5repack_dset.c
-./tools/h5repack/testh5repack_filters.c
 ./tools/h5repack/testh5repack_make.c
 ./tools/h5repack/testh5repack_main.c
-./tools/h5repack/testh5repack_layout.c
 ./tools/h5repack/testh5repack_util.c
 
 
@@ -1519,6 +1517,12 @@
 ./tools/testfiles/test1.h5
 ./tools/testfiles/test3.h5
 ./tools/testfiles/test4.h5
+./tools/testfiles/test5.h5
+./tools/testfiles/test_all.h5
+./tools/testfiles/test_deflate.h5
+./tools/testfiles/test_fletcher32.h5
+./tools/testfiles/test_shuffle.h5
+./tools/testfiles/test_szip.h5
 ./tools/testfiles/h5repack_info.txt
 
 ./windows/all.zip
diff --git a/tools/h5repack/Makefile.in b/tools/h5repack/Makefile.in
index 6e7c61c..630a4e8 100644
--- a/tools/h5repack/Makefile.in
+++ b/tools/h5repack/Makefile.in
@@ -30,6 +30,7 @@ CPPFLAGS=-I. -I$(srcdir) -I$(top_builddir)/src -I$(top_srcdir)/src  \
 TEST_PROGS=h5repacktst
 TEST_SCRIPTS=./h5repack.sh
 
+
 ## These are our main targets: library and tools.
 ##
 LIBHDF5=$(top_builddir)/src/libhdf5.la
@@ -51,10 +52,10 @@ DISTCLEAN=h5repack.sh
 
 ## Source and object files for programs...
 ##
-PROG_SRC=h5repack.c h5repack_copy.c h5repack_filters.c  h5repack_refs.c h5repack_layout.c  h5repack_list.c h5repack_main.c h5repack_opttable.c h5repack_parse.c h5repack_verify.c testh5repack_attr.c testh5repack_dset.c testh5repack_filters.c  testh5repack_main.c testh5repack_make.c testh5repack_layout.c testh5repack_util.c
+PROG_SRC=h5repack.c h5repack_copy.c h5repack_filters.c  h5repack_refs.c h5repack_layout.c  h5repack_list.c h5repack_main.c h5repack_opttable.c h5repack_parse.c h5repack_verify.c testh5repack_attr.c testh5repack_dset.c   testh5repack_main.c testh5repack_make.c  testh5repack_util.c
 PROG_OBJ=$(PROG_SRC:.c=.lo)
 OBJS=h5repack.lo h5repack_filters.lo h5repack_copy.lo h5repack_refs.lo h5repack_layout.lo h5repack_list.lo h5repack_main.lo h5repack_opttable.lo h5repack_parse.lo h5repack_verify.lo	
-TEST_OBJS=h5repack.lo h5repack_filters.lo  h5repack_copy.lo h5repack_refs.lo h5repack_layout.lo h5repack_list.lo h5repack_opttable.lo h5repack_parse.lo h5repack_verify.lo testh5repack_attr.lo testh5repack_dset.lo testh5repack_filters.lo  testh5repack_main.lo testh5repack_make.lo testh5repack_layout.lo  testh5repack_util.lo
+TEST_OBJS=h5repack.lo h5repack_filters.lo  h5repack_copy.lo h5repack_refs.lo h5repack_layout.lo h5repack_list.lo h5repack_opttable.lo h5repack_parse.lo h5repack_verify.lo testh5repack_attr.lo testh5repack_dset.lo  testh5repack_main.lo testh5repack_make.lo  testh5repack_util.lo
 
 PRIVATE_HDR=
 
diff --git a/tools/h5repack/h5repack.c b/tools/h5repack/h5repack.c
index cd7a31b..cfd9363 100644
--- a/tools/h5repack/h5repack.c
+++ b/tools/h5repack/h5repack.c
@@ -55,7 +55,7 @@ static void aux_initglb_filter(pack_opt_t *options)
  *
  * Return: 0, ok, -1, fail
  *
- * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
+ * Programmer:  pvn@ncsa.uiuc.edu
  *
  * Date: September, 22, 2003
  *
@@ -223,7 +223,7 @@ int h5repack_addlayout(const char* str,
  *
  * Return: void, return -1 on error
  *
- * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
+ * Programmer:  pvn@ncsa.uiuc.edu
  *
  * Date: September, 22, 2003
  *
@@ -243,9 +243,9 @@ static int check_options(pack_opt_t *options)
  if (options->verbose) 
  {
   printf("\n");
-  printf("Objects to modify are...\n");
+  printf("Objects to modify layout are...\n");
   if (options->all_layout==1)  {
-   printf("\tApply layout to all\n ");
+   printf(" Apply layout to all\n ");
    if (H5D_CHUNKED==options->layout_g) {
     printf("with dimension [");
     for ( j = 0; j < options->chunk_g.rank; j++)  
@@ -262,7 +262,7 @@ static int check_options(pack_opt_t *options)
   if (options->op_tbl->objs[i].chunk.rank>0)
   {
    if (options->verbose){
-    printf("\t<%s> with chunk size ",name); 
+    printf(" <%s> with chunk size ",name); 
     for ( k = 0; k < options->op_tbl->objs[i].chunk.rank; k++) 
      printf("%d ",(int)options->op_tbl->objs[i].chunk.chunk_lengths[k]);
     printf("\n");
@@ -272,7 +272,7 @@ static int check_options(pack_opt_t *options)
   else if (options->op_tbl->objs[i].chunk.rank==-2)
   {
    if (options->verbose)
-    printf("\t%s %s\n",name,"NONE"); 
+    printf(" <%s> %s\n",name,"NONE"); 
    has_ck=1;
   }
  }
@@ -284,7 +284,7 @@ static int check_options(pack_opt_t *options)
  }
  
 /*-------------------------------------------------------------------------
- * objects to compress/uncompress
+ * objects to filter
  *-------------------------------------------------------------------------
  */
  
@@ -297,10 +297,10 @@ static int check_options(pack_opt_t *options)
    switch (filtn)
    {
    case H5Z_FILTER_NONE:
-     printf("\tUncompress all %s\n",get_sfilter(filtn));
+     printf(" Uncompress all %s\n",get_sfilter(filtn));
     break;
    case H5Z_FILTER_SZIP:
-     printf("\tCompress all with %s compression\n",get_sfilter(filtn));
+     printf(" Compress all with %s compression\n",get_sfilter(filtn));
     break;
    case H5Z_FILTER_DEFLATE:
      printf("\tCompress all with %s compression, parameter %d\n",
@@ -314,15 +314,16 @@ static int check_options(pack_opt_t *options)
  for ( i = 0; i < options->op_tbl->nelems; i++) 
  {
   pack_info_t pack  = options->op_tbl->objs[i];
-  char*       name = pack.path;
+  char*       name  = pack.path;
 
   for ( j=0; j<pack.nfilters; j++)
   {
    if (options->verbose) 
    {
-    printf("\t<%s> with %s filter",
+    printf(" <%s> with %s filter%s",
      name,
-     get_sfilter(pack.filter[j].filtn));
+     get_sfilter(pack.filter[j].filtn),
+     (i==options->op_tbl->nelems-1)? "" : "\n");
    }
 
    has_cp=1;
@@ -355,7 +356,7 @@ static int check_options(pack_opt_t *options)
 
      options->op_tbl->objs[i].filter[j].filtn=-1;
      options->op_tbl->objs[i].chunk.rank=-1;
-     printf("\tObject <%s> cannot be filtered\n",name);
+     printf(" Object <%s> cannot be filtered\n",name);
 
 
     }
@@ -380,7 +381,7 @@ static int check_options(pack_opt_t *options)
  *
  * Return: void, exit on error
  *
- * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
+ * Programmer:  pvn@ncsa.uiuc.edu
  *
  * Date: September, 22, 2003
  *
diff --git a/tools/h5repack/h5repack.h b/tools/h5repack/h5repack.h
index ef6dca6..eb05316 100644
--- a/tools/h5repack/h5repack.h
+++ b/tools/h5repack/h5repack.h
@@ -264,16 +264,26 @@ int         parse_number(char *str);
  */
 
 #define FNAME1     "test1.h5"
-#define FNAME1OUT  "test1out.h5"
+#define FNAME1OUT  "test1.out.h5"
 #define FNAME2     "test2.h5"
-#define FNAME2OUT  "test2out.h5"
+#define FNAME2OUT  "test2.out.h5"
 #define FNAME3     "test3.h5"
-#define FNAME3OUT  "test3out.h5"
+#define FNAME3OUT  "test3.out.h5"
 #define FNAME4     "test4.h5"
-#define FNAME4OUT  "test4out.h5"
+#define FNAME4OUT  "test4.out.h5"
 #define FNAME5     "test5.h5"
-#define FNAME5OUT  "test5out.h5"
+#define FNAME5OUT  "test5.out.h5"
 #define FNAME6     "test6.h5"
+#define FNAME7     "test_szip.h5"
+#define FNAME8     "test_deflate.h5"
+#define FNAME9     "test_shuffle.h5"
+#define FNAME10    "test_fletcher32.h5"
+#define FNAME11    "test_all.h5"
+#define FNAME7OUT     "test_szip.out.h5"
+#define FNAME8OUT     "test_deflate.out.h5"
+#define FNAME9OUT     "test_shuffle.out.h5"
+#define FNAME10OUT    "test_fletcher32.out.h5"
+#define FNAME11OUT    "test_all.out.h5"
 
 int make_testfiles(void);
 
@@ -300,10 +310,6 @@ void write_dset_in(hid_t loc_id,
                    int make_diffs /* flag to modify data buffers */);
 void write_null_dset(hid_t loc_id);
 
-int make_filters(hid_t loc_id);
-int make_layout(hid_t loc_id);
-
-
 /*-------------------------------------------------------------------------
  * tests utils
  *-------------------------------------------------------------------------
diff --git a/tools/h5repack/h5repack.sh.in b/tools/h5repack/h5repack.sh.in
index 17c6869..e4d65de 100755
--- a/tools/h5repack/h5repack.sh.in
+++ b/tools/h5repack/h5repack.sh.in
@@ -17,6 +17,10 @@
 # Determine if SZIP has the encoder available
 USE_FILTER_SZIP_ENCODER="@USE_FILTER_SZIP_ENCODER@"
 USE_FILTER_SZIP="@USE_FILTER_SZIP@"
+USE_FILTER_DEFLATE="@USE_FILTER_DEFLATE@"
+USE_FILTER_SHUFFLE="@USE_FILTER_SHUFFLE@"
+USE_FILTER_FLETCHER32="@USE_FILTER_FLETCHER32@"
+
 
 H5REPACK=h5repack               # The tool name
 H5REPACK_BIN=`pwd`/$H5REPACK    # The path of the tool binary
@@ -64,20 +68,20 @@ DIFFTEST()
 {
     VERIFY  $@
     if [ "`uname -s`" = "TFLOPS O/S" ]; then
-	$RUNSERIAL $H5DIFF_BIN $@
+     $RUNSERIAL $H5DIFF_BIN $@
     else
-	$RUNSERIAL $H5DIFF_BIN "$@"
+     $RUNSERIAL $H5DIFF_BIN "$@"
     fi
     RET=$?
     if [ $RET != 0 ] ; then
- 	echo "*FAILED*"
+         echo "*FAILED*"
          nerrors="`expr $nerrors + 1`"
     else
          echo " PASSED"
     fi
-				    
+        
 }
-										
+          
 # Call h5repack
 #
 TOOLTEST() 
@@ -91,18 +95,18 @@ TOOLTEST()
     outfile=out.$1
     shift
     if [ "`uname -s`" = "TFLOPS O/S" ]; then
-	$RUNSERIAL $H5REPACK_BIN -i $infile -o $outfile $@
+     $RUNSERIAL $H5REPACK_BIN -i $infile -o $outfile $@
     else
-	$RUNSERIAL $H5REPACK_BIN -i $infile -o $outfile "$@"
+     $RUNSERIAL $H5REPACK_BIN -i $infile -o $outfile "$@"
     fi
 
     RET=$?
     if [ $RET != 0 ] ; then
-	echo "*FAILED*"
-	nerrors="`expr $nerrors + 1`"
+     echo "*FAILED*"
+     nerrors="`expr $nerrors + 1`"
     else
-	echo " PASSED"
-	DIFFTEST $infile $outfile
+     echo " PASSED"
+     DIFFTEST $infile $outfile
     fi
     rm -f $outfile
 }
@@ -110,9 +114,11 @@ TOOLTEST()
 #
 # The tests
 # We use the files generated by h5repacktst
-# Each run generates "file4.out.h5" and the tool h5diff is used to
+# Each run generates "<file>.out.h5" and the tool h5diff is used to
 # compare the input and output files
 #
+# the tests are the same as the program h5repacktst, but run from the CLI 
+#
 
 # See which filters are usable (and skip tests for filters we
 # don't have).  Do this by searching H5pubconf.h to see which
@@ -120,177 +126,233 @@ TOOLTEST()
 # 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
+# copy files (these files have no filters; test2.h5 has copied references that h5diff detects)
 TOOLTEST test1.h5
 TOOLTEST test3.h5
+TOOLTEST test4.h5
+TOOLTEST test5.h5
 
+# use test4.h5 to write some filters  (this file has  no filters)
 
-arg="test4.h5"
-if test $USE_FILTER_SZIP_ENCODER = "yes" -o $USE_FILTER_SZIP = "no" ; then
+# gzip with individual object
+arg="test4.h5 -f dset1:GZIP=1  -l dset1:CHUNK=20x10"
+if test  $USE_FILTER_DEFLATE != "yes" ; then
+ SKIP $arg
+else
  TOOLTEST $arg
+fi
+  
+# gzip for all 
+arg="test4.h5 -f GZIP=1"
+if test  $USE_FILTER_DEFLATE != "yes" ; then
+ SKIP $arg
 else
- SKIP $arg 
+ TOOLTEST $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
+# szip with individual object
+arg="test4.h5 -f dset2:SZIP=8  -l dset2:CHUNK=20x10"
+if test $USE_FILTER_SZIP_ENCODER != "yes" -o $USE_FILTER_SZIP != "yes" ; then
+ SKIP $arg
+else
  TOOLTEST $arg 
+fi
+
+# szip for all
+arg="test4.h5 -f SZIP=8"
+if test $USE_FILTER_SZIP_ENCODER != "yes" -o $USE_FILTER_SZIP != "yes" ; then
+ SKIP $arg
 else
- SKIP $arg 
+ TOOLTEST $arg 
 fi
 
-# gzip
-arg="test4.h5 -f dset1:GZIP=9"
-if test $USE_FILTER_SZIP_ENCODER = "yes" -o $USE_FILTER_SZIP = "no" ; then 
+# shuffle with individual object
+arg="test4.h5 -f dset2:SHUF  -l dset2:CHUNK=20x10"
+if test $USE_FILTER_SHUFFLE != "yes"  ; then
+ SKIP $arg
+else
  TOOLTEST $arg 
+fi
+  
+
+# shuffle for all
+arg="test4.h5 -f SHUF"
+if test $USE_FILTER_SHUFFLE != "yes"  ; then
+ SKIP $arg
 else
- SKIP $arg 
+ TOOLTEST $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 
+  
+# fletcher32  with individual object
+arg="test4.h5 -f dset2:FLET  -l dset2:CHUNK=20x10"
+if test $USE_FILTER_FLETCHER32 != "yes"  ; then
+ SKIP $arg
 else
- SKIP $arg1 
- SKIP $arg2 
+ TOOLTEST $arg
 fi
 
-# shuffle
-arg="test4.h5 -f dset1:SHUF"
-if test $USE_FILTER_SZIP_ENCODER = "yes" -o $USE_FILTER_SZIP = "no" ; then
- TOOLTEST $arg 
+# fletcher32 for all
+arg="test4.h5 -f FLET"
+if test $USE_FILTER_FLETCHER32 != "yes"  ; then
+ SKIP $arg
 else
- SKIP $arg 
+ TOOLTEST $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 
+# all filters
+arg="test4.h5 -f dset2:SHUF -f dset2:FLET -f dset2:SZIP=8 -f dset2:GZIP=1 -l dset2:CHUNK=20x10"
+if test $USE_FILTER_SZIP_ENCODER != "yes" -o $USE_FILTER_SZIP != "yes" -o $USE_FILTER_SHUFFLE != "yes" -o $USE_FILTER_FLETCHER32 != "yes" -o $USE_FILTER_DEFLATE != "yes" ; then
+ SKIP $arg
 else
- SKIP $arg 
+ TOOLTEST $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 
+  
+###########################################################
+# the following tests assume the input files have filters
+###########################################################
+
+# szip copy
+arg="test_szip.h5"
+if test $USE_FILTER_SZIP_ENCODER != "yes" -o $USE_FILTER_SZIP != "yes" ; then
+ SKIP $arg
 else
- SKIP $arg1 
- SKIP $arg2 
+ TOOLTEST $arg
+fi
+  
+# szip remove
+arg="test_szip.h5 -f dset_szip:NONE"
+if test $USE_FILTER_SZIP_ENCODER != "yes" -o $USE_FILTER_SZIP != "yes" ; then
+ SKIP $arg
+else
+ TOOLTEST $arg
+fi
+  
+# deflate copy
+arg="test_deflate.h5"
+if test $USE_FILTER_DEFLATE != "yes" ; then
+ SKIP $arg
+else
+ TOOLTEST $arg
 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 
+# deflate remove
+arg="test_deflate.h5 -f dset_deflate:NONE"
+if test $USE_FILTER_DEFLATE != "yes" ; then
+ SKIP $arg
 else
- SKIP $arg1 
- SKIP $arg2 
+ TOOLTEST $arg
+fi
+    
+# shuffle copy
+arg="test_shuffle.h5"
+if test $USE_FILTER_SHUFFLE != "yes" ; then
+ SKIP $arg
+else
+ TOOLTEST $arg
 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 
+# shuffle remove
+arg="test_shuffle.h5 -f dset_shuffle:NONE"
+if test $USE_FILTER_SHUFFLE != "yes" ; then
+ SKIP $arg
 else
- SKIP $arg1 
- SKIP $arg2 
+ TOOLTEST $arg
 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 
+# fletcher32 copy
+arg="test_fletcher32.h5"
+if test $USE_FILTER_FLETCHER32 != "yes" ; then
+ SKIP $arg
 else
- SKIP $arg1 
- SKIP $arg2 
- SKIP $arg3 
- SKIP $arg4 
- SKIP $arg5 
- SKIP $arg6 
- SKIP $arg7 
- SKIP $arg8 
- SKIP $arg9 
+ TOOLTEST $arg
 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 
+# fletcher32 remove
+arg="test_fletcher32.h5 -f dset_fletcher32:NONE"
+if test $USE_FILTER_FLETCHER32 != "yes" ; then
+ SKIP $arg
+else
+ TOOLTEST $arg
+fi        
+
+# remove all  filters
+arg="test_all.h5 -f NONE"
+if test $USE_FILTER_FLETCHER32 != "yes" -o $USE_FILTER_DEFLATE != "yes" -o $USE_FILTER_SZIP != "yes" -o $USE_FILTER_SZIP_ENCODER != "yes" -o $USE_FILTER_SHUFFLE != "yes"  ; then
+ SKIP $arg
+else
+ TOOLTEST $arg
 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
+
+arg="test_deflate.h5 -f dset_deflate:SZIP=8"
+if test $USE_FILTER_SZIP_ENCODER != "yes" -o $USE_FILTER_SZIP != "yes" -o $USE_FILTER_DEFLATE != "yes" ; then
+ SKIP $arg
+else
+ TOOLTEST $arg 
+fi
+
+arg="test_szip.h5 -f dset_szip:GZIP=1"
+if test $USE_FILTER_SZIP != "yes" -o $USE_FILTER_SZIP_ENCODER != "yes"  -o $USE_FILTER_DEFLATE != "yes" ; then
+ SKIP $arg
+else
+ TOOLTEST $arg 
 fi
 
+
 #limit
-TOOLTEST test4.h5 -f GZIP=1 -m 1024
+arg="test4.h5 -f GZIP=1 -m 1024"
+if test $USE_FILTER_DEFLATE != "yes"  ; then
+ SKIP $arg
+else
+ TOOLTEST $arg
+fi
 
 #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
+if test $USE_FILTER_DEFLATE != "yes" ; then
  SKIP $arg 
+else
+ TOOLTEST $arg 
 fi
 
+
+#########################################################
+# layout options (these files have no filters)
+#########################################################
+
+TOOLTEST test4.h5 -l dset2:CHUNK=20x10
+TOOLTEST test4.h5 -l CHUNK=20x10
+TOOLTEST test4.h5 -l dset2:CONTI
+TOOLTEST test4.h5 -l CONTI
+TOOLTEST test4.h5 -l dset2:COMPA
+TOOLTEST test4.h5 -l COMPA
+
+
+################################################################
+# layout conversions (file has no filters)
+###############################################################
+
+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"
+TOOLTEST $arg1
+TOOLTEST $arg2
+TOOLTEST $arg3
+TOOLTEST $arg4
+TOOLTEST $arg5
+TOOLTEST $arg6
+TOOLTEST $arg7
+TOOLTEST $arg8
+TOOLTEST $arg9
+
+
 if test $nerrors -eq 0 ; then
    echo "All $H5REPACK tests passed."
 fi
diff --git a/tools/h5repack/h5repack_copy.c b/tools/h5repack/h5repack_copy.c
index 70d90da..e352b97 100644
--- a/tools/h5repack/h5repack_copy.c
+++ b/tools/h5repack/h5repack_copy.c
@@ -26,7 +26,7 @@
  *
  * Return: 0, ok, -1 no
  *
- * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
+ * Programmer: pvn@ncsa.uiuc.edu
  *
  * Date: October, 23, 2003
  *
@@ -129,7 +129,7 @@ out:
  *
  * Return: 0, ok, -1 no
  *
- * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
+ * Programmer: pvn@ncsa.uiuc.edu
  *
  * Date: October, 23, 2003
  *
@@ -141,22 +141,23 @@ int do_copy_objects(hid_t fidin,
                     trav_table_t *travt,
                     pack_opt_t *options) /* repack options */
 {
- hid_t     grp_in=-1;       /* group ID */ 
- hid_t     grp_out=-1;      /* group ID */ 
- hid_t     dset_in=-1;      /* read dataset ID */ 
- hid_t     dset_out=-1;     /* write dataset ID */ 
- hid_t     type_in=-1;      /* named type ID */ 
- hid_t     type_out=-1;     /* named type ID */ 
- hid_t     dcpl_id=-1;      /* dataset creation property list ID */ 
- hid_t     space_id=-1;     /* space ID */ 
- hid_t     ftype_id=-1;     /* file data type ID */ 
- hid_t     mtype_id=-1;     /* memory data type ID */
+ hid_t     grp_in;       /* group ID */ 
+ hid_t     grp_out;      /* group ID */ 
+ hid_t     dset_in;      /* read dataset ID */ 
+ hid_t     dset_out;     /* write dataset ID */ 
+ hid_t     type_in;      /* named type ID */ 
+ hid_t     type_out;     /* named type ID */ 
+ hid_t     dcpl_id;      /* dataset creation property list ID */ 
+ hid_t     space_id;     /* space ID */ 
+ hid_t     ftype_id;     /* file data type ID */ 
+ hid_t     mtype_id;     /* memory data type ID */
  size_t    msize;        /* memory size of memory type */
  void      *buf=NULL;    /* data buffer */
  hsize_t   nelmts;       /* number of elements in dataset */
  int       rank;         /* rank of dataset */
  hsize_t   dims[H5S_MAX_RANK];/* dimensions of dataset */
  hsize_t   dsize_in;     /* input dataset size before filter */
+ int       next;         /* external files */
 #ifdef LATER
  hsize_t   dsize_out;    /* output dataset size after filter */
 #endif /* LATER */
@@ -235,13 +236,24 @@ int do_copy_objects(hid_t fidin,
     print_filters(dcpl_id);
 
 /*-------------------------------------------------------------------------
+ * check for external files
+ *-------------------------------------------------------------------------
+ */
+   if ((next=H5Pget_external_count (dcpl_id))<0) 
+    goto error;
+
+   if (next) {
+    fprintf(stderr,"Warning: <%s> has external files, ignoring read...\n",travt->objs[i].name );
+   }
+
+/*-------------------------------------------------------------------------
  * check if the dataset creation property list has filters that 
  * are not registered in the current configuration 
  * 1) the external filters GZIP and SZIP might not be available
  * 2) the internal filters might be turned off
  *-------------------------------------------------------------------------
  */
-   if (h5tools_canreadf((options->verbose?travt->objs[i].name:NULL),dcpl_id)==1)
+   if (next==0 && h5tools_canreadf((travt->objs[i].name),dcpl_id)==1)
    {
 
 /*-------------------------------------------------------------------------
@@ -476,7 +488,7 @@ error:
  *
  * Return: 0, ok, -1 no
  *
- * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
+ * Programmer: pvn@ncsa.uiuc.edu
  *
  * Date: October, 28, 2003
  *
@@ -553,8 +565,6 @@ int copy_attr(hid_t loc_in,
  */
   if ( ! H5Tequal(mtype_id, H5T_STD_REF_OBJ)) 
   {
-   
-   
  /*-------------------------------------------------------------------------
   * read to memory
   *-------------------------------------------------------------------------
@@ -582,7 +592,6 @@ int copy_attr(hid_t loc_in,
    if (H5Aclose(attr_out)<0) 
     goto error;
    
-   
    if (buf)
     free(buf);
    
diff --git a/tools/h5repack/h5repack_filters.c b/tools/h5repack/h5repack_filters.c
index 18080c6..56ab189 100644
--- a/tools/h5repack/h5repack_filters.c
+++ b/tools/h5repack/h5repack_filters.c
@@ -42,7 +42,7 @@ static void aux_objinsert_filter(pack_info_t *obj,
  *
  * Return: 0 not found, 1 found
  *
- * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
+ * Programmer:  pvn@ncsa.uiuc.edu
  *
  * Date: December 19, 2003
  *
@@ -104,7 +104,7 @@ int filter_this(const char* name,    /* object name from traverse list */
  *
  * Return: 0 success, -1 an error occured
  *
- * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
+ * Programmer:  pvn@ncsa.uiuc.edu
  *
  * Date: December 19, 2003
  *
@@ -267,7 +267,7 @@ out:
  *
  * Return: 0, ok, -1 no
  *
- * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
+ * Programmer:  pvn@ncsa.uiuc.edu
  *
  * Date: December 19, 2003
  *
@@ -343,7 +343,7 @@ int print_filters(hid_t dcpl_id)
  * Return: 1=can apply the filter
  *         0=cannot apply the filter
  *
- * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
+ * Programmer:  pvn@ncsa.uiuc.edu
  *
  * Date: December 23, 2003
  *
diff --git a/tools/h5repack/h5repack_list.c b/tools/h5repack/h5repack_list.c
index 74e79a4..8c8acee 100644
--- a/tools/h5repack/h5repack_list.c
+++ b/tools/h5repack/h5repack_list.c
@@ -28,7 +28,7 @@
  *
  * Return: 0, ok, -1 no
  *
- * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
+ * Programmer: pvn@ncsa.uiuc.edu
  *
  * Date: September, 23, 2003
  *
@@ -85,7 +85,7 @@ int check_objects(const char* fname,
  {
   char* name=options->op_tbl->objs[i].path;
   if (options->verbose)
-   printf(PFORMAT1,"","",name);
+   printf(" <%s>",name);
   
   /* the input object names are present in the file and are valid */
   if (h5trav_getindext(name,travt)<0)
@@ -120,7 +120,7 @@ out:
  *
  * Return: void
  *
- * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
+ * Programmer: pvn@ncsa.uiuc.edu
  *
  * Date: October 23, 2003
  *
diff --git a/tools/h5repack/h5repack_parse.c b/tools/h5repack/h5repack_parse.c
index 204adf3..9efeeb3 100644
--- a/tools/h5repack/h5repack_parse.c
+++ b/tools/h5repack/h5repack_parse.c
@@ -277,7 +277,7 @@ const char* get_sfilter(H5Z_filter_t filtn)
  else if (filtn==H5Z_FILTER_SHUFFLE)
   return "SHUFFLE";
  else if (filtn==H5Z_FILTER_FLETCHER32)
-  return "FLETCHERP";
+  return "FLETCHER32";
  else {
   printf("Input error in filter type\n");
   exit(1);
diff --git a/tools/h5repack/h5repack_refs.c b/tools/h5repack/h5repack_refs.c
index e824493..ef7f298 100644
--- a/tools/h5repack/h5repack_refs.c
+++ b/tools/h5repack/h5repack_refs.c
@@ -52,19 +52,20 @@ int do_copy_refobjs(hid_t fidin,
                     trav_table_t *travt,
                     pack_opt_t *options) /* repack options */
 {
- hid_t     grp_in=-1;       /* group ID */ 
- hid_t     grp_out=-1;      /* group ID */ 
- hid_t     dset_in=-1;      /* read dataset ID */ 
- hid_t     dset_out=-1;     /* write dataset ID */ 
- hid_t     type_in=-1;      /* named type ID */ 
- hid_t     dcpl_id=-1;      /* dataset creation property list ID */ 
- hid_t     space_id=-1;     /* space ID */ 
- hid_t     ftype_id=-1;     /* file data type ID */ 
- hid_t     mtype_id=-1;     /* memory data type ID */
- size_t    msize;        /* memory size of memory type */
- hsize_t   nelmts;       /* number of elements in dataset */
- int       rank;         /* rank of dataset */
+ hid_t     grp_in;            /* read group ID */ 
+ hid_t     grp_out;           /* write group ID */ 
+ hid_t     dset_in;           /* read dataset ID */ 
+ hid_t     dset_out;          /* write dataset ID */ 
+ hid_t     type_in;           /* named type ID */ 
+ hid_t     dcpl_id;           /* dataset creation property list ID */ 
+ hid_t     space_id;          /* space ID */ 
+ hid_t     ftype_id;          /* file data type ID */ 
+ hid_t     mtype_id;          /* memory data type ID */
+ size_t    msize;             /* memory size of memory type */
+ hsize_t   nelmts;            /* number of elements in dataset */
+ int       rank;              /* rank of dataset */
  hsize_t   dims[H5S_MAX_RANK];/* dimensions of dataset */
+ int       next;              /* external files */
  int       i, j;
 
 /*-------------------------------------------------------------------------
@@ -127,13 +128,19 @@ int do_copy_refobjs(hid_t fidin,
     goto error;
 
 /*-------------------------------------------------------------------------
+ * check for external files
+ *-------------------------------------------------------------------------
+ */
+   if ((next=H5Pget_external_count (dcpl_id))<0) 
+    goto error;
+/*-------------------------------------------------------------------------
  * check if the dataset creation property list has filters that 
  * are not registered in the current configuration 
  * 1) the external filters GZIP and SZIP might not be available
  * 2) the internal filters might be turned off
  *-------------------------------------------------------------------------
  */
-   if (h5tools_canreadf((options->verbose?travt->objs[i].name:NULL),dcpl_id)==1)
+   if (next==0 && h5tools_canreadf((NULL),dcpl_id)==1)
    {
 
 /*-------------------------------------------------------------------------
diff --git a/tools/h5repack/h5repack_verify.c b/tools/h5repack/h5repack_verify.c
index d69465b..30d3c05 100644
--- a/tools/h5repack/h5repack_verify.c
+++ b/tools/h5repack/h5repack_verify.c
@@ -25,7 +25,7 @@
  *
  * Return: 1 has, 0 does not, -1 error
  *
- * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
+ * Programmer: pvn@ncsa.uiuc.edu
  *
  * Date: December 19, 2003
  *
@@ -99,7 +99,7 @@ int has_filter(hid_t dcpl_id,
  *
  * Return: 1 has, 0 does not, -1 error
  *
- * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
+ * Programmer: pvn@ncsa.uiuc.edu
  *
  * Date: December 30, 2003
  *
@@ -157,7 +157,7 @@ int has_layout(hid_t dcpl_id,
  *
  * Return: 1=filter present, 0=filter not present, -1=error
  *
- * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
+ * Programmer: pvn@ncsa.uiuc.edu
  *
  * Date: December 19, 2003
  *
@@ -344,7 +344,7 @@ error:
  *
  * Return: 1=identical, 0=not identical, -1=error
  *
- * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
+ * Programmer: pvn@ncsa.uiuc.edu
  *
  * Date: December 31, 2003
  *
diff --git a/tools/h5repack/testh5repack_attr.c b/tools/h5repack/testh5repack_attr.c
index 135d15b..dc03415 100644
--- a/tools/h5repack/testh5repack_attr.c
+++ b/tools/h5repack/testh5repack_attr.c
@@ -21,7 +21,7 @@
  *
  * Purpose: write attributes in LOC_ID (dataset, group, named datatype) 
  *
- * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
+ * Programmer:  pvn@ncsa.uiuc.edu
  *
  * Date: November 12, 2003
  *
diff --git a/tools/h5repack/testh5repack_filters.c b/tools/h5repack/testh5repack_filters.c
deleted file mode 100644
index 597381c..0000000
--- a/tools/h5repack/testh5repack_filters.c
+++ /dev/null
@@ -1,170 +0,0 @@
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * 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. *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-#include "hdf5.h"
-#include "h5test.h"
-#include "h5repack.h"
-
-#define DIM1  40
-#define DIM2  20
-#define CDIM1 DIM1/2
-#define CDIM2 DIM2/2
-#define RANK  2
-
-/*-------------------------------------------------------------------------
- * Function: make_filters
- *
- * Purpose: make several datasets with filters in location LOC_ID
- *
- *-------------------------------------------------------------------------
- */
-int make_filters(hid_t loc_id)
-{
- hid_t    dcpl; /* dataset creation property list */
- hid_t    sid;  /* dataspace ID */
- unsigned szip_options_mask=H5_SZIP_ALLOW_K13_OPTION_MASK|H5_SZIP_NN_OPTION_MASK;
- unsigned szip_pixels_per_block=8;
- hsize_t  dims[RANK]={DIM1,DIM2};
- hsize_t  chunk_dims[RANK]={CDIM1,CDIM2};
- int      buf[DIM1][DIM2];
- char     name[5];
- int      i, j, n;
-
- for (i=n=0; i<DIM1; i++){
-  for (j=0; j<DIM2; j++){
-   buf[i][j]=n++;
-  }
- }
- 
-/*-------------------------------------------------------------------------
- * make several dataset with no filters
- *-------------------------------------------------------------------------
- */
- for (i=0; i<4; i++)
- {
-  sprintf(name,"dset%d",i+1);
-  if (write_dset(loc_id,RANK,dims,name,H5T_NATIVE_INT,buf)<0)
-   return -1;
- }
- 
-/*-------------------------------------------------------------------------
- * make several dataset with filters
- *-------------------------------------------------------------------------
- */
- /* create a space */
- if((sid = H5Screate_simple(RANK, dims, NULL))<0)
-  return -1;
- /* create a dataset creation property list; the same DCPL is used for all dsets */
- if ((dcpl = H5Pcreate(H5P_DATASET_CREATE))<0)
-  goto out;
- /* set up chunk */
- if(H5Pset_chunk(dcpl, RANK, chunk_dims)<0)
-  goto out;
-
-/*-------------------------------------------------------------------------
- * SZIP
- *-------------------------------------------------------------------------
- */
-#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
- *-------------------------------------------------------------------------
- */
- /* remove the filters from the dcpl */
- if (H5Premove_filter(dcpl,H5Z_FILTER_ALL)<0) 
-  goto out;
- /* set deflate data */
- if(H5Pset_deflate(dcpl, 9)<0)
-  goto out;
- if (make_dset(loc_id,"dset_gzip",sid,dcpl,buf)<0)
-  goto out;
-
-
-/*-------------------------------------------------------------------------
- * shuffle
- *-------------------------------------------------------------------------
- */
- /* 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;
- if (make_dset(loc_id,"dset_shuffle",sid,dcpl,buf)<0)
-  goto out;
-
-/*-------------------------------------------------------------------------
- * checksum
- *-------------------------------------------------------------------------
- */
-#if defined (H5_HAVE_FILTER_FLETCHER32)
- /* remove the filters from the dcpl */
- if (H5Premove_filter(dcpl,H5Z_FILTER_ALL)<0) 
-  goto out;
- /* set the checksum filter */
- if (H5Pset_fletcher32(dcpl)<0) 
-  goto out;
- if (make_dset(loc_id,"dset_fletcher32",sid,dcpl,buf)<0)
-  goto out;
-#endif
-
-/*-------------------------------------------------------------------------
- * shuffle + SZIP
- *-------------------------------------------------------------------------
- */
-#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
- *-------------------------------------------------------------------------
- */
- if(H5Sclose(sid)<0)
-  goto out;
- if(H5Pclose(dcpl)<0)
-  goto out;
- 
- return 0;                                                 
- 
-out:
- H5E_BEGIN_TRY {
-  H5Pclose(dcpl);
-  H5Sclose(sid);
- } H5E_END_TRY;
- return -1;
-}
-
-
-
-
-
diff --git a/tools/h5repack/testh5repack_layout.c b/tools/h5repack/testh5repack_layout.c
deleted file mode 100644
index 96e0ba6..0000000
--- a/tools/h5repack/testh5repack_layout.c
+++ /dev/null
@@ -1,108 +0,0 @@
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * 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. *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-#include "hdf5.h"
-#include "h5test.h"
-#include "h5repack.h"
-
-#define DIM1  40
-#define DIM2  20
-#define CDIM1 20
-#define CDIM2 10
-
-#define RANK  2
-
-
-/*-------------------------------------------------------------------------
- * Function: make_layout
- *
- * Purpose: make several datasets with several layouts in location LOC_ID
- *
- *-------------------------------------------------------------------------
- */
-int make_layout(hid_t loc_id)
-{
- hid_t    dcpl; /* dataset creation property list */
- hid_t    sid;  /* dataspace ID */
- hsize_t  dims[RANK]={DIM1,DIM2};
- hsize_t  chunk_dims[RANK]={CDIM1,CDIM2};
- int      buf[DIM1][DIM2];
- int      i, j, n;
-
- for (i=n=0; i<DIM1; i++){
-  for (j=0; j<DIM2; j++){
-   buf[i][j]=n++;
-  }
- }
-/*-------------------------------------------------------------------------
- * make several dataset with several layout options
- *-------------------------------------------------------------------------
- */
- /* create a space */
- if((sid = H5Screate_simple(RANK, dims, NULL))<0)
-  return -1;
- /* create a dataset creation property list; the same DCPL is used for all dsets */
- if ((dcpl = H5Pcreate(H5P_DATASET_CREATE))<0)
-  goto out;
-
-/*-------------------------------------------------------------------------
- * H5D_COMPACT
- *-------------------------------------------------------------------------
- */
- if(H5Pset_layout (dcpl,H5D_COMPACT)<0)
-  goto out;
- if (make_dset(loc_id,"dset_compact",sid,dcpl,buf)<0)
-  goto out;
-
-/*-------------------------------------------------------------------------
- * H5D_COMPACT
- *-------------------------------------------------------------------------
- */
- if(H5Pset_layout (dcpl,H5D_CONTIGUOUS)<0)
-  goto out;
- if (make_dset(loc_id,"dset_contiguous",sid,dcpl,buf)<0)
-  goto out;
-
-/*-------------------------------------------------------------------------
- * H5D_CHUNKED
- *-------------------------------------------------------------------------
- */
- if(H5Pset_chunk(dcpl, RANK, chunk_dims)<0)
-  goto out;
- if (make_dset(loc_id,"dset_chunk",sid,dcpl,buf)<0)
-  goto out;
-
-/*-------------------------------------------------------------------------
- * close space and dcpl
- *-------------------------------------------------------------------------
- */
- if(H5Sclose(sid)<0)
-  goto out;
- if(H5Pclose(dcpl)<0)
-  goto out;
- 
- return 0;                                                 
- 
-out:
- H5E_BEGIN_TRY {
-  H5Pclose(dcpl);
-  H5Sclose(sid);
- } H5E_END_TRY;
- return -1;
-}
-
-
-
-
-
diff --git a/tools/h5repack/testh5repack_main.c b/tools/h5repack/testh5repack_main.c
index 4c0a8c5..0c976f4 100644
--- a/tools/h5repack/testh5repack_main.c
+++ b/tools/h5repack/testh5repack_main.c
@@ -29,7 +29,7 @@
  * Return: Success: zero
  *  Failure: non-zero
  *
- * Programmer: Pedro Vicente <pvn@ncsa.uiuc.edu>
+ * Programmer:  <pvn@ncsa.uiuc.edu>
  *             January, 6, 2004
  *
  *-------------------------------------------------------------------------
@@ -51,20 +51,19 @@ int main (void)
   goto error;
 
 /*-------------------------------------------------------------------------
- * Purpose: 
+ * Format of the tests: 
  *
- * 1) make a copy with no filters 
+ * 1) make a copy of the file with h5repack 
  * 2) use the h5diff utility to compare the input and output file; 
  *     it returns RET==0 if the objects have the same data
  *-------------------------------------------------------------------------
  */
  
- TESTING("    copy of datasets");
-
 /*-------------------------------------------------------------------------
  * file with all kinds of dataset datatypes
  *-------------------------------------------------------------------------
  */
+ TESTING("    copy of datasets");
  if (h5repack_init (&pack_options, 0)<0)
   TEST_ERROR;
  if (h5repack(FNAME1,FNAME1OUT,&pack_options)<0)
@@ -77,14 +76,13 @@ int main (void)
   TEST_ERROR;
  if (h5repack_end (&pack_options)<0)
   TEST_ERROR;
-
  PASSED();
  
- TESTING("    copy of attributes");
 /*-------------------------------------------------------------------------
  * file with attributes
  *-------------------------------------------------------------------------
  */
+ TESTING("    copy of attributes");
  if (h5repack_init (&pack_options, 0)<0)
   TEST_ERROR;
  if (h5repack(FNAME2,FNAME2OUT,&pack_options)<0)
@@ -97,14 +95,14 @@ int main (void)
   TEST_ERROR;
  if (h5repack_end (&pack_options)<0)
   TEST_ERROR;
-
  PASSED();
- TESTING("    copy of hardlinks");
+
 
 /*-------------------------------------------------------------------------
  * file with hardlinks
  *-------------------------------------------------------------------------
  */
+ TESTING("    copy of hardlinks");
  if (h5repack_init (&pack_options, 0)<0)
   TEST_ERROR;
  if (h5repack(FNAME3,FNAME3OUT,&pack_options)<0)
@@ -118,33 +116,13 @@ int main (void)
   if (h5repack_end (&pack_options)<0)
   TEST_ERROR;
 
-/*-------------------------------------------------------------------------
- * file with filters. we cannot compare with cmpdcpl, because the current
- * configuration might not have saved datasets with deflate and SZIP filters
- *-------------------------------------------------------------------------
- */
  PASSED();
- TESTING("    copy of datasets with all filters");
- 
- if (h5repack_init (&pack_options, 0)<0)
-  TEST_ERROR;
- if (h5repack(FNAME4,FNAME4OUT,&pack_options)<0)
-  TEST_ERROR;
- if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) == 1)
-  TEST_ERROR;
- if (h5repack_verify(FNAME4OUT,&pack_options)<=0)
-  TEST_ERROR;
- if (h5repack_end (&pack_options)<0)
-  TEST_ERROR;
-
- PASSED();
-
- TESTING("    copy of allocation early file");
 
 /*-------------------------------------------------------------------------
  * alloc early test
  *-------------------------------------------------------------------------
  */
+ TESTING("    copy of allocation early file");
  if (h5repack_init (&pack_options, 0)<0)
   TEST_ERROR;
  if (h5repack(FNAME5,FNAME5OUT,&pack_options)<0)
@@ -157,115 +135,10 @@ int main (void)
   TEST_ERROR;
   PASSED();  
 
- TESTING("    removing all filters");
-
 /*-------------------------------------------------------------------------
- * test the NONE global option
+ * deflate
  *-------------------------------------------------------------------------
  */
-
- if (h5repack_init (&pack_options, 0)<0)
-  TEST_ERROR;
- if (h5repack_addfilter("NONE",&pack_options)<0)
-  TEST_ERROR;
- if (h5repack(FNAME4,FNAME4OUT,&pack_options)<0)
-  TEST_ERROR;
- if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) == 1)
-  TEST_ERROR;
- if (h5repack_verify(FNAME4OUT,&pack_options)<=0)
-  TEST_ERROR;
- if (h5repack_end (&pack_options)<0)
-  TEST_ERROR;
-
- PASSED();
-
-
- TESTING("    removing deflate filter");
-
-#ifdef H5_HAVE_FILTER_DEFLATE
- if (h5repack_init (&pack_options, 0)<0)
-  TEST_ERROR;
- if (h5repack_addfilter("dset_gzip:NONE",&pack_options)<0)
-  TEST_ERROR;
- if (h5repack(FNAME4,FNAME4OUT,&pack_options)<0)
-  TEST_ERROR;
- if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) == 1)
-  TEST_ERROR;
- if (h5repack_verify(FNAME4OUT,&pack_options)<=0)
-  TEST_ERROR;
- if (h5repack_end (&pack_options)<0)
-  TEST_ERROR;
-
- PASSED();  
-#else
- SKIPPED();
-#endif
-
-  TESTING("    removing szip filter");
-
-#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)
-  TEST_ERROR;
- if (h5repack(FNAME4,FNAME4OUT,&pack_options)<0)
-  TEST_ERROR;
- if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) == 1)
-  TEST_ERROR;
- if (h5repack_verify(FNAME4OUT,&pack_options)<=0)
-  TEST_ERROR;
- if (h5repack_end (&pack_options)<0)
-  TEST_ERROR;
- PASSED();  
-#else
- SKIPPED();
-#endif
-
- TESTING("    removing shuffle filter");
-
-#ifdef H5_HAVE_FILTER_SHUFFLE
- if (h5repack_init (&pack_options, 0)<0)
-  TEST_ERROR;
- if (h5repack_addfilter("dset_shuffle:NONE",&pack_options)<0)
-  TEST_ERROR;
- if (h5repack(FNAME4,FNAME4OUT,&pack_options)<0)
-  TEST_ERROR;
- if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) == 1)
-  TEST_ERROR;
- if (h5repack_verify(FNAME4OUT,&pack_options)<=0)
-  TEST_ERROR;
- if (h5repack_end (&pack_options)<0)
-  TEST_ERROR;
-
- PASSED();  
-#else
- SKIPPED();
-#endif
-
-  TESTING("    removing fletcher filter");
-
-#ifdef H5_HAVE_FILTER_FLETCHER32
- if (h5repack_init (&pack_options, 0)<0)
-  TEST_ERROR;
- if (h5repack_addfilter("dset_fletcher32:NONE",&pack_options)<0)
-  TEST_ERROR;
- if (h5repack(FNAME4,FNAME4OUT,&pack_options)<0)
-  TEST_ERROR;
- if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) == 1)
-  TEST_ERROR;
- if (h5repack_verify(FNAME4OUT,&pack_options)<=0)
-  TEST_ERROR;
- if (h5repack_end (&pack_options)<0)
-  TEST_ERROR;
-
- PASSED();  
-#else
- SKIPPED();
-#endif
-
-
-
  TESTING("    adding deflate filter");
 
 #ifdef H5_HAVE_FILTER_DEFLATE
@@ -324,18 +197,19 @@ int main (void)
 #endif
 
 /*-------------------------------------------------------------------------
- * deflate
+ * SZIP
  *-------------------------------------------------------------------------
  */
 
  TESTING("    adding szip filter");
 
+#if defined (H5_HAVE_FILTER_SZIP) && defined (H5_SZIP_CAN_ENCODE)
+
 /*-------------------------------------------------------------------------
  * 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;
  if (h5repack_addfilter("dset2:SZIP=8",&pack_options)<0)
@@ -351,7 +225,7 @@ int main (void)
  if (h5repack_end (&pack_options)<0)
   TEST_ERROR;
 
- PASSED();  
+ PASSED();
 #else
  SKIPPED();
 #endif
@@ -364,7 +238,6 @@ int main (void)
 TESTING("    adding szip filter to all");
 
 #if defined (H5_HAVE_FILTER_SZIP) && defined (H5_SZIP_CAN_ENCODE)
-
  if (h5repack_init (&pack_options, 0)<0)
   TEST_ERROR;
  if (h5repack_addfilter("SZIP=8",&pack_options)<0)
@@ -378,8 +251,7 @@ TESTING("    adding szip filter to all");
  if (h5repack_end (&pack_options)<0)
   TEST_ERROR;
  
-  PASSED();  
-
+ PASSED();
 #else
  SKIPPED();
 #endif
@@ -516,39 +388,28 @@ TESTING("    addding shuffle filter to all");
   TEST_ERROR;
  if (h5repack_addlayout("dset1:CHUNK 20x10",&pack_options)<0)
   TEST_ERROR;
+
 #if defined (H5_HAVE_FILTER_FLETCHER32)
  if (h5repack_addfilter("dset1:FLET",&pack_options)<0)
   TEST_ERROR;
 #endif
+
+#ifdef H5_HAVE_FILTER_SHUFFLE
  if (h5repack_addfilter("dset1:SHUF",&pack_options)<0)
   TEST_ERROR;
+#endif
+
 #if defined (H5_HAVE_FILTER_SZIP) && defined (H5_SZIP_CAN_ENCODE)
-  if (h5repack_addfilter("dset1:SZIP=8",&pack_options)<0)
-   TEST_ERROR;
+ if (h5repack_addfilter("dset1:SZIP=8",&pack_options)<0)
+  TEST_ERROR;
 #endif
+
+#ifdef H5_HAVE_FILTER_DEFLATE
  if (h5repack_addfilter("dset1:GZIP=1",&pack_options)<0)
   TEST_ERROR;
- if (h5repack(FNAME4,FNAME4OUT,&pack_options)<0)
-  TEST_ERROR;
- if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) == 1)
-  TEST_ERROR;
- if (h5repack_verify(FNAME4OUT,&pack_options)<=0)
-  TEST_ERROR;
- if (h5repack_end (&pack_options)<0)
-  TEST_ERROR;
+#endif
 
- PASSED();  
 
- TESTING("    filter conversion from deflate to szip");
-/*-------------------------------------------------------------------------
- * filter conversion from deflate to szip
- *-------------------------------------------------------------------------
- */
-#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)
-  TEST_ERROR;
  if (h5repack(FNAME4,FNAME4OUT,&pack_options)<0)
   TEST_ERROR;
  if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) == 1)
@@ -557,60 +418,9 @@ TESTING("    addding shuffle filter to all");
   TEST_ERROR;
  if (h5repack_end (&pack_options)<0)
   TEST_ERROR;
- PASSED();  
-#else 
- SKIPPED();
-#endif 
 
-
- TESTING("    filter conversion from szip to deflate");
-/*-------------------------------------------------------------------------
- * filter conversion from szip to deflate
- *-------------------------------------------------------------------------
- */
-#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)
-  TEST_ERROR;
- if (h5repack(FNAME4,FNAME4OUT,&pack_options)<0)
-  TEST_ERROR;
- if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) == 1)
-  TEST_ERROR;
- if (h5repack_verify(FNAME4OUT,&pack_options)<=0)
-  TEST_ERROR;
- if (h5repack_end (&pack_options)<0)
-  TEST_ERROR;
  PASSED();  
 
-#else
- SKIPPED();
-#endif
-
- TESTING("    filter conversion from szip and shuffle to deflate");
-/*-------------------------------------------------------------------------
- * filter conversion from szip to deflate
- *-------------------------------------------------------------------------
- */
-#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)
-  TEST_ERROR;
- if (h5repack(FNAME4,FNAME4OUT,&pack_options)<0)
-  TEST_ERROR;
- if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) == 1)
-  TEST_ERROR;
- if (h5repack_verify(FNAME4OUT,&pack_options)<=0)
-  TEST_ERROR;
- if (h5repack_end (&pack_options)<0)
-  TEST_ERROR;
- PASSED();
-#else
- SKIPPED();
-#endif
 
  TESTING("    adding layout chunked");
 
@@ -677,7 +487,6 @@ TESTING("    addding shuffle filter to all");
 
  TESTING("    adding layout contiguous to all");
 
-
 /*-------------------------------------------------------------------------
  * test all objects option
  *-------------------------------------------------------------------------
@@ -918,6 +727,257 @@ TESTING("    addding shuffle filter to all");
   PASSED();  
 
   
+/*-------------------------------------------------------------------------
+ * the following tests assume the input files have filters
+ * FNAME7     "test_szip.h5"
+ * FNAME8     "test_deflate.h5"
+ * FNAME9     "test_shuffle.h5"
+ * FNAME10    "test_fletcher32.h5"
+ * FNAME11    "test_all.h5"
+ *-------------------------------------------------------------------------
+ */
+
+  
+ TESTING("    copy of szip filter");
+ 
+#if defined (H5_HAVE_FILTER_SZIP) && defined (H5_SZIP_CAN_ENCODE)
+ if (h5repack_init (&pack_options, 0)<0)
+  TEST_ERROR;
+ if (h5repack(FNAME7,FNAME7OUT,&pack_options)<0)
+  TEST_ERROR;
+ if (h5diff(FNAME7,FNAME7OUT,NULL,NULL,&diff_options) == 1)
+  TEST_ERROR;
+ if (h5repack_verify(FNAME7OUT,&pack_options)<=0)
+  TEST_ERROR;
+ if (h5repack_end (&pack_options)<0)
+  TEST_ERROR;
+
+ PASSED();
+#else
+ SKIPPED();
+#endif
+
+  TESTING("    removing szip filter");
+
+#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)
+  TEST_ERROR;
+ if (h5repack(FNAME7,FNAME7OUT,&pack_options)<0)
+  TEST_ERROR;
+ if (h5diff(FNAME7,FNAME7OUT,NULL,NULL,&diff_options) == 1)
+  TEST_ERROR;
+ if (h5repack_verify(FNAME7OUT,&pack_options)<=0)
+  TEST_ERROR;
+ if (h5repack_end (&pack_options)<0)
+  TEST_ERROR;
+
+ PASSED();
+#else
+ SKIPPED();
+#endif
+
+
+  TESTING("    copy of deflate filter");
+ 
+#ifdef H5_HAVE_FILTER_DEFLATE
+ if (h5repack_init (&pack_options, 0)<0)
+  TEST_ERROR;
+ if (h5repack(FNAME8,FNAME8OUT,&pack_options)<0)
+  TEST_ERROR;
+ if (h5diff(FNAME8,FNAME8OUT,NULL,NULL,&diff_options) == 1)
+  TEST_ERROR;
+ if (h5repack_verify(FNAME8OUT,&pack_options)<=0)
+  TEST_ERROR;
+ if (h5repack_end (&pack_options)<0)
+  TEST_ERROR;
+
+ PASSED();
+#else
+ SKIPPED();
+#endif
+
+
+ TESTING("    removing deflate filter");
+
+#ifdef H5_HAVE_FILTER_DEFLATE
+ if (h5repack_init (&pack_options, 0)<0)
+  TEST_ERROR;
+ if (h5repack_addfilter("dset_deflate:NONE",&pack_options)<0)
+  TEST_ERROR;
+ if (h5repack(FNAME8,FNAME8OUT,&pack_options)<0)
+  TEST_ERROR;
+ if (h5diff(FNAME8,FNAME8OUT,NULL,NULL,&diff_options) == 1)
+  TEST_ERROR;
+ if (h5repack_verify(FNAME8OUT,&pack_options)<=0)
+  TEST_ERROR;
+ if (h5repack_end (&pack_options)<0)
+  TEST_ERROR;
+
+ PASSED();  
+#else
+ SKIPPED();
+#endif
+
+
+
+ TESTING("    copy of shuffle filter");
+ 
+#ifdef H5_HAVE_FILTER_SHUFFLE
+ if (h5repack_init (&pack_options, 0)<0)
+  TEST_ERROR;
+ if (h5repack(FNAME9,FNAME9OUT,&pack_options)<0)
+  TEST_ERROR;
+ if (h5diff(FNAME9,FNAME9OUT,NULL,NULL,&diff_options) == 1)
+  TEST_ERROR;
+ if (h5repack_verify(FNAME9OUT,&pack_options)<=0)
+  TEST_ERROR;
+ if (h5repack_end (&pack_options)<0)
+  TEST_ERROR;
+
+ PASSED();
+#else
+ SKIPPED();
+#endif
+ 
+ TESTING("    removing shuffle filter");
+
+#ifdef H5_HAVE_FILTER_SHUFFLE
+ if (h5repack_init (&pack_options, 0)<0)
+  TEST_ERROR;
+ if (h5repack_addfilter("dset_shuffle:NONE",&pack_options)<0)
+  TEST_ERROR;
+ if (h5repack(FNAME9,FNAME9OUT,&pack_options)<0)
+  TEST_ERROR;
+ if (h5diff(FNAME9,FNAME9OUT,NULL,NULL,&diff_options) == 1)
+  TEST_ERROR;
+ if (h5repack_verify(FNAME9OUT,&pack_options)<=0)
+  TEST_ERROR;
+ if (h5repack_end (&pack_options)<0)
+  TEST_ERROR;
+
+ PASSED();  
+#else
+ SKIPPED();
+#endif
+
+ TESTING("    copy of fletcher filter");
+ 
+#ifdef H5_HAVE_FILTER_FLETCHER32
+ if (h5repack_init (&pack_options, 0)<0)
+  TEST_ERROR;
+ if (h5repack(FNAME10,FNAME10OUT,&pack_options)<0)
+  TEST_ERROR;
+ if (h5diff(FNAME10,FNAME10OUT,NULL,NULL,&diff_options) == 1)
+  TEST_ERROR;
+ if (h5repack_verify(FNAME10OUT,&pack_options)<=0)
+  TEST_ERROR;
+ if (h5repack_end (&pack_options)<0)
+  TEST_ERROR;
+
+ PASSED();
+#else
+ SKIPPED();
+#endif
+
+  TESTING("    removing fletcher filter");
+
+#ifdef H5_HAVE_FILTER_FLETCHER32
+ if (h5repack_init (&pack_options, 0)<0)
+  TEST_ERROR;
+ if (h5repack_addfilter("dset_fletcher32:NONE",&pack_options)<0)
+  TEST_ERROR;
+ if (h5repack(FNAME10,FNAME10OUT,&pack_options)<0)
+  TEST_ERROR;
+ if (h5diff(FNAME10,FNAME10OUT,NULL,NULL,&diff_options) == 1)
+  TEST_ERROR;
+ if (h5repack_verify(FNAME10OUT,&pack_options)<=0)
+  TEST_ERROR;
+ if (h5repack_end (&pack_options)<0)
+  TEST_ERROR;
+
+ PASSED();  
+#else
+ SKIPPED();
+#endif
+
+
+ 
+/*-------------------------------------------------------------------------
+ * test the NONE global option
+ *-------------------------------------------------------------------------
+ */
+
+  TESTING("    removing all filters");
+
+#if defined (H5_HAVE_FILTER_SZIP) && defined (H5_HAVE_FILTER_DEFLATE) \
+    && defined (H5_HAVE_FILTER_FLETCHER32) && defined (H5_HAVE_FILTER_SHUFFLE)
+
+ if (h5repack_init (&pack_options, 0)<0)
+  TEST_ERROR;
+ if (h5repack_addfilter("NONE",&pack_options)<0)
+  TEST_ERROR;
+ if (h5repack(FNAME11,FNAME11OUT,&pack_options)<0)
+  TEST_ERROR;
+ if (h5diff(FNAME11,FNAME11OUT,NULL,NULL,&diff_options) == 1)
+  TEST_ERROR;
+ if (h5repack_verify(FNAME11OUT,&pack_options)<=0)
+  TEST_ERROR;
+ if (h5repack_end (&pack_options)<0)
+  TEST_ERROR;
+
+ PASSED();
+#else
+ SKIPPED();
+#endif
+ 
+ TESTING("    filter conversion from deflate to szip");
+/*-------------------------------------------------------------------------
+ * filter conversion from deflate to szip
+ *-------------------------------------------------------------------------
+ */
+#if (defined (H5_SZIP_CAN_ENCODE) && defined (H5_HAVE_FILTER_SZIP)) && defined(H5_HAVE_FILTER_DEFLATE)
+ if (h5repack_init (&pack_options, 0)<0)
+  TEST_ERROR;
+ if (h5repack_addfilter("dset_deflate:SZIP=8",&pack_options)<0)
+  TEST_ERROR;
+ if (h5repack(FNAME8,FNAME8OUT,&pack_options)<0)
+  TEST_ERROR;
+ if (h5diff(FNAME8,FNAME8OUT,NULL,NULL,&diff_options) == 1)
+  TEST_ERROR;
+ if (h5repack_verify(FNAME8OUT,&pack_options)<=0)
+  TEST_ERROR;
+ if (h5repack_end (&pack_options)<0)
+  TEST_ERROR;
+ PASSED();
+#else
+ SKIPPED();
+#endif
+
+ TESTING("    filter conversion from szip to deflate");
+/*-------------------------------------------------------------------------
+ * filter conversion from szip to deflate
+ *-------------------------------------------------------------------------
+ */
+#if (defined (H5_SZIP_CAN_ENCODE) && defined (H5_HAVE_FILTER_SZIP)) && defined(H5_HAVE_FILTER_DEFLATE)
+ if (h5repack_init (&pack_options, 0)<0)
+  TEST_ERROR;
+ if (h5repack_addfilter("dset_szip:GZIP=1",&pack_options)<0)
+  TEST_ERROR;
+ if (h5repack(FNAME7,FNAME7OUT,&pack_options)<0)
+  TEST_ERROR;
+ if (h5diff(FNAME7,FNAME7OUT,NULL,NULL,&diff_options) == 1)
+  TEST_ERROR;
+ if (h5repack_verify(FNAME7OUT,&pack_options)<=0)
+  TEST_ERROR;
+ if (h5repack_end (&pack_options)<0)
+  TEST_ERROR;
+ PASSED();
+#else
+ SKIPPED();
+#endif
+
 
   
 /*-------------------------------------------------------------------------
diff --git a/tools/h5repack/testh5repack_make.c b/tools/h5repack/testh5repack_make.c
index 2ab1e00..249512c 100644
--- a/tools/h5repack/testh5repack_make.c
+++ b/tools/h5repack/testh5repack_make.c
@@ -16,12 +16,22 @@
 #include "h5test.h"
 #include "h5repack.h"
 
+#define DIM1  40
+#define DIM2  20
+#define CDIM1 DIM1/2
+#define CDIM2 DIM2/2
+#define RANK  2
 
 int make_all_objects(hid_t loc_id);
 int make_attributes(hid_t loc_id);
 int make_special_objects(hid_t loc_id);
 int make_early(void);
-
+int make_layout(hid_t loc_id);
+int make_szip(hid_t loc_id);
+int make_deflate(hid_t loc_id);
+int make_shuffle(hid_t loc_id);
+int make_fletcher32(hid_t loc_id);
+int make_all(hid_t loc_id);
 
 
 /*-------------------------------------------------------------------------
@@ -70,13 +80,11 @@ int make_testfiles(void)
  if(H5Fclose(loc_id)<0)
   return -1;
 /*-------------------------------------------------------------------------
- * create a file for the filters and layouts test
+ * create a file for layouts test
  *-------------------------------------------------------------------------
  */
  if((loc_id = H5Fcreate(FNAME4,H5F_ACC_TRUNC,H5P_DEFAULT,H5P_DEFAULT))<0)
   return -1;
- if (make_filters(loc_id)<0)
-  goto out;
  if (make_layout(loc_id)<0)
   goto out;
  if(H5Fclose(loc_id)<0)
@@ -88,6 +96,61 @@ int make_testfiles(void)
  */
  if (make_early()<0)
   goto out;
+
+/*-------------------------------------------------------------------------
+ * create a file with the SZIP filter
+ *-------------------------------------------------------------------------
+ */
+ if((loc_id = H5Fcreate(FNAME7,H5F_ACC_TRUNC,H5P_DEFAULT,H5P_DEFAULT))<0)
+  return -1;
+ if (make_szip(loc_id)<0)
+  goto out;
+ if(H5Fclose(loc_id)<0)
+  return -1;
+
+/*-------------------------------------------------------------------------
+ * create a file with the deflate filter
+ *-------------------------------------------------------------------------
+ */
+ if((loc_id = H5Fcreate(FNAME8,H5F_ACC_TRUNC,H5P_DEFAULT,H5P_DEFAULT))<0)
+  return -1;
+ if (make_deflate(loc_id)<0)
+  goto out;
+ if(H5Fclose(loc_id)<0)
+  return -1;
+
+/*-------------------------------------------------------------------------
+ * create a file with the shuffle filter
+ *-------------------------------------------------------------------------
+ */
+ if((loc_id = H5Fcreate(FNAME9,H5F_ACC_TRUNC,H5P_DEFAULT,H5P_DEFAULT))<0)
+  return -1;
+ if (make_shuffle(loc_id)<0)
+  goto out;
+ if(H5Fclose(loc_id)<0)
+  return -1;
+
+/*-------------------------------------------------------------------------
+ * create a file with the fletcher32 filter
+ *-------------------------------------------------------------------------
+ */
+ if((loc_id = H5Fcreate(FNAME10,H5F_ACC_TRUNC,H5P_DEFAULT,H5P_DEFAULT))<0)
+  return -1;
+ if (make_fletcher32(loc_id)<0)
+  goto out;
+ if(H5Fclose(loc_id)<0)
+  return -1;
+
+/*-------------------------------------------------------------------------
+ * create a file with the all filters
+ *-------------------------------------------------------------------------
+ */
+ if((loc_id = H5Fcreate(FNAME11,H5F_ACC_TRUNC,H5P_DEFAULT,H5P_DEFAULT))<0)
+  return -1;
+ if (make_all(loc_id)<0)
+  goto out;
+ if(H5Fclose(loc_id)<0)
+  return -1;
  
  
  PASSED();   
@@ -164,7 +227,7 @@ int make_all_objects(hid_t loc_id)
 
  write_dset_in(root_id,"dset_referenced",loc_id,0);
  write_dset_in(group_id,"dset_referenced",loc_id,0);
- write_null_dset(root_id);
+
 
  /* Close */
  H5Dclose(dset_id);
@@ -216,7 +279,6 @@ int make_attributes(hid_t loc_id)
  write_attr_in(dset_id,"dset",loc_id,0);
  write_attr_in(group_id,"dset",loc_id,0);
  write_attr_in(root_id,"dset",loc_id,0);
- write_null_attr(root_id);
 
  /* Close */
  H5Dclose(dset_id);
@@ -304,6 +366,344 @@ int make_special_objects(hid_t loc_id)
 
 
 /*-------------------------------------------------------------------------
+ * Function: make_szip
+ *
+ * Purpose: make a dataset with the SZIP filter
+ *
+ *-------------------------------------------------------------------------
+ */
+int make_szip(hid_t loc_id)
+{
+ hid_t    dcpl; /* dataset creation property list */
+ hid_t    sid;  /* dataspace ID */
+ unsigned szip_options_mask=H5_SZIP_ALLOW_K13_OPTION_MASK|H5_SZIP_NN_OPTION_MASK;
+ unsigned szip_pixels_per_block=8;
+ hsize_t  dims[RANK]={DIM1,DIM2};
+ hsize_t  chunk_dims[RANK]={CDIM1,CDIM2};
+ int      buf[DIM1][DIM2];
+ int      i, j, n;
+
+ for (i=n=0; i<DIM1; i++){
+  for (j=0; j<DIM2; j++){
+   buf[i][j]=n++;
+  }
+ }
+ /* create a space */
+ if((sid = H5Screate_simple(RANK, dims, NULL))<0)
+  return -1;
+ /* create a dcpl */
+ if ((dcpl = H5Pcreate(H5P_DATASET_CREATE))<0)
+  goto out;
+ /* set up chunk */
+ if(H5Pset_chunk(dcpl, RANK, chunk_dims)<0)
+  goto out;
+
+/*-------------------------------------------------------------------------
+ * SZIP
+ *-------------------------------------------------------------------------
+ */
+ /* Make sure encoding is enabled */
+#if defined (H5_SZIP_CAN_ENCODE) && defined (H5_HAVE_FILTER_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;
+#endif
+
+ if(H5Sclose(sid)<0)
+  goto out;
+ if(H5Pclose(dcpl)<0)
+  goto out;
+ 
+ return 0;                                                 
+ 
+out:
+ H5E_BEGIN_TRY {
+  H5Pclose(dcpl);
+  H5Sclose(sid);
+ } H5E_END_TRY;
+ return -1;
+}
+
+
+
+/*-------------------------------------------------------------------------
+ * Function: make_deflate
+ *
+ * Purpose: make a dataset with the deflate filter
+ *
+ *-------------------------------------------------------------------------
+ */
+int make_deflate(hid_t loc_id)
+{
+ hid_t    dcpl; /* dataset creation property list */
+ hid_t    sid;  /* dataspace ID */
+ hsize_t  dims[RANK]={DIM1,DIM2};
+ hsize_t  chunk_dims[RANK]={CDIM1,CDIM2};
+ int      buf[DIM1][DIM2];
+ int      i, j, n;
+
+ for (i=n=0; i<DIM1; i++){
+  for (j=0; j<DIM2; j++){
+   buf[i][j]=n++;
+  }
+ }
+ 
+ /* create a space */
+ if((sid = H5Screate_simple(RANK, dims, NULL))<0)
+  return -1;
+ /* create a dcpl */
+ if ((dcpl = H5Pcreate(H5P_DATASET_CREATE))<0)
+  goto out;
+ /* set up chunk */
+ if(H5Pset_chunk(dcpl, RANK, chunk_dims)<0)
+  goto out;
+/*-------------------------------------------------------------------------
+ * GZIP
+ *-------------------------------------------------------------------------
+ */
+#if defined (H5_HAVE_FILTER_DEFLATE)
+ /* set deflate data */
+ if(H5Pset_deflate(dcpl, 9)<0)
+  goto out;
+ if (make_dset(loc_id,"dset_deflate",sid,dcpl,buf)<0)
+  goto out;
+#endif
+
+/*-------------------------------------------------------------------------
+ * close space and dcpl
+ *-------------------------------------------------------------------------
+ */
+ if(H5Sclose(sid)<0)
+  goto out;
+ if(H5Pclose(dcpl)<0)
+  goto out;
+ 
+ return 0;                                                 
+ 
+out:
+ H5E_BEGIN_TRY {
+  H5Pclose(dcpl);
+  H5Sclose(sid);
+ } H5E_END_TRY;
+ return -1;
+}
+
+
+/*-------------------------------------------------------------------------
+ * Function: make_shuffle
+ *
+ * Purpose: make a dataset with the shuffle filter
+ *
+ *-------------------------------------------------------------------------
+ */
+int make_shuffle(hid_t loc_id)
+{
+ hid_t    dcpl; /* dataset creation property list */
+ hid_t    sid;  /* dataspace ID */
+ hsize_t  dims[RANK]={DIM1,DIM2};
+ hsize_t  chunk_dims[RANK]={CDIM1,CDIM2};
+ int      buf[DIM1][DIM2];
+ int      i, j, n;
+
+ for (i=n=0; i<DIM1; i++){
+  for (j=0; j<DIM2; j++){
+   buf[i][j]=n++;
+  }
+ }
+ /* create a space */
+ if((sid = H5Screate_simple(RANK, dims, NULL))<0)
+  return -1;
+ /* create a dcpl */
+ if ((dcpl = H5Pcreate(H5P_DATASET_CREATE))<0)
+  goto out;
+ /* set up chunk */
+ if(H5Pset_chunk(dcpl, RANK, chunk_dims)<0)
+  goto out;
+
+/*-------------------------------------------------------------------------
+ * shuffle
+ *-------------------------------------------------------------------------
+ */
+#if defined (H5_HAVE_FILTER_SHUFFLE)
+ /* set the shuffle filter */
+ if (H5Pset_shuffle(dcpl)<0) 
+  goto out;
+ if (make_dset(loc_id,"dset_shuffle",sid,dcpl,buf)<0)
+  goto out;
+#endif
+
+/*-------------------------------------------------------------------------
+ * close space and dcpl
+ *-------------------------------------------------------------------------
+ */
+ if(H5Sclose(sid)<0)
+  goto out;
+ if(H5Pclose(dcpl)<0)
+  goto out;
+ 
+ return 0;                                                 
+ 
+out:
+ H5E_BEGIN_TRY {
+  H5Pclose(dcpl);
+  H5Sclose(sid);
+ } H5E_END_TRY;
+ return -1;
+}
+
+/*-------------------------------------------------------------------------
+ * Function: make_fletcher32
+ *
+ * Purpose: make a dataset with the fletcher32 filter
+ *
+ *-------------------------------------------------------------------------
+ */
+int make_fletcher32(hid_t loc_id)
+{
+ hid_t    dcpl; /* dataset creation property list */
+ hid_t    sid;  /* dataspace ID */
+ hsize_t  dims[RANK]={DIM1,DIM2};
+ hsize_t  chunk_dims[RANK]={CDIM1,CDIM2};
+ int      buf[DIM1][DIM2];
+ int      i, j, n;
+
+ for (i=n=0; i<DIM1; i++){
+  for (j=0; j<DIM2; j++){
+   buf[i][j]=n++;
+  }
+ }
+ /* create a space */
+ if((sid = H5Screate_simple(RANK, dims, NULL))<0)
+  return -1;
+ /* create a dataset creation property list; the same DCPL is used for all dsets */
+ if ((dcpl = H5Pcreate(H5P_DATASET_CREATE))<0)
+  goto out;
+ /* set up chunk */
+ if(H5Pset_chunk(dcpl, RANK, chunk_dims)<0)
+  goto out;
+
+
+/*-------------------------------------------------------------------------
+ * checksum
+ *-------------------------------------------------------------------------
+ */
+#if defined (H5_HAVE_FILTER_FLETCHER32)
+ /* remove the filters from the dcpl */
+ if (H5Premove_filter(dcpl,H5Z_FILTER_ALL)<0) 
+  goto out;
+ /* set the checksum filter */
+ if (H5Pset_fletcher32(dcpl)<0) 
+  goto out;
+ if (make_dset(loc_id,"dset_fletcher32",sid,dcpl,buf)<0)
+  goto out;
+#endif
+
+/*-------------------------------------------------------------------------
+ * close space and dcpl
+ *-------------------------------------------------------------------------
+ */
+ if(H5Sclose(sid)<0)
+  goto out;
+ if(H5Pclose(dcpl)<0)
+  goto out;
+ 
+ return 0;                                                 
+ 
+out:
+ H5E_BEGIN_TRY {
+  H5Pclose(dcpl);
+  H5Sclose(sid);
+ } H5E_END_TRY;
+ return -1;
+}
+
+
+
+
+/*-------------------------------------------------------------------------
+ * Function: make_all
+ *
+ * Purpose: make a dataset with the all filters
+ *
+ *-------------------------------------------------------------------------
+ */
+int make_all(hid_t loc_id)
+{
+ hid_t    dcpl; /* dataset creation property list */
+ hid_t    sid;  /* dataspace ID */
+ unsigned szip_options_mask=H5_SZIP_ALLOW_K13_OPTION_MASK|H5_SZIP_NN_OPTION_MASK;
+ unsigned szip_pixels_per_block=8;
+ hsize_t  dims[RANK]={DIM1,DIM2};
+ hsize_t  chunk_dims[RANK]={CDIM1,CDIM2};
+ int      buf[DIM1][DIM2];
+ int      i, j, n;
+
+ for (i=n=0; i<DIM1; i++){
+  for (j=0; j<DIM2; j++){
+   buf[i][j]=n++;
+  }
+ }
+ /* create a space */
+ if((sid = H5Screate_simple(RANK, dims, NULL))<0)
+  return -1;
+ /* create a dataset creation property list; the same DCPL is used for all dsets */
+ if ((dcpl = H5Pcreate(H5P_DATASET_CREATE))<0)
+  goto out;
+ /* set up chunk */
+ if(H5Pset_chunk(dcpl, RANK, chunk_dims)<0)
+  goto out;
+ 
+#if defined (H5_HAVE_FILTER_SHUFFLE)
+ /* set the shuffle filter */
+ if (H5Pset_shuffle(dcpl)<0) 
+  goto out;
+#endif
+
+#if defined (H5_HAVE_FILTER_FLETCHER32)
+ /* set the checksum filter */
+ if (H5Pset_fletcher32(dcpl)<0) 
+  goto out;
+#endif
+
+#if defined (H5_SZIP_CAN_ENCODE) && defined (H5_HAVE_FILTER_SZIP)
+ /* set szip data */
+ if(H5Pset_szip (dcpl,szip_options_mask,szip_pixels_per_block)<0)
+  goto out;
+#endif
+
+#if defined (H5_HAVE_FILTER_DEFLATE)
+ /* set deflate data */
+ if(H5Pset_deflate(dcpl, 9)<0)
+  goto out;
+#endif
+
+ if (make_dset(loc_id,"dset_all",sid,dcpl,buf)<0)
+  goto out;
+
+/*-------------------------------------------------------------------------
+ * close space and dcpl
+ *-------------------------------------------------------------------------
+ */
+ if(H5Sclose(sid)<0)
+  goto out;
+ if(H5Pclose(dcpl)<0)
+  goto out;
+ 
+ return 0;                                                 
+ 
+out:
+ H5E_BEGIN_TRY {
+  H5Pclose(dcpl);
+  H5Sclose(sid);
+ } H5E_END_TRY;
+ return -1;
+}
+
+
+
+/*-------------------------------------------------------------------------
  * Function: make_early
  *
  * Purpose: create a file for the H5D_ALLOC_TIME_EARLY test 
@@ -399,3 +799,99 @@ out:
 }
 
 
+
+/*-------------------------------------------------------------------------
+ * Function: make_layout
+ *
+ * Purpose: make several datasets with several layouts in location LOC_ID
+ *
+ *-------------------------------------------------------------------------
+ */
+int make_layout(hid_t loc_id)
+{
+ hid_t    dcpl; /* dataset creation property list */
+ hid_t    sid;  /* dataspace ID */
+ hsize_t  dims[RANK]={DIM1,DIM2};
+ hsize_t  chunk_dims[RANK]={CDIM1,CDIM2};
+ int      buf[DIM1][DIM2];
+ int      i, j, n;
+ char     name[5];
+
+
+ for (i=n=0; i<DIM1; i++){
+  for (j=0; j<DIM2; j++){
+   buf[i][j]=n++;
+  }
+ }
+
+/*-------------------------------------------------------------------------
+ * make several dataset with no filters
+ *-------------------------------------------------------------------------
+ */
+ for (i=0; i<4; i++)
+ {
+  sprintf(name,"dset%d",i+1);
+  if (write_dset(loc_id,RANK,dims,name,H5T_NATIVE_INT,buf)<0)
+   return -1;
+ }
+
+
+/*-------------------------------------------------------------------------
+ * make several dataset with several layout options
+ *-------------------------------------------------------------------------
+ */
+ /* create a space */
+ if((sid = H5Screate_simple(RANK, dims, NULL))<0)
+  return -1;
+ /* create a dataset creation property list; the same DCPL is used for all dsets */
+ if ((dcpl = H5Pcreate(H5P_DATASET_CREATE))<0)
+  goto out;
+
+/*-------------------------------------------------------------------------
+ * H5D_COMPACT
+ *-------------------------------------------------------------------------
+ */
+ if(H5Pset_layout (dcpl,H5D_COMPACT)<0)
+  goto out;
+ if (make_dset(loc_id,"dset_compact",sid,dcpl,buf)<0)
+  goto out;
+
+/*-------------------------------------------------------------------------
+ * H5D_COMPACT
+ *-------------------------------------------------------------------------
+ */
+ if(H5Pset_layout (dcpl,H5D_CONTIGUOUS)<0)
+  goto out;
+ if (make_dset(loc_id,"dset_contiguous",sid,dcpl,buf)<0)
+  goto out;
+
+/*-------------------------------------------------------------------------
+ * H5D_CHUNKED
+ *-------------------------------------------------------------------------
+ */
+ if(H5Pset_chunk(dcpl, RANK, chunk_dims)<0)
+  goto out;
+ if (make_dset(loc_id,"dset_chunk",sid,dcpl,buf)<0)
+  goto out;
+
+/*-------------------------------------------------------------------------
+ * close space and dcpl
+ *-------------------------------------------------------------------------
+ */
+ if(H5Sclose(sid)<0)
+  goto out;
+ if(H5Pclose(dcpl)<0)
+  goto out;
+ 
+ return 0;                                                 
+ 
+out:
+ H5E_BEGIN_TRY {
+  H5Pclose(dcpl);
+  H5Sclose(sid);
+ } H5E_END_TRY;
+ return -1;
+}
+
+
+
diff --git a/tools/h5repack/testh5repack_util.c b/tools/h5repack/testh5repack_util.c
index f74b414..0f7253b 100644
--- a/tools/h5repack/testh5repack_util.c
+++ b/tools/h5repack/testh5repack_util.c
@@ -20,7 +20,7 @@
  *
  * Purpose: utility function to create and write a dataset in LOC_ID
  *
- * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
+ * Programmer:  pvn@ncsa.uiuc.edu
  *
  * Date: November 12, 2003
  *
@@ -60,7 +60,7 @@ int make_dset(hid_t loc_id,
  *
  * Purpose: utility function to create and write a dataset in LOC_ID
  *
- * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
+ * Programmer:  pvn@ncsa.uiuc.edu
  *
  * Date: November 12, 2003
  *
@@ -106,7 +106,7 @@ int write_dset( hid_t loc_id,
  *
  * Purpose: utility function to write an attribute in LOC_ID
  *
- * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
+ * Programmer:  pvn@ncsa.uiuc.edu
  *
  * Date: November 12, 2003
  *
diff --git a/tools/lib/h5tools_filters.c b/tools/lib/h5tools_filters.c
index 153c832..5315fd4 100644
--- a/tools/lib/h5tools_filters.c
+++ b/tools/lib/h5tools_filters.c
@@ -23,7 +23,7 @@
  */
 static void print_warning(const char *dname, const char *fname)
 {
- printf("Warning: dataset <%s> cannot be read, %s filter is not available\n",
+ fprintf(stderr,"Warning: dataset <%s> cannot be read, %s filter is not available\n",
   dname,fname);
 }
 
@@ -88,7 +88,14 @@ int h5tools_canreadf(const char* name, /* object name, serves also as boolean pr
   
   switch (filtn)
   {
+/*-------------------------------------------------------------------------
+ * user defined filter	   
+ *-------------------------------------------------------------------------
+ */
   default:
+    if (name)
+     print_warning(name,"user defined");
+    return 0;
    break;
 /*-------------------------------------------------------------------------
  * H5Z_FILTER_DEFLATE	   1 , deflation like gzip	   
diff --git a/tools/testfiles/h5repack_info.txt b/tools/testfiles/h5repack_info.txt
index 20ed2f8..216948d 100644
--- a/tools/testfiles/h5repack_info.txt
+++ b/tools/testfiles/h5repack_info.txt
@@ -1 +1 @@
--l dset1:CHUNK=20x20 -f dset1,dset2:SZIP=8
+-l dset1:CHUNK=20x20 -f dset1,dset2:GZIP=1
diff --git a/tools/testfiles/test1.h5 b/tools/testfiles/test1.h5
index 1edac90..fcf276d 100644
Binary files a/tools/testfiles/test1.h5 and b/tools/testfiles/test1.h5 differ
diff --git a/tools/testfiles/test3.h5 b/tools/testfiles/test3.h5
index 7072b02..2ab5c25 100644
Binary files a/tools/testfiles/test3.h5 and b/tools/testfiles/test3.h5 differ
diff --git a/tools/testfiles/test4.h5 b/tools/testfiles/test4.h5
index 6a04a34..223858d 100644
Binary files a/tools/testfiles/test4.h5 and b/tools/testfiles/test4.h5 differ
diff --git a/tools/testfiles/test5.h5 b/tools/testfiles/test5.h5
new file mode 100644
index 0000000..3ef3ad2
Binary files /dev/null and b/tools/testfiles/test5.h5 differ
diff --git a/tools/testfiles/test_all.h5 b/tools/testfiles/test_all.h5
new file mode 100644
index 0000000..5a9d7fd
Binary files /dev/null and b/tools/testfiles/test_all.h5 differ
diff --git a/tools/testfiles/test_deflate.h5 b/tools/testfiles/test_deflate.h5
new file mode 100644
index 0000000..840aee0
Binary files /dev/null and b/tools/testfiles/test_deflate.h5 differ
diff --git a/tools/testfiles/test_fletcher32.h5 b/tools/testfiles/test_fletcher32.h5
new file mode 100644
index 0000000..36ca3f5
Binary files /dev/null and b/tools/testfiles/test_fletcher32.h5 differ
diff --git a/tools/testfiles/test_shuffle.h5 b/tools/testfiles/test_shuffle.h5
new file mode 100644
index 0000000..f283612
Binary files /dev/null and b/tools/testfiles/test_shuffle.h5 differ
diff --git a/tools/testfiles/test_szip.h5 b/tools/testfiles/test_szip.h5
new file mode 100644
index 0000000..7d0cb0b
Binary files /dev/null and b/tools/testfiles/test_szip.h5 differ
-- 
cgit v0.12