summaryrefslogtreecommitdiffstats
path: root/tools/lib/h5diff_attr.c
diff options
context:
space:
mode:
authorLarry Knox <lrknox@hdfgroup.org>2017-07-06 19:16:57 (GMT)
committerLarry Knox <lrknox@hdfgroup.org>2017-07-06 19:16:57 (GMT)
commit23a702e7bad93fc4f14eab07678c75d276e2d0ad (patch)
treeafb57ddaeca17021342fa09b8999c15569630e71 /tools/lib/h5diff_attr.c
parent03dbcb75918b2cbf39800d9edf5665d3471a1fee (diff)
parentc15238a38fdb3692466bc1218de4c5aeb420fdcc (diff)
downloadhdf5-23a702e7bad93fc4f14eab07678c75d276e2d0ad.zip
hdf5-23a702e7bad93fc4f14eab07678c75d276e2d0ad.tar.gz
hdf5-23a702e7bad93fc4f14eab07678c75d276e2d0ad.tar.bz2
Merge pull request #593 in HDFFV/hdf5 from hdf5_1_8_19 to 1.8/masterhdf5-1_8_19
* commit 'c15238a38fdb3692466bc1218de4c5aeb420fdcc': (153 commits) Commit changes to release version strings in README.txt and RELEASE.txt from release. Put back link targets for dynamically loaded libraries in Makefile.ams that avoid linking with libhdf5 dependencies. Some configurations failed unnecessarily to find and link with lz and lsz when these targets were removed. Update URL for obtaining source inINSTALL file. Disable building of libdynlib* dynamically loaded plugin test libraries on CYGWIN. Added known problem entry to RELEASE.txt. Set version for 1.8.19 release. Barbara updated contents of README.txt file. Moved libdynlib* plugin test libraries to noist_LT_LIBRARIES with added flag '-rpath /nowhere' to stop them being installed while keeping them from linking with libhdf5, etc. Incremented version to 1.8.19-pre1 and ran bin/release to create tar and zip files for testing. HDF5 1.8.19-pre1 released. Add RELEASE.txt entry for H5Dget_chunk_size. Remove test entries Ran bin/reconfigure after so number change. Update hl lib .so numbers: new function was added. Update RELEASE.txt: move H5DOread_chunks entry to new features, clarify entry for HDFFV-10051. Updated notes for test fixes and added bug fix for h5diff help text. Update h5vers and release scripts for 1.8.19 branch, set version to 1.8.19-pre1. Make script name consistent across product versions Update version to 1.8.19-pre1. Propagate .so number changes to Makefile.ins with bin/reconfigure. Add toolset option Update so version numbers according to the interface compatibility report. Update supported Platforms section. Remove empty sub-sections of New Features and Bugs Fixed sections. Add entries for HDFFV-10051 and HDFFV-9934 to RELEASE.txt. Correct spelling ...
Diffstat (limited to 'tools/lib/h5diff_attr.c')
-rw-r--r--tools/lib/h5diff_attr.c168
1 files changed, 79 insertions, 89 deletions
diff --git a/tools/lib/h5diff_attr.c b/tools/lib/h5diff_attr.c
index c3c9269..3018f18 100644
--- a/tools/lib/h5diff_attr.c
+++ b/tools/lib/h5diff_attr.c
@@ -5,12 +5,10 @@
* *
* 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://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have *
- * access to either file, you may request a copy from help@hdfgroup.org. *
+ * the COPYING file, which can be found at the root of the source code *
+ * distribution tree, or in https://support.hdfgroup.org/ftp/HDF5/releases. *
+ * If you do not have access to either file, you may request a copy from *
+ * help@hdfgroup.org. *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
#include "H5private.h"
@@ -93,7 +91,7 @@ static void table_attrs_free( table_attrs_t *table )
/*-------------------------------------------------------------------------
* Function: table_attr_mark_exist
*
- * Purpose: mark given attribute name to table as sign of exsit
+ * Purpose: mark given attribute name to table as sign of exist
*
* Parameter:
* - exist [IN]
@@ -106,11 +104,9 @@ static void table_attrs_free( table_attrs_t *table )
*------------------------------------------------------------------------*/
static void table_attr_mark_exist(unsigned *exist, char *name, table_attrs_t *table)
{
- size_t curr_val;
-
- match_attr_t *new_attrs;
-
if(table->nattrs == table->size) {
+ match_attr_t *new_attrs;
+
table->size = MAX(1, table->size * 2);
new_attrs = (match_attr_t *)HDrealloc(table->attrs, table->size * sizeof(match_attr_t));
if(new_attrs)
@@ -118,6 +114,8 @@ static void table_attr_mark_exist(unsigned *exist, char *name, table_attrs_t *ta
} /* end if */
if(table->nattrs < table->size) {
+ size_t curr_val;
+
curr_val = table->nattrs;
table->attrs[curr_val].exist[0] = exist[0];
table->attrs[curr_val].exist[1] = exist[1];
@@ -168,36 +166,34 @@ static herr_t build_match_list_attrs(hid_t loc1_id, hid_t loc2_id, table_attrs_t
/*--------------------------------------------------
* build the list
*/
- while (curr1 < oinfo1.num_attrs && curr2 < oinfo2.num_attrs) {
+ while(curr1 < oinfo1.num_attrs && curr2 < oinfo2.num_attrs) {
/*------------------
* open attribute1 */
- if ((attr1_id = H5Aopen_by_idx(loc1_id, ".", H5_INDEX_NAME, H5_ITER_INC,
- (hsize_t) curr1, H5P_DEFAULT, H5P_DEFAULT)) < 0)
+ if((attr1_id = H5Aopen_by_idx(loc1_id, ".", H5_INDEX_NAME, H5_ITER_INC, (hsize_t)curr1, H5P_DEFAULT, H5P_DEFAULT)) < 0)
goto error;
/* get name */
- if (H5Aget_name(attr1_id, (size_t) ATTR_NAME_MAX, name1) < 0)
+ if(H5Aget_name(attr1_id, (size_t)ATTR_NAME_MAX, name1) < 0)
goto error;
/*------------------
* open attribute2 */
- if ((attr2_id = H5Aopen_by_idx(loc2_id, ".", H5_INDEX_NAME, H5_ITER_INC,
- (hsize_t) curr2, H5P_DEFAULT, H5P_DEFAULT)) < 0)
+ if((attr2_id = H5Aopen_by_idx(loc2_id, ".", H5_INDEX_NAME, H5_ITER_INC, (hsize_t)curr2, H5P_DEFAULT, H5P_DEFAULT)) < 0)
goto error;
/* get name */
- if (H5Aget_name(attr2_id, (size_t) ATTR_NAME_MAX, name2) < 0)
+ if(H5Aget_name(attr2_id, (size_t)ATTR_NAME_MAX, name2) < 0)
goto error;
/* criteria is string compare */
cmp = HDstrcmp(name1, name2);
- if (cmp == 0) {
+ if(cmp == 0) {
infile[0] = 1;
infile[1] = 1;
table_attr_mark_exist(infile, name1, table_lp);
curr1++;
curr2++;
}
- else if (cmp < 0) {
+ else if(cmp < 0) {
infile[0] = 1;
infile[1] = 0;
table_attr_mark_exist(infile, name1, table_lp);
@@ -222,14 +218,13 @@ static herr_t build_match_list_attrs(hid_t loc1_id, hid_t loc2_id, table_attrs_t
/* list1 did not end */
infile[0] = 1;
infile[1] = 0;
- while (curr1 < oinfo1.num_attrs) {
+ while(curr1 < oinfo1.num_attrs) {
/*------------------
* open attribute1 */
- if ((attr1_id = H5Aopen_by_idx(loc1_id, ".", H5_INDEX_NAME, H5_ITER_INC,
- (hsize_t) curr1, H5P_DEFAULT, H5P_DEFAULT)) < 0)
+ if((attr1_id = H5Aopen_by_idx(loc1_id, ".", H5_INDEX_NAME, H5_ITER_INC, (hsize_t)curr1, H5P_DEFAULT, H5P_DEFAULT)) < 0)
goto error;
/* get name */
- if (H5Aget_name(attr1_id, (size_t) ATTR_NAME_MAX, name1) < 0)
+ if(H5Aget_name(attr1_id, (size_t)ATTR_NAME_MAX, name1) < 0)
goto error;
table_attr_mark_exist(infile, name1, table_lp);
@@ -244,14 +239,13 @@ static herr_t build_match_list_attrs(hid_t loc1_id, hid_t loc2_id, table_attrs_t
/* list2 did not end */
infile[0] = 0;
infile[1] = 1;
- while (curr2 < oinfo2.num_attrs) {
+ while(curr2 < oinfo2.num_attrs) {
/*------------------
* open attribute2 */
- if ((attr2_id = H5Aopen_by_idx(loc2_id, ".", H5_INDEX_NAME, H5_ITER_INC,
- (hsize_t) curr2, H5P_DEFAULT, H5P_DEFAULT)) < 0)
+ if((attr2_id = H5Aopen_by_idx(loc2_id, ".", H5_INDEX_NAME, H5_ITER_INC, (hsize_t)curr2, H5P_DEFAULT, H5P_DEFAULT)) < 0)
goto error;
/* get name */
- if (H5Aget_name(attr2_id, (size_t) ATTR_NAME_MAX, name2) < 0)
+ if(H5Aget_name(attr2_id, (size_t)ATTR_NAME_MAX, name2) < 0)
goto error;
table_attr_mark_exist(infile, name2, table_lp);
@@ -265,25 +259,22 @@ static herr_t build_match_list_attrs(hid_t loc1_id, hid_t loc2_id, table_attrs_t
/*------------------------------------------------------
* print the list
*/
- if (options->m_verbose_level == 2) {
+ if(options->m_verbose_level == 2) {
/* if '-v2' is detected */
parallel_print(" obj1 obj2\n");
parallel_print(" --------------------------------------\n");
- for (i = 0; i < (unsigned int) table_lp->nattrs; i++) {
+ for(i = 0; i < (unsigned int) table_lp->nattrs; i++) {
char c1, c2;
c1 = (table_lp->attrs[i].exist[0]) ? 'x' : ' ';
c2 = (table_lp->attrs[i].exist[1]) ? 'x' : ' ';
- parallel_print("%5c %6c %-15s\n", c1, c2,
- table_lp->attrs[i].name);
+ parallel_print("%5c %6c %-15s\n", c1, c2, table_lp->attrs[i].name);
} /* end for */
}
- if (options->m_verbose_level >= 1) {
- parallel_print(
- "Attributes status: %d common, %d only in obj1, %d only in obj2\n",
+ if(options->m_verbose_level >= 1)
+ parallel_print("Attributes status: %d common, %d only in obj1, %d only in obj2\n",
table_lp->nattrs - table_lp->nattrs_only1 - table_lp->nattrs_only2,
table_lp->nattrs_only1, table_lp->nattrs_only2);
- }
*table_out = table_lp;
@@ -331,16 +322,16 @@ hsize_t diff_attr(hid_t loc1_id,
hid_t space2_id=-1; /* space ID */
hid_t ftype1_id=-1; /* file data type ID */
hid_t ftype2_id=-1; /* file data type ID */
- int vstrtype1=0; /* ftype1 is a variable string */
- int vstrtype2=0; /* ftype2 is a variable string */
+ int vstrtype1=0; /* ftype1 is a variable string */
+ int vstrtype2=0; /* ftype2 is a variable string */
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 */
- int buf1hasdata=0; /* buffer has data */
- int buf2hasdata=0; /* buffer has data */
+ hbool_t buf1hasdata=FALSE; /* buffer has data */
+ hbool_t buf2hasdata=FALSE; /* buffer has data */
hsize_t nelmts1; /* number of elements in dataset */
int rank1; /* rank of dataset */
int rank2; /* rank of dataset */
@@ -356,39 +347,39 @@ hsize_t diff_attr(hid_t loc1_id,
int j;
table_attrs_t * match_list_attrs = NULL;
- if (build_match_list_attrs(loc1_id, loc2_id, &match_list_attrs, options) < 0)
+ if(build_match_list_attrs(loc1_id, loc2_id, &match_list_attrs, options) < 0)
goto error;
/* if detect any unique extra attr */
- if (match_list_attrs->nattrs_only1 || match_list_attrs->nattrs_only2) {
+ if(match_list_attrs->nattrs_only1 || match_list_attrs->nattrs_only2) {
/* exit will be 1 */
options->contents = 0;
}
- for (u = 0; u < (unsigned) match_list_attrs->nattrs; u++) {
- if ((match_list_attrs->attrs[u].exist[0]) && (match_list_attrs->attrs[u].exist[1])) {
+ for(u = 0; u < (unsigned)match_list_attrs->nattrs; u++) {
+ if((match_list_attrs->attrs[u].exist[0]) && (match_list_attrs->attrs[u].exist[1])) {
name1 = name2 = match_list_attrs->attrs[u].name;
/*--------------
* attribute 1 */
- if ((attr1_id = H5Aopen(loc1_id, name1, H5P_DEFAULT)) < 0)
+ if((attr1_id = H5Aopen(loc1_id, name1, H5P_DEFAULT)) < 0)
goto error;
/*--------------
* attribute 2 */
- if ((attr2_id = H5Aopen(loc2_id, name2, H5P_DEFAULT)) < 0)
+ if((attr2_id = H5Aopen(loc2_id, name2, H5P_DEFAULT)) < 0)
goto error;
/* get the datatypes */
- if ((ftype1_id = H5Aget_type(attr1_id)) < 0)
+ if((ftype1_id = H5Aget_type(attr1_id)) < 0)
goto error;
vstrtype1 = H5Tis_variable_str(ftype1_id);
- if ((ftype2_id = H5Aget_type(attr2_id)) < 0)
+ if((ftype2_id = H5Aget_type(attr2_id)) < 0)
goto error;
vstrtype2 = H5Tis_variable_str(ftype2_id);
/* no compare if either one but not both are variable string type */
if (vstrtype1 != vstrtype2) {
- if ((options->m_verbose || options->m_list_not_cmp))
+ if((options->m_verbose || options->m_list_not_cmp))
parallel_print("Not comparable: one of attribute <%s/%s> or <%s/%s> is of variable length type\n",
path1, name1, path2, name2);
options->not_cmp = 1;
@@ -404,25 +395,25 @@ hsize_t diff_attr(hid_t loc1_id,
continue;
}
- if ((mtype1_id = h5tools_get_native_type(ftype1_id)) < 0)
+ if((mtype1_id = H5Tget_native_type(ftype1_id, H5T_DIR_DEFAULT)) < 0)
goto error;
- if ((mtype2_id = h5tools_get_native_type(ftype2_id)) < 0)
+ if((mtype2_id = H5Tget_native_type(ftype2_id, H5T_DIR_DEFAULT)) < 0)
goto error;
- if ((msize1 = H5Tget_size(mtype1_id)) == 0)
+ if((msize1 = H5Tget_size(mtype1_id)) == 0)
goto error;
- if ((msize2 = H5Tget_size(mtype2_id)) == 0)
+ if((msize2 = H5Tget_size(mtype2_id)) == 0)
goto error;
/* get the dataspace */
- if ((space1_id = H5Aget_space(attr1_id)) < 0)
+ if((space1_id = H5Aget_space(attr1_id)) < 0)
goto error;
- if ((space2_id = H5Aget_space(attr2_id)) < 0)
+ if((space2_id = H5Aget_space(attr2_id)) < 0)
goto error;
/* get dimensions */
- if ((rank1 = H5Sget_simple_extent_dims(space1_id, dims1, NULL)) < 0)
+ if((rank1 = H5Sget_simple_extent_dims(space1_id, dims1, NULL)) < 0)
goto error;
- if ((rank2 = H5Sget_simple_extent_dims(space2_id, dims2, NULL)) < 0)
+ if((rank2 = H5Sget_simple_extent_dims(space2_id, dims2, NULL)) < 0)
goto error;
/*----------------------------------------------------------------------
@@ -432,23 +423,23 @@ hsize_t diff_attr(hid_t loc1_id,
/* pass dims1 and dims2 for maxdims as well since attribute's maxdims
* are always same */
- if (diff_can_type(ftype1_id, ftype2_id, rank1, rank2, dims1, dims2,
+ if(diff_can_type(ftype1_id, ftype2_id, rank1, rank2, dims1, dims2,
dims1, dims2, name1, name2, options, 0) != 1) {
- if (H5Tclose(ftype1_id) < 0)
+ if(H5Tclose(ftype1_id) < 0)
goto error;
- if (H5Tclose(ftype2_id) < 0)
+ if(H5Tclose(ftype2_id) < 0)
goto error;
- if (H5Sclose(space1_id) < 0)
+ if(H5Sclose(space1_id) < 0)
goto error;
- if (H5Sclose(space2_id) < 0)
+ if(H5Sclose(space2_id) < 0)
goto error;
- if (H5Aclose(attr1_id) < 0)
+ if(H5Aclose(attr1_id) < 0)
goto error;
- if (H5Aclose(attr2_id) < 0)
+ if(H5Aclose(attr2_id) < 0)
goto error;
- if (H5Tclose(mtype1_id) < 0)
+ if(H5Tclose(mtype1_id) < 0)
goto error;
- if (H5Tclose(mtype2_id) < 0)
+ if(H5Tclose(mtype2_id) < 0)
goto error;
continue;
@@ -458,7 +449,7 @@ hsize_t diff_attr(hid_t loc1_id,
* "upgrade" the smaller memory size
*------------------------------------------------------------------
*/
- if (FAIL == match_up_memsize(ftype1_id, ftype2_id, &mtype1_id,
+ if(FAIL == match_up_memsize(ftype1_id, ftype2_id, &mtype1_id,
&mtype2_id, &msize1, &msize2))
goto error;
@@ -467,29 +458,28 @@ hsize_t diff_attr(hid_t loc1_id,
*----------------------------------------------------------------------
*/
nelmts1 = 1;
- for (j = 0; j < rank1; j++)
+ for(j = 0; j < rank1; j++)
nelmts1 *= dims1[j];
buf1 = (void *)HDmalloc((size_t)(nelmts1 * msize1));
buf2 = (void *)HDmalloc((size_t)(nelmts1 * msize2));
- if (buf1 == NULL || buf2 == NULL) {
+ if(buf1 == NULL || buf2 == NULL) {
parallel_print("cannot read into memory\n");
goto error;
}
- if (H5Aread(attr1_id, mtype1_id, buf1) < 0) {
- parallel_print("Failed reading attribute1 %s/%s\n", path1,
- name1);
+ if(H5Aread(attr1_id, mtype1_id, buf1) < 0) {
+ parallel_print("Failed reading attribute1 %s/%s\n", path1, name1);
goto error;
}
else
- buf1hasdata = 1;
- if (H5Aread(attr2_id, mtype2_id, buf2) < 0) {
- parallel_print("Failed reading attribute2 %s/%s\n", path2,
- name2);
+ buf1hasdata = TRUE;
+
+ if(H5Aread(attr2_id, mtype2_id, buf2) < 0) {
+ parallel_print("Failed reading attribute2 %s/%s\n", path2, name2);
goto error;
}
else
- buf2hasdata = 1;
+ buf2hasdata = TRUE;
/* format output string */
HDsnprintf(np1, sizeof(np1), "%s of <%s>", name1, path1);
@@ -502,7 +492,7 @@ hsize_t diff_attr(hid_t loc1_id,
/* always print name */
/* verbose (-v) and report (-r) mode */
- if (options->m_verbose || options->m_report) {
+ if(options->m_verbose || options->m_report) {
do_print_attrname("attribute", np1, np2);
nfound = diff_array(buf1, buf2, nelmts1, (hsize_t) 0, rank1,
@@ -510,7 +500,7 @@ hsize_t diff_attr(hid_t loc1_id,
print_found(nfound);
}
/* quiet mode (-q), just count differences */
- else if (options->m_quiet) {
+ 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);
}
@@ -533,31 +523,31 @@ hsize_t diff_attr(hid_t loc1_id,
/* Free buf1 and buf2, check both VLEN-data VLEN-string to reclaim any
* VLEN memory first */
- if (TRUE == h5tools_detect_vlen(mtype1_id))
+ if(TRUE == h5tools_detect_vlen(mtype1_id))
H5Dvlen_reclaim(mtype1_id, space1_id, H5P_DEFAULT, buf1);
HDfree(buf1);
buf1 = NULL;
- if (TRUE == h5tools_detect_vlen(mtype2_id))
+ if(TRUE == h5tools_detect_vlen(mtype2_id))
H5Dvlen_reclaim(mtype2_id, space2_id, H5P_DEFAULT, buf2);
HDfree(buf2);
buf2 = NULL;
- if (H5Tclose(ftype1_id) < 0)
+ if(H5Tclose(ftype1_id) < 0)
goto error;
- if (H5Tclose(ftype2_id) < 0)
+ if(H5Tclose(ftype2_id) < 0)
goto error;
- if (H5Sclose(space1_id) < 0)
+ if(H5Sclose(space1_id) < 0)
goto error;
- if (H5Sclose(space2_id) < 0)
+ if(H5Sclose(space2_id) < 0)
goto error;
- if (H5Aclose(attr1_id) < 0)
+ if(H5Aclose(attr1_id) < 0)
goto error;
- if (H5Aclose(attr2_id) < 0)
+ if(H5Aclose(attr2_id) < 0)
goto error;
- if (H5Tclose(mtype1_id) < 0)
+ if(H5Tclose(mtype1_id) < 0)
goto error;
- if (H5Tclose(mtype2_id) < 0)
+ if(H5Tclose(mtype2_id) < 0)
goto error;
nfound_total += nfound;