HDFFV-10980 - h5diff uses new ref APIs

This commit is contained in:
Allen Byrne
2019-12-19 16:29:35 -06:00
committed by David Young
parent b6b0567bdf
commit d486a9b27e
48 changed files with 1493 additions and 475 deletions

View File

@@ -2190,6 +2190,28 @@
./tools/testfiles/zerodim.ddl ./tools/testfiles/zerodim.ddl
./tools/testfiles/zerodim.h5 ./tools/testfiles/zerodim.h5
# h5dump new reference validation
./tools/testfiles/trefer_attrR.ddl
./tools/testfiles/trefer_compatR.ddl
./tools/testfiles/trefer_extR.ddl
./tools/testfiles/trefer_grpR.ddl
./tools/testfiles/trefer_obj_delR.ddl
./tools/testfiles/trefer_objR.ddl
./tools/testfiles/trefer_paramR.ddl
./tools/testfiles/trefer_reg_1dR.ddl
./tools/testfiles/trefer_regR.ddl
# h5dump and h5diff new reference files
./tools/testfiles/trefer_attr.h5
./tools/testfiles/trefer_compat.h5
./tools/testfiles/trefer_ext1.h5
./tools/testfiles/trefer_ext2.h5
./tools/testfiles/trefer_grp.h5
./tools/testfiles/trefer_obj_del.h5
./tools/testfiles/trefer_obj.h5
./tools/testfiles/trefer_param.h5
./tools/testfiles/trefer_reg_1d.h5
./tools/testfiles/trefer_reg.h5
# Expected output from h5ls tests # Expected output from h5ls tests
./tools/testfiles/nosuchfile.ls ./tools/testfiles/nosuchfile.ls
./tools/testfiles/help-1.ls ./tools/testfiles/help-1.ls

View File

@@ -391,6 +391,13 @@ New Features
Tools: Tools:
------ ------
- h5diff was updated to use the new reference APIs.
h5diff uses the new reference APIs to compare references.
Attribute references can also be compared.
(ADB - 2019/12/19, HDFFV-10980)
- h5dump and h5ls were updated to use the new reference APIs. - h5dump and h5ls were updated to use the new reference APIs.
The tools library now use the new reference APIs to inspect a The tools library now use the new reference APIs to inspect a

View File

