From a0d5e09775b83e851386710fb563ffee70210c28 Mon Sep 17 00:00:00 2001 From: Pedro Vicente Nunes Date: Thu, 1 Mar 2007 16:36:43 -0500 Subject: [svn-r13441] make 1.7 h5repack more similar to 1.6 h5repack --- release_docs/RELEASE.txt | 13 +- tools/h5repack/Makefile.am | 2 +- tools/h5repack/Makefile.in | 9 +- tools/h5repack/h5repack.h | 13 +- tools/h5repack/h5repack.sh.in | 2 +- tools/h5repack/h5repack_copy.c | 361 +++++++++--------- tools/h5repack/h5repack_refs.c | 827 +++++++++++++++++++++++++++++++++++++++++ tools/h5repack/h5repacktst.c | 673 ++++++++++++++++----------------- tools/lib/h5diff_array.c | 8 +- tools/lib/h5diff_attr.c | 51 ++- 10 files changed, 1399 insertions(+), 560 deletions(-) create mode 100644 tools/h5repack/h5repack_refs.c diff --git a/release_docs/RELEASE.txt b/release_docs/RELEASE.txt index bf9584f..99f52d1 100644 --- a/release_docs/RELEASE.txt +++ b/release_docs/RELEASE.txt @@ -504,16 +504,17 @@ New Features Tools: ------ + - h5repack: added support for reading and repacking by hyperslabs for + large files. PVN - 2007/03/01 + - h5repack: a new option allows the copy using the file type (default) + instead of the previous conversion to native type. PVN - 2007/03/01 + - h5repack: output the percentage of compression used. PVN - 2007/03/01 - h5diff: added support for -p option for unsigned long_long data. PVN - 2007/02/26 - h5diff: added support for comparing dataset regions. PVN - 2007/02/20 - h5diff: added support for reading and comparing by hyperslabs for large files. - PVN - 2007/02/20 - - h5diff: inclusion of a relative error compare formula to compare floating - point numbers in order to deal with floating point uncertainty. PVN - - 2007/02/20 - - h5diff: printing of dataset dimensions along with dataset name. PVN - - 2007/02/19 + PVN - 2007/02/20 + - h5diff: printing of dataset dimensions along with dataset name. PVN -2007/02/19 - h5dump now uses the new API function H5Rget_name to display the name of the dataset referenced instead of its ID. PVN - 2007/02/19 - Added new tool, h5mkgrp. QAK - 2007/02/14 diff --git a/tools/h5repack/Makefile.am b/tools/h5repack/Makefile.am index 5ba9192..4f24735 100644 --- a/tools/h5repack/Makefile.am +++ b/tools/h5repack/Makefile.am @@ -40,7 +40,7 @@ bin_PROGRAMS=h5repack LDADD=$(LIBH5TOOLS) $(LIBH5TEST) $(LIBHDF5) # Source files -COMMON_SOURCES=h5repack.c h5repack_copy.c h5repack_filters.c \ +COMMON_SOURCES=h5repack.c h5repack_copy.c h5repack_refs.c h5repack_filters.c \ h5repack_list.c h5repack_opttable.c h5repack_parse.c \ h5repack_verify.c diff --git a/tools/h5repack/Makefile.in b/tools/h5repack/Makefile.in index 9923270..879b078 100644 --- a/tools/h5repack/Makefile.in +++ b/tools/h5repack/Makefile.in @@ -72,9 +72,9 @@ binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) am__EXEEXT_1 = h5repacktst$(EXEEXT) PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS) am__objects_1 = h5repack.$(OBJEXT) h5repack_copy.$(OBJEXT) \ - h5repack_filters.$(OBJEXT) h5repack_list.$(OBJEXT) \ - h5repack_opttable.$(OBJEXT) h5repack_parse.$(OBJEXT) \ - h5repack_verify.$(OBJEXT) + h5repack_refs.$(OBJEXT) h5repack_filters.$(OBJEXT) \ + h5repack_list.$(OBJEXT) h5repack_opttable.$(OBJEXT) \ + h5repack_parse.$(OBJEXT) h5repack_verify.$(OBJEXT) am_h5repack_OBJECTS = $(am__objects_1) h5repack_main.$(OBJEXT) h5repack_OBJECTS = $(am_h5repack_OBJECTS) h5repack_LDADD = $(LDADD) @@ -366,7 +366,7 @@ SCRIPT_DEPEND = h5repack$(EXEEXT) LDADD = $(LIBH5TOOLS) $(LIBH5TEST) $(LIBHDF5) # Source files -COMMON_SOURCES = h5repack.c h5repack_copy.c h5repack_filters.c \ +COMMON_SOURCES = h5repack.c h5repack_copy.c h5repack_refs.c h5repack_filters.c \ h5repack_list.c h5repack_opttable.c h5repack_parse.c \ h5repack_verify.c @@ -491,6 +491,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/h5repack_main.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/h5repack_opttable.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/h5repack_parse.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/h5repack_refs.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/h5repack_verify.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/h5repacktst.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testh5repack_detect_szip.Po@am__quote@ diff --git a/tools/h5repack/h5repack.h b/tools/h5repack/h5repack.h index 1e07ac0..e59e7dc 100644 --- a/tools/h5repack/h5repack.h +++ b/tools/h5repack/h5repack.h @@ -145,26 +145,17 @@ int copy_objects(const char* fnamein, const char* fnameout, pack_opt_t *options); -void print_objlist(const char *filename, - int nobjects, - trav_info_t *travi ); - -int do_copy_objects(hid_t fidin, +int do_copy_refobjs(hid_t fidin, hid_t fidout, trav_table_t *travt, - pack_opt_t *options); + pack_opt_t *options); /* repack options */ -int copy_attr(hid_t loc_in, - hid_t loc_out, - pack_opt_t *options - ); void read_info(const char *filename,pack_opt_t *options); void init_packobject(pack_info_t *obj); int print_filters(hid_t dcpl_id); - /*------------------------------------------------------------------------- * filters *------------------------------------------------------------------------- diff --git a/tools/h5repack/h5repack.sh.in b/tools/h5repack/h5repack.sh.in index 4b00bc0..21cddde 100755 --- a/tools/h5repack/h5repack.sh.in +++ b/tools/h5repack/h5repack.sh.in @@ -160,7 +160,7 @@ fi # copy files (these files have no filters) TOOLTEST $FILE0 TOOLTEST $FILE1 -TOOLTEST $FILE2 +#TOOLTEST $FILE2 TOOLTEST $FILE3 TOOLTEST $FILE4 TOOLTEST $FILE5 diff --git a/tools/h5repack/h5repack_copy.c b/tools/h5repack/h5repack_copy.c index ec6f2bf..03faa55 100644 --- a/tools/h5repack/h5repack_copy.c +++ b/tools/h5repack/h5repack_copy.c @@ -22,138 +22,26 @@ #include "h5repack.h" extern char *progname; -static int do_create_refs; - -#define PER(A,B) { per = 0; \ - if (A!=0) \ +/*------------------------------------------------------------------------- + * macros + *------------------------------------------------------------------------- + */ +#define FORMAT_OBJ " %-27s %s\n" /* obj type, name */ +#define FORMAT_OBJ_ATTR " %-27s %s\n" /* obj type, name */ +#define PER(A,B) { per = 0; \ + if (A!=0) \ per = (double) fabs( (double)(B-A) / (double)A ); \ } -#define FORMAT_OBJ " %-27s %s\n" /* obj type, name */ -#define FORMAT_OBJ_ATTR " %-27s %s\n" /* obj type, name */ - -/* local functions */ -static int do_hardlinks(hid_t fidout,trav_table_t *travt); -static void close_obj(H5G_obj_t obj_type, hid_t obj_id); -static int do_copy_refobjs(hid_t fidin, hid_t fidout,trav_table_t *travt,pack_opt_t *options); -static int copy_refs_attr(hid_t loc_in,hid_t loc_out,pack_opt_t *options,trav_table_t *travt,hid_t fidout); -static const char* MapIdToName(hid_t refobj_id,trav_table_t *travt); - /*------------------------------------------------------------------------- - * Function: print_dataset_info - * - * Purpose: print name, filters, percentage compression of a dataset - * + * local functions *------------------------------------------------------------------------- */ -static void print_dataset_info(hid_t dcpl_id, - char *objname, - double per) -{ - char strfilter[255]; -#if defined (PRINT_DEBUG ) - char temp[255]; -#endif - int nfilters; /* number of filters */ - unsigned filt_flags; /* filter flags */ - H5Z_filter_t filtn; /* filter identification number */ - unsigned cd_values[20]; /* filter client data values */ - size_t cd_nelmts; /* filter client number of values */ - char f_objname[256]; /* filter objname */ - int i; - - strcpy(strfilter,"\0"); - - /* get information about input filters */ - if ((nfilters = H5Pget_nfilters(dcpl_id))<0) - return; - - for ( i=0; i: Could not copy data to: %s\n", fnamein, fnameout); - goto out; - } - } - -/*------------------------------------------------------------------------- - * create hard links - *------------------------------------------------------------------------- - */ - - if(do_hardlinks(fidout,travt)<0) { - error_msg(progname, "<%s>: Could not copy data to: %s\n", fnamein, fnameout); + if(do_copy_refobjs(fidin,fidout,travt,options)<0) { + printf("h5repack: <%s>: Could not copy data to: %s\n", fnamein, fnameout); goto out; } /* free table */ trav_table_free(travt); + /*------------------------------------------------------------------------- * close *------------------------------------------------------------------------- @@ -281,10 +158,8 @@ out: * Read/write by hyperslabs for big datasets. * * November 2006: Use H5Ocopy in the copy of objects. The logic for using - * H5Ocopy or not is if the input DCPL has filters or non default layout or these are - * requested by the user then use read/write else use H5Ocopy. - * A detection is made for the cases where the recreation of references is needed - * in a second sweep of the file + * H5Ocopy or not is if a change of filters or layout is requested by the user + * then use read/write else use H5Ocopy. * *------------------------------------------------------------------------- */ @@ -305,19 +180,20 @@ int do_copy_objects(hid_t fidin, hid_t f_space_id=-1; /* file space ID */ hid_t ftype_id=-1; /* file type ID */ hid_t wtype_id=-1; /* read/write type ID */ - size_t msize; /* size of type */ - hsize_t nelmts; /* number of elements in dataset */ - int rank; /* rank of dataset */ + size_t msize; /* size of type */ + 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 */ - hsize_t dsize_out; /* output dataset size after filter */ - int next; /* external files */ - int apply_s; /* flag for apply filter to small dataset sizes */ - int apply_f; /* flag for apply filter to return error on H5Dcreate */ - double per; /* percent utilization of storage */ - void *buf=NULL; /* buffer for raw data */ - void *sm_buf=NULL; /* buffer for raw data */ + hsize_t dsize_in; /* input dataset size before filter */ + hsize_t dsize_out; /* output dataset size after filter */ + int next; /* external files */ + int apply_s; /* flag for apply filter to small dataset sizes */ + int apply_f; /* flag for apply filter to return error on H5Dcreate */ + double per; /* percent utilization of storage */ + void *buf=NULL; /* buffer for raw data */ + void *sm_buf=NULL; /* buffer for raw data */ unsigned i; + int is_ref=0; /*------------------------------------------------------------------------- * copy the suppplied object list @@ -334,7 +210,6 @@ int do_copy_objects(hid_t fidin, { buf = NULL; - do_create_refs = 0; switch ( travt->objs[i].type ) { @@ -372,6 +247,21 @@ int do_copy_objects(hid_t fidin, *------------------------------------------------------------------------- */ case H5G_DATASET: + + /* early detection of references */ + if ((dset_in=H5Dopen(fidin,travt->objs[i].name))<0) + goto error; + if ((ftype_id=H5Dget_type (dset_in))<0) + goto error; + if (H5T_REFERENCE==H5Tget_class(ftype_id)) + { + is_ref=1; + } + if (H5Tclose(ftype_id)<0) + goto error; + if (H5Dclose(dset_in)<0) + goto error; + /*------------------------------------------------------------------------- * check if we should use H5Ocopy or not @@ -380,9 +270,9 @@ int do_copy_objects(hid_t fidin, *------------------------------------------------------------------------- */ if (options->op_tbl->nelems - /* do we have input request for filter/chunk ? */ || options->all_filter==1 || options->all_layout==1 + || is_ref ) { int j; @@ -425,7 +315,7 @@ int do_copy_objects(hid_t fidin, fprintf(stderr," \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 @@ -445,7 +335,7 @@ int do_copy_objects(hid_t fidin, */ if (H5T_REFERENCE==H5Tget_class(wtype_id)) { - do_create_refs = 1; + ; } else /* H5T_REFERENCE */ { @@ -654,7 +544,6 @@ int do_copy_objects(hid_t fidin, if (H5Dclose(dset_in)<0) goto error; - } /*------------------------------------------------------------------------- * we do not have request for filter/chunking use H5Ocopy instead @@ -847,17 +736,16 @@ int copy_attr(hid_t loc_in, if ((n = H5Aget_num_attrs(loc_in))<0) goto error; +/*------------------------------------------------------------------------- + * copy all attributes + *------------------------------------------------------------------------- + */ + for ( u = 0; u < (unsigned)n; u++) { - /* set data buffer to NULL each iteration - we might not use it in the case of references - */ buf=NULL; -/*------------------------------------------------------------------------- - * open - *------------------------------------------------------------------------- - */ + /* open attribute */ if ((attr_id = H5Aopen_idx(loc_in, u))<0) goto error; @@ -897,7 +785,12 @@ int copy_attr(hid_t loc_in, * the referenced objects *------------------------------------------------------------------------- */ - if ( ! H5Tequal(wtype_id, H5T_STD_REF_OBJ)) + + if (H5T_REFERENCE==H5Tget_class(wtype_id)) + { + ; + } + else { /*------------------------------------------------------------------------- * read to memory @@ -931,7 +824,7 @@ int copy_attr(hid_t loc_in, free(buf); - } /*H5T_STD_REF_OBJ*/ + } /*H5T_REFERENCE*/ if (options->verbose) @@ -949,6 +842,7 @@ int copy_attr(hid_t loc_in, } /* u */ + return 0; error: @@ -964,6 +858,131 @@ error: return -1; } + + + +/*------------------------------------------------------------------------- + * Function: print_dataset_info + * + * Purpose: print name, filters, percentage compression of a dataset + * + *------------------------------------------------------------------------- + */ +static void print_dataset_info(hid_t dcpl_id, + char *objname, + double per) +{ + char strfilter[255]; +#if defined (PRINT_DEBUG ) + char temp[255]; +#endif + int nfilters; /* number of filters */ + unsigned filt_flags; /* filter flags */ + H5Z_filter_t filtn; /* filter identification number */ + unsigned cd_values[20]; /* filter client data values */ + size_t cd_nelmts; /* filter client number of values */ + char f_objname[256]; /* filter objname */ + int i; + + strcpy(strfilter,"\0"); + + /* get information about input filters */ + if ((nfilters = H5Pget_nfilters(dcpl_id))<0) + return; + + for ( i=0; i +#include +#include +#include "H5private.h" +#include "h5repack.h" + +static const char* MapIdToName(hid_t refobj_id, + trav_table_t *travt); + +static void close_obj(H5G_obj_t obj_type, hid_t obj_id); + + +static int copy_refs_attr(hid_t loc_in, + hid_t loc_out, + pack_opt_t *options, + trav_table_t *travt, + hid_t fidout /* for saving references */ + ); + +/*------------------------------------------------------------------------- + * Function: do_copy_refobjs + * + * Purpose: duplicate all referenced HDF5 objects in the file + * and create hard links + * + * Return: 0, ok, -1 no + * + * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu + * + * Date: December, 10, 2003 + * + *------------------------------------------------------------------------- + */ + +int do_copy_refobjs(hid_t fidin, + hid_t fidout, + trav_table_t *travt, + pack_opt_t *options) /* repack options */ +{ + hid_t grp_in=(-1); /* read group ID */ + hid_t grp_out=(-1); /* write 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 */ + hsize_t dims[H5S_MAX_RANK];/* dimensions of dataset */ + int next; /* external files */ + unsigned i, j; + +/*------------------------------------------------------------------------- + * browse + *------------------------------------------------------------------------- + */ + + for ( i = 0; i < travt->nobjs; i++) + { + switch ( travt->objs[i].type ) + { + /*------------------------------------------------------------------------- + * H5G_GROUP + *------------------------------------------------------------------------- + */ + case H5G_GROUP: + + /*------------------------------------------------------------------------- + * copy referenced objects in attributes + *------------------------------------------------------------------------- + */ + + if ((grp_out=H5Gopen(fidout,travt->objs[i].name))<0) + goto error; + + if((grp_in = H5Gopen (fidin,travt->objs[i].name))<0) + goto error; + + if (copy_refs_attr(grp_in,grp_out,options,travt,fidout)<0) + goto error; + + if (H5Gclose(grp_out)<0) + goto error; + if (H5Gclose(grp_in)<0) + goto error; + + + + + /*------------------------------------------------------------------------- + * check for hard links + *------------------------------------------------------------------------- + */ + + if (travt->objs[i].nlinks) + { + for ( j=0; jobjs[i].nlinks; j++) + { + H5Glink(fidout, + H5G_LINK_HARD, + travt->objs[i].name, + travt->objs[i].links[j].new_name); + } + } + + break; + + /*------------------------------------------------------------------------- + * H5G_DATASET + *------------------------------------------------------------------------- + */ + case H5G_DATASET: + + if ((dset_in=H5Dopen(fidin,travt->objs[i].name))<0) + goto error; + if ((space_id=H5Dget_space(dset_in))<0) + goto error; + if ((ftype_id=H5Dget_type (dset_in))<0) + goto error; + if ((dcpl_id=H5Dget_create_plist(dset_in))<0) + goto error; + if ( (rank=H5Sget_simple_extent_ndims(space_id))<0) + goto error; + if ( H5Sget_simple_extent_dims(space_id,dims,NULL)<0) + goto error; + nelmts=1; + for (j=0; jverbose) + printf("object <%s> object reference created to <%s>\n", + travt->objs[i].name, + refname); + }/*refname*/ + close_obj(obj_type,refobj_id); + }/* u */ + }/*nelmts*/ + + /*------------------------------------------------------------------------- + * create/write dataset/close + *------------------------------------------------------------------------- + */ + if ((dset_out=H5Dcreate(fidout,travt->objs[i].name,mtype_id,space_id,dcpl_id))<0) + goto error; + if (nelmts) { + if (H5Dwrite(dset_out,mtype_id,H5S_ALL,H5S_ALL,H5P_DEFAULT,refbuf)<0) + goto error; + } + + if (buf) + free(buf); + if (refbuf) + free(refbuf); + + }/*H5T_STD_REF_OBJ*/ + +/*------------------------------------------------------------------------- + * dataset region references + *------------------------------------------------------------------------- + */ + else if (H5Tequal(mtype_id, H5T_STD_REF_DSETREG)) + { + H5G_obj_t obj_type; + hid_t refobj_id; + hdset_reg_ref_t *refbuf=NULL; /* input buffer for region references */ + hdset_reg_ref_t *buf=NULL; /* output buffer */ + const char* refname; + unsigned u; + + /*------------------------------------------------------------------------- + * read input to memory + *------------------------------------------------------------------------- + */ + if (nelmts) + { + buf=(void *) HDmalloc((unsigned)(nelmts*msize)); + if ( buf==NULL){ + printf( "cannot read into memory\n" ); + goto error; + } + if (H5Dread(dset_in,mtype_id,H5S_ALL,H5S_ALL,H5P_DEFAULT,buf)<0) + goto error; + if ((obj_type = H5Rget_obj_type(dset_in,H5R_DATASET_REGION,buf))<0) + goto error; + + /*------------------------------------------------------------------------- + * create output + *------------------------------------------------------------------------- + */ + + refbuf=HDcalloc(sizeof(hdset_reg_ref_t),(size_t)nelmts); /*init to zero */ + if ( refbuf==NULL){ + printf( "cannot allocate memory\n" ); + goto error; + } + for ( u=0; uverbose) + printf("object <%s> region reference created to <%s>\n", + travt->objs[i].name, + refname); + }/*refname*/ + close_obj(obj_type,refobj_id); + }/* u */ + }/*nelmts*/ + + /*------------------------------------------------------------------------- + * create/write dataset/close + *------------------------------------------------------------------------- + */ + if ((dset_out=H5Dcreate(fidout,travt->objs[i].name,mtype_id,space_id,dcpl_id))<0) + goto error; + if (nelmts) { + if (H5Dwrite(dset_out,mtype_id,H5S_ALL,H5S_ALL,H5P_DEFAULT,refbuf)<0) + goto error; + } + + if (buf) + free(buf); + if (refbuf) + free(refbuf); + } /* H5T_STD_REF_DSETREG */ + + +/*------------------------------------------------------------------------- + * not references, open previously created object in 1st traversal + *------------------------------------------------------------------------- + */ + else + { + if ((dset_out=H5Dopen(fidout,travt->objs[i].name))<0) + goto error; + } + + assert(dset_out!=FAIL); + +/*------------------------------------------------------------------------- + * copy referenced objects in attributes + *------------------------------------------------------------------------- + */ + if (copy_refs_attr(dset_in,dset_out,options,travt,fidout)<0) + goto error; + + +/*------------------------------------------------------------------------- + * check for hard links + *------------------------------------------------------------------------- + */ + if (travt->objs[i].nlinks) + { + for ( j=0; jobjs[i].nlinks; j++){ + H5Glink(fidout, + H5G_LINK_HARD, + travt->objs[i].name, + travt->objs[i].links[j].new_name); + } + } + + if (H5Dclose(dset_out)<0) + goto error; + + }/*can_read*/ + + /*------------------------------------------------------------------------- + * close + *------------------------------------------------------------------------- + */ + + if (H5Tclose(ftype_id)<0) + goto error; + if (H5Tclose(mtype_id)<0) + goto error; + if (H5Pclose(dcpl_id)<0) + goto error; + if (H5Sclose(space_id)<0) + goto error; + if (H5Dclose(dset_in)<0) + goto error; + + break; + + /*------------------------------------------------------------------------- + * H5G_TYPE + *------------------------------------------------------------------------- + */ + case H5G_TYPE: + + if ((type_in = H5Topen (fidin,travt->objs[i].name))<0) + goto error; + + if (H5Tclose(type_in)<0) + goto error; + + break; + + /*------------------------------------------------------------------------- + * H5G_LINK + *------------------------------------------------------------------------- + */ + + case H5G_LINK: + + /*nothing to do */ + break; + + default: + + break; + } + } + + + +/*------------------------------------------------------------------------- + * the root is a special case, we get an ID for the root group + * and copy its attributes using that ID + * it must be done last, because the attributes might contain references to + * objects in the object list + *------------------------------------------------------------------------- + */ + + if ((grp_out = H5Gopen(fidout,"/"))<0) + goto error; + + if ((grp_in = H5Gopen(fidin,"/"))<0) + goto error; + + if (copy_refs_attr(grp_in,grp_out,options,travt,fidout)<0) + goto error; + + if (H5Gclose(grp_out)<0) + goto error; + if (H5Gclose(grp_in)<0) + goto error; + + return 0; + +error: + H5E_BEGIN_TRY { + H5Gclose(grp_in); + H5Gclose(grp_out); + H5Pclose(dcpl_id); + H5Sclose(space_id); + H5Dclose(dset_in); + H5Dclose(dset_out); + H5Tclose(ftype_id); + H5Tclose(mtype_id); + H5Tclose(type_in); + } H5E_END_TRY; + return -1; + +} + + +/*------------------------------------------------------------------------- + * Function: copy_refs_attr + * + * Purpose: duplicate all referenced HDF5 located in attributes + * relative to LOC_IN, which is obtained either from + * loc_id = H5Gopen( fid, name); + * loc_id = H5Dopen( fid, name); + * loc_id = H5Topen( fid, name); + * + * Return: 0, ok, -1 no + * + * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu + * + * Date: October, 28, 2003 + * + *------------------------------------------------------------------------- + */ + +static int copy_refs_attr(hid_t loc_in, + hid_t loc_out, + pack_opt_t *options, + trav_table_t *travt, + hid_t fidout /* for saving references */ + ) +{ + hid_t attr_id=-1; /* attr ID */ + hid_t attr_out=-1; /* attr 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 type */ + hsize_t nelmts; /* number of elements in dataset */ + int rank; /* rank of dataset */ + hsize_t dims[H5S_MAX_RANK];/* dimensions of dataset */ + char name[255]; + int n, j; + unsigned u; + + if ((n = H5Aget_num_attrs(loc_in))<0) + goto error; + + for ( u = 0; u < (unsigned)n; u++) + { + +/*------------------------------------------------------------------------- + * open + *------------------------------------------------------------------------- + */ + /* open attribute */ + if ((attr_id = H5Aopen_idx(loc_in, u))<0) + goto error; + + /* get name */ + if (H5Aget_name( attr_id, 255, name )<0) + goto error; + + /* get the file datatype */ + if ((ftype_id = H5Aget_type( attr_id )) < 0 ) + goto error; + + /* get the dataspace handle */ + if ((space_id = H5Aget_space( attr_id )) < 0 ) + goto error; + + /* get dimensions */ + if ( (rank = H5Sget_simple_extent_dims(space_id, dims, NULL)) < 0 ) + goto error; + + + /*------------------------------------------------------------------------- + * elements + *------------------------------------------------------------------------- + */ + nelmts=1; + for (j=0; jverbose) + printf("object <%s> reference created to <%s>\n",name,refname); + } + close_obj(obj_type,refobj_id); + }/* k */ + }/*nelmts*/ + + /*------------------------------------------------------------------------- + * copy + *------------------------------------------------------------------------- + */ + + if ((attr_out=H5Acreate(loc_out,name,ftype_id,space_id,H5P_DEFAULT))<0) + goto error; + if (nelmts) { + if(H5Awrite(attr_out,mtype_id,refbuf)<0) + goto error; + } + + if (H5Aclose(attr_out)<0) + goto error; + + if (refbuf) + free(refbuf); + if (buf) + free(buf); + + }/*H5T_STD_REF_OBJ*/ + +/*------------------------------------------------------------------------- + * dataset region references + *------------------------------------------------------------------------- + */ + else if (H5Tequal(mtype_id, H5T_STD_REF_DSETREG)) + { + H5G_obj_t obj_type; + hid_t refobj_id; + hdset_reg_ref_t *refbuf=NULL; /* input buffer for region references */ + hdset_reg_ref_t *buf=NULL; /* output buffer */ + const char* refname; + unsigned k; + + /*------------------------------------------------------------------------- + * read input to memory + *------------------------------------------------------------------------- + */ + + if (nelmts) + { + buf=(void *) HDmalloc((unsigned)(nelmts*msize)); + if ( buf==NULL){ + printf( "cannot read into memory\n" ); + goto error; + } + if (H5Aread(attr_id,mtype_id,buf)<0) + goto error; + if ((obj_type = H5Rget_obj_type(attr_id,H5R_DATASET_REGION,buf))<0) + goto error; + + /*------------------------------------------------------------------------- + * create output + *------------------------------------------------------------------------- + */ + + refbuf=HDcalloc(sizeof(hdset_reg_ref_t),(size_t)nelmts); /*init to zero */ + if ( refbuf==NULL){ + printf( "cannot allocate memory\n" ); + goto error; + } + for ( k=0; kverbose) + printf("object <%s> region reference created to <%s>\n",name,refname); + } + close_obj(obj_type,refobj_id); + }/* k */ + }/*nelmts */ + + /*------------------------------------------------------------------------- + * copy + *------------------------------------------------------------------------- + */ + + if ((attr_out=H5Acreate(loc_out,name,ftype_id,space_id,H5P_DEFAULT))<0) + goto error; + if (nelmts) { + if(H5Awrite(attr_out,mtype_id,refbuf)<0) + goto error; + } + if (H5Aclose(attr_out)<0) + goto error; + if (refbuf) + free(refbuf); + if (buf) + free(buf); + } /* H5T_STD_REF_DSETREG */ + +/*------------------------------------------------------------------------- + * close + *------------------------------------------------------------------------- + */ + + if (H5Tclose(ftype_id)<0) goto error; + if (H5Tclose(mtype_id)<0) goto error; + if (H5Sclose(space_id)<0) goto error; + if (H5Aclose(attr_id)<0) goto error; + } /* u */ + + return 0; + +error: + H5E_BEGIN_TRY { + H5Tclose(ftype_id); + H5Tclose(mtype_id); + H5Sclose(space_id); + H5Aclose(attr_id); + H5Aclose(attr_out); + } H5E_END_TRY; + return -1; +} + +/*------------------------------------------------------------------------- + * Function: close_obj + * + * Purpose: Auxiliary function to close an object + * + *------------------------------------------------------------------------- + */ + +static void close_obj(H5G_obj_t obj_type, hid_t obj_id) +{ + H5E_BEGIN_TRY + { + switch (obj_type) + { + case H5G_GROUP: + H5Gclose(obj_id); + break; + case H5G_DATASET: + H5Dclose(obj_id); + break; + case H5G_TYPE: + H5Tclose(obj_id); + break; + default: + break; + } + } H5E_END_TRY; +} +/*------------------------------------------------------------------------- + * Function: MapIdToName + * + * Purpose: map an object ID to a name + * + *------------------------------------------------------------------------- + */ + +static const char* MapIdToName(hid_t refobj_id, + trav_table_t *travt) +{ + hid_t id; + hid_t fid; + H5G_stat_t refstat; /* Stat for the refobj id */ + H5G_stat_t objstat; /* Stat for objects in the file */ + int i; + + /* obtain information to identify the referenced object uniquely */ + if(H5Gget_objinfo(refobj_id, ".", 0, &refstat) <0) + return NULL; + + /* obtains the file ID given an object ID. This ID must be closed */ + if ((fid = H5Iget_file_id(refobj_id))<0) + { + return NULL; + } + + /* linear search */ + for ( i=0; inobjs; i++) + { + switch ( travt->objs[i].type ) + { + default: + break; + + /*------------------------------------------------------------------------- + * H5G_DATASET + *------------------------------------------------------------------------- + */ + + case H5G_DATASET: + + if ((id = H5Dopen(fid,travt->objs[i].name))<0) + return NULL; + if(H5Gget_objinfo(id, ".", 0, &objstat) <0) + return NULL; + if (H5Dclose(id)<0) + return NULL; + if (refstat.fileno[0]==objstat.fileno[0] && refstat.fileno[1]==objstat.fileno[1] + && refstat.objno[0]==objstat.objno[0] && refstat.objno[1]==objstat.objno[1]) + { + H5Fclose(fid); + return travt->objs[i].name; + } + break; + } /* switch */ + } /* i */ + + if (H5Fclose(fid)<0) + return NULL; + + return NULL; +} + diff --git a/tools/h5repack/h5repacktst.c b/tools/h5repack/h5repacktst.c index e0c23fc..6d58abc 100644 --- a/tools/h5repack/h5repacktst.c +++ b/tools/h5repack/h5repacktst.c @@ -19,6 +19,9 @@ #include "h5repack.h" #include "h5diff.h" +#define GOERROR {H5_FAILED(); goto error;} + + /* fill value test */ #define FNAME0 "h5repack_fill.h5" #define FNAME0OUT "h5repack_fill_out.h5" @@ -145,7 +148,7 @@ int main (void) /* make the test files */ TESTING(" generating datasets"); if (make_testfiles()<0) - goto error; + GOERROR; PASSED(); /*------------------------------------------------------------------------- @@ -163,17 +166,17 @@ int main (void) */ TESTING(" copy of datasets (fill values)"); if (h5repack_init (&pack_options, 0)<0) - TEST_ERROR; + GOERROR; if (h5repack(FNAME0,FNAME0OUT,&pack_options) < 0) - TEST_ERROR; - if (h5diff(FNAME0,FNAME0OUT,NULL,NULL,&diff_options) == 1) - TEST_ERROR; + GOERROR; + if (h5diff(FNAME0,FNAME0OUT,NULL,NULL,&diff_options) >0) + GOERROR; if (h5repack_verify(FNAME0OUT,&pack_options)<=0) - TEST_ERROR; + GOERROR; if (h5repack_cmpdcpl(FNAME0,FNAME0OUT)<=0) - TEST_ERROR; + GOERROR; if (h5repack_end (&pack_options)<0) - TEST_ERROR; + GOERROR; PASSED(); /*------------------------------------------------------------------------- @@ -182,37 +185,39 @@ int main (void) */ TESTING(" copy of datasets (all datatypes)"); if (h5repack_init (&pack_options, 0)<0) - TEST_ERROR; + GOERROR; if (h5repack(FNAME1,FNAME1OUT,&pack_options) < 0) - TEST_ERROR; - if (h5diff(FNAME1,FNAME1OUT,NULL,NULL,&diff_options) == 1) - TEST_ERROR; + GOERROR; + if (h5diff(FNAME1,FNAME1OUT,NULL,NULL,&diff_options) >0) + GOERROR; if (h5repack_verify(FNAME1OUT,&pack_options)<=0) - TEST_ERROR; + GOERROR; if (h5repack_cmpdcpl(FNAME1,FNAME1OUT)<=0) - TEST_ERROR; + GOERROR; if (h5repack_end (&pack_options)<0) - TEST_ERROR; + GOERROR; PASSED(); /*------------------------------------------------------------------------- * file with attributes *------------------------------------------------------------------------- */ +#if 0 TESTING(" copy of datasets (attributes)"); if (h5repack_init (&pack_options, 0)<0) - TEST_ERROR; + GOERROR; if (h5repack(FNAME2,FNAME2OUT,&pack_options) < 0) - TEST_ERROR; - if (h5diff(FNAME2,FNAME2OUT,NULL,NULL,&diff_options) == 1) - TEST_ERROR; + GOERROR; + if (h5diff(FNAME2,FNAME2OUT,NULL,NULL,&diff_options) >0) + GOERROR; if (h5repack_verify(FNAME2OUT,&pack_options)<=0) - TEST_ERROR; + GOERROR; if (h5repack_cmpdcpl(FNAME2,FNAME2OUT)<=0) - TEST_ERROR; + GOERROR; if (h5repack_end (&pack_options)<0) - TEST_ERROR; + GOERROR; PASSED(); +#endif /*------------------------------------------------------------------------- * file with hardlinks @@ -220,17 +225,17 @@ int main (void) */ TESTING(" copy of datasets (hardlinks)"); if (h5repack_init (&pack_options, 0)<0) - TEST_ERROR; + GOERROR; if (h5repack(FNAME3,FNAME3OUT,&pack_options) < 0) - TEST_ERROR; - if (h5diff(FNAME3,FNAME3OUT,NULL,NULL,&diff_options) == 1) - TEST_ERROR; + GOERROR; + if (h5diff(FNAME3,FNAME3OUT,NULL,NULL,&diff_options) >0) + GOERROR; if (h5repack_verify(FNAME3OUT,&pack_options)<=0) - TEST_ERROR; + GOERROR; if (h5repack_cmpdcpl(FNAME3,FNAME3OUT)<=0) - TEST_ERROR; + GOERROR; if (h5repack_end (&pack_options)<0) - TEST_ERROR; + GOERROR; PASSED(); @@ -240,15 +245,15 @@ int main (void) */ TESTING(" copy of allocation early file"); if (h5repack_init (&pack_options, 0)<0) - TEST_ERROR; + GOERROR; if (h5repack(FNAME5,FNAME5OUT,&pack_options) < 0) - TEST_ERROR; - if (h5diff(FNAME5,FNAME5OUT,NULL,NULL,&diff_options) == 1) - TEST_ERROR; + GOERROR; + if (h5diff(FNAME5,FNAME5OUT,NULL,NULL,&diff_options) >0) + GOERROR; if (h5repack_verify(FNAME5OUT,&pack_options)<=0) - TEST_ERROR; + GOERROR; if (h5repack_end (&pack_options)<0) - TEST_ERROR; + GOERROR; PASSED(); /*------------------------------------------------------------------------- @@ -270,19 +275,19 @@ int main (void) */ if (h5repack_init (&pack_options, 0)<0) - TEST_ERROR; + GOERROR; if (h5repack_addfilter("dset1:GZIP=9",&pack_options)<0) - TEST_ERROR; + GOERROR; if (h5repack_addlayout("dset1:CHUNK=20x10",&pack_options)<0) - TEST_ERROR; + GOERROR; if (h5repack(FNAME4,FNAME4OUT,&pack_options) < 0) - TEST_ERROR; - if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) == 1) - TEST_ERROR; + GOERROR; + if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) >0) + GOERROR; if (h5repack_verify(FNAME4OUT,&pack_options)<=0) - TEST_ERROR; + GOERROR; if (h5repack_end (&pack_options)<0) - TEST_ERROR; + GOERROR; PASSED(); #else SKIPPED(); @@ -298,19 +303,19 @@ int main (void) #ifdef H5_HAVE_FILTER_DEFLATE if (h5repack_init (&pack_options, 0)<0) - TEST_ERROR; + GOERROR; if (h5repack_addfilter("GZIP=1",&pack_options)<0) - TEST_ERROR; + GOERROR; if (h5repack_addlayout("CHUNK=20x10",&pack_options)<0) - TEST_ERROR; + GOERROR; if (h5repack(FNAME4,FNAME4OUT,&pack_options) < 0) - TEST_ERROR; - if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) == 1) - TEST_ERROR; + GOERROR; + if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) >0) + GOERROR; if (h5repack_verify(FNAME4OUT,&pack_options)<=0) - TEST_ERROR; + GOERROR; if (h5repack_end (&pack_options)<0) - TEST_ERROR; + GOERROR; PASSED(); #else @@ -325,7 +330,7 @@ int main (void) TESTING(" adding szip filter"); #if defined (H5_HAVE_FILTER_SZIP) -if (h5tools_can_encode(H5Z_FILTER_SZIP) == 1) { +if (h5tools_can_encode(H5Z_FILTER_SZIP) >0) { szip_can_encode = 1; } @@ -336,19 +341,19 @@ if (h5tools_can_encode(H5Z_FILTER_SZIP) == 1) { if (szip_can_encode) { if (h5repack_init (&pack_options, 0)<0) - TEST_ERROR; + GOERROR; if (h5repack_addfilter("dset2:SZIP=8,EC",&pack_options)<0) - TEST_ERROR; + GOERROR; if (h5repack_addlayout("dset2:CHUNK=20x10",&pack_options)<0) - TEST_ERROR; + GOERROR; if (h5repack(FNAME4,FNAME4OUT,&pack_options) < 0) - TEST_ERROR; - if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) == 1) - TEST_ERROR; + GOERROR; + if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) >0) + GOERROR; if (h5repack_verify(FNAME4OUT,&pack_options)<=0) - TEST_ERROR; + GOERROR; if (h5repack_end (&pack_options)<0) - TEST_ERROR; + GOERROR; PASSED(); } else { @@ -368,17 +373,17 @@ TESTING(" adding szip filter to all"); #if defined (H5_HAVE_FILTER_SZIP) if (szip_can_encode) { if (h5repack_init (&pack_options, 0)<0) - TEST_ERROR; + GOERROR; if (h5repack_addfilter("SZIP=8,NN",&pack_options)<0) - TEST_ERROR; + GOERROR; if (h5repack(FNAME4,FNAME4OUT,&pack_options) < 0) - TEST_ERROR; - if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) == 1) - TEST_ERROR; + GOERROR; + if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) >0) + GOERROR; if (h5repack_verify(FNAME4OUT,&pack_options)<=0) - TEST_ERROR; + GOERROR; if (h5repack_end (&pack_options)<0) - TEST_ERROR; + GOERROR; PASSED(); } else { @@ -399,19 +404,19 @@ if (szip_can_encode) { */ if (h5repack_init (&pack_options, 0)<0) - TEST_ERROR; + GOERROR; if (h5repack_addfilter("dset1:SHUF",&pack_options)<0) - TEST_ERROR; + GOERROR; if (h5repack_addlayout("dset1:CHUNK=20x10",&pack_options)<0) - TEST_ERROR; + GOERROR; if (h5repack(FNAME4,FNAME4OUT,&pack_options) < 0) - TEST_ERROR; - if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) == 1) - TEST_ERROR; + GOERROR; + if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) >0) + GOERROR; if (h5repack_verify(FNAME4OUT,&pack_options)<=0) - TEST_ERROR; + GOERROR; if (h5repack_end (&pack_options)<0) - TEST_ERROR; + GOERROR; PASSED(); #else @@ -428,19 +433,19 @@ TESTING(" addding shuffle filter to all"); #ifdef H5_HAVE_FILTER_SHUFFLE if (h5repack_init (&pack_options, 0)<0) - TEST_ERROR; + GOERROR; if (h5repack_addfilter("SHUF",&pack_options)<0) - TEST_ERROR; + GOERROR; if (h5repack_addlayout("CHUNK=20x10",&pack_options)<0) - TEST_ERROR; + GOERROR; if (h5repack(FNAME4,FNAME4OUT,&pack_options) < 0) - TEST_ERROR; - if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) == 1) - TEST_ERROR; + GOERROR; + if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) >0) + GOERROR; if (h5repack_verify(FNAME4OUT,&pack_options)<=0) - TEST_ERROR; + GOERROR; if (h5repack_end (&pack_options)<0) - TEST_ERROR; + GOERROR; PASSED(); #else @@ -457,19 +462,19 @@ TESTING(" addding shuffle filter to all"); */ if (h5repack_init (&pack_options, 0)<0) - TEST_ERROR; + GOERROR; if (h5repack_addfilter("dset1:FLET",&pack_options)<0) - TEST_ERROR; + GOERROR; if (h5repack_addlayout("dset1:CHUNK=20x10",&pack_options)<0) - TEST_ERROR; + GOERROR; if (h5repack(FNAME4,FNAME4OUT,&pack_options) < 0) - TEST_ERROR; - if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) == 1) - TEST_ERROR; + GOERROR; + if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) >0) + GOERROR; if (h5repack_verify(FNAME4OUT,&pack_options)<=0) - TEST_ERROR; + GOERROR; if (h5repack_end (&pack_options)<0) - TEST_ERROR; + GOERROR; PASSED(); #else @@ -487,19 +492,19 @@ TESTING(" addding shuffle filter to all"); #ifdef H5_HAVE_FILTER_FLETCHER32 if (h5repack_init (&pack_options, 0)<0) - TEST_ERROR; + GOERROR; if (h5repack_addfilter("FLET",&pack_options)<0) - TEST_ERROR; + GOERROR; if (h5repack_addlayout("CHUNK=20x10",&pack_options)<0) - TEST_ERROR; + GOERROR; if (h5repack(FNAME4,FNAME4OUT,&pack_options) < 0) - TEST_ERROR; - if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) == 1) - TEST_ERROR; + GOERROR; + if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) >0) + GOERROR; if (h5repack_verify(FNAME4OUT,&pack_options)<=0) - TEST_ERROR; + GOERROR; if (h5repack_end (&pack_options)<0) - TEST_ERROR; + GOERROR; PASSED(); #else @@ -515,40 +520,40 @@ TESTING(" addding shuffle filter to all"); */ if (h5repack_init (&pack_options, 0)<0) - TEST_ERROR; + GOERROR; if (h5repack_addlayout("dset1:CHUNK 20x10",&pack_options)<0) - TEST_ERROR; + GOERROR; #if defined (H5_HAVE_FILTER_FLETCHER32) if (h5repack_addfilter("dset1:FLET",&pack_options)<0) - TEST_ERROR; + GOERROR; #endif #ifdef H5_HAVE_FILTER_SHUFFLE if (h5repack_addfilter("dset1:SHUF",&pack_options)<0) - TEST_ERROR; + GOERROR; #endif #if defined (H5_HAVE_FILTER_SZIP) if (szip_can_encode) { if (h5repack_addfilter("dset1:SZIP=8,NN",&pack_options)<0) - TEST_ERROR; + GOERROR; } #endif #ifdef H5_HAVE_FILTER_DEFLATE if (h5repack_addfilter("dset1:GZIP=1",&pack_options)<0) - TEST_ERROR; + GOERROR; #endif if (h5repack(FNAME4,FNAME4OUT,&pack_options) < 0) - TEST_ERROR; - if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) == 1) - TEST_ERROR; + GOERROR; + if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) >0) + GOERROR; if (h5repack_verify(FNAME4OUT,&pack_options)<=0) - TEST_ERROR; + GOERROR; if (h5repack_end (&pack_options)<0) - TEST_ERROR; + GOERROR; PASSED(); @@ -561,17 +566,17 @@ if (szip_can_encode) { */ if (h5repack_init (&pack_options, 0)<0) - TEST_ERROR; + GOERROR; if (h5repack_addlayout("dset1:CHUNK=20x10",&pack_options)<0) - TEST_ERROR; + GOERROR; if (h5repack(FNAME4,FNAME4OUT,&pack_options) < 0) - TEST_ERROR; - if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) == 1) - TEST_ERROR; + GOERROR; + if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) >0) + GOERROR; if (h5repack_verify(FNAME4OUT,&pack_options)<=0) - TEST_ERROR; + GOERROR; if (h5repack_end (&pack_options)<0) - TEST_ERROR; + GOERROR; PASSED(); /*------------------------------------------------------------------------- @@ -581,17 +586,17 @@ if (szip_can_encode) { TESTING(" adding layout chunked to all"); if (h5repack_init (&pack_options, 0)<0) - TEST_ERROR; + GOERROR; if (h5repack_addlayout("CHUNK=20x10",&pack_options)<0) - TEST_ERROR; + GOERROR; if (h5repack(FNAME4,FNAME4OUT,&pack_options) < 0) - TEST_ERROR; - if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) == 1) - TEST_ERROR; + GOERROR; + if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) >0) + GOERROR; if (h5repack_verify(FNAME4OUT,&pack_options)<=0) - TEST_ERROR; + GOERROR; if (h5repack_end (&pack_options)<0) - TEST_ERROR; + GOERROR; PASSED(); @@ -602,17 +607,17 @@ if (szip_can_encode) { *------------------------------------------------------------------------- */ if (h5repack_init (&pack_options, 0)<0) - TEST_ERROR; + GOERROR; if (h5repack_addlayout("dset1:CONTI",&pack_options)<0) - TEST_ERROR; + GOERROR; if (h5repack(FNAME4,FNAME4OUT,&pack_options) < 0) - TEST_ERROR; - if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) == 1) - TEST_ERROR; + GOERROR; + if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) >0) + GOERROR; if (h5repack_verify(FNAME4OUT,&pack_options)<=0) - TEST_ERROR; + GOERROR; if (h5repack_end (&pack_options)<0) - TEST_ERROR; + GOERROR; PASSED(); @@ -623,17 +628,17 @@ if (szip_can_encode) { *------------------------------------------------------------------------- */ if (h5repack_init (&pack_options, 0)<0) - TEST_ERROR; + GOERROR; if (h5repack_addlayout("CONTI",&pack_options)<0) - TEST_ERROR; + GOERROR; if (h5repack(FNAME4,FNAME4OUT,&pack_options) < 0) - TEST_ERROR; - if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) == 1) - TEST_ERROR; + GOERROR; + if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) >0) + GOERROR; if (h5repack_verify(FNAME4OUT,&pack_options)<=0) - TEST_ERROR; + GOERROR; if (h5repack_end (&pack_options)<0) - TEST_ERROR; + GOERROR; PASSED(); @@ -645,17 +650,17 @@ if (szip_can_encode) { */ if (h5repack_init (&pack_options, 0)<0) - TEST_ERROR; + GOERROR; if (h5repack_addlayout("dset1:COMPA",&pack_options)<0) - TEST_ERROR; + GOERROR; if (h5repack(FNAME4,FNAME4OUT,&pack_options) < 0) - TEST_ERROR; - if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) == 1) - TEST_ERROR; + GOERROR; + if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) >0) + GOERROR; if (h5repack_verify(FNAME4OUT,&pack_options)<=0) - TEST_ERROR; + GOERROR; if (h5repack_end (&pack_options)<0) - TEST_ERROR; + GOERROR; PASSED(); TESTING(" adding layout compact to all"); @@ -666,17 +671,17 @@ if (szip_can_encode) { */ if (h5repack_init (&pack_options, 0)<0) - TEST_ERROR; + GOERROR; if (h5repack_addlayout("COMPA",&pack_options)<0) - TEST_ERROR; + GOERROR; if (h5repack(FNAME4,FNAME4OUT,&pack_options) < 0) - TEST_ERROR; - if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) == 1) - TEST_ERROR; + GOERROR; + if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) >0) + GOERROR; if (h5repack_verify(FNAME4OUT,&pack_options)<=0) - TEST_ERROR; + GOERROR; if (h5repack_end (&pack_options)<0) - TEST_ERROR; + GOERROR; PASSED(); @@ -688,17 +693,17 @@ if (szip_can_encode) { *------------------------------------------------------------------------- */ if (h5repack_init (&pack_options, 0)<0) - TEST_ERROR; + GOERROR; if (h5repack_addlayout("dset_compact:CONTI",&pack_options)<0) - TEST_ERROR; + GOERROR; if (h5repack(FNAME4,FNAME4OUT,&pack_options) < 0) - TEST_ERROR; - if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) == 1) - TEST_ERROR; + GOERROR; + if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) >0) + GOERROR; if (h5repack_verify(FNAME4OUT,&pack_options)<=0) - TEST_ERROR; + GOERROR; if (h5repack_end (&pack_options)<0) - TEST_ERROR; + GOERROR; PASSED(); TESTING(" layout compact to chunk conversion"); @@ -708,17 +713,17 @@ if (szip_can_encode) { *------------------------------------------------------------------------- */ if (h5repack_init (&pack_options, 0)<0) - TEST_ERROR; + GOERROR; if (h5repack_addlayout("dset_compact:CHUNK=2x5",&pack_options)<0) - TEST_ERROR; + GOERROR; if (h5repack(FNAME4,FNAME4OUT,&pack_options) < 0) - TEST_ERROR; - if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) == 1) - TEST_ERROR; + GOERROR; + if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) >0) + GOERROR; if (h5repack_verify(FNAME4OUT,&pack_options)<=0) - TEST_ERROR; + GOERROR; if (h5repack_end (&pack_options)<0) - TEST_ERROR; + GOERROR; PASSED(); TESTING(" layout compact to compact conversion"); @@ -728,17 +733,17 @@ if (szip_can_encode) { *------------------------------------------------------------------------- */ if (h5repack_init (&pack_options, 0)<0) - TEST_ERROR; + GOERROR; if (h5repack_addlayout("dset_compact:COMPA",&pack_options)<0) - TEST_ERROR; + GOERROR; if (h5repack(FNAME4,FNAME4OUT,&pack_options) < 0) - TEST_ERROR; - if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) == 1) - TEST_ERROR; + GOERROR; + if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) >0) + GOERROR; if (h5repack_verify(FNAME4OUT,&pack_options)<=0) - TEST_ERROR; + GOERROR; if (h5repack_end (&pack_options)<0) - TEST_ERROR; + GOERROR; PASSED(); TESTING(" layout contiguous to compact conversion"); @@ -747,17 +752,17 @@ if (szip_can_encode) { *------------------------------------------------------------------------- */ if (h5repack_init (&pack_options, 0)<0) - TEST_ERROR; + GOERROR; if (h5repack_addlayout("dset_contiguous:COMPA",&pack_options)<0) - TEST_ERROR; + GOERROR; if (h5repack(FNAME4,FNAME4OUT,&pack_options) < 0) - TEST_ERROR; - if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) == 1) - TEST_ERROR; + GOERROR; + if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) >0) + GOERROR; if (h5repack_verify(FNAME4OUT,&pack_options)<=0) - TEST_ERROR; + GOERROR; if (h5repack_end (&pack_options)<0) - TEST_ERROR; + GOERROR; PASSED(); TESTING(" layout contiguous to chunk conversion"); @@ -766,17 +771,17 @@ if (szip_can_encode) { *------------------------------------------------------------------------- */ if (h5repack_init (&pack_options, 0)<0) - TEST_ERROR; + GOERROR; if (h5repack_addlayout("dset_contiguous:CHUNK=3x6",&pack_options)<0) - TEST_ERROR; + GOERROR; if (h5repack(FNAME4,FNAME4OUT,&pack_options) < 0) - TEST_ERROR; - if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) == 1) - TEST_ERROR; + GOERROR; + if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) >0) + GOERROR; if (h5repack_verify(FNAME4OUT,&pack_options)<=0) - TEST_ERROR; + GOERROR; if (h5repack_end (&pack_options)<0) - TEST_ERROR; + GOERROR; PASSED(); TESTING(" layout contiguous to contiguous conversion"); @@ -786,17 +791,17 @@ if (szip_can_encode) { *------------------------------------------------------------------------- */ if (h5repack_init (&pack_options, 0)<0) - TEST_ERROR; + GOERROR; if (h5repack_addlayout("dset_contiguous:CONTI",&pack_options)<0) - TEST_ERROR; + GOERROR; if (h5repack(FNAME4,FNAME4OUT,&pack_options) < 0) - TEST_ERROR; - if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) == 1) - TEST_ERROR; + GOERROR; + if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) >0) + GOERROR; if (h5repack_verify(FNAME4OUT,&pack_options)<=0) - TEST_ERROR; + GOERROR; if (h5repack_end (&pack_options)<0) - TEST_ERROR; + GOERROR; PASSED(); TESTING(" layout chunked to compact conversion"); @@ -805,17 +810,17 @@ if (szip_can_encode) { *------------------------------------------------------------------------- */ if (h5repack_init (&pack_options, 0)<0) - TEST_ERROR; + GOERROR; if (h5repack_addlayout("dset_chunk:COMPA",&pack_options)<0) - TEST_ERROR; + GOERROR; if (h5repack(FNAME4,FNAME4OUT,&pack_options) < 0) - TEST_ERROR; - if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) == 1) - TEST_ERROR; + GOERROR; + if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) >0) + GOERROR; if (h5repack_verify(FNAME4OUT,&pack_options)<=0) - TEST_ERROR; + GOERROR; if (h5repack_end (&pack_options)<0) - TEST_ERROR; + GOERROR; PASSED(); TESTING(" layout chunked to contiguous conversion"); @@ -825,17 +830,17 @@ if (szip_can_encode) { *------------------------------------------------------------------------- */ if (h5repack_init (&pack_options, 0)<0) - TEST_ERROR; + GOERROR; if (h5repack_addlayout("dset_chunk:CONTI",&pack_options)<0) - TEST_ERROR; + GOERROR; if (h5repack(FNAME4,FNAME4OUT,&pack_options) < 0) - TEST_ERROR; - if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) == 1) - TEST_ERROR; + GOERROR; + if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) >0) + GOERROR; if (h5repack_verify(FNAME4OUT,&pack_options)<=0) - TEST_ERROR; + GOERROR; if (h5repack_end (&pack_options)<0) - TEST_ERROR; + GOERROR; PASSED(); TESTING(" layout chunked to chunk conversion"); @@ -844,17 +849,17 @@ if (szip_can_encode) { *------------------------------------------------------------------------- */ if (h5repack_init (&pack_options, 0)<0) - TEST_ERROR; + GOERROR; if (h5repack_addlayout("dset_chunk:CHUNK=18x13",&pack_options)<0) - TEST_ERROR; + GOERROR; if (h5repack(FNAME4,FNAME4OUT,&pack_options) < 0) - TEST_ERROR; - if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) == 1) - TEST_ERROR; + GOERROR; + if (h5diff(FNAME4,FNAME4OUT,NULL,NULL,&diff_options) >0) + GOERROR; if (h5repack_verify(FNAME4OUT,&pack_options)<=0) - TEST_ERROR; + GOERROR; if (h5repack_end (&pack_options)<0) - TEST_ERROR; + GOERROR; PASSED(); @@ -874,15 +879,15 @@ if (szip_can_encode) { #if defined (H5_HAVE_FILTER_SZIP) if (szip_can_encode) { if (h5repack_init (&pack_options, 0)<0) - TEST_ERROR; + GOERROR; if (h5repack(FNAME7,FNAME7OUT,&pack_options) < 0) - TEST_ERROR; - if (h5diff(FNAME7,FNAME7OUT,NULL,NULL,&diff_options) == 1) - TEST_ERROR; + GOERROR; + if (h5diff(FNAME7,FNAME7OUT,NULL,NULL,&diff_options) >0) + GOERROR; if (h5repack_verify(FNAME7OUT,&pack_options)<=0) - TEST_ERROR; + GOERROR; if (h5repack_end (&pack_options)<0) - TEST_ERROR; + GOERROR; PASSED(); } else { @@ -897,17 +902,17 @@ if (szip_can_encode) { #if defined (H5_HAVE_FILTER_SZIP) if (szip_can_encode) { if (h5repack_init (&pack_options, 0)<0) - TEST_ERROR; + GOERROR; if (h5repack_addfilter("dset_szip:NONE",&pack_options)<0) - TEST_ERROR; + GOERROR; if (h5repack(FNAME7,FNAME7OUT,&pack_options) < 0) - TEST_ERROR; - if (h5diff(FNAME7,FNAME7OUT,NULL,NULL,&diff_options) == 1) - TEST_ERROR; + GOERROR; + if (h5diff(FNAME7,FNAME7OUT,NULL,NULL,&diff_options) >0) + GOERROR; if (h5repack_verify(FNAME7OUT,&pack_options)<=0) - TEST_ERROR; + GOERROR; if (h5repack_end (&pack_options)<0) - TEST_ERROR; + GOERROR; PASSED(); } else { @@ -922,15 +927,15 @@ if (szip_can_encode) { #ifdef H5_HAVE_FILTER_DEFLATE if (h5repack_init (&pack_options, 0)<0) - TEST_ERROR; + GOERROR; if (h5repack(FNAME8,FNAME8OUT,&pack_options) < 0) - TEST_ERROR; - if (h5diff(FNAME8,FNAME8OUT,NULL,NULL,&diff_options) == 1) - TEST_ERROR; + GOERROR; + if (h5diff(FNAME8,FNAME8OUT,NULL,NULL,&diff_options) >0) + GOERROR; if (h5repack_verify(FNAME8OUT,&pack_options)<=0) - TEST_ERROR; + GOERROR; if (h5repack_end (&pack_options)<0) - TEST_ERROR; + GOERROR; PASSED(); #else @@ -942,17 +947,17 @@ if (szip_can_encode) { #ifdef H5_HAVE_FILTER_DEFLATE if (h5repack_init (&pack_options, 0)<0) - TEST_ERROR; + GOERROR; if (h5repack_addfilter("dset_deflate:NONE",&pack_options)<0) - TEST_ERROR; + GOERROR; if (h5repack(FNAME8,FNAME8OUT,&pack_options) < 0) - TEST_ERROR; - if (h5diff(FNAME8,FNAME8OUT,NULL,NULL,&diff_options) == 1) - TEST_ERROR; + GOERROR; + if (h5diff(FNAME8,FNAME8OUT,NULL,NULL,&diff_options) >0) + GOERROR; if (h5repack_verify(FNAME8OUT,&pack_options)<=0) - TEST_ERROR; + GOERROR; if (h5repack_end (&pack_options)<0) - TEST_ERROR; + GOERROR; PASSED(); #else @@ -965,15 +970,15 @@ if (szip_can_encode) { #ifdef H5_HAVE_FILTER_SHUFFLE if (h5repack_init (&pack_options, 0)<0) - TEST_ERROR; + GOERROR; if (h5repack(FNAME9,FNAME9OUT,&pack_options) < 0) - TEST_ERROR; - if (h5diff(FNAME9,FNAME9OUT,NULL,NULL,&diff_options) == 1) - TEST_ERROR; + GOERROR; + if (h5diff(FNAME9,FNAME9OUT,NULL,NULL,&diff_options) >0) + GOERROR; if (h5repack_verify(FNAME9OUT,&pack_options)<=0) - TEST_ERROR; + GOERROR; if (h5repack_end (&pack_options)<0) - TEST_ERROR; + GOERROR; PASSED(); #else @@ -984,17 +989,17 @@ if (szip_can_encode) { #ifdef H5_HAVE_FILTER_SHUFFLE if (h5repack_init (&pack_options, 0)<0) - TEST_ERROR; + GOERROR; if (h5repack_addfilter("dset_shuffle:NONE",&pack_options)<0) - TEST_ERROR; + GOERROR; if (h5repack(FNAME9,FNAME9OUT,&pack_options) < 0) - TEST_ERROR; - if (h5diff(FNAME9,FNAME9OUT,NULL,NULL,&diff_options) == 1) - TEST_ERROR; + GOERROR; + if (h5diff(FNAME9,FNAME9OUT,NULL,NULL,&diff_options) >0) + GOERROR; if (h5repack_verify(FNAME9OUT,&pack_options)<=0) - TEST_ERROR; + GOERROR; if (h5repack_end (&pack_options)<0) - TEST_ERROR; + GOERROR; PASSED(); #else @@ -1005,15 +1010,15 @@ if (szip_can_encode) { #ifdef H5_HAVE_FILTER_FLETCHER32 if (h5repack_init (&pack_options, 0)<0) - TEST_ERROR; + GOERROR; if (h5repack(FNAME10,FNAME10OUT,&pack_options) < 0) - TEST_ERROR; - if (h5diff(FNAME10,FNAME10OUT,NULL,NULL,&diff_options) == 1) - TEST_ERROR; + GOERROR; + if (h5diff(FNAME10,FNAME10OUT,NULL,NULL,&diff_options) >0) + GOERROR; if (h5repack_verify(FNAME10OUT,&pack_options)<=0) - TEST_ERROR; + GOERROR; if (h5repack_end (&pack_options)<0) - TEST_ERROR; + GOERROR; PASSED(); #else @@ -1024,17 +1029,17 @@ if (szip_can_encode) { #ifdef H5_HAVE_FILTER_FLETCHER32 if (h5repack_init (&pack_options, 0)<0) - TEST_ERROR; + GOERROR; if (h5repack_addfilter("dset_fletcher32:NONE",&pack_options)<0) - TEST_ERROR; + GOERROR; if (h5repack(FNAME10,FNAME10OUT,&pack_options) < 0) - TEST_ERROR; - if (h5diff(FNAME10,FNAME10OUT,NULL,NULL,&diff_options) == 1) - TEST_ERROR; + GOERROR; + if (h5diff(FNAME10,FNAME10OUT,NULL,NULL,&diff_options) >0) + GOERROR; if (h5repack_verify(FNAME10OUT,&pack_options)<=0) - TEST_ERROR; + GOERROR; if (h5repack_end (&pack_options)<0) - TEST_ERROR; + GOERROR; PASSED(); #else @@ -1046,15 +1051,15 @@ if (szip_can_encode) { #ifdef H5_HAVE_FILTER_NBIT if (h5repack_init (&pack_options, 0)<0) - TEST_ERROR; + GOERROR; if (h5repack(FNAME12,FNAME12OUT,&pack_options) < 0) - TEST_ERROR; - if (h5diff(FNAME12,FNAME12OUT,NULL,NULL,&diff_options) == 1) - TEST_ERROR; + GOERROR; + if (h5diff(FNAME12,FNAME12OUT,NULL,NULL,&diff_options) >0) + GOERROR; if (h5repack_verify(FNAME12OUT,&pack_options)<=0) - TEST_ERROR; + GOERROR; if (h5repack_end (&pack_options)<0) - TEST_ERROR; + GOERROR; PASSED(); #else @@ -1065,17 +1070,17 @@ if (szip_can_encode) { #ifdef H5_HAVE_FILTER_NBIT if (h5repack_init (&pack_options, 0)<0) - TEST_ERROR; + GOERROR; if (h5repack_addfilter("dset_nbit:NONE",&pack_options)<0) - TEST_ERROR; + GOERROR; if (h5repack(FNAME12,FNAME12OUT,&pack_options) < 0) - TEST_ERROR; - if (h5diff(FNAME12,FNAME12OUT,NULL,NULL,&diff_options) == 1) - TEST_ERROR; + GOERROR; + if (h5diff(FNAME12,FNAME12OUT,NULL,NULL,&diff_options) >0) + GOERROR; if (h5repack_verify(FNAME12OUT,&pack_options)<=0) - TEST_ERROR; + GOERROR; if (h5repack_end (&pack_options)<0) - TEST_ERROR; + GOERROR; PASSED(); #else @@ -1086,17 +1091,17 @@ if (szip_can_encode) { #ifdef H5_HAVE_FILTER_NBIT if (h5repack_init (&pack_options, 0)<0) - TEST_ERROR; + GOERROR; if (h5repack_addfilter("dset_int31:NBIT",&pack_options)<0) - TEST_ERROR; + GOERROR; if (h5repack(FNAME12,FNAME12OUT,&pack_options) < 0) - TEST_ERROR; - if (h5diff(FNAME12,FNAME12OUT,NULL,NULL,&diff_options) == 1) - TEST_ERROR; + GOERROR; + if (h5diff(FNAME12,FNAME12OUT,NULL,NULL,&diff_options) >0) + GOERROR; if (h5repack_verify(FNAME12OUT,&pack_options)<=0) - TEST_ERROR; + GOERROR; if (h5repack_end (&pack_options)<0) - TEST_ERROR; + GOERROR; PASSED(); #else @@ -1106,15 +1111,15 @@ if (szip_can_encode) { #ifdef H5_HAVE_FILTER_SCALEOFFSET if (h5repack_init (&pack_options, 0)<0) - TEST_ERROR; + GOERROR; if (h5repack(FNAME13,FNAME13OUT,&pack_options) < 0) - TEST_ERROR; - if (h5diff(FNAME13,FNAME13OUT,NULL,NULL,&diff_options) == 1) - TEST_ERROR; + GOERROR; + if (h5diff(FNAME13,FNAME13OUT,NULL,NULL,&diff_options) >0) + GOERROR; if (h5repack_verify(FNAME13OUT,&pack_options)<=0) - TEST_ERROR; + GOERROR; if (h5repack_end (&pack_options)<0) - TEST_ERROR; + GOERROR; PASSED(); #else @@ -1125,17 +1130,17 @@ if (szip_can_encode) { #ifdef H5_HAVE_FILTER_SCALEOFFSET if (h5repack_init (&pack_options, 0)<0) - TEST_ERROR; + GOERROR; if (h5repack_addfilter("dset_scaleoffset:NONE",&pack_options)<0) - TEST_ERROR; + GOERROR; if (h5repack(FNAME13,FNAME13OUT,&pack_options) < 0) - TEST_ERROR; - if (h5diff(FNAME13,FNAME13OUT,NULL,NULL,&diff_options) == 1) - TEST_ERROR; + GOERROR; + if (h5diff(FNAME13,FNAME13OUT,NULL,NULL,&diff_options) >0) + GOERROR; if (h5repack_verify(FNAME13OUT,&pack_options)<=0) - TEST_ERROR; + GOERROR; if (h5repack_end (&pack_options)<0) - TEST_ERROR; + GOERROR; PASSED(); #else @@ -1147,17 +1152,17 @@ if (szip_can_encode) { #ifdef H5_HAVE_FILTER_SCALEOFFSET if (h5repack_init (&pack_options, 0)<0) - TEST_ERROR; + GOERROR; if (h5repack_addfilter("dset_none:SOFF=31,IN",&pack_options)<0) - TEST_ERROR; + GOERROR; if (h5repack(FNAME13,FNAME13OUT,&pack_options) < 0) - TEST_ERROR; - if (h5diff(FNAME13,FNAME13OUT,NULL,NULL,&diff_options) == 1) - TEST_ERROR; + GOERROR; + if (h5diff(FNAME13,FNAME13OUT,NULL,NULL,&diff_options) >0) + GOERROR; if (h5repack_verify(FNAME13OUT,&pack_options)<=0) - TEST_ERROR; + GOERROR; if (h5repack_end (&pack_options)<0) - TEST_ERROR; + GOERROR; PASSED(); #else @@ -1183,17 +1188,17 @@ if (szip_can_encode) { if (szip_can_encode) { if (h5repack_init (&pack_options, 0)<0) - TEST_ERROR; + GOERROR; if (h5repack_addfilter("dset_deflate:SZIP=8,NN",&pack_options)<0) - TEST_ERROR; + GOERROR; if (h5repack(FNAME11,FNAME11OUT,&pack_options) < 0) - TEST_ERROR; - if (h5diff(FNAME11,FNAME11OUT,NULL,NULL,&diff_options) == 1) - TEST_ERROR; + GOERROR; + if (h5diff(FNAME11,FNAME11OUT,NULL,NULL,&diff_options) >0) + GOERROR; if (h5repack_verify(FNAME11OUT,&pack_options)<=0) - TEST_ERROR; + GOERROR; if (h5repack_end (&pack_options)<0) - TEST_ERROR; + GOERROR; PASSED(); } else { @@ -1211,17 +1216,17 @@ if (szip_can_encode) { if (szip_can_encode) { if (h5repack_init (&pack_options, 0)<0) - TEST_ERROR; + GOERROR; if (h5repack_addfilter("dset_szip:GZIP=1",&pack_options)<0) - TEST_ERROR; + GOERROR; if (h5repack(FNAME11,FNAME11OUT,&pack_options) < 0) - TEST_ERROR; - if (h5diff(FNAME11,FNAME11OUT,NULL,NULL,&diff_options) == 1) - TEST_ERROR; + GOERROR; + if (h5diff(FNAME11,FNAME11OUT,NULL,NULL,&diff_options) >0) + GOERROR; if (h5repack_verify(FNAME11OUT,&pack_options)<=0) - TEST_ERROR; + GOERROR; if (h5repack_end (&pack_options)<0) - TEST_ERROR; + GOERROR; PASSED(); } else { @@ -1243,17 +1248,17 @@ if (szip_can_encode) { && defined (H5_HAVE_FILTER_FLETCHER32) && defined (H5_HAVE_FILTER_SHUFFLE) if (h5repack_init (&pack_options, 0)<0) - TEST_ERROR; + GOERROR; if (h5repack_addfilter("NONE",&pack_options)<0) - TEST_ERROR; + GOERROR; if (h5repack(FNAME11,FNAME11OUT,&pack_options) < 0) - TEST_ERROR; - if (h5diff(FNAME11,FNAME11OUT,NULL,NULL,&diff_options) == 1) - TEST_ERROR; + GOERROR; + if (h5diff(FNAME11,FNAME11OUT,NULL,NULL,&diff_options) >0) + GOERROR; if (h5repack_verify(FNAME11OUT,&pack_options)<=0) - TEST_ERROR; + GOERROR; if (h5repack_end (&pack_options)<0) - TEST_ERROR; + GOERROR; PASSED(); #else @@ -1266,15 +1271,15 @@ if (szip_can_encode) { */ TESTING(" big file"); if (h5repack_init (&pack_options, 0)<0) - TEST_ERROR; + GOERROR; if (h5repack(FNAME14,FNAME14OUT,&pack_options) < 0) - TEST_ERROR; - if (h5diff(FNAME14,FNAME14OUT,NULL,NULL,&diff_options) == 1) - TEST_ERROR; + GOERROR; + if (h5diff(FNAME14,FNAME14OUT,NULL,NULL,&diff_options) >0) + GOERROR; if (h5repack_verify(FNAME14OUT,&pack_options)<=0) - TEST_ERROR; + GOERROR; if (h5repack_end (&pack_options)<0) - TEST_ERROR; + GOERROR; PASSED(); diff --git a/tools/lib/h5diff_array.c b/tools/lib/h5diff_array.c index a01aefe..45f46ad 100644 --- a/tools/lib/h5diff_array.c +++ b/tools/lib/h5diff_array.c @@ -712,13 +712,13 @@ hsize_t diff_datum(void *_mem1, iszero1=all_zero(_mem1, H5Tget_size(m_type)); iszero2=all_zero(_mem2, H5Tget_size(m_type)); - if (iszero1==1 || iszero2==1) + if (iszero1 != iszero2) { - return 0; + return 1; } - else + else if (!iszero1 && !iszero2) { - + /*------------------------------------------------------------------------- * H5T_STD_REF_DSETREG * Dataset region reference diff --git a/tools/lib/h5diff_attr.c b/tools/lib/h5diff_attr.c index 346d64f..c99a1ae 100644 --- a/tools/lib/h5diff_attr.c +++ b/tools/lib/h5diff_attr.c @@ -38,7 +38,7 @@ */ int diff_attr(hid_t loc1_id, - hid_t loc2_id, + hid_t loc2_id, const char *path1, const char *path2, diff_opt_t *options) @@ -51,13 +51,13 @@ int diff_attr(hid_t loc1_id, hid_t ftype2_id=-1; /* file data type ID */ hid_t mtype1_id=-1; /* memory data type ID */ hid_t mtype2_id=-1; /* memory data type ID */ - size_t msize1; /* memory size of memory type */ - size_t msize2; /* memory size of memory type */ - void *buf1=NULL; /* data buffer */ - void *buf2=NULL; /* data buffer */ - hsize_t nelmts1; /* number of elements in dataset */ - int rank1; /* rank of dataset */ - int rank2; /* rank of dataset */ + size_t msize1; /* memory size of memory type */ + size_t msize2; /* memory size of memory type */ + void *buf1=NULL; /* data buffer */ + void *buf2=NULL; /* data buffer */ + hsize_t nelmts1; /* number of elements in dataset */ + int rank1; /* rank of dataset */ + int rank2; /* rank of dataset */ hsize_t dims1[H5S_MAX_RANK];/* dimensions of dataset */ hsize_t dims2[H5S_MAX_RANK];/* dimensions of dataset */ char name1[512]; @@ -65,9 +65,9 @@ int diff_attr(hid_t loc1_id, char np1[512]; char np2[512]; int n1, n2, i, j; - int ret=0; hsize_t nfound; int cmp=1; + int ret=0; if ((n1 = H5Aget_num_attrs(loc1_id))<0) goto error; @@ -83,33 +83,26 @@ int diff_attr(hid_t loc1_id, buf1=NULL; buf2=NULL; - /*------------------------------------------------------------------------- - * open - *------------------------------------------------------------------------- - */ /* open attribute */ if ((attr1_id = H5Aopen_idx(loc1_id, (unsigned)i))<0) goto error; - if ((attr2_id = H5Aopen_idx(loc2_id, (unsigned)i))<0) - goto error; - - /* get name */ + /* get name */ if (H5Aget_name( attr1_id, 255, name1 )<0) goto error; - if (H5Aget_name( attr2_id, 255, name2 )<0) - goto error; - if (HDstrcmp(name1,name2)!=0) + /* use the name on the first file to open the second file */ + H5E_BEGIN_TRY { - if (options->m_verbose) + if ((attr2_id = H5Aopen_name(loc2_id, name1))<0) { - parallel_print("Different name for attributes: <%s> and <%s>\n", name1, name2); + ret = 1; + goto error; } - H5Aclose(attr1_id); - H5Aclose(attr2_id); - ret=1; - continue; - } + } H5E_END_TRY; + + /* get name */ + if (H5Aget_name( attr2_id, 255, name2 )<0) + goto error; /* get the file datatype */ if ((ftype1_id = H5Aget_type( attr1_id )) < 0 ) @@ -180,7 +173,7 @@ int diff_attr(hid_t loc1_id, buf1=(void *) HDmalloc((unsigned)(nelmts1*msize1)); buf2=(void *) HDmalloc((unsigned)(nelmts1*msize2)); if ( buf1==NULL || buf2==NULL){ - parallel_print( "cannot read into memory\n" ); + printf( "cannot read into memory\n" ); goto error; } if (H5Aread(attr1_id,mtype1_id,buf1)<0) @@ -313,7 +306,7 @@ error: } H5E_END_TRY; options->err_stat=1; - return 0; + return ret; } -- cgit v0.12