summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
Diffstat (limited to 'tools')
-rw-r--r--tools/h5diff/h5trav.c96
1 files changed, 69 insertions, 27 deletions
diff --git a/tools/h5diff/h5trav.c b/tools/h5diff/h5trav.c
index f4ce00f..ba51285 100644
--- a/tools/h5diff/h5trav.c
+++ b/tools/h5diff/h5trav.c
@@ -1,4 +1,3 @@
-
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Copyright by the Board of Trustees of the University of Illinois. *
* All rights reserved. *
@@ -37,9 +36,6 @@ int traverse( hid_t loc_id, const char *group_name, table_t *table, info_t *info
herr_t get_nobjects( hid_t loc_id, const char *group_name );
herr_t get_name_type( hid_t loc_id, const char *group_name, int idx, char **name, int *type );
-
-
-
/*-------------------------------------------------------------------------
* Function: H5get_object_info
*
@@ -237,8 +233,6 @@ int traverse( hid_t loc_id, const char *group_name, table_t *table, info_t *info
H5G_stat_t statbuf;
int inserted_objs=0;
int j;
- void *edata;
- H5E_auto_t func;
if (( nobjs = get_nobjects( loc_id, group_name )) < 0 )
return -1;
@@ -259,12 +253,11 @@ int traverse( hid_t loc_id, const char *group_name, table_t *table, info_t *info
strcat( path, name );
/* disable error reporting */
- H5Eget_auto(H5E_DEFAULT, &func, &edata);
- H5Eset_auto(H5E_DEFAULT, NULL, NULL);
+ H5E_BEGIN_TRY {
/* get info */
H5Gget_objinfo( loc_id, path, TRUE, &statbuf);
- H5Eset_auto(H5E_DEFAULT, &func, edata);
+ } H5E_END_TRY;
/* add to array */
if ( info )
@@ -289,10 +282,10 @@ int traverse( hid_t loc_id, const char *group_name, table_t *table, info_t *info
inserted_objs++;
/* nlink is number of hard links to object */
- if (statbuf.nlink > 0 && table_search(statbuf.objno, table ) == FAIL)
+ if (statbuf.nlink > 0 && table_search_obj(statbuf.objno, table ) == FAIL)
{
/* add object to table */
- table_add(statbuf.objno, path, H5G_GROUP, table );
+ table_add_obj(statbuf.objno, path, H5G_GROUP, table );
/* recurse with the absolute name */
inserted_objs += traverse( loc_id, path, table, info, idx );
@@ -302,7 +295,7 @@ int traverse( hid_t loc_id, const char *group_name, table_t *table, info_t *info
group with more than one link to it */
if (statbuf.nlink > 1)
{
- if ((j = table_search(statbuf.objno, table )) < 0 )
+ if ((j = table_search_obj(statbuf.objno, table )) < 0 )
return -1;
if ( table->objs[j].displayed == 0 )
@@ -329,17 +322,17 @@ int traverse( hid_t loc_id, const char *group_name, table_t *table, info_t *info
inserted_objs++;
/* nlink is number of hard links to object */
- if (statbuf.nlink > 0 && table_search(statbuf.objno, table ) == FAIL)
+ if (statbuf.nlink > 0 && table_search_obj(statbuf.objno, table ) == FAIL)
{
/* add object to table */
- table_add(statbuf.objno, path, H5G_DATASET, table );
+ table_add_obj(statbuf.objno, path, H5G_DATASET, table );
}
/* search table
dataset with more than one link to it */
if (statbuf.nlink > 1)
{
- if ((j = table_search(statbuf.objno, table )) < 0 )
+ if ((j = table_search_obj(statbuf.objno, table )) < 0 )
return -1;
if ( table->objs[j].displayed == 0 )
@@ -367,10 +360,10 @@ int traverse( hid_t loc_id, const char *group_name, table_t *table, info_t *info
inserted_objs++;
/* nlink is number of hard links to object */
- if (statbuf.nlink > 0 && table_search(statbuf.objno, table ) == FAIL)
+ if (statbuf.nlink > 0 && table_search_obj(statbuf.objno, table ) == FAIL)
{
/* add object to table */
- table_add(statbuf.objno, path, H5G_TYPE, table );
+ table_add_obj(statbuf.objno, path, H5G_TYPE, table );
}
break;
@@ -415,7 +408,7 @@ int traverse( hid_t loc_id, const char *group_name, table_t *table, info_t *info
/*-------------------------------------------------------------------------
- * Function: table_search
+ * Function: table_search_obj
*
* Purpose:
*
@@ -432,12 +425,12 @@ int traverse( hid_t loc_id, const char *group_name, table_t *table, info_t *info
*-------------------------------------------------------------------------
*/
-int table_search(unsigned long *objno, table_t *table )
+int table_search_obj(haddr_t objno, table_t *table )
{
int i;
for (i = 0; i < table->nobjs; i++)
- if (table->objs[i].objno[0] == *objno && table->objs[i].objno[1] == *(objno + 1))
+ if (table->objs[i].objno == objno)
return i;
return FAIL;
@@ -445,7 +438,52 @@ int table_search(unsigned long *objno, table_t *table )
/*-------------------------------------------------------------------------
- * Function: table_add
+ * Function: table_add_obj
+ *
+ * Purpose:
+ *
+ * Return:
+ *
+ * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
+ *
+ * Date: November 4, 2002
+ *
+ * Comments:
+ *
+ * Modifications:
+ *
+ *-------------------------------------------------------------------------
+ */
+
+void
+table_add_obj(haddr_t objno, char *objname, int type, table_t *table)
+{
+ int i;
+
+ if (table->nobjs == table->size) {
+ table->size *= 2;
+ table->objs = (obj_t*)realloc(table->objs, table->size * sizeof(obj_t));
+
+ for (i = table->nobjs; i < table->size; i++) {
+ table->objs[i].objno = 0;
+ table->objs[i].flags[0] = table->objs[i].flags[1] = 0;
+ table->objs[i].displayed = 0;
+ table->objs[i].type = H5G_UNKNOWN;
+ table->objs[i].objname = NULL;
+ }
+ }
+
+ i = table->nobjs++;
+ table->objs[i].objno = objno;
+ table->objs[i].flags[0] = table->objs[i].flags[1] = 0;
+ free(table->objs[i].objname);
+ table->objs[i].objname = (char *)HDstrdup(objname);
+ table->objs[i].type = type;
+}
+
+
+/*-------------------------------------------------------------------------
+ * Function: table_add_flags
*
* Purpose:
*
@@ -462,7 +500,8 @@ int table_search(unsigned long *objno, table_t *table )
*-------------------------------------------------------------------------
*/
-void table_add(unsigned long *objno, char *objname, int type, table_t *table)
+void
+table_add_flags(unsigned *flags, char *objname, int type, table_t *table)
{
int i;
@@ -471,7 +510,8 @@ void table_add(unsigned long *objno, char *objname, int type, table_t *table)
table->objs = (obj_t*)realloc(table->objs, table->size * sizeof(obj_t));
for (i = table->nobjs; i < table->size; i++) {
- table->objs[i].objno[0] = table->objs[i].objno[1] = 0;
+ table->objs[i].objno = 0;
+ table->objs[i].flags[0] = table->objs[i].flags[1] = 0;
table->objs[i].displayed = 0;
table->objs[i].type = H5G_UNKNOWN;
table->objs[i].objname = NULL;
@@ -479,11 +519,12 @@ void table_add(unsigned long *objno, char *objname, int type, table_t *table)
}
i = table->nobjs++;
- table->objs[i].objno[0] = objno[0];
- table->objs[i].objno[1] = objno[1];
+ table->objs[i].objno = 0;
+ table->objs[i].flags[0] = flags[0];
+ table->objs[i].flags[1] = flags[1];
free(table->objs[i].objname);
table->objs[i].objname = (char *)HDstrdup(objname);
- table->objs[i].type = type;
+ table->objs[i].type = type;
}
@@ -515,7 +556,8 @@ void table_init( table_t **tbl )
table->objs = (obj_t*) malloc(table->size * sizeof(obj_t));
for (i = 0; i < table->size; i++) {
- table->objs[i].objno[0] = table->objs[i].objno[1] = 0;
+ table->objs[i].objno = 0;
+ table->objs[i].flags[0] = table->objs[i].flags[1] = 0;
table->objs[i].displayed = 0;
table->objs[i].type = H5G_UNKNOWN;
table->objs[i].objname = NULL;