@@ -39,6 +39,7 @@ if (NOT ONLY_SHARED_LIBS)
INTERFACE "$<INSTALL_INTERFACE:$<INSTALL_PREFIX>/include>" INTERFACE "$<INSTALL_INTERFACE:$<INSTALL_PREFIX>/include>"
) )
#target_compile_definitions(${HDF5_TOOLS_LIB_TARGET} PRIVATE H5_TOOLS_DEBUG) #target_compile_definitions(${HDF5_TOOLS_LIB_TARGET} PRIVATE H5_TOOLS_DEBUG)
#target_compile_definitions(${HDF5_TOOLS_LIB_TARGET} PRIVATE H5DIFF_DEBUG)
TARGET_C_PROPERTIES (${HDF5_TOOLS_LIB_TARGET} STATIC) TARGET_C_PROPERTIES (${HDF5_TOOLS_LIB_TARGET} STATIC)
target_link_libraries (${HDF5_TOOLS_LIB_TARGET} target_link_libraries (${HDF5_TOOLS_LIB_TARGET}
PUBLIC ${HDF5_LIB_TARGET} PUBLIC ${HDF5_LIB_TARGET}
@@ -59,6 +60,7 @@ if (BUILD_SHARED_LIBS)
target_compile_definitions(${HDF5_TOOLS_LIBSH_TARGET} target_compile_definitions(${HDF5_TOOLS_LIBSH_TARGET}
PUBLIC "H5_BUILT_AS_DYNAMIC_LIB" PUBLIC "H5_BUILT_AS_DYNAMIC_LIB"
#PRIVATE H5_TOOLS_DEBUG #PRIVATE H5_TOOLS_DEBUG
#PRIVATE H5DIFF_DEBUG
) )
TARGET_C_PROPERTIES (${HDF5_TOOLS_LIBSH_TARGET} SHARED) TARGET_C_PROPERTIES (${HDF5_TOOLS_LIBSH_TARGET} SHARED)
target_link_libraries (${HDF5_TOOLS_LIBSH_TARGET} target_link_libraries (${HDF5_TOOLS_LIBSH_TARGET}

View File

@@ -262,6 +262,7 @@ static void
build_match_list (const char *objname1, trav_info_t *info1, const char *objname2, trav_info_t *info2, build_match_list (const char *objname1, trav_info_t *info1, const char *objname2, trav_info_t *info2,
trav_table_t ** table_out, diff_opt_t *opts) trav_table_t ** table_out, diff_opt_t *opts)
{ {
H5TOOLS_ERR_INIT(int, 0)
size_t curr1 = 0; size_t curr1 = 0;
size_t curr2 = 0; size_t curr2 = 0;
unsigned infile[2]; unsigned infile[2];
@@ -274,9 +275,9 @@ build_match_list (const char *objname1, trav_info_t *info1, const char *objname2
int cmp; int cmp;
trav_table_t *table = NULL; trav_table_t *table = NULL;
size_t idx; size_t idx;
int ret_value = 0;
h5difftrace("build_match_list start\n"); H5TOOLS_PUSH_STACK();
H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "build_match_list start - errstat:%d", opts->err_stat);
/* init */ /* init */
trav_table_init(&table); trav_table_init(&table);
if (table == NULL) { if (table == NULL) {
@@ -372,7 +373,11 @@ build_match_list (const char *objname1, trav_info_t *info1, const char *objname2
done: done:
*table_out = table; *table_out = table;
h5difftrace("build_match_list finish\n");
H5TOOLS_ENDDEBUG(H5E_tools_min_dbg_id_g, "exit");
H5TOOLS_POP_STACK();
H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "build_match_list finish");
} }
@@ -399,7 +404,7 @@ trav_grp_objs(const char *path, const H5O_info_t *oinfo,
static herr_t static herr_t
trav_grp_symlinks(const char *path, const H5L_info_t *linfo, void *udata) trav_grp_symlinks(const char *path, const H5L_info_t *linfo, void *udata)
{ {
herr_t ret_value = 0; H5TOOLS_ERR_INIT(herr_t, 0)
trav_info_t *tinfo = (trav_info_t *)udata; trav_info_t *tinfo = (trav_info_t *)udata;
diff_opt_t *opts = (diff_opt_t *)tinfo->opts; diff_opt_t *opts = (diff_opt_t *)tinfo->opts;
h5tool_link_info_t lnk_info; h5tool_link_info_t lnk_info;
@@ -409,6 +414,7 @@ trav_grp_symlinks(const char *path, const H5L_info_t *linfo, void *udata)
/* init linkinfo struct */ /* init linkinfo struct */
HDmemset(&lnk_info, 0, sizeof(h5tool_link_info_t)); HDmemset(&lnk_info, 0, sizeof(h5tool_link_info_t));
H5TOOLS_PUSH_STACK();
if (!opts->follow_links) { if (!opts->follow_links) {
trav_info_visit_lnk(path, linfo, tinfo); trav_info_visit_lnk(path, linfo, tinfo);
HGOTO_DONE(0); HGOTO_DONE(0);
@@ -489,6 +495,8 @@ trav_grp_symlinks(const char *path, const H5L_info_t *linfo, void *udata)
done: done:
if (lnk_info.trg_path) if (lnk_info.trg_path)
HDfree(lnk_info.trg_path); HDfree(lnk_info.trg_path);
H5TOOLS_ENDDEBUG(H5E_tools_min_dbg_id_g, "exit");
H5TOOLS_POP_STACK();
return ret_value; return ret_value;
} }
@@ -509,7 +517,7 @@ h5diff(const char *fname1,
const char *objname2, const char *objname2,
diff_opt_t *opts) diff_opt_t *opts)
{ {
int ret_value = 0; H5TOOLS_ERR_INIT(int, 0)
hid_t file1_id = -1; hid_t file1_id = -1;
hid_t file2_id = -1; hid_t file2_id = -1;
char filenames[2][MAX_FILENAME]; char filenames[2][MAX_FILENAME];
@@ -541,7 +549,8 @@ h5diff(const char *fname1,
/* list for common objects */ /* list for common objects */
trav_table_t *match_list = NULL; trav_table_t *match_list = NULL;
h5difftrace("h5diff start\n"); H5TOOLS_PUSH_STACK();
H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "h5diff start");
/* init filenames */ /* init filenames */
HDmemset(filenames, 0, MAX_FILENAME * 2); HDmemset(filenames, 0, MAX_FILENAME * 2);
/* init link info struct */ /* init link info struct */
@@ -566,13 +575,14 @@ h5diff(const char *fname1,
parallel_print("h5diff: <%s>: unable to open file\n", fname1); parallel_print("h5diff: <%s>: unable to open file\n", fname1);
H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "<%s>: unable to open file\n", fname1); H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "<%s>: unable to open file\n", fname1);
} /* end if */ } /* end if */
H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "file1_id = %s", fname1);
/* open file 2 */ /* open file 2 */
if((file2_id = h5tools_fopen(fname2, H5F_ACC_RDONLY, H5P_DEFAULT, NULL, NULL, (size_t)0)) < 0) { if((file2_id = h5tools_fopen(fname2, H5F_ACC_RDONLY, H5P_DEFAULT, NULL, NULL, (size_t)0)) < 0) {
parallel_print("h5diff: <%s>: unable to open file\n", fname2); parallel_print("h5diff: <%s>: unable to open file\n", fname2);
H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "<%s>: unable to open file\n", fname2); H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "<%s>: unable to open file\n", fname2);
} /* end if */ } /* end if */
H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "file2_id = %s", fname2);
/*------------------------------------------------------------------------- /*-------------------------------------------------------------------------
* Initialize the info structs * Initialize the info structs
@@ -581,7 +591,7 @@ h5diff(const char *fname1,
trav_info_init(fname1, file1_id, &info1_obj); trav_info_init(fname1, file1_id, &info1_obj);
trav_info_init(fname2, file2_id, &info2_obj); trav_info_init(fname2, file2_id, &info2_obj);
h5difftrace("trav_info_init initialized\n"); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "trav_info_init initialized");
/* if any object is specified */ /* if any object is specified */
if (objname1) { if (objname1) {
/* make the given object1 fullpath, start with "/" */ /* make the given object1 fullpath, start with "/" */
@@ -622,7 +632,7 @@ h5diff(const char *fname1,
/*---------------------------------------------------------- /*----------------------------------------------------------
* check if obj1 is root, group, single object or symlink * check if obj1 is root, group, single object or symlink
*/ */
h5difftrace("h5diff check if obj1 is root, group, single object or symlink\n"); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "h5diff check if obj1=%s is root, group, single object or symlink", obj1fullname);
if(!HDstrcmp(obj1fullname, "/")) { if(!HDstrcmp(obj1fullname, "/")) {
obj1type = H5TRAV_TYPE_GROUP; obj1type = H5TRAV_TYPE_GROUP;
} }
@@ -672,7 +682,7 @@ h5diff(const char *fname1,
/*---------------------------------------------------------- /*----------------------------------------------------------
* check if obj2 is root, group, single object or symlink * check if obj2 is root, group, single object or symlink
*/ */
h5difftrace("h5diff check if obj2 is root, group, single object or symlink\n"); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "h5diff check if obj2=%s is root, group, single object or symlink", obj2fullname);
if(!HDstrcmp(obj2fullname, "/")) { if(!HDstrcmp(obj2fullname, "/")) {
obj2type = H5TRAV_TYPE_GROUP; obj2type = H5TRAV_TYPE_GROUP;
} }
@@ -721,7 +731,7 @@ h5diff(const char *fname1,
} }
/* if no object specified */ /* if no object specified */
else { else {
h5difftrace("h5diff no object specified\n"); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "h5diff no object specified");
/* set root group */ /* set root group */
obj1fullname = (char*)HDstrdup("/"); obj1fullname = (char*)HDstrdup("/");
obj1type = H5TRAV_TYPE_GROUP; obj1type = H5TRAV_TYPE_GROUP;
@@ -729,7 +739,7 @@ h5diff(const char *fname1,
obj2type = H5TRAV_TYPE_GROUP; obj2type = H5TRAV_TYPE_GROUP;
} }
h5diffdebug2("get any symbolic links info - errstat:%d\n", opts->err_stat); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "get any symbolic links info - errstat:%d", opts->err_stat);
/* get any symbolic links info */ /* get any symbolic links info */
l_ret1 = H5tools_get_symlink_info(file1_id, obj1fullname, &trg_linfo1, opts->follow_links); l_ret1 = H5tools_get_symlink_info(file1_id, obj1fullname, &trg_linfo1, opts->follow_links);
l_ret2 = H5tools_get_symlink_info(file2_id, obj2fullname, &trg_linfo2, opts->follow_links); l_ret2 = H5tools_get_symlink_info(file2_id, obj2fullname, &trg_linfo2, opts->follow_links);
@@ -745,10 +755,10 @@ h5diff(const char *fname1,
/*------------------------------- /*-------------------------------
* check symbolic link (object1) * check symbolic link (object1)
*/ */
h5difftrace("h5diff check symbolic link (object1)\n"); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "h5diff check symbolic link (object1)");
/* dangling link */ /* dangling link */
if (l_ret1 == 0) { if (l_ret1 == 0) {
h5difftrace("h5diff ... dangling link\n"); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "h5diff ... dangling link");
if (opts->no_dangle_links) { if (opts->no_dangle_links) {
/* treat dangling link as error */ /* treat dangling link as error */
if(opts->m_verbose) if(opts->m_verbose)
@@ -771,25 +781,25 @@ h5diff(const char *fname1,
} }
else if(l_ret1 != 2) { /* symbolic link */ else if(l_ret1 != 2) { /* symbolic link */
obj1type = (h5trav_type_t)trg_linfo1.trg_type; obj1type = (h5trav_type_t)trg_linfo1.trg_type;
h5difftrace("h5diff ... ... trg_linfo1.trg_type == H5L_TYPE_HARD\n"); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "h5diff ... ... trg_linfo1.trg_type == H5L_TYPE_HARD");
if (info1_lp != NULL) { if (info1_lp != NULL) {
size_t idx = info1_lp->nused - 1; size_t idx = info1_lp->nused - 1;
h5difftrace("h5diff ... ... ... info1_obj not null\n"); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "h5diff ... ... ... info1_obj not null");
info1_lp->paths[idx].type = (h5trav_type_t)trg_linfo1.trg_type; info1_lp->paths[idx].type = (h5trav_type_t)trg_linfo1.trg_type;
info1_lp->paths[idx].objno = trg_linfo1.objno; info1_lp->paths[idx].objno = trg_linfo1.objno;
info1_lp->paths[idx].fileno = trg_linfo1.fileno; info1_lp->paths[idx].fileno = trg_linfo1.fileno;
} }
h5difftrace("h5diff check symbolic link (object1) finished\n"); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "h5diff check symbolic link (object1) finished");
} }
/*------------------------------- /*-------------------------------
* check symbolic link (object2) * check symbolic link (object2)
*/ */
h5difftrace("h5diff check symbolic link (object2)\n"); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "h5diff check symbolic link (object2)");
/* dangling link */ /* dangling link */
if (l_ret2 == 0) { if (l_ret2 == 0) {
h5difftrace("h5diff ... dangling link\n"); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "h5diff ... dangling link");
if (opts->no_dangle_links) { if (opts->no_dangle_links) {
/* treat dangling link as error */ /* treat dangling link as error */
if(opts->m_verbose) if(opts->m_verbose)
@@ -815,12 +825,12 @@ h5diff(const char *fname1,
if (info2_lp != NULL) { if (info2_lp != NULL) {
size_t idx = info2_lp->nused - 1; size_t idx = info2_lp->nused - 1;
h5difftrace("h5diff ... ... ... info2_obj not null\n"); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "h5diff ... ... ... info2_obj not null");
info2_lp->paths[idx].type = (h5trav_type_t)trg_linfo2.trg_type; info2_lp->paths[idx].type = (h5trav_type_t)trg_linfo2.trg_type;
info2_lp->paths[idx].objno = trg_linfo2.objno; info2_lp->paths[idx].objno = trg_linfo2.objno;
info2_lp->paths[idx].fileno = trg_linfo2.fileno; info2_lp->paths[idx].fileno = trg_linfo2.fileno;
} }
h5difftrace("h5diff check symbolic link (object1) finished\n"); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "h5diff check symbolic link (object1) finished");
} }
} /* end of if follow symlinks */ } /* end of if follow symlinks */
@@ -832,7 +842,7 @@ h5diff(const char *fname1,
*/ */
if(!(opts->m_verbose || opts->m_report)) { if(!(opts->m_verbose || opts->m_report)) {
h5difftrace("h5diff NOT (opts->m_verbose || opts->m_report)\n"); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "h5diff NOT (opts->m_verbose || opts->m_report)");
/* if no danglink links */ /* if no danglink links */
if (l_ret1 > 0 && l_ret2 > 0) if (l_ret1 > 0 && l_ret2 > 0)
if (h5tools_is_obj_same(file1_id, obj1fullname, file2_id, obj2fullname) != 0) if (h5tools_is_obj_same(file1_id, obj1fullname, file2_id, obj2fullname) != 0)
@@ -841,7 +851,7 @@ h5diff(const char *fname1,
both_objs_grp = (obj1type == H5TRAV_TYPE_GROUP && obj2type == H5TRAV_TYPE_GROUP); both_objs_grp = (obj1type == H5TRAV_TYPE_GROUP && obj2type == H5TRAV_TYPE_GROUP);
if (both_objs_grp) { if (both_objs_grp) {
h5difftrace("h5diff both_objs_grp TRUE\n"); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "h5diff both_objs_grp TRUE");
/* /*
* traverse group1 * traverse group1
*/ */
@@ -870,7 +880,7 @@ h5diff(const char *fname1,
} /* end if */ } /* end if */
info2_lp = info2_grp; info2_lp = info2_grp;
} }
h5diffdebug2("groups traversed - errstat:%d\n", opts->err_stat); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "groups traversed - errstat:%d", opts->err_stat);
#ifdef H5_HAVE_PARALLEL #ifdef H5_HAVE_PARALLEL
if(g_Parallel) { if(g_Parallel) {
@@ -890,8 +900,10 @@ h5diff(const char *fname1,
} /* end if */ } /* end if */
#endif #endif
H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "build_match_list next - errstat:%d", opts->err_stat);
/* process the objects */ /* process the objects */
build_match_list (obj1fullname, info1_lp, obj2fullname, info2_lp, &match_list, opts); build_match_list (obj1fullname, info1_lp, obj2fullname, info2_lp, &match_list, opts);
H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "build_match_list finished - errstat:%d", opts->err_stat);
if (both_objs_grp) { if (both_objs_grp) {
/*------------------------------------------------------ /*------------------------------------------------------
* print the list * print the list
@@ -915,6 +927,7 @@ h5diff(const char *fname1,
parallel_print ("\n"); parallel_print ("\n");
} /* end if */ } /* end if */
} }
H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "diff_match next - errstat:%d", opts->err_stat);
nfound = diff_match(file1_id, obj1fullname, info1_lp, nfound = diff_match(file1_id, obj1fullname, info1_lp,
file2_id, obj2fullname, info2_lp, file2_id, obj2fullname, info2_lp,
match_list, opts); match_list, opts);
@@ -957,8 +970,10 @@ done:
H5Fclose(file2_id); H5Fclose(file2_id);
} H5E_END_TRY; } H5E_END_TRY;
h5difftrace("h5diff finish\n"); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "h5diff finish - errstat:%d", opts->err_stat);
H5TOOLS_ENDDEBUG(H5E_tools_min_dbg_id_g, "exit");
H5TOOLS_POP_STACK();
return nfound; return nfound;
} }
@@ -985,9 +1000,9 @@ diff_match(hid_t file1_id, const char *grp1, trav_info_t *info1,
hid_t file2_id, const char *grp2, trav_info_t *info2, hid_t file2_id, const char *grp2, trav_info_t *info2,
trav_table_t *table, diff_opt_t *opts) trav_table_t *table, diff_opt_t *opts)
{ {
H5TOOLS_ERR_INIT(int, opts->err_stat)
hsize_t nfound = 0; hsize_t nfound = 0;
unsigned i; unsigned i;
int ret_value = opts->err_stat;
const char *grp1_path = ""; const char *grp1_path = "";
const char *grp2_path = ""; const char *grp2_path = "";
char *obj1_fullpath = NULL; char *obj1_fullpath = NULL;
@@ -996,7 +1011,8 @@ diff_match(hid_t file1_id, const char *grp1, trav_info_t *info1,
size_t idx1 = 0; size_t idx1 = 0;
size_t idx2 = 0; size_t idx2 = 0;
h5difftrace("diff_match start\n"); H5TOOLS_PUSH_STACK();
H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "diff_match start - errstat:%d", opts->err_stat);
/* /*
* if not root, prepare object name to be pre-appended to group path to * if not root, prepare object name to be pre-appended to group path to
* make full path * make full path
@@ -1049,7 +1065,7 @@ diff_match(hid_t file1_id, const char *grp1, trav_info_t *info1,
#endif #endif
for(i = 0; i < table->nobjs; i++) { for(i = 0; i < table->nobjs; i++) {
h5diffdebug3("diff for common objects[%d] - errstat:%d\n", i, opts->err_stat); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "diff for common objects[%d] - errstat:%d", i, opts->err_stat);
if(table->objs[i].flags[0] && table->objs[i].flags[1]) { if(table->objs[i].flags[0] && table->objs[i].flags[1]) {
/* make full path for obj1 */ /* make full path for obj1 */
#ifdef H5_HAVE_ASPRINTF #ifdef H5_HAVE_ASPRINTF
@@ -1066,7 +1082,7 @@ diff_match(hid_t file1_id, const char *grp1, trav_info_t *info1,
HDstrcat(obj1_fullpath, table->objs[i].name); HDstrcat(obj1_fullpath, table->objs[i].name);
} }
#endif /* H5_HAVE_ASPRINTF */ #endif /* H5_HAVE_ASPRINTF */
h5diffdebug2("diff_match path1 - %s\n", obj1_fullpath); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "diff_match path1 - %s", obj1_fullpath);
/* make full path for obj2 */ /* make full path for obj2 */
#ifdef H5_HAVE_ASPRINTF #ifdef H5_HAVE_ASPRINTF
@@ -1083,7 +1099,7 @@ diff_match(hid_t file1_id, const char *grp1, trav_info_t *info1,
HDstrcat(obj2_fullpath, table->objs[i].name); HDstrcat(obj2_fullpath, table->objs[i].name);
} }
#endif /* H5_HAVE_ASPRINTF */ #endif /* H5_HAVE_ASPRINTF */
h5diffdebug2("diff_match path2 - %s\n", obj2_fullpath); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "diff_match path2 - %s", obj2_fullpath);
/* get index to figure out type of the object in file1 */ /* get index to figure out type of the object in file1 */
while(info1->paths[idx1].path && (HDstrcmp(obj1_fullpath, info1->paths[idx1].path) != 0)) while(info1->paths[idx1].path && (HDstrcmp(obj1_fullpath, info1->paths[idx1].path) != 0))
@@ -1099,6 +1115,7 @@ diff_match(hid_t file1_id, const char *grp1, trav_info_t *info1,
opts->cmn_objs = 1; opts->cmn_objs = 1;
if(!g_Parallel) { if(!g_Parallel) {
H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "diff paths - errstat:%d", opts->err_stat);
nfound += diff(file1_id, obj1_fullpath, nfound += diff(file1_id, obj1_fullpath,
file2_id, obj2_fullpath, file2_id, obj2_fullpath,
opts, &argdata); opts, &argdata);
@@ -1107,7 +1124,7 @@ diff_match(hid_t file1_id, const char *grp1, trav_info_t *info1,
else { else {
int workerFound = 0; int workerFound = 0;
h5difftrace("Beginning of big else block\n"); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "Beginning of big else block");
/* We're in parallel mode */ /* We're in parallel mode */
/* Since the data type of diff value is hsize_t which can /* Since the data type of diff value is hsize_t which can
* be arbitary large such that there is no MPI type that * be arbitary large such that there is no MPI type that
@@ -1261,7 +1278,7 @@ diff_match(hid_t file1_id, const char *grp1, trav_info_t *info1,
HDfree(obj2_fullpath); HDfree(obj2_fullpath);
} /* end if */ } /* end if */
} /* end for */ } /* end for */
h5diffdebug2("done with for loop - errstat:%d\n", opts->err_stat); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "done with for loop - errstat:%d", opts->err_stat);
#ifdef H5_HAVE_PARALLEL #ifdef H5_HAVE_PARALLEL
if(g_Parallel) { if(g_Parallel) {
@@ -1338,7 +1355,7 @@ diff_match(hid_t file1_id, const char *grp1, trav_info_t *info1,
/* Print any final data waiting in our queue */ /* Print any final data waiting in our queue */
print_incoming_data(); print_incoming_data();
} /* end if */ } /* end if */
h5difftrace("done with if block\n"); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "done with if block");
HDfree(workerTasks); HDfree(workerTasks);
} }
@@ -1349,8 +1366,11 @@ diff_match(hid_t file1_id, const char *grp1, trav_info_t *info1,
/* free table */ /* free table */
if (table) if (table)
trav_table_free(table); trav_table_free(table);
h5diffdebug2("diff_match finish:%d\n", nfound);
H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "diff_match finish diffs=%d - errstat:%d", nfound, opts->err_stat);
H5TOOLS_ENDDEBUG(H5E_tools_min_dbg_id_g, "exit");
H5TOOLS_POP_STACK();
return nfound; return nfound;
} }
@@ -1376,14 +1396,14 @@ diff(hid_t file1_id,
diff_opt_t * opts, diff_opt_t * opts,
diff_args_t *argdata) diff_args_t *argdata)
{ {
int ret_value = opts->err_stat; H5TOOLS_ERR_INIT(int, opts->err_stat)
int status = -1; int status = -1;
hid_t dset1_id = -1; hid_t dset1_id = H5I_INVALID_HID;
hid_t dset2_id = -1; hid_t dset2_id = H5I_INVALID_HID;
hid_t type1_id = -1; hid_t type1_id = H5I_INVALID_HID;
hid_t type2_id = -1; hid_t type2_id = H5I_INVALID_HID;
hid_t grp1_id = -1; hid_t grp1_id = H5I_INVALID_HID;
hid_t grp2_id = -1; hid_t grp2_id = H5I_INVALID_HID;
hbool_t is_dangle_link1 = FALSE; hbool_t is_dangle_link1 = FALSE;
hbool_t is_dangle_link2 = FALSE; hbool_t is_dangle_link2 = FALSE;
hbool_t is_hard_link = FALSE; hbool_t is_hard_link = FALSE;
@@ -1394,7 +1414,8 @@ diff(hid_t file1_id,
h5tool_link_info_t linkinfo1; h5tool_link_info_t linkinfo1;
h5tool_link_info_t linkinfo2; h5tool_link_info_t linkinfo2;
h5difftrace("diff start\n"); H5TOOLS_PUSH_STACK();
H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "diff start - errstat:%d", opts->err_stat);
/*init link info struct */ /*init link info struct */
HDmemset(&linkinfo1, 0, sizeof(h5tool_link_info_t)); HDmemset(&linkinfo1, 0, sizeof(h5tool_link_info_t));
@@ -1414,6 +1435,7 @@ diff(hid_t file1_id,
* check dangling links for path1 and path2 * check dangling links for path1 and path2
*/ */
H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "diff links");
/* target object1 - get type and name */ /* target object1 - get type and name */
if ((status = H5tools_get_symlink_info(file1_id, path1, &linkinfo1, opts->follow_links)) < 0) if ((status = H5tools_get_symlink_info(file1_id, path1, &linkinfo1, opts->follow_links)) < 0)
H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "H5tools_get_symlink_info failed"); H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "H5tools_get_symlink_info failed");
@@ -1462,6 +1484,7 @@ diff(hid_t file1_id,
} }
/* if objects are not the same type */ /* if objects are not the same type */
if (argdata->type[0] != argdata->type[1]) { if (argdata->type[0] != argdata->type[1]) {
H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "diff objects are not the same");
if (opts->m_verbose||opts->m_list_not_cmp) { if (opts->m_verbose||opts->m_list_not_cmp) {
parallel_print("Not comparable: <%s> is of type %s and <%s> is of type %s\n", parallel_print("Not comparable: <%s> is of type %s and <%s> is of type %s\n",
path1, get_type(argdata->type[0]), path1, get_type(argdata->type[0]),
@@ -1485,7 +1508,7 @@ diff(hid_t file1_id,
* Perform this to match the outputs as bypassing. * Perform this to match the outputs as bypassing.
*/ */
if (argdata->is_same_trgobj) { if (argdata->is_same_trgobj) {
h5difftrace("argdata->is_same_trgobj\n"); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "argdata->is_same_trgobj");
is_hard_link = (object_type == H5TRAV_TYPE_DATASET || is_hard_link = (object_type == H5TRAV_TYPE_DATASET ||
object_type == H5TRAV_TYPE_NAMED_DATATYPE || object_type == H5TRAV_TYPE_NAMED_DATATYPE ||
object_type == H5TRAV_TYPE_GROUP); object_type == H5TRAV_TYPE_GROUP);
@@ -1533,6 +1556,7 @@ diff(hid_t file1_id,
*---------------------------------------------------------------------- *----------------------------------------------------------------------
*/ */
case H5TRAV_TYPE_DATASET: case H5TRAV_TYPE_DATASET:
H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "diff object type H5TRAV_TYPE_DATASET - errstat:%d", opts->err_stat);
if((dset1_id = H5Dopen2(file1_id, path1, H5P_DEFAULT)) < 0) if((dset1_id = H5Dopen2(file1_id, path1, H5P_DEFAULT)) < 0)
H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "H5Dopen2 failed"); H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "H5Dopen2 failed");
if((dset2_id = H5Dopen2(file2_id, path2, H5P_DEFAULT)) < 0) if((dset2_id = H5Dopen2(file2_id, path2, H5P_DEFAULT)) < 0)
@@ -1540,6 +1564,7 @@ diff(hid_t file1_id,
/* verbose (-v) and report (-r) mode */ /* verbose (-v) and report (-r) mode */
if(opts->m_verbose || opts->m_report) { if(opts->m_verbose || opts->m_report) {
do_print_objname("dataset", path1, path2, opts); do_print_objname("dataset", path1, path2, opts);
H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "call diff_dataset 1:%s 2:%s ", path1, path2);
nfound = diff_dataset(file1_id, file2_id, path1, path2, opts); nfound = diff_dataset(file1_id, file2_id, path1, path2, opts);
print_found(nfound); print_found(nfound);
} }
@@ -1556,7 +1581,7 @@ diff(hid_t file1_id,
print_found(nfound); print_found(nfound);
} }
} }
h5diffdebug2("diff after dataset:%d\n", nfound); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "diff after dataset:%d - errstat:%d", nfound, opts->err_stat);
/*--------------------------------------------------------- /*---------------------------------------------------------
* compare attributes * compare attributes
@@ -1564,9 +1589,10 @@ diff(hid_t file1_id,
* referenced object * referenced object
*--------------------------------------------------------- *---------------------------------------------------------
*/ */
if(path1) if(path1) {
H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "call diff_attr 1:%s 2:%s ", path1, path2);
nfound += diff_attr(dset1_id, dset2_id, path1, path2, opts); nfound += diff_attr(dset1_id, dset2_id, path1, path2, opts);
}
if(H5Dclose(dset1_id) < 0) if(H5Dclose(dset1_id) < 0)
H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "H5Dclose failed"); H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "H5Dclose failed");
@@ -1579,6 +1605,7 @@ diff(hid_t file1_id,
*---------------------------------------------------------------------- *----------------------------------------------------------------------
*/ */
case H5TRAV_TYPE_NAMED_DATATYPE: case H5TRAV_TYPE_NAMED_DATATYPE:
H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "H5TRAV_TYPE_NAMED_DATATYPE 1:%s 2:%s ", path1, path2);
if((type1_id = H5Topen2(file1_id, path1, H5P_DEFAULT)) < 0) if((type1_id = H5Topen2(file1_id, path1, H5P_DEFAULT)) < 0)
H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "H5Topen2 failed"); H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "H5Topen2 failed");
if((type2_id = H5Topen2(file2_id, path2, H5P_DEFAULT)) < 0) if((type2_id = H5Topen2(file2_id, path2, H5P_DEFAULT)) < 0)
@@ -1603,8 +1630,10 @@ diff(hid_t file1_id,
* referenced object * referenced object
*----------------------------------------------------------------- *-----------------------------------------------------------------
*/ */
if(path1) if(path1) {
H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "call diff_attr 1:%s 2:%s ", path1, path2);
nfound += diff_attr(type1_id, type2_id, path1, path2, opts); nfound += diff_attr(type1_id, type2_id, path1, path2, opts);
}
if(H5Tclose(type1_id) < 0) if(H5Tclose(type1_id) < 0)
H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "H5Tclose failed"); H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "H5Tclose failed");
@@ -1617,6 +1646,7 @@ diff(hid_t file1_id,
*---------------------------------------------------------------------- *----------------------------------------------------------------------
*/ */
case H5TRAV_TYPE_GROUP: case H5TRAV_TYPE_GROUP:
H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "H5TRAV_TYPE_GROUP 1:%s 2:%s ", path1, path2);
if(print_objname(opts, nfound)) if(print_objname(opts, nfound))
do_print_objname("group", path1, path2, opts); do_print_objname("group", path1, path2, opts);
@@ -1635,8 +1665,10 @@ diff(hid_t file1_id,
* referenced object * referenced object
*----------------------------------------------------------------- *-----------------------------------------------------------------
*/ */
if(path1) if(path1) {
H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "call diff_attr 1:%s 2:%s ", path1, path2);
nfound += diff_attr(grp1_id, grp2_id, path1, path2, opts); nfound += diff_attr(grp1_id, grp2_id, path1, path2, opts);
}
if(H5Gclose(grp1_id) < 0) if(H5Gclose(grp1_id) < 0)
H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "H5Gclose failed"); H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "H5Gclose failed");
@@ -1651,6 +1683,7 @@ diff(hid_t file1_id,
*/ */
case H5TRAV_TYPE_LINK: case H5TRAV_TYPE_LINK:
{ {
H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "H5TRAV_TYPE_LINK 1:%s 2:%s ", path1, path2);
status = HDstrcmp(linkinfo1.trg_path, linkinfo2.trg_path); status = HDstrcmp(linkinfo1.trg_path, linkinfo2.trg_path);
/* if the target link name is not same then the links are "different" */ /* if the target link name is not same then the links are "different" */
@@ -1672,6 +1705,7 @@ diff(hid_t file1_id,
*/ */
case H5TRAV_TYPE_UDLINK: case H5TRAV_TYPE_UDLINK:
{ {
H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "H5TRAV_TYPE_UDLINK 1:%s 2:%s ", path1, path2);
/* Only external links will have a query function registered */ /* Only external links will have a query function registered */
if(linkinfo1.linfo.type == H5L_TYPE_EXTERNAL && linkinfo2.linfo.type == H5L_TYPE_EXTERNAL) { if(linkinfo1.linfo.type == H5L_TYPE_EXTERNAL && linkinfo2.linfo.type == H5L_TYPE_EXTERNAL) {
/* If the buffers are the same size, compare them */ /* If the buffers are the same size, compare them */
@@ -1772,8 +1806,10 @@ done:
/* enable error reporting */ /* enable error reporting */
} H5E_END_TRY; } H5E_END_TRY;
h5diffdebug3("diff finish:%d - errstat:%d\n", nfound, opts->err_stat); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "diff finish:%d - errstat:%d", nfound, opts->err_stat);
H5TOOLS_ENDDEBUG(H5E_tools_min_dbg_id_g, "exit");
H5TOOLS_POP_STACK();
return nfound; return nfound;
} }

View File

@@ -71,7 +71,7 @@ typedef struct {
hsize_t count; /* count value */ hsize_t count; /* count value */
hbool_t follow_links; /* follow symbolic links */ hbool_t follow_links; /* follow symbolic links */
int no_dangle_links; /* return error when find dangling link */ int no_dangle_links; /* return error when find dangling link */
int err_stat; /* an error ocurred (1, error, 0, no error) */ int err_stat; /* an error ocurred (2, error, 1, differences, 0, no error) */
int cmn_objs; /* do we have common objects */ int cmn_objs; /* do we have common objects */
int not_cmp; /* are the objects comparable */ int not_cmp; /* are the objects comparable */
int contents; /* equal contents */ int contents; /* equal contents */
@@ -165,6 +165,13 @@ int diff_can_type( hid_t f_type1, /* file data type */
diff_opt_t *opts, diff_opt_t *opts,
int is_compound); int is_compound);
hsize_t diff_attr_data(hid_t attr1_id,
hid_t attr2_id,
const char *attr1_name,
const char *attr2_name,
const char *path1,
const char *path2,
diff_opt_t *opts);
hsize_t diff_attr(hid_t loc1_id, hsize_t diff_attr(hid_t loc1_id,
hid_t loc2_id, hid_t loc2_id,

View File

@@ -17,6 +17,8 @@
#include "h5diff.h" #include "h5diff.h"
#include "ph5diff.h" #include "ph5diff.h"
#define ATTR_NAME_MAX 255
/*------------------------------------------------------------------------- /*-------------------------------------------------------------------------
* printf formatting * printf formatting
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
@@ -273,6 +275,7 @@ hsize_t diff_array(
hid_t container1_id, hid_t container1_id,
hid_t container2_id) /* dataset where the reference came from*/ hid_t container2_id) /* dataset where the reference came from*/
{ {
H5TOOLS_ERR_INIT(int, 0)
hsize_t nfound = 0; /* number of differences found */ hsize_t nfound = 0; /* number of differences found */
size_t size; /* size of datum */ size_t size; /* size of datum */
unsigned char *mem1 = (unsigned char*) _mem1; unsigned char *mem1 = (unsigned char*) _mem1;
@@ -285,7 +288,8 @@ hsize_t diff_array(
mcomp_t members; mcomp_t members;
H5T_class_t type_class; H5T_class_t type_class;
h5diffdebug2("diff_array start - errstat:%d\n", opts->err_stat); H5TOOLS_PUSH_STACK();
H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "diff_array start - errstat:%d", opts->err_stat);
/* get the size. */ /* get the size. */
size = H5Tget_size(m_type); size = H5Tget_size(m_type);
type_class = H5Tget_class(m_type); type_class = H5Tget_class(m_type);
@@ -310,6 +314,7 @@ hsize_t diff_array(
pos[j] = 0; pos[j] = 0;
} }
H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "diff_array type_class:%d", type_class);
switch (type_class) { switch (type_class) {
case H5T_NO_CLASS: case H5T_NO_CLASS:
case H5T_TIME: case H5T_TIME:
@@ -370,6 +375,7 @@ hsize_t diff_array(
case H5T_REFERENCE: case H5T_REFERENCE:
HDmemset(&members, 0, sizeof(mcomp_t)); HDmemset(&members, 0, sizeof(mcomp_t));
get_member_types(m_type, &members); get_member_types(m_type, &members);
H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "call diff_datum nelmts:%d - errstat:%d", nelmts, opts->err_stat);
for (i = 0; i < nelmts; i++) { for (i = 0; i < nelmts; i++) {
nfound += diff_datum(mem1 + i * size, mem2 + i * size, m_type, i, rank, dims, acc, pos, opts, nfound += diff_datum(mem1 + i * size, mem2 + i * size, m_type, i, rank, dims, acc, pos, opts,
name1, name2, container1_id, container2_id, &ph, &members); name1, name2, container1_id, container2_id, &ph, &members);
@@ -378,8 +384,10 @@ hsize_t diff_array(
} /* i */ } /* i */
close_member_types(&members); close_member_types(&members);
} /* switch */ } /* switch */
h5diffdebug3("diff_array finish:%d - errstat:%d\n", nfound, opts->err_stat); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "diff_array finish:%d - errstat:%d", nfound, opts->err_stat);
H5TOOLS_ENDDEBUG(H5E_tools_min_dbg_id_g, "exit: %d", nfound);
H5TOOLS_POP_STACK();
return nfound; return nfound;
} }
@@ -433,6 +441,7 @@ static hsize_t diff_datum(
int *ph, /*print header */ int *ph, /*print header */
mcomp_t *members) /*compound members */ mcomp_t *members) /*compound members */
{ {
H5TOOLS_ERR_INIT(hsize_t, opts->err_stat)
unsigned char *mem1 = (unsigned char*) _mem1; unsigned char *mem1 = (unsigned char*) _mem1;
unsigned char *mem2 = (unsigned char*) _mem2; unsigned char *mem2 = (unsigned char*) _mem2;
size_t u; size_t u;
@@ -447,11 +456,11 @@ static hsize_t diff_datum(
hbool_t iszero1; hbool_t iszero1;
hbool_t iszero2; hbool_t iszero2;
hsize_t nfound = 0; /* differences found */ hsize_t nfound = 0; /* differences found */
hsize_t ret_value = opts->err_stat;
double per; double per;
hbool_t both_zero; hbool_t both_zero;
h5difftrace("diff_datum start\n"); H5TOOLS_PUSH_STACK();
H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "diff_datum start - errstat:%d", opts->err_stat);
type_size = H5Tget_size(m_type); type_size = H5Tget_size(m_type);
type_class = H5Tget_class(m_type); type_class = H5Tget_class(m_type);
@@ -480,7 +489,7 @@ static hsize_t diff_datum(
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
case H5T_COMPOUND: case H5T_COMPOUND:
h5difftrace("diff_datum H5T_COMPOUND\n"); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "diff_datum H5T_COMPOUND");
{ {
hid_t memb_type = -1; hid_t memb_type = -1;
nmembs = members->n; nmembs = members->n;
@@ -500,7 +509,7 @@ static hsize_t diff_datum(
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
case H5T_STRING: case H5T_STRING:
h5difftrace("diff_datum H5T_STRING\n"); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "diff_datum H5T_STRING");
{ {
char *s = NULL; char *s = NULL;
char *sx = NULL; char *sx = NULL;
@@ -514,7 +523,7 @@ static hsize_t diff_datum(
/* if variable length string */ /* if variable length string */
if (H5Tis_variable_str(m_type)) { if (H5Tis_variable_str(m_type)) {
h5difftrace("diff_datum H5T_STRING variable\n"); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "diff_datum H5T_STRING variable");
/* Get pointer to first string */ /* Get pointer to first string */
s1 = *(char **)((void *)mem1); s1 = *(char **)((void *)mem1);
if (s1) if (s1)
@@ -530,7 +539,7 @@ static hsize_t diff_datum(
size2 = 0; size2 = 0;
} }
else if (H5T_STR_NULLTERM == pad) { else if (H5T_STR_NULLTERM == pad) {
h5difftrace("diff_datum H5T_STRING null term\n"); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "diff_datum H5T_STRING null term");
/* Get pointer to first string */ /* Get pointer to first string */
s1 = (char*) mem1; s1 = (char*) mem1;
if (s1) if (s1)
@@ -567,10 +576,10 @@ static hsize_t diff_datum(
* of length of strings. * of length of strings.
* For now mimic the previous way. * For now mimic the previous way.
*/ */
h5diffdebug2("diff_datum string size:%d\n", size1); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "diff_datum string size:%d", size1);
h5diffdebug2("diff_datum string size:%d\n", size2); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "diff_datum string size:%d", size2);
if (size1 != size2) { if (size1 != size2) {
h5difftrace("diff_datum string sizes\n"); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "diff_datum string sizes difference");
nfound++; nfound++;
} }
if (size1 < size2) { if (size1 < size2) {
@@ -607,7 +616,7 @@ static hsize_t diff_datum(
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
case H5T_BITFIELD: case H5T_BITFIELD:
h5difftrace("diff_datum H5T_BITFIELD\n"); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "diff_datum H5T_BITFIELD");
/* byte-by-byte comparison */ /* byte-by-byte comparison */
for (u = 0; u < type_size; u++) for (u = 0; u < type_size; u++)
nfound += character_compare_opt(mem1 + u, mem2 + u, index, rank, dims, acc, pos, opts, obj1, obj2, ph); nfound += character_compare_opt(mem1 + u, mem2 + u, index, rank, dims, acc, pos, opts, obj1, obj2, ph);
@@ -618,7 +627,7 @@ static hsize_t diff_datum(
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
case H5T_OPAQUE: case H5T_OPAQUE:
h5difftrace("diff_datum H5T_OPAQUE\n"); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "diff_datum H5T_OPAQUE");
/* byte-by-byte comparison */ /* byte-by-byte comparison */
for (u = 0; u < type_size; u++) for (u = 0; u < type_size; u++)
nfound += character_compare_opt(mem1 + u, mem2 + u, index, rank, dims, acc, pos, opts, obj1, obj2, ph); nfound += character_compare_opt(mem1 + u, mem2 + u, index, rank, dims, acc, pos, opts, obj1, obj2, ph);
@@ -634,7 +643,7 @@ static hsize_t diff_datum(
* compared, we convert both bit patterns to their corresponding * compared, we convert both bit patterns to their corresponding
* enumeration constant and do a string comparison * enumeration constant and do a string comparison
*/ */
h5difftrace("diff_datum H5T_ENUM\n"); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "diff_datum H5T_ENUM");
{ {
char enum_name1[1024]; char enum_name1[1024];
char enum_name2[1024]; char enum_name2[1024];
@@ -693,6 +702,7 @@ static hsize_t diff_datum(
*/ */
case H5T_ARRAY: case H5T_ARRAY:
{ {
H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "diff_datum H5T_ARRAY");
hid_t memb_type = -1; hid_t memb_type = -1;
hsize_t adims[H5S_MAX_RANK]; hsize_t adims[H5S_MAX_RANK];
int ndims; int ndims;
@@ -720,6 +730,7 @@ static hsize_t diff_datum(
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
case H5T_REFERENCE: case H5T_REFERENCE:
H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "diff_datum H5T_REFERENCE");
iszero1 = all_zero(_mem1, H5Tget_size(m_type)); iszero1 = all_zero(_mem1, H5Tget_size(m_type));
iszero2 = all_zero(_mem2, H5Tget_size(m_type)); iszero2 = all_zero(_mem2, H5Tget_size(m_type));
if (iszero1 != iszero2) { if (iszero1 != iszero2) {
@@ -727,23 +738,285 @@ static hsize_t diff_datum(
HGOTO_DONE (opts->err_stat); HGOTO_DONE (opts->err_stat);
} }
else if (!iszero1 && !iszero2) { else if (!iszero1 && !iszero2) {
hid_t obj1_id = -1;
hid_t obj2_id = -1;
/*-------------------------------------------------------------------------
* H5T_STD_REF
* Reference
*-------------------------------------------------------------------------
*/
if (H5Tequal(m_type, H5T_STD_REF)) {
H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "diff_datum H5T_REFERENCE - H5T_STD_REF");
/* if (type_size == H5R_STD_REF_SIZE) */
hid_t region1_id = -1;
hid_t region2_id = -1;
H5R_ref_t *ref1_buf = (const H5R_ref_t *)_mem1;
H5R_ref_t *ref2_buf = (const H5R_ref_t *)_mem2;
H5O_type_t obj1_type; /* Object type */
H5O_type_t obj2_type; /* Object type */
H5R_type_t ref_type; /* Reference type */
ref_type = H5Rget_type(ref1_buf);
switch (ref_type) {
case H5R_OBJECT1:
H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "ref_type is H5R_OBJECT1");
if (H5Rget_obj_type3(ref1_buf, H5P_DEFAULT, &obj1_type) < 0) {
opts->err_stat = 1;
H5TOOLS_INFO(H5E_tools_min_id_g, "H5Rget_obj_type3 object 1 failed");
}
if (H5Rget_obj_type3(ref2_buf, H5P_DEFAULT, &obj2_type) < 0) {
opts->err_stat = 1;
H5TOOLS_INFO(H5E_tools_min_id_g, "H5Rget_obj_type3 object 2 failed");
}
/* check object type */
if (obj1_type != obj2_type) {
parallel_print("Different object types referenced: <%s> and <%s>", obj1, obj2);
opts->not_cmp = 1;
HGOTO_DONE (opts->err_stat);
}
if((obj1_id = H5Ropen_object(ref1_buf, H5P_DEFAULT, H5P_DEFAULT)) < 0) {
opts->err_stat = 1;
H5TOOLS_INFO(H5E_tools_min_id_g, "H5Ropen_object object 1 failed");
}
if((obj2_id = H5Ropen_object(ref2_buf, H5P_DEFAULT, H5P_DEFAULT)) < 0) {
opts->err_stat = 1;
H5TOOLS_INFO(H5E_tools_min_id_g, "H5Ropen_object object 2 failed");
}
switch (obj1_type) {
case H5O_TYPE_DATASET:
nfound = diff_datasetid(obj1_id, obj2_id, NULL, NULL, opts);
break;
case H5O_TYPE_GROUP:
case H5O_TYPE_NAMED_DATATYPE:
case H5O_TYPE_MAP:
case H5O_TYPE_UNKNOWN:
case H5O_TYPE_NTYPES:
default:
if (opts->m_verbose)
parallel_print("Warning: Comparison not possible of object types referenced: <%s> and <%s>\n", obj1, obj2);
opts->not_cmp = 1;
break;
} /* end switch */
if(obj1_id >= 0)
if(H5Oclose(obj1_id) < 0)
H5TOOLS_INFO(H5E_tools_g, H5E_tools_min_id_g, "H5Oclose H5R_OBJECT1 failed");
if(obj2_id >= 0)
if(H5Oclose(obj2_id) < 0)
H5TOOLS_INFO(H5E_tools_g, H5E_tools_min_id_g, "H5Oclose H5R_OBJECT1 failed");
if(H5Rdestroy(ref2_buf) < 0)
H5TOOLS_ERROR(H5E_tools_g, H5E_tools_min_id_g, "H5Rdestroy H5R_OBJECT1 failed");
if(H5Rdestroy(ref1_buf) < 0)
H5TOOLS_ERROR(H5E_tools_g, H5E_tools_min_id_g, "H5Rdestroy H5R_OBJECT1 failed");
break;
case H5R_DATASET_REGION1:
H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "ref_type is H5R_DATASET_REGION1");
if((obj1_id = H5Ropen_object(ref1_buf, H5P_DEFAULT, H5P_DEFAULT)) >= 0) {
if((obj2_id = H5Ropen_object(ref2_buf, H5P_DEFAULT, H5P_DEFAULT)) >= 0) {
if((region1_id = H5Ropen_region(ref1_buf, H5P_DEFAULT, H5P_DEFAULT)) >= 0) {
if((region2_id = H5Ropen_region(ref2_buf, H5P_DEFAULT, H5P_DEFAULT)) >= 0) {
nfound = diff_region(obj1_id, obj2_id, region1_id, region2_id, opts);
if(H5Sclose(region2_id) < 0)
H5TOOLS_ERROR(H5E_tools_g, H5E_tools_min_id_g, "H5Sclose H5R_DATASET_REGION1 failed");
}
if(H5Sclose(region1_id) < 0)
H5TOOLS_ERROR(H5E_tools_g, H5E_tools_min_id_g, "H5Sclose H5R_DATASET_REGION1 failed");
}
if(H5Oclose(obj2_id) < 0)
H5TOOLS_ERROR(H5E_tools_g, H5E_tools_min_id_g, "H5Oclose H5R_DATASET_REGION1 failed");
}
else {
H5TOOLS_ERROR(H5E_tools_g, H5E_tools_min_id_g, "H5Ropen_object H5R_DATASET_REGION1 failed");
}
if(H5Oclose(obj1_id) < 0)
H5TOOLS_ERROR(H5E_tools_g, H5E_tools_min_id_g, "H5Oclose H5R_DATASET_REGION1 failed");
}
else {
H5TOOLS_ERROR(H5E_tools_g, H5E_tools_min_id_g, "H5Ropen_object H5R_DATASET_REGION1 failed");
}
if(H5Rdestroy(ref2_buf) < 0)
H5TOOLS_ERROR(H5E_tools_g, H5E_tools_min_id_g, "H5Rdestroy H5R_DATASET_REGION1 failed");
if(H5Rdestroy(ref1_buf) < 0)
H5TOOLS_ERROR(H5E_tools_g, H5E_tools_min_id_g, "H5Rdestroy H5R_DATASET_REGION1 failed");
break;
case H5R_OBJECT2:
H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "ref_type is H5R_OBJECT2");
if (H5Rget_obj_type3(ref1_buf, H5P_DEFAULT, &obj1_type) < 0) {
opts->err_stat = 1;
H5TOOLS_INFO(H5E_tools_min_id_g, "H5Rget_obj_type3 object 1 failed");
}
if (H5Rget_obj_type3(ref2_buf, H5P_DEFAULT, &obj2_type) < 0) {
opts->err_stat = 1;
H5TOOLS_INFO(H5E_tools_min_id_g, "H5Rget_obj_type3 object 2 failed");
}
/* check object type */
if (obj1_type != obj2_type) {
parallel_print("Different object types referenced: <%s> and <%s>", obj1, obj2);
opts->not_cmp = 1;
HGOTO_DONE (opts->err_stat);
}
if((obj1_id = H5Ropen_object(ref1_buf, H5P_DEFAULT, H5P_DEFAULT)) < 0) {
opts->err_stat = 1;
H5TOOLS_INFO(H5E_tools_min_id_g, "H5Ropen_object object 1 failed");
}
if((obj2_id = H5Ropen_object(ref2_buf, H5P_DEFAULT, H5P_DEFAULT)) < 0) {
opts->err_stat = 1;
H5TOOLS_INFO(H5E_tools_min_id_g, "H5Ropen_object object 2 failed");
}
switch (obj1_type) {
case H5O_TYPE_DATASET:
H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "ref_type is H5R_OBJECT2 : DATASET");
nfound = diff_datasetid(obj1_id, obj2_id, NULL, NULL, opts);
break;
case H5O_TYPE_GROUP:
H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "ref_type is H5R_OBJECT2 : GROUP");
if (opts->m_verbose)
parallel_print("Warning: Comparison not possible of group object types referenced: <%s> and <%s>\n", obj1, obj2);
opts->not_cmp = 1;
break;
case H5O_TYPE_NAMED_DATATYPE:
H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "ref_type is H5R_OBJECT2 : NAMED");
if (opts->m_verbose)
parallel_print("Warning: Comparison not possible of named datatypes object types referenced: <%s> and <%s>\n", obj1, obj2);
opts->not_cmp = 1;
break;
case H5O_TYPE_MAP:
case H5O_TYPE_UNKNOWN:
case H5O_TYPE_NTYPES:
default:
if (opts->m_verbose)
parallel_print("Warning: Comparison not possible of object types referenced: <%s> and <%s>\n", obj1, obj2);
opts->not_cmp = 1;
break;
} /* end switch */
if(obj1_id >= 0)
if(H5Oclose(obj1_id) < 0)
H5TOOLS_INFO(H5E_tools_g, H5E_tools_min_id_g, "H5Oclose H5R_OBJECT2 failed");
if(obj2_id >= 0)
if(H5Oclose(obj2_id) < 0)
H5TOOLS_INFO(H5E_tools_g, H5E_tools_min_id_g, "H5Oclose H5R_OBJECT2 failed");
if(H5Rdestroy(ref2_buf) < 0)
H5TOOLS_ERROR(H5E_tools_g, H5E_tools_min_id_g, "H5Rdestroy H5R_OBJECT2 failed");
if(H5Rdestroy(ref1_buf) < 0)
H5TOOLS_ERROR(H5E_tools_g, H5E_tools_min_id_g, "H5Rdestroy H5R_OBJECT2 failed");
break;
case H5R_DATASET_REGION2:
H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "ref_type is H5R_DATASET_REGION2");
/* if (obj_id < 0) - could mean that no reference was written do not throw failure */
obj1_id = H5Ropen_object(ref1_buf, H5P_DEFAULT, H5P_DEFAULT);
obj2_id = H5Ropen_object(ref2_buf, H5P_DEFAULT, H5P_DEFAULT);
if((obj1_id < 0) || (obj1_id < 0))
H5Epush2(H5tools_ERR_STACK_g, __FILE__, FUNC, __LINE__, H5tools_ERR_CLS_g, H5E_tools_g, H5E_tools_min_id_g,
"H5Ropen_object H5R_DATASET_REGION2 failed");
else {
H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "open_region - H5R_DATASET_REGION2");
if((region1_id = H5Ropen_region(ref1_buf, H5P_DEFAULT, H5P_DEFAULT)) >= 0) {
if (h5tools_is_zero(ref1_buf, H5Tget_size(H5T_STD_REF))) {
H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "NULL H5R_DATASET_REGION2");
}
else {
if((region2_id = H5Ropen_region(ref2_buf, H5P_DEFAULT, H5P_DEFAULT)) >= 0) {
if (h5tools_is_zero(ref2_buf, H5Tget_size(H5T_STD_REF))) {
H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "NULL H5R_DATASET_REGION2");
}
else {
nfound = diff_region(obj1_id, obj2_id, region1_id, region2_id, opts);
}
if(H5Sclose(region2_id) < 0)
H5TOOLS_ERROR(H5E_tools_g, H5E_tools_min_id_g, "H5Sclose H5R_DATASET_REGION2 failed");
}
else
H5TOOLS_ERROR(H5E_tools_g, H5E_tools_min_id_g, "H5Ropen_region H5R_DATASET_REGION2 failed");
} /* end else to if (h5tools_is_zero(... */
if(H5Sclose(region1_id) < 0)
H5TOOLS_ERROR(H5E_tools_g, H5E_tools_min_id_g, "H5Sclose H5R_DATASET_REGION2 failed");
}
else
H5TOOLS_ERROR(H5E_tools_g, H5E_tools_min_id_g, "H5Ropen_region H5R_DATASET_REGION2 failed");
if (obj1_id >= 0)
if(H5Dclose(obj1_id) < 0)
H5TOOLS_INFO(H5E_tools_g, H5E_tools_min_id_g, "H5Dclose H5R_DATASET_REGION2 failed");
if (obj2_id >= 0)
if(H5Dclose(obj2_id) < 0)
H5TOOLS_INFO(H5E_tools_g, H5E_tools_min_id_g, "H5Dclose H5R_DATASET_REGION2 failed");
if(H5Rdestroy(ref1_buf) < 0)
H5TOOLS_ERROR(H5E_tools_g, H5E_tools_min_id_g, "H5Rdestroy H5R_DATASET_REGION2 failed");
if(H5Rdestroy(ref2_buf) < 0)
H5TOOLS_ERROR(H5E_tools_g, H5E_tools_min_id_g, "H5Rdestroy H5R_DATASET_REGION2 failed");
}
break;
case H5R_ATTR:
{
char name1[ATTR_NAME_MAX];
char name2[ATTR_NAME_MAX];
H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "ref_type is H5R_ATTR");
if((obj1_id = H5Ropen_attr(ref1_buf, H5P_DEFAULT, H5P_DEFAULT)) < 0) {
parallel_print("Warning: Cannot open referenced attribute: attribute 1\n");
H5TOOLS_INFO(H5E_tools_min_id_g, "H5Ropen_attr object 1 failed");
}
if((obj2_id = H5Ropen_attr(ref2_buf, H5P_DEFAULT, H5P_DEFAULT)) < 0) {
parallel_print("Warning: Cannot open referenced attribute: attribute 2\n");
H5TOOLS_INFO(H5E_tools_min_id_g, "H5Ropen_attr object 2 failed");
}
if((obj1_id < 0) || (obj1_id < 0))
H5Epush2(H5tools_ERR_STACK_g, __FILE__, FUNC, __LINE__, H5tools_ERR_CLS_g, H5E_tools_g, H5E_tools_min_id_g,
"H5Ropen_attr H5R_ATTR failed");
else {
/* get name */
if(H5Aget_name(obj1_id, (size_t)ATTR_NAME_MAX, name1) < 0)
H5TOOLS_GOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Aget_name first attribute failed");
/* get name */
if(H5Aget_name(obj2_id, (size_t)ATTR_NAME_MAX, name2) < 0)
H5TOOLS_GOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Aget_name second attribute failed");
H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "H5R_ATTR diff_attr_data - name1=%s, name2=%s", name1, name2);
nfound = diff_attr_data(obj1_id, obj2_id, name1, name2, NULL, NULL, opts);
}
if(obj1_id >= 0)
if(H5Aclose(obj1_id) < 0)
H5TOOLS_INFO(H5E_tools_g, H5E_tools_min_id_g, "H5Aclose H5R_ATTR failed");
if(obj2_id >= 0)
if(H5Aclose(obj2_id) < 0)
H5TOOLS_INFO(H5E_tools_g, H5E_tools_min_id_g, "H5Aclose H5R_ATTR failed");
if(H5Rdestroy(ref2_buf) < 0)
H5TOOLS_ERROR(H5E_tools_g, H5E_tools_min_id_g, "H5Rdestroy H5R_ATTR failed");
if(H5Rdestroy(ref1_buf) < 0)
H5TOOLS_ERROR(H5E_tools_g, H5E_tools_min_id_g, "H5Rdestroy H5R_ATTR failed");
}
break;
case H5R_BADTYPE:
case H5R_MAXTYPE:
default:
break;
} /* end switch */
H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "diff_datum H5T_REFERENCE - H5T_STD_REF complete nfound:%d - errstat:%d", nfound, opts->err_stat);
}
/*------------------------------------------------------------------------- /*-------------------------------------------------------------------------
* H5T_STD_REF_DSETREG * H5T_STD_REF_DSETREG
* Dataset region reference * Dataset region reference
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
hid_t obj1_id = -1;
hid_t obj2_id = -1;
if (H5Tequal(m_type, H5T_STD_REF)) {
/* if (type_size == H5R_STD_REF_SIZE) */
H5TOOLS_INFO(H5E_tools_min_info_id_g, "NEW reference type");
}
else if (H5Tequal(m_type, H5T_STD_REF_DSETREG)) { else if (H5Tequal(m_type, H5T_STD_REF_DSETREG)) {
/* if (type_size == H5R_DSET_REG_REF_BUF_SIZE) */ /* if (type_size == H5R_DSET_REG_REF_BUF_SIZE) */
hid_t region1_id = -1; hid_t region1_id = -1;
hid_t region2_id = -1; hid_t region2_id = -1;
H5TOOLS_INFO(H5E_tools_min_info_id_g, "H5T_STD_REF_DSETREG reference type");
if ((obj1_id = H5Rdereference2(container1_id, H5P_DEFAULT, H5R_DATASET_REGION, _mem1)) < 0) { if ((obj1_id = H5Rdereference2(container1_id, H5P_DEFAULT, H5R_DATASET_REGION, _mem1)) < 0) {
opts->err_stat = 1; opts->err_stat = 1;
H5TOOLS_INFO(H5E_tools_min_id_g, "H5Rdereference2 object 1 failed"); H5TOOLS_INFO(H5E_tools_min_id_g, "H5Rdereference2 object 1 failed");
@@ -779,6 +1052,8 @@ static hsize_t diff_datum(
H5O_type_t obj1_type; H5O_type_t obj1_type;
H5O_type_t obj2_type; H5O_type_t obj2_type;
H5TOOLS_INFO(H5E_tools_min_info_id_g, "H5T_STD_REF_OBJ reference type");
if (H5Rget_obj_type2(container1_id, H5R_OBJECT, _mem1, &obj1_type) < 0) { if (H5Rget_obj_type2(container1_id, H5R_OBJECT, _mem1, &obj1_type) < 0) {
opts->err_stat = 1; opts->err_stat = 1;
H5TOOLS_INFO(H5E_tools_min_id_g, "H5Rget_obj_type2 object 1 failed"); H5TOOLS_INFO(H5E_tools_min_id_g, "H5Rget_obj_type2 object 1 failed");
@@ -809,9 +1084,7 @@ static hsize_t diff_datum(
nfound = diff_datasetid(obj1_id, obj2_id, NULL, NULL, opts); nfound = diff_datasetid(obj1_id, obj2_id, NULL, NULL, opts);
else { else {
if (opts->m_verbose) if (opts->m_verbose)
parallel_print( parallel_print("Warning: Comparison not possible of object types referenced: <%s> and <%s>\n", obj1, obj2);
"Warning: Comparison not possible of object types referenced: <%s> and <%s>\n",
obj1, obj2);
opts->not_cmp = 1; opts->not_cmp = 1;
} }
@@ -819,6 +1092,7 @@ static hsize_t diff_datum(
H5Oclose(obj2_id); H5Oclose(obj2_id);
}/*object reference*/ }/*object reference*/
}/*is zero*/ }/*is zero*/
H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "diff_datum H5T_REFERENCE complete");
break; break;
/*------------------------------------------------------------------------- /*-------------------------------------------------------------------------
@@ -829,6 +1103,7 @@ static hsize_t diff_datum(
{ {
hid_t memb_type = -1; hid_t memb_type = -1;
H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "diff_datum H5T_VLEN");
/* get the VL sequences's base datatype for each element */ /* get the VL sequences's base datatype for each element */
memb_type = H5Tget_super(m_type); memb_type = H5Tget_super(m_type);
size = H5Tget_size(memb_type); size = H5Tget_size(memb_type);
@@ -849,6 +1124,7 @@ static hsize_t diff_datum(
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
case H5T_INTEGER: case H5T_INTEGER:
H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "diff_datum H5T_INTEGER");
type_sign = H5Tget_sign(m_type); type_sign = H5Tget_sign(m_type);
/*------------------------------------------------------------------------- /*-------------------------------------------------------------------------
* H5T_NATIVE_SCHAR * H5T_NATIVE_SCHAR
@@ -1467,6 +1743,7 @@ static hsize_t diff_datum(
* H5T_NATIVE_FLOAT * H5T_NATIVE_FLOAT
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "diff_datum H5T_FLOAT");
if (type_size == 4) { if (type_size == 4) {
float temp1_float; float temp1_float;
float temp2_float; float temp2_float;
@@ -1947,8 +2224,10 @@ static hsize_t diff_datum(
done: done:
opts->err_stat = opts->err_stat | ret_value; opts->err_stat = opts->err_stat | ret_value;
h5diffdebug3("diff_datum finish:%d - errstat:%d\n", nfound, opts->err_stat); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "diff_datum finish:%d - errstat:%d", nfound, opts->err_stat);
H5TOOLS_ENDDEBUG(H5E_tools_min_dbg_id_g, "exit");
H5TOOLS_POP_STACK();
return nfound; return nfound;
} }
@@ -2025,7 +2304,7 @@ void print_points(int i, hsize_t *ptdata, int ndims) {
static hsize_t diff_region(hid_t obj1_id, hid_t obj2_id, hid_t region1_id, hid_t region2_id, diff_opt_t *opts) static hsize_t diff_region(hid_t obj1_id, hid_t obj2_id, hid_t region1_id, hid_t region2_id, diff_opt_t *opts)
{ {
hsize_t ret_value = 0; H5TOOLS_ERR_INIT(hsize_t, 0)
hssize_t nblocks1, npoints1; hssize_t nblocks1, npoints1;
hssize_t nblocks2, npoints2; hssize_t nblocks2, npoints2;
hsize_t alloc_size; hsize_t alloc_size;
@@ -2037,6 +2316,9 @@ static hsize_t diff_region(hid_t obj1_id, hid_t obj2_id, hid_t region1_id, hid_t
hsize_t nfound_b = 0; /* block differences found */ hsize_t nfound_b = 0; /* block differences found */
hsize_t nfound_p = 0; /* point differences found */ hsize_t nfound_p = 0; /* point differences found */
H5TOOLS_PUSH_STACK();
H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "diff_region start");
ndims1 = H5Sget_simple_extent_ndims(region1_id); ndims1 = H5Sget_simple_extent_ndims(region1_id);
ndims2 = H5Sget_simple_extent_ndims(region2_id); ndims2 = H5Sget_simple_extent_ndims(region2_id);
@@ -2052,6 +2334,8 @@ static hsize_t diff_region(hid_t obj1_id, hid_t obj2_id, hid_t region1_id, hid_t
npoints1 = H5Sget_select_elem_npoints(region1_id); npoints1 = H5Sget_select_elem_npoints(region1_id);
npoints2 = H5Sget_select_elem_npoints(region2_id); npoints2 = H5Sget_select_elem_npoints(region2_id);
} H5E_END_TRY; } H5E_END_TRY;
H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "diff_region blocks: 1=%ld-2=%ld", nblocks1, nblocks2);
H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "diff_region points: 1=%ld-2=%ld", npoints1, npoints2);
if (nblocks1 != nblocks2 || npoints1 != npoints2 || ndims1 != ndims2) { if (nblocks1 != nblocks2 || npoints1 != npoints2 || ndims1 != ndims2) {
opts->not_cmp = 1; opts->not_cmp = 1;
@@ -2063,6 +2347,7 @@ static hsize_t diff_region(hid_t obj1_id, hid_t obj2_id, hid_t region1_id, hid_t
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
if (nblocks1 > 0) { if (nblocks1 > 0) {
H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "region compare blocks");
HDassert(ndims1 > 0); HDassert(ndims1 > 0);
alloc_size = (hsize_t) nblocks1 * (unsigned) ndims1 * 2 * sizeof(ptdata1[0]); alloc_size = (hsize_t) nblocks1 * (unsigned) ndims1 * 2 * sizeof(ptdata1[0]);
HDassert(alloc_size == (hsize_t)((size_t )alloc_size)); /*check for overflow*/ HDassert(alloc_size == (hsize_t)((size_t )alloc_size)); /*check for overflow*/
@@ -2127,6 +2412,7 @@ static hsize_t diff_region(hid_t obj1_id, hid_t obj2_id, hid_t region1_id, hid_t
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
if (npoints1 > 0) { if (npoints1 > 0) {
H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "region compare points");
alloc_size = (hsize_t) npoints1 * (unsigned) ndims1 * sizeof(ptdata1[0]); alloc_size = (hsize_t) npoints1 * (unsigned) ndims1 * sizeof(ptdata1[0]);
HDassert(alloc_size == (hsize_t)((size_t )alloc_size)); /*check for overflow*/ HDassert(alloc_size == (hsize_t)((size_t )alloc_size)); /*check for overflow*/
@@ -2191,6 +2477,7 @@ static hsize_t diff_region(hid_t obj1_id, hid_t obj2_id, hid_t region1_id, hid_t
parallel_print(")"); parallel_print(")");
} }
parallel_print("\n");
#endif #endif
HDfree(ptdata1); HDfree(ptdata1);
@@ -2203,6 +2490,8 @@ static hsize_t diff_region(hid_t obj1_id, hid_t obj2_id, hid_t region1_id, hid_t
ret_value = nfound_p + nfound_b; ret_value = nfound_p + nfound_b;
done: done:
H5TOOLS_ENDDEBUG(H5E_tools_min_dbg_id_g, "exit with diffs:%d", ret_value);
H5TOOLS_POP_STACK();
return ret_value; return ret_value;
} }
@@ -2218,13 +2507,15 @@ done:
static hsize_t character_compare(char *mem1, char *mem2, hsize_t i, size_t u, static hsize_t character_compare(char *mem1, char *mem2, hsize_t i, size_t u,
int rank, hsize_t *dims, hsize_t *acc, hsize_t *pos, diff_opt_t *opts, const char *obj1, const char *obj2, int *ph) int rank, hsize_t *dims, hsize_t *acc, hsize_t *pos, diff_opt_t *opts, const char *obj1, const char *obj2, int *ph)
{ {
H5TOOLS_ERR_INIT(int, 0)
hsize_t nfound = 0; /* differences found */ hsize_t nfound = 0; /* differences found */
char temp1_uchar; char temp1_uchar;
char temp2_uchar; char temp2_uchar;
H5TOOLS_PUSH_STACK();
HDmemcpy(&temp1_uchar, mem1, sizeof(unsigned char)); HDmemcpy(&temp1_uchar, mem1, sizeof(unsigned char));
HDmemcpy(&temp2_uchar, mem2, sizeof(unsigned char)); HDmemcpy(&temp2_uchar, mem2, sizeof(unsigned char));
h5diffdebug3("character_compare start %d=%d\n",temp1_uchar,temp2_uchar); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "character_compare start %d=%d",temp1_uchar,temp2_uchar);
if (temp1_uchar != temp2_uchar) { if (temp1_uchar != temp2_uchar) {
if (print_data(opts)) { if (print_data(opts)) {
@@ -2237,8 +2528,10 @@ static hsize_t character_compare(char *mem1, char *mem2, hsize_t i, size_t u,
} }
nfound++; nfound++;
} }
h5difftrace("character_compare finish\n"); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "character_compare finish");
H5TOOLS_ENDDEBUG(H5E_tools_min_dbg_id_g, "exit: %d", nfound);
H5TOOLS_POP_STACK();
return nfound; return nfound;
} }
@@ -2263,7 +2556,6 @@ static hsize_t character_compare_opt(unsigned char *mem1, unsigned char *mem2,
HDmemcpy(&temp1_uchar, mem1, sizeof(unsigned char)); HDmemcpy(&temp1_uchar, mem1, sizeof(unsigned char));
HDmemcpy(&temp2_uchar, mem2, sizeof(unsigned char)); HDmemcpy(&temp2_uchar, mem2, sizeof(unsigned char));
h5difftrace("character_compare_opt start\n");
/* -d and !-p */ /* -d and !-p */
if (opts->d && !opts->p) { if (opts->d && !opts->p) {
@@ -2307,7 +2599,7 @@ static hsize_t character_compare_opt(unsigned char *mem1, unsigned char *mem2,
parallel_print(I_FORMAT, temp1_uchar, temp2_uchar, PDIFF(temp1_uchar, temp2_uchar)); parallel_print(I_FORMAT, temp1_uchar, temp2_uchar, PDIFF(temp1_uchar, temp2_uchar));
} }
nfound++; nfound++;
} h5difftrace("character_compare_opt finish\n"); }
return nfound; return nfound;
} }
@@ -2335,8 +2627,6 @@ static hsize_t diff_float(unsigned char *mem1, unsigned char *mem2,
hbool_t isnan1 = FALSE; hbool_t isnan1 = FALSE;
hbool_t isnan2 = FALSE; hbool_t isnan2 = FALSE;
h5difftrace("diff_float start\n");
/*------------------------------------------------------------------------- /*-------------------------------------------------------------------------
* -d and !-p * -d and !-p
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
@@ -2520,7 +2810,6 @@ static hsize_t diff_float(unsigned char *mem1, unsigned char *mem2,
return nfound; return nfound;
} /* nelmts */ } /* nelmts */
} }
h5difftrace("diff_float finish\n");
return nfound; return nfound;
} }
@@ -2548,7 +2837,6 @@ static hsize_t diff_double(unsigned char *mem1, unsigned char *mem2,
hbool_t isnan1 = FALSE; hbool_t isnan1 = FALSE;
hbool_t isnan2 = FALSE; hbool_t isnan2 = FALSE;
h5difftrace("diff_double start\n");
/*------------------------------------------------------------------------- /*-------------------------------------------------------------------------
* -d and !-p * -d and !-p
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
@@ -2731,7 +3019,6 @@ static hsize_t diff_double(unsigned char *mem1, unsigned char *mem2,
return nfound; return nfound;
} /* nelmts */ } /* nelmts */
} }
h5difftrace("diff_double finish\n");
return nfound; return nfound;
} }
@@ -2769,8 +3056,6 @@ static hsize_t diff_ldouble(unsigned char *mem1,
hbool_t isnan1 = FALSE; hbool_t isnan1 = FALSE;
hbool_t isnan2 = FALSE; hbool_t isnan2 = FALSE;
h5difftrace("diff_ldouble start\n");
/*------------------------------------------------------------------------- /*-------------------------------------------------------------------------
* -d and !-p * -d and !-p
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
@@ -2949,7 +3234,6 @@ static hsize_t diff_ldouble(unsigned char *mem1,
return nfound; return nfound;
} /* nelmts */ } /* nelmts */
} }
h5difftrace("diff_ldouble finish\n");
return nfound; return nfound;
} }
@@ -2976,7 +3260,6 @@ static hsize_t diff_schar(unsigned char *mem1, unsigned char *mem2,
double per; double per;
hbool_t both_zero; hbool_t both_zero;
h5difftrace("diff_schar start\n");
/* -d and !-p */ /* -d and !-p */
if (opts->d && !opts->p) { if (opts->d && !opts->p) {
for (i = 0; i < nelmts; i++) { for (i = 0; i < nelmts; i++) {
@@ -3077,7 +3360,6 @@ static hsize_t diff_schar(unsigned char *mem1, unsigned char *mem2,
return nfound; return nfound;
} /* nelmts */ } /* nelmts */
} }
h5difftrace("diff_schar finish\n");
return nfound; return nfound;
} }
@@ -3102,7 +3384,6 @@ static hsize_t diff_uchar(unsigned char *mem1, unsigned char *mem2,
double per; double per;
hbool_t both_zero; hbool_t both_zero;
h5difftrace("diff_uchar start\n");
/* -d and !-p */ /* -d and !-p */
if (opts->d && !opts->p) { if (opts->d && !opts->p) {
for (i = 0; i < nelmts; i++) { for (i = 0; i < nelmts; i++) {
@@ -3203,7 +3484,6 @@ static hsize_t diff_uchar(unsigned char *mem1, unsigned char *mem2,
return nfound; return nfound;
} /* nelmts */ } /* nelmts */
} }
h5difftrace("diff_uchar finish\n");
return nfound; return nfound;
} }
@@ -3228,7 +3508,6 @@ static hsize_t diff_short(unsigned char *mem1, unsigned char *mem2,
double per; double per;
hbool_t both_zero; hbool_t both_zero;
h5difftrace("diff_short start\n");
/* -d and !-p */ /* -d and !-p */
if (opts->d && !opts->p) { if (opts->d && !opts->p) {
for (i = 0; i < nelmts; i++) { for (i = 0; i < nelmts; i++) {
@@ -3329,7 +3608,6 @@ static hsize_t diff_short(unsigned char *mem1, unsigned char *mem2,
return nfound; return nfound;
} /* nelmts */ } /* nelmts */
} }
h5difftrace("diff_short finish\n");
return nfound; return nfound;
} }
@@ -3355,7 +3633,6 @@ static hsize_t diff_ushort(unsigned char *mem1, unsigned char *mem2,
double per; double per;
hbool_t both_zero; hbool_t both_zero;
h5difftrace("diff_ushort start\n");
/* -d and !-p */ /* -d and !-p */
if (opts->d && !opts->p) { if (opts->d && !opts->p) {
for (i = 0; i < nelmts; i++) { for (i = 0; i < nelmts; i++) {
@@ -3456,7 +3733,6 @@ static hsize_t diff_ushort(unsigned char *mem1, unsigned char *mem2,
return nfound; return nfound;
} /* nelmts */ } /* nelmts */
} }
h5difftrace("diff_ushort finish\n");
return nfound; return nfound;
} }
@@ -3481,7 +3757,6 @@ static hsize_t diff_int(unsigned char *mem1, unsigned char *mem2,
double per; double per;
hbool_t both_zero; hbool_t both_zero;
h5difftrace("diff_int start\n");
/* -d and !-p */ /* -d and !-p */
if (opts->d && !opts->p) { if (opts->d && !opts->p) {
for (i = 0; i < nelmts; i++) { for (i = 0; i < nelmts; i++) {
@@ -3583,7 +3858,6 @@ static hsize_t diff_int(unsigned char *mem1, unsigned char *mem2,
} /* nelmts */ } /* nelmts */
} }
h5difftrace("diff_int finish\n");
return nfound; return nfound;
} }
@@ -3607,7 +3881,6 @@ static hsize_t diff_uint(unsigned char *mem1, unsigned char *mem2,
double per; double per;
hbool_t both_zero; hbool_t both_zero;
h5difftrace("diff_uint start\n");
/* -d and !-p */ /* -d and !-p */
if (opts->d && !opts->p) { if (opts->d && !opts->p) {
for (i = 0; i < nelmts; i++) { for (i = 0; i < nelmts; i++) {
@@ -3709,7 +3982,6 @@ static hsize_t diff_uint(unsigned char *mem1, unsigned char *mem2,
return nfound; return nfound;
} /* nelmts */ } /* nelmts */
} }
h5difftrace("diff_uint finish\n");
return nfound; return nfound;
} }
@@ -3734,7 +4006,6 @@ static hsize_t diff_long(unsigned char *mem1, unsigned char *mem2,
double per; double per;
hbool_t both_zero; hbool_t both_zero;
h5difftrace("diff_long start\n");
/* -d and !-p */ /* -d and !-p */
if (opts->d && !opts->p) { if (opts->d && !opts->p) {
for (i = 0; i < nelmts; i++) { for (i = 0; i < nelmts; i++) {
@@ -3837,7 +4108,6 @@ static hsize_t diff_long(unsigned char *mem1, unsigned char *mem2,
return nfound; return nfound;
} /* nelmts */ } /* nelmts */
} }
h5difftrace("diff_long finish\n");
return nfound; return nfound;
} }
@@ -3862,8 +4132,6 @@ static hsize_t diff_ulong(unsigned char *mem1, unsigned char *mem2,
double per; double per;
hbool_t both_zero; hbool_t both_zero;
h5difftrace("diff_ulong start\n");
/* -d and !-p */ /* -d and !-p */
if (opts->d && !opts->p) { if (opts->d && !opts->p) {
for (i = 0; i < nelmts; i++) { for (i = 0; i < nelmts; i++) {
@@ -3967,7 +4235,6 @@ static hsize_t diff_ulong(unsigned char *mem1, unsigned char *mem2,
return nfound; return nfound;
} /* nelmts */ } /* nelmts */
} }
h5difftrace("diff_ulong finish\n");
return nfound; return nfound;
} }
@@ -3992,7 +4259,6 @@ static hsize_t diff_llong(unsigned char *mem1, unsigned char *mem2,
double per; double per;
hbool_t both_zero; hbool_t both_zero;
h5difftrace("diff_llong start\n");
/* -d and !-p */ /* -d and !-p */
if (opts->d && !opts->p) { if (opts->d && !opts->p) {
for (i = 0; i < nelmts; i++) { for (i = 0; i < nelmts; i++) {
@@ -4094,7 +4360,6 @@ static hsize_t diff_llong(unsigned char *mem1, unsigned char *mem2,
return nfound; return nfound;
} /* nelmts */ } /* nelmts */
} }
h5difftrace("diff_llong finish\n");
return nfound; return nfound;
} }
@@ -4120,7 +4385,6 @@ static hsize_t diff_ullong(unsigned char *mem1, unsigned char *mem2,
double per; double per;
hbool_t both_zero; hbool_t both_zero;
h5difftrace("diff_ullong start\n");
/* -d and !-p */ /* -d and !-p */
if (opts->d && !opts->p) { if (opts->d && !opts->p) {
for (i = 0; i < nelmts; i++) { for (i = 0; i < nelmts; i++) {
@@ -4226,7 +4490,6 @@ static hsize_t diff_ullong(unsigned char *mem1, unsigned char *mem2,
return nfound; return nfound;
} /* nelmts */ } /* nelmts */
} }
h5difftrace("diff_ullong finish\n");
return nfound; return nfound;
} }
@@ -4240,13 +4503,14 @@ static hsize_t diff_ullong(unsigned char *mem1, unsigned char *mem2,
static static
int ull2float(unsigned long long ull_value, float *f_value) int ull2float(unsigned long long ull_value, float *f_value)
{ {
int ret_value = SUCCEED; H5TOOLS_ERR_INIT(int, SUCCEED)
hid_t dxpl_id = -1; hid_t dxpl_id = -1;
unsigned char *buf = NULL; unsigned char *buf = NULL;
size_t src_size; size_t src_size;
size_t dst_size; size_t dst_size;
h5difftrace("ull2float start\n"); H5TOOLS_PUSH_STACK();
H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "ull2float start");
if ((dxpl_id = H5Pcreate(H5P_DATASET_XFER)) < 0) if ((dxpl_id = H5Pcreate(H5P_DATASET_XFER)) < 0)
H5TOOLS_GOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pcreate failed"); H5TOOLS_GOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pcreate failed");
@@ -4271,8 +4535,10 @@ done:
if (buf) if (buf)
HDfree(buf); HDfree(buf);
h5difftrace("ull2float finish\n"); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "ull2float finish");
H5TOOLS_ENDDEBUG(H5E_tools_min_dbg_id_g, "exit");
H5TOOLS_POP_STACK();
return ret_value; return ret_value;
} }
@@ -4283,7 +4549,6 @@ done:
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
static hbool_t equal_double(double value, double expected, diff_opt_t *opts) { static hbool_t equal_double(double value, double expected, diff_opt_t *opts) {
h5difftrace("equal_double start\n");
if (opts->do_nans) { if (opts->do_nans) {
/*------------------------------------------------------------------------- /*-------------------------------------------------------------------------
* detect NaNs * detect NaNs
@@ -4314,8 +4579,6 @@ static hbool_t equal_double(double value, double expected, diff_opt_t *opts) {
if (ABS((value-expected)) < DBL_EPSILON) if (ABS((value-expected)) < DBL_EPSILON)
return TRUE; return TRUE;
h5difftrace("equal_double finish\n");
return FALSE; return FALSE;
} }
@@ -4330,7 +4593,6 @@ static hbool_t equal_double(double value, double expected, diff_opt_t *opts) {
static static
hbool_t equal_ldouble(long double value, long double expected, diff_opt_t *opts) hbool_t equal_ldouble(long double value, long double expected, diff_opt_t *opts)
{ {
h5difftrace("equal_ldouble start\n");
if (opts->do_nans) { if (opts->do_nans) {
/*------------------------------------------------------------------------- /*-------------------------------------------------------------------------
* detect NaNs * detect NaNs
@@ -4361,8 +4623,6 @@ hbool_t equal_ldouble(long double value, long double expected, diff_opt_t *opts)
if (ABS((value-expected)) < DBL_EPSILON) if (ABS((value-expected)) < DBL_EPSILON)
return TRUE; return TRUE;
h5difftrace("equal_ldouble finish\n");
return FALSE; return FALSE;
} }
@@ -4375,7 +4635,6 @@ hbool_t equal_ldouble(long double value, long double expected, diff_opt_t *opts)
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
static hbool_t equal_float(float value, float expected, diff_opt_t *opts) { static hbool_t equal_float(float value, float expected, diff_opt_t *opts) {
h5difftrace("equal_float start\n");
if (opts->do_nans) { if (opts->do_nans) {
/*------------------------------------------------------------------------- /*-------------------------------------------------------------------------
* detect NaNs * detect NaNs
@@ -4406,8 +4665,6 @@ static hbool_t equal_float(float value, float expected, diff_opt_t *opts) {
if (ABS( (value-expected) ) < FLT_EPSILON) if (ABS( (value-expected) ) < FLT_EPSILON)
return TRUE; return TRUE;
h5difftrace("equal_float finish\n");
return FALSE; return FALSE;
} }
@@ -4423,7 +4680,6 @@ static hbool_t my_isnan(dtype_t type, void *val) {
hbool_t retval = FALSE; hbool_t retval = FALSE;
char s[256]; char s[256];
h5difftrace("my_isnan start\n");
if (FLT_FLOAT == type) { if (FLT_FLOAT == type) {
float x; float x;
@@ -4483,8 +4739,6 @@ static hbool_t my_isnan(dtype_t type, void *val) {
} }
} }
h5difftrace("my_isnan finish\n");
return retval; return retval;
} }

View File

@@ -139,10 +139,10 @@ static void table_attr_mark_exist(unsigned *exist, char *name, table_attrs_t *ta
*------------------------------------------------------------------------*/ *------------------------------------------------------------------------*/
static herr_t build_match_list_attrs(hid_t loc1_id, hid_t loc2_id, table_attrs_t ** table_out, diff_opt_t *opts) static herr_t build_match_list_attrs(hid_t loc1_id, hid_t loc2_id, table_attrs_t ** table_out, diff_opt_t *opts)
{ {
int ret_value = 0; H5TOOLS_ERR_INIT(herr_t, 0)
H5O_info_t oinfo1, oinfo2; /* Object info */ H5O_info_t oinfo1, oinfo2; /* Object info */
hid_t attr1_id = -1; /* attr ID */ hid_t attr1_id = H5I_INVALID_HID; /* attr ID */
hid_t attr2_id = -1; /* attr ID */ hid_t attr2_id = H5I_INVALID_HID; /* attr ID */
size_t curr1 = 0; size_t curr1 = 0;
size_t curr2 = 0; size_t curr2 = 0;
unsigned infile[2]; unsigned infile[2];
@@ -152,12 +152,17 @@ static herr_t build_match_list_attrs(hid_t loc1_id, hid_t loc2_id, table_attrs_t
unsigned i; unsigned i;
table_attrs_t *table_lp = NULL; table_attrs_t *table_lp = NULL;
h5difftrace("build_match_list_attrs start\n"); H5TOOLS_PUSH_STACK();
H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "build_match_list_attrs start - errstat:%d", opts->err_stat);
if(H5Oget_info2(loc1_id, &oinfo1, H5O_INFO_NUM_ATTRS) < 0) if(H5Oget_info2(loc1_id, &oinfo1, H5O_INFO_NUM_ATTRS) < 0) {
H5TOOLS_GOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Oget_info first object failed"); H5TOOLS_GOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Oget_info first object failed");
if(H5Oget_info2(loc2_id, &oinfo2, H5O_INFO_NUM_ATTRS) < 0) }
H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "H5Oget_info2 loc1id=%d", oinfo1.num_attrs);
if(H5Oget_info2(loc2_id, &oinfo2, H5O_INFO_NUM_ATTRS) < 0) {
H5TOOLS_GOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Oget_info second object failed"); H5TOOLS_GOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Oget_info second object failed");
}
H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "H5Oget_info2 loc2id=%d", oinfo2.num_attrs);
table_attrs_init(&table_lp); table_attrs_init(&table_lp);
if (table_lp == NULL) if (table_lp == NULL)
@@ -167,8 +172,8 @@ static herr_t build_match_list_attrs(hid_t loc1_id, hid_t loc2_id, table_attrs_t
* build the list * build the list
*/ */
while(curr1 < oinfo1.num_attrs && curr2 < oinfo2.num_attrs) { while(curr1 < oinfo1.num_attrs && curr2 < oinfo2.num_attrs) {
h5diffdebug3("build_match_list_attrs 1: %ld - %ld\n", curr1, oinfo1.num_attrs); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "build_match_list_attrs 1: %ld - %ld", curr1, oinfo1.num_attrs);
h5diffdebug3("build_match_list_attrs 2: %ld - %ld\n", curr2, oinfo2.num_attrs); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "build_match_list_attrs 2: %ld - %ld", curr2, oinfo2.num_attrs);
/*------------------ /*------------------
* open attribute1 */ * open attribute1 */
@@ -222,7 +227,7 @@ static herr_t build_match_list_attrs(hid_t loc1_id, hid_t loc2_id, table_attrs_t
infile[0] = 1; infile[0] = 1;
infile[1] = 0; infile[1] = 0;
while(curr1 < oinfo1.num_attrs) { while(curr1 < oinfo1.num_attrs) {
h5diffdebug3("build_match_list_attrs 1: %ld - %ld\n", curr1, oinfo1.num_attrs); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "build_match_list_attrs 1: %ld - %ld", curr1, oinfo1.num_attrs);
/*------------------ /*------------------
* open attribute1 */ * open attribute1 */
@@ -231,7 +236,7 @@ static herr_t build_match_list_attrs(hid_t loc1_id, hid_t loc2_id, table_attrs_t
/* get name */ /* 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)
H5TOOLS_GOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Aget_name first attribute failed"); H5TOOLS_GOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Aget_name first attribute failed");
h5diffdebug2("build_match_list_attrs #1 name - %s\n", name1); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "build_match_list_attrs #1 name - %s", name1);
table_attr_mark_exist(infile, name1, table_lp); table_attr_mark_exist(infile, name1, table_lp);
table_lp->nattrs_only1++; table_lp->nattrs_only1++;
@@ -246,7 +251,7 @@ static herr_t build_match_list_attrs(hid_t loc1_id, hid_t loc2_id, table_attrs_t
infile[0] = 0; infile[0] = 0;
infile[1] = 1; infile[1] = 1;
while(curr2 < oinfo2.num_attrs) { while(curr2 < oinfo2.num_attrs) {
h5diffdebug3("build_match_list_attrs 2: %ld - %ld\n", curr2, oinfo2.num_attrs); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "build_match_list_attrs 2: %ld - %ld", curr2, oinfo2.num_attrs);
/*------------------ /*------------------
* open attribute2 */ * 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)
@@ -254,7 +259,7 @@ static herr_t build_match_list_attrs(hid_t loc1_id, hid_t loc2_id, table_attrs_t
/* get name */ /* 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)
H5TOOLS_GOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Aget_name second attribute failed"); H5TOOLS_GOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Aget_name second attribute failed");
h5diffdebug2("build_match_list_attrs #2 name - %s\n", name2); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "build_match_list_attrs #2 name - %s", name2);
table_attr_mark_exist(infile, name2, table_lp); table_attr_mark_exist(infile, name2, table_lp);
table_lp->nattrs_only2++; table_lp->nattrs_only2++;
@@ -294,39 +299,32 @@ done:
H5Aclose(attr2_id); H5Aclose(attr2_id);
} H5E_END_TRY; } H5E_END_TRY;
h5diffdebug2("build_match_list_attrs end - errstat:%d\n", opts->err_stat); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "build_match_list_attrs end - errstat:%d", opts->err_stat);
H5TOOLS_ENDDEBUG(H5E_tools_min_dbg_id_g, "exit");
H5TOOLS_POP_STACK();
return ret_value; return ret_value;
} }
/*------------------------------------------------------------------------- /*-------------------------------------------------------------------------
* Function: diff_attr * Function: diff_attr_data
* *
* Purpose: compare attributes located in LOC1_ID and LOC2_ID, which are * Purpose: compare attribute data located in attr1_id and attr2_id, which are
* obtained either from * obtained from open attributes
* loc_id = H5Gopen2(fid, name, H5P_DEFAULT);
* loc_id = H5Dopen2(fid, name);
* loc_id = H5Topen2(fid, name, H5P_DEFAULT);
* *
* Return: number of differences found * Return: number of differences found
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
hsize_t diff_attr(hid_t loc1_id, hsize_t diff_attr_data(hid_t attr1_id, hid_t attr2_id, const char *name1, const char *name2, const char *path1, const char *path2, diff_opt_t *opts)
hid_t loc2_id,
const char *path1,
const char *path2,
diff_opt_t *opts)
{ {
int ret_value = opts->err_stat; H5TOOLS_ERR_INIT(int, opts->err_stat)
hid_t attr1_id = -1; /* attr ID */ hid_t space1_id = H5I_INVALID_HID; /* space ID */
hid_t attr2_id = -1; /* attr ID */ hid_t space2_id = H5I_INVALID_HID; /* space ID */
hid_t space1_id = -1; /* space ID */ hid_t ftype1_id = H5I_INVALID_HID; /* file data type ID */
hid_t space2_id = -1; /* space ID */ hid_t ftype2_id = H5I_INVALID_HID; /* file data type ID */
hid_t ftype1_id = -1; /* file data type ID */ hid_t mtype1_id = H5I_INVALID_HID; /* memory data type ID */
hid_t ftype2_id = -1; /* file data type ID */ hid_t mtype2_id = H5I_INVALID_HID; /* memory 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 */ size_t msize2; /* memory size of memory type */
void *buf1 = NULL; /* data buffer */ void *buf1 = NULL; /* data buffer */
@@ -338,212 +336,166 @@ hsize_t diff_attr(hid_t loc1_id,
int rank2; /* rank of dataset */ int rank2; /* rank of dataset */
hsize_t dims1[H5S_MAX_RANK]; /* dimensions of dataset */ hsize_t dims1[H5S_MAX_RANK]; /* dimensions of dataset */
hsize_t dims2[H5S_MAX_RANK]; /* dimensions of dataset */ hsize_t dims2[H5S_MAX_RANK]; /* dimensions of dataset */
char *name1 = NULL;
char *name2 = NULL;
char np1[512]; char np1[512];
char np2[512]; char np2[512];
unsigned u; /* Local index variable */ unsigned u; /* Local index variable */
hsize_t nfound = 0; hsize_t nfound = 0;
hsize_t nfound_total = 0;
int j; int j;
table_attrs_t *match_list_attrs = NULL; H5TOOLS_PUSH_STACK();
h5difftrace("diff_attr start\n"); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "diff_attr_data start - errstat:%d", opts->err_stat);
if(build_match_list_attrs(loc1_id, loc2_id, &match_list_attrs, opts) < 0) { /* get the datatypes */
H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "build_match_list_attrs failed"); if((ftype1_id = H5Aget_type(attr1_id)) < 0)
H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "H5Aget_type first attribute failed");
if((ftype2_id = H5Aget_type(attr2_id)) < 0)
H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "H5Aget_type second attribute failed");
if (H5Tget_class(ftype1_id) == H5T_REFERENCE) {
if((mtype1_id = H5Tcopy(H5T_STD_REF)) < 0)
H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "H5Tcopy(H5T_STD_REF) first attribute ftype failed");
} }
h5diffdebug2("build_match_list_attrs - errstat:%d\n", opts->err_stat); else {
if((mtype1_id = H5Tget_native_type(ftype1_id, H5T_DIR_DEFAULT)) < 0)
/* if detect any unique extra attr */ H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "H5Tget_native_type first attribute ftype failed");
if(match_list_attrs->nattrs_only1 || match_list_attrs->nattrs_only2) {
h5difftrace("diff_attr attributes only in one file\n");
/* exit will be 1 */
opts->contents = 0;
} }
h5diffdebug2("match_list_attrs info - errstat:%d\n", opts->err_stat); if (H5Tget_class(ftype2_id) == H5T_REFERENCE) {
if((mtype2_id = H5Tcopy(H5T_STD_REF)) < 0)
H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "H5Tcopy(H5T_STD_REF) second attribute ftype failed");
}
else {
if((mtype2_id = H5Tget_native_type(ftype2_id, H5T_DIR_DEFAULT)) < 0)
H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "H5Tget_native_type second attribute ftype failed");
}
if((msize1 = H5Tget_size(mtype1_id)) == 0)
H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "H5Tget_size first attribute mtype failed");
if((msize2 = H5Tget_size(mtype2_id)) == 0)
H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "H5Tget_size second attribute mtype failed");
for(u = 0; u < (unsigned)match_list_attrs->nattrs; u++) { /* get the dataspace */
h5diffdebug3("match_list_attrs loop[%d] - errstat:%d\n", u, opts->err_stat); if((space1_id = H5Aget_space(attr1_id)) < 0)
if((match_list_attrs->attrs[u].exist[0]) && (match_list_attrs->attrs[u].exist[1])) { H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "H5Aget_space first attribute failed");
name1 = name2 = match_list_attrs->attrs[u].name; if((space2_id = H5Aget_space(attr2_id)) < 0)
h5diffdebug2("diff_attr name - %s\n", name1); H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "H5Aget_space second attribute failed");
/*-------------- /* get dimensions */
* attribute 1 */ if((rank1 = H5Sget_simple_extent_dims(space1_id, dims1, NULL)) < 0)
if((attr1_id = H5Aopen(loc1_id, name1, H5P_DEFAULT)) < 0) H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "H5Sget_simple_extent_dims first attribute failed");
H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "H5Aopen first attribute failed"); if((rank2 = H5Sget_simple_extent_dims(space2_id, dims2, NULL)) < 0)
H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "H5Sget_simple_extent_dims second attribute failed");
/*-------------- /*----------------------------------------------------------------------
* attribute 2 */ * check for comparable TYPE and SPACE
if((attr2_id = H5Aopen(loc2_id, name2, H5P_DEFAULT)) < 0) *----------------------------------------------------------------------
H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "H5Aopen second attribute failed"); */
H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "diff_attr_data check for comparable TYPE and SPACE");
h5difftrace("diff_attr got attributes\n"); /* pass dims1 and dims2 for maxdims as well since attribute's maxdims
/* get the datatypes */ * are always same */
if((ftype1_id = H5Aget_type(attr1_id)) < 0) if(diff_can_type(ftype1_id, ftype2_id, rank1, rank2, dims1, dims2, dims1, dims2, name1, name2, opts, 0) == 1) {
H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "H5Aget_type first attribute failed"); /*-----------------------------------------------------------------
if((ftype2_id = H5Aget_type(attr2_id)) < 0) * "upgrade" the smaller memory size
H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "H5Aget_type second attribute failed"); *------------------------------------------------------------------
*/
if(FAIL == match_up_memsize(ftype1_id, ftype2_id, &mtype1_id, &mtype2_id, &msize1, &msize2))
H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "match_up_memsize failed");
if((mtype1_id = H5Tget_native_type(ftype1_id, H5T_DIR_DEFAULT)) < 0) H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "diff_attr_data read");
H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "H5Tget_native_type first attribute ftype failed"); /*---------------------------------------------------------------------
if((mtype2_id = H5Tget_native_type(ftype2_id, H5T_DIR_DEFAULT)) < 0) * read
H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "H5Tget_native_type second attribute ftype failed"); *----------------------------------------------------------------------
if((msize1 = H5Tget_size(mtype1_id)) == 0) */
H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "H5Tget_size first attribute mtype failed"); nelmts1 = 1;
if((msize2 = H5Tget_size(mtype2_id)) == 0) for(j = 0; j < rank1; j++)
H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "H5Tget_size second attribute mtype failed"); nelmts1 *= dims1[j];
/* get the dataspace */ buf1 = (void *)HDcalloc((size_t)(nelmts1), msize1);
if((space1_id = H5Aget_space(attr1_id)) < 0) buf2 = (void *)HDcalloc((size_t)(nelmts1), msize2);
H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "H5Aget_space first attribute failed"); if(buf1 == NULL || buf2 == NULL) {
if((space2_id = H5Aget_space(attr2_id)) < 0) parallel_print("cannot read into memory\n");
H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "H5Aget_space second attribute failed"); H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "buffer allocation failed");
/* get dimensions */
if((rank1 = H5Sget_simple_extent_dims(space1_id, dims1, NULL)) < 0)
H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "H5Sget_simple_extent_dims first attribute failed");
if((rank2 = H5Sget_simple_extent_dims(space2_id, dims2, NULL)) < 0)
H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "H5Sget_simple_extent_dims second attribute failed");
/*----------------------------------------------------------------------
* check for comparable TYPE and SPACE
*----------------------------------------------------------------------
*/
/* 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,
dims1, dims2, name1, name2, opts, 0) != 1) {
if(H5Tclose(ftype1_id) < 0)
H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "H5Tclose first attribute ftype failed");
if(H5Tclose(ftype2_id) < 0)
H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "H5Tclose second attribute ftype failed");
if(H5Sclose(space1_id) < 0)
H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "H5Sclose first attribute failed");
if(H5Sclose(space2_id) < 0)
H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "H5Sclose second attribute failed");
if(H5Aclose(attr1_id) < 0)
H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "H5Aclose first attribute failed");
if(H5Aclose(attr2_id) < 0)
H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "H5Aclose second attribute failed");
if(H5Tclose(mtype1_id) < 0)
H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "H5Tclose first attribute mtype failed");
if(H5Tclose(mtype2_id) < 0)
H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "H5Tclose second attribute mtype failed");
continue;
}
/*-----------------------------------------------------------------
* "upgrade" the smaller memory size
*------------------------------------------------------------------
*/
if(FAIL == match_up_memsize(ftype1_id, ftype2_id, &mtype1_id,
&mtype2_id, &msize1, &msize2))
H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "match_up_memsize failed");
/*---------------------------------------------------------------------
* read
*----------------------------------------------------------------------
*/
nelmts1 = 1;
for(j = 0; j < rank1; j++)
nelmts1 *= dims1[j];
buf1 = (void *)HDcalloc((size_t)(nelmts1), msize1);
buf2 = (void *)HDcalloc((size_t)(nelmts1), msize2);
if(buf1 == NULL || buf2 == NULL) {
parallel_print("cannot read into memory\n");
H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "buffer allocation failed");
}
if(H5Aread(attr1_id, mtype1_id, buf1) < 0) {
parallel_print("Failed reading attribute1 %s/%s\n", path1, name1);
H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "H5Aget_type first attribute failed");
}
else
buf1hasdata = TRUE;
if(H5Aread(attr2_id, mtype2_id, buf2) < 0) {
parallel_print("Failed reading attribute2 %s/%s\n", path2, name2);
H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "H5Aget_type second attribute failed");
}
else
buf2hasdata = TRUE;
/* format output string */
HDsnprintf(np1, sizeof(np1), "%s of <%s>", name1, path1);
HDsnprintf(np2, sizeof(np1), "%s of <%s>", name2, path2);
/*---------------------------------------------------------------------
* array compare
*----------------------------------------------------------------------
*/
/* always print name */
/* verbose (-v) and report (-r) mode */
if(opts->m_verbose || opts->m_report) {
do_print_attrname("attribute", np1, np2);
nfound = diff_array(buf1, buf2, nelmts1, (hsize_t) 0, rank1,
dims1, opts, np1, np2, mtype1_id, attr1_id, attr2_id);
print_found(nfound);
}
/* quiet mode (-q), just count differences */
else if(opts->m_quiet) {
nfound = diff_array(buf1, buf2, nelmts1, (hsize_t) 0, rank1,
dims1, opts, np1, np2, mtype1_id, attr1_id, attr2_id);
}
/* the rest (-c, none, ...) */
else {
nfound = diff_array(buf1, buf2, nelmts1, (hsize_t) 0, rank1,
dims1, opts, np1, np2, mtype1_id, attr1_id, attr2_id);
/* print info if compatible and difference found */
if (nfound) {
do_print_attrname("attribute", np1, np2);
print_found(nfound);
} /* end if */
} /* end else */
/*----------------------------------------------------------------------
* close
*----------------------------------------------------------------------
*/
/* Free buf1 and buf2, check both VLEN-data VLEN-string to reclaim any
* VLEN memory first */
if(TRUE == h5tools_detect_vlen(mtype1_id))
H5Treclaim(mtype1_id, space1_id, H5P_DEFAULT, buf1);
HDfree(buf1);
buf1 = NULL;
if(TRUE == h5tools_detect_vlen(mtype2_id))
H5Treclaim(mtype2_id, space2_id, H5P_DEFAULT, buf2);
HDfree(buf2);
buf2 = NULL;
if(H5Tclose(ftype1_id) < 0)
H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "H5Aget_type first attribute failed");
if(H5Tclose(ftype2_id) < 0)
H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "H5Aget_type second attribute failed");
if(H5Sclose(space1_id) < 0)
H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "H5Aget_type first attribute failed");
if(H5Sclose(space2_id) < 0)
H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "H5Aget_type second attribute failed");
if(H5Aclose(attr1_id) < 0)
H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "H5Aget_type first attribute failed");
if(H5Aclose(attr2_id) < 0)
H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "H5Aget_type second attribute failed");
if(H5Tclose(mtype1_id) < 0)
H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "H5Tclose first attribute mtype failed");
if(H5Tclose(mtype2_id) < 0)
H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "H5Tclose second attribute mtype failed");
nfound_total += nfound;
} }
} /* u */ if(H5Aread(attr1_id, mtype1_id, buf1) < 0) {
parallel_print("Failed reading attribute1 %s\n", name1);
H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "H5Aget_type first attribute failed");
}
else
buf1hasdata = TRUE;
if(H5Aread(attr2_id, mtype2_id, buf2) < 0) {
parallel_print("Failed reading attribute2 %s\n", name2);
H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "H5Aget_type second attribute failed");
}
else
buf2hasdata = TRUE;
/* format output string */
HDsnprintf(np1, sizeof(np1), "%s of <%s>", name1, path1);
HDsnprintf(np2, sizeof(np1), "%s of <%s>", name2, path2);
/*---------------------------------------------------------------------
* array compare
*----------------------------------------------------------------------
*/
H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "diff_attr_data array compare %s - %s", name1, name1);
/* always print name */
/* verbose (-v) and report (-r) mode */
if(opts->m_verbose || opts->m_report) {
do_print_attrname("attribute", np1, np2);
nfound = diff_array(buf1, buf2, nelmts1, (hsize_t) 0, rank1,
dims1, opts, np1, np2, mtype1_id, attr1_id, attr2_id);
print_found(nfound);
}
/* quiet mode (-q), just count differences */
else if(opts->m_quiet) {
nfound = diff_array(buf1, buf2, nelmts1, (hsize_t) 0, rank1,
dims1, opts, np1, np2, mtype1_id, attr1_id, attr2_id);
}
/* the rest (-c, none, ...) */
else {
nfound = diff_array(buf1, buf2, nelmts1, (hsize_t) 0, rank1,
dims1, opts, np1, np2, mtype1_id, attr1_id, attr2_id);
/* print info if compatible and difference found */
if (nfound) {
do_print_attrname("attribute", np1, np2);
print_found(nfound);
} /* end if */
} /* end else */
}
H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "diff_attr_data check for comparable TYPE and SPACE complete nfound:%d - errstat:%d", nfound, opts->err_stat);
/*----------------------------------------------------------------------
* close
*----------------------------------------------------------------------
*/
/* Free buf1 and buf2, check both VLEN-data VLEN-string to reclaim any
* VLEN memory first */
if(TRUE == h5tools_detect_vlen(mtype1_id))
H5Treclaim(mtype1_id, space1_id, H5P_DEFAULT, buf1);
HDfree(buf1);
buf1 = NULL;
if(TRUE == h5tools_detect_vlen(mtype2_id))
H5Treclaim(mtype2_id, space2_id, H5P_DEFAULT, buf2);
HDfree(buf2);
buf2 = NULL;
if(H5Tclose(ftype1_id) < 0)
H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "H5Aget_type first attribute failed");
if(H5Tclose(ftype2_id) < 0)
H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "H5Aget_type second attribute failed");
if(H5Sclose(space1_id) < 0)
H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "H5Aget_type first attribute failed");
if(H5Sclose(space2_id) < 0)
H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "H5Aget_type second attribute failed");
if(H5Tclose(mtype1_id) < 0)
H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "H5Tclose first attribute mtype failed");
if(H5Tclose(mtype2_id) < 0)
H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "H5Tclose second attribute mtype failed");
done: done:
opts->err_stat = opts->err_stat | ret_value; opts->err_stat = opts->err_stat | ret_value;
@@ -560,19 +512,102 @@ done:
HDfree(buf2); HDfree(buf2);
} /* end if */ } /* end if */
table_attrs_free(match_list_attrs);
H5Tclose(ftype1_id); H5Tclose(ftype1_id);
H5Tclose(ftype2_id); H5Tclose(ftype2_id);
H5Tclose(mtype1_id); H5Tclose(mtype1_id);
H5Tclose(mtype2_id); H5Tclose(mtype2_id);
H5Sclose(space1_id); H5Sclose(space1_id);
H5Sclose(space2_id); H5Sclose(space2_id);
} H5E_END_TRY;
H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "diff_attr_data end - errstat:%d", opts->err_stat);
H5TOOLS_ENDDEBUG(H5E_tools_min_dbg_id_g, "exit");
H5TOOLS_POP_STACK();
return nfound;
}
/*-------------------------------------------------------------------------
* Function: diff_attr
*
* Purpose: compare attributes located in LOC1_ID and LOC2_ID, which are
* obtained either from
* loc_id = H5Gopen2(fid, name, H5P_DEFAULT);
* loc_id = H5Dopen2(fid, name);
* loc_id = H5Topen2(fid, name, H5P_DEFAULT);
*
* Return: number of differences found
*-------------------------------------------------------------------------
*/
hsize_t diff_attr(hid_t loc1_id, hid_t loc2_id, const char *path1, const char *path2, diff_opt_t *opts)
{
H5TOOLS_ERR_INIT(int, opts->err_stat)
hid_t attr1_id = H5I_INVALID_HID; /* attr ID */
hid_t attr2_id = H5I_INVALID_HID; /* attr ID */
char *name1 = NULL;
char *name2 = NULL;
unsigned u; /* Local index variable */
hsize_t nfound = 0;
hsize_t nfound_total = 0;
H5TOOLS_PUSH_STACK();
table_attrs_t *match_list_attrs = NULL;
H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "diff_attr start - errstat:%d", opts->err_stat);
if(build_match_list_attrs(loc1_id, loc2_id, &match_list_attrs, opts) < 0) {
H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "build_match_list_attrs failed");
}
H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "build_match_list_attrs - errstat:%d", opts->err_stat);
/* if detect any unique extra attr */
if(match_list_attrs->nattrs_only1 || match_list_attrs->nattrs_only2) {
H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "diff_attr attributes only in one file");
/* exit will be 1 */
opts->contents = 0;
}
H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g,"match_list_attrs info - errstat:%d", opts->err_stat);
for(u = 0; u < (unsigned)match_list_attrs->nattrs; u++) {
H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "match_list_attrs loop[%d] - errstat:%d", u, opts->err_stat);
if((match_list_attrs->attrs[u].exist[0]) && (match_list_attrs->attrs[u].exist[1])) {
name1 = name2 = match_list_attrs->attrs[u].name;
H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "diff_attr name - %s", name1);
/*--------------
* attribute 1 */
if((attr1_id = H5Aopen(loc1_id, name1, H5P_DEFAULT)) < 0)
H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "H5Aopen first attribute failed");
/*--------------
* attribute 2 */
if((attr2_id = H5Aopen(loc2_id, name2, H5P_DEFAULT)) < 0)
H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "H5Aopen second attribute failed");
H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "diff_attr got attributes");
nfound = diff_attr_data(attr1_id, attr2_id, name1, name2, path1, path2, opts);
if(H5Aclose(attr1_id) < 0)
H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "H5Aget_type first attribute failed");
if(H5Aclose(attr2_id) < 0)
H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "H5Aget_type second attribute failed");
nfound_total += nfound;
}
} /* u */
done:
opts->err_stat = opts->err_stat | ret_value;
H5E_BEGIN_TRY {
table_attrs_free(match_list_attrs);
H5Aclose(attr1_id); H5Aclose(attr1_id);
H5Aclose(attr2_id); H5Aclose(attr2_id);
} H5E_END_TRY; } H5E_END_TRY;
h5diffdebug2("diff_attr end - errstat:%d\n", opts->err_stat); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "diff_attr end - errstat:%d", opts->err_stat);
H5TOOLS_ENDDEBUG(H5E_tools_min_dbg_id_g, "exit");
H5TOOLS_POP_STACK();
return nfound_total; return nfound_total;
} }

