diff options
author | Pedro Vicente Nunes <pvn@hdfgroup.org> | 2004-07-20 19:21:03 (GMT) |
---|---|---|
committer | Pedro Vicente Nunes <pvn@hdfgroup.org> | 2004-07-20 19:21:03 (GMT) |
commit | 4cb6c01d7f59be968649e36a61346be044f76345 (patch) | |
tree | e0a0b81e542768b75d5bbb2de8afc1abfb8c4370 /tools/lib/h5diff_attr.c | |
parent | 00909f278d64017c21c8348537231daba97be9dd (diff) | |
download | hdf5-4cb6c01d7f59be968649e36a61346be044f76345.zip hdf5-4cb6c01d7f59be968649e36a61346be044f76345.tar.gz hdf5-4cb6c01d7f59be968649e36a61346be044f76345.tar.bz2 |
[svn-r8904] Purpose:
h5diff and h5repack changes
Description:
h5diff
introduced the following four modes of output:
Normal mode: print the number of differences found and where they occured
Report mode: print the above plus the differences
Verbose mode: print the above plus a list of objects and warnings
Quiet mode: do not print output (h5diff always returns an exit code of 1 when differences are found)
h5repack
added an extra parameter for SZIP filter (coding method)
the new syntax is
-f SZIP=<pixels per block,coding>
(pixels per block is a even number in 2-32 and coding method is 'EC' or 'NN')
Example of use:
./h5repack -i file1 -o file2 -f SZIP=8,NN -v
updated usage messages, test scripts and files accordingly
Solution:
Platforms tested:
linux
AIX
solaris
Misc. update:
Diffstat (limited to 'tools/lib/h5diff_attr.c')
-rw-r--r-- | tools/lib/h5diff_attr.c | 222 |
1 files changed, 108 insertions, 114 deletions
diff --git a/tools/lib/h5diff_attr.c b/tools/lib/h5diff_attr.c index a7e6ce4..bf3a874 100644 --- a/tools/lib/h5diff_attr.c +++ b/tools/lib/h5diff_attr.c @@ -28,7 +28,6 @@ * Return: * 0 : no differences found * 1 : differences found - * -1 : error ocurred * * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu * @@ -52,7 +51,7 @@ 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 msize1; /* memory size of memory type */ size_t msize2; /* memory size of memory type */ void *buf1=NULL; /* data buffer */ void *buf2=NULL; /* data buffer */ @@ -61,11 +60,12 @@ int diff_attr(hid_t loc1_id, 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[255]; + char name1[255]; char name2[255]; - int n1, n2, i, j, nfound; - H5S_class_t space_type1, space_type2; + int n1, n2, i, j; int ret=0; + hsize_t nfound; + int cmp=1; if ((n1 = H5Aget_num_attrs(loc1_id))<0) goto error; @@ -100,7 +100,7 @@ int diff_attr(hid_t loc1_id, if (HDstrcmp(name1,name2)!=0) { - if (options->verbose) + if (options->m_verbose) { printf("Different name for attributes: <%s> and <%s>\n", name1, name2); } @@ -110,119 +110,109 @@ int diff_attr(hid_t loc1_id, continue; } - /* get the file datatype */ - if ((ftype1_id = H5Aget_type( attr1_id )) < 0 ) - goto error; + /* get the file datatype */ + if ((ftype1_id = H5Aget_type( attr1_id )) < 0 ) + goto error; if ((ftype2_id = H5Aget_type( attr2_id )) < 0 ) - goto error; + goto error; - /* get the dataspace handle */ - if ((space1_id = H5Aget_space( attr1_id )) < 0 ) - goto error; + /* get the dataspace handle */ + if ((space1_id = H5Aget_space( attr1_id )) < 0 ) + goto error; if ((space2_id = H5Aget_space( attr2_id )) < 0 ) - goto error; + goto error; - space_type1 = H5Sget_simple_extent_type(space1_id); - space_type2 = H5Sget_simple_extent_type(space2_id); + /* get dimensions */ + if ( (rank1 = H5Sget_simple_extent_dims(space1_id, dims1, NULL)) < 0 ) + goto error; + if ( (rank2 = H5Sget_simple_extent_dims(space2_id, dims2, NULL)) < 0 ) + goto error; - /* get dimensions */ - if(space_type1 == H5S_NULL && space_type2 == H5S_NULL) { - if(options->verbose) { - printf( "Attribute: <%s> and <%s>\n",name1,name2); - sprintf(name1,"%s of <%s>",name1,path1); - sprintf(name2,"%s of <%s>",name2,path2); - printf( "type %s %s difference\n",name1,name2); - if ( !(H5Tequal(ftype1_id, ftype2_id)) && options->verbose) { - printf("\t\t"); - print_type(ftype1_id); - printf("\t\t"); - print_type(ftype2_id); - printf("\n"); - } - - printf("1 differences found\n"); - } - } else { - if ( (rank1 = H5Sget_simple_extent_dims(space1_id, dims1, NULL)) < 0 ) - goto error; +/*------------------------------------------------------------------------- + * check for comparable TYPE and SPACE + *------------------------------------------------------------------------- + */ + + if (diff_can_type(ftype1_id, + ftype2_id, + rank1, + rank2, + dims1, + dims2, + NULL, + NULL, + name1, + name2, + options)!=1) + cmp=0; +/*------------------------------------------------------------------------- + * only attempt to compare if possible + *------------------------------------------------------------------------- + */ + if (cmp) + { + +/*------------------------------------------------------------------------- + * read to memory + *------------------------------------------------------------------------- + */ + nelmts1=1; + for (j=0; j<rank1; j++) + nelmts1*=dims1[j]; + if ((mtype1_id=H5Tget_native_type(ftype1_id,H5T_DIR_DEFAULT))<0) + goto error; + if ((mtype2_id=H5Tget_native_type(ftype2_id,H5T_DIR_DEFAULT))<0) + goto error; + if ((msize1=H5Tget_size(mtype1_id))==0) + goto error; + if ((msize2=H5Tget_size(mtype2_id))==0) + goto error; + + assert(msize1==msize2); + + buf1=(void *) HDmalloc((unsigned)(nelmts1*msize1)); + buf2=(void *) HDmalloc((unsigned)(nelmts1*msize2)); + if ( buf1==NULL || buf2==NULL){ + printf( "cannot read into memory\n" ); + goto error; + } + if (H5Aread(attr1_id,mtype1_id,buf1)<0) + goto error; + if (H5Aread(attr2_id,mtype2_id,buf2)<0) + goto error; - if ( (rank2 = H5Sget_simple_extent_dims(space2_id, dims2, NULL)) < 0 ) - goto error; + +/*------------------------------------------------------------------------- + * array compare + *------------------------------------------------------------------------- + */ + sprintf(name1,"%s of <%s>",name1,path1); + sprintf(name2,"%s of <%s>",name2,path2); + nfound = diff_array(buf1, + buf2, + nelmts1, + rank1, + dims1, + options, + name1, + name2, + mtype1_id, + attr1_id, + attr2_id); + + }/*cmp*/ - /*------------------------------------------------------------------------- - * check for comparable TYPE and SPACE - *------------------------------------------------------------------------- - */ - if (diff_can_type(ftype1_id, - ftype2_id, - rank1, - rank2, - dims1, - dims2, - NULL, - NULL, - name1, - name2, - options)!=1) - goto error; - - /*------------------------------------------------------------------------- - * read to memory - *------------------------------------------------------------------------- - */ - nelmts1=1; - for (j=0; j<rank1; j++) - nelmts1*=dims1[j]; - if ((mtype1_id=H5Tget_native_type(ftype1_id,H5T_DIR_DEFAULT))<0) - goto error; - if ((mtype2_id=H5Tget_native_type(ftype2_id,H5T_DIR_DEFAULT))<0) - goto error; - if ((msize1=H5Tget_size(mtype1_id))==0) - goto error; - if ((msize2=H5Tget_size(mtype2_id))==0) - goto error; - - assert(msize1==msize2); - - buf1=(void *) HDmalloc((unsigned)(nelmts1*msize1)); - buf2=(void *) HDmalloc((unsigned)(nelmts1*msize2)); - if ( buf1==NULL || buf2==NULL){ - printf( "cannot read into memory\n" ); - goto error; - } - if (H5Aread(attr1_id,mtype1_id,buf1)<0) - goto error; - if (H5Aread(attr2_id,mtype2_id,buf2)<0) - goto error; - - /*------------------------------------------------------------------------- - * array compare - *------------------------------------------------------------------------- - */ +/*------------------------------------------------------------------------- + * print how many differences were found + *------------------------------------------------------------------------- + */ + if (print_objname(options,nfound)) + { + printf( "Attribute: <%s> and <%s>\n",name1,name2); + print_found(nfound); + } - if (options->verbose) - printf( "Attribute: <%s> and <%s>\n",name1,name2); - sprintf(name1,"%s of <%s>",name1,path1); - sprintf(name2,"%s of <%s>",name2,path2); - nfound = diff_array(buf1, - buf2, - nelmts1, - rank1, - dims1, - options, - name1, - name2, - mtype1_id, - attr1_id, - attr2_id); - - if (options->verbose && nfound) - printf("%d differences found\n", nfound ); - - if (mtype1_id && H5Tclose(mtype1_id)<0) goto error; - if (mtype2_id && H5Tclose(mtype2_id)<0) goto error; - } /*------------------------------------------------------------------------- * close @@ -231,6 +221,8 @@ int diff_attr(hid_t loc1_id, if (H5Tclose(ftype1_id)<0) goto error; if (H5Tclose(ftype2_id)<0) goto error; + if (H5Tclose(mtype1_id)<0) goto error; + if (H5Tclose(mtype2_id)<0) goto error; if (H5Sclose(space1_id)<0) goto error; if (H5Sclose(space2_id)<0) goto error; if (H5Aclose(attr1_id)<0) goto error; @@ -247,18 +239,20 @@ error: H5E_BEGIN_TRY { H5Tclose(ftype1_id); H5Tclose(ftype2_id); - H5Tclose(mtype1_id); + H5Tclose(mtype1_id); H5Tclose(mtype2_id); - H5Sclose(space1_id); + H5Sclose(space1_id); H5Sclose(space2_id); - H5Aclose(attr1_id); + H5Aclose(attr1_id); H5Aclose(attr2_id); if (buf1) HDfree(buf1); if (buf2) HDfree(buf2); } H5E_END_TRY; - return -1; + + options->err_stat=1; + return 0; } |