summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJonathan Kim <jkm@hdfgroup.org>2009-11-30 21:25:41 (GMT)
committerJonathan Kim <jkm@hdfgroup.org>2009-11-30 21:25:41 (GMT)
commit77b493eea3b68cd7348be16488c68efb44687e2d (patch)
tree00f85743913dcc7b5455493de7ed3fefe2bc2020
parent497a6fcc857d7e11b7a5dbf9878bf4ff47a2969f (diff)
downloadhdf5-77b493eea3b68cd7348be16488c68efb44687e2d.zip
hdf5-77b493eea3b68cd7348be16488c68efb44687e2d.tar.gz
hdf5-77b493eea3b68cd7348be16488c68efb44687e2d.tar.bz2
[svn-r17938] Purpose:
Fix potential problem similar to Bug1672 (getting garbage values) Description: This will resolve the potential problem like Bug1672 when comparing attributes. It improves the performance by not calling diff_array twice. (diffing time in half). Little clean up on comment lines. Refer to the Bug fix 1672. (also svn revision 17905 on trunk) Tested on: linux32 (jam) , linux64 (almani), solaris (linew)
-rw-r--r--tools/lib/h5diff_attr.c110
1 files changed, 46 insertions, 64 deletions
diff --git a/tools/lib/h5diff_attr.c b/tools/lib/h5diff_attr.c
index 69bd44c..73a7ee7 100644
--- a/tools/lib/h5diff_attr.c
+++ b/tools/lib/h5diff_attr.c
@@ -130,9 +130,9 @@ hsize_t diff_attr(hid_t loc1_id,
goto error;
- /*-------------------------------------------------------------------------
+ /*----------------------------------------------------------------------
* check for comparable TYPE and SPACE
- *-------------------------------------------------------------------------
+ *----------------------------------------------------------------------
*/
if ( msize1 != msize2
@@ -175,9 +175,9 @@ hsize_t diff_attr(hid_t loc1_id,
}
- /*-------------------------------------------------------------------------
+ /*---------------------------------------------------------------------
* read
- *-------------------------------------------------------------------------
+ *----------------------------------------------------------------------
*/
nelmts1=1;
for (j=0; j<rank1; j++)
@@ -198,13 +198,14 @@ hsize_t diff_attr(hid_t loc1_id,
sprintf(np1,"%s of <%s>",name1,path1);
sprintf(np2,"%s of <%s>",name2,path2);
- /*-------------------------------------------------------------------------
+ /*---------------------------------------------------------------------
* array compare
- *-------------------------------------------------------------------------
+ *----------------------------------------------------------------------
*/
/* always print name */
- if (options->m_verbose)
+ /* verbose (-v) and report (-r) mode */
+ if(options->m_verbose || options->m_report)
{
do_print_objname ("attribute", np1, np2);
nfound = diff_array(buf1,
@@ -222,67 +223,48 @@ hsize_t diff_attr(hid_t loc1_id,
print_found(nfound);
}
- /* check first if we have differences */
+ /* quiet mode (-q), just count differences */
+ else if(options->m_quiet)
+ {
+ nfound = diff_array(buf1,
+ buf2,
+ nelmts1,
+ (hsize_t)0,
+ rank1,
+ dims1,
+ options,
+ np1,
+ np2,
+ mtype1_id,
+ attr1_id,
+ attr2_id);
+ }
+ /* the rest (-c, none, ...) */
else
{
- if (options->m_quiet==0)
- {
- /* shut up temporarily */
- options->m_quiet=1;
- nfound = diff_array(buf1,
- buf2,
- nelmts1,
- (hsize_t)0,
- rank1,
- dims1,
- options,
- np1,
- np2,
- mtype1_id,
- attr1_id,
- attr2_id);
- /* print again */
- options->m_quiet=0;
- if (nfound)
- {
- do_print_objname ("attribute", np1, np2);
- nfound = diff_array(buf1,
- buf2,
- nelmts1,
- (hsize_t)0,
- rank1,
- dims1,
- options,
- np1,
- np2,
- mtype1_id,
- attr1_id,
- attr2_id);
+ do_print_objname ("attribute", np1, np2);
+ nfound = diff_array(buf1,
+ buf2,
+ nelmts1,
+ (hsize_t)0,
+ rank1,
+ dims1,
+ options,
+ np1,
+ np2,
+ mtype1_id,
+ attr1_id,
+ attr2_id);
+
+ /* not comparable, no display the different number */
+ if (!options->not_cmp)
print_found(nfound);
- } /*if*/
- } /*if*/
- /* in quiet mode, just count differences */
- else
- {
- nfound = diff_array(buf1,
- buf2,
- nelmts1,
- (hsize_t)0,
- rank1,
- dims1,
- options,
- np1,
- np2,
- mtype1_id,
- attr1_id,
- attr2_id);
- } /*else quiet */
- } /*else verbose */
-
-
- /*-------------------------------------------------------------------------
+ }
+
+
+ /*----------------------------------------------------------------------
* close
- *-------------------------------------------------------------------------
+ *----------------------------------------------------------------------
*/
if (H5Tclose(ftype1_id)<0)