View File

@@ -33,7 +33,7 @@ hsize_t diff_dataset(hid_t file1_id,
const char *obj2_name, const char *obj2_name,
diff_opt_t *opts) diff_opt_t *opts)
{ {
int ret_value = opts->err_stat; H5TOOLS_ERR_INIT(int, opts->err_stat)
int status = -1; int status = -1;
hid_t did1 = -1; hid_t did1 = -1;
hid_t did2 = -1; hid_t did2 = -1;
@@ -41,7 +41,8 @@ hsize_t diff_dataset(hid_t file1_id,
hid_t dcpl2 = -1; hid_t dcpl2 = -1;
hsize_t nfound = 0; hsize_t nfound = 0;
h5difftrace("diff_dataset start\n"); H5TOOLS_PUSH_STACK();
H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "diff_dataset start - errstat:%d", opts->err_stat);
/*------------------------------------------------------------------------- /*-------------------------------------------------------------------------
* open the handles * open the handles
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
@@ -68,6 +69,7 @@ hsize_t diff_dataset(hid_t file1_id,
* 2) the internal filters might be turned off * 2) the internal filters might be turned off
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "diff_dataset h5tools_canreadf then diff_datasetid");
if ((status = h5tools_canreadf((opts->m_verbose ? obj1_name : NULL), dcpl1) == 1) && if ((status = h5tools_canreadf((opts->m_verbose ? obj1_name : NULL), dcpl1) == 1) &&
(status = h5tools_canreadf((opts->m_verbose ? obj2_name : NULL), dcpl2) == 1)) (status = h5tools_canreadf((opts->m_verbose ? obj2_name : NULL), dcpl2) == 1))
nfound = diff_datasetid(did1, did2, obj1_name, obj2_name, opts); nfound = diff_datasetid(did1, did2, obj1_name, obj2_name, opts);
@@ -91,7 +93,9 @@ done:
/* enable error reporting */ /* enable error reporting */
} H5E_END_TRY; } H5E_END_TRY;
h5diffdebug3("diff_dataset finish:%d - errstat:%d\n", nfound, opts->err_stat); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "diff_dataset finish:%d - errstat:%d", nfound, opts->err_stat);
H5TOOLS_ENDDEBUG(H5E_tools_min_dbg_id_g, "exit");
H5TOOLS_POP_STACK();
return nfound; return nfound;
} }
@@ -152,16 +156,16 @@ hsize_t diff_datasetid(hid_t did1,
const char *obj2_name, const char *obj2_name,
diff_opt_t *opts) diff_opt_t *opts)
{ {
int ret_value = opts->err_stat; H5TOOLS_ERR_INIT(int, opts->err_stat)
hid_t sid1 = -1; hid_t sid1 = H5I_INVALID_HID;
hid_t sid2 = -1; hid_t sid2 = H5I_INVALID_HID;
hid_t f_tid1 = -1; hid_t f_tid1 = H5I_INVALID_HID;
hid_t f_tid2 = -1; hid_t f_tid2 = H5I_INVALID_HID;
hid_t dam_tid = -1; /* m_tid for diff_array function */ hid_t dam_tid = H5I_INVALID_HID; /* m_tid for diff_array function */
hid_t m_tid1 = -1; hid_t m_tid1 = H5I_INVALID_HID;
hid_t m_tid2 = -1; hid_t m_tid2 = H5I_INVALID_HID;
hid_t dcpl1 = -1; hid_t dcpl1 = H5I_INVALID_HID;
hid_t dcpl2 = -1; hid_t dcpl2 = H5I_INVALID_HID;
H5D_layout_t stl1 = -1; H5D_layout_t stl1 = -1;
H5D_layout_t stl2 = -1; H5D_layout_t stl2 = -1;
size_t dam_size; /* m_size for diff_array function */ size_t dam_size; /* m_size for diff_array function */
@@ -189,13 +193,14 @@ hsize_t diff_datasetid(hid_t did1,
void *buf2 = NULL; void *buf2 = NULL;
void *sm_buf1 = NULL; void *sm_buf1 = NULL;
void *sm_buf2 = NULL; void *sm_buf2 = NULL;
hid_t sm_space = -1; /*stripmine data space */ hid_t sm_space = H5I_INVALID_HID; /*stripmine data space */
size_t need; /* bytes needed for malloc */ size_t need; /* bytes needed for malloc */
int i; int i;
unsigned int vl_data1 = 0; /*contains VL datatypes */ unsigned int vl_data1 = 0; /*contains VL datatypes */
unsigned int vl_data2 = 0; /*contains VL datatypes */ unsigned int vl_data2 = 0; /*contains VL datatypes */
h5difftrace("diff_datasetid start\n"); H5TOOLS_PUSH_STACK();
H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "diff_datasetid start - errstat:%d", opts->err_stat);
/* Get the dataspace handle */ /* Get the dataspace handle */
if((sid1 = H5Dget_space(did1)) < 0) if((sid1 = H5Dget_space(did1)) < 0)
H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "H5Dget_space failed"); H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "H5Dget_space failed");
@@ -219,7 +224,7 @@ hsize_t diff_datasetid(hid_t did1,
/* Get dimensions */ /* Get dimensions */
if(H5Sget_simple_extent_dims(sid2, dims2, maxdim2) < 0) if(H5Sget_simple_extent_dims(sid2, dims2, maxdim2) < 0)
H5TOOLS_GOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Sget_simple_extent_dims failed"); H5TOOLS_GOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Sget_simple_extent_dims failed");
h5diffdebug3("rank: %ld - %ld\n", rank1, rank2); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "rank: %ld - %ld", rank1, rank2);
/*------------------------------------------------------------------------- /*-------------------------------------------------------------------------
* get the file data type * get the file data type
@@ -252,11 +257,11 @@ hsize_t diff_datasetid(hid_t did1,
* check for empty datasets * check for empty datasets
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
h5difftrace("check for empty datasets\n"); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "check for empty datasets");
storage_size1 = H5Dget_storage_size(did1); storage_size1 = H5Dget_storage_size(did1);
storage_size2 = H5Dget_storage_size(did2); storage_size2 = H5Dget_storage_size(did2);
h5diffdebug3("storage size: %ld - %ld\n", storage_size1, storage_size2); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "storage size: %ld - %ld", storage_size1, storage_size2);
if(storage_size1 == 0 || storage_size2 == 0) { if(storage_size1 == 0 || storage_size2 == 0) {
if(stl1 == H5D_VIRTUAL || stl2 == H5D_VIRTUAL) { if(stl1 == H5D_VIRTUAL || stl2 == H5D_VIRTUAL) {
@@ -280,33 +285,45 @@ hsize_t diff_datasetid(hid_t did1,
obj1_name, obj2_name, obj1_name, obj2_name,
opts, 0) != 1) opts, 0) != 1)
can_compare = 0; can_compare = 0;
h5diffdebug2("diff_can_type - errstat:%d\n", opts->err_stat); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "diff_can_type - errstat:%d", opts->err_stat);
/*------------------------------------------------------------------------- /*-------------------------------------------------------------------------
* memory type and sizes * memory type and sizes
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
h5difftrace("check for memory type and sizes\n"); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "check for memory type and sizes");
if((m_tid1 = H5Tget_native_type(f_tid1, H5T_DIR_DEFAULT)) < 0) if (H5Tget_class(f_tid1) == H5T_REFERENCE) {
H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "H5Tget_native_type failed"); if((m_tid1 = H5Tcopy(H5T_STD_REF)) < 0)
H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "H5Tcopy(H5T_STD_REF) first ftype failed");
}
else {
if((m_tid1 = H5Tget_native_type(f_tid1, H5T_DIR_DEFAULT)) < 0)
H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "H5Tget_native_type first ftype failed");
}
if((m_tid2 = H5Tget_native_type(f_tid2, H5T_DIR_DEFAULT)) < 0) if (H5Tget_class(f_tid2) == H5T_REFERENCE) {
H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "H5Tget_native_type failed"); if((m_tid2 = H5Tcopy(H5T_STD_REF)) < 0)
H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "H5Tcopy(H5T_STD_REF) second ftype failed");
}
else {
if((m_tid2 = H5Tget_native_type(f_tid2, H5T_DIR_DEFAULT)) < 0)
H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "H5Tget_native_type second ftype failed");
}
m_size1 = H5Tget_size(m_tid1); m_size1 = H5Tget_size(m_tid1);
m_size2 = H5Tget_size(m_tid2); m_size2 = H5Tget_size(m_tid2);
h5diffdebug3("type size: %ld - %ld\n", m_size1, m_size2); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "type size: %ld - %ld", m_size1, m_size2);
/*------------------------------------------------------------------------- /*-------------------------------------------------------------------------
* check for different signed/unsigned types * check for different signed/unsigned types
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
if(can_compare) { if(can_compare) {
h5difftrace("can_compare for sign\n"); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "can_compare for sign");
sign1 = H5Tget_sign(m_tid1); sign1 = H5Tget_sign(m_tid1);
sign2 = H5Tget_sign(m_tid2); sign2 = H5Tget_sign(m_tid2);
if(sign1 != sign2) { if(sign1 != sign2) {
h5difftrace("sign1 != sign2\n"); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "sign1 != sign2");
if((opts->m_verbose || opts->m_list_not_cmp) && obj1_name && obj2_name) { if((opts->m_verbose || opts->m_list_not_cmp) && obj1_name && obj2_name) {
parallel_print("Not comparable: <%s> has sign %s ", obj1_name, get_sign(sign1)); parallel_print("Not comparable: <%s> has sign %s ", obj1_name, get_sign(sign1));
parallel_print("and <%s> has sign %s\n", obj2_name, get_sign(sign2)); parallel_print("and <%s> has sign %s\n", obj2_name, get_sign(sign2));
@@ -315,6 +332,7 @@ hsize_t diff_datasetid(hid_t did1,
can_compare = 0; can_compare = 0;
opts->not_cmp = 1; opts->not_cmp = 1;
} }
H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "can_compare for sign - can_compare=%d opts->not_cmp=%d", can_compare, opts->not_cmp);
} }
/* Check if type is either VLEN-data or VLEN-string to reclaim any /* Check if type is either VLEN-data or VLEN-string to reclaim any
@@ -324,7 +342,7 @@ hsize_t diff_datasetid(hid_t did1,
vl_data1 = TRUE; vl_data1 = TRUE;
if(TRUE == h5tools_detect_vlen(m_tid2)) if(TRUE == h5tools_detect_vlen(m_tid2))
vl_data2 = TRUE; vl_data2 = TRUE;
h5diffdebug2("h5tools_detect_vlen - errstat:%d\n", opts->err_stat); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "h5tools_detect_vlen %d:%d - errstat:%d", vl_data1, vl_data2, opts->err_stat);
/*------------------------------------------------------------------------ /*------------------------------------------------------------------------
* only attempt to compare if possible * only attempt to compare if possible
@@ -332,7 +350,7 @@ hsize_t diff_datasetid(hid_t did1,
*/ */
if(can_compare) { /* it is possible to compare */ if(can_compare) { /* it is possible to compare */
H5T_class_t tclass = H5Tget_class(f_tid1); H5T_class_t tclass = H5Tget_class(f_tid1);
h5difftrace("can_compare attempt\n"); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "can_compare attempt");
/*----------------------------------------------------------------- /*-----------------------------------------------------------------
* get number of elements * get number of elements
@@ -346,19 +364,19 @@ hsize_t diff_datasetid(hid_t did1,
for(i = 0; i < rank2; i++) for(i = 0; i < rank2; i++)
nelmts2 *= dims2[i]; nelmts2 *= dims2[i];
h5diffdebug3("nelmts: %ld - %ld\n", nelmts1, nelmts2); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "nelmts: %ld - %ld", nelmts1, nelmts2);
if(tclass != H5T_ARRAY) { if(tclass != H5T_ARRAY) {
/*----------------------------------------------------------------- /*-----------------------------------------------------------------
* "upgrade" the smaller memory size * "upgrade" the smaller memory size
*------------------------------------------------------------------ *------------------------------------------------------------------
*/ */
h5difftrace("upgrade the smaller memory size?\n"); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "NOT H5T_ARRAY, upgrade the smaller memory size?");
if (FAIL == match_up_memsize (f_tid1, f_tid2, if (FAIL == match_up_memsize (f_tid1, f_tid2,
&m_tid1, &m_tid2, &m_tid1, &m_tid2,
&m_size1, &m_size2)) &m_size1, &m_size2))
H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "match_up_memsize failed"); H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "match_up_memsize failed");
h5diffdebug3("m_size: %ld - %ld\n", m_size1, m_size2); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "m_size: %ld - %ld", m_size1, m_size2);
dadims = dims1; dadims = dims1;
dam_size = m_size1; dam_size = m_size1;
dam_tid = m_tid1; dam_tid = m_tid1;
@@ -366,7 +384,7 @@ hsize_t diff_datasetid(hid_t did1,
need = (size_t)(nelmts1 * m_size1); /* bytes needed */ need = (size_t)(nelmts1 * m_size1); /* bytes needed */
} }
else { else {
h5diffdebug3("Array dims: %d - %d\n", dims1[0], dims2[0]); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "Array dims: %d - %d", dims1[0], dims2[0]);
/* Compare the smallest array, but create the largest buffer */ /* Compare the smallest array, but create the largest buffer */
if(m_size1 <= m_size2) { if(m_size1 <= m_size2) {
dadims = dims1; dadims = dims1;
@@ -388,9 +406,10 @@ hsize_t diff_datasetid(hid_t did1,
name1 = diff_basename(obj1_name); name1 = diff_basename(obj1_name);
if(obj2_name) if(obj2_name)
name2 = diff_basename(obj2_name); name2 = diff_basename(obj2_name);
h5diffdebug3("obj_names: %s - %s\n", name1, name2); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "obj_names: %s - %s", name1, name2);
H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "read/compare");
/*---------------------------------------------------------------- /*----------------------------------------------------------------
* read/compare * read/compare
*----------------------------------------------------------------- *-----------------------------------------------------------------
@@ -401,23 +420,24 @@ hsize_t diff_datasetid(hid_t did1,
} /* end if */ } /* end if */
if(buf1 != NULL && buf2 != NULL) { if(buf1 != NULL && buf2 != NULL) {
h5difftrace("buf1 != NULL && buf2 != NULL\n"); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "buf1 != NULL && buf2 != NULL");
H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "H5Dread did1");
if(H5Dread(did1, m_tid1, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf1) < 0) if(H5Dread(did1, m_tid1, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf1) < 0)
H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "H5Dread failed"); H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "H5Dread failed");
h5difftrace("H5Dread did2\n"); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "H5Dread did2");
if(H5Dread(did2, m_tid2, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf2) < 0) if(H5Dread(did2, m_tid2, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf2) < 0)
H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "H5Dread failed"); H5TOOLS_GOTO_ERROR(1, H5E_tools_min_id_g, "H5Dread failed");
/* array diff */ /* array diff */
nfound = diff_array(buf1, buf2, danelmts, (hsize_t)0, rank1, dadims, nfound = diff_array(buf1, buf2, danelmts, (hsize_t)0, rank1, dadims,
opts, name1, name2, dam_tid, did1, did2); opts, name1, name2, dam_tid, did1, did2);
h5diffdebug2("diff_array nfound:%d\n", nfound); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "diff_array nfound:%d - errstat:%d", nfound, opts->err_stat);
/* reclaim any VL memory, if necessary */ /* reclaim any VL memory, if necessary */
h5diffdebug2("check vl_data1:%d\n", vl_data1); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "check vl_data1:%d", vl_data1);
if(vl_data1) if(vl_data1)
H5Treclaim(m_tid1, sid1, H5P_DEFAULT, buf1); H5Treclaim(m_tid1, sid1, H5P_DEFAULT, buf1);
h5diffdebug2("check vl_data2:%d\n", vl_data2); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "check vl_data2:%d", vl_data2);
if(vl_data2) if(vl_data2)
H5Treclaim(m_tid2, sid2, H5P_DEFAULT, buf2); H5Treclaim(m_tid2, sid2, H5P_DEFAULT, buf2);
if(buf1 != NULL) { if(buf1 != NULL) {
@@ -459,7 +479,7 @@ hsize_t diff_datasetid(hid_t did1,
size = 1; size = 1;
sm_size[i - 1] = MIN(dadims[i - 1], size); sm_size[i - 1] = MIN(dadims[i - 1], size);
sm_nbytes *= sm_size[i - 1]; sm_nbytes *= sm_size[i - 1];
h5diffdebug2("sm_nbytes: %ld\n", sm_nbytes); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "sm_nbytes: %ld", sm_nbytes);
} /* end for */ } /* end for */
/* malloc return code should be verified. /* malloc return code should be verified.
@@ -534,6 +554,7 @@ hsize_t diff_datasetid(hid_t did1,
H5Sclose(sm_space); H5Sclose(sm_space);
} /* hyperslab read */ } /* hyperslab read */
H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "can_compare complete");
} /*can_compare*/ } /*can_compare*/
@@ -541,7 +562,7 @@ hsize_t diff_datasetid(hid_t did1,
* close * close
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
h5diffdebug2("reclaim any VL memory - errstat:%d\n", opts->err_stat); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "reclaim any VL memory - errstat:%d", opts->err_stat);
done: done:
opts->err_stat = opts->err_stat | ret_value; opts->err_stat = opts->err_stat | ret_value;
@@ -588,7 +609,9 @@ done:
/* enable error reporting */ /* enable error reporting */
} H5E_END_TRY; } H5E_END_TRY;
h5diffdebug3("diff_datasetid return:%d with nfound:%d\n", ret_value, nfound); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "diff_datasetid return:%d with nfound:%d", ret_value, nfound);
H5TOOLS_ENDDEBUG(H5E_tools_min_dbg_id_g, "exit");
H5TOOLS_POP_STACK();
return nfound; return nfound;
} }
@@ -617,14 +640,15 @@ int diff_can_type(hid_t f_tid1, /* file data type */
diff_opt_t *opts, diff_opt_t *opts,
int is_compound) int is_compound)
{ {
int ret_value = 1; /* can_compare value */ H5TOOLS_ERR_INIT(int, 1) /* can_compare value */
H5T_class_t tclass1; H5T_class_t tclass1;
H5T_class_t tclass2; H5T_class_t tclass2;
int maxdim_diff = 0; /* maximum dimensions are different */ int maxdim_diff = 0; /* maximum dimensions are different */
int dim_diff = 0; /* current dimensions are different */ int dim_diff = 0; /* current dimensions are different */
int i; int i;
h5difftrace("diff_can_type start\n"); H5TOOLS_PUSH_STACK();
H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "diff_can_type start");
/*------------------------------------------------------------------------- /*-------------------------------------------------------------------------
* check for the same class * check for the same class
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
@@ -677,7 +701,7 @@ int diff_can_type(hid_t f_tid1, /* file data type */
case H5T_NO_CLASS: case H5T_NO_CLASS:
case H5T_NCLASSES: case H5T_NCLASSES:
default: default:
h5diffdebug2("diff_can_type class - %s\n", get_class(tclass1)); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "diff_can_type class - %s", get_class(tclass1));
break; break;
} /* end switch */ } /* end switch */
@@ -775,7 +799,7 @@ int diff_can_type(hid_t f_tid1, /* file data type */
if(tclass1 == H5T_STRING) { if(tclass1 == H5T_STRING) {
htri_t vstrtype1 = -1; htri_t vstrtype1 = -1;
htri_t vstrtype2 = -1; htri_t vstrtype2 = -1;
h5difftrace("diff_can_type end - H5T_STRING\n"); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "diff_can_type end - H5T_STRING");
vstrtype1 = H5Tis_variable_str(f_tid1); vstrtype1 = H5Tis_variable_str(f_tid1);
vstrtype2 = H5Tis_variable_str(f_tid2); vstrtype2 = H5Tis_variable_str(f_tid2);
@@ -796,7 +820,7 @@ int diff_can_type(hid_t f_tid1, /* file data type */
int j; int j;
hid_t memb_type1 = -1; hid_t memb_type1 = -1;
hid_t memb_type2 = -1; hid_t memb_type2 = -1;
h5difftrace("diff_can_type end - H5T_COMPOUND\n"); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "diff_can_type end - H5T_COMPOUND");
nmembs1 = H5Tget_nmembers(f_tid1); nmembs1 = H5Tget_nmembers(f_tid1);
nmembs2 = H5Tget_nmembers(f_tid2); nmembs2 = H5Tget_nmembers(f_tid2);
@@ -831,7 +855,9 @@ done:
if (ret_value < 0) if (ret_value < 0)
opts->err_stat = 1; opts->err_stat = 1;
h5diffdebug2("diff_can_type end - %d\n", ret_value); H5TOOLS_DEBUG(H5E_tools_min_dbg_id_g, "diff_can_type end - %d", ret_value);
H5TOOLS_ENDDEBUG(H5E_tools_min_dbg_id_g, "exit");
H5TOOLS_POP_STACK();
return ret_value; return ret_value;
} }

