mirror of
https://github.com/HDFGroup/hdf5.git
synced 2025-04-12 17:31:09 +08:00
[svn-r7322] Purpose:
Refactored code Description: Use H5E_BEGIN_TRY/H5E_END_TRY macros around blocks where errors shouldn't be printed, instead of managing 'automatic error' information. Use new 'flags' field in table objects where appropriate Chase changes to 'fileno' and 'objno' fields of H5G_stat_t Platforms tested: h5committested
This commit is contained in:
parent
21c1f05808
commit
64b045691c
@ -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,7 @@ int table_search(unsigned long *objno, table_t *table )
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: table_add
|
||||
* Function: table_add_obj
|
||||
*
|
||||
* Purpose:
|
||||
*
|
||||
@ -462,7 +455,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_obj(haddr_t objno, char *objname, int type, table_t *table)
|
||||
{
|
||||
int i;
|
||||
|
||||
@ -471,7 +465,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 +474,57 @@ 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 = 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;
|
||||
table->objs[i].type = type;
|
||||
}
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: table_add_flags
|
||||
*
|
||||
* Purpose:
|
||||
*
|
||||
* Return:
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
*
|
||||
* Date: November 4, 2002
|
||||
*
|
||||
* Comments:
|
||||
*
|
||||
* Modifications:
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
void
|
||||
table_add_flags(unsigned *flags, 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 = 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;
|
||||
}
|
||||
|
||||
|
||||
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user