diff options
author | Quincey Koziol <koziol@hdfgroup.org> | 2003-08-26 18:35:37 (GMT) |
---|---|---|
committer | Quincey Koziol <koziol@hdfgroup.org> | 2003-08-26 18:35:37 (GMT) |
commit | 438248d01de7c779e6b7f3b9a75c3f706bbe14f4 (patch) | |
tree | bef9581b4a471e32d4b8fc4b3c23806ac671f54b /test/titerate.c | |
parent | 7e9c4449d4a78e756f6935ef828bc440224a86ab (diff) | |
download | hdf5-438248d01de7c779e6b7f3b9a75c3f706bbe14f4.zip hdf5-438248d01de7c779e6b7f3b9a75c3f706bbe14f4.tar.gz hdf5-438248d01de7c779e6b7f3b9a75c3f706bbe14f4.tar.bz2 |
[svn-r7412] Purpose:
Bug fix
Description:
H5Gget_objname_by_idx should allow NULL for the 'name' parameter, to allow
for querying for the name's length.
Solution:
Allow NULL for the 'name' parameter, the internal functions were already
ready to handle that case.
Clean up RM information about H5Gget_objname_by_idx and
H5Gget_objtype_by_idx also.
Platforms tested:
FreeBSD 4.8 (sleipnir)
h5committest
Diffstat (limited to 'test/titerate.c')
-rw-r--r-- | test/titerate.c | 51 |
1 files changed, 29 insertions, 22 deletions
diff --git a/test/titerate.c b/test/titerate.c index ee926ea..1624196 100644 --- a/test/titerate.c +++ b/test/titerate.c @@ -118,7 +118,7 @@ static void test_iter_group(void) int idx; /* Index in the group */ char name[NAMELEN]; /* temporary name buffer */ char *dnames[NDATASETS];/* Names of the datasets created */ - char dataset_name[16]; /* dataset name */ + char dataset_name[NAMELEN]; /* dataset name */ iter_info info; /* Custom iteration information */ hsize_t num_membs; /* Number of group members */ herr_t ret; /* Generic return value */ @@ -199,17 +199,17 @@ static void test_iter_group(void) for(i=0; i< (int)num_membs; i++) { H5G_obj_t obj_type; /* Type of object in file */ - ret = H5Gget_objname_by_idx(root_group, (hsize_t)i, dataset_name, 32); - CHECK(ret, FAIL, "H5Gget_objsname_by_idx"); + ret = H5Gget_objname_by_idx(root_group, (hsize_t)i, dataset_name, NAMELEN); + CHECK(ret, FAIL, "H5Gget_objname_by_idx"); obj_type = H5Gget_objtype_by_idx(root_group, (hsize_t)i); - CHECK(obj_type, H5G_UNKNOWN, "H5Gget_objsname_by_idx"); + CHECK(obj_type, H5G_UNKNOWN, "H5Gget_objtype_by_idx"); } H5E_BEGIN_TRY { - ret = (herr_t)H5Gget_objname_by_idx(root_group, (hsize_t)(NDATASETS+3), dataset_name, 16); + ret = (herr_t)H5Gget_objname_by_idx(root_group, (hsize_t)(NDATASETS+3), dataset_name, NAMELEN); } H5E_END_TRY; - VERIFY(ret, FAIL, "H5Gget_objsname_by_idx"); + VERIFY(ret, FAIL, "H5Gget_objname_by_idx"); ret = H5Gclose(root_group); CHECK(ret, FAIL, "H5Gclose"); @@ -227,17 +227,17 @@ static void test_iter_group(void) for(i=0; i< (int)num_membs; i++) { H5G_obj_t obj_type; /* Type of object in file */ - ret = H5Gget_objname_by_idx(file, (hsize_t)i, dataset_name, 32); - CHECK(ret, FAIL, "H5Gget_objsname_by_idx"); + ret = H5Gget_objname_by_idx(file, (hsize_t)i, dataset_name, NAMELEN); + CHECK(ret, FAIL, "H5Gget_objname_by_idx"); obj_type = H5Gget_objtype_by_idx(file, (hsize_t)i); - CHECK(obj_type, H5G_UNKNOWN, "H5Gget_objsname_by_idx"); + CHECK(obj_type, H5G_UNKNOWN, "H5Gget_objtype_by_idx"); } H5E_BEGIN_TRY { - ret = (herr_t)H5Gget_objname_by_idx(file, (hsize_t)(NDATASETS+3), dataset_name, 16); + ret = (herr_t)H5Gget_objname_by_idx(file, (hsize_t)(NDATASETS+3), dataset_name, NAMELEN); } H5E_END_TRY; - VERIFY(ret, FAIL, "H5Gget_objsname_by_idx"); + VERIFY(ret, FAIL, "H5Gget_objname_by_idx"); } /* Test invalid indices for starting iteration */ @@ -730,7 +730,8 @@ static void test_grp_memb_funcs(void) char name[NAMELEN]; /* temporary name buffer */ char *dnames[NDATASETS+2];/* Names of the datasets created */ char *obj_names[NDATASETS+2];/* Names of the objects in group */ - char dataset_name[16]; /* dataset name */ + char dataset_name[NAMELEN]; /* dataset name */ + ssize_t name_len; /* Length of object's name */ hsize_t num_membs; /* Number of group members */ herr_t ret; /* Generic return value */ @@ -791,7 +792,6 @@ static void test_grp_memb_funcs(void) /* Sort the dataset names */ qsort(dnames,NDATASETS+2,sizeof(char *),iter_strcmp); - /* Iterate through the datasets in the root group in various ways */ file=H5Fopen(DATAFILE, H5F_ACC_RDONLY, H5P_DEFAULT); CHECK(file, FAIL, "H5Fopen"); @@ -809,28 +809,35 @@ static void test_grp_memb_funcs(void) for(i=0; i< (int)num_membs; i++) { H5G_obj_t obj_type; /* Type of object in file */ - ret = H5Gget_objname_by_idx(root_group, (hsize_t)i, dataset_name, 32); - CHECK(ret, FAIL, "H5Gget_objsname_by_idx"); + /* Test with NULL for name, to query length */ + name_len = H5Gget_objname_by_idx(root_group, (hsize_t)i, NULL, NAMELEN); + CHECK(name_len, FAIL, "H5Gget_objname_by_idx"); + + ret = H5Gget_objname_by_idx(root_group, (hsize_t)i, dataset_name, NAMELEN); + CHECK(ret, FAIL, "H5Gget_objname_by_idx"); + + /* Double-check that the length is the same */ + VERIFY(ret, name_len, "H5Gget_objname_by_idx"); /* Keep a copy of the dataset names around for later */ obj_names[i]=HDstrdup(dataset_name); - CHECK(dnames[i], NULL, "strdup"); + CHECK(obj_names[i], NULL, "strdup"); obj_type = H5Gget_objtype_by_idx(root_group, (hsize_t)i); - CHECK(obj_type, H5G_UNKNOWN, "H5Gget_objsname_by_idx"); + CHECK(obj_type, H5G_UNKNOWN, "H5Gget_objtype_by_idx"); if(!HDstrcmp(dataset_name, "grp")) - VERIFY(obj_type, H5G_GROUP, "H5Gget_objsname_by_idx"); + VERIFY(obj_type, H5G_GROUP, "H5Gget_objname_by_idx"); if(!HDstrcmp(dataset_name, "dtype")) - VERIFY(obj_type, H5G_TYPE, "H5Gget_objsname_by_idx"); + VERIFY(obj_type, H5G_TYPE, "H5Gget_objname_by_idx"); if(!HDstrncmp(dataset_name, "Dataset", 7)) - VERIFY(obj_type, H5G_DATASET, "H5Gget_objsname_by_idx"); + VERIFY(obj_type, H5G_DATASET, "H5Gget_objname_by_idx"); } H5E_BEGIN_TRY { - ret = (herr_t)H5Gget_objname_by_idx(root_group, (hsize_t)(NDATASETS+3), dataset_name, 16); + ret = (herr_t)H5Gget_objname_by_idx(root_group, (hsize_t)(NDATASETS+3), dataset_name, NAMELEN); } H5E_END_TRY; - VERIFY(ret, FAIL, "H5Gget_objsname_by_idx"); + VERIFY(ret, FAIL, "H5Gget_objname_by_idx"); /* Sort the dataset names */ qsort(obj_names,NDATASETS+2,sizeof(char *),iter_strcmp); |