View File

@@ -339,8 +339,9 @@ herr_t match_up_memsize (hid_t f_tid1_id, hid_t f_tid2_id,
hid_t *m_tid1, hid_t *m_tid2, hid_t *m_tid1, hid_t *m_tid2,
size_t *m_size1, size_t *m_size2) size_t *m_size1, size_t *m_size2)
{ {
herr_t ret_value = SUCCEED; H5TOOLS_ERR_INIT(herr_t, SUCCEED)
H5TOOLS_PUSH_STACK();
if((*m_size1) != (*m_size2)) { if((*m_size1) != (*m_size2)) {
if((*m_size1) < (*m_size2)) { if((*m_size1) < (*m_size2)) {
H5Tclose(*m_tid1); H5Tclose(*m_tid1);
@@ -363,6 +364,8 @@ herr_t match_up_memsize (hid_t f_tid1_id, hid_t f_tid2_id,
H5TOOLS_GOTO_ERROR(FAIL, H5E_tools_min_id_g, "native type sizes do not compare"); H5TOOLS_GOTO_ERROR(FAIL, H5E_tools_min_id_g, "native type sizes do not compare");
done: done:
H5TOOLS_ENDDEBUG(H5E_tools_min_dbg_id_g, "exit");
H5TOOLS_POP_STACK();
return ret_value; return ret_value;
} }

View File

@@ -496,8 +496,8 @@ static hid_t
h5tools_get_fapl(hid_t fapl, const char *fname, const char *driver, h5tools_get_fapl(hid_t fapl, const char *fname, const char *driver,
unsigned *drivernum) unsigned *drivernum)
{ {
H5TOOLS_ERR_INIT(int, SUCCEED)
hid_t new_fapl = -1; /* Copy of file access property list passed in, or new property list */ hid_t new_fapl = -1; /* Copy of file access property list passed in, or new property list */
int ret_value = SUCCEED;
/* Make a copy of the FAPL, for the file open call to use, eventually */ /* Make a copy of the FAPL, for the file open call to use, eventually */
if (fapl == H5P_DEFAULT) { if (fapl == H5P_DEFAULT) {
@@ -1582,6 +1582,7 @@ render_bin_output_region_data_blocks(hid_t region_id, FILE *stream,
hsize_t blkndx; hsize_t blkndx;
hid_t sid1 = -1; hid_t sid1 = -1;
H5TOOLS_PUSH_STACK();
/* Get the dataspace of the dataset */ /* Get the dataspace of the dataset */
if((sid1 = H5Dget_space(region_id)) < 0) if((sid1 = H5Dget_space(region_id)) < 0)
H5TOOLS_THROW(FAIL, H5E_tools_min_id_g, "H5Dget_space failed"); H5TOOLS_THROW(FAIL, H5E_tools_min_id_g, "H5Dget_space failed");
@@ -1648,6 +1649,8 @@ CATCH
if(H5Sclose(sid1) < 0) if(H5Sclose(sid1) < 0)
H5TOOLS_ERROR(H5E_tools_g, H5E_tools_min_id_g, "H5Sclose failed"); H5TOOLS_ERROR(H5E_tools_g, H5E_tools_min_id_g, "H5Sclose failed");
H5TOOLS_ENDDEBUG(H5E_tools_min_dbg_id_g, "exit");
H5TOOLS_POP_STACK();
return ret_value; return ret_value;
} }
@@ -1675,6 +1678,7 @@ render_bin_output_region_blocks(hid_t region_space, hid_t region_id,
hid_t dtype = -1; hid_t dtype = -1;
hid_t type_id = -1; hid_t type_id = -1;
H5TOOLS_PUSH_STACK();
if((snblocks = H5Sget_select_hyper_nblocks(region_space)) <= 0) if((snblocks = H5Sget_select_hyper_nblocks(region_space)) <= 0)
H5TOOLS_THROW(FALSE, H5E_tools_min_id_g, "H5Sget_select_hyper_nblocks failed"); H5TOOLS_THROW(FALSE, H5E_tools_min_id_g, "H5Sget_select_hyper_nblocks failed");
nblocks = (hsize_t)snblocks; nblocks = (hsize_t)snblocks;
@@ -1698,7 +1702,7 @@ render_bin_output_region_blocks(hid_t region_space, hid_t region_id,
render_bin_output_region_data_blocks(region_id, stream, container, ndims, type_id, nblocks, ptdata); render_bin_output_region_data_blocks(region_id, stream, container, ndims, type_id, nblocks, ptdata);
done: done:
HDfree(ptdata); HDfree(ptdata);
if(type_id > 0 && H5Tclose(type_id) < 0) if(type_id > 0 && H5Tclose(type_id) < 0)
@@ -1709,7 +1713,9 @@ render_bin_output_region_blocks(hid_t region_space, hid_t region_id,
H5_LEAVE(TRUE) H5_LEAVE(TRUE)
CATCH CATCH
H5TOOLS_ENDDEBUG(H5E_tools_min_dbg_id_g, "exit");
H5TOOLS_POP_STACK();
return ret_value; return ret_value;
} }
@@ -1741,6 +1747,7 @@ render_bin_output_region_data_points(hid_t region_space, hid_t region_id,
hid_t mem_space = -1; hid_t mem_space = -1;
void *region_buf = NULL; void *region_buf = NULL;
H5TOOLS_PUSH_STACK();
if((type_size = H5Tget_size(type_id)) == 0) if((type_size = H5Tget_size(type_id)) == 0)
H5TOOLS_GOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Tget_size failed"); H5TOOLS_GOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Tget_size failed");
@@ -1763,13 +1770,15 @@ render_bin_output_region_data_points(hid_t region_space, hid_t region_id,
if(render_bin_output(stream, container, type_id, (char*)region_buf, npoints) < 0) if(render_bin_output(stream, container, type_id, (char*)region_buf, npoints) < 0)
H5TOOLS_GOTO_ERROR(FAIL, H5E_tools_min_id_g, "render_bin_output of data points failed"); H5TOOLS_GOTO_ERROR(FAIL, H5E_tools_min_id_g, "render_bin_output of data points failed");
done: done:
HDfree(region_buf); HDfree(region_buf);
HDfree(dims1); HDfree(dims1);
if(H5Sclose(mem_space) < 0) if(H5Sclose(mem_space) < 0)
H5TOOLS_ERROR(H5E_tools_g, H5E_tools_min_id_g, "H5Sclose failed"); H5TOOLS_ERROR(H5E_tools_g, H5E_tools_min_id_g, "H5Sclose failed");
H5TOOLS_ENDDEBUG(H5E_tools_min_dbg_id_g, "exit");
H5TOOLS_POP_STACK();
return ret_value; return ret_value;
} }
@@ -1795,6 +1804,7 @@ render_bin_output_region_points(hid_t region_space, hid_t region_id,
hid_t dtype = -1; hid_t dtype = -1;
hid_t type_id = -1; hid_t type_id = -1;
H5TOOLS_PUSH_STACK();
if((snpoints = H5Sget_select_elem_npoints(region_space)) <= 0) if((snpoints = H5Sget_select_elem_npoints(region_space)) <= 0)
H5TOOLS_THROW(FALSE, H5E_tools_min_id_g, "H5Sget_select_elem_npoints failed"); H5TOOLS_THROW(FALSE, H5E_tools_min_id_g, "H5Sget_select_elem_npoints failed");
npoints = (hsize_t)snpoints; npoints = (hsize_t)snpoints;
@@ -1812,7 +1822,7 @@ render_bin_output_region_points(hid_t region_space, hid_t region_id,
render_bin_output_region_data_points(region_space, region_id, stream, container, ndims, type_id, npoints); render_bin_output_region_data_points(region_space, region_id, stream, container, ndims, type_id, npoints);
done: done:
if(type_id > 0 && H5Tclose(type_id) < 0) if(type_id > 0 && H5Tclose(type_id) < 0)
H5TOOLS_ERROR(H5E_tools_g, H5E_tools_min_id_g, "H5Tclose failed"); H5TOOLS_ERROR(H5E_tools_g, H5E_tools_min_id_g, "H5Tclose failed");
@@ -1821,6 +1831,8 @@ render_bin_output_region_points(hid_t region_space, hid_t region_id,
H5_LEAVE(ret_value) H5_LEAVE(ret_value)
CATCH CATCH
H5TOOLS_ENDDEBUG(H5E_tools_min_dbg_id_g, "exit");
H5TOOLS_POP_STACK();
return ret_value; return ret_value;
} }

View File

@@ -628,7 +628,7 @@ h5tools_print_region_data_blocks(hid_t region_id,
} /* end for (blkndx = 0; blkndx < nblocks; blkndx++) */ } /* end for (blkndx = 0; blkndx < nblocks; blkndx++) */
done: done:
HDfree(start); HDfree(start);
HDfree(count); HDfree(count);
HDfree(region_buf); HDfree(region_buf);
@@ -1280,6 +1280,7 @@ h5tools_print_simple_subset(FILE *stream, const h5tool_format_t *info, h5tools_c
/* VL data special information */ /* VL data special information */
unsigned int vl_data = 0; /* contains VL datatypes */ unsigned int vl_data = 0; /* contains VL datatypes */
H5TOOLS_PUSH_STACK();
if ((size_t) ctx->ndims > NELMTS(sm_size)) if ((size_t) ctx->ndims > NELMTS(sm_size))
H5TOOLS_THROW(FAIL, H5E_tools_min_id_g, "ndims and sm_size comparision failed"); H5TOOLS_THROW(FAIL, H5E_tools_min_id_g, "ndims and sm_size comparision failed");
@@ -1400,6 +1401,8 @@ CATCH
if(sm_buf) if(sm_buf)
HDfree(sm_buf); HDfree(sm_buf);
H5TOOLS_ENDDEBUG(H5E_tools_min_dbg_id_g, "exit");
H5TOOLS_POP_STACK();
return ret_value; return ret_value;
} }
@@ -1585,6 +1588,7 @@ h5tools_dump_simple_subset(FILE *stream, const h5tool_format_t *info, h5tools_co
size_t i; /* counters */ size_t i; /* counters */
hsize_t total_size[H5S_MAX_RANK];/* total size of dataset*/ hsize_t total_size[H5S_MAX_RANK];/* total size of dataset*/
H5TOOLS_PUSH_STACK();
if((f_space = H5Dget_space(dset)) < 0) if((f_space = H5Dget_space(dset)) < 0)
H5TOOLS_THROW(FAIL, H5E_tools_min_id_g, "H5Dget_space failed"); H5TOOLS_THROW(FAIL, H5E_tools_min_id_g, "H5Dget_space failed");
@@ -1610,6 +1614,8 @@ CATCH
if(f_space >= 0 && H5Sclose(f_space) < 0) if(f_space >= 0 && H5Sclose(f_space) < 0)
H5TOOLS_THROW(FAIL, H5E_tools_min_id_g, "H5Sclose failed"); H5TOOLS_THROW(FAIL, H5E_tools_min_id_g, "H5Sclose failed");
H5TOOLS_ENDDEBUG(H5E_tools_min_dbg_id_g, "exit");
H5TOOLS_POP_STACK();
return ret_value; return ret_value;
} }
@@ -1979,6 +1985,8 @@ done:
if (f_space > 0) if (f_space > 0)
H5Sclose(f_space); H5Sclose(f_space);
H5TOOLS_ENDDEBUG(H5E_tools_min_dbg_id_g, "exit");
H5TOOLS_POP_STACK();
return ret_value; return ret_value;
} }
@@ -2002,6 +2010,7 @@ h5tools_dump_mem(FILE *stream, const h5tool_format_t *info, h5tools_context_t *c
hid_t f_type = H5I_INVALID_HID; hid_t f_type = H5I_INVALID_HID;
h5tool_format_t info_dflt; h5tool_format_t info_dflt;
H5TOOLS_PUSH_STACK();
/* Use default values */ /* Use default values */
if (!stream) if (!stream)
stream = rawoutstream; stream = rawoutstream;
@@ -2047,6 +2056,8 @@ done:
if (f_space > 0) if (f_space > 0)
H5Sclose(f_space); H5Sclose(f_space);
H5TOOLS_ENDDEBUG(H5E_tools_min_dbg_id_g, "exit");
H5TOOLS_POP_STACK();
return ret_value; return ret_value;
} }
@@ -2088,6 +2099,7 @@ h5tools_print_datatype(FILE *stream, h5tools_str_t *buffer, const h5tool_format_
const char *sign_s = NULL; /* sign scheme string */ const char *sign_s = NULL; /* sign scheme string */
const char *order_s = NULL; /* byte order string */ const char *order_s = NULL; /* byte order string */
H5TOOLS_PUSH_STACK();
if((type_class = H5Tget_class(type)) < 0) if((type_class = H5Tget_class(type)) < 0)
H5TOOLS_THROW(FAIL, H5E_tools_min_id_g, "H5Tget_class failed"); H5TOOLS_THROW(FAIL, H5E_tools_min_id_g, "H5Tget_class failed");
if (object_search && H5Tcommitted(type) > 0) { if (object_search && H5Tcommitted(type) > 0) {
@@ -2633,6 +2645,8 @@ h5tools_print_datatype(FILE *stream, h5tools_str_t *buffer, const h5tool_format_
} }
CATCH CATCH
H5TOOLS_ENDDEBUG(H5E_tools_min_dbg_id_g, "exit");
H5TOOLS_POP_STACK();
return ret_value; return ret_value;
} }
@@ -2657,6 +2671,7 @@ h5tools_print_dataspace(h5tools_str_t *buffer, hid_t space)
H5S_class_t space_type = -1; H5S_class_t space_type = -1;
int i; int i;
H5TOOLS_PUSH_STACK();
if((ndims = H5Sget_simple_extent_dims(space, size, maxsize)) < 0) if((ndims = H5Sget_simple_extent_dims(space, size, maxsize)) < 0)
H5TOOLS_THROW(FAIL, H5E_tools_min_id_g, "H5Sget_simple_extent_dims failed"); H5TOOLS_THROW(FAIL, H5E_tools_min_id_g, "H5Sget_simple_extent_dims failed");
@@ -2708,6 +2723,8 @@ h5tools_print_dataspace(h5tools_str_t *buffer, hid_t space)
} /* end switch */ } /* end switch */
CATCH CATCH
H5TOOLS_ENDDEBUG(H5E_tools_min_dbg_id_g, "exit");
H5TOOLS_POP_STACK();
return ret_value; return ret_value;
} }
@@ -2741,6 +2758,7 @@ h5tools_print_enum(FILE *stream, h5tools_str_t *buffer, const h5tool_format_t *i
size_t ncols = 80; /*available output width */ size_t ncols = 80; /*available output width */
hsize_t curr_pos = 0; /* total data element position */ hsize_t curr_pos = 0; /* total data element position */
H5TOOLS_PUSH_STACK();
if (info->line_ncols > 0) if (info->line_ncols > 0)
ncols = info->line_ncols; ncols = info->line_ncols;
@@ -2852,6 +2870,8 @@ CATCH
if(0 == nmembs) if(0 == nmembs)
h5tools_str_append(buffer, "\n<empty>"); h5tools_str_append(buffer, "\n<empty>");
H5TOOLS_ENDDEBUG(H5E_tools_min_dbg_id_g, "exit");
H5TOOLS_POP_STACK();
return ret_value; return ret_value;
} }

View File

@@ -112,7 +112,7 @@ H5TOOLS_DLLVAR hid_t H5E_tools_min_dbg_id_g;
* H5TOOLS_INFO macro, used to facilitate error reporting . The arguments are the minor error number, and a description of the error. * H5TOOLS_INFO macro, used to facilitate error reporting . The arguments are the minor error number, and a description of the error.
*/ */
#define H5TOOLS_INFO(min_id, ...) { \ #define H5TOOLS_INFO(min_id, ...) { \
H5Epush2(H5tools_ERR_STACK_g, __FILE__, FUNC, __LINE__, H5tools_ERR_CLS_g, H5E_tools_g, min_id, __VA_ARGS__); \ H5Epush2(estack_id, __FILE__, FUNC, __LINE__, H5tools_ERR_CLS_g, H5E_tools_g, min_id, __VA_ARGS__); \
} }
/* /*
@@ -120,7 +120,7 @@ H5TOOLS_DLLVAR hid_t H5E_tools_min_dbg_id_g;
* error number, the minor error number, and a description of the error. * error number, the minor error number, and a description of the error.
*/ */
#define H5TOOLS_ERROR(maj_id, min_id, ...) { \ #define H5TOOLS_ERROR(maj_id, min_id, ...) { \
H5Epush2(H5tools_ERR_STACK_g, __FILE__, FUNC, __LINE__, H5tools_ERR_CLS_g, maj_id, min_id, __VA_ARGS__); \ H5Epush2(estack_id, __FILE__, FUNC, __LINE__, H5tools_ERR_CLS_g, maj_id, min_id, __VA_ARGS__); \
ret_value = FAIL; \ ret_value = FAIL; \
} }
@@ -152,7 +152,7 @@ H5TOOLS_DLLVAR hid_t H5E_tools_min_dbg_id_g;
* to the `catch_except' label, if we're not already past it. * to the `catch_except' label, if we're not already past it.
*/ */
#define H5TOOLS_THROW(fail_value, min_id, ...) { \ #define H5TOOLS_THROW(fail_value, min_id, ...) { \
H5Epush2(H5tools_ERR_STACK_g, __FILE__, FUNC, __LINE__, H5tools_ERR_CLS_g, H5E_tools_g, min_id, __VA_ARGS__); \ H5Epush2(estack_id, __FILE__, FUNC, __LINE__, H5tools_ERR_CLS_g, H5E_tools_g, min_id, __VA_ARGS__); \
H5_LEAVE(fail_value) \ H5_LEAVE(fail_value) \
} }

View File

@@ -43,7 +43,7 @@ int
h5tools_canreadf(const char* name, /* object name, serves also as boolean print */ h5tools_canreadf(const char* name, /* object name, serves also as boolean print */
hid_t dcpl_id) /* dataset creation property list */ hid_t dcpl_id) /* dataset creation property list */
{ {
int ret_value = 1; H5TOOLS_ERR_INIT(int, 1)
int nfilters; /* number of filters */ int nfilters; /* number of filters */
H5Z_filter_t filtn; /* filter identification number */ H5Z_filter_t filtn; /* filter identification number */
int i; /* index */ int i; /* index */
@@ -144,7 +144,7 @@ done:
H5_ATTR_CONST int H5_ATTR_CONST int
h5tools_can_encode(H5Z_filter_t filtn) h5tools_can_encode(H5Z_filter_t filtn)
{ {
int ret_value = 1; H5TOOLS_ERR_INIT(int, 1)
switch (filtn) { switch (filtn) {
/* user defined filter */ /* user defined filter */

View File

@@ -788,7 +788,7 @@ herr_t
init_objs(hid_t fid, find_objs_t *info, table_t **group_table, init_objs(hid_t fid, find_objs_t *info, table_t **group_table,
table_t **dset_table, table_t **type_table) table_t **dset_table, table_t **type_table)
{ {
herr_t ret_value = SUCCEED; H5TOOLS_ERR_INIT(herr_t, SUCCEED)
/* Initialize the tables */ /* Initialize the tables */
init_table(group_table); init_table(group_table);
@@ -1047,9 +1047,9 @@ h5tools_getstatus(void)
int int
h5tools_getenv_update_hyperslab_bufsize(void) h5tools_getenv_update_hyperslab_bufsize(void)
{ {
H5TOOLS_ERR_INIT(int, 1)
const char *env_str = NULL; const char *env_str = NULL;
long hyperslab_bufsize_mb; long hyperslab_bufsize_mb;
int ret_value = 1;
/* check if environment variable is set for the hyperslab buffer size */ /* check if environment variable is set for the hyperslab buffer size */
if (NULL != (env_str = HDgetenv ("H5TOOLS_BUFSIZE"))) { if (NULL != (env_str = HDgetenv ("H5TOOLS_BUFSIZE"))) {

View File

@@ -114,7 +114,7 @@ h5trav_set_verbose(int print_verbose)
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
/*------------------------------------------------------------------------- /*-------------------------------------------------------------------------
* Function: trav_addr_add * Function: trav_addr_add
* *
@@ -140,7 +140,7 @@ trav_addr_add(trav_addr_t *visited, haddr_t addr, const char *path)
visited->objs[idx].path = HDstrdup(path); visited->objs[idx].path = HDstrdup(path);
} /* end trav_addr_add() */ } /* end trav_addr_add() */
/*------------------------------------------------------------------------- /*-------------------------------------------------------------------------
* Function: trav_addr_visited * Function: trav_addr_visited
* *
@@ -164,7 +164,7 @@ trav_addr_visited(trav_addr_t *visited, haddr_t addr)
return(NULL); return(NULL);
} /* end trav_addr_visited() */ } /* end trav_addr_visited() */
/*------------------------------------------------------------------------- /*-------------------------------------------------------------------------
* Function: traverse_cb * Function: traverse_cb
* *
@@ -239,7 +239,7 @@ traverse_cb(hid_t loc_id, const char *path, const H5L_info_t *linfo,
return(H5_ITER_CONT); return(H5_ITER_CONT);
} /* end traverse_cb() */ } /* end traverse_cb() */
/*------------------------------------------------------------------------- /*-------------------------------------------------------------------------
* Function: traverse * Function: traverse
* *
@@ -254,8 +254,8 @@ static int
traverse(hid_t file_id, const char *grp_name, hbool_t visit_start, traverse(hid_t file_id, const char *grp_name, hbool_t visit_start,
hbool_t recurse, const trav_visitor_t *visitor, unsigned fields) hbool_t recurse, const trav_visitor_t *visitor, unsigned fields)
{ {
H5TOOLS_ERR_INIT(int, SUCCEED)
H5O_info_t oinfo; /* Object info for starting group */ H5O_info_t oinfo; /* Object info for starting group */
int ret_value = SUCCEED;
/* Get info for starting object */ /* Get info for starting object */
if(H5Oget_info_by_name2(file_id, grp_name, &oinfo, fields, H5P_DEFAULT) < 0) if(H5Oget_info_by_name2(file_id, grp_name, &oinfo, fields, H5P_DEFAULT) < 0)
@@ -312,7 +312,7 @@ done:
return ret_value; return ret_value;
} }
/*------------------------------------------------------------------------- /*-------------------------------------------------------------------------
* Function: trav_info_add * Function: trav_info_add
* *
@@ -366,7 +366,7 @@ trav_fileinfo_add(trav_info_t *info, hid_t loc_id)
info->paths[idx].fileno = oinfo.fileno; info->paths[idx].fileno = oinfo.fileno;
} /* end trav_fileinfo_add() */ } /* end trav_fileinfo_add() */
/*------------------------------------------------------------------------- /*-------------------------------------------------------------------------
* Function: trav_info_visit_obj * Function: trav_info_visit_obj
* *
@@ -396,7 +396,7 @@ trav_info_visit_obj(const char *path, const H5O_info_t *oinfo,
return(0); return(0);
} /* end trav_info_visit_obj() */ } /* end trav_info_visit_obj() */
/*------------------------------------------------------------------------- /*-------------------------------------------------------------------------
* Function: trav_info_visit_lnk * Function: trav_info_visit_lnk
* *
@@ -415,7 +415,7 @@ trav_info_visit_lnk(const char *path, const H5L_info_t *linfo, void *udata)
return(0); return(0);
} /* end trav_info_visit_lnk() */ } /* end trav_info_visit_lnk() */
/*------------------------------------------------------------------------- /*-------------------------------------------------------------------------
* Function: h5trav_getinfo * Function: h5trav_getinfo
* *
@@ -429,8 +429,8 @@ trav_info_visit_lnk(const char *path, const H5L_info_t *linfo, void *udata)
int int
h5trav_getinfo(hid_t file_id, trav_info_t *info) h5trav_getinfo(hid_t file_id, trav_info_t *info)
{ {
H5TOOLS_ERR_INIT(int, SUCCEED)
trav_visitor_t info_visitor; /* Visitor structure for trav_info_t's */ trav_visitor_t info_visitor; /* Visitor structure for trav_info_t's */
int ret_value = SUCCEED;
/* Init visitor structure */ /* Init visitor structure */
info_visitor.visit_obj = trav_info_visit_obj; info_visitor.visit_obj = trav_info_visit_obj;
@@ -501,7 +501,7 @@ trav_info_init(const char *filename, hid_t fileid, trav_info_t **_info)
*_info = info; *_info = info;
} /* end trav_info_init() */ } /* end trav_info_init() */
/*------------------------------------------------------------------------- /*-------------------------------------------------------------------------
* Function: trav_info_free * Function: trav_info_free
* *
@@ -536,7 +536,7 @@ trav_info_free(trav_info_t *info)
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
/*------------------------------------------------------------------------- /*-------------------------------------------------------------------------
* Function: trav_table_visit_obj * Function: trav_table_visit_obj
* *
@@ -563,7 +563,7 @@ trav_table_visit_obj(const char *path, const H5O_info_t *oinfo,
return 0; return 0;
} /* end trav_table_visit_obj() */ } /* end trav_table_visit_obj() */
/*------------------------------------------------------------------------- /*-------------------------------------------------------------------------
* Function: trav_table_visit_lnk * Function: trav_table_visit_lnk
* *
@@ -582,7 +582,7 @@ trav_table_visit_lnk(const char *path, const H5L_info_t H5_ATTR_UNUSED *linfo, v
return 0; return 0;
} /* end trav_table_visit_lnk() */ } /* end trav_table_visit_lnk() */
/*------------------------------------------------------------------------- /*-------------------------------------------------------------------------
* Function: h5trav_gettable * Function: h5trav_gettable
* *
@@ -595,8 +595,8 @@ trav_table_visit_lnk(const char *path, const H5L_info_t H5_ATTR_UNUSED *linfo, v
int int
h5trav_gettable(hid_t fid, trav_table_t *table) h5trav_gettable(hid_t fid, trav_table_t *table)
{ {
H5TOOLS_ERR_INIT(int, SUCCEED)
trav_visitor_t table_visitor; /* Visitor structure for trav_table_t's */ trav_visitor_t table_visitor; /* Visitor structure for trav_table_t's */
int ret_value = SUCCEED;
/* Init visitor structure */ /* Init visitor structure */
table_visitor.visit_obj = trav_table_visit_obj; table_visitor.visit_obj = trav_table_visit_obj;
@@ -882,7 +882,7 @@ trav_attr(hid_t
return(0); return(0);
} }
/*------------------------------------------------------------------------- /*-------------------------------------------------------------------------
* Function: trav_print_visit_obj * Function: trav_print_visit_obj
* *
@@ -940,7 +940,7 @@ trav_print_visit_obj(const char *path, const H5O_info_t *oinfo,
return(0); return(0);
} /* end trav_print_visit_obj() */ } /* end trav_print_visit_obj() */
/*------------------------------------------------------------------------- /*-------------------------------------------------------------------------
* Function: trav_print_visit_lnk * Function: trav_print_visit_lnk
* *
@@ -1004,7 +1004,7 @@ trav_print_visit_lnk(const char *path, const H5L_info_t *linfo, void *udata)
return(0); return(0);
} /* end trav_print_visit_lnk() */ } /* end trav_print_visit_lnk() */
/*------------------------------------------------------------------------- /*-------------------------------------------------------------------------
* Function: h5trav_print * Function: h5trav_print
* *
@@ -1017,9 +1017,9 @@ trav_print_visit_lnk(const char *path, const H5L_info_t *linfo, void *udata)
int int
h5trav_print(hid_t fid) h5trav_print(hid_t fid)
{ {
H5TOOLS_ERR_INIT(int, SUCCEED)
trav_print_udata_t print_udata; /* User data for traversal */ trav_print_udata_t print_udata; /* User data for traversal */
trav_visitor_t print_visitor; /* Visitor structure for printing objects */ trav_visitor_t print_visitor; /* Visitor structure for printing objects */
int ret_value = SUCCEED;
/* Init user data for printing */ /* Init user data for printing */
print_udata.fid = fid; print_udata.fid = fid;
@@ -1037,7 +1037,7 @@ done:
return ret_value; return ret_value;
} }
/*------------------------------------------------------------------------- /*-------------------------------------------------------------------------
* Function: h5trav_visit * Function: h5trav_visit
* *
@@ -1052,8 +1052,8 @@ h5trav_visit(hid_t fid, const char *grp_name, hbool_t visit_start,
hbool_t recurse, h5trav_obj_func_t visit_obj, h5trav_lnk_func_t visit_lnk, hbool_t recurse, h5trav_obj_func_t visit_obj, h5trav_lnk_func_t visit_lnk,
void *udata, unsigned fields) void *udata, unsigned fields)
{ {
H5TOOLS_ERR_INIT(int, SUCCEED)
trav_visitor_t visitor; /* Visitor structure for objects */ trav_visitor_t visitor; /* Visitor structure for objects */
int ret_value = SUCCEED;
/* Init visitor structure */ /* Init visitor structure */
visitor.visit_obj = visit_obj; visitor.visit_obj = visit_obj;
@@ -1080,7 +1080,7 @@ done:
herr_t herr_t
symlink_visit_add(symlink_trav_t *visited, H5L_type_t type, const char *file, const char *path) symlink_visit_add(symlink_trav_t *visited, H5L_type_t type, const char *file, const char *path)
{ {
herr_t ret_value = SUCCEED; H5TOOLS_ERR_INIT(herr_t, SUCCEED)
size_t idx; /* Index of address to use */ size_t idx; /* Index of address to use */
/* Allocate space if necessary */ /* Allocate space if necessary */
@@ -1118,7 +1118,7 @@ done:
return ret_value; return ret_value;
} /* end symlink_visit_add() */ } /* end symlink_visit_add() */
/*------------------------------------------------------------------------- /*-------------------------------------------------------------------------
* Function: symlink_is_visited * Function: symlink_is_visited
* *

View File

@@ -207,7 +207,7 @@ static int parse_flag(const char* s_flag, unsigned *flag)
int int
main (int argc, const char *argv[]) main (int argc, const char *argv[])
{ {
int ret_value = 0; /*no need to LEAVE() on ERROR: H5TOOLS_ERR_INIT(int, SUCCEED) */ H5TOOLS_ERR_INIT(int, 0)
H5E_auto2_t func; H5E_auto2_t func;
H5E_auto2_t tools_func; H5E_auto2_t tools_func;
void *edata; void *edata;

View File

@@ -10,6 +10,7 @@ if (NOT ONLY_SHARED_LIBS)
${HDF5_TOOLS_SRC_H5DIFF_SOURCE_DIR}/h5diff_main.c ${HDF5_TOOLS_SRC_H5DIFF_SOURCE_DIR}/h5diff_main.c
) )
target_include_directories (h5diff PRIVATE "${HDF5_TOOLS_DIR}/lib;${HDF5_SRC_DIR};${HDF5_BINARY_DIR};$<$<BOOL:${HDF5_ENABLE_PARALLEL}>:${MPI_C_INCLUDE_DIRS}>") target_include_directories (h5diff PRIVATE "${HDF5_TOOLS_DIR}/lib;${HDF5_SRC_DIR};${HDF5_BINARY_DIR};$<$<BOOL:${HDF5_ENABLE_PARALLEL}>:${MPI_C_INCLUDE_DIRS}>")
#target_compile_definitions(h5diff PRIVATE H5_TOOLS_DEBUG)
TARGET_C_PROPERTIES (h5diff STATIC) TARGET_C_PROPERTIES (h5diff STATIC)
target_link_libraries (h5diff PRIVATE ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET}) target_link_libraries (h5diff PRIVATE ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET})
set_target_properties (h5diff PROPERTIES FOLDER tools) set_target_properties (h5diff PROPERTIES FOLDER tools)
@@ -23,6 +24,7 @@ if (BUILD_SHARED_LIBS)
${HDF5_TOOLS_SRC_H5DIFF_SOURCE_DIR}/h5diff_main.c ${HDF5_TOOLS_SRC_H5DIFF_SOURCE_DIR}/h5diff_main.c
) )
target_include_directories (h5diff-shared PRIVATE "${HDF5_TOOLS_DIR}/lib;${HDF5_SRC_DIR};${HDF5_BINARY_DIR};$<$<BOOL:${HDF5_ENABLE_PARALLEL}>:${MPI_C_INCLUDE_DIRS}>") target_include_directories (h5diff-shared PRIVATE "${HDF5_TOOLS_DIR}/lib;${HDF5_SRC_DIR};${HDF5_BINARY_DIR};$<$<BOOL:${HDF5_ENABLE_PARALLEL}>:${MPI_C_INCLUDE_DIRS}>")
#target_compile_definitions(h5diff-shared PRIVATE H5_TOOLS_DEBUG)
TARGET_C_PROPERTIES (h5diff-shared SHARED) TARGET_C_PROPERTIES (h5diff-shared SHARED)
target_link_libraries (h5diff-shared PRIVATE ${HDF5_TOOLS_LIBSH_TARGET} ${HDF5_LIBSH_TARGET}) target_link_libraries (h5diff-shared PRIVATE ${HDF5_TOOLS_LIBSH_TARGET} ${HDF5_LIBSH_TARGET})
set_target_properties (h5diff-shared PROPERTIES FOLDER tools) set_target_properties (h5diff-shared PROPERTIES FOLDER tools)

View File

@@ -222,10 +222,10 @@ h5repack_addlayout(const char *str, pack_opt_t *options)
hid_t hid_t
copy_named_datatype(hid_t type_in, hid_t fidout, named_dt_t **named_dt_head_p, trav_table_t *travt, pack_opt_t *options) copy_named_datatype(hid_t type_in, hid_t fidout, named_dt_t **named_dt_head_p, trav_table_t *travt, pack_opt_t *options)
{ {
H5TOOLS_ERR_INIT(hid_t, H5I_INVALID_HID)
named_dt_t *dt = *named_dt_head_p; /* Stack pointer */ named_dt_t *dt = *named_dt_head_p; /* Stack pointer */
named_dt_t *dt_ret = NULL; /* Datatype to return */ named_dt_t *dt_ret = NULL; /* Datatype to return */
H5O_info_t oinfo; /* Object info of input dtype */ H5O_info_t oinfo; /* Object info of input dtype */
hid_t ret_value = -1; /* The identifier of the named dtype in the out file */
if (H5Oget_info2(type_in, &oinfo, H5O_INFO_BASIC) < 0) if (H5Oget_info2(type_in, &oinfo, H5O_INFO_BASIC) < 0)
H5TOOLS_GOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Oget_info failed"); H5TOOLS_GOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Oget_info failed");
@@ -311,8 +311,8 @@ done:
int int
named_datatype_free(named_dt_t **named_dt_head_p, int ignore_err) named_datatype_free(named_dt_t **named_dt_head_p, int ignore_err)
{ {
H5TOOLS_ERR_INIT(int, -1)
named_dt_t *dt = *named_dt_head_p; named_dt_t *dt = *named_dt_head_p;
int ret_value = -1;
while (dt) { while (dt) {
/* Pop the datatype off the stack and free it */ /* Pop the datatype off the stack and free it */
@@ -343,7 +343,7 @@ done:
int int
copy_attr(hid_t loc_in, hid_t loc_out, named_dt_t **named_dt_head_p, trav_table_t *travt, pack_opt_t *options) copy_attr(hid_t loc_in, hid_t loc_out, named_dt_t **named_dt_head_p, trav_table_t *travt, pack_opt_t *options)
{ {
int ret_value = 0; H5TOOLS_ERR_INIT(int, 0)
hid_t attr_id = -1; /* attr ID */ hid_t attr_id = -1; /* attr ID */
hid_t attr_out = -1; /* attr ID */ hid_t attr_out = -1; /* attr ID */
hid_t space_id = -1; /* space ID */ hid_t space_id = -1; /* space ID */
@@ -546,7 +546,7 @@ done:
static int static int
check_options(pack_opt_t *options) check_options(pack_opt_t *options)
{ {
int ret_value = 0; /*no need to LEAVE() on ERROR: H5TOOLS_ERR_INIT(int, SUCCEED) */ H5TOOLS_ERR_INIT(int, 0)
unsigned int i; unsigned int i;
int k, j, has_cp = 0, has_ck = 0; int k, j, has_cp = 0, has_ck = 0;
char slayout[30]; char slayout[30];
@@ -724,13 +724,13 @@ done:
static int static int
check_objects(const char* fname, pack_opt_t *options) check_objects(const char* fname, pack_opt_t *options)
{ {
H5TOOLS_ERR_INIT(int, 0)
hid_t fid = -1; hid_t fid = -1;
hid_t did = -1; hid_t did = -1;
hid_t sid = -1; hid_t sid = -1;
unsigned int i; unsigned int i;
int ifil; int ifil;
trav_table_t *travt = NULL; trav_table_t *travt = NULL;
int ret_value = 0; /*no need to LEAVE() on ERROR: H5TOOLS_ERR_INIT(int, SUCCEED) */
/* nothing to do */ /* nothing to do */
if (options->op_tbl->nelems == 0) if (options->op_tbl->nelems == 0)

View File

@@ -61,7 +61,7 @@ static void print_user_block(const char *filename, hid_t fid);
int int
copy_objects(const char* fnamein, const char* fnameout, pack_opt_t *options) copy_objects(const char* fnamein, const char* fnameout, pack_opt_t *options)
{ {
int ret_value = 0; H5TOOLS_ERR_INIT(int, 0)
hid_t fidin = -1; hid_t fidin = -1;
hid_t fidout = -1; hid_t fidout = -1;
hid_t fcpl_in = -1; /* file creation property list ID for input file */ hid_t fcpl_in = -1; /* file creation property list ID for input file */
@@ -402,7 +402,7 @@ int
get_hyperslab(hid_t dcpl_id, int rank_dset, hsize_t dims_dset[], get_hyperslab(hid_t dcpl_id, int rank_dset, hsize_t dims_dset[],
size_t size_datum, hsize_t dims_hslab[], hsize_t * hslab_nbytes_p) size_t size_datum, hsize_t dims_hslab[], hsize_t * hslab_nbytes_p)
{ {
int ret_value = 0; H5TOOLS_ERR_INIT(int, 0)
int k; int k;
H5D_layout_t dset_layout; H5D_layout_t dset_layout;
int rank_chunk; int rank_chunk;
@@ -580,7 +580,7 @@ int
do_copy_objects(hid_t fidin, hid_t fidout, trav_table_t *travt, do_copy_objects(hid_t fidin, hid_t fidout, trav_table_t *travt,
pack_opt_t *options) /* repack options */ pack_opt_t *options) /* repack options */
{ {
int ret_value = 0; H5TOOLS_ERR_INIT(int, 0)
hid_t grp_in = -1; /* group ID */ hid_t grp_in = -1; /* group ID */
hid_t grp_out = -1; /* group ID */ hid_t grp_out = -1; /* group ID */
hid_t dset_in = -1; /* read dataset ID */ hid_t dset_in = -1; /* read dataset ID */
@@ -1354,7 +1354,7 @@ print_dataset_info(hid_t dcpl_id, char *objname, double ratio, int pr)
static int static int
copy_user_block(const char *infile, const char *outfile, hsize_t size) copy_user_block(const char *infile, const char *outfile, hsize_t size)
{ {
int ret_value = 0; H5TOOLS_ERR_INIT(int, 0)
int infid = -1, outfid = -1; /* File descriptors */ int infid = -1, outfid = -1; /* File descriptors */
/* User block must be any power of 2 equal to 512 or greater (512, 1024, 2048, etc.) */ /* User block must be any power of 2 equal to 512 or greater (512, 1024, 2048, etc.) */
@@ -1426,7 +1426,7 @@ static
void void
print_user_block(const char *filename, hid_t fid) print_user_block(const char *filename, hid_t fid)
{ {
int ret_value = 0; H5TOOLS_ERR_INIT(int, 0)
int fh = -1; /* file handle */ int fh = -1; /* file handle */
hsize_t ub_size; /* user block size */ hsize_t ub_size; /* user block size */
hsize_t size; /* size read */ hsize_t size; /* size read */

View File

@@ -36,7 +36,7 @@ static int aux_copy_obj(hid_t dcpl_id, /* dataset creation property list */
const char* name, /* object name from traverse list */ const char* name, /* object name from traverse list */
pack_info_t *objout /*OUT*/) /* info about object to filter */ pack_info_t *objout /*OUT*/) /* info about object to filter */
{ {
int ret_value = 0; /*no need to LEAVE() on ERROR: H5TOOLS_ERR_INIT(int, SUCCEED) */ H5TOOLS_ERR_INIT(int, 0)
int nfilters; /* number of filters in DCPL */ int nfilters; /* number of filters in DCPL */
char f_objname[256]; /* filter objname */ char f_objname[256]; /* filter objname */
H5D_layout_t layout; H5D_layout_t layout;
@@ -238,7 +238,7 @@ int apply_filters(const char* name, /* object name from traverse list */
pack_opt_t *options, /* repack options */ pack_opt_t *options, /* repack options */
int *has_filter) /* (OUT) object NAME has a filter */ int *has_filter) /* (OUT) object NAME has a filter */
{ {
int ret_value = 0; /*no need to LEAVE() on ERROR: H5TOOLS_ERR_INIT(int, SUCCEED) */ H5TOOLS_ERR_INIT(int, 0)
int nfilters; /* number of filters in DCPL */ int nfilters; /* number of filters in DCPL */
hsize_t chsize[64]; /* chunk size in elements */ hsize_t chsize[64]; /* chunk size in elements */
H5D_layout_t layout; H5D_layout_t layout;

View File

@@ -24,7 +24,8 @@
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
void init_packobject(pack_info_t *obj) { void init_packobject(pack_info_t *obj)
{
int j, k; int j, k;
HDstrcpy(obj->path, "\0"); HDstrcpy(obj->path, "\0");
@@ -49,7 +50,9 @@ void init_packobject(pack_info_t *obj) {
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
static void aux_tblinsert_filter(pack_opttbl_t *table, unsigned int I, filter_info_t filt) { static void aux_tblinsert_filter(pack_opttbl_t *table, unsigned int I, filter_info_t filt)
{
H5TOOLS_ERR_INIT(int, 0)
if (table->objs[I].nfilters < H5_REPACK_MAX_NFILTERS) if (table->objs[I].nfilters < H5_REPACK_MAX_NFILTERS)
table->objs[I].filter[table->objs[I].nfilters++] = filt; table->objs[I].filter[table->objs[I].nfilters++] = filt;
else else
@@ -64,7 +67,8 @@ static void aux_tblinsert_filter(pack_opttbl_t *table, unsigned int I, filter_in
* Return: void * Return: void
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
static void aux_tblinsert_layout(pack_opttbl_t *table, unsigned int I, pack_info_t *pack) { static void aux_tblinsert_layout(pack_opttbl_t *table, unsigned int I, pack_info_t *pack)
{
int k; int k;
table->objs[I].layout = pack->layout; table->objs[I].layout = pack->layout;
@@ -96,19 +100,21 @@ static void aux_tblinsert_layout(pack_opttbl_t *table, unsigned int I, pack_info
static int static int
aux_inctable(pack_opttbl_t *table, unsigned n_objs) aux_inctable(pack_opttbl_t *table, unsigned n_objs)
{ {
H5TOOLS_ERR_INIT(int, 0)
unsigned u; unsigned u;
table->size += n_objs; table->size += n_objs;
table->objs = (pack_info_t*) HDrealloc(table->objs, table->size * sizeof(pack_info_t)); table->objs = (pack_info_t*) HDrealloc(table->objs, table->size * sizeof(pack_info_t));
if (table->objs == NULL) { if (table->objs == NULL) {
H5TOOLS_INFO(H5E_tools_min_id_g, "not enough memory for options table"); H5TOOLS_INFO(H5E_tools_min_id_g, "not enough memory for options table");
return -1; ret_value = -1;
}
else {
for (u = table->nelems; u < table->size; u++)
init_packobject(&table->objs[u]);
} }
for (u = table->nelems; u < table->size; u++) return ret_value;
init_packobject(&table->objs[u]);
return 0;
} }
@@ -121,27 +127,27 @@ aux_inctable(pack_opttbl_t *table, unsigned n_objs)
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
int options_table_init(pack_opttbl_t **tbl) { int options_table_init(pack_opttbl_t **tbl) {
H5TOOLS_ERR_INIT(int, 0)
unsigned int i; unsigned int i;
pack_opttbl_t *table; pack_opttbl_t *table;
if (NULL == (table = (pack_opttbl_t *) HDmalloc(sizeof(pack_opttbl_t)))) { if (NULL == (table = (pack_opttbl_t *) HDmalloc(sizeof(pack_opttbl_t)))) {
H5TOOLS_INFO(H5E_tools_min_id_g, "not enough memory for options table"); H5TOOLS_GOTO_ERROR(-1, H5E_tools_min_id_g, "not enough memory for options table");
return -1;
} }
table->size = 30; table->size = 30;
table->nelems = 0; table->nelems = 0;
if (NULL == (table->objs = (pack_info_t*) HDmalloc(table->size * sizeof(pack_info_t)))) { if (NULL == (table->objs = (pack_info_t*) HDmalloc(table->size * sizeof(pack_info_t)))) {
H5TOOLS_INFO(H5E_tools_min_id_g, "not enough memory for options table");
HDfree(table); HDfree(table);
return -1; H5TOOLS_GOTO_ERROR(-1, H5E_tools_min_id_g, "not enough memory for options table");
} }
for (i = 0; i < table->size; i++) for (i = 0; i < table->size; i++)
init_packobject(&table->objs[i]); init_packobject(&table->objs[i]);
*tbl = table; *tbl = table;
return 0; done:
return ret_value;
} }
@@ -171,6 +177,7 @@ int options_table_free(pack_opttbl_t *table) {
int int
options_add_layout(obj_list_t *obj_list, unsigned n_objs, pack_info_t *pack, pack_opttbl_t *table) options_add_layout(obj_list_t *obj_list, unsigned n_objs, pack_info_t *pack, pack_opttbl_t *table)
{ {
H5TOOLS_ERR_INIT(herr_t, 0)
unsigned i, j, I; unsigned i, j, I;
unsigned added = 0; unsigned added = 0;
hbool_t found = FALSE; hbool_t found = FALSE;
@@ -237,7 +244,7 @@ options_add_layout(obj_list_t *obj_list, unsigned n_objs, pack_info_t *pack, pa
table->nelems += added; table->nelems += added;
return 0; return ret_value;
} }
/*------------------------------------------------------------------------- /*-------------------------------------------------------------------------

View File

@@ -42,7 +42,7 @@ int do_copy_refobjs(hid_t fidin,
trav_table_t *travt, trav_table_t *travt,
pack_opt_t *options) /* repack options */ pack_opt_t *options) /* repack options */
{ {
int ret_value = 0; /*no need to LEAVE() on ERROR: H5TOOLS_ERR_INIT(int, SUCCEED) */ H5TOOLS_ERR_INIT(int, 0)
hid_t grp_in = -1; /* read group ID */ hid_t grp_in = -1; /* read group ID */
hid_t grp_out = -1; /* write group ID */ hid_t grp_out = -1; /* write group ID */
hid_t dset_in = -1; /* read dataset ID */ hid_t dset_in = -1; /* read dataset ID */
@@ -429,7 +429,7 @@ static int copy_refs_attr(hid_t loc_in,
trav_table_t *travt, trav_table_t *travt,
hid_t fidout) /* for saving references */ hid_t fidout) /* for saving references */
{ {
int ret_value = 0; /*no need to LEAVE() on ERROR: H5TOOLS_ERR_INIT(int, SUCCEED) */ H5TOOLS_ERR_INIT(int, 0)
hid_t attr_id = -1; /* attr ID */ hid_t attr_id = -1; /* attr ID */
hid_t attr_out = -1; /* attr ID */ hid_t attr_out = -1; /* attr ID */
hid_t space_id = -1; /* space ID */ hid_t space_id = -1; /* space ID */
@@ -822,7 +822,7 @@ out:
static herr_t update_ref_value(hid_t obj_id, H5R_type_t ref_type, void *ref_in, static herr_t update_ref_value(hid_t obj_id, H5R_type_t ref_type, void *ref_in,
hid_t fid_out, void *ref_out, trav_table_t *travt) hid_t fid_out, void *ref_out, trav_table_t *travt)
{ {
int ret_value = 0; /*no need to LEAVE() on ERROR: H5TOOLS_ERR_INIT(int, SUCCEED) */ H5TOOLS_ERR_INIT(int, 0)
const char *ref_obj_name; const char *ref_obj_name;
hid_t space_id = -1; hid_t space_id = -1;
hid_t ref_obj_id = -1; hid_t ref_obj_id = -1;

View File

@@ -39,7 +39,7 @@ static int verify_filters(hid_t pid, hid_t tid, int nfilters, filter_info_t *fil
int int
h5repack_verify(const char *in_fname, const char *out_fname, pack_opt_t *options) h5repack_verify(const char *in_fname, const char *out_fname, pack_opt_t *options)
{ {
int ret_value = 0; /*no need to LEAVE() on ERROR: H5TOOLS_ERR_INIT(int, SUCCEED) */ H5TOOLS_ERR_INIT(int, 0)
hid_t fidin = -1; /* file ID for input file*/ hid_t fidin = -1; /* file ID for input file*/
hid_t fidout = -1; /* file ID for output file*/ hid_t fidout = -1; /* file ID for output file*/
hid_t did = -1; /* dataset ID */ hid_t did = -1; /* dataset ID */
@@ -355,7 +355,7 @@ int verify_layout(hid_t pid, pack_info_t *obj)
int h5repack_cmp_pl(const char *fname1, const char *fname2) int h5repack_cmp_pl(const char *fname1, const char *fname2)
{ {
int ret_value = 1; /*no need to LEAVE() on ERROR: H5TOOLS_ERR_INIT(int, SUCCEED) */ H5TOOLS_ERR_INIT(int, 1)
hid_t fid1 =-1; /* file ID */ hid_t fid1 =-1; /* file ID */
hid_t fid2 =-1; /* file ID */ hid_t fid2 =-1; /* file ID */
hid_t dset1 =-1; /* dataset ID */ hid_t dset1 =-1; /* dataset ID */

View File

@@ -442,9 +442,9 @@ attribute_stats(iter_t *iter, const H5O_info_t *oi)
static herr_t static herr_t
group_stats(iter_t *iter, const char *name, const H5O_info_t *oi) group_stats(iter_t *iter, const char *name, const H5O_info_t *oi)
{ {
H5TOOLS_ERR_INIT(herr_t, SUCCEED)
H5G_info_t ginfo; /* Group information */ H5G_info_t ginfo; /* Group information */
unsigned bin; /* "bin" the number of objects falls in */ unsigned bin; /* "bin" the number of objects falls in */
herr_t ret_value = SUCCEED; /* Return value */
/* Gather statistics about this type of object */ /* Gather statistics about this type of object */
iter->uniq_groups++; iter->uniq_groups++;
@@ -512,6 +512,7 @@ done:
static herr_t static herr_t
dataset_stats(iter_t *iter, const char *name, const H5O_info_t *oi) dataset_stats(iter_t *iter, const char *name, const H5O_info_t *oi)
{ {
H5TOOLS_ERR_INIT(herr_t, SUCCEED)
unsigned bin; /* "bin" the number of objects falls in */ unsigned bin; /* "bin" the number of objects falls in */
hid_t did; /* Dataset ID */ hid_t did; /* Dataset ID */
hid_t sid; /* Dataspace ID */ hid_t sid; /* Dataspace ID */
@@ -527,7 +528,6 @@ dataset_stats(iter_t *iter, const char *name, const H5O_info_t *oi)
int num_ext; /* Number of external files for a dataset */ int num_ext; /* Number of external files for a dataset */
int nfltr; /* Number of filters for a dataset */ int nfltr; /* Number of filters for a dataset */
H5Z_filter_t fltr; /* Filter identifier */ H5Z_filter_t fltr; /* Filter identifier */
herr_t ret_value = SUCCEED; /* Return value */
/* Gather statistics about this type of object */ /* Gather statistics about this type of object */
iter->uniq_dsets++; iter->uniq_dsets++;
@@ -704,7 +704,7 @@ done:
static herr_t static herr_t
datatype_stats(iter_t *iter, const H5O_info_t *oi) datatype_stats(iter_t *iter, const H5O_info_t *oi)
{ {
herr_t ret_value = SUCCEED; H5TOOLS_ERR_INIT(herr_t, SUCCEED)
/* Gather statistics about this type of object */ /* Gather statistics about this type of object */
iter->uniq_dtypes++; iter->uniq_dtypes++;
@@ -738,8 +738,8 @@ static herr_t
obj_stats(const char *path, const H5O_info_t *oi, const char *already_visited, obj_stats(const char *path, const H5O_info_t *oi, const char *already_visited,
void *_iter) void *_iter)
{ {
H5TOOLS_ERR_INIT(herr_t, SUCCEED)
iter_t *iter = (iter_t *)_iter; iter_t *iter = (iter_t *)_iter;
herr_t ret_value = SUCCEED;
/* If the object has already been seen then just return */ /* If the object has already been seen then just return */
if(NULL == already_visited) { if(NULL == already_visited) {

View File

@@ -94,6 +94,17 @@
${HDF5_TOOLS_DIR}/testfiles/vds/5_vds.h5 ${HDF5_TOOLS_DIR}/testfiles/vds/5_vds.h5
# tools/testfiles # tools/testfiles
${HDF5_TOOLS_DIR}/testfiles/tvlstr.h5 ${HDF5_TOOLS_DIR}/testfiles/tvlstr.h5
#STD_REF_OBJ files
${HDF5_TOOLS_DIR}/testfiles/trefer_attr.h5
${HDF5_TOOLS_DIR}/testfiles/trefer_compat.h5
${HDF5_TOOLS_DIR}/testfiles/trefer_ext1.h5
${HDF5_TOOLS_DIR}/testfiles/trefer_ext2.h5
${HDF5_TOOLS_DIR}/testfiles/trefer_grp.h5
${HDF5_TOOLS_DIR}/testfiles/trefer_obj_del.h5
${HDF5_TOOLS_DIR}/testfiles/trefer_obj.h5
${HDF5_TOOLS_DIR}/testfiles/trefer_param.h5
${HDF5_TOOLS_DIR}/testfiles/trefer_reg_1d.h5
${HDF5_TOOLS_DIR}/testfiles/trefer_reg.h5
) )
set (LIST_OTHER_TEST_FILES set (LIST_OTHER_TEST_FILES
@@ -1044,7 +1055,10 @@ ADD_H5_TEST (h5diff_56 1 -v ${FILE4} ${FILE4} dset6a dset6b)
ADD_H5_TEST (h5diff_57 0 -v ${FILE4} ${FILE4} dset7a dset7b) ADD_H5_TEST (h5diff_57 0 -v ${FILE4} ${FILE4} dset7a dset7b)
# 5.8 (region reference) # 5.8 (region reference)
ADD_H5_TEST (h5diff_58 1 -v ${FILE7} ${FILE8} refreg) ADD_H5_TEST (h5diff_58 1 -v2 ${FILE7} ${FILE8} refreg)
ADD_H5_TEST (h5diff_58_ref 1 -v2 ${FILE7} ${FILE8} /g1/reference2D)
# STD_REF_OBJ
ADD_H5_TEST (h5diff_reg 0 -v2 trefer_attr.h5 trefer_ext2.h5 Dataset3 Dataset3)
# test for both dset and attr with same type but with different size # test for both dset and attr with same type but with different size
# ( HDDFV-7942 ) # ( HDDFV-7942 )
@@ -1484,8 +1498,6 @@ ADD_H5_TEST (h5diff_485 0 -v --exclude-path "/group1" h5diff_exclude3-1.h5 h5dif
ADD_H5_TEST (h5diff_486 0 -v --exclude-path "/group1" h5diff_exclude3-2.h5 h5diff_exclude3-1.h5) ADD_H5_TEST (h5diff_486 0 -v --exclude-path "/group1" h5diff_exclude3-2.h5 h5diff_exclude3-1.h5)
ADD_H5_TEST (h5diff_487 1 -v --exclude-path "/group1/dset" h5diff_exclude3-1.h5 h5diff_exclude3-2.h5) ADD_H5_TEST (h5diff_487 1 -v --exclude-path "/group1/dset" h5diff_exclude3-1.h5 h5diff_exclude3-2.h5)
# ############################################################################## # ##############################################################################
# # diff various multiple vlen and fixed strings in a compound type dataset # # diff various multiple vlen and fixed strings in a compound type dataset
# ############################################################################## # ##############################################################################
@@ -1524,7 +1536,7 @@ ADD_H5_TEST (h5diff_800 1 -v ${FILE7} ${FILE8} /g1/array /g1/array)
ADD_H5_TEST (h5diff_801 1 -v ${FILE7} ${FILE8A} /g1/array /g1/array) ADD_H5_TEST (h5diff_801 1 -v ${FILE7} ${FILE8A} /g1/array /g1/array)
# ############################################################################## # ##############################################################################
# VDS tests # # VDS tests
# ############################################################################## # ##############################################################################
ADD_H5_TEST (h5diff_v1 0 -v ${FILEV1} ${FILEV2}) ADD_H5_TEST (h5diff_v1 0 -v ${FILEV1} ${FILEV2})
ADD_H5_TEST (h5diff_v2 0 -r ${FILEV1} ${FILEV2}) ADD_H5_TEST (h5diff_v2 0 -r ${FILEV1} ${FILEV2})

View File

@@ -1,3 +1,4 @@
dataset: </refreg> and </refreg> dataset: </refreg> and </refreg>
Referenced dataset 10784 10784 Referenced dataset 10784 10784
------------------------------------------------------------ ------------------------------------------------------------
@@ -8,4 +9,7 @@ point #1 (2,2) (3,3)
point #3 (1,6) (2,5) point #3 (1,6) (2,5)
point #4 (2,8) (1,7) point #4 (2,8) (1,7)
4 differences found 4 differences found
obj1 obj2
--------------------------------------
Attributes status: 0 common, 0 only in obj1, 0 only in obj2
EXIT CODE: 1 EXIT CODE: 1

View File

@@ -0,0 +1,37 @@
dataset: </g1/reference2D> and </g1/reference2D>
size: [2] [2]
position difference
------------------------------------------------------------
[ 0 ] 1 0 1
[ 1 ] 2 0 2
size: [2] [2]
position difference
------------------------------------------------------------
[ 0 ] 1 0 1
[ 1 ] 2 0 2
size: [2] [2]
position difference
------------------------------------------------------------
[ 0 ] 1 0 1
[ 1 ] 2 0 2
size: [2] [2]
position difference
------------------------------------------------------------
[ 0 ] 1 0 1
[ 1 ] 2 0 2
size: [2] [2]
position difference
------------------------------------------------------------
[ 0 ] 1 0 1
[ 1 ] 2 0 2
size: [2] [2]
position difference
------------------------------------------------------------
[ 0 ] 1 0 1
[ 1 ] 2 0 2
12 differences found
obj1 obj2
--------------------------------------
Attributes status: 0 common, 0 only in obj1, 0 only in obj2
EXIT CODE: 1

View File

@@ -0,0 +1,15 @@
dataset: </Dataset3> and </Dataset3>
attribute: <Attr1> and <Attr1>
0 differences found
Warning: Cannot open referenced attribute: attribute 1
Warning: Cannot open referenced attribute: attribute 2
attribute: <Attr2> and <Attr2>
0 differences found
attribute: <Attr3> and <Attr3>
0 differences found
0 differences found
obj1 obj2
--------------------------------------
Attributes status: 0 common, 0 only in obj1, 0 only in obj2
EXIT CODE: 0

View File

@@ -198,6 +198,16 @@
${HDF5_TOOLS_DIR}/testfiles/h5dump-help.txt ${HDF5_TOOLS_DIR}/testfiles/h5dump-help.txt
${HDF5_TOOLS_DIR}/testfiles/out3.h5import ${HDF5_TOOLS_DIR}/testfiles/out3.h5import
${HDF5_TOOLS_DIR}/testfiles/zerodim.ddl ${HDF5_TOOLS_DIR}/testfiles/zerodim.ddl
#STD_REF_OBJ files
${HDF5_TOOLS_DIR}/testfiles/trefer_attrR.ddl
${HDF5_TOOLS_DIR}/testfiles/trefer_compatR.ddl
${HDF5_TOOLS_DIR}/testfiles/trefer_extR.ddl
${HDF5_TOOLS_DIR}/testfiles/trefer_grpR.ddl
${HDF5_TOOLS_DIR}/testfiles/trefer_obj_delR.ddl
${HDF5_TOOLS_DIR}/testfiles/trefer_objR.ddl
${HDF5_TOOLS_DIR}/testfiles/trefer_paramR.ddl
${HDF5_TOOLS_DIR}/testfiles/trefer_reg_1dR.ddl
${HDF5_TOOLS_DIR}/testfiles/trefer_regR.ddl
) )
set (HDF5_N_REFERENCE_FILES set (HDF5_N_REFERENCE_FILES
tall-3 tall-3
@@ -322,6 +332,18 @@
${HDF5_TOOLS_DIR}/testfiles/tvms.h5 ${HDF5_TOOLS_DIR}/testfiles/tvms.h5
${HDF5_TOOLS_DIR}/testfiles/t128bit_float.h5 ${HDF5_TOOLS_DIR}/testfiles/t128bit_float.h5
${HDF5_TOOLS_DIR}/testfiles/zerodim.h5 ${HDF5_TOOLS_DIR}/testfiles/zerodim.h5
#STD_REF_OBJ files
${HDF5_TOOLS_DIR}/testfiles/trefer_attr.h5
${HDF5_TOOLS_DIR}/testfiles/trefer_compat.h5
${HDF5_TOOLS_DIR}/testfiles/trefer_ext1.h5
${HDF5_TOOLS_DIR}/testfiles/trefer_ext2.h5
${HDF5_TOOLS_DIR}/testfiles/trefer_grp.h5
${HDF5_TOOLS_DIR}/testfiles/trefer_obj_del.h5
${HDF5_TOOLS_DIR}/testfiles/trefer_obj.h5
${HDF5_TOOLS_DIR}/testfiles/trefer_param.h5
${HDF5_TOOLS_DIR}/testfiles/trefer_reg_1d.h5
${HDF5_TOOLS_DIR}/testfiles/trefer_reg.h5
) )
set (HDF5_ERROR_REFERENCE_TEST_FILES set (HDF5_ERROR_REFERENCE_TEST_FILES
${PROJECT_SOURCE_DIR}/errfiles/filter_fail.err ${PROJECT_SOURCE_DIR}/errfiles/filter_fail.err
@@ -1108,6 +1130,17 @@
ADD_H5ERR_MASK_TEST (tattrregR 0 "NULL token size" -R --enable-error-stack tattrreg.h5) ADD_H5ERR_MASK_TEST (tattrregR 0 "NULL token size" -R --enable-error-stack tattrreg.h5)
ADD_H5_EXPORT_TEST (tbinregR tdatareg.h5 0 --enable-error-stack -d /Dataset1 -s 0 -R -y -o) ADD_H5_EXPORT_TEST (tbinregR tdatareg.h5 0 --enable-error-stack -d /Dataset1 -s 0 -R -y -o)
# test for 1.12 region references
ADD_H5_TEST (trefer_attrR 0 --enable-error-stack -R trefer_attr.h5)
ADD_H5_TEST (trefer_compatR 0 --enable-error-stack -R trefer_compat.h5)
ADD_H5_TEST (trefer_extR 0 --enable-error-stack -R trefer_ext2.h5)
ADD_H5_TEST (trefer_grpR 0 --enable-error-stack -R trefer_grp.h5)
ADD_H5_TEST (trefer_obj_delR 0 --enable-error-stack -R trefer_obj_del.h5)
ADD_H5_TEST (trefer_objR 0 --enable-error-stack -R trefer_obj.h5)
ADD_H5_TEST (trefer_paramR 0 --enable-error-stack -R trefer_param.h5)
ADD_H5_TEST (trefer_regR 0 --enable-error-stack -R trefer_reg.h5)
ADD_H5_TEST (trefer_reg_1dR 0 --enable-error-stack -R trefer_reg_1d.h5)
# tests for group creation order # tests for group creation order
# "1" tracked, "2" name, root tracked # "1" tracked, "2" name, root tracked
ADD_H5_TEST (tordergr1 0 --enable-error-stack --group=1 --sort_by=creation_order --sort_order=ascending tordergr.h5) ADD_H5_TEST (tordergr1 0 --enable-error-stack --group=1 --sort_by=creation_order --sort_order=ascending tordergr.h5)

Binary file not shown.

View File

@@ -0,0 +1,76 @@
HDF5 "trefer_attr.h5" {
GROUP "/" {
DATASET "Dataset3" {
DATATYPE H5T_REFERENCE { H5T_STD_REF }
DATASPACE SIMPLE { ( 4 ) / ( 4 ) }
DATA {
ATTRIBUTE "trefer_attr.h5/Group1/Dataset1/Attr1" {
DATATYPE H5T_STD_U32LE
DATASPACE SIMPLE { ( 4 ) / ( 4 ) }
DATA {
(0): 0, 3, 6, 9
}
}
ATTRIBUTE "trefer_attr.h5/Group1/Dataset2/Attr1" {
NULL
}
ATTRIBUTE "trefer_attr.h5/Group1/Attr2" {
DATATYPE H5T_STD_U32LE
DATASPACE SIMPLE { ( 4 ) / ( 4 ) }
DATA {
(0): 1, 4, 7, 10
}
}
ATTRIBUTE "trefer_attr.h5/Group1/Datatype1/Attr3" {
DATATYPE H5T_STD_U32LE
DATASPACE SIMPLE { ( 4 ) / ( 4 ) }
DATA {
(0): 2, 5, 8, 11
}
}
}
}
GROUP "Group1" {
ATTRIBUTE "Attr2" {
DATATYPE H5T_STD_U32LE
DATASPACE SIMPLE { ( 4 ) / ( 4 ) }
DATA {
(0): 1, 4, 7, 10
}
}
DATASET "Dataset1" {
DATATYPE H5T_STD_U32LE
DATASPACE SIMPLE { ( 4 ) / ( 4 ) }
DATA {
(0): 0, 0, 0, 0
}
ATTRIBUTE "Attr1" {
DATATYPE H5T_STD_U32LE
DATASPACE SIMPLE { ( 4 ) / ( 4 ) }
DATA {
(0): 0, 3, 6, 9
}
}
}
DATASET "Dataset2" {
DATATYPE H5T_STD_U8LE
DATASPACE SIMPLE { ( 4 ) / ( 4 ) }
DATA {
(0): 0, 0, 0, 0
}
}
DATATYPE "Datatype1" H5T_COMPOUND {
H5T_STD_I32LE "a";
H5T_STD_I32LE "b";
H5T_IEEE_F32LE "c";
}
ATTRIBUTE "Attr3" {
DATATYPE H5T_STD_U32LE
DATASPACE SIMPLE { ( 4 ) / ( 4 ) }
DATA {
(0): 2, 5, 8, 11
}
}
}
}
}

Binary file not shown.

View File

@@ -0,0 +1,114 @@
HDF5 "trefer_compat.h5" {
GROUP "/" {
DATASET "Dataset3" {
DATATYPE H5T_REFERENCE { H5T_STD_REF_OBJECT }
DATASPACE SIMPLE { ( 4 ) / ( 4 ) }
DATA {
DATASET "trefer_compat.h5/Group1/Dataset1"
DATA {
(0,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
(1,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
(2,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
(3,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
(4,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
(5,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
(6,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
(7,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
(8,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
(9,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
}
DATASET "trefer_compat.h5/Group1/Dataset2"
DATA {
(0,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
(1,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
(2,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
(3,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
(4,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
(5,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
(6,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
(7,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
(8,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
(9,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
}
GROUP "trefer_compat.h5/Group1"
DATATYPE "trefer_compat.h5/Group1/Datatype1"
}
}
DATASET "Dataset4" {
DATATYPE H5T_REFERENCE { H5T_STD_REF_DSETREG }
DATASPACE SIMPLE { ( 2 ) / ( 2 ) }
DATA {
DATASET "trefer_compat.h5/Group1/Dataset1" {
REGION_TYPE BLOCK (2,2)-(7,7)
DATATYPE H5T_STD_U32LE
DATASPACE SIMPLE { ( 10, 10 ) / ( 10, 10 ) }
DATA {
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0
}
}
DATASET "trefer_compat.h5/Group1/Dataset2" {
REGION_TYPE POINT (6,9), (2,2), (8,4), (1,6), (2,8), (3,2),
(0,4), (9,0), (7,1), (3,3)
DATATYPE H5T_STD_U8LE
DATASPACE SIMPLE { ( 10, 10 ) / ( 10, 10 ) }
DATA {
0,
0,
0,
0,
0,
0,
0,
0,
0,
0
}
}
}
}
GROUP "Group1" {
DATASET "Dataset1" {
DATATYPE H5T_STD_U32LE
DATASPACE SIMPLE { ( 10, 10 ) / ( 10, 10 ) }
DATA {
(0,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
(1,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
(2,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
(3,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
(4,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
(5,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
(6,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
(7,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
(8,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
(9,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
}
}
DATASET "Dataset2" {
DATATYPE H5T_STD_U8LE
DATASPACE SIMPLE { ( 10, 10 ) / ( 10, 10 ) }
DATA {
(0,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
(1,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
(2,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
(3,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
(4,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
(5,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
(6,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
(7,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
(8,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
(9,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
}
}
DATATYPE "Datatype1" H5T_COMPOUND {
H5T_STD_I32LE "a";
H5T_STD_I32LE "b";
H5T_IEEE_F32LE "c";
}
}
}
}

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,34 @@
HDF5 "trefer_ext2.h5" {
GROUP "/" {
DATASET "Dataset3" {
DATATYPE H5T_REFERENCE { H5T_STD_REF }
DATASPACE SIMPLE { ( 4 ) / ( 4 ) }
DATA {
ATTRIBUTE "trefer_ext1.h5/Group1/Dataset1/Attr1" {
DATATYPE H5T_STD_U32LE
DATASPACE SIMPLE { ( 4 ) / ( 4 ) }
DATA {
(0): 0, 3, 6, 9
}
}
ATTRIBUTE "trefer_ext1.h5/Group1/Dataset2/Attr1" {
NULL
}
ATTRIBUTE "trefer_ext1.h5/Group1/Attr2" {
DATATYPE H5T_STD_U32LE
DATASPACE SIMPLE { ( 4 ) / ( 4 ) }
DATA {
(0): 1, 4, 7, 10
}
}
ATTRIBUTE "trefer_ext1.h5/Group1/Datatype1/Attr3" {
DATATYPE H5T_STD_U32LE
DATASPACE SIMPLE { ( 4 ) / ( 4 ) }
DATA {
(0): 2, 5, 8, 11
}
}
}
}
}
}

Binary file not shown.

View File

@@ -0,0 +1,15 @@
HDF5 "trefer_grp.h5" {
GROUP "/" {
DATASET "dset" {
DATATYPE H5T_REFERENCE { H5T_STD_REF }
DATASPACE SCALAR
DATA {
GROUP "trefer_grp.h5/group"
}
}
GROUP "group" {
GROUP "group3" {
}
}
}
}

Binary file not shown.

View File

@@ -0,0 +1,59 @@
HDF5 "trefer_obj.h5" {
GROUP "/" {
DATASET "Dataset3" {
DATATYPE H5T_REFERENCE { H5T_STD_REF }
DATASPACE SIMPLE { ( 1 ) / ( 1 ) }
DATA {
DATASET "trefer_obj.h5/Group1/Dataset1"
DATA {
(0): 0
}
}
}
DATASET "Dataset4" {
DATATYPE H5T_REFERENCE { H5T_STD_REF_OBJECT }
DATASPACE SIMPLE { ( 1 ) / ( 1 ) }
DATA {
DATASET "trefer_obj.h5/Group1/Dataset1"
DATA {
(0): 0
}
}
}
DATASET "Dataset5" {
DATATYPE H5T_REFERENCE { H5T_STD_REF }
DATASPACE SIMPLE { ( 1 ) / ( 1 ) }
DATA {
DATASET "trefer_obj.h5/Group1/Dataset1"
}
}
DATASET "Dataset6" {
DATATYPE H5T_REFERENCE { H5T_STD_REF_DSETREG }
DATASPACE SIMPLE { ( 1 ) / ( 1 ) }
DATA {
DATASET "trefer_obj.h5/Group1/Dataset1"
}
}
GROUP "Group1" {
DATASET "Dataset1" {
DATATYPE H5T_STD_U32LE
DATASPACE SIMPLE { ( 1 ) / ( 1 ) }
DATA {
(0): 0
}
}
DATASET "Dataset2" {
DATATYPE H5T_STD_U8LE
DATASPACE SIMPLE { ( 1 ) / ( 1 ) }
DATA {
(0): 0
}
}
DATATYPE "Datatype1" H5T_COMPOUND {
H5T_STD_I32LE "a";
H5T_STD_I32LE "b";
H5T_IEEE_F32LE "c";
}
}
}
}

Binary file not shown.

View File

@@ -0,0 +1,11 @@
HDF5 "trefer_obj_del.h5" {
GROUP "/" {
DATASET "Dataset2" {
DATATYPE H5T_REFERENCE { H5T_STD_REF }
DATASPACE SCALAR
DATA {
GROUP "trefer_obj_del.h5"
}
}
}
}

Binary file not shown.

View File

@@ -0,0 +1,43 @@
HDF5 "trefer_param.h5" {
GROUP "/" {
DATASET "Dataset3" {
DATATYPE H5T_REFERENCE { H5T_STD_REF }
DATASPACE SIMPLE { ( 4 ) / ( 4 ) }
DATA {
NULL
NULL
NULL
NULL
}
}
GROUP "Group1" {
COMMENT "Foo!"
DATASET "Dataset1" {
DATATYPE H5T_STD_U32LE
DATASPACE SIMPLE { ( 4 ) / ( 4 ) }
DATA {
(0): 0, 3, 6, 9
}
}
DATASET "Dataset2" {
DATATYPE H5T_STD_U8LE
DATASPACE SIMPLE { ( 4 ) / ( 4 ) }
DATA {
(0): 0, 0, 0, 0
}
ATTRIBUTE "Attr" {
DATATYPE H5T_STD_U32LE
DATASPACE SIMPLE { ( 4 ) / ( 4 ) }
DATA {
(0): 0, 3, 6, 9
}
}
}
DATATYPE "Datatype1" H5T_COMPOUND {
H5T_STD_I32LE "a";
H5T_STD_I32LE "b";
H5T_IEEE_F32LE "c";
}
}
}
}

Binary file not shown.

View File

@@ -0,0 +1,66 @@
HDF5 "trefer_reg.h5" {
GROUP "/" {
DATASET "DS_NA" {
DATATYPE H5T_REFERENCE { H5T_STD_REF }
DATASPACE SIMPLE { ( 1 ) / ( 1 ) }
DATA {
NULL
}
}
DATASET "Dataset1" {
DATATYPE H5T_REFERENCE { H5T_STD_REF }
DATASPACE SIMPLE { ( 4 ) / ( 4 ) }
DATA {
DATASET "trefer_reg.h5/Dataset2" {
REGION_TYPE BLOCK (2,2)-(7,7)
DATATYPE H5T_STD_U8LE
DATASPACE SIMPLE { ( 10, 10 ) / ( 10, 10 ) }
DATA {
66, 69, 72, 75, 78, 81,
96, 99, 102, 105, 108, 111,
126, 129, 132, 135, 138, 141,
156, 159, 162, 165, 168, 171,
186, 189, 192, 195, 198, 201,
216, 219, 222, 225, 228, 231
}
}
DATASET "trefer_reg.h5/Dataset2" {
REGION_TYPE POINT (6,9), (2,2), (8,4), (1,6), (2,8), (3,2),
(0,4), (9,0), (7,1), (3,3)
DATATYPE H5T_STD_U8LE
DATASPACE SIMPLE { ( 10, 10 ) / ( 10, 10 ) }
DATA {
207,
66,
252,
48,
84,
96,
12,
14,
213,
99
}
}
DATASET "trefer_reg.h5/Dataset2"
DATASET "trefer_reg.h5/Dataset2"
}
}
DATASET "Dataset2" {
DATATYPE H5T_STD_U8LE
DATASPACE SIMPLE { ( 10, 10 ) / ( 10, 10 ) }
DATA {
(0,0): 0, 3, 6, 9, 12, 15, 18, 21, 24, 27,
(1,0): 30, 33, 36, 39, 42, 45, 48, 51, 54, 57,
(2,0): 60, 63, 66, 69, 72, 75, 78, 81, 84, 87,
(3,0): 90, 93, 96, 99, 102, 105, 108, 111, 114, 117,
(4,0): 120, 123, 126, 129, 132, 135, 138, 141, 144, 147,
(5,0): 150, 153, 156, 159, 162, 165, 168, 171, 174, 177,
(6,0): 180, 183, 186, 189, 192, 195, 198, 201, 204, 207,
(7,0): 210, 213, 216, 219, 222, 225, 228, 231, 234, 237,
(8,0): 240, 243, 246, 249, 252, 255, 2, 5, 8, 11,
(9,0): 14, 17, 20, 23, 26, 29, 32, 35, 38, 41
}
}
}
}

Binary file not shown.

View File

@@ -0,0 +1,66 @@
HDF5 "trefer_reg_1d.h5" {
GROUP "/" {
DATASET "Dataset1" {
DATATYPE H5T_REFERENCE { H5T_STD_REF }
DATASPACE SIMPLE { ( 2 ) / ( 2 ) }
DATA {
DATASET "trefer_reg_1d.h5/Dataset2" {
REGION_TYPE BLOCK (2)-(3), (7)-(8), (12)-(13), (17)-(18),
(22)-(23), (27)-(28), (32)-(33), (37)-(38), (42)-(43),
(47)-(48), (52)-(53), (57)-(58), (62)-(63), (67)-(68),
(72)-(73)
DATATYPE H5T_STD_U8LE
DATASPACE SIMPLE { ( 100 ) / ( 100 ) }
DATA {
6, 9,
21, 24,
36, 39,
51, 54,
66, 69,
81, 84,
96, 99,
111, 114,
126, 129,
141, 144,
156, 159,
171, 174,
186, 189,
201, 204,
216, 219
}
}
DATASET "trefer_reg_1d.h5/Dataset2" {
REGION_TYPE POINT (16), (22), (38), (41), (52), (63), (70),
(89), (97), (3)
DATATYPE H5T_STD_U8LE
DATASPACE SIMPLE { ( 100 ) / ( 100 ) }
DATA {
48,
66,
114,
123,
156,
189,
210,
11,
35,
9
}
}
}
}
DATASET "Dataset2" {
DATATYPE H5T_STD_U8LE
DATASPACE SIMPLE { ( 100 ) / ( 100 ) }
DATA {
(0): 0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48,
(17): 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96,
(33): 99, 102, 105, 108, 111, 114, 117, 120, 123, 126, 129, 132, 135,
(46): 138, 141, 144, 147, 150, 153, 156, 159, 162, 165, 168, 171, 174,
(59): 177, 180, 183, 186, 189, 192, 195, 198, 201, 204, 207, 210, 213,
(72): 216, 219, 222, 225, 228, 231, 234, 237, 240, 243, 246, 249, 252,
(85): 255, 2, 5, 8, 11, 14, 17, 20, 23, 26, 29, 32, 35, 38, 41
}
}
}
}