summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--c++/src/H5CommonFG.cpp2
-rw-r--r--c++/src/H5CommonFG.h14
-rw-r--r--c++/test/tattr.cpp16
-rw-r--r--hl/src/H5DS.c77
-rw-r--r--hl/src/H5LT.c511
-rw-r--r--hl/src/H5LTprivate.h5
-rw-r--r--src/H5Epublic.h8
-rw-r--r--src/H5FD.c2
-rw-r--r--src/H5Gdeprec.c92
-rw-r--r--src/H5Gpublic.h80
-rw-r--r--src/H5Opublic.h32
-rw-r--r--src/H5Osdspace.c3
-rw-r--r--src/H5Tconv.c2
-rw-r--r--src/H5private.h9
-rw-r--r--src/H5public.h18
-rw-r--r--src/H5trace.c2
-rw-r--r--test/dtypes.c18
-rw-r--r--test/istore.c4
-rw-r--r--test/links.c303
-rw-r--r--test/mount.c83
-rw-r--r--test/mtime.c156
-rwxr-xr-xtest/objcopy.c94
-rw-r--r--test/stab.c30
-rw-r--r--test/tattr.c105
-rw-r--r--test/testhdf5.h13
-rw-r--r--test/tfile.c5
-rw-r--r--test/th5o.c92
-rw-r--r--test/titerate.c12
-rw-r--r--test/tmisc.c181
-rw-r--r--test/tsohm.c24
-rw-r--r--test/unlink.c38
-rw-r--r--test/vfd.c4
-rw-r--r--tools/h5diff/h5diff_main.c38
-rw-r--r--tools/h5diff/ph5diff_main.c30
-rw-r--r--tools/h5dump/h5dump.c3698
-rw-r--r--tools/h5ls/h5ls.c565
-rw-r--r--tools/h5repack/h5repack_copy.c6
-rw-r--r--tools/h5repack/h5repack_refs.c832
-rw-r--r--tools/lib/h5diff.c1213
-rw-r--r--tools/lib/h5diff.h293
-rw-r--r--tools/lib/h5diff_array.c304
-rw-r--r--tools/lib/h5tools.c252
-rw-r--r--tools/lib/h5tools_ref.c208
-rw-r--r--tools/lib/h5tools_ref.h11
-rw-r--r--tools/lib/h5tools_str.c134
-rw-r--r--tools/lib/h5tools_str.h2
-rw-r--r--tools/lib/h5tools_utils.c73
-rw-r--r--tools/lib/h5trav.c20
-rw-r--r--tools/lib/h5trav.h37
-rw-r--r--tools/lib/ph5diff.h9
-rw-r--r--tools/testfiles/h5copytst.out.ls55
-rw-r--r--tools/testfiles/tall-1.ddl2
-rw-r--r--tools/testfiles/tall-2A.ddl2
-rw-r--r--tools/testfiles/tall-2A.h5.xml4
-rw-r--r--tools/testfiles/tall-2B.ddl2
-rw-r--r--tools/testfiles/tall.h5.xml4
-rw-r--r--tools/testfiles/tattr2.ls1
-rw-r--r--tools/testfiles/tcompound.h5.xml142
-rw-r--r--tools/testfiles/tcompound2.h5.xml142
-rw-r--r--tools/testfiles/tnamed_dtype_attr.h5.xml14
-rw-r--r--tools/testfiles/tnofilename.ddl2
-rw-r--r--tools/testfiles/tobjref.h5.xml54
-rw-r--r--tools/testfiles/tref.h5.xml58
-rw-r--r--tools/testfiles/tsaf.h5.xml578
-rw-r--r--tools/testfiles/tvlstr.h5.xml14
65 files changed, 5012 insertions, 5822 deletions
diff --git a/c++/src/H5CommonFG.cpp b/c++/src/H5CommonFG.cpp
index 0ea3923..b76d8b0 100644
--- a/c++/src/H5CommonFG.cpp
+++ b/c++/src/H5CommonFG.cpp
@@ -341,6 +341,7 @@ void CommonFG::move( const H5std_string& src, const H5std_string& dst ) const
move( src.c_str(), dst.c_str() );
}
+#ifndef H5_NO_DEPRECATED_SYMBOLS
//--------------------------------------------------------------------------
// Function: CommonFG::getObjinfo
///\brief Returns information about an object.
@@ -402,6 +403,7 @@ void CommonFG::getObjinfo( const H5std_string& name, H5G_stat_t& statbuf ) const
{
getObjinfo( name.c_str(), statbuf );
}
+#endif /* H5_NO_DEPRECATED_SYMBOLS */
//--------------------------------------------------------------------------
// Function: CommonFG::getLinkval
diff --git a/c++/src/H5CommonFG.h b/c++/src/H5CommonFG.h
index ed1c132..2a2e6cd 100644
--- a/c++/src/H5CommonFG.h
+++ b/c++/src/H5CommonFG.h
@@ -69,13 +69,6 @@ class H5_DLLCPP CommonFG {
// Returns the number of objects in this group.
hsize_t getNumObjs() const;
- // Returns information about an HDF5 object, given by its name,
- // at this location.
- void getObjinfo(const char* name, hbool_t follow_link, H5G_stat_t& statbuf) const;
- void getObjinfo(const H5std_string& name, hbool_t follow_link, H5G_stat_t& statbuf) const;
- void getObjinfo(const char* name, H5G_stat_t& statbuf) const;
- void getObjinfo(const H5std_string& name, H5G_stat_t& statbuf) const;
-
// Retrieves the name of an object in this group, given the
// object's index.
ssize_t getObjnameByIdx(hsize_t idx, H5std_string& name, size_t size) const;
@@ -87,6 +80,13 @@ class H5_DLLCPP CommonFG {
H5G_obj_t getObjTypeByIdx(hsize_t idx, H5std_string& type_name) const;
#ifndef H5_NO_DEPRECATED_SYMBOLS
+ // Returns information about an HDF5 object, given by its name,
+ // at this location.
+ void getObjinfo(const char* name, hbool_t follow_link, H5G_stat_t& statbuf) const;
+ void getObjinfo(const H5std_string& name, hbool_t follow_link, H5G_stat_t& statbuf) const;
+ void getObjinfo(const char* name, H5G_stat_t& statbuf) const;
+ void getObjinfo(const H5std_string& name, H5G_stat_t& statbuf) const;
+
// Iterates over the elements of this group - not implemented in
// C++ style yet.
int iterateElems(const char* name, int *idx, H5G_iterate_t op, void *op_data);
diff --git a/c++/test/tattr.cpp b/c++/test/tattr.cpp
index ca0516a..0d545d7 100644
--- a/c++/test/tattr.cpp
+++ b/c++/test/tattr.cpp
@@ -1026,7 +1026,9 @@ static void test_attr_dtype_shared()
{
int data=8; /* Data to write */
int rdata=0; /* Read read in */
+#ifndef H5_NO_DEPRECATED_SYMBOLS
H5G_stat_t statbuf; /* Object's information */
+#endif /* H5_NO_DEPRECATED_SYMBOLS */
h5_stat_size_t filesize; /* Size of file after modifications */
// Output message about test being performed
@@ -1054,9 +1056,11 @@ static void test_attr_dtype_shared()
// Commit datatype to file
dtype.commit(fid1, TYPE1_NAME);
+#ifndef H5_NO_DEPRECATED_SYMBOLS
// Check reference count on named datatype
fid1.getObjinfo(TYPE1_NAME, statbuf);
verify_val((int)statbuf.nlink, 1, "DataType::getObjinfo", __LINE__, __FILE__);
+#endif /* H5_NO_DEPRECATED_SYMBOLS */
// Create dataspace for dataset
DataSpace dspace;
@@ -1070,16 +1074,20 @@ static void test_attr_dtype_shared()
// Create dataset
DataSet dset = fid1.createDataSet(DSET1_NAME, dtype, dspace);
+#ifndef H5_NO_DEPRECATED_SYMBOLS
// Check reference count on named datatype
fid1.getObjinfo(TYPE1_NAME, statbuf);
verify_val((int)statbuf.nlink, 2, "H5File::getObjinfo", __LINE__, __FILE__);
+#endif /* H5_NO_DEPRECATED_SYMBOLS */
// Create attribute on dataset
Attribute attr = dset.createAttribute(ATTR1_NAME,dtype,dspace);
+#ifndef H5_NO_DEPRECATED_SYMBOLS
// Check reference count on named datatype
fid1.getObjinfo(TYPE1_NAME, statbuf);
verify_val((int)statbuf.nlink, 3, "DataSet::getObjinfo", __LINE__, __FILE__);
+#endif /* H5_NO_DEPRECATED_SYMBOLS */
// Close attribute
attr.close();
@@ -1087,16 +1095,20 @@ static void test_attr_dtype_shared()
// Delete attribute
dset.removeAttr(ATTR1_NAME);
+#ifndef H5_NO_DEPRECATED_SYMBOLS
// Check reference count on named datatype
fid1.getObjinfo(TYPE1_NAME, statbuf);
verify_val((int)statbuf.nlink, 2, "DataSet::getObjinfo after DataSet::removeAttr", __LINE__, __FILE__);
+#endif /* H5_NO_DEPRECATED_SYMBOLS */
// Create attribute on dataset
attr = dset.createAttribute(ATTR1_NAME,dtype,dspace);
+#ifndef H5_NO_DEPRECATED_SYMBOLS
// Check reference count on named datatype
fid1.getObjinfo(TYPE1_NAME, statbuf);
verify_val((int)statbuf.nlink, 3, "DataSet::createAttribute", __LINE__, __FILE__);
+#endif /* H5_NO_DEPRECATED_SYMBOLS */
// Write data into the attribute
attr.write(PredType::NATIVE_INT,&data);
@@ -1125,18 +1137,22 @@ static void test_attr_dtype_shared()
delete attr2;
delete dset2;
+#ifndef H5_NO_DEPRECATED_SYMBOLS
// Check reference count on named datatype
fid1.getObjinfo(TYPE1_NAME, statbuf);
verify_val((int)statbuf.nlink, 3, "DataSet::openAttribute", __LINE__, __FILE__);
+#endif /* H5_NO_DEPRECATED_SYMBOLS */
// Unlink the dataset
fid1.unlink(DSET1_NAME);
} // end of enclosing to test reference counts
+#ifndef H5_NO_DEPRECATED_SYMBOLS
// Check reference count on named datatype
fid1.getObjinfo(TYPE1_NAME, statbuf);
verify_val((int)statbuf.nlink, 1, "H5File::unlink", __LINE__, __FILE__);
+#endif /* H5_NO_DEPRECATED_SYMBOLS */
// Unlink the named datatype
fid1.unlink(TYPE1_NAME);
diff --git a/hl/src/H5DS.c b/hl/src/H5DS.c
index 91a4c40..8c10623 100644
--- a/hl/src/H5DS.c
+++ b/hl/src/H5DS.c
@@ -138,7 +138,7 @@ herr_t H5DSattach_scale(hid_t did,
hobj_ref_t ref_j; /* iterator reference */
hvl_t *buf; /* VL buffer to store in the attribute */
hid_t dsid_j; /* DS dataset ID in DIMENSION_LIST */
- H5G_stat_t sb1, sb2;
+ H5O_info_t oi1, oi2;
H5I_type_t it1, it2;
int i, len;
int found_ds=0;
@@ -152,15 +152,15 @@ herr_t H5DSattach_scale(hid_t did,
return FAIL;
/* get info for the dataset in the parameter list */
- if (H5Gget_objinfo(did,".",TRUE,&sb1)<0)
+ if(H5Oget_info(did, ".", &oi1, H5P_DEFAULT) < 0)
return FAIL;
/* get info for the scale in the parameter list */
- if (H5Gget_objinfo(dsid,".",TRUE,&sb2)<0)
+ if(H5Oget_info(dsid, ".", &oi2, H5P_DEFAULT) < 0)
return FAIL;
/* same object, not valid */
- if (!memcmp(&sb1.fileno, &sb2.fileno, sizeof(sb1.fileno)) && !memcmp(&sb1.objno, &sb2.objno, sizeof(sb1.objno)))
+ if(oi1.fileno == oi2.fileno && oi1.addr == oi2.addr)
return FAIL;
/* get ID type */
@@ -329,18 +329,16 @@ herr_t H5DSattach_scale(hid_t did,
goto out;
/* get info for DS in the parameter list */
- if (H5Gget_objinfo(dsid,".",TRUE,&sb1)<0)
+ if(H5Oget_info(dsid, ".", &oi1, H5P_DEFAULT) < 0)
goto out;
/* get info for this DS */
- if (H5Gget_objinfo(dsid_j,".",TRUE,&sb2)<0)
+ if(H5Oget_info(dsid_j, ".", &oi2, H5P_DEFAULT) < 0)
goto out;
/* same object, so this DS scale is already in this DIM IDX */
- if (!memcmp(&sb1.fileno, &sb2.fileno, sizeof(sb1.fileno)) && !memcmp(&sb1.objno, &sb2.objno, sizeof(sb1.objno)))
- {
+ if(oi1.fileno == oi2.fileno && oi1.addr == oi2.addr)
found_ds = 1;
- }
/* close the dereferenced dataset */
if (H5Dclose(dsid_j)<0)
@@ -596,14 +594,14 @@ herr_t H5DSdetach_scale(hid_t did,
hid_t tid = -1; /* attribute type ID */
hid_t aid = -1; /* attribute ID */
int rank; /* rank of dataset */
- ds_list_t *dsbuf=NULL; /* array of attribute data in the DS pointing to the dataset */
- ds_list_t *dsbufn=NULL; /* array of attribute data in the DS pointing to the dataset */
- hsize_t *dims=NULL; /* dimension of the "REFERENCE_LIST" array */
+ ds_list_t *dsbuf = NULL; /* array of attribute data in the DS pointing to the dataset */
+ ds_list_t *dsbufn = NULL; /* array of attribute data in the DS pointing to the dataset */
+ hsize_t *dims = NULL; /* dimension of the "REFERENCE_LIST" array */
hobj_ref_t ref; /* reference to the DS */
- hvl_t *buf=NULL; /* VL buffer to store in the attribute */
+ hvl_t *buf = NULL; /* VL buffer to store in the attribute */
unsigned i, j, jj;
- H5G_stat_t sb1, sb2, sb3, sb4;
- int found_dset=0, found_ds=0;
+ H5O_info_t oi1, oi2, oi3, oi4;
+ int found_dset = 0, found_ds = 0;
H5I_type_t it1, it2;
/*-------------------------------------------------------------------------
@@ -615,15 +613,15 @@ herr_t H5DSdetach_scale(hid_t did,
return FAIL;
/* get info for the dataset in the parameter list */
- if (H5Gget_objinfo(did,".",TRUE,&sb1)<0)
+ if(H5Oget_info(did, ".", &oi1, H5P_DEFAULT) < 0)
return FAIL;
/* get info for the scale in the parameter list */
- if (H5Gget_objinfo(dsid,".",TRUE,&sb2)<0)
+ if(H5Oget_info(dsid, ".", &oi2, H5P_DEFAULT) < 0)
return FAIL;
/* same object, not valid */
- if (!memcmp(&sb1.fileno, &sb2.fileno, sizeof(sb1.fileno)) && !memcmp(&sb1.objno, &sb2.objno, sizeof(sb1.objno)))
+ if(oi1.fileno == oi2.fileno && oi1.addr == oi2.addr)
return FAIL;
/* get ID type */
@@ -709,20 +707,17 @@ herr_t H5DSdetach_scale(hid_t did,
goto out;
/* get info for DS in the parameter list */
- if (H5Gget_objinfo(dsid,".",TRUE,&sb1)<0)
+ if(H5Oget_info(dsid, ".", &oi1, H5P_DEFAULT) < 0)
goto out;
/* get info for this DS */
- if (H5Gget_objinfo(dsid_j,".",TRUE,&sb2)<0)
+ if(H5Oget_info(dsid_j, ".", &oi2, H5P_DEFAULT) < 0)
goto out;
/* same object, reset */
- if (!memcmp(&sb1.fileno, &sb2.fileno, sizeof(sb1.fileno)) && !memcmp(&sb1.objno, &sb2.objno, sizeof(sb1.objno)))
- {
+ if(oi1.fileno == oi2.fileno && oi1.addr == oi2.addr) {
for(jj=j; jj<buf[idx].len-1; jj++)
- {
((hobj_ref_t *)buf[idx].p)[jj] = ((hobj_ref_t *)buf[idx].p)[jj+1];
- }
buf[idx].len--;
found_ds = 1;
@@ -794,21 +789,17 @@ herr_t H5DSdetach_scale(hid_t did,
goto out;
/* get info for dataset in the parameter list */
- if (H5Gget_objinfo(did,".",TRUE,&sb3)<0)
+ if(H5Oget_info(did, ".", &oi3, H5P_DEFAULT) < 0)
goto out;
/* get info for this dataset */
- if (H5Gget_objinfo(did_i,".",TRUE,&sb4)<0)
+ if(H5Oget_info(did_i, ".", &oi4, H5P_DEFAULT) < 0)
goto out;
/* same object, reset. we want to detach only for this DIM */
- if (!memcmp(&sb3.fileno, &sb4.fileno, sizeof(sb3.fileno)) && !memcmp(&sb3.objno, &sb4.objno, sizeof(sb3.objno))
- && (int)idx==dsbuf[i].dim_idx)
- {
+ if(oi3.fileno == oi4.fileno && oi3.addr == oi4.addr && (int)idx == dsbuf[i].dim_idx) {
for(jj=i; jj<nelmts-1; jj++)
- {
dsbuf[jj] = dsbuf[jj+1];
- }
nelmts--;
found_dset=1;
@@ -966,7 +957,7 @@ htri_t H5DSis_attached(hid_t did,
hvl_t *buf; /* VL buffer to store in the attribute */
hid_t dsid_j; /* DS dataset ID in DIMENSION_LIST */
hid_t did_i; /* dataset ID in REFERENCE_LIST */
- H5G_stat_t sb1, sb2, sb3, sb4;
+ H5O_info_t oi1, oi2, oi3, oi4;
H5I_type_t it1, it2;
int i;
int found_dset=0, found_ds=0;
@@ -980,15 +971,15 @@ htri_t H5DSis_attached(hid_t did,
return FAIL;
/* get info for the dataset in the parameter list */
- if (H5Gget_objinfo(did,".",TRUE,&sb1)<0)
+ if(H5Oget_info(did, ".", &oi1, H5P_DEFAULT) < 0)
return FAIL;
/* get info for the scale in the parameter list */
- if (H5Gget_objinfo(dsid,".",TRUE,&sb2)<0)
+ if(H5Oget_info(dsid, ".", &oi2, H5P_DEFAULT) < 0)
return FAIL;
/* same object, not valid */
- if (!memcmp(&sb1.fileno, &sb2.fileno, sizeof(sb1.fileno)) && !memcmp(&sb1.objno, &sb2.objno, sizeof(sb1.objno)))
+ if(oi1.fileno == oi2.fileno && oi1.addr == oi2.addr)
return FAIL;
/* get ID type */
@@ -1062,18 +1053,16 @@ htri_t H5DSis_attached(hid_t did,
goto out;
/* get info for DS in the parameter list */
- if (H5Gget_objinfo(dsid,".",TRUE,&sb1)<0)
+ if(H5Oget_info(dsid, ".", &oi1, H5P_DEFAULT) < 0)
goto out;
/* get info for this DS */
- if (H5Gget_objinfo(dsid_j,".",TRUE,&sb2)<0)
+ if(H5Oget_info(dsid_j, ".", &oi2, H5P_DEFAULT) < 0)
goto out;
/* same object */
- if (!memcmp(&sb1.fileno, &sb2.fileno, sizeof(sb1.fileno)) && !memcmp(&sb1.objno, &sb2.objno, sizeof(sb1.objno)))
- {
+ if(oi1.fileno == oi2.fileno && oi1.addr == oi2.addr)
found_ds = 1;
- }
/* close the dereferenced dataset */
if (H5Dclose(dsid_j)<0)
@@ -1150,18 +1139,16 @@ htri_t H5DSis_attached(hid_t did,
goto out;
/* get info for dataset in the parameter list */
- if (H5Gget_objinfo(did,".",TRUE,&sb3)<0)
+ if(H5Oget_info(did, ".", &oi3, H5P_DEFAULT) < 0)
goto out;
/* get info for this dataset */
- if (H5Gget_objinfo(did_i,".",TRUE,&sb4)<0)
+ if(H5Oget_info(did_i, ".", &oi4, H5P_DEFAULT) < 0)
goto out;
/* same object */
- if (!memcmp(&sb3.fileno, &sb4.fileno, sizeof(sb3.fileno)) && !memcmp(&sb3.objno, &sb4.objno, sizeof(sb3.objno))
- && (int)idx==dsbuf[i].dim_idx) {
+ if(oi3.fileno == oi4.fileno && oi3.addr == oi4.addr && (int)idx==dsbuf[i].dim_idx)
found_dset=1;
- } /* if */
/* close the dereferenced dataset */
if (H5Dclose(did_i)<0)
diff --git a/hl/src/H5LT.c b/hl/src/H5LT.c
index 10977a7..d7f720a 100644
--- a/hl/src/H5LT.c
+++ b/hl/src/H5LT.c
@@ -38,13 +38,11 @@ int indent = 0;
*
*-------------------------------------------------------------------------
*/
-
-herr_t H5LT_open_id( hid_t loc_id,
- const char *obj_name,
- int obj_type );
-
-herr_t H5LT_close_id( hid_t obj_id,
- int obj_type );
+static herr_t H5LT_get_attribute_mem(hid_t loc_id,
+ const char *obj_name,
+ const char *attr_name,
+ hid_t mem_type_id,
+ void *data);
/*-------------------------------------------------------------------------
*
@@ -1121,16 +1119,10 @@ herr_t H5LTset_attribute_string( hid_t loc_id,
hid_t attr_id;
hid_t obj_id;
int has_attr;
- H5G_stat_t statbuf;
size_t attr_size;
-
- /* Get the type of object */
- if (H5Gget_objinfo( loc_id, obj_name, 1, &statbuf )<0)
- return -1;
-
/* Open the object */
- if ((obj_id = H5LT_open_id( loc_id, obj_name, statbuf.type )) < 0)
+ if ((obj_id = H5Oopen(loc_id, obj_name, H5P_DEFAULT)) < 0)
return -1;
/* Create the attribute */
@@ -1176,14 +1168,14 @@ herr_t H5LTset_attribute_string( hid_t loc_id,
goto out;
/* Close the object */
- if ( H5LT_close_id( obj_id, statbuf.type ) < 0 )
+ if(H5Oclose(obj_id) < 0)
return -1;
return 0;
out:
- H5LT_close_id( obj_id, statbuf.type );
+ H5Oclose(obj_id);
return -1;
}
@@ -1219,14 +1211,9 @@ herr_t H5LT_set_attribute_numerical( hid_t loc_id,
hid_t obj_id, sid, attr_id;
hsize_t dim_size=size;
int has_attr;
- H5G_stat_t statbuf;
-
- /* Get the type of object */
- if (H5Gget_objinfo(loc_id, obj_name, 1, &statbuf)<0)
- return -1;
/* Open the object */
- if ((obj_id = H5LT_open_id( loc_id, obj_name, statbuf.type )) < 0)
+ if ((obj_id = H5Oopen(loc_id, obj_name, H5P_DEFAULT)) < 0)
return -1;
/* Create the data space for the attribute. */
@@ -1260,99 +1247,16 @@ herr_t H5LT_set_attribute_numerical( hid_t loc_id,
goto out;
/* Close the object */
- if ( H5LT_close_id( obj_id, statbuf.type ) < 0 )
+ if(H5Oclose(obj_id) < 0 )
return -1;
return 0;
out:
- H5LT_close_id( obj_id, statbuf.type );
+ H5Oclose(obj_id);
return -1;
}
-/*-------------------------------------------------------------------------
- * Function: H5LT_open_id
- *
- * Purpose: Private function used by H5LT_set_attribute_*
- *
- * Return: Success: 0, Failure: -1
- *
- * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
- *
- * Date: September 19, 2002
- *
- * Comments:
- *
- *-------------------------------------------------------------------------
- */
-
-herr_t H5LT_open_id( hid_t loc_id,
- const char *obj_name,
- int obj_type /*basic object type*/ )
-{
- hid_t obj_id = -1;
-
- switch(obj_type) {
- case H5G_DATASET:
- /* Open the dataset. */
- if((obj_id = H5Dopen(loc_id, obj_name)) < 0)
- return -1;
- break;
-
- case H5G_GROUP:
- /* Open the group. */
- if((obj_id = H5Gopen2(loc_id, obj_name, H5P_DEFAULT)) < 0)
- return -1;
- break;
-
- default:
- return -1;
- }
-
- return obj_id;
-}
-
-
-/*-------------------------------------------------------------------------
- * Function: H5LT_close_id
- *
- * Purpose: Private function used by H5LT_set_attribute_*
- *
- * Return: Success: 0, Failure: -1
- *
- * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
- *
- * Date: September 19, 2002
- *
- * Comments:
- *
- *-------------------------------------------------------------------------
- */
-
-herr_t H5LT_close_id( hid_t obj_id,
- int obj_type /*basic object type*/ )
-{
- switch ( obj_type )
- {
- case H5G_DATASET:
- /* Close the dataset. */
- if ( H5Dclose( obj_id ) < 0 )
- return -1;
- break;
-
- case H5G_GROUP:
- /* Close the group. */
- if ( H5Gclose( obj_id ) < 0 )
- return -1;
- break;
-
- default:
- return -1;
- }
-
- return 0;
-}
-
/*-------------------------------------------------------------------------
* Function: H5LTset_attribute_char
@@ -1825,21 +1729,16 @@ herr_t H5LTget_attribute_ndims( hid_t loc_id,
{
hid_t attr_id;
hid_t sid;
- H5G_stat_t statbuf;
hid_t obj_id;
- /* Get the type of object */
- if (H5Gget_objinfo( loc_id, obj_name, 1, &statbuf )<0)
- return -1;
-
/* Open the object */
- if ((obj_id = H5LT_open_id( loc_id, obj_name, statbuf.type )) < 0)
+ if ((obj_id = H5Oopen(loc_id, obj_name, H5P_DEFAULT)) < 0)
return -1;
/* Open the attribute. */
if ( ( attr_id = H5Aopen_name( obj_id, attr_name ) ) < 0 )
{
- H5LT_close_id( obj_id, statbuf.type );
+ H5Oclose(obj_id);
return -1;
}
@@ -1860,14 +1759,14 @@ herr_t H5LTget_attribute_ndims( hid_t loc_id,
goto out;;
/* Close the object */
- if ( H5LT_close_id( obj_id, statbuf.type ) < 0 )
+ if(H5Oclose(obj_id) < 0 )
return -1;
return 0;
out:
H5Aclose( attr_id );
- H5LT_close_id( obj_id, statbuf.type );
+ H5Oclose(obj_id);
return -1;
}
@@ -1897,21 +1796,16 @@ herr_t H5LTget_attribute_info( hid_t loc_id,
hid_t attr_id;
hid_t tid;
hid_t sid;
- H5G_stat_t statbuf;
hid_t obj_id;
- /* Get the type of object */
- if (H5Gget_objinfo( loc_id, obj_name, 1, &statbuf )<0)
- return -1;
-
/* Open the object */
- if ((obj_id = H5LT_open_id( loc_id, obj_name, statbuf.type )) < 0)
+ if ((obj_id = H5Oopen(loc_id, obj_name, H5P_DEFAULT)) < 0)
return -1;
/* Open the attribute. */
if ( ( attr_id = H5Aopen_name( obj_id, attr_name ) ) < 0 )
{
- H5LT_close_id( obj_id, statbuf.type );
+ H5Oclose(obj_id);
return -1;
}
@@ -1945,15 +1839,15 @@ herr_t H5LTget_attribute_info( hid_t loc_id,
goto out;
/* Close the object */
- if ( H5LT_close_id( obj_id, statbuf.type ) < 0 )
+ if(H5Oclose(obj_id) < 0 )
return -1;
return 0;
out:
- H5Tclose( tid );
- H5Aclose( attr_id );
- H5LT_close_id( obj_id, statbuf.type );
+ H5Tclose(tid);
+ H5Aclose(attr_id);
+ H5Oclose(obj_id);
return -1;
}
@@ -2695,17 +2589,11 @@ herr_t H5LTget_attribute_string( hid_t loc_id,
const char *attr_name,
char *data )
{
-
/* identifiers */
hid_t obj_id;
- H5G_stat_t statbuf;
-
- /* Get the type of object */
- if (H5Gget_objinfo(loc_id, obj_name, 1, &statbuf)<0)
- return -1;
/* Open the object */
- if ((obj_id = H5LT_open_id( loc_id, obj_name, statbuf.type )) < 0)
+ if ((obj_id = H5Oopen( loc_id, obj_name, H5P_DEFAULT)) < 0)
return -1;
/* Get the attribute */
@@ -2713,7 +2601,7 @@ herr_t H5LTget_attribute_string( hid_t loc_id,
return -1;
/* Close the object */
- if ( H5LT_close_id( obj_id, statbuf.type ) < 0 )
+ if(H5Oclose(obj_id) < 0)
return -1;
return 0;
@@ -2742,29 +2630,11 @@ herr_t H5LTget_attribute_char( hid_t loc_id,
const char *attr_name,
char *data )
{
+ /* Get the attribute */
+ if(H5LT_get_attribute_mem(loc_id, obj_name, attr_name, H5T_NATIVE_CHAR, data) < 0)
+ return -1;
- /* identifiers */
- hid_t obj_id;
- H5G_stat_t statbuf;
-
- /* Get the type of object */
- if (H5Gget_objinfo(loc_id, obj_name, 1, &statbuf)<0)
- return -1;
-
- /* Open the object */
- if ((obj_id = H5LT_open_id( loc_id, obj_name, statbuf.type )) < 0)
- return -1;
-
- /* Get the attribute */
- if ( H5LT_get_attribute_mem( obj_id, attr_name, H5T_NATIVE_CHAR, data ) < 0 )
- return -1;
-
- /* Close the object */
- if ( H5LT_close_id( obj_id, statbuf.type ) < 0 )
- return -1;
-
- return 0;
-
+ return 0;
}
/*-------------------------------------------------------------------------
@@ -2789,29 +2659,11 @@ herr_t H5LTget_attribute_uchar( hid_t loc_id,
const char *attr_name,
unsigned char *data )
{
+ /* Get the attribute */
+ if(H5LT_get_attribute_mem(loc_id, obj_name, attr_name, H5T_NATIVE_UCHAR, data) < 0)
+ return -1;
- /* identifiers */
- hid_t obj_id;
- H5G_stat_t statbuf;
-
- /* Get the type of object */
- if (H5Gget_objinfo(loc_id, obj_name, 1, &statbuf)<0)
- return -1;
-
- /* Open the object */
- if ((obj_id = H5LT_open_id( loc_id, obj_name, statbuf.type )) < 0)
- return -1;
-
- /* Get the attribute */
- if ( H5LT_get_attribute_mem( obj_id, attr_name, H5T_NATIVE_UCHAR, data ) < 0 )
- return -1;
-
- /* Close the object */
- if ( H5LT_close_id( obj_id, statbuf.type ) < 0 )
- return -1;
-
- return 0;
-
+ return 0;
}
@@ -2838,29 +2690,11 @@ herr_t H5LTget_attribute_short( hid_t loc_id,
const char *attr_name,
short *data )
{
+ /* Get the attribute */
+ if(H5LT_get_attribute_mem(loc_id, obj_name, attr_name, H5T_NATIVE_SHORT, data) < 0)
+ return -1;
- /* identifiers */
- hid_t obj_id;
- H5G_stat_t statbuf;
-
- /* Get the type of object */
- if (H5Gget_objinfo(loc_id, obj_name, 1, &statbuf)<0)
- return -1;
-
- /* Open the object */
- if ((obj_id = H5LT_open_id( loc_id, obj_name, statbuf.type )) < 0)
- return -1;
-
- /* Get the attribute */
- if ( H5LT_get_attribute_mem( obj_id, attr_name, H5T_NATIVE_SHORT, data ) < 0 )
- return -1;
-
- /* Close the object */
- if ( H5LT_close_id( obj_id, statbuf.type ) < 0 )
- return -1;
-
- return 0;
-
+ return 0;
}
/*-------------------------------------------------------------------------
@@ -2885,29 +2719,11 @@ herr_t H5LTget_attribute_ushort( hid_t loc_id,
const char *attr_name,
unsigned short *data )
{
+ /* Get the attribute */
+ if(H5LT_get_attribute_mem(loc_id, obj_name, attr_name, H5T_NATIVE_USHORT, data) < 0)
+ return -1;
- /* identifiers */
- hid_t obj_id;
- H5G_stat_t statbuf;
-
- /* Get the type of object */
- if (H5Gget_objinfo(loc_id, obj_name, 1, &statbuf)<0)
- return -1;
-
- /* Open the object */
- if ((obj_id = H5LT_open_id( loc_id, obj_name, statbuf.type )) < 0)
- return -1;
-
- /* Get the attribute */
- if ( H5LT_get_attribute_mem( obj_id, attr_name, H5T_NATIVE_USHORT, data ) < 0 )
- return -1;
-
- /* Close the object */
- if ( H5LT_close_id( obj_id, statbuf.type ) < 0 )
- return -1;
-
- return 0;
-
+ return 0;
}
@@ -2934,29 +2750,11 @@ herr_t H5LTget_attribute_int( hid_t loc_id,
const char *attr_name,
int *data )
{
+ /* Get the attribute */
+ if(H5LT_get_attribute_mem(loc_id, obj_name, attr_name, H5T_NATIVE_INT, data) < 0)
+ return -1;
- /* identifiers */
- hid_t obj_id;
- H5G_stat_t statbuf;
-
- /* Get the type of object */
- if (H5Gget_objinfo(loc_id, obj_name, 1, &statbuf)<0)
- return -1;
-
- /* Open the object */
- if ((obj_id = H5LT_open_id( loc_id, obj_name, statbuf.type )) < 0)
- return -1;
-
- /* Get the attribute */
- if ( H5LT_get_attribute_mem( obj_id, attr_name, H5T_NATIVE_INT, data ) < 0 )
- return -1;
-
- /* Close the object */
- if ( H5LT_close_id( obj_id, statbuf.type ) < 0 )
- return -1;
-
- return 0;
-
+ return 0;
}
/*-------------------------------------------------------------------------
@@ -2981,29 +2779,11 @@ herr_t H5LTget_attribute_uint( hid_t loc_id,
const char *attr_name,
unsigned int *data )
{
+ /* Get the attribute */
+ if(H5LT_get_attribute_mem(loc_id, obj_name, attr_name, H5T_NATIVE_UINT, data) < 0)
+ return -1;
- /* identifiers */
- hid_t obj_id;
- H5G_stat_t statbuf;
-
- /* Get the type of object */
- if (H5Gget_objinfo(loc_id, obj_name, 1, &statbuf)<0)
- return -1;
-
- /* Open the object */
- if ((obj_id = H5LT_open_id( loc_id, obj_name, statbuf.type )) < 0)
- return -1;
-
- /* Get the attribute */
- if ( H5LT_get_attribute_mem( obj_id, attr_name, H5T_NATIVE_UINT, data ) < 0 )
- return -1;
-
- /* Close the object */
- if ( H5LT_close_id( obj_id, statbuf.type ) < 0 )
- return -1;
-
- return 0;
-
+ return 0;
}
@@ -3030,30 +2810,13 @@ herr_t H5LTget_attribute_long( hid_t loc_id,
const char *attr_name,
long *data )
{
+ /* Get the attribute */
+ if(H5LT_get_attribute_mem(loc_id, obj_name, attr_name, H5T_NATIVE_LONG, data) < 0)
+ return -1;
- /* identifiers */
- hid_t obj_id;
- H5G_stat_t statbuf;
-
- /* Get the type of object */
- if (H5Gget_objinfo(loc_id, obj_name, 1, &statbuf)<0)
- return -1;
-
- /* Open the object */
- if ((obj_id = H5LT_open_id( loc_id, obj_name, statbuf.type )) < 0)
- return -1;
-
- /* Get the attribute */
- if ( H5LT_get_attribute_mem( obj_id, attr_name, H5T_NATIVE_LONG, data ) < 0 )
- return -1;
-
- /* Close the object */
- if ( H5LT_close_id( obj_id, statbuf.type ) < 0 )
- return -1;
-
- return 0;
-
+ return 0;
}
+
/*-------------------------------------------------------------------------
* Function: H5LTget_attribute_long_long
*
@@ -3076,29 +2839,11 @@ herr_t H5LTget_attribute_long_long( hid_t loc_id,
const char *attr_name,
long_long *data )
{
+ /* Get the attribute */
+ if(H5LT_get_attribute_mem(loc_id, obj_name, attr_name, H5T_NATIVE_LLONG, data) < 0)
+ return -1;
- /* identifiers */
- hid_t obj_id;
- H5G_stat_t statbuf;
-
- /* Get the type of object */
- if (H5Gget_objinfo(loc_id, obj_name, 1, &statbuf)<0)
- return -1;
-
- /* Open the object */
- if ((obj_id = H5LT_open_id( loc_id, obj_name, statbuf.type )) < 0)
- return -1;
-
- /* Get the attribute */
- if ( H5LT_get_attribute_mem( obj_id, attr_name, H5T_NATIVE_LLONG, data ) < 0 )
- return -1;
-
- /* Close the object */
- if ( H5LT_close_id( obj_id, statbuf.type ) < 0 )
- return -1;
-
- return 0;
-
+ return 0;
}
@@ -3124,29 +2869,11 @@ herr_t H5LTget_attribute_ulong( hid_t loc_id,
const char *attr_name,
unsigned long *data )
{
+ /* Get the attribute */
+ if(H5LT_get_attribute_mem(loc_id, obj_name, attr_name, H5T_NATIVE_ULONG, data) < 0)
+ return -1;
- /* identifiers */
- hid_t obj_id;
- H5G_stat_t statbuf;
-
- /* Get the type of object */
- if (H5Gget_objinfo(loc_id, obj_name, 1, &statbuf)<0)
- return -1;
-
- /* Open the object */
- if ((obj_id = H5LT_open_id( loc_id, obj_name, statbuf.type )) < 0)
- return -1;
-
- /* Get the attribute */
- if ( H5LT_get_attribute_mem( obj_id, attr_name, H5T_NATIVE_ULONG, data ) < 0 )
- return -1;
-
- /* Close the object */
- if ( H5LT_close_id( obj_id, statbuf.type ) < 0 )
- return -1;
-
- return 0;
-
+ return 0;
}
@@ -3174,29 +2901,11 @@ herr_t H5LTget_attribute_float( hid_t loc_id,
const char *attr_name,
float *data )
{
+ /* Get the attribute */
+ if(H5LT_get_attribute_mem(loc_id, obj_name, attr_name, H5T_NATIVE_FLOAT, data) < 0)
+ return -1;
- /* identifiers */
- hid_t obj_id;
- H5G_stat_t statbuf;
-
- /* Get the type of object */
- if (H5Gget_objinfo(loc_id, obj_name, 1, &statbuf)<0)
- return -1;
-
- /* Open the object */
- if ((obj_id = H5LT_open_id( loc_id, obj_name, statbuf.type )) < 0)
- return -1;
-
- /* Get the attribute */
- if ( H5LT_get_attribute_mem( obj_id, attr_name, H5T_NATIVE_FLOAT, data ) < 0 )
- return -1;
-
- /* Close the object */
- if ( H5LT_close_id( obj_id, statbuf.type ) < 0 )
- return -1;
-
- return 0;
-
+ return 0;
}
@@ -3224,29 +2933,11 @@ herr_t H5LTget_attribute_double( hid_t loc_id,
const char *attr_name,
double *data )
{
+ /* Get the attribute */
+ if(H5LT_get_attribute_mem(loc_id, obj_name, attr_name, H5T_NATIVE_DOUBLE, data) < 0)
+ return -1;
- /* identifiers */
- hid_t obj_id;
- H5G_stat_t statbuf;
-
- /* Get the type of object */
- if (H5Gget_objinfo(loc_id, obj_name, 1, &statbuf)<0)
- return -1;
-
- /* Open the object */
- if ((obj_id = H5LT_open_id( loc_id, obj_name, statbuf.type )) < 0)
- return -1;
-
- /* Get the attribute */
- if ( H5LT_get_attribute_mem( obj_id, attr_name, H5T_NATIVE_DOUBLE, data ) < 0 )
- return -1;
-
- /* Close the object */
- if ( H5LT_close_id( obj_id, statbuf.type ) < 0 )
- return -1;
-
- return 0;
-
+ return 0;
}
@@ -3275,31 +2966,11 @@ herr_t H5LTget_attribute( hid_t loc_id,
hid_t mem_type_id,
void *data )
{
+ /* Get the attribute */
+ if(H5LT_get_attribute_mem(loc_id, obj_name, attr_name, mem_type_id, data) < 0)
+ return -1;
- /* identifiers */
- hid_t obj_id;
- H5G_stat_t statbuf;
-
- /* Get the type of object */
- if (H5Gget_objinfo(loc_id, obj_name, 1, &statbuf)<0)
- return -1;
-
- /* Open the object */
- if ((obj_id = H5LT_open_id( loc_id, obj_name, statbuf.type )) < 0)
- return -1;
-
- /* Get the attribute */
- if ( H5LT_get_attribute_mem( obj_id, attr_name, mem_type_id, data ) < 0 )
- {
- H5LT_close_id( obj_id, statbuf.type );
- return -1;
- }
-
- /* Close the object */
- if ( H5LT_close_id( obj_id, statbuf.type ) < 0 )
- return -1;
-
- return 0;
+ return 0;
}
@@ -3328,29 +2999,41 @@ herr_t H5LTget_attribute( hid_t loc_id,
*/
-herr_t H5LT_get_attribute_mem( hid_t obj_id,
+static herr_t H5LT_get_attribute_mem(hid_t loc_id,
+ const char *obj_name,
const char *attr_name,
hid_t mem_type_id,
- void *data )
+ void *data)
{
+ /* identifiers */
+ hid_t obj_id = -1;
+ hid_t attr_id = -1;
- /* identifiers */
- hid_t attr_id;
+ /* Open the object */
+ if((obj_id = H5Oopen(loc_id, obj_name, H5P_DEFAULT)) < 0)
+ goto out;
- if ( ( attr_id = H5Aopen_name( obj_id, attr_name ) ) < 0 )
- return -1;
+ if((attr_id = H5Aopen_name(obj_id, attr_name)) < 0)
+ goto out;
- if ( H5Aread( attr_id, mem_type_id, data ) < 0 )
- goto out;
+ if(H5Aread(attr_id, mem_type_id, data) < 0)
+ goto out;
- if ( H5Aclose( attr_id ) < 0 )
- return -1;
+ if(H5Aclose(attr_id) < 0)
+ goto out;
+ attr_id = -1;
- return 0;
+ /* Close the object */
+ if(H5Oclose(obj_id) < 0)
+ goto out;
+ obj_id = -1;
+
+ return 0;
out:
- H5Aclose( attr_id );
- return -1;
+ if(attr_id > 0)
+ H5Aclose(attr_id);
+ return -1;
}
/*-------------------------------------------------------------------------
diff --git a/hl/src/H5LTprivate.h b/hl/src/H5LTprivate.h
index 51bcbce..c51ee7c 100644
--- a/hl/src/H5LTprivate.h
+++ b/hl/src/H5LTprivate.h
@@ -27,11 +27,6 @@
*-------------------------------------------------------------------------
*/
-H5_HLDLL herr_t H5LT_get_attribute_mem( hid_t obj_id,
- const char *attr_name,
- hid_t mem_type_id,
- void *data );
-
H5_HLDLL herr_t H5LT_get_attribute_disk( hid_t obj_id,
const char *attr_name,
void *data );
diff --git a/src/H5Epublic.h b/src/H5Epublic.h
index e690eaa..7b716ef 100644
--- a/src/H5Epublic.h
+++ b/src/H5Epublic.h
@@ -63,11 +63,9 @@ H5_DLLVAR hid_t H5E_ERR_CLS_g;
/*
* One often needs to temporarily disable automatic error reporting when
- * trying something that's likely or expected to fail. For instance, to
- * determine if an object exists one can call H5Gget_objinfo() which will fail if
- * the object doesn't exist. The code to try can be nested between calls to
- * H5Eget_auto() and H5Eset_auto(), but it's easier just to use this macro
- * like:
+ * trying something that's likely or expected to fail. The code to try can
+ * be nested between calls to H5Eget_auto() and H5Eset_auto(), but it's
+ * easier just to use this macro like:
* H5E_BEGIN_TRY {
* ...stuff here that's likely to fail...
* } H5E_END_TRY;
diff --git a/src/H5FD.c b/src/H5FD.c
index 9dc3626..c9dbaf0 100644
--- a/src/H5FD.c
+++ b/src/H5FD.c
@@ -87,7 +87,7 @@ H5FL_BLK_DEFINE_STATIC(meta_accum);
/*
* Global count of the number of H5FD_t's handed out. This is used as a
* "serial number" for files that are currently open and is used for the
- * 'fileno' field in H5G_stat_t. However, if a VFL driver is not able
+ * 'fileno' field in H5O_info_t. However, if a VFL driver is not able
* to detect whether two files are the same, a file that has been opened
* by H5Fopen more than once with that VFL driver will have two different
* serial numbers. :-/
diff --git a/src/H5Gdeprec.c b/src/H5Gdeprec.c
index bf90f1e..54e2cd3 100644
--- a/src/H5Gdeprec.c
+++ b/src/H5Gdeprec.c
@@ -57,6 +57,7 @@
/* Local Typedefs */
/******************/
+#ifndef H5_NO_DEPRECATED_SYMBOLS
/* User data for path traversal routine for getting object info */
typedef struct {
H5G_stat_t *statbuf; /* Stat buffer about object */
@@ -75,17 +76,16 @@ typedef struct {
/* Local Prototypes */
/********************/
-#ifndef H5_NO_DEPRECATED_SYMBOLS
static herr_t H5G_link_hard(hid_t cur_loc_id, const char *cur_name,
hid_t new_loc_id, const char *new_name);
static herr_t H5G_move(hid_t src_loc_id, const char *src_name,
hid_t dst_loc_id, const char *dst_name);
-#endif /* H5_NO_DEPRECATED_SYMBOLS */
static herr_t H5G_get_objinfo_cb(H5G_loc_t *grp_loc/*in*/, const char *name,
const H5O_link_t *lnk, H5G_loc_t *obj_loc, void *_udata/*in,out*/,
H5G_own_loc_t *own_loc/*out*/);
static herr_t H5G_get_objinfo(const H5G_loc_t *loc, const char *name,
hbool_t follow_link, H5G_stat_t *statbuf/*out*/, hid_t dxpl_id);
+#endif /* H5_NO_DEPRECATED_SYMBOLS */
/*********************/
@@ -837,50 +837,6 @@ done:
FUNC_LEAVE_API(ret_value)
} /* end H5Gget_num_objs() */
-#endif /* H5_NO_DEPRECATED_SYMBOLS */
-
-
-/*-------------------------------------------------------------------------
- * Function: H5Gget_objtype_by_idx
- *
- * Purpose: Returns the type of objects in the group by giving index.
- *
- * Note: Deprecated in favor of H5Lget_info/H5Oget_info
- *
- * Return: Success: H5G_GROUP(1), H5G_DATASET(2), H5G_TYPE(3)
- * Failure: H5G_UNKNOWN
- *
- * Programmer: Raymond Lu
- * Nov 20, 2002
- *
- *-------------------------------------------------------------------------
- */
-H5G_obj_t
-H5Gget_objtype_by_idx(hid_t loc_id, hsize_t idx)
-{
- H5G_loc_t loc; /* Object location */
- H5O_type_t obj_type; /* Type of object at location */
- H5G_obj_t ret_value;
-
- FUNC_ENTER_API(H5Gget_objtype_by_idx, H5G_UNKNOWN)
- H5TRACE2("Go", "ih", loc_id, idx);
-
- /* Check args */
- if(H5G_loc(loc_id, &loc) < 0)
- HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, H5G_UNKNOWN, "not a location ID")
- if(H5O_obj_type(loc.oloc, &obj_type, H5AC_ind_dxpl_id) < 0)
- HGOTO_ERROR(H5E_SYM, H5E_CANTGET, FAIL, "can't get object type")
- if(obj_type != H5O_TYPE_GROUP)
- HGOTO_ERROR(H5E_SYM, H5E_BADTYPE, FAIL, "not a group")
-
- /* Call internal function*/
- if((ret_value = H5G_obj_get_type_by_idx(loc.oloc, idx, H5AC_ind_dxpl_id)) == H5G_UNKNOWN)
- HGOTO_ERROR(H5E_SYM, H5E_BADTYPE, FAIL, "can't get object type")
-
-done:
- FUNC_LEAVE_API(ret_value)
-} /* end H5Gget_objtype_by_idx() */
-
/*-------------------------------------------------------------------------
* Function: H5Gget_objinfo
@@ -1072,3 +1028,47 @@ done:
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5G_get_objinfo() */
+#endif /* H5_NO_DEPRECATED_SYMBOLS */
+
+
+/*-------------------------------------------------------------------------
+ * Function: H5Gget_objtype_by_idx
+ *
+ * Purpose: Returns the type of objects in the group by giving index.
+ *
+ * Note: Deprecated in favor of H5Lget_info/H5Oget_info
+ *
+ * Return: Success: H5G_GROUP(1), H5G_DATASET(2), H5G_TYPE(3)
+ * Failure: H5G_UNKNOWN
+ *
+ * Programmer: Raymond Lu
+ * Nov 20, 2002
+ *
+ *-------------------------------------------------------------------------
+ */
+H5G_obj_t
+H5Gget_objtype_by_idx(hid_t loc_id, hsize_t idx)
+{
+ H5G_loc_t loc; /* Object location */
+ H5O_type_t obj_type; /* Type of object at location */
+ H5G_obj_t ret_value;
+
+ FUNC_ENTER_API(H5Gget_objtype_by_idx, H5G_UNKNOWN)
+ H5TRACE2("Go", "ih", loc_id, idx);
+
+ /* Check args */
+ if(H5G_loc(loc_id, &loc) < 0)
+ HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, H5G_UNKNOWN, "not a location ID")
+ if(H5O_obj_type(loc.oloc, &obj_type, H5AC_ind_dxpl_id) < 0)
+ HGOTO_ERROR(H5E_SYM, H5E_CANTGET, FAIL, "can't get object type")
+ if(obj_type != H5O_TYPE_GROUP)
+ HGOTO_ERROR(H5E_SYM, H5E_BADTYPE, FAIL, "not a group")
+
+ /* Call internal function*/
+ if((ret_value = H5G_obj_get_type_by_idx(loc.oloc, idx, H5AC_ind_dxpl_id)) == H5G_UNKNOWN)
+ HGOTO_ERROR(H5E_SYM, H5E_BADTYPE, FAIL, "can't get object type")
+
+done:
+ FUNC_LEAVE_API(ret_value)
+} /* end H5Gget_objtype_by_idx() */
+
diff --git a/src/H5Gpublic.h b/src/H5Gpublic.h
index 6f4bc00..510c920 100644
--- a/src/H5Gpublic.h
+++ b/src/H5Gpublic.h
@@ -39,14 +39,6 @@
/* Public Macros */
/*****************/
-/* Deprecated macros, for backward compatibility */
-
-/* Macros for types of objects in a group (see H5G_obj_t definition) */
-#define H5G_NTYPES 256 /* Max possible number of types */
-#define H5G_NLIBTYPES 8 /* Number of internal types */
-#define H5G_NUSERTYPES (H5G_NTYPES-H5G_NLIBTYPES)
-#define H5G_USERTYPE(X) (8+(X)) /* User defined types */
-
#ifdef __cplusplus
extern "C" {
#endif
@@ -71,38 +63,6 @@ typedef struct H5G_info_t {
int64_t max_corder; /* Current max. creation order value for group */
} H5G_info_t;
-/* Deprecated typedefs, for backward compatibility */
-
-/*
- * An object has a certain type. The first few numbers are reserved for use
- * internally by HDF5. Users may add their own types with higher values. The
- * values are never stored in the file -- they only exist while an
- * application is running. An object may satisfy the `isa' function for more
- * than one type.
- */
-typedef enum H5G_obj_t {
- H5G_UNKNOWN = -1, /* Unknown object type */
- H5G_GROUP, /* Object is a group */
- H5G_DATASET, /* Object is a dataset */
- H5G_TYPE, /* Object is a named data type */
- H5G_LINK, /* Object is a symbolic link */
- H5G_UDLINK, /* Object is a user-defined link */
- H5G_RESERVED_5, /* Reserved for future use */
- H5G_RESERVED_6, /* Reserved for future use */
- H5G_RESERVED_7 /* Reserved for future use */
-} H5G_obj_t;
-
-/* Information about an object */
-typedef struct H5G_stat_t {
- unsigned long fileno[2]; /*file number */
- unsigned long objno[2]; /*object number */
- unsigned nlink; /*number of hard links to object*/
- H5G_obj_t type; /*basic object type */
- time_t mtime; /*modification time */
- size_t linklen; /*symbolic link value length */
- H5O_stat_t ohdr; /* Object header information */
-} H5G_stat_t;
-
/********************/
/* Public Variables */
/********************/
@@ -128,11 +88,28 @@ H5_DLL herr_t H5Gclose(hid_t group_id);
*
* Use of these functions and variables is deprecated.
*/
+/*
+ * An object has a certain type. The first few numbers are reserved for use
+ * internally by HDF5. Users may add their own types with higher values. The
+ * values are never stored in the file -- they only exist while an
+ * application is running. An object may satisfy the `isa' function for more
+ * than one type.
+ */
+typedef enum H5G_obj_t {
+ H5G_UNKNOWN = -1, /* Unknown object type */
+ H5G_GROUP, /* Object is a group */
+ H5G_DATASET, /* Object is a dataset */
+ H5G_TYPE, /* Object is a named data type */
+ H5G_LINK, /* Object is a symbolic link */
+ H5G_UDLINK, /* Object is a user-defined link */
+ H5G_RESERVED_5, /* Reserved for future use */
+ H5G_RESERVED_6, /* Reserved for future use */
+ H5G_RESERVED_7 /* Reserved for future use */
+} H5G_obj_t;
+
H5_DLL ssize_t H5Gget_objname_by_idx(hid_t loc_id, hsize_t idx, char* name,
size_t size);
H5_DLL H5G_obj_t H5Gget_objtype_by_idx(hid_t loc_id, hsize_t idx);
-H5_DLL herr_t H5Gget_objinfo(hid_t loc_id, const char *name,
- hbool_t follow_link, H5G_stat_t *statbuf/*out*/);
/* Symbols defined for compatibility with previous versions of the HDF5 API.
*
* Use of these symbols is deprecated.
@@ -148,12 +125,29 @@ H5_DLL herr_t H5Gget_objinfo(hid_t loc_id, const char *name,
#define H5G_LINK_SOFT H5L_TYPE_SOFT
#define H5G_link_t H5L_type_t
+/* Macros for types of objects in a group (see H5G_obj_t definition) */
+#define H5G_NTYPES 256 /* Max possible number of types */
+#define H5G_NLIBTYPES 8 /* Number of internal types */
+#define H5G_NUSERTYPES (H5G_NTYPES - H5G_NLIBTYPES)
+#define H5G_USERTYPE(X) (8 + (X)) /* User defined types */
+
/* Typedefs */
/* Prototype for H5Giterate() operator */
typedef herr_t (*H5G_iterate_t)(hid_t group, const char *name, void *op_data);
+/* Information about an object */
+typedef struct H5G_stat_t {
+ unsigned long fileno[2]; /*file number */
+ unsigned long objno[2]; /*object number */
+ unsigned nlink; /*number of hard links to object*/
+ H5G_obj_t type; /*basic object type */
+ time_t mtime; /*modification time */
+ size_t linklen; /*symbolic link value length */
+ H5O_stat_t ohdr; /* Object header information */
+} H5G_stat_t;
+
/* Function prototypes */
H5_DLL hid_t H5Gcreate1(hid_t loc_id, const char *name, size_t size_hint);
@@ -175,6 +169,8 @@ H5_DLL int H5Gget_comment(hid_t loc_id, const char *name, size_t bufsize,
H5_DLL herr_t H5Giterate(hid_t loc_id, const char *name, int *idx,
H5G_iterate_t op, void *op_data);
H5_DLL herr_t H5Gget_num_objs(hid_t loc_id, hsize_t *num_objs);
+H5_DLL herr_t H5Gget_objinfo(hid_t loc_id, const char *name,
+ hbool_t follow_link, H5G_stat_t *statbuf/*out*/);
#endif /* H5_NO_DEPRECATED_SYMBOLS */
diff --git a/src/H5Opublic.h b/src/H5Opublic.h
index 17fe139..41e9f18 100644
--- a/src/H5Opublic.h
+++ b/src/H5Opublic.h
@@ -77,20 +77,14 @@
/*******************/
/* Public Typedefs */
/*******************/
-/* A struct that's part of the H5G_stat_t routine (deprecated) */
-typedef struct H5O_stat_t {
- hsize_t size; /* Total size of object header in file */
- hsize_t free; /* Free space within object header */
- unsigned nmesgs; /* Number of object header messages */
- unsigned nchunks; /* Number of object header chunks */
-} H5O_stat_t;
/* Types of objects in file */
typedef enum H5O_type_t {
H5O_TYPE_UNKNOWN = -1, /* Unknown object type */
H5O_TYPE_GROUP, /* Object is a group */
H5O_TYPE_DATASET, /* Object is a dataset */
- H5O_TYPE_NAMED_DATATYPE /* Object is a named data type */
+ H5O_TYPE_NAMED_DATATYPE, /* Object is a named data type */
+ H5O_TYPE_NTYPES /* Number of different object types (must be last!) */
} H5O_type_t;
/* Information struct for object (for H5Oget_info/H5Oget_info_by_idx) */
@@ -162,6 +156,28 @@ H5_DLL ssize_t H5Oget_comment(hid_t loc_id, const char *name, char *comment,
size_t bufsize, hid_t lapl_id);
H5_DLL herr_t H5Oclose(hid_t object_id);
+/* Symbols defined for compatibility with previous versions of the HDF5 API.
+ *
+ * Use of these symbols is deprecated.
+ */
+#ifndef H5_NO_DEPRECATED_SYMBOLS
+
+/* Macros */
+
+/* Typedefs */
+
+/* A struct that's part of the H5G_stat_t routine (deprecated) */
+typedef struct H5O_stat_t {
+ hsize_t size; /* Total size of object header in file */
+ hsize_t free; /* Free space within object header */
+ unsigned nmesgs; /* Number of object header messages */
+ unsigned nchunks; /* Number of object header chunks */
+} H5O_stat_t;
+
+/* Function prototypes */
+
+#endif /* H5_NO_DEPRECATED_SYMBOLS */
+
#ifdef __cplusplus
}
#endif
diff --git a/src/H5Osdspace.c b/src/H5Osdspace.c
index 3581863..5e8a7a4 100644
--- a/src/H5Osdspace.c
+++ b/src/H5Osdspace.c
@@ -165,11 +165,10 @@ H5O_sdspace_decode(H5F_t *f, hid_t UNUSED dxpl_id, unsigned UNUSED mesg_flags,
HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed")
for(i = 0; i < sdim->rank; i++) {
H5F_DECODE_LENGTH(f, p, sdim->size[i]);
-#ifndef H5_HAVE_LARGE_HSIZET
+
/* Rudimentary check for overflow of the dimension size */
if(sdim->size[i] == 0)
HGOTO_ERROR(H5E_DATASPACE, H5E_BADSIZE, NULL, "invalid size detected")
-#endif /* H5_HAVE_LARGE_HSIZET */
} /* end for */
if(flags & H5S_VALID_MAX) {
diff --git a/src/H5Tconv.c b/src/H5Tconv.c
index 92dfdfc..7094fe0 100644
--- a/src/H5Tconv.c
+++ b/src/H5Tconv.c
@@ -1026,7 +1026,7 @@ H5T_conv_order_opt(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
* the addresses in the file must be) and just get out now, there
* is no need to convert the object reference. Yes, this is
* icky and non-portable, but I can't think of a better way to
- * support allowing the objno in the H5G_stat_t struct and the
+ * support allowing the objno in the H5O_info_t struct and the
* hobj_ref_t type to be compared directly without introducing a
* "native" hobj_ref_t datatype and I think that would break a
* lot of existing programs. -QAK
diff --git a/src/H5private.h b/src/H5private.h
index 184ef7c..dad4e13 100644
--- a/src/H5private.h
+++ b/src/H5private.h
@@ -412,13 +412,12 @@
# define SIZET_MAX ((size_t)(ssize_t)(-1))
# define SSIZET_MAX ((ssize_t)(((size_t)1<<(8*sizeof(ssize_t)-1))-1))
#endif
-#ifdef H5_HAVE_LARGE_HSIZET
+
+/*
+ * Maximum & minimum values for our typedefs.
+ */
#define HSIZET_MAX ((hsize_t)ULLONG_MAX)
#define HSSIZET_MAX ((hssize_t)LLONG_MAX)
-#else /* H5_HAVE_LARGE_HSIZET */
-#define HSIZET_MAX ((hsize_t)SIZET_MAX)
-#define HSSIZET_MAX ((hssize_t)SSIZET_MAX)
-#endif /* H5_HAVE_LARGE_HSIZET */
#define HSSIZET_MIN (~(HSSIZET_MAX))
/*
diff --git a/src/H5public.h b/src/H5public.h
index 6b66d7a..00ca6ab 100644
--- a/src/H5public.h
+++ b/src/H5public.h
@@ -148,23 +148,17 @@ typedef long_long ssize_t;
#endif
/*
- * The sizes of file objects have their own types defined here. If large
- * sizes are enabled then use a 64-bit data type, otherwise use the size of
- * memory objects.
+ * The sizes of file objects have their own types defined here, use a 64-bit
+ * type.
*/
-#ifdef H5_HAVE_LARGE_HSIZET
-# if H5_SIZEOF_LONG_LONG>=8
+#if H5_SIZEOF_LONG_LONG >= 8
typedef unsigned long_long hsize_t;
typedef signed long_long hssize_t;
# define H5_SIZEOF_HSIZE_T H5_SIZEOF_LONG_LONG
# define H5_SIZEOF_HSSIZE_T H5_SIZEOF_LONG_LONG
-# endif
-#else /* H5_HAVE_LARGE_HSIZET */
-typedef size_t hsize_t;
-typedef ssize_t hssize_t;
-# define H5_SIZEOF_HSIZE_T H5_SIZEOF_SIZE_T
-# define H5_SIZEOF_HSSIZE_T H5_SIZEOF_SIZE_T
-#endif /* H5_HAVE_LARGE_HSIZET */
+#else
+# error "nothing appropriate for hsize_t"
+#endif
/*
* File addresses have their own types.
diff --git a/src/H5trace.c b/src/H5trace.c
index 77e1984..7c2587d 100644
--- a/src/H5trace.c
+++ b/src/H5trace.c
@@ -695,6 +695,7 @@ H5_trace (const double *returning, const char *func, const char *type, ...)
}
break;
+#ifndef H5_NO_DEPRECATED_SYMBOLS
case 's':
if(ptr) {
if(vp)
@@ -707,6 +708,7 @@ H5_trace (const double *returning, const char *func, const char *type, ...)
fprintf(out, "0x%lx", (unsigned long)statbuf);
}
break;
+#endif /* H5_NO_DEPRECATED_SYMBOLS */
default:
fprintf(out, "BADTYPE(G%c)", type[1]);
diff --git a/test/dtypes.c b/test/dtypes.c
index 75dde75..2783f2d 100644
--- a/test/dtypes.c
+++ b/test/dtypes.c
@@ -4362,7 +4362,7 @@ test_latest(void)
hid_t file = (-1); /* File ID */
hid_t tid1 = (-1), tid2 = (-1); /* Datatype ID */
hid_t fapl = (-1); /* File access property list */
- H5G_stat_t sb; /* Stat buffer for committed datatype */
+ H5O_info_t oi; /* Stat buffer for committed datatype */
hsize_t old_dtype_oh_size; /* Size of object header with "old" format */
hsize_t new_dtype_oh_size; /* Size of object header with "new" format */
char filename[1024]; /* Buffer for filename */
@@ -4396,9 +4396,9 @@ test_latest(void)
FAIL_STACK_ERROR
/* Get information about datatype on disk */
- if(H5Gget_objinfo(file, compnd_type, TRUE, &sb) < 0)
+ if(H5Oget_info(file, compnd_type, &oi, H5P_DEFAULT) < 0)
FAIL_STACK_ERROR
- old_dtype_oh_size = sb.ohdr.size;
+ old_dtype_oh_size = oi.hdr.space.total;
/* Close datatype */
if(H5Tclose(tid2) < 0)
@@ -4421,11 +4421,11 @@ test_latest(void)
FAIL_STACK_ERROR
/* Get information about datatype on disk */
- if(H5Gget_objinfo(file, compnd_type, TRUE, &sb) < 0)
+ if(H5Oget_info(file, compnd_type, &oi, H5P_DEFAULT) < 0)
FAIL_STACK_ERROR
/* Check that the object header info is still the same */
- if(old_dtype_oh_size != sb.ohdr.size)
+ if(old_dtype_oh_size != oi.hdr.space.total)
TEST_ERROR
/* Close datatype */
@@ -4457,9 +4457,9 @@ test_latest(void)
FAIL_STACK_ERROR
/* Get information about datatype on disk */
- if(H5Gget_objinfo(file, compnd_type, TRUE, &sb) < 0)
+ if(H5Oget_info(file, compnd_type, &oi, H5P_DEFAULT) < 0)
FAIL_STACK_ERROR
- new_dtype_oh_size = sb.ohdr.size;
+ new_dtype_oh_size = oi.hdr.space.total;
/* Check that the new format is smaller than the old format */
if(old_dtype_oh_size <= new_dtype_oh_size)
@@ -4486,11 +4486,11 @@ test_latest(void)
FAIL_STACK_ERROR
/* Get information about datatype on disk */
- if(H5Gget_objinfo(file, compnd_type, TRUE, &sb) < 0)
+ if(H5Oget_info(file, compnd_type, &oi, H5P_DEFAULT) < 0)
FAIL_STACK_ERROR
/* Check that the object header info is still the same */
- if(new_dtype_oh_size != sb.ohdr.size)
+ if(new_dtype_oh_size != oi.hdr.space.total)
TEST_ERROR
/* Close datatype */
diff --git a/test/istore.c b/test/istore.c
index 8764643..657e150 100644
--- a/test/istore.c
+++ b/test/istore.c
@@ -47,11 +47,7 @@ const char *FILENAME[] = {
#define TEST_DATATYPE H5T_NATIVE_UCHAR
#define TEST_CHUNK_SIZE 50
-#ifdef H5_HAVE_LARGE_HSIZET
#define TEST_SPARSE_SIZE 1000000
-#else /* H5_HAVE_LARGE_HSIZET */
-#define TEST_SPARSE_SIZE 1200
-#endif /* H5_HAVE_LARGE_HSIZET */
hsize_t chunk_dims[H5O_LAYOUT_NDIMS];
hsize_t zero[H5O_LAYOUT_NDIMS];
diff --git a/test/links.c b/test/links.c
index fb6fdb6..3ef66a0 100644
--- a/test/links.c
+++ b/test/links.c
@@ -126,32 +126,32 @@ mklinks(hid_t fapl, hbool_t new_format)
/* Create a file */
h5_fixname(FILENAME[1], fapl, filename, sizeof filename);
- if ((file=H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0) TEST_ERROR
- if ((scalar=H5Screate_simple (1, size, size)) < 0) TEST_ERROR
+ if((file = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0) TEST_ERROR
+ if((scalar = H5Screate_simple(1, size, size)) < 0) TEST_ERROR
/* Create a group */
if((grp = H5Gcreate2(file, "grp1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) TEST_ERROR
- if(H5Gclose (grp) < 0) TEST_ERROR
+ if(H5Gclose(grp) < 0) TEST_ERROR
/* Create a dataset */
- if ((d1=H5Dcreate (file, "d1", H5T_NATIVE_INT, scalar, H5P_DEFAULT)) < 0) TEST_ERROR
- if (H5Dclose (d1) < 0) TEST_ERROR
+ if((d1 = H5Dcreate(file, "d1", H5T_NATIVE_INT, scalar, H5P_DEFAULT)) < 0) TEST_ERROR
+ if(H5Dclose(d1) < 0) TEST_ERROR
/* Create a hard link */
- if (H5Lcreate_hard (file, "d1", H5L_SAME_LOC, "grp1/hard", H5P_DEFAULT, H5P_DEFAULT) < 0) TEST_ERROR
+ if(H5Lcreate_hard(file, "d1", H5L_SAME_LOC, "grp1/hard", H5P_DEFAULT, H5P_DEFAULT) < 0) TEST_ERROR
/* Create a symbolic link */
- if (H5Lcreate_soft ("/d1", file, "grp1/soft", H5P_DEFAULT, H5P_DEFAULT) < 0) TEST_ERROR
+ if(H5Lcreate_soft("/d1", file, "grp1/soft", H5P_DEFAULT, H5P_DEFAULT) < 0) TEST_ERROR
/* Create a symbolic link to something that doesn't exist */
- if (H5Lcreate_soft ("foobar", file, "grp1/dangle", H5P_DEFAULT, H5P_DEFAULT) < 0) TEST_ERROR
+ if(H5Lcreate_soft("foobar", file, "grp1/dangle", H5P_DEFAULT, H5P_DEFAULT) < 0) TEST_ERROR
/* Create a recursive symbolic link */
- if (H5Lcreate_soft ("/grp1/recursive", file, "/grp1/recursive", H5P_DEFAULT, H5P_DEFAULT) < 0) TEST_ERROR
+ if(H5Lcreate_soft("/grp1/recursive", file, "/grp1/recursive", H5P_DEFAULT, H5P_DEFAULT) < 0) TEST_ERROR
/* Close */
- if (H5Sclose (scalar) < 0) TEST_ERROR
- if (H5Fclose (file) < 0) TEST_ERROR
+ if(H5Sclose(scalar) < 0) TEST_ERROR
+ if(H5Fclose(file) < 0) TEST_ERROR
PASSED();
return 0;
@@ -194,12 +194,12 @@ new_links(hid_t fapl, hbool_t new_format)
/* Create two files */
h5_fixname(FILENAME[1], fapl, filename, sizeof filename);
- if ((file_a=H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0) TEST_ERROR
+ if((file_a = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0) TEST_ERROR
h5_fixname(FILENAME[2], fapl, filename, sizeof filename);
- if ((file_b=H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0) TEST_ERROR
+ if((file_b = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0) TEST_ERROR
- if ((scalar=H5Screate_simple (1, size, size)) < 0) TEST_ERROR
+ if((scalar = H5Screate_simple (1, size, size)) < 0) TEST_ERROR
/* Create two groups in each file */
if((grp1_a = H5Gcreate2(file_a, "grp1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) TEST_ERROR
@@ -208,8 +208,8 @@ new_links(hid_t fapl, hbool_t new_format)
if((grp2_b = H5Gcreate2(file_b, "grp2", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) TEST_ERROR
/* Create datasets */
- if((dset1=H5Dcreate(file_a, "dataset1", H5T_NATIVE_INT, scalar, H5P_DEFAULT)) < 0) TEST_ERROR
- if((dset2=H5Dcreate(grp1_a, "dataset2", H5T_NATIVE_INT, scalar, H5P_DEFAULT)) < 0) TEST_ERROR
+ if((dset1 = H5Dcreate(file_a, "dataset1", H5T_NATIVE_INT, scalar, H5P_DEFAULT)) < 0) TEST_ERROR
+ if((dset2 = H5Dcreate(grp1_a, "dataset2", H5T_NATIVE_INT, scalar, H5P_DEFAULT)) < 0) TEST_ERROR
/* Create links within a file. Both of source and destination use
* H5L_SAME_LOC. Both hard and soft links should fail. */
@@ -232,30 +232,30 @@ new_links(hid_t fapl, hbool_t new_format)
if(H5Lcreate_hard(grp1_a, "dataset2", grp2_a, "hard2", H5P_DEFAULT, H5P_DEFAULT) < 0) TEST_ERROR
/* Close dataspace and files */
- if (H5Sclose (scalar) < 0) TEST_ERROR
- if (H5Dclose(dset1) < 0) TEST_ERROR
- if (H5Dclose(dset2) < 0) TEST_ERROR
- if (H5Gclose (grp1_a) < 0) TEST_ERROR
- if (H5Gclose (grp2_a) < 0) TEST_ERROR
- if (H5Gclose (grp1_b) < 0) TEST_ERROR
- if (H5Gclose (grp2_b) < 0) TEST_ERROR
- if (H5Fclose (file_a) < 0) TEST_ERROR
- if (H5Fclose (file_b) < 0) TEST_ERROR
+ if(H5Sclose(scalar) < 0) TEST_ERROR
+ if(H5Dclose(dset1) < 0) TEST_ERROR
+ if(H5Dclose(dset2) < 0) TEST_ERROR
+ if(H5Gclose(grp1_a) < 0) TEST_ERROR
+ if(H5Gclose(grp2_a) < 0) TEST_ERROR
+ if(H5Gclose(grp1_b) < 0) TEST_ERROR
+ if(H5Gclose(grp2_b) < 0) TEST_ERROR
+ if(H5Fclose(file_a) < 0) TEST_ERROR
+ if(H5Fclose(file_b) < 0) TEST_ERROR
PASSED();
return 0;
error:
H5E_BEGIN_TRY {
- H5Sclose (scalar);
- H5Dclose (dset1);
- H5Dclose (dset2);
- H5Gclose (grp1_a);
- H5Gclose (grp2_a);
- H5Gclose (grp1_b);
- H5Gclose (grp2_b);
- H5Fclose (file_a);
- H5Fclose (file_b);
+ H5Sclose(scalar);
+ H5Dclose(dset1);
+ H5Dclose(dset2);
+ H5Gclose(grp1_a);
+ H5Gclose(grp2_a);
+ H5Gclose(grp1_b);
+ H5Gclose(grp2_b);
+ H5Fclose(file_a);
+ H5Fclose(file_b);
} H5E_END_TRY;
return -1;
}
@@ -282,7 +282,8 @@ static int
cklinks(hid_t fapl, hbool_t new_format)
{
hid_t file;
- H5G_stat_t sb1, sb2;
+ H5O_info_t oinfo1, oinfo2;
+ H5L_info_t linfo2;
char linkval[LINK_BUF_SIZE];
char filename[NAME_BUF_SIZE];
herr_t status;
@@ -297,14 +298,14 @@ cklinks(hid_t fapl, hbool_t new_format)
if((file = H5Fopen(filename, H5F_ACC_RDONLY, fapl)) < 0) FAIL_STACK_ERROR
/* Hard link */
- if(H5Gget_objinfo(file, "d1", TRUE, &sb1) < 0) FAIL_STACK_ERROR
- if(H5Gget_objinfo(file, "grp1/hard", TRUE, &sb2) < 0) FAIL_STACK_ERROR
- if(H5G_DATASET != sb2.type) {
+ if(H5Oget_info(file, "d1", &oinfo1, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
+ if(H5Oget_info(file, "grp1/hard", &oinfo2, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
+ if(H5O_TYPE_DATASET != oinfo2.type) {
H5_FAILED();
printf(" %d: Unexpected object type should have been a dataset\n", __LINE__);
TEST_ERROR
} /* end if */
- if(HDmemcmp(&sb1.objno, &sb2.objno, sizeof(sb1.objno))) {
+ if(H5F_addr_ne(oinfo1.addr, oinfo2.addr)) {
H5_FAILED();
puts(" Hard link test failed. Link seems not to point to the ");
puts(" expected file location.");
@@ -314,13 +315,13 @@ cklinks(hid_t fapl, hbool_t new_format)
if(H5Lexists(file, "grp1/hard", H5P_DEFAULT) != TRUE) FAIL_STACK_ERROR
/* Symbolic link */
- if(H5Gget_objinfo(file, "grp1/soft", TRUE, &sb2) < 0) FAIL_STACK_ERROR
- if(H5G_DATASET != sb2.type) {
+ if(H5Oget_info(file, "grp1/soft", &oinfo2, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
+ if(H5O_TYPE_DATASET != oinfo2.type) {
H5_FAILED();
printf(" %d: Unexpected object type should have been a dataset\n", __LINE__);
TEST_ERROR
} /* end if */
- if(HDmemcmp(&sb1.objno, &sb2.objno, sizeof(sb1.objno))) {
+ if(H5F_addr_ne(oinfo1.addr, oinfo2.addr)) {
H5_FAILED();
puts(" Soft link test failed. Link seems not to point to the ");
puts(" expected file location.");
@@ -336,15 +337,15 @@ cklinks(hid_t fapl, hbool_t new_format)
/* Dangling link */
H5E_BEGIN_TRY {
- status = H5Gget_objinfo(file, "grp1/dangle", TRUE, &sb2);
+ status = H5Oget_info(file, "grp1/dangle", &oinfo2, H5P_DEFAULT);
} H5E_END_TRY;
if(status >= 0) {
H5_FAILED();
- puts(" H5Gget_objinfo() should have failed for a dangling link.");
+ puts(" H5Oget_info() should have failed for a dangling link.");
TEST_ERROR
} /* end if */
- if(H5Gget_objinfo(file, "grp1/dangle", FALSE, &sb2) < 0) FAIL_STACK_ERROR
- if(H5G_LINK != sb2.type) {
+ if(H5Lget_info(file, "grp1/dangle", &linfo2, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
+ if(H5L_TYPE_SOFT != linfo2.type) {
H5_FAILED();
printf(" %d: Unexpected object type should have been a symbolic link\n", __LINE__);
TEST_ERROR
@@ -363,15 +364,15 @@ cklinks(hid_t fapl, hbool_t new_format)
/* Recursive link */
H5E_BEGIN_TRY {
- status = H5Gget_objinfo(file, "grp1/recursive", TRUE, &sb2);
+ status = H5Oget_info(file, "grp1/recursive", &oinfo2, H5P_DEFAULT);
} H5E_END_TRY;
if(status >= 0) {
H5_FAILED();
- puts(" H5Gget_objinfo() should have failed for a recursive link.");
+ puts(" H5Oget_info() should have failed for a recursive link.");
TEST_ERROR
} /* end if */
- if(H5Gget_objinfo(file, "grp1/recursive", FALSE, &sb2) < 0) FAIL_STACK_ERROR
- if(H5G_LINK != sb2.type) {
+ if(H5Lget_info(file, "grp1/recursive", &linfo2, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
+ if(H5L_TYPE_SOFT != linfo2.type) {
H5_FAILED();
printf(" %d: Unexpected object type should have been a symbolic link\n", __LINE__);
TEST_ERROR
@@ -420,7 +421,7 @@ static int
ck_new_links(hid_t fapl, hbool_t new_format)
{
hid_t file;
- H5G_stat_t sb_dset, sb_hard1, sb_hard2;
+ H5O_info_t oi_dset, oi_hard1, oi_hard2;
char filename[NAME_BUF_SIZE];
if(new_format)
@@ -430,23 +431,23 @@ ck_new_links(hid_t fapl, hbool_t new_format)
/* Open the file */
h5_fixname(FILENAME[1], fapl, filename, sizeof filename);
- if ((file=H5Fopen(filename, H5F_ACC_RDONLY, fapl)) < 0) TEST_ERROR
+ if((file = H5Fopen(filename, H5F_ACC_RDONLY, fapl)) < 0) TEST_ERROR
/* Get hard link info */
- if(H5Gget_objinfo(file, "/grp1/dataset2", TRUE, &sb_dset) < 0)
+ if(H5Oget_info(file, "/grp1/dataset2", &oi_dset, H5P_DEFAULT) < 0)
TEST_ERROR
- if(H5Gget_objinfo(file, "/grp1/hard1", TRUE, &sb_hard1) < 0)
+ if(H5Oget_info(file, "/grp1/hard1", &oi_hard1, H5P_DEFAULT) < 0)
TEST_ERROR
- if(H5Gget_objinfo(file, "/grp2/hard2", TRUE, &sb_hard2) < 0)
+ if(H5Oget_info(file, "/grp2/hard2", &oi_hard2, H5P_DEFAULT) < 0)
TEST_ERROR
/* Check hard links */
- if(H5G_DATASET!=sb_hard1.type || H5G_DATASET!=sb_hard2.type) {
+ if(H5O_TYPE_DATASET != oi_hard1.type || H5O_TYPE_DATASET != oi_hard2.type) {
H5_FAILED();
printf(" %d: Unexpected object type should have been a dataset\n", __LINE__);
TEST_ERROR
}
- if(HDmemcmp(&sb_dset.objno, &sb_hard1.objno, sizeof(sb_dset.objno)) || HDmemcmp(&sb_dset.objno, &sb_hard2.objno, sizeof(sb_dset.objno))) {
+ if(H5F_addr_ne(oi_dset.addr, oi_hard1.addr) || H5F_addr_ne(oi_dset.addr, oi_hard2.addr)) {
H5_FAILED();
puts(" Hard link test failed. Link seems not to point to the ");
puts(" expected file location.");
@@ -455,10 +456,11 @@ ck_new_links(hid_t fapl, hbool_t new_format)
/* Cleanup */
if(H5Fclose(file) < 0) TEST_ERROR
+
PASSED();
return 0;
- error:
+error:
return -1;
}
@@ -1302,7 +1304,7 @@ test_move_preserves(hid_t fapl_id, hbool_t new_format)
hid_t fcpl_id=-1; /* Group creation property list ID */
hid_t lcpl_id=-1;
hid_t lcpl2_id=-1;
- H5G_stat_t statbuf;
+ H5O_info_t oinfo;
H5L_info_t linfo;
H5T_cset_t old_cset;
int64_t old_corder; /* Creation order value of link */
@@ -1341,13 +1343,13 @@ test_move_preserves(hid_t fapl_id, hbool_t new_format)
/* Get the group's link's information */
if(H5Lget_info(file_id, "group", &linfo, H5P_DEFAULT) < 0) TEST_ERROR
- if(H5Gget_objinfo(file_id, "group", TRUE, &statbuf) < 0) TEST_ERROR
+ if(H5Oget_info(file_id, "group", &oinfo, H5P_DEFAULT) < 0) TEST_ERROR
old_cset = linfo.cset;
if(old_cset != H5T_CSET_UTF8) TEST_ERROR
if(linfo.corder_valid != TRUE) TEST_ERROR
old_corder = linfo.corder;
if(old_corder != 0) TEST_ERROR
- old_modification_time = statbuf.mtime;
+ old_modification_time = oinfo.mtime;
/* If this test happens too quickly, the times will all be the same. Make sure the time changes. */
curr_time = HDtime(NULL);
@@ -1360,16 +1362,16 @@ test_move_preserves(hid_t fapl_id, hbool_t new_format)
/* Get the link's character set & modification time . They should be unchanged */
if(H5Lget_info(file_id, "group", &linfo, H5P_DEFAULT) < 0) TEST_ERROR
- if(H5Gget_objinfo(file_id, "group", TRUE, &statbuf) < 0) TEST_ERROR
- if(old_modification_time != statbuf.mtime) TEST_ERROR
+ if(H5Oget_info(file_id, "group", &oinfo, H5P_DEFAULT) < 0) TEST_ERROR
+ if(old_modification_time != oinfo.mtime) TEST_ERROR
if(old_cset != linfo.cset) TEST_ERROR
if(linfo.corder_valid != TRUE) TEST_ERROR
if(old_corder != linfo.corder) TEST_ERROR
/* Create a new link to the group. It should have a different creation order value but the same modification time */
if(H5Lcreate_hard(file_id, "group", file_id, "group2", H5P_DEFAULT, H5P_DEFAULT) < 0) TEST_ERROR
- if(H5Gget_objinfo(file_id, "group2", TRUE, &statbuf) < 0) TEST_ERROR
- if(old_modification_time != statbuf.mtime) TEST_ERROR
+ if(H5Oget_info(file_id, "group2", &oinfo, H5P_DEFAULT) < 0) TEST_ERROR
+ if(old_modification_time != oinfo.mtime) TEST_ERROR
if(H5Lget_info(file_id, "group2", &linfo, H5P_DEFAULT) < 0) TEST_ERROR
if(old_corder == linfo.corder) TEST_ERROR
if(linfo.corder_valid != TRUE) TEST_ERROR
@@ -1381,8 +1383,8 @@ test_move_preserves(hid_t fapl_id, hbool_t new_format)
* should not change.
*/
if(H5Lcopy(file_id, "group", file_id, "group_copied", lcpl_id, H5P_DEFAULT) < 0) TEST_ERROR
- if(H5Gget_objinfo(file_id, "group_copied", TRUE, &statbuf) < 0) TEST_ERROR
- if(old_modification_time != statbuf.mtime) TEST_ERROR
+ if(H5Oget_info(file_id, "group_copied", &oinfo, H5P_DEFAULT) < 0) TEST_ERROR
+ if(old_modification_time != oinfo.mtime) TEST_ERROR
if(H5Lget_info(file_id, "group_copied", &linfo, H5P_DEFAULT) < 0) TEST_ERROR
if(linfo.corder_valid != TRUE) TEST_ERROR
if(linfo.corder != 2) TEST_ERROR
@@ -1392,8 +1394,8 @@ test_move_preserves(hid_t fapl_id, hbool_t new_format)
/* Move the link with the default property list. */
if(H5Lmove(file_id, "group_copied", file_id, "group_copied2", H5P_DEFAULT, H5P_DEFAULT) < 0) TEST_ERROR
- if(H5Gget_objinfo(file_id, "group_copied2", TRUE, &statbuf) < 0) TEST_ERROR
- if(old_modification_time != statbuf.mtime) TEST_ERROR
+ if(H5Oget_info(file_id, "group_copied2", &oinfo, H5P_DEFAULT) < 0) TEST_ERROR
+ if(old_modification_time != oinfo.mtime) TEST_ERROR
if(H5Lget_info(file_id, "group_copied2", &linfo, H5P_DEFAULT) < 0) TEST_ERROR
if(linfo.corder_valid != TRUE) TEST_ERROR
if(linfo.corder != 3) TEST_ERROR
@@ -1402,8 +1404,8 @@ test_move_preserves(hid_t fapl_id, hbool_t new_format)
if(linfo.cset == H5T_CSET_UTF8) TEST_ERROR
/* Check that the original link is unchanged */
- if(H5Gget_objinfo(file_id, "group", TRUE, &statbuf) < 0) TEST_ERROR
- if(old_modification_time != statbuf.mtime) TEST_ERROR
+ if(H5Oget_info(file_id, "group", &oinfo, H5P_DEFAULT) < 0) TEST_ERROR
+ if(old_modification_time != oinfo.mtime) TEST_ERROR
if(H5Lget_info(file_id, "group", &linfo, H5P_DEFAULT) < 0) TEST_ERROR
if(linfo.corder_valid != TRUE) TEST_ERROR
if(old_corder != linfo.corder) TEST_ERROR
@@ -1413,8 +1415,8 @@ test_move_preserves(hid_t fapl_id, hbool_t new_format)
* Its creation order value will change, but modification time should not
* change. */
if(H5Lmove(file_id, "group", file_id, "group_moved", lcpl_id, H5P_DEFAULT) < 0) TEST_ERROR
- if(H5Gget_objinfo(file_id, "group_moved", TRUE, &statbuf) < 0) TEST_ERROR
- if(old_modification_time != statbuf.mtime) TEST_ERROR
+ if(H5Oget_info(file_id, "group_moved", &oinfo, H5P_DEFAULT) < 0) TEST_ERROR
+ if(old_modification_time != oinfo.mtime) TEST_ERROR
if(H5Lget_info(file_id, "group_moved", &linfo, H5P_DEFAULT) < 0) TEST_ERROR
if(linfo.corder_valid != TRUE) TEST_ERROR
if(linfo.corder != 4) TEST_ERROR
@@ -1424,8 +1426,8 @@ test_move_preserves(hid_t fapl_id, hbool_t new_format)
/* Move the link again using the default property list. */
if(H5Lmove(file_id, "group_moved", file_id, "group_moved_again", H5P_DEFAULT, H5P_DEFAULT) < 0) TEST_ERROR
- if(H5Gget_objinfo(file_id, "group_moved_again", TRUE, &statbuf) < 0) TEST_ERROR
- if(old_modification_time != statbuf.mtime) TEST_ERROR
+ if(H5Oget_info(file_id, "group_moved_again", &oinfo, H5P_DEFAULT) < 0) TEST_ERROR
+ if(old_modification_time != oinfo.mtime) TEST_ERROR
if(H5Lget_info(file_id, "group_moved_again", &linfo, H5P_DEFAULT) < 0) TEST_ERROR
if(linfo.corder_valid != TRUE) TEST_ERROR
if(linfo.corder != 5) TEST_ERROR
@@ -1600,7 +1602,7 @@ external_link_root(hid_t fapl, hbool_t new_format)
{
hid_t fid = (-1); /* File ID */
hid_t gid = (-1), gid2 = (-1); /* Group IDs */
- H5G_stat_t sb; /* Object information */
+ H5L_info_t linfo; /* Link information */
char objname[NAME_BUF_SIZE]; /* Object name */
ssize_t name_len; /* Length of object name */
char filename1[NAME_BUF_SIZE];
@@ -1618,7 +1620,7 @@ external_link_root(hid_t fapl, hbool_t new_format)
h5_fixname(FILENAME[4], fapl, filename2, sizeof filename2);
/* Create file to point to */
- if((fid=H5Fcreate(filename1, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0) TEST_ERROR
+ if((fid = H5Fcreate(filename1, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0) TEST_ERROR
/* Close file */
if(H5Fclose(fid) < 0) TEST_ERROR
@@ -1627,20 +1629,20 @@ external_link_root(hid_t fapl, hbool_t new_format)
if(H5Lis_registered(H5L_TYPE_EXTERNAL) != TRUE) TEST_ERROR
/* Create file with link to first file */
- if((fid=H5Fcreate(filename2, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0) TEST_ERROR
+ if((fid = H5Fcreate(filename2, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0) TEST_ERROR
/* Create external link to object in first file */
if(H5Lcreate_external(filename1, "/", fid, "ext_link", H5P_DEFAULT, H5P_DEFAULT) < 0) TEST_ERROR
/* Check information for external link */
- if (H5Gget_objinfo(fid, "ext_link", FALSE, &sb) < 0) goto error;
- if (H5G_UDLINK!=sb.type) {
+ if(H5Lget_info(fid, "ext_link", &linfo, H5P_DEFAULT) < 0) goto error;
+ if(H5L_TYPE_EXTERNAL != linfo.type) {
H5_FAILED();
puts(" Unexpected object type - should have been an external link");
goto error;
}
if(H5Lget_val(fid, "ext_link", objname, sizeof(objname), H5P_DEFAULT) < 0) TEST_ERROR
- if(H5Lunpack_elink_val(objname, sb.linklen, NULL, &file, &path) < 0) TEST_ERROR
+ if(H5Lunpack_elink_val(objname, linfo.u.val_size, NULL, &file, &path) < 0) TEST_ERROR
if(HDstrcmp(file, filename1)) {
H5_FAILED();
puts(" External link file name incorrect");
@@ -2602,8 +2604,8 @@ external_link_query(hid_t fapl, hbool_t new_format)
hid_t gid = (-1); /* Group IDs */
const char *file_name; /* Name of the file the external link points to */
const char *object_name; /* Name of the object the external link points to */
- H5G_stat_t sb; /* Object information */
- H5L_info_t li; /* Link information */
+ H5O_info_t oi; /* Object information */
+ H5L_info_t li; /* Link information */
char filename1[NAME_BUF_SIZE],
filename2[NAME_BUF_SIZE], /* Names of files to externally link across */
query_buf[NAME_BUF_SIZE]; /* Buffer to hold query result */
@@ -2647,12 +2649,12 @@ external_link_query(hid_t fapl, hbool_t new_format)
/* Open first file */
- if((fid=H5Fopen(filename1, H5F_ACC_RDONLY, fapl)) < 0) TEST_ERROR
+ if((fid = H5Fopen(filename1, H5F_ACC_RDONLY, fapl)) < 0) TEST_ERROR
/* Get size of buffer for external link */
if(H5Lget_info(fid, "src", &li, H5P_DEFAULT) < 0) TEST_ERROR
if(li.u.val_size != (1 + (HDstrlen(filename2) + 1) + (HDstrlen("/dst") + 1))) TEST_ERROR
- if (H5L_TYPE_EXTERNAL != li.type) {
+ if(H5L_TYPE_EXTERNAL != li.type) {
H5_FAILED();
puts(" Unexpected link class - should have been an external link");
goto error;
@@ -2665,12 +2667,12 @@ external_link_query(hid_t fapl, hbool_t new_format)
if(H5Lunpack_elink_val(query_buf, li.u.val_size, NULL, &file_name, &object_name) < 0) TEST_ERROR
/* Compare the file and object names */
- if(strcmp(file_name, filename2)) TEST_ERROR
- if(strcmp(object_name, "/dst")) TEST_ERROR
+ if(HDstrcmp(file_name, filename2)) TEST_ERROR
+ if(HDstrcmp(object_name, "/dst")) TEST_ERROR
/* Query information about object that external link points to */
- if (H5Gget_objinfo(fid, "src", TRUE, &sb) < 0) goto error;
- if (H5G_GROUP != sb.type) {
+ if(H5Oget_info(fid, "src", &oi, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
+ if(H5O_TYPE_GROUP != oi.type) {
H5_FAILED();
puts(" Unexpected object type - should have been a group");
goto error;
@@ -2699,10 +2701,10 @@ external_link_query(hid_t fapl, hbool_t new_format)
PASSED();
return 0;
- error:
+error:
H5E_BEGIN_TRY {
- H5Gclose (gid);
- H5Fclose (fid);
+ H5Gclose(gid);
+ H5Fclose(fid);
} H5E_END_TRY;
return -1;
} /* end external_link_query() */
@@ -3339,14 +3341,14 @@ external_link_closing(hid_t fapl, hbool_t new_format)
hid_t fid1 = (-1), fid2 = (-1), fid3 = (-1), fid4=(-1);
hid_t gid=(-1), tid=(-1), tid2=(-1), sid=(-1), did=(-1);
hid_t lcpl_id=(-1);
- hsize_t dims[2];
+ hsize_t dims[2];
char filename1[NAME_BUF_SIZE],
filename2[NAME_BUF_SIZE],
filename3[NAME_BUF_SIZE],
filename4[NAME_BUF_SIZE], /* Names of files to externally link across */
buf[NAME_BUF_SIZE]; /* misc. buffer */
- H5L_info_t li;
- H5G_stat_t sb;
+ H5L_info_t li;
+ H5O_info_t oi;
hobj_ref_t obj_ref;
if(new_format)
@@ -3403,9 +3405,8 @@ external_link_closing(hid_t fapl, hbool_t new_format)
/* Test that getting info works */
if(H5Lget_info(fid1, "elink/elink/elink/type1", &li, H5P_DEFAULT) < 0) TEST_ERROR
if(H5Lget_info(fid1, "elink/elink/elink", &li, H5P_DEFAULT) < 0) TEST_ERROR
- if(H5Gget_objinfo(fid1, "elink/elink/elink/type1", TRUE, &sb) < 0) TEST_ERROR
- if(H5Gget_objinfo(fid1, "elink/elink/elink", TRUE, &sb) < 0) TEST_ERROR
- if(H5Gget_objinfo(fid1, "elink/elink/elink", FALSE, &sb) < 0) TEST_ERROR
+ if(H5Oget_info(fid1, "elink/elink/elink/type1", &oi, H5P_DEFAULT) < 0) TEST_ERROR
+ if(H5Oget_info(fid1, "elink/elink/elink", &oi, H5P_DEFAULT) < 0) TEST_ERROR
/* Test move */
if(H5Lmove(fid1, "elink/elink/elink/group1", fid1,
@@ -3492,7 +3493,7 @@ external_link_closing(hid_t fapl, hbool_t new_format)
if(H5Gclose(gid) < 0) TEST_ERROR
if((gid = H5Gcreate2(fid1, "elink/elink2/group2/group3/group4", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) TEST_ERROR
if(H5Gclose(gid) < 0) TEST_ERROR
- if(H5Gget_objinfo(fid1, "elink/elink2/group2/group3/group4", TRUE, &sb) < 0) TEST_ERROR
+ if(H5Oget_info(fid1, "elink/elink2/group2/group3/group4", &oi, H5P_DEFAULT) < 0) TEST_ERROR
/* Add a few regular groups and a soft link in file2 using intermediate group creation */
if((lcpl_id = H5Pcreate(H5P_LINK_CREATE)) < 0) TEST_ERROR
@@ -4322,9 +4323,8 @@ ud_callbacks(hid_t fapl, hbool_t new_format)
{
hid_t fid = (-1); /* File ID */
hid_t gid = (-1); /* Group ID */
- hid_t lcpl = (-1); /* Link Creation PL */
- H5G_stat_t sb; /* Object information */
- H5L_info_t li; /* Link information */
+ hid_t lcpl = (-1); /* Link Creation PL */
+ H5L_info_t li; /* Link information */
char ud_target_name[] = UD_CB_TARGET; /* Link target name */
char filename[NAME_BUF_SIZE];
char query_buf[NAME_BUF_SIZE];
@@ -4422,8 +4422,6 @@ ud_callbacks(hid_t fapl, hbool_t new_format)
if(H5Lget_info(fid, UD_CB_LINK_NAME, &li, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
if(li.u.val_size != 0) TEST_ERROR
if(li.type != UD_CB_TYPE) TEST_ERROR
- if(H5Gget_objinfo(fid, UD_CB_LINK_NAME, FALSE, &sb) < 0) FAIL_STACK_ERROR
- if(sb.type != H5G_UDLINK) TEST_ERROR
/* Unregister the UD hard links */
if(H5Lunregister(UD_HARD_TYPE) < 0) FAIL_STACK_ERROR
@@ -4442,8 +4440,8 @@ error:
} H5E_END_TRY;
return -1;
} /* end ud_callbacks() */
-
+
/*-------------------------------------------------------------------------
* Function: lapl_udata
*
@@ -5176,9 +5174,9 @@ linkinfo(hid_t fapl, hbool_t new_format)
char filename[NAME_BUF_SIZE];
if(new_format)
- TESTING("link type field in H5Gget_objinfo (w/new group format)")
+ TESTING("link type field in H5Lget_info (w/new group format)")
else
- TESTING("link type field in H5Gget_objinfo")
+ TESTING("link type field in H5Lget_info")
/* Set up filename and create file*/
h5_fixname(FILENAME[0], fapl, filename, sizeof filename);
@@ -6401,18 +6399,14 @@ link_info_by_idx_old(hid_t fapl)
/* Check for creating hard or soft link */
if(hard_link) {
- H5G_stat_t sb; /* Buffer for querying object's info */
+ H5O_info_t oi; /* Buffer for querying object's info */
/* Create group */
if((group_id2 = H5Gcreate2(group_id, objname, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) TEST_ERROR
/* Retrieve group's address on disk */
- if(H5Gget_objinfo(group_id2, ".", FALSE, &sb) < 0) TEST_ERROR
-#if H5_SIZEOF_UINT64_T > H5_SIZEOF_LONG
- objno[u] = (haddr_t)sb.objno[0] | ((haddr_t)sb.objno[1] << (8 * sizeof(long)));
-#else
- objno[u] = (haddr_t)sb.objno[0];
-#endif
+ if(H5Oget_info(group_id2, ".", &oi, H5P_DEFAULT) < 0) TEST_ERROR
+ objno[u] = oi.addr;
/* Close group */
if(H5Gclose(group_id2) < 0) TEST_ERROR
@@ -6895,7 +6889,7 @@ delete_by_idx_old(hid_t fapl)
/* Create several links */
for(u = 0; u < CORDER_NLINKS; u++) {
- H5G_stat_t sb; /* Buffer for querying object's info */
+ H5O_info_t oi; /* Buffer for querying object's info */
/* Make name for link */
sprintf(objname, "filler %02u", u);
@@ -6904,12 +6898,8 @@ delete_by_idx_old(hid_t fapl)
if((group_id2 = H5Gcreate2(group_id, objname, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) TEST_ERROR
/* Retrieve group's address on disk */
- if(H5Gget_objinfo(group_id2, ".", FALSE, &sb) < 0) TEST_ERROR
-#if H5_SIZEOF_UINT64_T > H5_SIZEOF_LONG
- objno[u] = (haddr_t)sb.objno[0] | ((haddr_t)sb.objno[1] << (8 * sizeof(long)));
-#else
- objno[u] = (haddr_t)sb.objno[0];
-#endif
+ if(H5Oget_info(group_id2, ".", &oi, H5P_DEFAULT) < 0) TEST_ERROR
+ objno[u] = oi.addr;
/* Close group */
if(H5Gclose(group_id2) < 0) TEST_ERROR
@@ -6972,7 +6962,7 @@ delete_by_idx_old(hid_t fapl)
/* Create several links */
for(u = 0; u < CORDER_NLINKS; u++) {
- H5G_stat_t sb; /* Buffer for querying object's info */
+ H5O_info_t oi; /* Buffer for querying object's info */
/* Make name for link */
sprintf(objname, "filler %02u", u);
@@ -6981,12 +6971,8 @@ delete_by_idx_old(hid_t fapl)
if((group_id2 = H5Gcreate2(group_id, objname, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) TEST_ERROR
/* Retrieve group's address on disk */
- if(H5Gget_objinfo(group_id2, ".", FALSE, &sb) < 0) TEST_ERROR
-#if H5_SIZEOF_UINT64_T > H5_SIZEOF_LONG
- objno[u] = (haddr_t)sb.objno[0] | ((haddr_t)sb.objno[1] << (8 * sizeof(long)));
-#else
- objno[u] = (haddr_t)sb.objno[0];
-#endif
+ if(H5Oget_info(group_id2, ".", &oi, H5P_DEFAULT) < 0) TEST_ERROR
+ objno[u] = oi.addr;
/* Close group */
if(H5Gclose(group_id2) < 0) TEST_ERROR
@@ -7960,8 +7946,7 @@ open_by_idx_check(hid_t main_group_id, hid_t soft_group_id, hid_t mount_file_id,
{
char mntname[NAME_BUF_SIZE]; /* Link value */
hid_t group_id; /* ID of group to test */
- H5G_stat_t sb; /* Buffer for querying object's info */
- haddr_t obj_addr; /* Address of object in file */
+ H5O_info_t oi; /* Buffer for querying object's info */
haddr_t mnt_root_addr; /* Address of root group in file to mount */
hid_t obj_id; /* ID of object opened */
unsigned mnt_idx; /* Index to mount group on */
@@ -7986,21 +7971,16 @@ open_by_idx_check(hid_t main_group_id, hid_t soft_group_id, hid_t mount_file_id,
if((obj_id = H5Oopen_by_idx(group_id, ".", idx_type, order, (hsize_t)u, H5P_DEFAULT)) < 0) TEST_ERROR
/* Get the object's information */
- if(H5Gget_objinfo(obj_id, ".", FALSE, &sb) < 0) TEST_ERROR
-#if H5_SIZEOF_UINT64_T > H5_SIZEOF_LONG
- obj_addr = (haddr_t)sb.objno[0] | ((haddr_t)sb.objno[1] << (8 * sizeof(long)));
-#else
- obj_addr = (haddr_t)sb.objno[0];
-#endif
+ if(H5Oget_info(obj_id, ".", &oi, H5P_DEFAULT) < 0) TEST_ERROR
/* Check that the object is the correct one */
if(order == H5_ITER_INC) {
- if(H5F_addr_ne(obj_addr, objno[u])) TEST_ERROR
+ if(H5F_addr_ne(oi.addr, objno[u])) TEST_ERROR
} /* end if */
else if(order == H5_ITER_DEC) {
unsigned dec_u = max_links - (u + 1); /* Decreasing mapped index */
- if(H5F_addr_ne(obj_addr, objno[dec_u])) TEST_ERROR
+ if(H5F_addr_ne(oi.addr, objno[dec_u])) TEST_ERROR
} /* end if */
else {
/* XXX: What to do about native order? */
@@ -8017,12 +7997,8 @@ open_by_idx_check(hid_t main_group_id, hid_t soft_group_id, hid_t mount_file_id,
*/
/* Get the address of the root group in the file to mount */
- if(H5Gget_objinfo(mount_file_id, "/", FALSE, &sb) < 0) TEST_ERROR
-#if H5_SIZEOF_UINT64_T > H5_SIZEOF_LONG
- mnt_root_addr = (haddr_t)sb.objno[0] | ((haddr_t)sb.objno[1] << (8 * sizeof(long)));
-#else
- mnt_root_addr = (haddr_t)sb.objno[0];
-#endif
+ if(H5Oget_info(mount_file_id, "/", &oi, H5P_DEFAULT) < 0) TEST_ERROR
+ mnt_root_addr = oi.addr;
/* Mount a file over a group in main group */
mnt_idx = 2;
@@ -8033,16 +8009,11 @@ open_by_idx_check(hid_t main_group_id, hid_t soft_group_id, hid_t mount_file_id,
if((obj_id = H5Oopen_by_idx(group_id, ".", H5_INDEX_NAME, H5_ITER_INC, (hsize_t)mnt_idx, H5P_DEFAULT)) < 0) TEST_ERROR
/* Get the object's information */
- if(H5Gget_objinfo(obj_id, ".", FALSE, &sb) < 0) TEST_ERROR
-#if H5_SIZEOF_UINT64_T > H5_SIZEOF_LONG
- obj_addr = (haddr_t)sb.objno[0] | ((haddr_t)sb.objno[1] << (8 * sizeof(long)));
-#else
- obj_addr = (haddr_t)sb.objno[0];
-#endif
+ if(H5Oget_info(obj_id, ".", &oi, H5P_DEFAULT) < 0) TEST_ERROR
/* Check that the object is the root of the mounted file and not in the previous file */
- if(H5F_addr_ne(obj_addr, mnt_root_addr)) TEST_ERROR
- if(H5F_addr_eq(obj_addr, objno[mnt_idx])) TEST_ERROR
+ if(H5F_addr_ne(oi.addr, mnt_root_addr)) TEST_ERROR
+ if(H5F_addr_eq(oi.addr, objno[mnt_idx])) TEST_ERROR
/* Close object */
if(H5Oclose(obj_id) < 0) TEST_ERROR
@@ -8086,7 +8057,7 @@ open_by_idx(hid_t fapl)
hbool_t use_index; /* Use index on creation order values */
unsigned max_compact; /* Maximum # of links to store in group compactly */
unsigned min_dense; /* Minimum # of links to store in group "densely" */
- H5G_stat_t sb; /* Buffer for querying object's info */
+ H5O_info_t oi; /* Buffer for querying object's info */
char filename[NAME_BUF_SIZE];/* File name */
char objname[NAME_BUF_SIZE]; /* Object name */
char valname[NAME_BUF_SIZE]; /* Link value */
@@ -8189,12 +8160,8 @@ open_by_idx(hid_t fapl)
if((group_id2 = H5Gcreate2(group_id, objname, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) TEST_ERROR
/* Retrieve group's address on disk */
- if(H5Gget_objinfo(group_id2, ".", FALSE, &sb) < 0) TEST_ERROR
-#if H5_SIZEOF_UINT64_T > H5_SIZEOF_LONG
- objno[u] = (haddr_t)sb.objno[0] | ((haddr_t)sb.objno[1] << (8 * sizeof(long)));
-#else
- objno[u] = (haddr_t)sb.objno[0];
-#endif
+ if(H5Oget_info(group_id2, ".", &oi, H5P_DEFAULT) < 0) TEST_ERROR
+ objno[u] = oi.addr;
/* Close group created */
if(H5Gclose(group_id2) < 0) TEST_ERROR
@@ -8228,12 +8195,8 @@ open_by_idx(hid_t fapl)
if((group_id2 = H5Gcreate2(group_id, objname, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) TEST_ERROR
/* Retrieve group's address on disk */
- if(H5Gget_objinfo(group_id2, ".", FALSE, &sb) < 0) TEST_ERROR
-#if H5_SIZEOF_UINT64_T > H5_SIZEOF_LONG
- objno[u] = (haddr_t)sb.objno[0] | ((haddr_t)sb.objno[1] << (8 * sizeof(long)));
-#else
- objno[u] = (haddr_t)sb.objno[0];
-#endif
+ if(H5Oget_info(group_id2, ".", &oi, H5P_DEFAULT) < 0) TEST_ERROR
+ objno[u] = oi.addr;
/* Close group created */
if(H5Gclose(group_id2) < 0) TEST_ERROR
@@ -8319,7 +8282,7 @@ open_by_idx_old(hid_t fapl)
hid_t group_id = (-1); /* Group ID */
hid_t soft_group_id = (-1); /* Group ID for soft links */
H5_iter_order_t order; /* Order within in the index */
- H5G_stat_t sb; /* Buffer for querying object's info */
+ H5O_info_t oi; /* Buffer for querying object's info */
char filename[NAME_BUF_SIZE];/* File name */
char objname[NAME_BUF_SIZE]; /* Object name */
char valname[NAME_BUF_SIZE]; /* Link value */
@@ -8374,12 +8337,8 @@ open_by_idx_old(hid_t fapl)
if((group_id2 = H5Gcreate2(group_id, objname, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) TEST_ERROR
/* Retrieve group's address on disk */
- if(H5Gget_objinfo(group_id2, ".", FALSE, &sb) < 0) TEST_ERROR
-#if H5_SIZEOF_UINT64_T > H5_SIZEOF_LONG
- objno[u] = (haddr_t)sb.objno[0] | ((haddr_t)sb.objno[1] << (8 * sizeof(long)));
-#else
- objno[u] = (haddr_t)sb.objno[0];
-#endif
+ if(H5Oget_info(group_id2, ".", &oi, H5P_DEFAULT) < 0) TEST_ERROR
+ objno[u] = oi.addr;
/* Close group created */
if(H5Gclose(group_id2) < 0) TEST_ERROR
diff --git a/test/mount.c b/test/mount.c
index 028f92b..f68589d 100644
--- a/test/mount.c
+++ b/test/mount.c
@@ -254,7 +254,7 @@ static int
test_hide(hid_t fapl)
{
hid_t file1 = -1, file2 = -1, grp = -1;
- H5G_stat_t sb1, sb2;
+ H5O_info_t oi1, oi2;
char filename1[1024], filename2[1024];
TESTING("name hiding under mount point");
@@ -266,7 +266,7 @@ test_hide(hid_t fapl)
FAIL_STACK_ERROR
/* Get information about file1:/mnt1/file1 for later */
- if(H5Gget_objinfo(file1, "/mnt1/file1", TRUE, &sb1) < 0) FAIL_STACK_ERROR
+ if(H5Oget_info(file1, "/mnt1/file1", &oi1, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
/* Build the virtual file */
if(H5Fmount(file1, "/mnt1", file2, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
@@ -285,8 +285,8 @@ test_hide(hid_t fapl)
* The original objects under file1:/mnt1 are still accessible by their
* other names. This is a rather stupid test but demonstrates a point.
*/
- if(H5Gget_objinfo(file1, "/file1", TRUE, &sb2) < 0) FAIL_STACK_ERROR
- if(HDmemcmp(&sb1.fileno, &sb2.fileno, sizeof(sb1.fileno)) || HDmemcmp(&sb1.objno, &sb2.objno, sizeof(sb1.objno))) {
+ if(H5Oget_info(file1, "/file1", &oi2, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
+ if(oi1.fileno != oi2.fileno || H5F_addr_ne(oi1.addr, oi2.addr)) {
H5_FAILED();
puts(" Hard link failed for hidden object.");
TEST_ERROR
@@ -331,7 +331,7 @@ static int
test_assoc(hid_t fapl)
{
hid_t file1 = -1, file2 = -1;
- H5G_stat_t sb1, sb2;
+ H5O_info_t oi1, oi2;
char filename1[1024], filename2[1024];
TESTING("mount point open");
@@ -344,7 +344,7 @@ test_assoc(hid_t fapl)
FAIL_STACK_ERROR
/* Get information about the root of file2 */
- if(H5Gget_objinfo(file2, "/", TRUE, &sb1) < 0) FAIL_STACK_ERROR
+ if(H5Oget_info(file2, "/", &oi1, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
/* Create the virtual file */
if(H5Fmount(file1, "/mnt1", file2, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
@@ -353,8 +353,8 @@ test_assoc(hid_t fapl)
* Get info about the mount point -- should be the same as the root group
* of file2.
*/
- if(H5Gget_objinfo(file1, "/mnt1", TRUE, &sb2) < 0) FAIL_STACK_ERROR
- if(HDmemcmp(&sb1.fileno, &sb2.fileno, sizeof(sb1.fileno)) || HDmemcmp(&sb1.objno, &sb2.objno, sizeof(sb1.objno))) {
+ if(H5Oget_info(file1, "/mnt1", &oi2, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
+ if(oi1.fileno != oi2.fileno || H5F_addr_ne(oi1.addr, oi2.addr)) {
H5_FAILED();
puts(" Association failed.");
TEST_ERROR
@@ -523,6 +523,7 @@ static int
test_preopen(hid_t fapl)
{
hid_t file1 = -1, file2 = -1, grp = -1;
+ H5O_info_t oinfo;
char filename1[1024], filename2[1024];
TESTING("preopening objects under the mount point");
@@ -540,7 +541,7 @@ test_preopen(hid_t fapl)
if(H5Fmount(file1, "/mnt1", file2, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
/* Now access the thing we previously opened */
- if(H5Gget_objinfo(grp, ".", TRUE, NULL) < 0) FAIL_STACK_ERROR
+ if(H5Oget_info(grp, ".", &oinfo, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
/* Shut down */
if(H5Funmount(file1, "/mnt1") < 0) FAIL_STACK_ERROR
@@ -584,6 +585,7 @@ test_postopen(hid_t fapl)
{
hid_t file1 = -1, file2 = -1, grp = -1;
+ H5O_info_t oinfo;
char filename1[1024], filename2[1024];
TESTING("open object access after unmount");
@@ -603,10 +605,10 @@ test_postopen(hid_t fapl)
if(H5Funmount(file1, "/mnt1") < 0) FAIL_STACK_ERROR
/* Now access the thing we previously opened */
- if(H5Gget_objinfo(grp, ".", TRUE, NULL) < 0) FAIL_STACK_ERROR
+ if(H5Oget_info(grp, ".", &oinfo, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
/* Try accessing it from the file */
- if(H5Gget_objinfo(file2, "/file2", TRUE, NULL) < 0) FAIL_STACK_ERROR
+ if(H5Oget_info(file2, "/file2", &oinfo, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
/* Shut down */
if(H5Gclose(grp) < 0) FAIL_STACK_ERROR
@@ -648,8 +650,9 @@ static int
test_unlink(hid_t fapl)
{
hid_t file1 = -1, file2 = -1, mnt = -1, root = -1;
- herr_t status;
+ H5O_info_t oinfo;
char filename1[1024], filename2[1024];
+ herr_t status;
TESTING("mount point unlinking");
h5_fixname(FILENAME[0], fapl, filename1, sizeof filename1);
@@ -675,12 +678,12 @@ test_unlink(hid_t fapl)
* before the H5Fmount() and thus refers to the mount point itself rather
* than the group mounted there.
*/
- if(H5Gget_objinfo(file1, "/mnt_unlink/file2", TRUE, NULL) < 0) FAIL_STACK_ERROR
- if(H5Gget_objinfo(mnt, "/mnt_unlink/file2", TRUE, NULL) < 0) FAIL_STACK_ERROR
- if(H5Gget_objinfo(root, "/mnt_unlink/file2", TRUE, NULL) < 0) FAIL_STACK_ERROR
- if(H5Gget_objinfo(root, "file2", TRUE, NULL) < 0) FAIL_STACK_ERROR
+ if(H5Oget_info(file1, "/mnt_unlink/file2", &oinfo, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
+ if(H5Oget_info(mnt, "/mnt_unlink/file2", &oinfo, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
+ if(H5Oget_info(root, "/mnt_unlink/file2", &oinfo, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
+ if(H5Oget_info(root, "file2", &oinfo, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
H5E_BEGIN_TRY {
- status = H5Gget_objinfo(mnt, "file2", TRUE, NULL);
+ status = H5Oget_info(mnt, "file2", &oinfo, H5P_DEFAULT);
} H5E_END_TRY;
if(status >= 0) {
H5_FAILED();
@@ -695,9 +698,9 @@ test_unlink(hid_t fapl)
* We should still be able to get to "/file2" of file2 by starting at
* `root' which is still open, but not by name.
*/
- if(H5Gget_objinfo(root, "file2", TRUE, NULL) < 0) FAIL_STACK_ERROR
+ if(H5Oget_info(root, "file2", &oinfo, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
H5E_BEGIN_TRY {
- status = H5Gget_objinfo(mnt, "file2", TRUE, NULL);
+ status = H5Oget_info(mnt, "file2", &oinfo, H5P_DEFAULT);
} H5E_END_TRY;
if(status >= 0) {
H5_FAILED();
@@ -705,7 +708,7 @@ test_unlink(hid_t fapl)
TEST_ERROR
} /* end if */
H5E_BEGIN_TRY {
- status = H5Gget_objinfo(file2, "/mnt_unlink/file2", TRUE, NULL);
+ status = H5Oget_info(file2, "/mnt_unlink/file2", &oinfo, H5P_DEFAULT);
} H5E_END_TRY;
if(status >= 0) {
H5_FAILED();
@@ -776,6 +779,7 @@ static int
test_mvmpt(hid_t fapl)
{
hid_t file1 = -1, file2 = -1;
+ H5O_info_t oinfo;
char filename1[1024], filename2[1024];
TESTING("mount point renaming");
@@ -792,7 +796,7 @@ test_mvmpt(hid_t fapl)
if(H5Lmove(file1, "/mnt_move_a", H5L_SAME_LOC, "/mnt_move_b", H5P_DEFAULT, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
/* Access something under the new name */
- if(H5Gget_objinfo(file1, "/mnt_move_b/file2", TRUE, NULL) < 0) FAIL_STACK_ERROR
+ if(H5Oget_info(file1, "/mnt_move_b/file2", &oinfo, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
/* Shut down */
if(H5Funmount(file1, "/mnt_move_b") < 0) FAIL_STACK_ERROR
@@ -921,6 +925,7 @@ static int
test_uniformity(hid_t fapl)
{
hid_t file1 = -1, file2 = -1;
+ H5O_info_t oinfo;
char filename1[1024], filename2[1024];
TESTING("file handle uniformity");
@@ -934,18 +939,18 @@ test_uniformity(hid_t fapl)
if(H5Fmount(file1, "/mnt1", file2, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
/* Access some things from the file1 handle */
- if(H5Gget_objinfo(file1, "/", TRUE, NULL) < 0) FAIL_STACK_ERROR
- if(H5Gget_objinfo(file1, "/mnt1", TRUE, NULL) < 0) FAIL_STACK_ERROR
- if(H5Gget_objinfo(file1, "mnt1", TRUE, NULL) < 0) FAIL_STACK_ERROR
- if(H5Gget_objinfo(file1, "/mnt1/file2", TRUE, NULL) < 0) FAIL_STACK_ERROR
- if(H5Gget_objinfo(file1, "mnt1/file2", TRUE, NULL) < 0) FAIL_STACK_ERROR
+ if(H5Oget_info(file1, "/", &oinfo, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
+ if(H5Oget_info(file1, "/mnt1", &oinfo, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
+ if(H5Oget_info(file1, "mnt1", &oinfo, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
+ if(H5Oget_info(file1, "/mnt1/file2", &oinfo, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
+ if(H5Oget_info(file1, "mnt1/file2", &oinfo, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
/* Access the same things from the file2 handle */
- if(H5Gget_objinfo(file2, "/", TRUE, NULL) < 0) FAIL_STACK_ERROR
- if(H5Gget_objinfo(file2, "/mnt1", TRUE, NULL) < 0) FAIL_STACK_ERROR
- if(H5Gget_objinfo(file2, "mnt1", TRUE, NULL) < 0) FAIL_STACK_ERROR
- if(H5Gget_objinfo(file2, "/mnt1/file2", TRUE, NULL) < 0) FAIL_STACK_ERROR
- if(H5Gget_objinfo(file2, "mnt1/file2", TRUE, NULL) < 0) FAIL_STACK_ERROR
+ if(H5Oget_info(file2, "/", &oinfo, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
+ if(H5Oget_info(file2, "/mnt1", &oinfo, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
+ if(H5Oget_info(file2, "mnt1", &oinfo, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
+ if(H5Oget_info(file2, "/mnt1/file2", &oinfo, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
+ if(H5Oget_info(file2, "mnt1/file2", &oinfo, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
/* Shut down */
if(H5Funmount(file1, "/mnt1") < 0) FAIL_STACK_ERROR
@@ -984,6 +989,7 @@ static int
test_close(hid_t fapl)
{
hid_t file1 = -1, file2 = -1;
+ H5O_info_t oinfo;
char filename1[1024], filename2[1024];
TESTING("file handle close");
@@ -1001,7 +1007,7 @@ test_close(hid_t fapl)
* still accessible through the file2 handle.
*/
if(H5Fclose(file1) < 0) FAIL_STACK_ERROR
- if(H5Gget_objinfo(file2, "/mnt1", TRUE, NULL) < 0) {
+ if(H5Oget_info(file2, "/mnt1", &oinfo, H5P_DEFAULT) < 0) {
H5_FAILED();
puts(" File1 contents are not accessible!");
TEST_ERROR
@@ -1022,7 +1028,7 @@ test_close(hid_t fapl)
* Close file2. It is not actually closed because it's a child of file1.
*/
if(H5Fclose(file2) < 0) FAIL_STACK_ERROR
- if(H5Gget_objinfo(file1, "/mnt1/file2", TRUE, NULL) < 0) FAIL_STACK_ERROR
+ if(H5Oget_info(file1, "/mnt1/file2", &oinfo, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
if(H5Fclose(file1) < 0) FAIL_STACK_ERROR
/* Check that all file IDs have been closed */
@@ -2255,9 +2261,10 @@ test_fcdegree_strong(hid_t fapl)
hid_t fid1 = -1, fid2 = -1; /* File IDs */
hid_t gidA = -1, gidM = -1, gidAM = -1; /* Group IDs */
hid_t fapl_id = -1; /* FAPL IDs */
- herr_t ret; /* Generic return value */
+ H5O_info_t oinfo;
char filename1[1024],
filename2[1024]; /* Name of files to mount */
+ herr_t ret; /* Generic return value */
TESTING("'strong' file close degree");
@@ -2323,9 +2330,9 @@ test_fcdegree_strong(hid_t fapl)
TEST_ERROR
/* Check that objects are still open */
- if (H5Gget_objinfo(gidA, ".", TRUE, NULL) < 0)
+ if(H5Oget_info(gidA, ".", &oinfo, H5P_DEFAULT) < 0)
TEST_ERROR
- if (H5Gget_objinfo(gidAM, ".", TRUE, NULL) < 0)
+ if(H5Oget_info(gidAM, ".", &oinfo, H5P_DEFAULT) < 0)
TEST_ERROR
/* Close file #2 (should close open objects also) */
@@ -2334,12 +2341,12 @@ test_fcdegree_strong(hid_t fapl)
/* Check that objects are closed */
H5E_BEGIN_TRY {
- ret = H5Gget_objinfo(gidA, ".", TRUE, NULL);
+ ret = H5Oget_info(gidA, ".", &oinfo, H5P_DEFAULT);
} H5E_END_TRY;
if(ret >= 0)
TEST_ERROR
H5E_BEGIN_TRY {
- ret = H5Gget_objinfo(gidAM, ".", TRUE, NULL);
+ ret = H5Oget_info(gidAM, ".", &oinfo, H5P_DEFAULT);
} H5E_END_TRY;
if(ret >= 0)
TEST_ERROR
diff --git a/test/mtime.c b/test/mtime.c
index 0d66e12..d49dd5a 100644
--- a/test/mtime.c
+++ b/test/mtime.c
@@ -63,7 +63,7 @@ main(void)
hsize_t size[1] = {2};
time_t now;
struct tm *tm;
- H5G_stat_t sb1, sb2;
+ H5O_info_t oi1, oi2;
signed char buf1[32], buf2[32];
char filename[1024];
@@ -74,51 +74,51 @@ main(void)
/* Create the file, create a dataset, then close the file */
h5_fixname(FILENAME[0], fapl, filename, sizeof filename);
- if ((file=H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl))<0)
+ if((file = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0)
TEST_ERROR;
- if ((space=H5Screate_simple(1, size, NULL))<0) TEST_ERROR;
- if ((dset=H5Dcreate(file, "dset", H5T_NATIVE_SCHAR, space, H5P_DEFAULT))<0)
+ if((space = H5Screate_simple(1, size, NULL)) < 0) TEST_ERROR;
+ if((dset = H5Dcreate(file, "dset", H5T_NATIVE_SCHAR, space, H5P_DEFAULT)) < 0)
TEST_ERROR;
- now = time(NULL);
- if (H5Dclose(dset)<0) TEST_ERROR;
- if (H5Sclose(space)<0) TEST_ERROR;
- if (H5Fclose(file)<0) TEST_ERROR;
+ now = HDtime(NULL);
+ if(H5Dclose(dset) < 0) TEST_ERROR;
+ if(H5Sclose(space) < 0) TEST_ERROR;
+ if(H5Fclose(file) < 0) TEST_ERROR;
/*
- * Open the file and get the modification time. We'll test the new
- * H5Gget_objinfo() arguments too: being able to stat something without
- * knowing its name.
- */
+ * Open the file and get the modification time. We'll test the
+ * H5Oget_info() arguments too: being able to stat something without
+ * knowing its name.
+ */
h5_fixname(FILENAME[0], fapl, filename, sizeof filename);
- if ((file = H5Fopen(filename, H5F_ACC_RDONLY, fapl))<0) TEST_ERROR;
- if (H5Gget_objinfo(file, "dset", TRUE, &sb1)<0) TEST_ERROR;
- if ((dset=H5Dopen(file, "dset"))<0) TEST_ERROR;
- if (H5Gget_objinfo(dset, ".", TRUE, &sb2)<0) TEST_ERROR;
- if (H5Dclose(dset)<0) TEST_ERROR;
- if (H5Fclose(file)<0) TEST_ERROR;
-
- /* Compare times from the two ways of calling H5Gget_objinfo() */
- if (HDmemcmp(&sb1.objno, &sb2.objno, sizeof(sb1.objno)) || sb1.mtime!=sb2.mtime) {
+ if((file = H5Fopen(filename, H5F_ACC_RDONLY, fapl)) < 0) TEST_ERROR;
+ if(H5Oget_info(file, "dset", &oi1, H5P_DEFAULT) < 0) TEST_ERROR;
+ if((dset = H5Dopen(file, "dset")) < 0) TEST_ERROR;
+ if(H5Oget_info(dset, ".", &oi2, H5P_DEFAULT) < 0) TEST_ERROR;
+ if(H5Dclose(dset) < 0) TEST_ERROR;
+ if(H5Fclose(file) < 0) TEST_ERROR;
+
+ /* Compare addresses & times from the two ways of calling H5Oget_info() */
+ if(oi1.addr != oi2.addr || oi1.mtime != oi2.mtime) {
H5_FAILED();
- puts(" Calling H5Gget_objinfo() with the dataset ID returned");
+ puts(" Calling H5Oget_info() with the dataset ID returned");
puts(" different values than calling it with a file and dataset");
puts(" name.");
goto error;
}
/* Compare times -- they must be within 60 seconds of one another */
- if (0==sb1.mtime) {
+ if(0 == oi1.mtime) {
SKIPPED();
puts(" The modification time could not be decoded on this OS.");
puts(" Modification times will be mantained in the file but");
puts(" cannot be queried on this system. See H5O_mtime_decode().");
return 0;
- } else if (fabs(HDdifftime(now, sb1.mtime))>60.0) {
+ } else if(HDfabs(HDdifftime(now, oi1.mtime)) > 60.0) {
H5_FAILED();
- tm = localtime(&(sb1.mtime));
- strftime((char*)buf1, sizeof buf1, "%Y-%m-%d %H:%M:%S", tm);
- tm = localtime(&now);
- strftime((char*)buf2, sizeof buf2, "%Y-%m-%d %H:%M:%S", tm);
+ tm = HDlocaltime(&(oi1.mtime));
+ HDstrftime((char*)buf1, sizeof buf1, "%Y-%m-%d %H:%M:%S", tm);
+ tm = HDlocaltime(&now);
+ HDstrftime((char*)buf2, sizeof buf2, "%Y-%m-%d %H:%M:%S", tm);
printf(" got: %s\n ans: %s\n", buf1, buf2);
goto error;
}
@@ -131,32 +131,33 @@ main(void)
TESTING("accessing old modification time messages");
{
- char testfile[512]="";
- char *srcdir = HDgetenv("srcdir");
- if (srcdir && ((HDstrlen(srcdir) + strlen(TESTFILE1) + 1) < sizeof(testfile))){
- HDstrcpy(testfile, srcdir);
- HDstrcat(testfile, "/");
- }
- HDstrcat(testfile, TESTFILE1);
- file = H5Fopen(testfile, H5F_ACC_RDONLY, H5P_DEFAULT);
- if (file >= 0){
- if(H5Gget_objinfo(file, "/Dataset1", TRUE, &sb1)<0)
- TEST_ERROR;
- if(sb1.mtime!=MTIME1) {
+ char testfile[512]="";
+ char *srcdir = HDgetenv("srcdir");
+
+ if(srcdir && ((HDstrlen(srcdir) + strlen(TESTFILE1) + 1) < sizeof(testfile))){
+ HDstrcpy(testfile, srcdir);
+ HDstrcat(testfile, "/");
+ }
+ HDstrcat(testfile, TESTFILE1);
+ file = H5Fopen(testfile, H5F_ACC_RDONLY, H5P_DEFAULT);
+ if(file >= 0){
+ if(H5Oget_info(file, "/Dataset1", &oi1, H5P_DEFAULT) < 0)
+ TEST_ERROR;
+ if(oi1.mtime != MTIME1) {
+ H5_FAILED();
+ /* If this fails, examine H5Omtime.c. Modification time is very
+ * system dependant (e.g., on Windows DST must be hardcoded). */
+ puts(" Old modification time incorrect");
+ goto error;
+ }
+ if(H5Fclose(file) < 0) TEST_ERROR;
+ }
+ else {
H5_FAILED();
- /* If this fails, examine H5Omtime.c. Modification time is very
- * system dependant (e.g., on Windows DST must be hardcoded). */
- puts(" Old modification time incorrect");
+ printf("***cannot open the pre-created old modification test file (%s)\n",
+ testfile);
goto error;
- }
- if (H5Fclose(file)<0) TEST_ERROR;
- }
- else {
- H5_FAILED();
- printf("***cannot open the pre-created old modification test file (%s)\n",
- testfile);
- goto error;
- } /* end else */
+ } /* end else */
}
PASSED();
@@ -166,30 +167,31 @@ main(void)
TESTING("accessing new modification time messages");
{
- char testfile[512]="";
- char *srcdir = HDgetenv("srcdir");
- if (srcdir && ((HDstrlen(srcdir) + strlen(TESTFILE2) + 1) < sizeof(testfile))){
- HDstrcpy(testfile, srcdir);
- HDstrcat(testfile, "/");
- }
- HDstrcat(testfile, TESTFILE2);
- file = H5Fopen(testfile, H5F_ACC_RDONLY, H5P_DEFAULT);
- if (file >= 0){
- if(H5Gget_objinfo(file, "/Dataset1", TRUE, &sb2)<0)
- TEST_ERROR;
- if(sb2.mtime!=MTIME2) {
- H5_FAILED();
- puts(" Modification time incorrect.");
- goto error;
+ char testfile[512]="";
+ char *srcdir = HDgetenv("srcdir");
+
+ if(srcdir && ((HDstrlen(srcdir) + strlen(TESTFILE2) + 1) < sizeof(testfile))){
+ HDstrcpy(testfile, srcdir);
+ HDstrcat(testfile, "/");
}
- if (H5Fclose(file)<0) TEST_ERROR;
- }
- else {
- H5_FAILED();
- printf("***cannot open the pre-created old modification test file (%s)\n",
- testfile);
- goto error;
- } /* end else */
+ HDstrcat(testfile, TESTFILE2);
+ file = H5Fopen(testfile, H5F_ACC_RDONLY, H5P_DEFAULT);
+ if(file >= 0){
+ if(H5Oget_info(file, "/Dataset1", &oi2, H5P_DEFAULT) < 0)
+ TEST_ERROR;
+ if(oi2.mtime != MTIME2) {
+ H5_FAILED();
+ puts(" Modification time incorrect.");
+ goto error;
+ }
+ if(H5Fclose(file) < 0) TEST_ERROR;
+ }
+ else {
+ H5_FAILED();
+ printf("***cannot open the pre-created old modification test file (%s)\n",
+ testfile);
+ goto error;
+ } /* end else */
}
PASSED();
@@ -199,9 +201,7 @@ main(void)
return 0;
/* Something broke */
- error:
+error:
return 1;
}
-
-
diff --git a/test/objcopy.c b/test/objcopy.c
index 331add3..88ee026 100755
--- a/test/objcopy.c
+++ b/test/objcopy.c
@@ -147,13 +147,13 @@ compare_groups(hid_t gid, hid_t gid2, hid_t pid, int depth, unsigned copy_flags)
*-------------------------------------------------------------------------
*/
static void
-addr_insert(H5G_stat_t *sb)
+addr_insert(H5O_info_t *oi)
{
size_t n;
/* Don't add it if the link count is 1 because such an object can only
* be encountered once. */
- if(sb->nlink < 2)
+ if(oi->rc < 2)
return;
/* Extend the table */
@@ -164,11 +164,7 @@ addr_insert(H5G_stat_t *sb)
/* Insert the entry */
n = idtab_g.nobjs++;
-#if H5_SIZEOF_UINT64_T > H5_SIZEOF_LONG
- idtab_g.obj[n] = (haddr_t)sb->objno[0] | ((haddr_t)sb->objno[1] << (8 * sizeof(long)));
-#else
- idtab_g.obj[n] = (haddr_t)sb->objno[0];
-#endif
+ idtab_g.obj[n] = oi->addr;
} /* end addr_insert() */
@@ -187,21 +183,16 @@ addr_insert(H5G_stat_t *sb)
*-------------------------------------------------------------------------
*/
static hbool_t
-addr_lookup(H5G_stat_t *sb)
+addr_lookup(H5O_info_t *oi)
{
- haddr_t obj_addr; /* Object's address in the file */
size_t n;
- if(sb->nlink<2) return FALSE; /*only one link possible*/
+ if(oi->rc < 2) return FALSE; /*only one link possible*/
-#if H5_SIZEOF_UINT64_T > H5_SIZEOF_LONG
- obj_addr = (haddr_t)sb->objno[0] | ((haddr_t)sb->objno[1] << (8 * sizeof(long)));
-#else
- obj_addr = (haddr_t)sb->objno[0];
-#endif
for(n = 0; n < idtab_g.nobjs; n++)
- if(idtab_g.obj[n] == obj_addr)
+ if(H5F_addr_eq(idtab_g.obj[n], oi->addr))
return TRUE;
+
return FALSE;
} /* end addr_lookup() */
@@ -897,11 +888,12 @@ compare_data(hid_t parent1, hid_t parent2, hid_t pid, hid_t tid, size_t nelmts,
if((obj2_id = H5Rdereference(parent2, H5R_OBJECT, ref_buf2)) < 0) TEST_ERROR
/* break the infinite loop when the ref_object points to itself */
- if (obj_owner > 0) {
- H5G_stat_t stat1, stat2;
- if (H5Gget_objinfo(obj_owner, ".", 0, &stat1) < 0) TEST_ERROR
- if (H5Gget_objinfo(obj1_id, ".", 0, &stat2) < 0) TEST_ERROR
- if ( (stat1.objno[0] == stat2.objno[0]) && (stat1.objno[1] == stat2.objno[1]) ) {
+ if(obj_owner > 0) {
+ H5O_info_t oinfo1, oinfo2;
+
+ if(H5Oget_info(obj_owner, ".", &oinfo1, H5P_DEFAULT) < 0) TEST_ERROR
+ if(H5Oget_info(obj1_id, ".", &oinfo2, H5P_DEFAULT) < 0) TEST_ERROR
+ if(H5F_addr_eq(oinfo1.addr, oinfo2.addr)) {
if(H5Oclose(obj1_id) < 0) TEST_ERROR
if(H5Oclose(obj2_id) < 0) TEST_ERROR
return TRUE;
@@ -953,12 +945,12 @@ compare_data(hid_t parent1, hid_t parent2, hid_t pid, hid_t tid, size_t nelmts,
if((obj2_id = H5Rdereference(parent2, H5R_DATASET_REGION, ref_buf2)) < 0) TEST_ERROR
/* break the infinite loop when the ref_object points to itself */
- if (obj_owner > 0) {
- H5G_stat_t stat1, stat2;
- if (H5Gget_objinfo(obj_owner, ".", 0, &stat1) < 0) TEST_ERROR
- if (H5Gget_objinfo(obj1_id, ".", 0, &stat2) < 0) TEST_ERROR
+ if(obj_owner > 0) {
+ H5O_info_t oinfo1, oinfo2;
- if ( (stat1.objno[0] == stat2.objno[0]) && (stat1.objno[1] == stat2.objno[1]) ) {
+ if(H5Oget_info(obj_owner, ".", &oinfo1, H5P_DEFAULT) < 0) TEST_ERROR
+ if(H5Oget_info(obj1_id, ".", &oinfo2, H5P_DEFAULT) < 0) TEST_ERROR
+ if(H5F_addr_eq(oinfo1.addr, oinfo2.addr)) {
if(H5Oclose(obj1_id) < 0) TEST_ERROR
if(H5Oclose(obj2_id) < 0) TEST_ERROR
return TRUE;
@@ -1270,10 +1262,8 @@ compare_groups(hid_t gid, hid_t gid2, hid_t pid, int depth, unsigned copy_flags)
char objname2[NAME_BUF_SIZE]; /* Name of object in group */
H5G_obj_t objtype; /* Type of object in group */
H5G_obj_t objtype2; /* Type of object in group */
- H5G_stat_t objstat; /* Object info */
- H5G_stat_t objstat2; /* Object info */
- H5L_info_t linfo; /* Link information */
- H5L_info_t linfo2; /* Link information */
+ H5L_info_t linfo; /* Link information */
+ H5L_info_t linfo2; /* Link information */
hid_t oid, oid2; /* IDs of objects within group */
/* Loop over contents of groups */
@@ -1288,12 +1278,22 @@ compare_groups(hid_t gid, hid_t gid2, hid_t pid, int depth, unsigned copy_flags)
if((objtype2 = H5Gget_objtype_by_idx(gid2, idx)) < 0) TEST_ERROR
if(objtype != objtype2) TEST_ERROR
- /* Compare some pieces of the H5G_stat_t */
- if(H5Gget_objinfo(gid, objname, FALSE, &objstat) < 0) TEST_ERROR
- if(H5Gget_objinfo(gid2, objname2, FALSE, &objstat2) < 0) TEST_ERROR
- if(objstat.type != objstat2.type) TEST_ERROR
- if(objstat.type != H5G_LINK && objstat.type != H5G_UDLINK) {
- if(objstat.nlink != objstat2.nlink) TEST_ERROR
+ /* Get link info */
+ if(H5Lget_info(gid, objname, &linfo, H5P_DEFAULT) < 0) TEST_ERROR
+ if(H5Lget_info(gid2, objname2, &linfo2, H5P_DEFAULT) < 0) TEST_ERROR
+ if(linfo.type != linfo2.type) TEST_ERROR
+
+ /* Extra checks for "real" objects */
+ if(linfo.type == H5L_TYPE_HARD) {
+ H5O_info_t oinfo; /* Object info */
+ H5O_info_t oinfo2; /* Object info */
+
+ /* Compare some pieces of the object info */
+ if(H5Oget_info(gid, objname, &oinfo, H5P_DEFAULT) < 0) TEST_ERROR
+ if(H5Oget_info(gid2, objname2, &oinfo2, H5P_DEFAULT) < 0) TEST_ERROR
+
+ if(oinfo.type != oinfo2.type) TEST_ERROR
+ if(oinfo.rc != oinfo2.rc) TEST_ERROR
/* If NULL messages are preserved, the number of messages
* should be the same in the destination.
@@ -1301,22 +1301,18 @@ compare_groups(hid_t gid, hid_t gid2, hid_t pid, int depth, unsigned copy_flags)
* of messages hasn't increased.
*/
if(H5O_COPY_PRESERVE_NULL_FLAG & copy_flags) {
- if(objstat.ohdr.nmesgs != objstat2.ohdr.nmesgs)
+ if(oinfo.hdr.nmesgs != oinfo2.hdr.nmesgs)
;
else
- if(objstat.ohdr.nmesgs < objstat2.ohdr.nmesgs) TEST_ERROR
+ if(oinfo.hdr.nmesgs < oinfo2.hdr.nmesgs) TEST_ERROR
}
- } /* end if */
- /* Get link info */
- if(H5Lget_info(gid, objname, &linfo, H5P_DEFAULT) < 0) TEST_ERROR
- if(H5Lget_info(gid2, objname2, &linfo2, H5P_DEFAULT) < 0) TEST_ERROR
-
- /* Check for object already having been compared */
- if(addr_lookup(&objstat))
- continue;
- else
- addr_insert(&objstat);
+ /* Check for object already having been compared */
+ if(addr_lookup(&oinfo))
+ continue;
+ else
+ addr_insert(&oinfo);
+ } /* end if */
/* Compare objects within group */
switch(objtype) {
@@ -1385,7 +1381,7 @@ compare_groups(hid_t gid, hid_t gid2, hid_t pid, int depth, unsigned copy_flags)
if(H5Lget_val(gid2, objname2, linkval2, (size_t)NAME_BUF_SIZE, H5P_DEFAULT) < 0) TEST_ERROR
/* Compare link udata */
- if(HDmemcmp(linkval, linkval2, objstat.linklen)) TEST_ERROR
+ if(HDmemcmp(linkval, linkval2, linfo.u.val_size)) TEST_ERROR
}
break;
diff --git a/test/stab.c b/test/stab.c
index e3cfa57..368e00e 100644
--- a/test/stab.c
+++ b/test/stab.c
@@ -325,7 +325,7 @@ lifecycle(hid_t fapl2)
unsigned est_num_entries; /* Estimated # of entries in group */
unsigned est_name_len; /* Estimated length of entry name */
unsigned nmsgs; /* Number of messages in group's header */
- H5G_stat_t obj_stat; /* Object info */
+ H5O_info_t oinfo; /* Object info */
char objname[NAME_BUF_SIZE]; /* Object name */
char filename[NAME_BUF_SIZE];
h5_stat_size_t empty_size; /* Size of an empty file */
@@ -416,15 +416,11 @@ lifecycle(hid_t fapl2)
if(H5G_is_new_dense_test(gid) != FALSE) TEST_ERROR
/* Check that the object header is only one chunk and the space has been allocated correctly */
- if(H5Gget_objinfo(gid, ".", FALSE, &obj_stat) < 0) TEST_ERROR
-#ifdef H5_HAVE_LARGE_HSIZET
- if(obj_stat.ohdr.size != 151) TEST_ERROR
-#else /* H5_HAVE_LARGE_HSIZET */
- if(obj_stat.ohdr.size != 131) TEST_ERROR
-#endif /* H5_HAVE_LARGE_HSIZET */
- if(obj_stat.ohdr.free != 0) TEST_ERROR
- if(obj_stat.ohdr.nmesgs != 6) TEST_ERROR
- if(obj_stat.ohdr.nchunks != 1) TEST_ERROR
+ if(H5Oget_info(gid, ".", &oinfo, H5P_DEFAULT) < 0) TEST_ERROR
+ if(oinfo.hdr.space.total != 151) TEST_ERROR
+ if(oinfo.hdr.space.free != 0) TEST_ERROR
+ if(oinfo.hdr.nmesgs != 6) TEST_ERROR
+ if(oinfo.hdr.nchunks != 1) TEST_ERROR
/* Create one more "bottom" group, which should push top group into using a symbol table */
sprintf(objname, LIFECYCLE_BOTTOM_GROUP, u);
@@ -442,15 +438,11 @@ lifecycle(hid_t fapl2)
if(H5G_is_new_dense_test(gid) != TRUE) TEST_ERROR
/* Check that the object header is still one chunk and the space has been allocated correctly */
- if(H5Gget_objinfo(gid, ".", FALSE, &obj_stat) < 0) TEST_ERROR
-#ifdef H5_HAVE_LARGE_HSIZET
- if(obj_stat.ohdr.size != 151) TEST_ERROR
-#else /* H5_HAVE_LARGE_HSIZET */
- if(obj_stat.ohdr.size != 131) TEST_ERROR
-#endif /* H5_HAVE_LARGE_HSIZET */
- if(obj_stat.ohdr.free != 92) TEST_ERROR
- if(obj_stat.ohdr.nmesgs != 3) TEST_ERROR
- if(obj_stat.ohdr.nchunks != 1) TEST_ERROR
+ if(H5Oget_info(gid, ".", &oinfo, H5P_DEFAULT) < 0) TEST_ERROR
+ if(oinfo.hdr.space.total != 151) TEST_ERROR
+ if(oinfo.hdr.space.free != 92) TEST_ERROR
+ if(oinfo.hdr.nmesgs != 3) TEST_ERROR
+ if(oinfo.hdr.nchunks != 1) TEST_ERROR
/* Unlink objects from top group */
while(u >= LIFECYCLE_MIN_DENSE) {
diff --git a/test/tattr.c b/test/tattr.c
index d987994..96f6051 100644
--- a/test/tattr.c
+++ b/test/tattr.c
@@ -1595,9 +1595,9 @@ test_attr_dtype_shared(hid_t fapl)
hid_t space_id; /* Dataspace ID for dataset & attribute */
hid_t type_id; /* Datatype ID for named datatype */
hid_t attr_id; /* Attribute ID */
- int data=8; /* Data to write */
- int rdata=0; /* Read read in */
- H5G_stat_t statbuf; /* Object's information */
+ int data = 8; /* Data to write */
+ int rdata = 0; /* Read read in */
+ H5O_info_t oinfo; /* Object's information */
h5_stat_size_t empty_filesize; /* Size of empty file */
h5_stat_size_t filesize; /* Size of file after modifications */
herr_t ret; /* Generic return value */
@@ -1606,153 +1606,154 @@ test_attr_dtype_shared(hid_t fapl)
MESSAGE(5, ("Testing Shared Datatypes with Attributes\n"));
/* Create a file */
- file_id=H5Fcreate(FILENAME, H5F_ACC_TRUNC, H5P_DEFAULT, fapl);
+ file_id = H5Fcreate(FILENAME, H5F_ACC_TRUNC, H5P_DEFAULT, fapl);
CHECK(file_id, FAIL, "H5Fopen");
/* Close file */
- ret=H5Fclose(file_id);
+ ret = H5Fclose(file_id);
CHECK(ret, FAIL, "H5Fclose");
/* Get size of file */
- empty_filesize=h5_get_file_size(FILENAME);
- if(empty_filesize<0)
- TestErrPrintf("Line %d: file size wrong!\n",__LINE__);
+ empty_filesize = h5_get_file_size(FILENAME);
+ if(empty_filesize < 0)
+ TestErrPrintf("Line %d: file size wrong!\n", __LINE__);
/* Re-open file */
- file_id=H5Fopen(FILENAME,H5F_ACC_RDWR,fapl);
+ file_id = H5Fopen(FILENAME, H5F_ACC_RDWR, fapl);
CHECK(file_id, FAIL, "H5Fopen");
/* Create a datatype to commit and use */
- type_id=H5Tcopy(H5T_NATIVE_INT);
+ type_id = H5Tcopy(H5T_NATIVE_INT);
CHECK(type_id, FAIL, "H5Tcopy");
/* Commit datatype to file */
- ret=H5Tcommit(file_id,TYPE1_NAME,type_id);
+ ret = H5Tcommit(file_id, TYPE1_NAME, type_id);
CHECK(ret, FAIL, "H5Tcommit");
/* Check reference count on named datatype */
- ret=H5Gget_objinfo(file_id,TYPE1_NAME,0,&statbuf);
- CHECK(ret, FAIL, "H5Gget_objinfo");
- VERIFY(statbuf.nlink, 1, "H5Tcommit");
+ ret = H5Oget_info(file_id, TYPE1_NAME, &oinfo, H5P_DEFAULT);
+ CHECK(ret, FAIL, "H5Oget_info");
+ VERIFY(oinfo.rc, 1, "H5Tcommit");
/* Create dataspace for dataset */
- space_id=H5Screate(H5S_SCALAR);
+ space_id = H5Screate(H5S_SCALAR);
CHECK(space_id, FAIL, "H5Screate");
/* Create dataset */
- dset_id=H5Dcreate(file_id,DSET1_NAME,type_id,space_id,H5P_DEFAULT);
+ dset_id = H5Dcreate(file_id, DSET1_NAME, type_id, space_id, H5P_DEFAULT);
CHECK(dset_id, FAIL, "H5Dcreate");
/* Check reference count on named datatype */
- ret=H5Gget_objinfo(file_id,TYPE1_NAME,0,&statbuf);
- CHECK(ret, FAIL, "H5Gget_objinfo");
- VERIFY(statbuf.nlink, 2, "H5Dcreate");
+ ret = H5Oget_info(file_id, TYPE1_NAME, &oinfo, H5P_DEFAULT);
+ CHECK(ret, FAIL, "H5Oget_info");
+ VERIFY(oinfo.rc, 2, "H5Dcreate");
/* Create attribute on dataset */
- attr_id=H5Acreate(dset_id,ATTR1_NAME,type_id,space_id,H5P_DEFAULT);
+ attr_id = H5Acreate(dset_id, ATTR1_NAME, type_id, space_id, H5P_DEFAULT);
CHECK(attr_id, FAIL, "H5Acreate");
/* Check reference count on named datatype */
- ret=H5Gget_objinfo(file_id,TYPE1_NAME,0,&statbuf);
- CHECK(ret, FAIL, "H5Gget_objinfo");
- VERIFY(statbuf.nlink, 3, "H5Acreate");
+ ret = H5Oget_info(file_id, TYPE1_NAME, &oinfo, H5P_DEFAULT);
+ CHECK(ret, FAIL, "H5Oget_info");
+ VERIFY(oinfo.rc, 3, "H5Acreate");
/* Close attribute */
- ret=H5Aclose(attr_id);
+ ret = H5Aclose(attr_id);
CHECK(ret, FAIL, "H5Aclose");
/* Delete attribute */
- ret=H5Adelete(dset_id,ATTR1_NAME);
+ ret = H5Adelete(dset_id, ATTR1_NAME);
CHECK(ret, FAIL, "H5Adelete");
/* Check reference count on named datatype */
- ret=H5Gget_objinfo(file_id,TYPE1_NAME,0,&statbuf);
- CHECK(ret, FAIL, "H5Gget_objinfo");
- VERIFY(statbuf.nlink, 2, "H5Adelete");
+ ret = H5Oget_info(file_id, TYPE1_NAME, &oinfo, H5P_DEFAULT);
+ CHECK(ret, FAIL, "H5Oget_info");
+ VERIFY(oinfo.rc, 2, "H5Adelete");
/* Create attribute on dataset */
- attr_id=H5Acreate(dset_id,ATTR1_NAME,type_id,space_id,H5P_DEFAULT);
+ attr_id = H5Acreate(dset_id, ATTR1_NAME, type_id, space_id, H5P_DEFAULT);
CHECK(attr_id, FAIL, "H5Acreate");
/* Check reference count on named datatype */
- ret=H5Gget_objinfo(file_id,TYPE1_NAME,0,&statbuf);
- CHECK(ret, FAIL, "H5Gget_objinfo");
- VERIFY(statbuf.nlink, 3, "H5Acreate");
+ ret = H5Oget_info(file_id, TYPE1_NAME, &oinfo, H5P_DEFAULT);
+ CHECK(ret, FAIL, "H5Oget_info");
+ VERIFY(oinfo.rc, 3, "H5Acreate");
/* Write data into the attribute */
- ret=H5Awrite(attr_id,H5T_NATIVE_INT,&data);
+ ret = H5Awrite(attr_id, H5T_NATIVE_INT, &data);
CHECK(ret, FAIL, "H5Awrite");
/* Close attribute */
- ret=H5Aclose(attr_id);
+ ret = H5Aclose(attr_id);
CHECK(ret, FAIL, "H5Aclose");
/* Close dataset */
- ret=H5Dclose(dset_id);
+ ret = H5Dclose(dset_id);
CHECK(ret, FAIL, "H5Dclose");
/* Close dataspace */
- ret=H5Sclose(space_id);
+ ret = H5Sclose(space_id);
CHECK(ret, FAIL, "H5Sclose");
/* Close datatype */
- ret=H5Tclose(type_id);
+ ret = H5Tclose(type_id);
CHECK(ret, FAIL, "H5Tclose");
/* Close file */
- ret=H5Fclose(file_id);
+ ret = H5Fclose(file_id);
CHECK(ret, FAIL, "H5Fclose");
+
/* Re-open file */
- file_id=H5Fopen(FILENAME,H5F_ACC_RDWR,fapl);
+ file_id = H5Fopen(FILENAME, H5F_ACC_RDWR, fapl);
CHECK(file_id, FAIL, "H5Fopen");
/* Open dataset */
- dset_id=H5Dopen(file_id,DSET1_NAME);
+ dset_id = H5Dopen(file_id, DSET1_NAME);
CHECK(dset_id, FAIL, "H5Dopen");
/* Open attribute */
- attr_id=H5Aopen_name(dset_id,ATTR1_NAME);
+ attr_id = H5Aopen_name(dset_id, ATTR1_NAME);
CHECK(attr_id, FAIL, "H5Aopen_name");
/* Read data from the attribute */
- ret=H5Aread(attr_id,H5T_NATIVE_INT,&rdata);
+ ret = H5Aread(attr_id, H5T_NATIVE_INT, &rdata);
CHECK(ret, FAIL, "H5Aread");
VERIFY(data, rdata, "H5Aread");
/* Close attribute */
- ret=H5Aclose(attr_id);
+ ret = H5Aclose(attr_id);
CHECK(ret, FAIL, "H5Aclose");
/* Close dataset */
- ret=H5Dclose(dset_id);
+ ret = H5Dclose(dset_id);
CHECK(ret, FAIL, "H5Dclose");
/* Check reference count on named datatype */
- ret=H5Gget_objinfo(file_id,TYPE1_NAME,0,&statbuf);
- CHECK(ret, FAIL, "H5Gget_objinfo");
- VERIFY(statbuf.nlink, 3, "H5Gget_objinfo");
+ ret = H5Oget_info(file_id, TYPE1_NAME, &oinfo, H5P_DEFAULT);
+ CHECK(ret, FAIL, "H5Oget_info");
+ VERIFY(oinfo.rc, 3, "H5Oget_info");
/* Unlink the dataset */
ret = H5Ldelete(file_id, DSET1_NAME, H5P_DEFAULT);
CHECK(ret, FAIL, "H5Ldelete");
/* Check reference count on named datatype */
- ret=H5Gget_objinfo(file_id,TYPE1_NAME,0,&statbuf);
- CHECK(ret, FAIL, "H5Gget_objinfo");
- VERIFY(statbuf.nlink, 1, "H5Gget_objinfo");
+ ret = H5Oget_info(file_id, TYPE1_NAME, &oinfo, H5P_DEFAULT);
+ CHECK(ret, FAIL, "H5Oget_info");
+ VERIFY(oinfo.rc, 1, "H5Ldelete");
/* Unlink the named datatype */
ret = H5Ldelete(file_id, TYPE1_NAME, H5P_DEFAULT);
CHECK(ret, FAIL, "H5Ldelete");
/* Close file */
- ret=H5Fclose(file_id);
+ ret = H5Fclose(file_id);
CHECK(ret, FAIL, "H5Fclose");
/* Check size of file */
- filesize=h5_get_file_size(FILENAME);
+ filesize = h5_get_file_size(FILENAME);
VERIFY(filesize, empty_filesize, "h5_get_file_size");
} /* test_attr_dtype_shared() */
diff --git a/test/testhdf5.h b/test/testhdf5.h
index 8817725..45ad476 100644
--- a/test/testhdf5.h
+++ b/test/testhdf5.h
@@ -69,15 +69,16 @@
}
/* Used to make certain a return value _is_ a value */
-#define VERIFY(x, val, where) do { \
- if (GetTestVerbosity()>=VERBO_HI) { \
+#define VERIFY(_x, _val, where) do { \
+ long __x = (long)_x, __val = (long)_val; \
+ if(GetTestVerbosity() >= VERBO_HI) { \
print_func(" Call to routine: %15s at line %4d in %s had value " \
- "%ld \n", (where), (int)__LINE__, __FILE__, (long)(x)); \
+ "%ld \n", (where), (int)__LINE__, __FILE__, __x); \
} \
- if ((x) != (val)) { \
+ if((__x) != (__val)) { \
TestErrPrintf("*** UNEXPECTED VALUE from %s should be %ld, but is %ld at line %4d " \
- "in %s\n", (where), (long)(val), (long)(x), (int)__LINE__, __FILE__); \
- H5Eprint2(H5E_DEFAULT, stdout); \
+ "in %s\n", (where), __val, __x, (int)__LINE__, __FILE__); \
+ H5Eprint2(H5E_DEFAULT, stdout); \
} \
} while(0)
diff --git a/test/tfile.c b/test/tfile.c
index dc971e7..12f09b8 100644
--- a/test/tfile.c
+++ b/test/tfile.c
@@ -1246,11 +1246,8 @@ test_file_freespace(void)
/* Check that there is the right amount of free space in the file */
free_space = H5Fget_freespace(file);
CHECK(free_space, FAIL, "H5Fget_freespace");
-#ifdef H5_HAVE_LARGE_HSIZET
VERIFY(free_space, 2376, "H5Fget_freespace");
-#else /* H5_HAVE_LARGE_HSIZET */
- VERIFY(free_space, 588, "H5Fget_freespace"); /* XXX: fix me */
-#endif /* H5_HAVE_LARGE_HSIZET */
+
/* Delete datasets in file */
for(u = 0; u < 10; u++) {
sprintf(name, "Dataset %u", u);
diff --git a/test/th5o.c b/test/th5o.c
index ff434d6..291c73c 100644
--- a/test/th5o.c
+++ b/test/th5o.c
@@ -378,7 +378,7 @@ test_h5o_refcount(void)
{
hid_t fid; /* HDF5 File ID */
hid_t grp, dset, dtype, dspace; /* Object identifiers */
- H5G_stat_t sb; /* Statbuffer for H5Gget_objinfo */
+ H5O_info_t oinfo; /* Object info struct */
hsize_t dims[RANK];
herr_t ret; /* Value returned from API calls */
@@ -410,15 +410,15 @@ test_h5o_refcount(void)
CHECK(ret, FAIL, "H5Sclose");
/* Get ref counts for each object. They should all be 1, since each object has a hard link. */
- ret = H5Gget_objinfo(fid, "group", FALSE, &sb);
- CHECK(ret, FAIL, "H5Gget_objinfo");
- VERIFY(sb.nlink, 1, "reference count in H5Gget_objinfo");
- ret = H5Gget_objinfo(fid, "datatype", FALSE, &sb);
- CHECK(ret, FAIL, "H5Gget_objinfo");
- VERIFY(sb.nlink, 1, "reference count in H5Gget_objinfo");
- ret = H5Gget_objinfo(fid, "dataset", FALSE, &sb);
- CHECK(ret, FAIL, "H5Gget_objinfo");
- VERIFY(sb.nlink, 1, "reference count in H5Gget_objinfo");
+ ret = H5Oget_info(fid, "group", &oinfo, H5P_DEFAULT);
+ CHECK(ret, FAIL, "H5Oget_info");
+ VERIFY(oinfo.rc, 1, "reference count in H5Oget_info");
+ ret = H5Oget_info(fid, "datatype", &oinfo, H5P_DEFAULT);
+ CHECK(ret, FAIL, "H5Oget_info");
+ VERIFY(oinfo.rc, 1, "reference count in H5Oget_info");
+ ret = H5Oget_info(fid, "dataset", &oinfo, H5P_DEFAULT);
+ CHECK(ret, FAIL, "H5Oget_info");
+ VERIFY(oinfo.rc, 1, "reference count in H5Oget_info");
/* Increment each object's reference count. */
ret = H5Oincr_refcount(grp);
@@ -429,15 +429,15 @@ test_h5o_refcount(void)
CHECK(ret, FAIL, "H5Oincr_refcount");
/* Get ref counts for each object. They should all be 2 now. */
- ret = H5Gget_objinfo(fid, "group", FALSE, &sb);
- CHECK(ret, FAIL, "H5Gget_objinfo");
- VERIFY(sb.nlink, 2, "reference count in H5Gget_objinfo");
- ret = H5Gget_objinfo(fid, "datatype", FALSE, &sb);
- CHECK(ret, FAIL, "H5Gget_objinfo");
- VERIFY(sb.nlink, 2, "reference count in H5Gget_objinfo");
- ret = H5Gget_objinfo(fid, "dataset", FALSE, &sb);
- CHECK(ret, FAIL, "H5Gget_objinfo");
- VERIFY(sb.nlink, 2, "reference count in H5Gget_objinfo");
+ ret = H5Oget_info(fid, "group", &oinfo, H5P_DEFAULT);
+ CHECK(ret, FAIL, "H5Oget_info");
+ VERIFY(oinfo.rc, 2, "reference count in H5Oget_info");
+ ret = H5Oget_info(fid, "datatype", &oinfo, H5P_DEFAULT);
+ CHECK(ret, FAIL, "H5Oget_info");
+ VERIFY(oinfo.rc, 2, "reference count in H5Oget_info");
+ ret = H5Oget_info(fid, "dataset", &oinfo, H5P_DEFAULT);
+ CHECK(ret, FAIL, "H5Oget_info");
+ VERIFY(oinfo.rc, 2, "reference count in H5Oget_info");
/* Decrement the reference counts and check that they decrease back to 1. */
ret = H5Odecr_refcount(grp);
@@ -447,15 +447,15 @@ test_h5o_refcount(void)
ret = H5Odecr_refcount(dset);
CHECK(ret, FAIL, "H5Odecr_refcount");
- ret = H5Gget_objinfo(fid, "group", FALSE, &sb);
- CHECK(ret, FAIL, "H5Gget_objinfo");
- VERIFY(sb.nlink, 1, "reference count in H5Gget_objinfo");
- ret = H5Gget_objinfo(fid, "datatype", FALSE, &sb);
- CHECK(ret, FAIL, "H5Gget_objinfo");
- VERIFY(sb.nlink, 1, "reference count in H5Gget_objinfo");
- ret = H5Gget_objinfo(fid, "dataset", FALSE, &sb);
- CHECK(ret, FAIL, "H5Gget_objinfo");
- VERIFY(sb.nlink, 1, "reference count in H5Gget_objinfo");
+ ret = H5Oget_info(fid, "group", &oinfo, H5P_DEFAULT);
+ CHECK(ret, FAIL, "H5Oget_info");
+ VERIFY(oinfo.rc, 1, "reference count in H5Oget_info");
+ ret = H5Oget_info(fid, "datatype", &oinfo, H5P_DEFAULT);
+ CHECK(ret, FAIL, "H5Oget_info");
+ VERIFY(oinfo.rc, 1, "reference count in H5Oget_info");
+ ret = H5Oget_info(fid, "dataset", &oinfo, H5P_DEFAULT);
+ CHECK(ret, FAIL, "H5Oget_info");
+ VERIFY(oinfo.rc, 1, "reference count in H5Oget_info");
/* Increment the reference counts and then close the file to make sure the increment is permanant */
ret = H5Oincr_refcount(grp);
@@ -485,15 +485,15 @@ test_h5o_refcount(void)
dset = H5Dopen(fid, "dataset");
CHECK(dset, FAIL, "H5Dopen");
- ret = H5Gget_objinfo(fid, "group", FALSE, &sb);
- CHECK(ret, FAIL, "H5Gget_objinfo");
- VERIFY(sb.nlink, 2, "reference count in H5Gget_objinfo");
- ret = H5Gget_objinfo(fid, "datatype", FALSE, &sb);
- CHECK(ret, FAIL, "H5Gget_objinfo");
- VERIFY(sb.nlink, 2, "reference count in H5Gget_objinfo");
- ret = H5Gget_objinfo(fid, "dataset", FALSE, &sb);
- CHECK(ret, FAIL, "H5Gget_objinfo");
- VERIFY(sb.nlink, 2, "reference count in H5Gget_objinfo");
+ ret = H5Oget_info(fid, "group", &oinfo, H5P_DEFAULT);
+ CHECK(ret, FAIL, "H5Oget_info");
+ VERIFY(oinfo.rc, 2, "reference count in H5Oget_info");
+ ret = H5Oget_info(fid, "datatype", &oinfo, H5P_DEFAULT);
+ CHECK(ret, FAIL, "H5Oget_info");
+ VERIFY(oinfo.rc, 2, "reference count in H5Oget_info");
+ ret = H5Oget_info(fid, "dataset", &oinfo, H5P_DEFAULT);
+ CHECK(ret, FAIL, "H5Oget_info");
+ VERIFY(oinfo.rc, 2, "reference count in H5Oget_info");
/* Decrement the reference counts and close the file */
ret = H5Odecr_refcount(grp);
@@ -523,15 +523,15 @@ test_h5o_refcount(void)
dset = H5Dopen(fid, "dataset");
CHECK(dset, FAIL, "H5Dopen");
- ret = H5Gget_objinfo(fid, "group", FALSE, &sb);
- CHECK(ret, FAIL, "H5Gget_objinfo");
- VERIFY(sb.nlink, 1, "reference count in H5Gget_objinfo");
- ret = H5Gget_objinfo(fid, "datatype", FALSE, &sb);
- CHECK(ret, FAIL, "H5Gget_objinfo");
- VERIFY(sb.nlink, 1, "reference count in H5Gget_objinfo");
- ret = H5Gget_objinfo(fid, "dataset", FALSE, &sb);
- CHECK(ret, FAIL, "H5Gget_objinfo");
- VERIFY(sb.nlink, 1, "reference count in H5Gget_objinfo");
+ ret = H5Oget_info(fid, "group", &oinfo, H5P_DEFAULT);
+ CHECK(ret, FAIL, "H5Oget_info");
+ VERIFY(oinfo.rc, 1, "reference count in H5Oget_info");
+ ret = H5Oget_info(fid, "datatype", &oinfo, H5P_DEFAULT);
+ CHECK(ret, FAIL, "H5Oget_info");
+ VERIFY(oinfo.rc, 1, "reference count in H5Oget_info");
+ ret = H5Oget_info(fid, "dataset", &oinfo, H5P_DEFAULT);
+ CHECK(ret, FAIL, "H5Oget_info");
+ VERIFY(oinfo.rc, 1, "reference count in H5Oget_info");
/* Close the IDs */
ret = H5Gclose(grp);
diff --git a/test/titerate.c b/test/titerate.c
index 99f099c..bbb57b3 100644
--- a/test/titerate.c
+++ b/test/titerate.c
@@ -54,7 +54,7 @@ typedef enum {
/* Custom group iteration callback data */
typedef struct {
char name[NAMELEN]; /* The name of the object */
- int type; /* The type of the object */
+ H5O_type_t type; /* The type of the object */
iter_enum command; /* The type of return value */
} iter_info;
@@ -547,7 +547,7 @@ liter_cb2(hid_t loc_id, const char *name, const H5L_info_t UNUSED *link_info,
void *opdata)
{
const iter_info *test_info = (const iter_info *)opdata;
- H5G_stat_t statbuf;
+ H5O_info_t oinfo;
herr_t ret; /* Generic return value */
if(HDstrcmp(name, test_info->name)) {
@@ -558,11 +558,11 @@ liter_cb2(hid_t loc_id, const char *name, const H5L_info_t UNUSED *link_info,
/*
* Get type of the object and check it.
*/
- ret = H5Gget_objinfo(loc_id, name, FALSE, &statbuf);
- CHECK(ret, FAIL, "H5Gget_objinfo");
+ ret = H5Oget_info(loc_id, name, &oinfo, H5P_DEFAULT);
+ CHECK(ret, FAIL, "H5Oget_info");
- if(test_info->type != statbuf.type) {
- TestErrPrintf("test_info->type = %d, statbuf.type = %d\n", test_info->type, statbuf.type);
+ if(test_info->type != oinfo.type) {
+ TestErrPrintf("test_info->type = %d, oinfo.type = %d\n", test_info->type, (int)oinfo.type);
return(H5_ITER_ERROR);
} /* end if */
diff --git a/test/tmisc.c b/test/tmisc.c
index 0fe0434..f9abada 100644
--- a/test/tmisc.c
+++ b/test/tmisc.c
@@ -233,13 +233,8 @@ unsigned m13_rdata[MISC13_DIM1][MISC13_DIM2]; /* Data read from dataset
#define MISC20_SPACE_RANK 2
/* Make sure the product of the following 2 does not get too close to */
/* 64 bits, risking an overflow. */
-#ifdef H5_HAVE_LARGE_HSIZET
#define MISC20_SPACE_DIM0 (8*1024*1024*(uint64_t)1024)
#define MISC20_SPACE_DIM1 ((256*1024*(uint64_t)1024)+1)
-#else /* H5_HAVE_LARGE_HSIZET */
-#define MISC20_SPACE_DIM0 (128*(uint64_t)1024)
-#define MISC20_SPACE_DIM1 ((4*(uint64_t)1024)+1)
-#endif /* H5_HAVE_LARGE_HSIZET */
#define MISC20_SPACE2_DIM0 8
#define MISC20_SPACE2_DIM1 4
@@ -610,7 +605,7 @@ test_misc3(void)
/****************************************************************
**
-** test_misc4(): Test the that 'fileno' field in H5G_stat_t is
+** test_misc4(): Test the that 'fileno' field in H5O_info_t is
** valid.
**
****************************************************************/
@@ -618,11 +613,11 @@ static void
test_misc4(void)
{
hid_t file1, file2, group1, group2, group3;
- H5G_stat_t stat1, stat2, stat3;
+ H5O_info_t oinfo1, oinfo2, oinfo3;
herr_t ret;
/* Output message about test being performed */
- MESSAGE(5, ("Testing fileno working in H5G_stat_t\n"));
+ MESSAGE(5, ("Testing fileno working in H5O_info_t\n"));
file1 = H5Fcreate(MISC4_FILE_1, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
CHECK(file1, FAIL, "H5Fcreate");
@@ -643,21 +638,21 @@ test_misc4(void)
CHECK(group3, FAIL, "H5Gcreate2");
/* Get the stat information for each group */
- ret = H5Gget_objinfo(file1,MISC4_GROUP_1,0,&stat1);
- CHECK(ret, FAIL, "H5Gget_objinfo");
- ret = H5Gget_objinfo(file1,MISC4_GROUP_2,0,&stat2);
- CHECK(ret, FAIL, "H5Gget_objinfo");
- ret = H5Gget_objinfo(file2,MISC4_GROUP_1,0,&stat3);
- CHECK(ret, FAIL, "H5Gget_objinfo");
+ ret = H5Oget_info(file1, MISC4_GROUP_1, &oinfo1, H5P_DEFAULT);
+ CHECK(ret, FAIL, "H5Oget_info");
+ ret = H5Oget_info(file1, MISC4_GROUP_2, &oinfo2, H5P_DEFAULT);
+ CHECK(ret, FAIL, "H5Oget_info");
+ ret = H5Oget_info(file2, MISC4_GROUP_1, &oinfo3, H5P_DEFAULT);
+ CHECK(ret, FAIL, "H5Oget_info");
/* Verify that the fileno values are the same for groups from file1 */
- VERIFY(stat1.fileno[0],stat2.fileno[0],"H5Gget_objinfo");
+ VERIFY(oinfo1.fileno, oinfo2.fileno, "H5Oget_info");
/* Verify that the fileno values are not the same between file1 & file2 */
- if(stat1.fileno[0]==stat3.fileno[0])
- TestErrPrintf("Error on line %d: stat1.fileno==stat3.fileno\n",__LINE__);
- if(stat2.fileno[0]==stat3.fileno[0])
- TestErrPrintf("Error on line %d: stat1.fileno==stat3.fileno\n",__LINE__);
+ if(oinfo1.fileno == oinfo3.fileno)
+ TestErrPrintf("Error on line %d: oinfo1.fileno != oinfo3.fileno\n", __LINE__);
+ if(oinfo2.fileno == oinfo3.fileno)
+ TestErrPrintf("Error on line %d: oinfo2.fileno != oinfo3.fileno\n", __LINE__);
/* Close the objects */
ret = H5Gclose(group1);
@@ -2832,7 +2827,7 @@ test_misc17(void)
/****************************************************************
**
-** test_misc18(): Test new object header information in H5G_stat_t
+** test_misc18(): Test new object header information in H5O_info_t
** struct.
**
****************************************************************/
@@ -2843,7 +2838,7 @@ test_misc18(void)
hid_t sid; /* 'Space ID */
hid_t did1, did2; /* Dataset IDs */
hid_t aid; /* Attribute ID */
- H5G_stat_t statbuf; /* Information about object */
+ H5O_info_t oinfo; /* Information about object */
char attr_name[32]; /* Attribute name buffer */
unsigned u; /* Local index variable */
herr_t ret; /* Generic return value */
@@ -2861,34 +2856,26 @@ test_misc18(void)
CHECK(did1, FAIL, "H5Dcreate");
/* Get object information */
- ret = H5Gget_objinfo(fid,MISC18_DSET1_NAME,0,&statbuf);
- CHECK(ret, FAIL, "H5Gget_objinfo");
- VERIFY(statbuf.ohdr.nmesgs, 6, "H5Gget_objinfo");
- VERIFY(statbuf.ohdr.nchunks, 1, "H5Gget_objinfo");
- VERIFY(statbuf.ohdr.size, 272, "H5Gget_objinfo");
-#ifdef H5_HAVE_LARGE_HSIZET
- VERIFY(statbuf.ohdr.free, 152, "H5Gget_objinfo");
-#else /* H5_HAVE_LARGE_HSIZET */
- VERIFY(statbuf.ohdr.free, 160, "H5Gget_objinfo");
-#endif /* H5_HAVE_LARGE_HSIZET */
- VERIFY(statbuf.linklen, 0, "H5Gget_objinfo");
+ ret = H5Oget_info(fid, MISC18_DSET1_NAME, &oinfo, H5P_DEFAULT);
+ CHECK(ret, FAIL, "H5Oget_info");
+ VERIFY(oinfo.hdr.nmesgs, 6, "H5Oget_info");
+ VERIFY(oinfo.hdr.nchunks, 1, "H5Oget_info");
+ VERIFY(oinfo.hdr.space.total, 272, "H5Oget_info");
+ VERIFY(oinfo.hdr.space.free, 152, "H5Oget_info");
+ VERIFY(oinfo.num_attrs, 0, "H5Oget_info");
/* Create second dataset */
did2 = H5Dcreate(fid, MISC18_DSET2_NAME, H5T_STD_U32LE, sid, H5P_DEFAULT);
CHECK(did2, FAIL, "H5Screate_simple");
/* Get object information */
- ret = H5Gget_objinfo(fid,MISC18_DSET2_NAME,0,&statbuf);
- CHECK(ret, FAIL, "H5Gget_objinfo");
- VERIFY(statbuf.ohdr.nmesgs, 6, "H5Gget_objinfo");
- VERIFY(statbuf.ohdr.nchunks, 1, "H5Gget_objinfo");
- VERIFY(statbuf.ohdr.size, 272, "H5Gget_objinfo");
-#ifdef H5_HAVE_LARGE_HSIZET
- VERIFY(statbuf.ohdr.free, 152, "H5Gget_objinfo");
-#else /* H5_HAVE_LARGE_HSIZET */
- VERIFY(statbuf.ohdr.free, 160, "H5Gget_objinfo");
-#endif /* H5_HAVE_LARGE_HSIZET */
- VERIFY(statbuf.linklen, 0, "H5Gget_objinfo");
+ ret = H5Oget_info(fid, MISC18_DSET2_NAME, &oinfo, H5P_DEFAULT);
+ CHECK(ret, FAIL, "H5Oget_info");
+ VERIFY(oinfo.hdr.nmesgs, 6, "H5Oget_info");
+ VERIFY(oinfo.hdr.nchunks, 1, "H5Oget_info");
+ VERIFY(oinfo.hdr.space.total, 272, "H5Oget_info");
+ VERIFY(oinfo.hdr.space.free, 152, "H5Oget_info");
+ VERIFY(oinfo.num_attrs, 0, "H5Oget_info");
/* Loop creating attributes on each dataset, flushing them to the file each time */
for(u=0; u<10; u++) {
@@ -2897,14 +2884,14 @@ test_misc18(void)
/* Create & close attribute on first dataset */
aid = H5Acreate(did1, attr_name, H5T_STD_U32LE, sid, H5P_DEFAULT);
- CHECK(aid, FAIL, "H5Gget_objinfo");
+ CHECK(aid, FAIL, "H5Acreate");
ret = H5Aclose(aid);
CHECK(ret, FAIL, "HAclose");
/* Create & close attribute on second dataset */
aid = H5Acreate(did2, attr_name, H5T_STD_U32LE, sid, H5P_DEFAULT);
- CHECK(aid, FAIL, "H5Gget_objinfo");
+ CHECK(aid, FAIL, "H5Acreate");
ret = H5Aclose(aid);
CHECK(ret, FAIL, "HAclose");
@@ -2915,36 +2902,22 @@ test_misc18(void)
} /* end for */
/* Get object information for dataset #1 now */
- ret = H5Gget_objinfo(fid,MISC18_DSET1_NAME,0,&statbuf);
- CHECK(ret, FAIL, "H5Gget_objinfo");
-#ifdef H5_HAVE_LARGE_HSIZET
- VERIFY(statbuf.ohdr.nmesgs, 24, "H5Gget_objinfo");
- VERIFY(statbuf.ohdr.nchunks, 9, "H5Gget_objinfo");
- VERIFY(statbuf.ohdr.size, 888, "H5Gget_objinfo");
- VERIFY(statbuf.ohdr.free, 16, "H5Gget_objinfo");
-#else /* H5_HAVE_LARGE_HSIZET */
- VERIFY(statbuf.ohdr.nmesgs, 26, "H5Gget_objinfo");
- VERIFY(statbuf.ohdr.nchunks, 9, "H5Gget_objinfo");
- VERIFY(statbuf.ohdr.size, 888, "H5Gget_objinfo");
- VERIFY(statbuf.ohdr.free, 24, "H5Gget_objinfo");
-#endif /* H5_HAVE_LARGE_HSIZET */
- VERIFY(statbuf.linklen, 0, "H5Gget_objinfo");
+ ret = H5Oget_info(fid, MISC18_DSET1_NAME, &oinfo, H5P_DEFAULT);
+ CHECK(ret, FAIL, "H5Oget_info");
+ VERIFY(oinfo.hdr.nmesgs, 24, "H5Oget_info");
+ VERIFY(oinfo.hdr.nchunks, 9, "H5Oget_info");
+ VERIFY(oinfo.hdr.space.total, 888, "H5Oget_info");
+ VERIFY(oinfo.hdr.space.free, 16, "H5Oget_info");
+ VERIFY(oinfo.num_attrs, 10, "H5Oget_info");
/* Get object information for dataset #2 now */
- ret = H5Gget_objinfo(fid,MISC18_DSET2_NAME,0,&statbuf);
- CHECK(ret, FAIL, "H5Gget_objinfo");
-#ifdef H5_HAVE_LARGE_HSIZET
- VERIFY(statbuf.ohdr.nmesgs, 24, "H5Gget_objinfo");
- VERIFY(statbuf.ohdr.nchunks, 9, "H5Gget_objinfo");
- VERIFY(statbuf.ohdr.size, 888, "H5Gget_objinfo");
- VERIFY(statbuf.ohdr.free, 16, "H5Gget_objinfo");
-#else /* H5_HAVE_LARGE_HSIZET */
- VERIFY(statbuf.ohdr.nmesgs, 26, "H5Gget_objinfo");
- VERIFY(statbuf.ohdr.nchunks, 9, "H5Gget_objinfo");
- VERIFY(statbuf.ohdr.size, 888, "H5Gget_objinfo");
- VERIFY(statbuf.ohdr.free, 24, "H5Gget_objinfo");
-#endif /* H5_HAVE_LARGE_HSIZET */
- VERIFY(statbuf.linklen, 0, "H5Gget_objinfo");
+ ret = H5Oget_info(fid, MISC18_DSET2_NAME, &oinfo, H5P_DEFAULT);
+ CHECK(ret, FAIL, "H5Oget_info");
+ VERIFY(oinfo.hdr.nmesgs, 24, "H5Oget_info");
+ VERIFY(oinfo.hdr.nchunks, 9, "H5Oget_info");
+ VERIFY(oinfo.hdr.space.total, 888, "H5Oget_info");
+ VERIFY(oinfo.hdr.space.free, 16, "H5Oget_info");
+ VERIFY(oinfo.num_attrs, 10, "H5Oget_info");
/* Close second dataset */
ret = H5Dclose(did2);
@@ -3426,10 +3399,8 @@ test_misc20(void)
CHECK(dcpl, FAIL, "H5Pcreate");
/* Try to use chunked storage for this dataset */
-#ifdef H5_HAVE_LARGE_HSIZET
- ret = H5Pset_chunk(dcpl,rank,big_dims);
+ ret = H5Pset_chunk(dcpl, rank, big_dims);
VERIFY(ret, FAIL, "H5Pset_chunk");
-#endif /* H5_HAVE_LARGE_HSIZET */
/* Verify that the storage for the dataset is the correct size and hasn't
* been truncated.
@@ -3440,11 +3411,11 @@ test_misc20(void)
CHECK(fid, FAIL, "H5Fcreate");
/* Create dataspace with _really_ big dimensions */
- sid = H5Screate_simple(rank,big_dims,NULL);
+ sid = H5Screate_simple(rank, big_dims, NULL);
CHECK(sid, FAIL, "H5Screate_simple");
/* Make certain that the dataset's storage doesn't get allocated :-) */
- ret = H5Pset_alloc_time(dcpl,H5D_ALLOC_TIME_LATE);
+ ret = H5Pset_alloc_time(dcpl, H5D_ALLOC_TIME_LATE);
CHECK(ret, FAIL, "H5Pset_alloc_time");
/* Create dataset with big dataspace */
@@ -3452,15 +3423,15 @@ test_misc20(void)
CHECK(did, FAIL, "H5Dcreate");
/* Close datasset */
- ret=H5Dclose(did);
+ ret = H5Dclose(did);
CHECK(ret, FAIL, "H5Dclose");
/* Close dataspace */
- ret=H5Sclose(sid);
+ ret = H5Sclose(sid);
CHECK(ret, FAIL, "H5Sclose");
/* Create dataspace with small dimensions */
- sid = H5Screate_simple(rank,small_dims,NULL);
+ sid = H5Screate_simple(rank, small_dims, NULL);
CHECK(sid, FAIL, "H5Screate_simple");
/* Create dataset with big dataspace */
@@ -3468,15 +3439,15 @@ test_misc20(void)
CHECK(did, FAIL, "H5Dcreate");
/* Close datasset */
- ret=H5Dclose(did);
+ ret = H5Dclose(did);
CHECK(ret, FAIL, "H5Dclose");
/* Close dataspace */
- ret=H5Sclose(sid);
+ ret = H5Sclose(sid);
CHECK(ret, FAIL, "H5Sclose");
/* Close dataset creation property list */
- ret=H5Pclose(dcpl);
+ ret = H5Pclose(dcpl);
CHECK(ret, FAIL, "H5Pclose");
/* Close file */
@@ -3494,15 +3465,15 @@ test_misc20(void)
/* Get the layout version */
ret = H5D_layout_version_test(did,&version);
CHECK(ret, FAIL, "H5D_layout_version_test");
- VERIFY(version,3,"H5D_layout_version_test");
+ VERIFY(version, 3, "H5D_layout_version_test");
/* Get the layout contiguous storage size */
ret = H5D_layout_contig_size_test(did,&contig_size);
CHECK(ret, FAIL, "H5D_layout_contig_size_test");
- VERIFY(contig_size, MISC20_SPACE_DIM0*MISC20_SPACE_DIM1*H5Tget_size(H5T_NATIVE_INT), "H5D_layout_contig_size_test");
+ VERIFY(contig_size, (MISC20_SPACE_DIM0 * MISC20_SPACE_DIM1 * H5Tget_size(H5T_NATIVE_INT)), "H5D_layout_contig_size_test");
/* Close datasset */
- ret=H5Dclose(did);
+ ret = H5Dclose(did);
CHECK(ret, FAIL, "H5Dclose");
/* Open dataset with small dimensions */
@@ -3512,15 +3483,15 @@ test_misc20(void)
/* Get the layout version */
ret = H5D_layout_version_test(did,&version);
CHECK(ret, FAIL, "H5D_layout_version_test");
- VERIFY(version,3,"H5D_layout_version_test");
+ VERIFY(version, 3, "H5D_layout_version_test");
/* Get the layout contiguous storage size */
ret = H5D_layout_contig_size_test(did,&contig_size);
CHECK(ret, FAIL, "H5D_layout_contig_size_test");
- VERIFY(contig_size, MISC20_SPACE2_DIM0*MISC20_SPACE2_DIM1*H5Tget_size(H5T_NATIVE_INT), "H5D_layout_contig_size_test");
+ VERIFY(contig_size, (MISC20_SPACE2_DIM0 * MISC20_SPACE2_DIM1 * H5Tget_size(H5T_NATIVE_INT)), "H5D_layout_contig_size_test");
/* Close datasset */
- ret=H5Dclose(did);
+ ret = H5Dclose(did);
CHECK(ret, FAIL, "H5Dclose");
/* Close file */
@@ -3530,7 +3501,7 @@ test_misc20(void)
/* Verify that the storage size is computed correctly for older versions of layout info */
/* Generate the correct name for the test file, by prepending the source path */
- if (srcdir && ((HDstrlen(srcdir) + HDstrlen(MISC20_FILE_OLD) + 1) < sizeof(testfile))) {
+ if(srcdir && ((HDstrlen(srcdir) + HDstrlen(MISC20_FILE_OLD) + 1) < sizeof(testfile))) {
HDstrcpy(testfile, srcdir);
HDstrcat(testfile, "/");
}
@@ -3539,30 +3510,26 @@ test_misc20(void)
/*
* Open the old file and the dataset and get old settings.
*/
- fid = H5Fopen(testfile, H5F_ACC_RDONLY, H5P_DEFAULT);
+ fid = H5Fopen(testfile, H5F_ACC_RDONLY, H5P_DEFAULT);
CHECK(fid, FAIL, "H5Fopen");
/* Open dataset with small dimensions */
did = H5Dopen(fid, MISC20_DSET_NAME);
-#ifdef H5_HAVE_LARGE_HSIZET
CHECK(did, FAIL, "H5Dopen");
/* Get the layout version */
ret = H5D_layout_version_test(did,&version);
CHECK(ret, FAIL, "H5D_layout_version_test");
- VERIFY(version,2,"H5D_layout_version_test");
+ VERIFY(version, 2, "H5D_layout_version_test");
/* Get the layout contiguous storage size */
ret = H5D_layout_contig_size_test(did,&contig_size);
CHECK(ret, FAIL, "H5D_layout_contig_size_test");
- VERIFY(contig_size, MISC20_SPACE_DIM0*MISC20_SPACE_DIM1*H5Tget_size(H5T_STD_I32LE), "H5D_layout_contig_size_test");
+ VERIFY(contig_size, (MISC20_SPACE_DIM0 * MISC20_SPACE_DIM1 * H5Tget_size(H5T_STD_I32LE)), "H5D_layout_contig_size_test");
/* Close datasset */
- ret=H5Dclose(did);
+ ret = H5Dclose(did);
CHECK(ret, FAIL, "H5Dclose");
-#else /* H5_HAVE_LARGE_HSIZET */
- VERIFY(did, FAIL, "H5Dopen");
-#endif /* H5_HAVE_LARGE_HSIZET */
/* Close file */
ret = H5Fclose(fid);
@@ -3797,12 +3764,12 @@ test_misc22(void)
static void
test_misc23(void)
{
- herr_t status;
hsize_t dims[] = {10};
hid_t file_id=0, group_id=0, type_id=0, space_id=0,
tmp_id=0, create_id=H5P_DEFAULT, access_id=H5P_DEFAULT;
char objname[MISC23_NAME_BUF_SIZE]; /* Name of object */
- H5G_stat_t sb;
+ H5O_info_t oinfo;
+ herr_t status;
/* Output message about test being performed */
MESSAGE(5, ("Testing intermediate group creation\n"));
@@ -3869,7 +3836,7 @@ test_misc23(void)
CHECK(tmp_id, FAIL, "H5Gcreate2");
/* Query that the name of the new group is correct */
- status = H5Iget_name( tmp_id, objname, (size_t)MISC23_NAME_BUF_SIZE );
+ status = H5Iget_name(tmp_id, objname, (size_t)MISC23_NAME_BUF_SIZE);
CHECK(status, FAIL, "H5Iget_name");
VERIFY_STR(objname, "/A/B01/grp", "H5Iget_name");
@@ -3880,9 +3847,9 @@ test_misc23(void)
tmp_id = H5Gopen2(file_id, "/A/B01", H5P_DEFAULT);
CHECK(tmp_id, FAIL, "H5Gopen2");
- status = H5Gget_objinfo(tmp_id, ".", FALSE, &sb);
- CHECK(status, FAIL, "H5Gget_objinfo");
- VERIFY(sb.nlink,1,"H5Gget_objinfo");
+ status = H5Oget_info(tmp_id, ".", &oinfo, H5P_DEFAULT);
+ CHECK(status, FAIL, "H5Oget_info");
+ VERIFY(oinfo.rc, 1, "H5Oget_info");
status = H5Gclose(tmp_id);
CHECK(status, FAIL, "H5Gclose");
@@ -4841,7 +4808,7 @@ test_misc(void)
test_misc1(); /* Test unlinking a dataset & immediately re-using name */
test_misc2(); /* Test storing a VL-derived datatype in two different files */
test_misc3(); /* Test reading from chunked dataset with non-zero fill value */
- test_misc4(); /* Test retrieving the fileno for various objects with H5Gget_objinfo() */
+ test_misc4(); /* Test retrieving the fileno for various objects with H5Oget_info() */
test_misc5(); /* Test several level deep nested compound & VL datatypes */
test_misc6(); /* Test object header continuation code */
test_misc7(); /* Test for sensible datatypes stored on disk */
@@ -4855,7 +4822,7 @@ test_misc(void)
test_misc15(); /* Test that checking a file's access property list more than once works */
test_misc16(); /* Test array of fixed-length string */
test_misc17(); /* Test array of ASCII character */
- test_misc18(); /* Test new object header information in H5G_stat_t struct */
+ test_misc18(); /* Test new object header information in H5O_info_t struct */
test_misc19(); /* Test incrementing & decrementing ref count on IDs */
test_misc20(); /* Test problems with truncated dimensions in version 2 of storage layout message */
#if defined H5_HAVE_FILTER_SZIP
diff --git a/test/tsohm.c b/test/tsohm.c
index 16acf71..f5b5235 100644
--- a/test/tsohm.c
+++ b/test/tsohm.c
@@ -735,7 +735,7 @@ static void test_sohm_size1(void)
h5_stat_size_t norm_final_filesize2;
h5_stat_size_t sohm_final_filesize2;
h5_stat_size_t sohm_btree_final_filesize2;
- H5G_stat_t statbuf;
+ H5O_info_t oinfo;
unsigned num_indexes = 1;
unsigned index_flags = H5O_MESG_DTYPE_FLAG;
unsigned min_mesg_size = 50;
@@ -776,11 +776,11 @@ static void test_sohm_size1(void)
CHECK_I(file, "size1_helper");
/* Get the size of a dataset object header */
- ret = H5Gget_objinfo(file, DSETNAME[0], 0, &statbuf);
- CHECK_I(ret, "H5Gget_objinfo");
+ ret = H5Oget_info(file, DSETNAME[0], &oinfo, H5P_DEFAULT);
+ CHECK_I(ret, "H5Oget_info");
ret = H5Fclose(file);
CHECK_I(ret, "H5Fclose");
- norm_oh_size = statbuf.ohdr.size;
+ norm_oh_size = oinfo.hdr.space.total;
/* Get the new file size */
norm_final_filesize = h5_get_file_size(FILENAME);
@@ -832,11 +832,11 @@ static void test_sohm_size1(void)
CHECK_I(file, "size1_helper");
/* Get the size of a dataset object header */
- ret = H5Gget_objinfo(file, DSETNAME[0], 0, &statbuf);
- CHECK_I(ret, "H5Gget_objinfo");
+ ret = H5Oget_info(file, DSETNAME[0], &oinfo, H5P_DEFAULT);
+ CHECK_I(ret, "H5Oget_info");
ret = H5Fclose(file);
CHECK_I(ret, "H5Fclose");
- sohm_oh_size = statbuf.ohdr.size;
+ sohm_oh_size = oinfo.hdr.space.total;
/* Get the new file size */
sohm_final_filesize = h5_get_file_size(FILENAME);
@@ -887,11 +887,11 @@ static void test_sohm_size1(void)
CHECK_I(file, "size1_helper");
/* Get the size of a dataset object header */
- ret = H5Gget_objinfo(file, DSETNAME[0], 0, &statbuf);
- CHECK_I(ret, "H5Gget_objinfo");
+ ret = H5Oget_info(file, DSETNAME[0], &oinfo, H5P_DEFAULT);
+ CHECK_I(ret, "H5Oget_info");
ret = H5Fclose(file);
CHECK_I(ret, "H5Fclose");
- sohm_btree_oh_size = statbuf.ohdr.size;
+ sohm_btree_oh_size = oinfo.hdr.space.total;
/* Get the new file size */
sohm_btree_final_filesize = h5_get_file_size(FILENAME);
@@ -924,10 +924,10 @@ static void test_sohm_size1(void)
* continuation message and a NULL message.
if(sohm_oh_size >= norm_oh_size)
- VERIFY(sohm_oh_size, 1, "H5Gget_objinfo");
+ VERIFY(sohm_oh_size, 1, "H5Oget_info");
*/
if(sohm_oh_size != sohm_btree_oh_size)
- VERIFY(sohm_btree_oh_size, 1, "H5Gget_objinfo");
+ VERIFY(sohm_btree_oh_size, 1, "H5Oget_info");
/* Both sohm files should be bigger than a normal file when empty.
* It's hard to say whether a B-tree with no nodes allocated should be
diff --git a/test/unlink.c b/test/unlink.c
index a3a4213..9ac7532 100644
--- a/test/unlink.c
+++ b/test/unlink.c
@@ -439,7 +439,7 @@ static int
check_new_move(hid_t fapl)
{
hid_t file;
- H5G_stat_t sb_hard1, sb_hard2;
+ H5O_info_t oi_hard1, oi_hard2;
char filename[1024];
char linkval[1024];
@@ -447,20 +447,24 @@ check_new_move(hid_t fapl)
/* Open file */
h5_fixname(FILENAME[1], fapl, filename, sizeof filename);
- if((file = H5Fopen(filename, H5F_ACC_RDONLY, fapl)) < 0) FAIL_STACK_ERROR
+ if((file = H5Fopen(filename, H5F_ACC_RDONLY, fapl)) < 0)
+ FAIL_STACK_ERROR
/* Get hard link info */
- if(H5Gget_objinfo(file, "/group2/group_new_name", TRUE, &sb_hard1) < 0) FAIL_STACK_ERROR
- if(H5Gget_objinfo(file, "/group1/hard", TRUE, &sb_hard2) < 0) FAIL_STACK_ERROR
+ if(H5Oget_info(file, "/group2/group_new_name", &oi_hard1, H5P_DEFAULT) < 0)
+ FAIL_STACK_ERROR
+ if(H5Oget_info(file, "/group1/hard", &oi_hard2, H5P_DEFAULT) < 0)
+ FAIL_STACK_ERROR
/* Check hard links */
- if(H5G_GROUP != sb_hard1.type || H5G_GROUP != sb_hard2.type)
+ if(H5O_TYPE_GROUP != oi_hard1.type || H5O_TYPE_GROUP != oi_hard2.type)
FAIL_PUTS_ERROR(" Unexpected object type, should have been a group")
- if(HDmemcmp(&sb_hard1.objno, &sb_hard2.objno, sizeof(sb_hard1.objno)))
+ if(H5F_addr_ne(oi_hard1.addr, oi_hard2.addr))
FAIL_PUTS_ERROR(" Hard link test failed. Link seems not to point to the expected file location.")
/* Check soft links */
- if(H5Lget_val(file, "group2/soft", linkval, sizeof linkval, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
+ if(H5Lget_val(file, "group2/soft", linkval, sizeof linkval, H5P_DEFAULT) < 0)
+ FAIL_STACK_ERROR
if(HDstrcmp(linkval, "/group1/group_move"))
FAIL_PUTS_ERROR(" Soft link test failed. Wrong link value")
@@ -2128,7 +2132,7 @@ test_full_group_compact(hid_t fapl)
{
hid_t file_id = -1;
hid_t gid = -1, gid2 = -1; /* Group IDs */
- H5G_stat_t sb; /* Stat buffer for object */
+ H5O_info_t oi; /* Stat buffer for object */
char objname[128]; /* Buffer for name of objects to create */
char objname2[128]; /* Buffer for name of objects to create */
char filename[1024]; /* Buffer for filename */
@@ -2200,8 +2204,8 @@ test_full_group_compact(hid_t fapl)
/* Check reference count on objects to keep */
for(u = 0; u < FULL_GROUP_NUM_KEEP; u++) {
sprintf(objname, "/keep/keep %u\n", u);
- if(H5Gget_objinfo(file_id, objname, TRUE, &sb) < 0) FAIL_STACK_ERROR
- if(sb.nlink != 2) TEST_ERROR
+ if(H5Oget_info(file_id, objname, &oi, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
+ if(oi.rc != 2) TEST_ERROR
} /* end for */
/* Close the file */
@@ -2217,8 +2221,8 @@ test_full_group_compact(hid_t fapl)
/* Check reference count on objects to keep */
for(u = 0; u < FULL_GROUP_NUM_KEEP; u++) {
sprintf(objname, "/keep/keep %u\n", u);
- if(H5Gget_objinfo(file_id, objname, TRUE, &sb) < 0) FAIL_STACK_ERROR
- if(sb.nlink != 1) TEST_ERROR
+ if(H5Oget_info(file_id, objname, &oi, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
+ if(oi.rc != 1) TEST_ERROR
} /* end for */
/* Close the file */
@@ -2262,7 +2266,7 @@ test_full_group_dense(hid_t fapl)
hid_t file_id = -1;
hid_t gcpl = (-1); /* Group creation property list ID */
hid_t gid = -1, gid2 = -1; /* Group IDs */
- H5G_stat_t sb; /* Stat buffer for object */
+ H5O_info_t oi; /* Stat buffer for object */
char objname[128]; /* Buffer for name of objects to create */
char objname2[128]; /* Buffer for name of objects to create */
char filename[1024]; /* Buffer for filename */
@@ -2346,8 +2350,8 @@ test_full_group_dense(hid_t fapl)
/* Check reference count on objects to keep */
for(u = 0; u < FULL_GROUP_NUM_KEEP; u++) {
sprintf(objname, "/keep/keep %u\n", u);
- if(H5Gget_objinfo(file_id, objname, TRUE, &sb) < 0) FAIL_STACK_ERROR
- if(sb.nlink != 2) TEST_ERROR
+ if(H5Oget_info(file_id, objname, &oi, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
+ if(oi.rc != 2) TEST_ERROR
} /* end for */
/* Close the file */
@@ -2363,8 +2367,8 @@ test_full_group_dense(hid_t fapl)
/* Check reference count on objects to keep */
for(u = 0; u < FULL_GROUP_NUM_KEEP; u++) {
sprintf(objname, "/keep/keep %u\n", u);
- if(H5Gget_objinfo(file_id, objname, TRUE, &sb) < 0) FAIL_STACK_ERROR
- if(sb.nlink != 1) TEST_ERROR
+ if(H5Oget_info(file_id, objname, &oi, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
+ if(oi.rc != 1) TEST_ERROR
} /* end for */
/* Close the file */
diff --git a/test/vfd.c b/test/vfd.c
index 0694879..97a2526 100644
--- a/test/vfd.c
+++ b/test/vfd.c
@@ -1017,10 +1017,8 @@ test_multi(void)
/* Before any data is written, the raw data file is empty. So
* the file size is only the size of b-tree + HADDR_MAX/4.
*/
-#ifdef H5_HAVE_LARGE_HSIZET
if(file_size < HADDR_MAX/4 || file_size > HADDR_MAX/2)
TEST_ERROR;
-#endif /* H5_HAVE_LARGE_HSIZET */
if((dset=H5Dcreate(file, dname, H5T_NATIVE_INT, space, H5P_DEFAULT))<0)
TEST_ERROR;
@@ -1055,10 +1053,8 @@ test_multi(void)
* beginning of raw data file is set at HADDR_MAX/2. It's supposed
* to be (HADDR_MAX/2 + 128*128*4)
*/
-#ifdef H5_HAVE_LARGE_HSIZET
if(file_size < HADDR_MAX/2 || file_size > HADDR_MAX)
TEST_ERROR;
-#endif /* H5_HAVE_LARGE_HSIZET */
if(H5Sclose(space)<0)
TEST_ERROR;
diff --git a/tools/h5diff/h5diff_main.c b/tools/h5diff/h5diff_main.c
index 13059f2..c5c447c 100644
--- a/tools/h5diff/h5diff_main.c
+++ b/tools/h5diff/h5diff_main.c
@@ -65,29 +65,29 @@
int main(int argc, const char *argv[])
{
- int ret;
- const char *fname1 = NULL;
- const char *fname2 = NULL;
- const char *objname1 = NULL;
- const char *objname2 = NULL;
- hsize_t nfound=0;
- diff_opt_t options;
+ int ret;
+ const char *fname1 = NULL;
+ const char *fname2 = NULL;
+ const char *objname1 = NULL;
+ const char *objname2 = NULL;
+ hsize_t nfound=0;
+ diff_opt_t options;
- parse_input(argc, argv, &fname1, &fname2, &objname1, &objname2, &options);
+ parse_input(argc, argv, &fname1, &fname2, &objname1, &objname2, &options);
- nfound = h5diff(fname1,fname2,objname1,objname2,&options);
+ nfound = h5diff(fname1,fname2,objname1,objname2,&options);
- print_info(&options);
+ print_info(&options);
-/*-------------------------------------------------------------------------
- * exit code
- * >0 if differences, 0 if no differences, <0 if error
- *-------------------------------------------------------------------------
- */
+ /*-------------------------------------------------------------------------
+ * exit code
+ * >0 if differences, 0 if no differences, <0 if error
+ *-------------------------------------------------------------------------
+ */
- ret= (nfound==0 ? 0 : 1 );
- if (options.err_stat)
- ret=-1;
- return ret;
+ ret = (nfound == 0 ? 0 : 1 );
+ if(options.err_stat)
+ ret = -1;
+ return ret;
}
diff --git a/tools/h5diff/ph5diff_main.c b/tools/h5diff/ph5diff_main.c
index 989a74b..9cbc993 100644
--- a/tools/h5diff/ph5diff_main.c
+++ b/tools/h5diff/ph5diff_main.c
@@ -72,40 +72,40 @@ int main(int argc, const char *argv[])
if(g_nTasks == 1)
{
- printf("Only 1 task available...doing serial diff\n");
+ printf("Only 1 task available...doing serial diff\n");
- g_Parallel = 0;
+ g_Parallel = 0;
- parse_input(argc, argv, &fname1, &fname2, &objname1, &objname2, &options);
+ parse_input(argc, argv, &fname1, &fname2, &objname1, &objname2, &options);
- nfound = h5diff(fname1,fname2,objname1,objname2,&options);
+ nfound = h5diff(fname1, fname2, objname1, objname2, &options);
- print_info(&options);
+ print_info(&options);
- MPI_Finalize();
+ MPI_Finalize();
- return 0;
+ return 0;
}
/* Have the manager process the command-line */
if(nID == 0)
{
- parse_input(argc, argv, &fname1, &fname2, &objname1, &objname2, &options);
+ parse_input(argc, argv, &fname1, &fname2, &objname1, &objname2, &options);
- nfound = h5diff(fname1,fname2,objname1,objname2,&options);
+ nfound = h5diff(fname1, fname2, objname1, objname2, &options);
- MPI_Barrier(MPI_COMM_WORLD);
+ MPI_Barrier(MPI_COMM_WORLD);
- print_info(&options);
- print_manager_output();
+ print_info(&options);
+ print_manager_output();
- MPI_Finalize();
+ MPI_Finalize();
- return 0;
+ return 0;
}
/* All other tasks become workers and wait for assignments. */
else
- ph5diff_worker(nID);
+ ph5diff_worker(nID);
}
/*-------------------------------------------------------------------------
diff --git a/tools/h5dump/h5dump.c b/tools/h5dump/h5dump.c
index 0a2ca3b..5706837 100644
--- a/tools/h5dump/h5dump.c
+++ b/tools/h5dump/h5dump.c
@@ -56,7 +56,7 @@ const char *progname = "h5dump";
#define H5_SZIP_RAW_OPTION_MASK 128
int d_status = EXIT_SUCCESS;
-static int unamedtype = 0; /* shared data type with no name */
+static int unamedtype = 0; /* shared datatype with no name */
static table_t *group_table = NULL, *dset_table = NULL, *type_table = NULL;
static size_t prefix_len = 1024;
static char *prefix;
@@ -621,7 +621,7 @@ usage(const char *prog)
fprintf(stdout, " with -o (output file) and -d (dataset). B can be:\n");
fprintf(stdout, " MEMORY for a memory type, FILE for the file type,\n");
fprintf(stdout, " LE or BE for pre-existing little or big endian types\n");
- fprintf(stdout, " -t P, --datatype=P Print the specified named data type\n");
+ fprintf(stdout, " -t P, --datatype=P Print the specified named datatype\n");
fprintf(stdout, " -w N, --width=N Set the number of columns of output\n");
fprintf(stdout, " -x, --xml Output in XML using Schema\n");
fprintf(stdout, " -u, --use-dtd Output in XML using DTD\n");
@@ -674,7 +674,7 @@ usage(const char *prog)
/*-------------------------------------------------------------------------
* Function: print_datatype
*
- * Purpose: print the data type.
+ * Purpose: print the datatype.
*
* Return: void
*
@@ -706,16 +706,14 @@ print_datatype(hid_t type,unsigned in_group)
const char *sign_s=NULL; /* sign scheme string */
if (!in_group && H5Tcommitted(type) > 0) {
- H5G_stat_t statbuf;
- haddr_t objno; /* Compact form of object's location */
+ H5O_info_t oinfo;
obj_t *obj; /* Found object */
- H5Gget_objinfo(type, ".", TRUE, &statbuf);
- objno = (haddr_t)statbuf.objno[0] | ((haddr_t)statbuf.objno[1] << (8 * sizeof(long)));
- obj = search_obj(type_table, objno);
+ H5Oget_info(type, ".", &oinfo, H5P_DEFAULT);
+ obj = search_obj(type_table, oinfo.addr);
- if (obj) {
- if (!obj->recorded)
+ if(obj) {
+ if(!obj->recorded)
HDfprintf(stdout,"\"/#%a\"", obj->objno);
else
printf("\"%s\"", obj->objname);
@@ -724,371 +722,369 @@ print_datatype(hid_t type,unsigned in_group)
d_status = EXIT_FAILURE;
}
} else {
- switch (H5Tget_class(type)) {
- case H5T_INTEGER:
- if (H5Tequal(type, H5T_STD_I8BE)==TRUE) {
- printf("H5T_STD_I8BE");
- } else if (H5Tequal(type, H5T_STD_I8LE)==TRUE) {
- printf("H5T_STD_I8LE");
- } else if (H5Tequal(type, H5T_STD_I16BE)==TRUE) {
- printf("H5T_STD_I16BE");
- } else if (H5Tequal(type, H5T_STD_I16LE)==TRUE) {
- printf("H5T_STD_I16LE");
- } else if (H5Tequal(type, H5T_STD_I32BE)==TRUE) {
- printf("H5T_STD_I32BE");
- } else if (H5Tequal(type, H5T_STD_I32LE)==TRUE) {
- printf("H5T_STD_I32LE");
- } else if (H5Tequal(type, H5T_STD_I64BE)==TRUE) {
- printf("H5T_STD_I64BE");
- } else if (H5Tequal(type, H5T_STD_I64LE)==TRUE) {
- printf("H5T_STD_I64LE");
- } else if (H5Tequal(type, H5T_STD_U8BE)==TRUE) {
- printf("H5T_STD_U8BE");
- } else if (H5Tequal(type, H5T_STD_U8LE)==TRUE) {
- printf("H5T_STD_U8LE");
- } else if (H5Tequal(type, H5T_STD_U16BE)==TRUE) {
- printf("H5T_STD_U16BE");
- } else if (H5Tequal(type, H5T_STD_U16LE)==TRUE) {
- printf("H5T_STD_U16LE");
- } else if (H5Tequal(type, H5T_STD_U32BE)==TRUE) {
- printf("H5T_STD_U32BE");
- } else if (H5Tequal(type, H5T_STD_U32LE)==TRUE) {
- printf("H5T_STD_U32LE");
- } else if (H5Tequal(type, H5T_STD_U64BE)==TRUE) {
- printf("H5T_STD_U64BE");
- } else if (H5Tequal(type, H5T_STD_U64LE)==TRUE) {
- printf("H5T_STD_U64LE");
- } else if (H5Tequal(type, H5T_NATIVE_SCHAR)==TRUE) {
- printf("H5T_NATIVE_SCHAR");
- } else if (H5Tequal(type, H5T_NATIVE_UCHAR)==TRUE) {
- printf("H5T_NATIVE_UCHAR");
- } else if (H5Tequal(type, H5T_NATIVE_SHORT)==TRUE) {
- printf("H5T_NATIVE_SHORT");
- } else if (H5Tequal(type, H5T_NATIVE_USHORT)==TRUE) {
- printf("H5T_NATIVE_USHORT");
- } else if (H5Tequal(type, H5T_NATIVE_INT)==TRUE) {
- printf("H5T_NATIVE_INT");
- } else if (H5Tequal(type, H5T_NATIVE_UINT)==TRUE) {
- printf("H5T_NATIVE_UINT");
- } else if (H5Tequal(type, H5T_NATIVE_LONG)==TRUE) {
- printf("H5T_NATIVE_LONG");
- } else if (H5Tequal(type, H5T_NATIVE_ULONG)==TRUE) {
- printf("H5T_NATIVE_ULONG");
- } else if (H5Tequal(type, H5T_NATIVE_LLONG)==TRUE) {
- printf("H5T_NATIVE_LLONG");
- } else if (H5Tequal(type, H5T_NATIVE_ULLONG)==TRUE) {
- printf("H5T_NATIVE_ULLONG");
- } else {
+ switch(H5Tget_class(type)) {
+ case H5T_INTEGER:
+ if(H5Tequal(type, H5T_STD_I8BE) == TRUE) {
+ printf("H5T_STD_I8BE");
+ } else if(H5Tequal(type, H5T_STD_I8LE) == TRUE) {
+ printf("H5T_STD_I8LE");
+ } else if(H5Tequal(type, H5T_STD_I16BE) == TRUE) {
+ printf("H5T_STD_I16BE");
+ } else if(H5Tequal(type, H5T_STD_I16LE) == TRUE) {
+ printf("H5T_STD_I16LE");
+ } else if(H5Tequal(type, H5T_STD_I32BE) == TRUE) {
+ printf("H5T_STD_I32BE");
+ } else if(H5Tequal(type, H5T_STD_I32LE) == TRUE) {
+ printf("H5T_STD_I32LE");
+ } else if(H5Tequal(type, H5T_STD_I64BE) == TRUE) {
+ printf("H5T_STD_I64BE");
+ } else if(H5Tequal(type, H5T_STD_I64LE) == TRUE) {
+ printf("H5T_STD_I64LE");
+ } else if(H5Tequal(type, H5T_STD_U8BE) == TRUE) {
+ printf("H5T_STD_U8BE");
+ } else if(H5Tequal(type, H5T_STD_U8LE) == TRUE) {
+ printf("H5T_STD_U8LE");
+ } else if(H5Tequal(type, H5T_STD_U16BE) == TRUE) {
+ printf("H5T_STD_U16BE");
+ } else if(H5Tequal(type, H5T_STD_U16LE) == TRUE) {
+ printf("H5T_STD_U16LE");
+ } else if(H5Tequal(type, H5T_STD_U32BE) == TRUE) {
+ printf("H5T_STD_U32BE");
+ } else if(H5Tequal(type, H5T_STD_U32LE) == TRUE) {
+ printf("H5T_STD_U32LE");
+ } else if(H5Tequal(type, H5T_STD_U64BE) == TRUE) {
+ printf("H5T_STD_U64BE");
+ } else if(H5Tequal(type, H5T_STD_U64LE) == TRUE) {
+ printf("H5T_STD_U64LE");
+ } else if(H5Tequal(type, H5T_NATIVE_SCHAR) == TRUE) {
+ printf("H5T_NATIVE_SCHAR");
+ } else if(H5Tequal(type, H5T_NATIVE_UCHAR) == TRUE) {
+ printf("H5T_NATIVE_UCHAR");
+ } else if(H5Tequal(type, H5T_NATIVE_SHORT) == TRUE) {
+ printf("H5T_NATIVE_SHORT");
+ } else if(H5Tequal(type, H5T_NATIVE_USHORT) == TRUE) {
+ printf("H5T_NATIVE_USHORT");
+ } else if(H5Tequal(type, H5T_NATIVE_INT) == TRUE) {
+ printf("H5T_NATIVE_INT");
+ } else if(H5Tequal(type, H5T_NATIVE_UINT) == TRUE) {
+ printf("H5T_NATIVE_UINT");
+ } else if(H5Tequal(type, H5T_NATIVE_LONG) == TRUE) {
+ printf("H5T_NATIVE_LONG");
+ } else if(H5Tequal(type, H5T_NATIVE_ULONG) == TRUE) {
+ printf("H5T_NATIVE_ULONG");
+ } else if(H5Tequal(type, H5T_NATIVE_LLONG) == TRUE) {
+ printf("H5T_NATIVE_LLONG");
+ } else if(H5Tequal(type, H5T_NATIVE_ULLONG) == TRUE) {
+ printf("H5T_NATIVE_ULLONG");
+ } else {
- /* byte order */
- if (H5Tget_size(type)>1)
- {
- order = H5Tget_order(type);
- if (H5T_ORDER_LE==order) {
- order_s = " little-endian";
- } else if (H5T_ORDER_BE==order) {
- order_s = " big-endian";
- } else if (H5T_ORDER_VAX==order) {
- order_s = " mixed-endian";
- } else {
- order_s = " unknown-byte-order";
- }
- } else {
- order_s = "";
- }
-
- /* sign */
- if ((sign=H5Tget_sign(type))>=0)
- {
- if (H5T_SGN_NONE==sign) {
- sign_s = " unsigned";
- } else if (H5T_SGN_2==sign) {
- sign_s = "";
- } else {
- sign_s = " unknown-sign";
- }
- } else {
- sign_s = " unknown-sign";
- }
-
- /* print size, order, and sign */
- printf("%lu-bit%s%s integer",
- (unsigned long)(8*H5Tget_size(type)), order_s, sign_s);
- }
- break;
+ /* byte order */
+ if(H5Tget_size(type)>1) {
+ order = H5Tget_order(type);
+ if (H5T_ORDER_LE == order) {
+ order_s = " little-endian";
+ } else if (H5T_ORDER_BE == order) {
+ order_s = " big-endian";
+ } else if (H5T_ORDER_VAX == order) {
+ order_s = " mixed-endian";
+ } else {
+ order_s = " unknown-byte-order";
+ }
+ } else {
+ order_s = "";
+ }
+
+ /* sign */
+ if ((sign=H5Tget_sign(type))>=0)
+ {
+ if (H5T_SGN_NONE == sign) {
+ sign_s = " unsigned";
+ } else if (H5T_SGN_2 == sign) {
+ sign_s = "";
+ } else {
+ sign_s = " unknown-sign";
+ }
+ } else {
+ sign_s = " unknown-sign";
+ }
+
+ /* print size, order, and sign */
+ printf("%lu-bit%s%s integer",
+ (unsigned long)(8*H5Tget_size(type)), order_s, sign_s);
+ }
+ break;
- case H5T_FLOAT:
- if (H5Tequal(type, H5T_IEEE_F32BE)==TRUE) {
- printf("H5T_IEEE_F32BE");
- } else if (H5Tequal(type, H5T_IEEE_F32LE)==TRUE) {
- printf("H5T_IEEE_F32LE");
- } else if (H5Tequal(type, H5T_IEEE_F64BE)==TRUE) {
- printf("H5T_IEEE_F64BE");
- } else if (H5Tequal(type, H5T_IEEE_F64LE)==TRUE) {
- printf("H5T_IEEE_F64LE");
- } else if (H5Tequal(type, H5T_VAX_F32)==TRUE) {
- printf("H5T_VAX_F32");
- } else if (H5Tequal(type, H5T_VAX_F64)==TRUE) {
- printf("H5T_VAX_F64");
- } else if (H5Tequal(type, H5T_NATIVE_FLOAT)==TRUE) {
- printf("H5T_NATIVE_FLOAT");
- } else if (H5Tequal(type, H5T_NATIVE_DOUBLE)==TRUE) {
- printf("H5T_NATIVE_DOUBLE");
+ case H5T_FLOAT:
+ if(H5Tequal(type, H5T_IEEE_F32BE) == TRUE) {
+ printf("H5T_IEEE_F32BE");
+ } else if(H5Tequal(type, H5T_IEEE_F32LE) == TRUE) {
+ printf("H5T_IEEE_F32LE");
+ } else if(H5Tequal(type, H5T_IEEE_F64BE) == TRUE) {
+ printf("H5T_IEEE_F64BE");
+ } else if(H5Tequal(type, H5T_IEEE_F64LE) == TRUE) {
+ printf("H5T_IEEE_F64LE");
+ } else if(H5Tequal(type, H5T_VAX_F32) == TRUE) {
+ printf("H5T_VAX_F32");
+ } else if(H5Tequal(type, H5T_VAX_F64) == TRUE) {
+ printf("H5T_VAX_F64");
+ } else if(H5Tequal(type, H5T_NATIVE_FLOAT) == TRUE) {
+ printf("H5T_NATIVE_FLOAT");
+ } else if(H5Tequal(type, H5T_NATIVE_DOUBLE) == TRUE) {
+ printf("H5T_NATIVE_DOUBLE");
#if H5_SIZEOF_LONG_DOUBLE !=0
- } else if (H5Tequal(type, H5T_NATIVE_LDOUBLE)==TRUE) {
- printf("H5T_NATIVE_LDOUBLE");
+ } else if(H5Tequal(type, H5T_NATIVE_LDOUBLE) == TRUE) {
+ printf("H5T_NATIVE_LDOUBLE");
#endif
- } else {
-
- /* byte order */
- if (H5Tget_size(type)>1)
- {
- order = H5Tget_order(type);
- if (H5T_ORDER_LE==order) {
- order_s = " little-endian";
- } else if (H5T_ORDER_BE==order) {
- order_s = " big-endian";
- } else if (H5T_ORDER_VAX==order) {
- order_s = " mixed-endian";
- } else {
- order_s = " unknown-byte-order";
- }
- } else {
- order_s = "";
- }
-
- /* print size and byte order */
- printf("%lu-bit%s floating-point",
- (unsigned long)(8*H5Tget_size(type)), order_s);
+ } else {
- }
- break;
+ /* byte order */
+ if(H5Tget_size(type)>1) {
+ order = H5Tget_order(type);
+ if (H5T_ORDER_LE == order) {
+ order_s = " little-endian";
+ } else if (H5T_ORDER_BE == order) {
+ order_s = " big-endian";
+ } else if (H5T_ORDER_VAX == order) {
+ order_s = " mixed-endian";
+ } else {
+ order_s = " unknown-byte-order";
+ }
+ } else {
+ order_s = "";
+ }
- case H5T_TIME:
- printf("H5T_TIME: not yet implemented");
- break;
+ /* print size and byte order */
+ printf("%lu-bit%s floating-point",
+ (unsigned long)(8*H5Tget_size(type)), order_s);
- case H5T_STRING:
- /* Make a copy of type in memory in case when TYPE is on disk, the size
- * will be bigger than in memory. This makes it easier to compare
- * types in memory. */
- tmp_type = H5Tcopy(type);
- size = H5Tget_size(tmp_type);
- str_pad = H5Tget_strpad(tmp_type);
- cset = H5Tget_cset(tmp_type);
- is_vlstr = H5Tis_variable_str(tmp_type);
-
- printf("H5T_STRING %s\n", dump_header_format->strblockbegin);
- indent += COL;
+ }
+ break;
- indentation(indent + COL);
- if(is_vlstr)
- printf("%s H5T_VARIABLE;\n", STRSIZE);
- else
- printf("%s %d;\n", STRSIZE, (int) size);
+ case H5T_TIME:
+ printf("H5T_TIME: not yet implemented");
+ break;
- indentation(indent + COL);
- printf("%s ", STRPAD);
- if (str_pad == H5T_STR_NULLTERM)
- printf("H5T_STR_NULLTERM;\n");
- else if (str_pad == H5T_STR_NULLPAD)
- printf("H5T_STR_NULLPAD;\n");
- else if (str_pad == H5T_STR_SPACEPAD)
- printf("H5T_STR_SPACEPAD;\n");
- else
- printf("H5T_STR_ERROR;\n");
+ case H5T_STRING:
+ /* Make a copy of type in memory in case when TYPE is on disk, the size
+ * will be bigger than in memory. This makes it easier to compare
+ * types in memory. */
+ tmp_type = H5Tcopy(type);
+ size = H5Tget_size(tmp_type);
+ str_pad = H5Tget_strpad(tmp_type);
+ cset = H5Tget_cset(tmp_type);
+ is_vlstr = H5Tis_variable_str(tmp_type);
+
+ printf("H5T_STRING %s\n", dump_header_format->strblockbegin);
+ indent += COL;
- indentation(indent + COL);
- printf("%s ", CSET);
+ indentation(indent + COL);
+ if(is_vlstr)
+ printf("%s H5T_VARIABLE;\n", STRSIZE);
+ else
+ printf("%s %d;\n", STRSIZE, (int) size);
- if (cset == H5T_CSET_ASCII)
- printf("H5T_CSET_ASCII;\n");
- else
- printf("unknown_cset;\n");
+ indentation(indent + COL);
+ printf("%s ", STRPAD);
+ if (str_pad == H5T_STR_NULLTERM)
+ printf("H5T_STR_NULLTERM;\n");
+ else if (str_pad == H5T_STR_NULLPAD)
+ printf("H5T_STR_NULLPAD;\n");
+ else if (str_pad == H5T_STR_SPACEPAD)
+ printf("H5T_STR_SPACEPAD;\n");
+ else
+ printf("H5T_STR_ERROR;\n");
- str_type = H5Tcopy(H5T_C_S1);
- if(is_vlstr)
- H5Tset_size(str_type, H5T_VARIABLE);
- else
- H5Tset_size(str_type, size);
- H5Tset_cset(str_type, cset);
- H5Tset_strpad(str_type, str_pad);
+ indentation(indent + COL);
+ printf("%s ", CSET);
- indentation(indent + COL);
- printf("%s ", CTYPE);
+ if (cset == H5T_CSET_ASCII)
+ printf("H5T_CSET_ASCII;\n");
+ else
+ printf("unknown_cset;\n");
- /* Check C variable-length string first. Are the two types equal? */
- if (H5Tequal(tmp_type, str_type)) {
- printf("H5T_C_S1;\n");
- goto done;
- }
+ str_type = H5Tcopy(H5T_C_S1);
+ if(is_vlstr)
+ H5Tset_size(str_type, H5T_VARIABLE);
+ else
+ H5Tset_size(str_type, size);
+ H5Tset_cset(str_type, cset);
+ H5Tset_strpad(str_type, str_pad);
- /* Change the endianness and see if they're equal. */
- order = H5Tget_order(tmp_type);
- if(order==H5T_ORDER_LE)
- H5Tset_order(str_type, H5T_ORDER_LE);
- else if(order==H5T_ORDER_BE)
- H5Tset_order(str_type, H5T_ORDER_BE);
+ indentation(indent + COL);
+ printf("%s ", CTYPE);
- if (H5Tequal(tmp_type, str_type)) {
- printf("H5T_C_S1;\n");
- goto done;
- }
+ /* Check C variable-length string first. Are the two types equal? */
+ if (H5Tequal(tmp_type, str_type)) {
+ printf("H5T_C_S1;\n");
+ goto done;
+ }
- /* If not equal to C variable-length string, check Fortran type. */
- H5Tclose(str_type);
- str_type = H5Tcopy(H5T_FORTRAN_S1);
- H5Tset_cset(str_type, cset);
- H5Tset_size(str_type, size);
- H5Tset_strpad(str_type, str_pad);
-
- /* Are the two types equal? */
- if (H5Tequal(tmp_type, str_type)) {
- printf("H5T_FORTRAN_S1;\n");
- goto done;
- }
+ /* Change the endianness and see if they're equal. */
+ order = H5Tget_order(tmp_type);
+ if(order==H5T_ORDER_LE)
+ H5Tset_order(str_type, H5T_ORDER_LE);
+ else if(order==H5T_ORDER_BE)
+ H5Tset_order(str_type, H5T_ORDER_BE);
- /* Change the endianness and see if they're equal. */
- order = H5Tget_order(tmp_type);
- if(order==H5T_ORDER_LE)
- H5Tset_order(str_type, H5T_ORDER_LE);
- else if(order==H5T_ORDER_BE)
- H5Tset_order(str_type, H5T_ORDER_BE);
+ if (H5Tequal(tmp_type, str_type)) {
+ printf("H5T_C_S1;\n");
+ goto done;
+ }
- if (H5Tequal(tmp_type, str_type)) {
- printf("H5T_FORTRAN_S1;\n");
- goto done;
- }
+ /* If not equal to C variable-length string, check Fortran type. */
+ H5Tclose(str_type);
+ str_type = H5Tcopy(H5T_FORTRAN_S1);
+ H5Tset_cset(str_type, cset);
+ H5Tset_size(str_type, size);
+ H5Tset_strpad(str_type, str_pad);
- /* Type doesn't match any of above. */
- printf("unknown_one_character_type;\n ");
- d_status = EXIT_FAILURE;
+ /* Are the two types equal? */
+ if (H5Tequal(tmp_type, str_type)) {
+ printf("H5T_FORTRAN_S1;\n");
+ goto done;
+ }
-done:
- H5Tclose(str_type);
- H5Tclose(tmp_type);
+ /* Change the endianness and see if they're equal. */
+ order = H5Tget_order(tmp_type);
+ if(order==H5T_ORDER_LE)
+ H5Tset_order(str_type, H5T_ORDER_LE);
+ else if(order==H5T_ORDER_BE)
+ H5Tset_order(str_type, H5T_ORDER_BE);
- indent -= COL;
- indentation(indent + COL);
- printf("%s", dump_header_format->strblockend);
- break;
+ if (H5Tequal(tmp_type, str_type)) {
+ printf("H5T_FORTRAN_S1;\n");
+ goto done;
+ }
- case H5T_BITFIELD:
- if (H5Tequal(type, H5T_STD_B8BE)==TRUE) {
- printf("H5T_STD_B8BE");
- } else if (H5Tequal(type, H5T_STD_B8LE)==TRUE) {
- printf("H5T_STD_B8LE");
- } else if (H5Tequal(type, H5T_STD_B16BE)==TRUE) {
- printf("H5T_STD_B16BE");
- } else if (H5Tequal(type, H5T_STD_B16LE)==TRUE) {
- printf("H5T_STD_B16LE");
- } else if (H5Tequal(type, H5T_STD_B32BE)==TRUE) {
- printf("H5T_STD_B32BE");
- } else if (H5Tequal(type, H5T_STD_B32LE)==TRUE) {
- printf("H5T_STD_B32LE");
- } else if (H5Tequal(type, H5T_STD_B64BE)==TRUE) {
- printf("H5T_STD_B64BE");
- } else if (H5Tequal(type, H5T_STD_B64LE)==TRUE) {
- printf("H5T_STD_B64LE");
- } else {
- printf("undefined bitfield");
+ /* Type doesn't match any of above. */
+ printf("unknown_one_character_type;\n ");
d_status = EXIT_FAILURE;
- }
- break;
- case H5T_OPAQUE:
- printf("\n");
- indentation(indent + COL);
- printf("H5T_OPAQUE;\n");
- indentation(indent + COL);
- printf("OPAQUE_TAG \"%s\";\n", H5Tget_tag(type));
- indentation(indent);
- break;
+ done:
+ H5Tclose(str_type);
+ H5Tclose(tmp_type);
+
+ indent -= COL;
+ indentation(indent + COL);
+ printf("%s", dump_header_format->strblockend);
+ break;
- case H5T_COMPOUND:
- nmembers = H5Tget_nmembers(type);
- printf("H5T_COMPOUND %s\n", dump_header_format->structblockbegin);
+ case H5T_BITFIELD:
+ if (H5Tequal(type, H5T_STD_B8BE)==TRUE) {
+ printf("H5T_STD_B8BE");
+ } else if (H5Tequal(type, H5T_STD_B8LE)==TRUE) {
+ printf("H5T_STD_B8LE");
+ } else if (H5Tequal(type, H5T_STD_B16BE)==TRUE) {
+ printf("H5T_STD_B16BE");
+ } else if (H5Tequal(type, H5T_STD_B16LE)==TRUE) {
+ printf("H5T_STD_B16LE");
+ } else if (H5Tequal(type, H5T_STD_B32BE)==TRUE) {
+ printf("H5T_STD_B32BE");
+ } else if (H5Tequal(type, H5T_STD_B32LE)==TRUE) {
+ printf("H5T_STD_B32LE");
+ } else if (H5Tequal(type, H5T_STD_B64BE)==TRUE) {
+ printf("H5T_STD_B64BE");
+ } else if (H5Tequal(type, H5T_STD_B64LE)==TRUE) {
+ printf("H5T_STD_B64LE");
+ } else {
+ printf("undefined bitfield");
+ d_status = EXIT_FAILURE;
+ }
+ break;
- for (i = 0; i < nmembers; i++) {
- mname = H5Tget_member_name(type, i);
- mtype = H5Tget_member_type(type, i);
+ case H5T_OPAQUE:
+ printf("\n");
+ indentation(indent + COL);
+ printf("H5T_OPAQUE;\n");
indentation(indent + COL);
+ printf("OPAQUE_TAG \"%s\";\n", H5Tget_tag(type));
+ indentation(indent);
+ break;
- if (H5Tget_class(mtype) == H5T_COMPOUND)
- indent += COL;
+ case H5T_COMPOUND:
+ nmembers = H5Tget_nmembers(type);
+ printf("H5T_COMPOUND %s\n", dump_header_format->structblockbegin);
- print_datatype(mtype,0);
+ for (i = 0; i < nmembers; i++) {
+ mname = H5Tget_member_name(type, i);
+ mtype = H5Tget_member_type(type, i);
+ indentation(indent + COL);
- if (H5Tget_class(mtype) == H5T_COMPOUND)
- indent -= COL;
+ if (H5Tget_class(mtype) == H5T_COMPOUND)
+ indent += COL;
- printf(" \"%s\";\n", mname);
- free(mname);
- }
+ print_datatype(mtype,0);
- indentation(indent);
- printf("%s", dump_header_format->structblockend);
- break;
+ if (H5Tget_class(mtype) == H5T_COMPOUND)
+ indent -= COL;
- case H5T_REFERENCE:
- printf("H5T_REFERENCE");
- break;
+ printf(" \"%s\";\n", mname);
+ free(mname);
+ }
- case H5T_ENUM:
- printf("H5T_ENUM %s\n", dump_header_format->enumblockbegin);
- indent += COL;
- indentation(indent + COL);
- super = H5Tget_super(type);
- print_datatype(super,0);
- printf(";\n");
- print_enum(type);
- indent -= COL;
- indentation(indent + COL);
- printf("%s", dump_header_format->enumblockend);
- break;
+ indentation(indent);
+ printf("%s", dump_header_format->structblockend);
+ break;
- case H5T_VLEN:
- printf("H5T_VLEN %s ", dump_header_format->vlenblockbegin);
- super = H5Tget_super(type);
- print_datatype(super,0);
- H5Tclose(super);
+ case H5T_REFERENCE:
+ printf("H5T_REFERENCE");
+ break;
- /* Print closing */
- printf("%s", dump_header_format->vlenblockend);
- break;
+ case H5T_ENUM:
+ printf("H5T_ENUM %s\n", dump_header_format->enumblockbegin);
+ indent += COL;
+ indentation(indent + COL);
+ super = H5Tget_super(type);
+ print_datatype(super,0);
+ printf(";\n");
+ print_enum(type);
+ indent -= COL;
+ indentation(indent + COL);
+ printf("%s", dump_header_format->enumblockend);
+ break;
- case H5T_ARRAY:
- /* Get array base type */
- super = H5Tget_super(type);
+ case H5T_VLEN:
+ printf("H5T_VLEN %s ", dump_header_format->vlenblockbegin);
+ super = H5Tget_super(type);
+ print_datatype(super,0);
+ H5Tclose(super);
- /* Print lead-in */
- printf("H5T_ARRAY { ");
+ /* Print closing */
+ printf("%s", dump_header_format->vlenblockend);
+ break;
- /* Get array information */
- ndims = H5Tget_array_ndims(type);
- H5Tget_array_dims(type, dims, NULL);
+ case H5T_ARRAY:
+ /* Get array base type */
+ super = H5Tget_super(type);
- /* Print array dimensions */
- for (i = 0; i < ndims; i++)
- printf("[%d]", (int) dims[i]);
+ /* Print lead-in */
+ printf("H5T_ARRAY { ");
- printf(" ");
+ /* Get array information */
+ ndims = H5Tget_array_ndims(type);
+ H5Tget_array_dims(type, dims, NULL);
- /* Print base type */
- print_datatype(super,0);
+ /* Print array dimensions */
+ for (i = 0; i < ndims; i++)
+ printf("[%d]", (int) dims[i]);
- /* Close array base type */
- H5Tclose(super);
+ printf(" ");
- /* Print closing */
- printf(" }");
+ /* Print base type */
+ print_datatype(super,0);
- break;
+ /* Close array base type */
+ H5Tclose(super);
- default:
- printf("unknown data type");
- d_status = EXIT_FAILURE;
- break;
+ /* Print closing */
+ printf(" }");
+
+ break;
+
+ default:
+ printf("unknown datatype");
+ d_status = EXIT_FAILURE;
+ break;
}
} /* end else */
}
@@ -1097,8 +1093,8 @@ done:
/*-------------------------------------------------------------------------
* Function: dump_datatype
*
- * Purpose: Dump the data type. Data type can be HDF5 predefined
- * atomic data type or committed/transient data type.
+ * Purpose: Dump the datatype. Datatype can be HDF5 predefined
+ * atomic datatype or committed/transient datatype.
*
* Return: void
*
@@ -1127,7 +1123,7 @@ dump_datatype(hid_t type)
/*-------------------------------------------------------------------------
* Function: dump_dataspace
*
- * Purpose: Dump the data space. Data space can be named data space,
+ * Purpose: Dump the dataspace. Dataspace can be named dataspace,
* array, or others.
*
* Return: void
@@ -1150,49 +1146,52 @@ dump_dataspace(hid_t space)
indentation(indent + COL);
printf("%s ", dump_header_format->dataspacebegin);
- switch (space_type) {
+ switch(space_type) {
case H5S_SCALAR:
- /* scalar dataspace */
- HDfprintf(stdout, "%s %s",
- dump_header_format->dataspacedescriptionbegin, S_SCALAR);
+ /* scalar dataspace */
+ HDfprintf(stdout, "%s %s",
+ dump_header_format->dataspacedescriptionbegin, S_SCALAR);
break;
+
case H5S_SIMPLE:
- /* simple dataspace */
- HDfprintf(stdout, "%s %s { %s %Hu",
- dump_header_format->dataspacedescriptionbegin, S_SIMPLE,
- dump_header_format->dataspacedimbegin, size[0]);
+ /* simple dataspace */
+ HDfprintf(stdout, "%s %s { %s %Hu",
+ dump_header_format->dataspacedescriptionbegin, S_SIMPLE,
+ dump_header_format->dataspacedimbegin, size[0]);
- for (i = 1; i < ndims; i++)
- HDfprintf(stdout, ", %Hu", size[i]);
+ for(i = 1; i < ndims; i++)
+ HDfprintf(stdout, ", %Hu", size[i]);
- printf(" %s / ", dump_header_format->dataspacedimend);
+ printf(" %s / ", dump_header_format->dataspacedimend);
- if (maxsize[0] == H5S_UNLIMITED)
- HDfprintf(stdout, "%s %s",
- dump_header_format->dataspacedimbegin,
- "H5S_UNLIMITED");
- else
- HDfprintf(stdout, "%s %Hu",
- dump_header_format->dataspacedimbegin, maxsize[0]);
+ if(maxsize[0] == H5S_UNLIMITED)
+ HDfprintf(stdout, "%s %s",
+ dump_header_format->dataspacedimbegin,
+ "H5S_UNLIMITED");
+ else
+ HDfprintf(stdout, "%s %Hu",
+ dump_header_format->dataspacedimbegin, maxsize[0]);
- for (i = 1; i < ndims; i++)
- if (maxsize[i] == H5S_UNLIMITED)
- HDfprintf(stdout, ", %s", "H5S_UNLIMITED");
- else
- HDfprintf(stdout, ", %Hu", maxsize[i]);
+ for(i = 1; i < ndims; i++)
+ if(maxsize[i] == H5S_UNLIMITED)
+ HDfprintf(stdout, ", %s", "H5S_UNLIMITED");
+ else
+ HDfprintf(stdout, ", %Hu", maxsize[i]);
- printf(" %s }", dump_header_format->dataspacedimend);
+ printf(" %s }", dump_header_format->dataspacedimend);
+ break;
- break;
case H5S_NULL:
- /* null dataspace */
- HDfprintf(stdout, "%s %s",
- dump_header_format->dataspacedescriptionbegin, S_NULL);
+ /* null dataspace */
+ HDfprintf(stdout, "%s %s",
+ dump_header_format->dataspacedescriptionbegin, S_NULL);
break;
+
case H5S_NO_CLASS:
default:
- printf("%s unknown dataspace %s\n", BEGIN, END);
- }
+ printf("%s unknown dataspace %s\n", BEGIN, END);
+ break;
+ } /* end switch */
end_obj(dump_header_format->dataspaceend,
dump_header_format->dataspaceblockend);
@@ -1214,41 +1213,44 @@ dump_dataspace(hid_t space)
*-------------------------------------------------------------------------
*/
static herr_t
-dump_attr(hid_t attr, const char *attr_name, void UNUSED * op_data)
+dump_attr(hid_t oid, const char *attr_name, void UNUSED * op_data)
{
- hid_t attr_id, type, space;
+ hid_t attr_id;
herr_t ret = SUCCEED;
indentation(indent);
begin_obj(dump_header_format->attributebegin, attr_name,
dump_header_format->attributeblockbegin);
- if ((attr_id = H5Aopen_name(attr, attr_name)) < 0) {
- indentation(indent + COL);
+ if((attr_id = H5Aopen_name(oid, attr_name)) < 0) {
+ indentation(indent + COL);
error_msg(progname, "unable to open attribute \"%s\"\n", attr_name);
- indentation(indent);
- end_obj(dump_header_format->attributeend,
- dump_header_format->attributeblockend);
- d_status = EXIT_FAILURE;
- ret = FAIL;
+ indentation(indent);
+ end_obj(dump_header_format->attributeend,
+ dump_header_format->attributeblockend);
+ d_status = EXIT_FAILURE;
+ ret = FAIL;
} else {
- type = H5Aget_type(attr_id);
- space = H5Aget_space(attr_id);
- dump_datatype(type);
- dump_dataspace(space);
+ hid_t type, space;
- if (display_oid)
- dump_oid(attr_id);
+ type = H5Aget_type(attr_id);
+ space = H5Aget_space(attr_id);
+ dump_datatype(type);
+ dump_dataspace(space);
- if (display_data || display_attr_data)
- dump_data(attr_id, ATTRIBUTE_DATA, NULL, display_ai);
+ if(display_oid)
+ dump_oid(attr_id);
- H5Tclose(type);
- H5Sclose(space);
- H5Aclose(attr_id);
- indentation(indent);
- end_obj(dump_header_format->attributeend,
- dump_header_format->attributeblockend);
+ if(display_data || display_attr_data)
+ dump_data(attr_id, ATTRIBUTE_DATA, NULL, display_ai);
+
+ H5Tclose(type);
+ H5Sclose(space);
+ H5Aclose(attr_id);
+
+ indentation(indent);
+ end_obj(dump_header_format->attributeend,
+ dump_header_format->attributeblockend);
}
return ret;
@@ -1272,72 +1274,42 @@ dump_attr(hid_t attr, const char *attr_name, void UNUSED * op_data)
static herr_t
dump_selected_attr(hid_t loc_id, const char *name)
{
- int j;
+ hid_t oid, attr_id;
char *obj_name;
const char *attr_name;
- hid_t oid, attr_id, type, space;
- H5G_stat_t statbuf;
+ int j;
- j = (int)strlen(name) - 1;
- obj_name = malloc((size_t)j + 2);
+ j = (int)HDstrlen(name) - 1;
+ obj_name = HDmalloc((size_t)j + 2);
/* find the last / */
- while (name[j] != '/' && j >= 0)
- j--;
+ while(name[j] != '/' && j >= 0)
+ j--;
/* object name */
- if (j == -1) {
- strcpy(obj_name, "/");
- } else {
- strncpy(obj_name, name, (size_t)j + 1);
+ if(j == -1)
+ HDstrcpy(obj_name, "/");
+ else {
+ HDstrncpy(obj_name, name, (size_t)j + 1);
obj_name[j + 1] = '\0';
- }
+ } /* end else */
attr_name = name + j + 1;
begin_obj(dump_header_format->attributebegin, name,
dump_header_format->attributeblockbegin);
- H5Gget_objinfo(loc_id, obj_name, FALSE, &statbuf);
-
- switch(statbuf.type) {
- case H5G_GROUP:
- if((oid = H5Gopen2(loc_id, obj_name, H5P_DEFAULT)) < 0) {
- indentation(COL);
- error_msg(progname, "unable to open group \"%s\"\n", obj_name);
- end_obj(dump_header_format->attributeend, dump_header_format->attributeblockend);
- d_status = EXIT_FAILURE;
- return FAIL;
- } /* end if */
- break;
-
- case H5G_DATASET:
- if((oid = H5Dopen(loc_id, obj_name)) < 0) {
- indentation(COL);
- error_msg(progname, "unable to open dataset \"%s\"\n", obj_name);
- end_obj(dump_header_format->attributeend, dump_header_format->attributeblockend);
- d_status = EXIT_FAILURE;
- return FAIL;
- } /* end if */
- break;
- case H5G_TYPE:
- if((oid = H5Topen(loc_id, obj_name)) < 0) {
- indentation(COL);
- error_msg(progname, "unable to open datatype \"%s\"\n", obj_name);
- end_obj(dump_header_format->attributeend, dump_header_format->attributeblockend);
- d_status = EXIT_FAILURE;
- return FAIL;
- } /* end if */
- break;
-
- default:
- indentation(COL);
- error_msg(progname, "unable to open unknown \"%s\"\n", obj_name);
- end_obj(dump_header_format->attributeend, dump_header_format->attributeblockend);
- d_status = EXIT_FAILURE;
- return FAIL;
- } /* end switch */
+ /* Open the object with the attribute */
+ if((oid = H5Oopen(loc_id, obj_name, H5P_DEFAULT)) < 0) {
+ indentation(COL);
+ error_msg(progname, "unable to open object \"%s\"\n", obj_name);
+ end_obj(dump_header_format->attributeend, dump_header_format->attributeblockend);
+ d_status = EXIT_FAILURE;
+ return FAIL;
+ } /* end if */
if((attr_id = H5Aopen_name(oid, attr_name)) >= 0) {
+ hid_t type, space;
+
type = H5Aget_type(attr_id);
space = H5Aget_space(attr_id);
dump_datatype(type);
@@ -1361,34 +1333,13 @@ dump_selected_attr(hid_t loc_id, const char *name)
d_status = EXIT_FAILURE;
}
- switch(statbuf.type) {
- case H5G_GROUP:
- if(H5Gclose(oid) < 0) {
- d_status = EXIT_FAILURE;
- return FAIL;
- } /* end if */
- break;
-
- case H5G_DATASET:
- if(H5Dclose(oid) < 0) {
- d_status = EXIT_FAILURE;
- return FAIL;
- } /* end if */
- break;
-
- case H5G_TYPE:
- if(H5Tclose(oid) < 0) {
- d_status = EXIT_FAILURE;
- return FAIL;
- } /* end if */
- break;
-
- default:
- d_status = EXIT_FAILURE;
- return FAIL;
- } /* end switch */
+ /* Close object */
+ if(H5Oclose(oid) < 0) {
+ d_status = EXIT_FAILURE;
+ return FAIL;
+ } /* end if */
- free(obj_name);
+ HDfree(obj_name);
return SUCCEED;
}
@@ -1411,24 +1362,12 @@ dump_selected_attr(hid_t loc_id, const char *name)
*-------------------------------------------------------------------------
*/
static herr_t
-dump_all(hid_t group, const char *name, const H5L_info_t *linfo, void * op_data)
+dump_all(hid_t group, const char *name, const H5L_info_t *linfo, void UNUSED *op_data)
{
hid_t obj;
char *obj_path = NULL; /* Full path of object */
- H5G_stat_t statbuf;
herr_t ret = SUCCEED;
- /* Stat the object */
- if(H5Gget_objinfo(group, name, FALSE, &statbuf) < 0) {
- error_msg(progname, "unable to get object information for \"%s\"\n", name);
- d_status = EXIT_FAILURE;
- ret = FAIL;
- goto done;
- } /* end if */
-
- if (*(int *)op_data != H5G_UNKNOWN && statbuf.type != *(int *) op_data)
- goto done;
-
/* Build the object's path name */
obj_path = HDmalloc(HDstrlen(prefix) + HDstrlen(name) + 2);
HDassert(obj_path);
@@ -1436,356 +1375,359 @@ dump_all(hid_t group, const char *name, const H5L_info_t *linfo, void * op_data)
HDstrcat(obj_path, "/");
HDstrcat(obj_path, name);
- switch (statbuf.type) {
- case H5G_LINK:
- {
- char *targbuf;
-
- indentation(indent);
- targbuf = HDmalloc(statbuf.linklen);
- HDassert(targbuf);
+ if(linfo->type == H5L_TYPE_HARD) {
+ H5O_info_t oinfo;
- if (!doxml) {
- begin_obj(dump_header_format->softlinkbegin, name,
- dump_header_format->softlinkblockbegin);
- indentation(indent + COL);
- }
+ /* Stat the object */
+ if(H5Oget_info(group, name, &oinfo, H5P_DEFAULT) < 0) {
+ error_msg(progname, "unable to get object information for \"%s\"\n", name);
+ d_status = EXIT_FAILURE;
+ ret = FAIL;
+ goto done;
+ } /* end if */
- if (H5Lget_val(group, name, targbuf, statbuf.linklen, H5P_DEFAULT) < 0) {
- error_msg(progname, "unable to get link value\n");
- d_status = EXIT_FAILURE;
- ret = FAIL;
- } else {
- /* print the value of a soft link */
- if (!doxml) {
- /* Standard DDL: no modification */
- printf("LINKTARGET \"%s\"\n", targbuf);
+ switch(oinfo.type) {
+ case H5O_TYPE_GROUP:
+ if((obj = H5Gopen2(group, name, H5P_DEFAULT)) < 0) {
+ error_msg(progname, "unable to dump group \"%s\"\n", name);
+ d_status = EXIT_FAILURE;
+ ret = FAIL;
} else {
- /* XML */
- char linkxid[100];
- char parentxid[100];
- char targetxid[100];
- char *t_prefix = xml_escape_the_name(HDstrcmp(prefix,"") ? prefix : "/");
- char *t_name = xml_escape_the_name(name);
- char *t_targbuf = xml_escape_the_name(targbuf);
- char *t_obj_path = xml_escape_the_name(obj_path);
- char *t_link_path;
- int res;
+ char *old_prefix; /* Pointer to previous prefix */
- t_link_path = HDmalloc(HDstrlen(prefix) + statbuf.linklen + 1);
- if(targbuf[0] == '/')
- HDstrcpy(t_link_path, targbuf);
- else {
- HDstrcpy(t_link_path, prefix);
- HDstrcat(HDstrcat(t_link_path, "/"), targbuf);
- } /* end else */
+ /* Keep copy of prefix before iterating into group */
+ old_prefix = HDstrdup(prefix);
+ HDassert(old_prefix);
- /* Create OBJ-XIDs for the parent and object */
- xml_name_to_XID(t_obj_path, linkxid, sizeof(linkxid), 1);
- xml_name_to_XID(prefix, parentxid, sizeof(parentxid), 1);
+ /* Append group name to prefix */
+ add_prefix(&prefix, &prefix_len, name);
- /* Try to create an OBJ-XID for the object pointed to */
- res = xml_name_to_XID(t_link_path, targetxid, sizeof(targetxid), 0);
- if (res == 0) {
- /* target obj found */
- printf("<%sSoftLink LinkName=\"%s\" "
- "OBJ-XID=\"%s\" "
- "H5SourcePath=\"%s\" "
- "TargetPath=\"%s\" TargetObj=\"%s\" "
- "Parents=\"%s\" H5ParentPaths=\"%s\" />\n",
- xmlnsprefix,
- t_name, /* LinkName */
- linkxid, /* OBJ-XID */
- t_obj_path, /* H5SourcePath */
- t_targbuf, /* TargetPath */
- targetxid, /* TargetObj */
- parentxid, /* Parents */
- t_prefix); /* H5ParentPaths */
- } else {
- /* dangling link -- omit from xml attributes */
- printf("<%sSoftLink LinkName=\"%s\" "
- "OBJ-XID=\"%s\" "
- "H5SourcePath=\"%s\" "
- "TargetPath=\"%s\" "
- "Parents=\"%s\" H5ParentPaths=\"%s\" />\n",
- xmlnsprefix,
- t_name, /* LinkName */
- linkxid, /* OBJ-XID */
- t_obj_path, /* H5SourcePath */
- t_targbuf, /* TargetPath */
- parentxid, /* Parents */
- t_prefix); /* H5ParentPaths */
- }
-
- HDfree(t_prefix);
- HDfree(t_name);
- HDfree(t_targbuf);
- HDfree(t_obj_path);
- HDfree(t_link_path);
- }
- }
+ /* Iterate into group */
+ dump_function_table->dump_group_function(obj, name);
- if (!doxml) {
- indentation(indent);
- end_obj(dump_header_format->softlinkend,
- dump_header_format->softlinkblockend);
- }
+ /* Restore old prefix name */
+ HDstrcpy(prefix, old_prefix);
+ HDfree(old_prefix);
- HDfree(targbuf);
- break;
- }
+ /* Close group */
+ H5Gclose(obj);
+ }
+ break;
- case H5G_UDLINK:
- indentation(indent);
- switch(linfo->type) {
- case H5L_TYPE_EXTERNAL:
- {
- char *targbuf;
+ case H5O_TYPE_DATASET:
+ if((obj = H5Dopen(group, name)) >= 0) {
+ if(oinfo.rc > 1) {
+ obj_t *found_obj; /* Found object */
- targbuf = HDmalloc(statbuf.linklen);
- HDassert(targbuf);
- if(!doxml)
- begin_obj(dump_header_format->extlinkbegin, name, dump_header_format->extlinkblockbegin);
+ found_obj = search_obj(dset_table, oinfo.addr);
- if(H5Lget_val(group, name, targbuf, statbuf.linklen, H5P_DEFAULT) < 0) {
- error_msg(progname, "unable to get external link value\n");
- d_status = EXIT_FAILURE;
- ret = FAIL;
- } else {
- const char *filename;
- const char *targname;
+ if(found_obj == NULL) {
+ indentation(indent);
+ begin_obj(dump_header_format->datasetbegin, name,
+ dump_header_format->datasetblockbegin);
+ indentation(indent + COL);
+ error_msg(progname,
+ "internal error (file %s:line %d)\n",
+ __FILE__, __LINE__);
+ indentation(indent);
+ end_obj(dump_header_format->datasetend,
+ dump_header_format->datasetblockend);
+ d_status = EXIT_FAILURE;
+ ret = FAIL;
+ H5Dclose(obj);
+ goto done;
+ } else if(found_obj->displayed) {
+ indentation(indent);
- if(H5Lunpack_elink_val(targbuf, statbuf.linklen, NULL, &filename, &targname) < 0) {
- error_msg(progname, "unable to unpack external link value\n");
- d_status = EXIT_FAILURE;
- ret = FAIL;
- } else {
- if (!doxml) {
+ if(!doxml) {
+ begin_obj(dump_header_format->datasetbegin, name,
+ dump_header_format->datasetblockbegin);
indentation(indent + COL);
- printf("LINKCLASS %d\n", linfo->type);
- indentation(indent + COL);
- printf("TARGETFILE \"%s\"\n", filename);
- indentation(indent + COL);
- printf("TARGETPATH \"%s\"\n", targname);
- }
- /* XML */
- else {
- char linkxid[100];
- char parentxid[100];
- char *t_name = xml_escape_the_name(name);
- char *t_prefix = xml_escape_the_name(HDstrcmp(prefix,"") ? prefix : "/");
+ printf("%s \"%s\"\n", HARDLINK, found_obj->objname);
+ indentation(indent);
+ end_obj(dump_header_format->datasetend,
+ dump_header_format->datasetblockend);
+ } else {
+ /* the XML version */
char *t_obj_path = xml_escape_the_name(obj_path);
- char *t_filename = xml_escape_the_name(filename);
- char *t_targname = xml_escape_the_name(targname);
+ char *t_prefix = xml_escape_the_name(HDstrcmp(prefix,"") ? prefix : "/");
+ char *t_name = xml_escape_the_name(name);
+ char dsetxid[100];
+ char parentxid[100];
+ char pointerxid[100];
/* Create OBJ-XIDs for the parent and object */
- xml_name_to_XID(t_obj_path, linkxid, sizeof(linkxid), 1);
+ xml_name_to_XID(obj_path, dsetxid, sizeof(dsetxid), 1);
xml_name_to_XID(prefix, parentxid, sizeof(parentxid), 1);
- printf("<%sExternalLink LinkName=\"%s\" "
- "OBJ-XID=\"%s\" "
- "H5SourcePath=\"%s\" "
- "TargetFilename=\"%s\" "
- "TargetPath=\"%s\" "
- "Parents=\"%s\" H5ParentPaths=\"%s\" />\n",
- xmlnsprefix,
- t_name, /* LinkName */
- linkxid, /* OBJ-XID */
- t_obj_path, /* H5SourcePath */
- filename, /* TargetFilename */
- targname, /* TargetPath*/
- parentxid, /* Parents */
- t_prefix); /* H5ParentPaths */
- HDfree(t_prefix);
+ printf("<%sDataset Name=\"%s\" OBJ-XID=\"%s-%d\" "
+ "H5Path=\"%s\" Parents=\"%s\" "
+ "H5ParentPaths=\"%s\">\n",
+ xmlnsprefix,
+ t_name, /* Dataset Name */
+ dsetxid, get_next_xid(), /* OBJ-XID */
+ t_obj_path, /* H5Path */
+ parentxid, /* Parents */
+ t_prefix); /* H5ParentPaths */
+
+ indentation(indent + COL);
+ xml_name_to_XID(found_obj->objname, pointerxid, sizeof(pointerxid), 1);
+ printf("<%sDatasetPtr OBJ-XID=\"%s\" H5Path=\"%s\"/>\n",
+ xmlnsprefix,
+ pointerxid,t_obj_path);
+ indentation(indent);
+ printf("</%sDataset>\n", xmlnsprefix);
+
HDfree(t_name);
- HDfree(t_filename);
- HDfree(t_targname);
HDfree(t_obj_path);
+ HDfree(t_prefix);
}
+
+ H5Dclose(obj);
+ goto done;
+ } else {
+ found_obj->displayed = TRUE;
}
- }
- if (!doxml)
- end_obj(dump_header_format->extlinkend, dump_header_format->extlinkblockend);
- HDfree(targbuf);
- }
- break;
+ } /* end if */
- default:
- if (!doxml) {
- begin_obj(dump_header_format->udlinkbegin, name, dump_header_format->udlinkblockbegin);
- indentation(indent + COL);
- }
- if (!doxml)
- printf("LINKCLASS %d\n", linfo->type);
- else /* XML */
- {
- char linkxid[100];
- char parentxid[100];
- char *t_name = xml_escape_the_name(name);
- char *t_prefix = xml_escape_the_name(HDstrcmp(prefix,"") ? prefix : "/");
- char *t_obj_path = xml_escape_the_name(obj_path);
-
- /* Create OBJ-XIDs for the parent and object */
- xml_name_to_XID(t_obj_path, linkxid, sizeof(linkxid), 1);
- xml_name_to_XID(prefix, parentxid, sizeof(parentxid), 1);
-
- printf("<%sUserDefined LinkName=\"%s\" "
- "OBJ-XID=\"%s\" "
- "H5SourcePath=\"%s\" "
- "LinkClass=\"%d\" "
- "Parents=\"%s\" H5ParentPaths=\"%s\" />\n",
- xmlnsprefix,
- t_name, /* LinkName */
- linkxid, /* OBJ-XID */
- t_obj_path, /* H5SourcePath */
- linfo->type, /* LinkClass */
- parentxid, /* Parents */
- t_prefix); /* H5ParentPaths */
- HDfree(t_prefix);
- HDfree(t_name);
- HDfree(t_obj_path);
- }
- if (!doxml) {
- indentation(indent);
- end_obj(dump_header_format->udlinkend, dump_header_format->udlinkblockend);
- }
- }
- break;
+ dump_function_table->dump_dataset_function(obj, name, NULL);
+ H5Dclose(obj);
+ } else {
+ error_msg(progname, "unable to dump dataset \"%s\"\n", name);
+ d_status = EXIT_FAILURE;
+ ret = FAIL;
+ }
+ break;
+
+ case H5O_TYPE_NAMED_DATATYPE:
+ if((obj = H5Topen(group, name)) < 0) {
+ error_msg(progname, "unable to dump datatype \"%s\"\n", name);
+ d_status = EXIT_FAILURE;
+ ret = FAIL;
+ } else {
+ dump_function_table->dump_named_datatype_function(obj, name);
+ H5Tclose(obj);
+ }
+ break;
- case H5G_GROUP:
- if((obj = H5Gopen2(group, name, H5P_DEFAULT)) < 0) {
- error_msg(progname, "unable to dump group \"%s\"\n", name);
+ default:
+ error_msg(progname, "unknown object \"%s\"\n", name);
d_status = EXIT_FAILURE;
ret = FAIL;
- } else {
- char *old_prefix; /* Pointer to previous prefix */
+ }
+ } /* end if */
+ else {
+ char *targbuf;
- /* Keep copy of prefix before iterating into group */
- old_prefix = HDstrdup(prefix);
- HDassert(old_prefix);
+ switch(linfo->type) {
+ case H5L_TYPE_SOFT:
+ indentation(indent);
+ targbuf = HDmalloc(linfo->u.val_size);
+ HDassert(targbuf);
- /* Append group name to prefix */
- add_prefix(&prefix, &prefix_len, name);
+ if(!doxml) {
+ begin_obj(dump_header_format->softlinkbegin, name,
+ dump_header_format->softlinkblockbegin);
+ indentation(indent + COL);
+ }
- /* Iterate into group */
- dump_function_table->dump_group_function(obj, name);
+ if(H5Lget_val(group, name, targbuf, linfo->u.val_size, H5P_DEFAULT) < 0) {
+ error_msg(progname, "unable to get link value\n");
+ d_status = EXIT_FAILURE;
+ ret = FAIL;
+ } else {
+ /* print the value of a soft link */
+ if (!doxml) {
+ /* Standard DDL: no modification */
+ printf("LINKTARGET \"%s\"\n", targbuf);
+ } else {
+ /* XML */
+ char linkxid[100];
+ char parentxid[100];
+ char targetxid[100];
+ char *t_prefix = xml_escape_the_name(HDstrcmp(prefix,"") ? prefix : "/");
+ char *t_name = xml_escape_the_name(name);
+ char *t_targbuf = xml_escape_the_name(targbuf);
+ char *t_obj_path = xml_escape_the_name(obj_path);
+ char *t_link_path;
+ int res;
+
+ t_link_path = HDmalloc(HDstrlen(prefix) + linfo->u.val_size + 1);
+ if(targbuf[0] == '/')
+ HDstrcpy(t_link_path, targbuf);
+ else {
+ HDstrcpy(t_link_path, prefix);
+ HDstrcat(HDstrcat(t_link_path, "/"), targbuf);
+ } /* end else */
+
+ /* Create OBJ-XIDs for the parent and object */
+ xml_name_to_XID(t_obj_path, linkxid, sizeof(linkxid), 1);
+ xml_name_to_XID(prefix, parentxid, sizeof(parentxid), 1);
+
+ /* Try to create an OBJ-XID for the object pointed to */
+ res = xml_name_to_XID(t_link_path, targetxid, sizeof(targetxid), 0);
+ if (res == 0) {
+ /* target obj found */
+ printf("<%sSoftLink LinkName=\"%s\" "
+ "OBJ-XID=\"%s\" "
+ "H5SourcePath=\"%s\" "
+ "TargetPath=\"%s\" TargetObj=\"%s\" "
+ "Parents=\"%s\" H5ParentPaths=\"%s\" />\n",
+ xmlnsprefix,
+ t_name, /* LinkName */
+ linkxid, /* OBJ-XID */
+ t_obj_path, /* H5SourcePath */
+ t_targbuf, /* TargetPath */
+ targetxid, /* TargetObj */
+ parentxid, /* Parents */
+ t_prefix); /* H5ParentPaths */
+ } else {
+ /* dangling link -- omit from xml attributes */
+ printf("<%sSoftLink LinkName=\"%s\" "
+ "OBJ-XID=\"%s\" "
+ "H5SourcePath=\"%s\" "
+ "TargetPath=\"%s\" "
+ "Parents=\"%s\" H5ParentPaths=\"%s\" />\n",
+ xmlnsprefix,
+ t_name, /* LinkName */
+ linkxid, /* OBJ-XID */
+ t_obj_path, /* H5SourcePath */
+ t_targbuf, /* TargetPath */
+ parentxid, /* Parents */
+ t_prefix); /* H5ParentPaths */
+ }
- /* Restore old prefix name */
- HDstrcpy(prefix, old_prefix);
- HDfree(old_prefix);
+ HDfree(t_prefix);
+ HDfree(t_name);
+ HDfree(t_targbuf);
+ HDfree(t_obj_path);
+ HDfree(t_link_path);
+ }
+ }
- /* Close group */
- H5Gclose(obj);
- }
- break;
+ if (!doxml) {
+ indentation(indent);
+ end_obj(dump_header_format->softlinkend,
+ dump_header_format->softlinkblockend);
+ }
- case H5G_DATASET:
- if ((obj = H5Dopen(group, name)) >= 0) {
- haddr_t objno; /* Compact form of object's location */
+ HDfree(targbuf);
+ break;
- /* hard link */
- H5Gget_objinfo(obj, ".", TRUE, &statbuf);
- objno = (haddr_t)statbuf.objno[0] | ((haddr_t)statbuf.objno[1] << (8 * sizeof(long)));
+ case H5L_TYPE_EXTERNAL:
+ targbuf = HDmalloc(linfo->u.val_size);
+ HDassert(targbuf);
- if (statbuf.nlink > 1) {
- obj_t *found_obj; /* Found object */
+ indentation(indent);
+ if(!doxml)
+ begin_obj(dump_header_format->extlinkbegin, name, dump_header_format->extlinkblockbegin);
- found_obj = search_obj(dset_table, objno);
+ if(H5Lget_val(group, name, targbuf, linfo->u.val_size, H5P_DEFAULT) < 0) {
+ error_msg(progname, "unable to get external link value\n");
+ d_status = EXIT_FAILURE;
+ ret = FAIL;
+ } /* end if */
+ else {
+ const char *filename;
+ const char *targname;
- if (found_obj == NULL) {
- indentation(indent);
- begin_obj(dump_header_format->datasetbegin, name,
- dump_header_format->datasetblockbegin);
- indentation(indent + COL);
- error_msg(progname,
- "internal error (file %s:line %d)\n",
- __FILE__, __LINE__);
- indentation(indent);
- end_obj(dump_header_format->datasetend,
- dump_header_format->datasetblockend);
+ if(H5Lunpack_elink_val(targbuf, linfo->u.val_size, NULL, &filename, &targname) < 0) {
+ error_msg(progname, "unable to unpack external link value\n");
d_status = EXIT_FAILURE;
ret = FAIL;
- H5Dclose(obj);
- goto done;
- } else if (found_obj->displayed) {
- indentation(indent);
-
- if (!doxml) {
- begin_obj(dump_header_format->datasetbegin, name,
- dump_header_format->datasetblockbegin);
+ } /* end if */
+ else {
+ if(!doxml) {
indentation(indent + COL);
- printf("%s \"%s\"\n", HARDLINK, found_obj->objname);
- indentation(indent);
- end_obj(dump_header_format->datasetend,
- dump_header_format->datasetblockend);
- } else {
- /* the XML version */
- char *t_obj_path = xml_escape_the_name(obj_path);
- char *t_prefix = xml_escape_the_name(HDstrcmp(prefix,"") ? prefix : "/");
- char *t_name = xml_escape_the_name(name);
- char dsetxid[100];
+ printf("LINKCLASS %d\n", linfo->type);
+ indentation(indent + COL);
+ printf("TARGETFILE \"%s\"\n", filename);
+ indentation(indent + COL);
+ printf("TARGETPATH \"%s\"\n", targname);
+ } /* end if */
+ /* XML */
+ else {
+ char linkxid[100];
char parentxid[100];
- char pointerxid[100];
+ char *t_name = xml_escape_the_name(name);
+ char *t_prefix = xml_escape_the_name(HDstrcmp(prefix,"") ? prefix : "/");
+ char *t_obj_path = xml_escape_the_name(obj_path);
+ char *t_filename = xml_escape_the_name(filename);
+ char *t_targname = xml_escape_the_name(targname);
/* Create OBJ-XIDs for the parent and object */
- xml_name_to_XID(obj_path, dsetxid, sizeof(dsetxid), 1);
+ xml_name_to_XID(t_obj_path, linkxid, sizeof(linkxid), 1);
xml_name_to_XID(prefix, parentxid, sizeof(parentxid), 1);
- printf("<%sDataset Name=\"%s\" OBJ-XID=\"%s-%d\" "
- "H5Path=\"%s\" Parents=\"%s\" "
- "H5ParentPaths=\"%s\">\n",
- xmlnsprefix,
- t_name, /* Dataset Name */
- dsetxid, get_next_xid(), /* OBJ-XID */
- t_obj_path, /* H5Path */
- parentxid, /* Parents */
- t_prefix); /* H5ParentPaths */
-
- indentation(indent + COL);
- xml_name_to_XID(found_obj->objname, pointerxid, sizeof(pointerxid), 1);
- printf("<%sDatasetPtr OBJ-XID=\"%s\" H5Path=\"%s\"/>\n",
- xmlnsprefix,
- pointerxid,t_obj_path);
- indentation(indent);
- printf("</%sDataset>\n", xmlnsprefix);
-
+ printf("<%sExternalLink LinkName=\"%s\" "
+ "OBJ-XID=\"%s\" "
+ "H5SourcePath=\"%s\" "
+ "TargetFilename=\"%s\" "
+ "TargetPath=\"%s\" "
+ "Parents=\"%s\" H5ParentPaths=\"%s\" />\n",
+ xmlnsprefix,
+ t_name, /* LinkName */
+ linkxid, /* OBJ-XID */
+ t_obj_path, /* H5SourcePath */
+ filename, /* TargetFilename */
+ targname, /* TargetPath*/
+ parentxid, /* Parents */
+ t_prefix); /* H5ParentPaths */
+ HDfree(t_prefix);
HDfree(t_name);
+ HDfree(t_filename);
+ HDfree(t_targname);
HDfree(t_obj_path);
- HDfree(t_prefix);
- }
-
- H5Dclose(obj);
- goto done;
- } else {
- found_obj->displayed = TRUE;
- }
+ } /* end else */
+ } /* end else */
+ } /* end else */
+ if(!doxml) {
+ indentation(indent);
+ end_obj(dump_header_format->extlinkend, dump_header_format->extlinkblockend);
} /* end if */
+ HDfree(targbuf);
+ break;
- dump_function_table->dump_dataset_function(obj, name, NULL);
- H5Dclose(obj);
- } else {
- error_msg(progname, "unable to dump dataset \"%s\"\n", name);
- d_status = EXIT_FAILURE;
- ret = FAIL;
- }
- break;
+ default:
+ indentation(indent);
+ if(!doxml) {
+ begin_obj(dump_header_format->udlinkbegin, name, dump_header_format->udlinkblockbegin);
+ indentation(indent + COL);
+ printf("LINKCLASS %d\n", linfo->type);
+ indentation(indent);
+ end_obj(dump_header_format->udlinkend, dump_header_format->udlinkblockend);
+ } /* end if */
+ /* XML */
+ else {
+ char linkxid[100];
+ char parentxid[100];
+ char *t_name = xml_escape_the_name(name);
+ char *t_prefix = xml_escape_the_name(HDstrcmp(prefix,"") ? prefix : "/");
+ char *t_obj_path = xml_escape_the_name(obj_path);
- case H5G_TYPE:
- if ((obj = H5Topen(group, name)) < 0) {
- error_msg(progname, "unable to dump data type \"%s\"\n", name);
- d_status = EXIT_FAILURE;
- ret = FAIL;
- } else {
- dump_function_table->dump_named_datatype_function(obj, name);
- H5Tclose(obj);
- }
- break;
+ /* Create OBJ-XIDs for the parent and object */
+ xml_name_to_XID(t_obj_path, linkxid, sizeof(linkxid), 1);
+ xml_name_to_XID(prefix, parentxid, sizeof(parentxid), 1);
- default:
- error_msg(progname, "unknown object \"%s\"\n", name);
- d_status = EXIT_FAILURE;
- ret = FAIL;
- }
+ printf("<%sUserDefined LinkName=\"%s\" "
+ "OBJ-XID=\"%s\" "
+ "H5SourcePath=\"%s\" "
+ "LinkClass=\"%d\" "
+ "Parents=\"%s\" H5ParentPaths=\"%s\" />\n",
+ xmlnsprefix,
+ t_name, /* LinkName */
+ linkxid, /* OBJ-XID */
+ t_obj_path, /* H5SourcePath */
+ linfo->type, /* LinkClass */
+ parentxid, /* Parents */
+ t_prefix); /* H5ParentPaths */
+ HDfree(t_prefix);
+ HDfree(t_name);
+ HDfree(t_obj_path);
+ } /* end else */
+ break;
+ } /* end switch */
+ } /* end else */
done:
if(obj_path)
@@ -1796,7 +1738,7 @@ done:
/*-------------------------------------------------------------------------
* Function: dump_named_datatype
*
- * Purpose: Dump named data type
+ * Purpose: Dump named datatype
*
* Return: void
*
@@ -1810,25 +1752,25 @@ done:
static void
dump_named_datatype(hid_t type, const char *name)
{
- indentation(indent);
- printf("%s \"%s\" %s", dump_header_format->datatypebegin, name,
- dump_header_format->datatypeblockbegin);
-
- if (H5Tget_class(type) == H5T_COMPOUND) {
- print_datatype(type,1);
- } else {
- indentation(indent + COL);
- print_datatype(type,1);
- printf(";\n");
- }
+ indentation(indent);
+ printf("%s \"%s\" %s", dump_header_format->datatypebegin, name,
+ dump_header_format->datatypeblockbegin);
- /* print attributes */
- indent += COL;
- H5Aiterate(type, NULL, dump_attr, NULL);
- indent -= COL;
+ if(H5Tget_class(type) == H5T_COMPOUND)
+ print_datatype(type, 1);
+ else {
+ indentation(indent + COL);
+ print_datatype(type, 1);
+ printf(";\n");
+ } /* end else */
+
+ /* print attributes */
+ indent += COL;
+ H5Aiterate(type, NULL, dump_attr, NULL);
+ indent -= COL;
- end_obj(dump_header_format->datatypeend,
- dump_header_format->datatypeblockend);
+ end_obj(dump_header_format->datatypeend,
+ dump_header_format->datatypeblockend);
}
/*-------------------------------------------------------------------------
@@ -1849,11 +1791,9 @@ dump_named_datatype(hid_t type, const char *name)
static void
dump_group(hid_t gid, const char *name)
{
- H5G_stat_t statbuf;
- haddr_t objno; /* Compact form of object's location */
+ H5O_info_t oinfo;
hid_t dset, type;
char type_name[1024], *tmp;
- int xtype = H5G_UNKNOWN; /* dump all */
tmp = HDmalloc(HDstrlen(prefix) + HDstrlen(name) + 2);
HDstrcpy(tmp, prefix);
@@ -1882,13 +1822,12 @@ dump_group(hid_t gid, const char *name)
}
} /* end if */
- H5Gget_objinfo(gid, ".", TRUE, &statbuf);
- objno = (haddr_t)statbuf.objno[0] | ((haddr_t)statbuf.objno[1] << (8 * sizeof(long)));
+ H5Oget_info(gid, ".", &oinfo, H5P_DEFAULT);
- if (statbuf.nlink > 1) {
+ if(oinfo.rc > 1) {
obj_t *found_obj; /* Found object */
- found_obj = search_obj(group_table, objno);
+ found_obj = search_obj(group_table, oinfo.addr);
if (found_obj == NULL) {
indentation(indent);
@@ -1901,11 +1840,11 @@ dump_group(hid_t gid, const char *name)
} else {
found_obj->displayed = TRUE;
H5Aiterate(gid, NULL, dump_attr, NULL);
- H5Literate(gid, ".", H5_INDEX_NAME, H5_ITER_INC, NULL, dump_all, (void *) &xtype, H5P_DEFAULT);
+ H5Literate(gid, ".", H5_INDEX_NAME, H5_ITER_INC, NULL, dump_all, NULL, H5P_DEFAULT);
}
} else {
H5Aiterate(gid, NULL, dump_attr, NULL);
- H5Literate(gid, ".", H5_INDEX_NAME, H5_ITER_INC, NULL, dump_all, (void *) &xtype, H5P_DEFAULT);
+ H5Literate(gid, ".", H5_INDEX_NAME, H5_ITER_INC, NULL, dump_all, NULL, H5P_DEFAULT);
}
indent -= COL;
@@ -1930,27 +1869,32 @@ dump_group(hid_t gid, const char *name)
static void
dump_dataset(hid_t did, const char *name, struct subset_t *sset)
{
- hid_t type, space, dcpl_id;
+ hid_t type, space;
indentation(indent);
begin_obj(dump_header_format->datasetbegin, name,
- dump_header_format->datasetblockbegin);
+ dump_header_format->datasetblockbegin);
+
type = H5Dget_type(did);
space = H5Dget_space(did);
- dcpl_id = H5Dget_create_plist(did);
dump_comment(did);
dump_datatype(type);
dump_dataspace(space);
- if (display_oid)
+ if(display_oid)
dump_oid(did);
- if (display_dcpl)
+ if(display_dcpl) {
+ hid_t dcpl_id;
+
+ dcpl_id = H5Dget_create_plist(did);
dump_dcpl(dcpl_id, type, did);
+ H5Pclose(dcpl_id);
+ } /* end if */
- if (display_data)
- switch (H5Tget_class(type)) {
+ if(display_data)
+ switch(H5Tget_class(type)) {
case H5T_TIME:
indentation(indent + COL);
printf("DATA{ not yet implemented.}\n");
@@ -1971,17 +1915,18 @@ dump_dataset(hid_t did, const char *name, struct subset_t *sset)
default:
break;
- }
+ } /* end switch */
indent += COL;
H5Aiterate(did, NULL, dump_attr, NULL);
indent -= COL;
+
H5Tclose(type);
H5Sclose(space);
- H5Pclose(dcpl_id);
+
indentation(indent);
end_obj(dump_header_format->datasetend,
- dump_header_format->datasetblockend);
+ dump_header_format->datasetblockend);
}
/*-------------------------------------------------------------------------
@@ -2136,12 +2081,12 @@ dump_data(hid_t obj_id, int obj_data, struct subset_t *sset, int display_index)
dump_header_format->datablockbegin);
/* Print all the values. */
- if (obj_data == DATASET_DATA) {
+ if(obj_data == DATASET_DATA) {
hid_t f_type = H5Dget_type(obj_id);
char string_prefix[64];
h5tool_format_t string_dataformat;
- if (display_char && H5Tget_size(f_type) == 1 && H5Tget_class(f_type) == H5T_INTEGER) {
+ if(display_char && H5Tget_size(f_type) == 1 && H5Tget_class(f_type) == H5T_INTEGER) {
/*
* Print 1-byte integer data as an ASCII character string
* instead of integers if the `-r' or `--string' command-line
@@ -3042,8 +2987,7 @@ parse_subset_params(char *dset)
static void
handle_datasets(hid_t fid, char *dset, void *data)
{
- H5G_stat_t statbuf;
- haddr_t objno; /* Compact form of object's location */
+ H5O_info_t oinfo;
hid_t dsetid;
struct subset_t *sset = (struct subset_t *)data;
@@ -3109,15 +3053,13 @@ handle_datasets(hid_t fid, char *dset, void *data)
}
}
- H5Gget_objinfo(dsetid, ".", TRUE, &statbuf);
- objno = (haddr_t)statbuf.objno[0] | ((haddr_t)statbuf.objno[1] << (8 * sizeof(long)));
-
- if (statbuf.nlink > 1) {
+ H5Oget_info(dsetid, ".", &oinfo, H5P_DEFAULT);
+ if(oinfo.rc > 1) {
obj_t *found_obj; /* Found object */
- found_obj = search_obj(dset_table, objno);
+ found_obj = search_obj(dset_table, oinfo.addr);
- if (found_obj) {
+ if(found_obj) {
if (found_obj->displayed) {
begin_obj(dump_header_format->datasetbegin, dset,
dump_header_format->datasetblockbegin);
@@ -3130,14 +3072,14 @@ handle_datasets(hid_t fid, char *dset, void *data)
found_obj->displayed = TRUE;
dump_dataset(dsetid, dset, sset);
}
- } else {
- d_status = EXIT_FAILURE;
}
- } else {
- dump_dataset(dsetid, dset, sset);
+ else
+ d_status = EXIT_FAILURE;
}
+ else
+ dump_dataset(dsetid, dset, sset);
- if (H5Dclose(dsetid) < 0)
+ if(H5Dclose(dsetid) < 0)
d_status = EXIT_FAILURE;
}
@@ -3199,47 +3141,44 @@ handle_groups(hid_t fid, char *group, void UNUSED * data)
static void
handle_links(hid_t fid, char *links, void UNUSED * data)
{
- H5G_stat_t statbuf;
H5L_info_t linfo;
- if(H5Gget_objinfo(fid, links, FALSE, &statbuf) < 0) {
- error_msg(progname, "unable to get obj info from \"%s\"\n", links);
- d_status = EXIT_FAILURE;
- } else if(H5Lget_info(fid, links, &linfo, H5P_DEFAULT) < 0) {
+ if(H5Lget_info(fid, links, &linfo, H5P_DEFAULT) < 0) {
error_msg(progname, "unable to get link info from \"%s\"\n", links);
d_status = EXIT_FAILURE;
- } else if(statbuf.type == H5G_LINK) { /* Soft link */
- char *buf = HDmalloc(statbuf.linklen);
-
- begin_obj(dump_header_format->softlinkbegin, links,
- dump_header_format->softlinkblockbegin);
- indentation(COL);
-
- if(H5Lget_val(fid, links, buf, statbuf.linklen, H5P_DEFAULT) >= 0) {
- printf("LINKTARGET \"%s\"\n", buf);
- } else {
- error_msg(progname, "h5dump error: unable to get link value for \"%s\"\n",
- links);
- d_status = EXIT_FAILURE;
- }
+ } else if(linfo.type == H5L_TYPE_HARD) {
+ error_msg(progname, "\"%s\" is a hard link\n", links);
+ d_status = EXIT_FAILURE;
+ } else {
+ char *buf = HDmalloc(linfo.u.val_size);
- end_obj(dump_header_format->softlinkend,
- dump_header_format->softlinkblockend);
- HDfree(buf);
- } else if(statbuf.type == H5G_UDLINK) { /* User-defined link */
- char *buf = HDmalloc(statbuf.linklen);
- begin_obj(dump_header_format->udlinkbegin, links,
- dump_header_format->udlinkblockbegin);
- indentation(COL);
switch(linfo.type) {
+ case H5L_TYPE_SOFT: /* Soft link */
+ begin_obj(dump_header_format->softlinkbegin, links,
+ dump_header_format->softlinkblockbegin);
+ indentation(COL);
+ if(H5Lget_val(fid, links, buf, linfo.u.val_size, H5P_DEFAULT) >= 0)
+ printf("LINKTARGET \"%s\"\n", buf);
+ else {
+ error_msg(progname, "h5dump error: unable to get link value for \"%s\"\n",
+ links);
+ d_status = EXIT_FAILURE;
+ }
+ end_obj(dump_header_format->softlinkend,
+ dump_header_format->softlinkblockend);
+ break;
+
case H5L_TYPE_EXTERNAL:
+ begin_obj(dump_header_format->udlinkbegin, links,
+ dump_header_format->udlinkblockbegin);
+ indentation(COL);
begin_obj(dump_header_format->extlinkbegin, links,
dump_header_format->extlinkblockbegin);
- if(H5Lget_val(fid, links, buf, statbuf.linklen, H5P_DEFAULT) >= 0) {
+ if(H5Lget_val(fid, links, buf, linfo.u.val_size, H5P_DEFAULT) >= 0) {
const char *elink_file;
const char *elink_path;
- if(H5Lunpack_elink_val(buf, statbuf.linklen, NULL, &elink_file, &elink_path)>=0) {
+ if(H5Lunpack_elink_val(buf, linfo.u.val_size, NULL, &elink_file, &elink_path)>=0) {
indentation(COL);
printf("LINKCLASS %d\n", linfo.type);
indentation(COL);
@@ -3250,26 +3189,28 @@ handle_links(hid_t fid, char *links, void UNUSED * data)
error_msg(progname, "h5dump error: unable to unpack external link value for \"%s\"\n", links);
d_status = EXIT_FAILURE;
}
- } else {
- error_msg(progname, "h5dump error: unable to get external link value for \"%s\"\n", links);
- d_status = EXIT_FAILURE;
- }
- end_obj(dump_header_format->extlinkend,
- dump_header_format->extlinkblockend);
- break;
- default:
- begin_obj(dump_header_format->udlinkbegin, links,
- dump_header_format->udlinkblockbegin);
- indentation(COL);
- printf("LINKCLASS %d\n", linfo.type);
- end_obj(dump_header_format->udlinkend,
- dump_header_format->udlinkblockend);
- }
+ } else {
+ error_msg(progname, "h5dump error: unable to get external link value for \"%s\"\n", links);
+ d_status = EXIT_FAILURE;
+ }
+ end_obj(dump_header_format->extlinkend,
+ dump_header_format->extlinkblockend);
+ break;
+
+ default:
+ begin_obj(dump_header_format->udlinkbegin, links,
+ dump_header_format->udlinkblockbegin);
+ indentation(COL);
+ begin_obj(dump_header_format->udlinkbegin, links,
+ dump_header_format->udlinkblockbegin);
+ indentation(COL);
+ printf("LINKCLASS %d\n", linfo.type);
+ end_obj(dump_header_format->udlinkend,
+ dump_header_format->udlinkblockend);
+ break;
+ } /* end switch */
HDfree(buf);
- } else {
- error_msg(progname, "\"%s\" is not a link\n", links);
- d_status = EXIT_FAILURE;
- }
+ } /* end else */
}
/*-------------------------------------------------------------------------
@@ -3292,14 +3233,14 @@ handle_datatypes(hid_t fid, char *type, void UNUSED * data)
hid_t type_id;
if ((type_id = H5Topen(fid, type)) < 0) {
- /* check if type is unamed data type */
+ /* check if type is unamed datatype */
unsigned idx = 0;
while (idx < type_table->nobjs ) {
char name[128];
if (!type_table->objs[idx].recorded) {
- /* unamed data type */
+ /* unamed datatype */
sprintf(name, "/#"H5_PRINTF_HADDR_FMT, type_table->objs[idx].objno);
if (!HDstrcmp(name, type))
@@ -3733,27 +3674,27 @@ main(int argc, const char *argv[])
/* Check for conflicting options */
if (doxml) {
- if (!display_all) {
+ if (!display_all) {
error_msg(progname, "option \"%s\" not available for XML\n",
- "to display selected objects");
- leave(EXIT_FAILURE);
- } else if (display_bb) {
+ "to display selected objects");
+ leave(EXIT_FAILURE);
+ } else if (display_bb) {
error_msg(progname, "option \"%s\" not available for XML\n",
- "--boot-block");
- leave(EXIT_FAILURE);
- } else if (display_oid == 1) {
+ "--boot-block");
+ leave(EXIT_FAILURE);
+ } else if (display_oid == 1) {
error_msg(progname, "option \"%s\" not available for XML\n",
- "--object-ids");
- leave(EXIT_FAILURE);
+ "--object-ids");
+ leave(EXIT_FAILURE);
} else if (display_char == TRUE) {
error_msg(progname, "option \"%s\" not available for XML\n",
- "--string");
- leave(EXIT_FAILURE);
- } else if (usingdasho) {
+ "--string");
+ leave(EXIT_FAILURE);
+ } else if (usingdasho) {
error_msg(progname, "option \"%s\" not available for XML\n",
- "--output");
- leave(EXIT_FAILURE);
- }
+ "--output");
+ leave(EXIT_FAILURE);
+ }
} else {
if (xml_dtd_uri) {
warn_msg(progname, "option \"%s\" only applies with XML: %s\n",
@@ -3778,9 +3719,8 @@ main(int argc, const char *argv[])
/* allocate and initialize internal data structure */
init_prefix(&prefix, prefix_len);
- /* find all objects that might be targets of a refernce */
- init_ref_path_table(fid); /* Insert the root group into the ref. path table */
- H5Literate(fid, (const char *)"/", H5_INDEX_NAME, H5_ITER_INC, NULL, fill_ref_path_table, (void *)"", H5P_DEFAULT);
+ /* find all objects that might be targets of a reference */
+ fill_ref_path_table(fid);
if(doxml) {
/* initialize XML */
@@ -3811,7 +3751,7 @@ main(int argc, const char *argv[])
goto done;
}
- /* does there exist unamed committed data type */
+ /* does there exist unamed committed datatype */
for (u = 0; u < type_table->nobjs; u++)
if (!type_table->objs[u].recorded) {
unamedtype = 1;
@@ -3824,12 +3764,12 @@ main(int argc, const char *argv[])
/* start to dump - display file header information */
if (!doxml) {
- begin_obj(dump_header_format->filebegin, fname,
- dump_header_format->fileblockbegin);
+ begin_obj(dump_header_format->filebegin, fname,
+ dump_header_format->fileblockbegin);
} else {
- printf("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
+ printf("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
- /* alternative first element, depending on schema or DTD. */
+ /* alternative first element, depending on schema or DTD. */
if (useschema) {
if (strcmp(xmlnsprefix,"") == 0) {
printf("<HDF5-File xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"%s\">\n",
@@ -3848,11 +3788,11 @@ main(int argc, const char *argv[])
"xsi:schemaLocation=\"http://hdfgroup.org/DTDs/HDF5File "
"http://hdfgroup.org/DTDs/HDF5-File.xsd\">\n",xmlnsprefix,ns);
}
- } else {
- printf("<!DOCTYPE HDF5-File PUBLIC \"HDF5-File.dtd\" \"%s\">\n",
- xml_dtd_uri);
- printf("<HDF5-File>\n");
- }
+ } else {
+ printf("<!DOCTYPE HDF5-File PUBLIC \"HDF5-File.dtd\" \"%s\">\n",
+ xml_dtd_uri);
+ printf("<HDF5-File>\n");
+ }
}
if (!doxml) {
@@ -3942,7 +3882,7 @@ print_enum(hid_t type)
unsigned nmembs; /*number of members */
int nchars; /*number of output characters */
hid_t super; /*enum base integer type */
- hid_t native = -1; /*native integer data type */
+ hid_t native = -1; /*native integer datatype */
size_t dst_size; /*destination value type size */
unsigned i;
@@ -3951,7 +3891,7 @@ print_enum(hid_t type)
super = H5Tget_super(type);
/*
- * Determine what data type to use for the native values. To simplify
+ * Determine what datatype to use for the native values. To simplify
* things we entertain three possibilities:
* 1. long_long -- the largest native signed integer
* 2. unsigned long_long -- the largest native unsigned integer
@@ -3978,7 +3918,7 @@ print_enum(hid_t type)
H5Tget_member_value(type, i, value + i * H5Tget_size(type));
}
- /* Convert values to native data type */
+ /* Convert values to native datatype */
if (native > 0)
H5Tconvert(super, native, nmembs, value, NULL, H5P_DEFAULT);
@@ -4300,32 +4240,32 @@ xml_print_datatype(hid_t type, unsigned in_group)
int nmembs;
htri_t is_vlstr=FALSE;
- if (!in_group && H5Tcommitted(type) > 0) {
- H5G_stat_t statbuf;
- haddr_t objno; /* Compact form of object's location */
+ if(!in_group && H5Tcommitted(type) > 0) {
+ H5O_info_t oinfo;
obj_t *found_obj; /* Found object */
/* detect a shared datatype, output only once */
- H5Gget_objinfo(type, ".", TRUE, &statbuf);
- objno = (haddr_t)statbuf.objno[0] | ((haddr_t)statbuf.objno[1] << (8 * sizeof(long)));
- found_obj = search_obj(type_table, objno);
+ H5Oget_info(type, ".", &oinfo, H5P_DEFAULT);
+ found_obj = search_obj(type_table, oinfo.addr);
- if (found_obj) {
+ if(found_obj) {
/* This should be defined somewhere else */
/* These 2 cases are handled the same right now, but
probably will have something different eventually */
char * dtxid = malloc(100);
- xml_name_to_XID(found_obj->objname,dtxid,100,1);
+
+ xml_name_to_XID(found_obj->objname, dtxid, 100, 1);
if (!found_obj->recorded) {
/* 'anonymous' NDT. Use it's object num.
as it's name. */
printf("<%sNamedDataTypePtr OBJ-XID=\"/%s\"/>\n",
- xmlnsprefix, dtxid);
+ xmlnsprefix, dtxid);
} else {
/* point to the NDT by name */
char *t_objname = xml_escape_the_name(found_obj->objname);
+
printf("<%sNamedDataTypePtr OBJ-XID=\"%s\" H5Path=\"%s\"/>\n",
- xmlnsprefix, dtxid,t_objname);
+ xmlnsprefix, dtxid, t_objname);
free(t_objname);
}
free(dtxid);
@@ -4333,311 +4273,310 @@ xml_print_datatype(hid_t type, unsigned in_group)
printf("<!-- h5dump error: unknown committed type. -->\n");
d_status = EXIT_FAILURE;
}
-
} else {
switch (H5Tget_class(type)) {
- case H5T_INTEGER:
- indentation(indent);
- printf("<%sAtomicType>\n",xmlnsprefix);
- indent += COL;
- /* <hdf5:IntegerType ByteOrder="bo" Sign="torf" Size="bytes"/> */
- ord = H5Tget_order(type);
- sgn = H5Tget_sign(type);
- indentation(indent);
- printf("<%sIntegerType ByteOrder=\"",xmlnsprefix);
- switch (ord) {
- case H5T_ORDER_LE:
- printf("LE");
- break;
- case H5T_ORDER_BE:
- printf("BE");
+ case H5T_INTEGER:
+ indentation(indent);
+ printf("<%sAtomicType>\n",xmlnsprefix);
+ indent += COL;
+ /* <hdf5:IntegerType ByteOrder="bo" Sign="torf" Size="bytes"/> */
+ ord = H5Tget_order(type);
+ sgn = H5Tget_sign(type);
+ indentation(indent);
+ printf("<%sIntegerType ByteOrder=\"",xmlnsprefix);
+ switch (ord) {
+ case H5T_ORDER_LE:
+ printf("LE");
+ break;
+ case H5T_ORDER_BE:
+ printf("BE");
+ break;
+ case H5T_ORDER_VAX:
+ default:
+ printf("ERROR_UNKNOWN");
+ }
+ printf("\" Sign=\"");
+ switch (sgn) {
+ case H5T_SGN_NONE:
+ printf("false");
+ break;
+ case H5T_SGN_2:
+ printf("true");
+ break;
+ default:
+ printf("ERROR_UNKNOWN");
+ }
+ printf("\" Size=\"");
+ sz = H5Tget_size(type);
+ printf("%lu", (unsigned long)sz);
+ printf("\" />\n");
+ indent -= COL;
+ indentation(indent);
+ printf("</%sAtomicType>\n",xmlnsprefix);
break;
- case H5T_ORDER_VAX:
- default:
- printf("ERROR_UNKNOWN");
- }
- printf("\" Sign=\"");
- switch (sgn) {
- case H5T_SGN_NONE:
- printf("false");
+
+ case H5T_FLOAT:
+ /* <hdf5:FloatType ByteOrder="bo" Size="bytes"
+ SignBitLocation="bytes"
+ ExponentBits="eb" ExponentLocation="el"
+ MantissaBits="mb" MantissaLocation="ml" /> */
+ ord = H5Tget_order(type);
+ indentation(indent);
+ printf("<%sAtomicType>\n",xmlnsprefix);
+ indent += COL;
+ indentation(indent);
+ printf("<%sFloatType ByteOrder=\"",xmlnsprefix);
+ switch (ord) {
+ case H5T_ORDER_LE:
+ printf("LE");
+ break;
+ case H5T_ORDER_BE:
+ printf("BE");
+ break;
+ case H5T_ORDER_VAX:
+ printf("VAX");
+ break;
+ default:
+ printf("ERROR_UNKNOWN");
+ }
+ printf("\" Size=\"");
+ sz = H5Tget_size(type);
+ printf("%lu", (unsigned long)sz);
+ H5Tget_fields(type, &spos, &epos, &esize, &mpos, &msize);
+ printf("\" SignBitLocation=\"%lu\" ", (unsigned long)spos);
+ printf("ExponentBits=\"%lu\" ExponentLocation=\"%lu\" ", (unsigned long)esize, (unsigned long)epos);
+ printf("MantissaBits=\"%lu\" MantissaLocation=\"%lu\" />\n",
+ (unsigned long)msize, (unsigned long)mpos);
+ indent -= COL;
+ indentation(indent);
+ printf("</%sAtomicType>\n",xmlnsprefix);
break;
- case H5T_SGN_2:
- printf("true");
+
+ case H5T_TIME:
+ indentation(indent);
+ printf("<%sAtomicType>\n",xmlnsprefix);
+ indent += COL;
+ indentation(indent);
+ printf("<%sTimeType />\n",xmlnsprefix);
+ printf("<!-- H5T_TIME: not yet implemented -->");
+ indent -= COL;
+ indentation(indent);
+ printf("</%sAtomicType>\n",xmlnsprefix);
break;
- default:
- printf("ERROR_UNKNOWN");
- }
- printf("\" Size=\"");
- sz = H5Tget_size(type);
- printf("%lu", (unsigned long)sz);
- printf("\" />\n");
- indent -= COL;
- indentation(indent);
- printf("</%sAtomicType>\n",xmlnsprefix);
- break;
- case H5T_FLOAT:
- /* <hdf5:FloatType ByteOrder="bo" Size="bytes"
- SignBitLocation="bytes"
- ExponentBits="eb" ExponentLocation="el"
- MantissaBits="mb" MantissaLocation="ml" /> */
- ord = H5Tget_order(type);
- indentation(indent);
- printf("<%sAtomicType>\n",xmlnsprefix);
- indent += COL;
- indentation(indent);
- printf("<%sFloatType ByteOrder=\"",xmlnsprefix);
- switch (ord) {
- case H5T_ORDER_LE:
- printf("LE");
+ case H5T_STRING:
+ /* <hdf5:StringType Cset="cs" StrSize="chars" StrPad="pad" /> */
+ size = H5Tget_size(type);
+ str_pad = H5Tget_strpad(type);
+ cset = H5Tget_cset(type);
+ is_vlstr = H5Tis_variable_str(type);
+
+ indentation(indent);
+ printf("<%sAtomicType>\n",xmlnsprefix);
+ indent += COL;
+ indentation(indent);
+ printf("<%sStringType Cset=\"",xmlnsprefix);
+ if (cset == H5T_CSET_ASCII) {
+ printf("H5T_CSET_ASCII\" ");
+ } else {
+ printf("unknown_cset\" ");
+ }
+ if(is_vlstr)
+ printf("StrSize=\"H5T_VARIABLE\" StrPad=\"");
+ else
+ printf("StrSize=\"%d\" StrPad=\"", (int) size);
+ if (str_pad == H5T_STR_NULLTERM) {
+ printf("H5T_STR_NULLTERM\"/>\n");
+ } else if (str_pad == H5T_STR_NULLPAD) {
+ printf("H5T_STR_NULLPAD\"/>\n");
+ } else if (str_pad == H5T_STR_SPACEPAD) {
+ printf("H5T_STR_SPACEPAD\"/>\n");
+ } else {
+ printf("H5T_STR_ERROR\"/>\n");
+ }
+ indent -= COL;
+ indentation(indent);
+ printf("</%sAtomicType>\n",xmlnsprefix);
break;
- case H5T_ORDER_BE:
- printf("BE");
+
+ case H5T_BITFIELD:
+ /* <hdf5:BitfieldType ByteOrder="bo" Size="bytes"/> */
+ ord = H5Tget_order(type);
+ indentation(indent);
+ printf("<%sAtomicType>\n",xmlnsprefix);
+ indent += COL;
+ indentation(indent);
+ printf("<%sBitfieldType ByteOrder=\"",xmlnsprefix);
+ switch (ord) {
+ case H5T_ORDER_LE:
+ printf("LE");
+ break;
+ case H5T_ORDER_BE:
+ printf("BE");
+ break;
+ case H5T_ORDER_VAX:
+ default:
+ printf("ERROR_UNKNOWN");
+ }
+ size = H5Tget_size(type);
+ printf("\" Size=\"%lu\"/>\n", (unsigned long)size);
+ indent -= COL;
+ indentation(indent);
+ printf("</%sAtomicType>\n",xmlnsprefix);
break;
- case H5T_ORDER_VAX:
- printf("VAX");
- break;
- default:
- printf("ERROR_UNKNOWN");
- }
- printf("\" Size=\"");
- sz = H5Tget_size(type);
- printf("%lu", (unsigned long)sz);
- H5Tget_fields(type, &spos, &epos, &esize, &mpos, &msize);
- printf("\" SignBitLocation=\"%lu\" ", (unsigned long)spos);
- printf("ExponentBits=\"%lu\" ExponentLocation=\"%lu\" ", (unsigned long)esize, (unsigned long)epos);
- printf("MantissaBits=\"%lu\" MantissaLocation=\"%lu\" />\n",
- (unsigned long)msize, (unsigned long)mpos);
- indent -= COL;
- indentation(indent);
- printf("</%sAtomicType>\n",xmlnsprefix);
- break;
- case H5T_TIME:
- indentation(indent);
- printf("<%sAtomicType>\n",xmlnsprefix);
- indent += COL;
- indentation(indent);
- printf("<%sTimeType />\n",xmlnsprefix);
- printf("<!-- H5T_TIME: not yet implemented -->");
- indent -= COL;
- indentation(indent);
- printf("</%sAtomicType>\n",xmlnsprefix);
- break;
+ case H5T_OPAQUE:
+ /* <hdf5:OpaqueType Tag="tag" Size="bytes" /> */
+ indentation(indent);
+ printf("<%sAtomicType>\n",xmlnsprefix);
+ indent += COL;
+ indentation(indent);
+ printf("<%sOpaqueType Tag=\"%s\" ",xmlnsprefix, H5Tget_tag(type));
+ size = H5Tget_size(type);
+ printf("Size=\"%lu\"/>\n", (unsigned long)size);
+ indent -= COL;
+ indentation(indent);
+ printf("</%sAtomicType>\n",xmlnsprefix);
+ break;
- case H5T_STRING:
- /* <hdf5:StringType Cset="cs" StrSize="chars" StrPad="pad" /> */
- size = H5Tget_size(type);
- str_pad = H5Tget_strpad(type);
- cset = H5Tget_cset(type);
- is_vlstr = H5Tis_variable_str(type);
+ case H5T_COMPOUND:
+ /* recursively describe the components of a compound datatype */
- indentation(indent);
- printf("<%sAtomicType>\n",xmlnsprefix);
- indent += COL;
- indentation(indent);
- printf("<%sStringType Cset=\"",xmlnsprefix);
- if (cset == H5T_CSET_ASCII) {
- printf("H5T_CSET_ASCII\" ");
- } else {
- printf("unknown_cset\" ");
- }
- if(is_vlstr)
- printf("StrSize=\"H5T_VARIABLE\" StrPad=\"");
- else
- printf("StrSize=\"%d\" StrPad=\"", (int) size);
- if (str_pad == H5T_STR_NULLTERM) {
- printf("H5T_STR_NULLTERM\"/>\n");
- } else if (str_pad == H5T_STR_NULLPAD) {
- printf("H5T_STR_NULLPAD\"/>\n");
- } else if (str_pad == H5T_STR_SPACEPAD) {
- printf("H5T_STR_SPACEPAD\"/>\n");
- } else {
- printf("H5T_STR_ERROR\"/>\n");
- }
- indent -= COL;
- indentation(indent);
- printf("</%sAtomicType>\n",xmlnsprefix);
- break;
+ /* type of a dataset */
+ nmembers = H5Tget_nmembers(type);
- case H5T_BITFIELD:
- /* <hdf5:BitfieldType ByteOrder="bo" Size="bytes"/> */
- ord = H5Tget_order(type);
- indentation(indent);
- printf("<%sAtomicType>\n",xmlnsprefix);
- indent += COL;
- indentation(indent);
- printf("<%sBitfieldType ByteOrder=\"",xmlnsprefix);
- switch (ord) {
- case H5T_ORDER_LE:
- printf("LE");
- break;
- case H5T_ORDER_BE:
- printf("BE");
- break;
- case H5T_ORDER_VAX:
- default:
- printf("ERROR_UNKNOWN");
- }
- size = H5Tget_size(type);
- printf("\" Size=\"%lu\"/>\n", (unsigned long)size);
- indent -= COL;
- indentation(indent);
- printf("</%sAtomicType>\n",xmlnsprefix);
- break;
+ indentation(indent);
+ printf("<%sCompoundType>\n",xmlnsprefix);
- case H5T_OPAQUE:
- /* <hdf5:OpaqueType Tag="tag" Size="bytes" /> */
- indentation(indent);
- printf("<%sAtomicType>\n",xmlnsprefix);
- indent += COL;
- indentation(indent);
- printf("<%sOpaqueType Tag=\"%s\" ",xmlnsprefix, H5Tget_tag(type));
- size = H5Tget_size(type);
- printf("Size=\"%lu\"/>\n", (unsigned long)size);
- indent -= COL;
- indentation(indent);
- printf("</%sAtomicType>\n",xmlnsprefix);
- break;
+ /* List each member Field of the type */
+ /* <hdf5:Field FieldName="name" > */
+ /* <hdf5:DataType > */
+ indent += COL;
+ for (i = 0; i < nmembers; i++) {
+ char *t_fname;
- case H5T_COMPOUND:
- /* recursively describe the components of a compound datatype */
+ mname = H5Tget_member_name(type, i);
+ mtype = H5Tget_member_type(type, i);
+ indentation(indent);
+ t_fname = xml_escape_the_name(mname);
+ printf("<%sField FieldName=\"%s\">\n",xmlnsprefix, t_fname);
- /* type of a dataset */
- nmembers = H5Tget_nmembers(type);
+ free(mname);
+ free(t_fname);
+ indent += COL;
+ indentation(indent);
+ printf("<%sDataType>\n",xmlnsprefix);
+ indent += COL;
+ xml_print_datatype(mtype,0);
+ indent -= COL;
+ indentation(indent);
+ printf("</%sDataType>\n",xmlnsprefix);
+ indent -= COL;
- indentation(indent);
- printf("<%sCompoundType>\n",xmlnsprefix);
+ indentation(indent);
+ printf("</%sField>\n",xmlnsprefix);
+ }
+ indent -= COL;
+ indentation(indent);
+ printf("</%sCompoundType>\n",xmlnsprefix);
+ break;
- /* List each member Field of the type */
- /* <hdf5:Field FieldName="name" > */
- /* <hdf5:DataType > */
- indent += COL;
- for (i = 0; i < nmembers; i++) {
- char *t_fname;
+ case H5T_REFERENCE:
+ indentation(indent);
+ printf("<%sAtomicType>\n",xmlnsprefix);
+ indent += COL;
+ indentation(indent);
+ /* Only Object references supported at this time */
+ printf("<%sReferenceType>\n",xmlnsprefix);
+ indentation(indent + COL);
+ printf("<%sObjectReferenceType />\n",xmlnsprefix);
+ indentation(indent);
+ printf("</%sReferenceType>\n",xmlnsprefix);
+ indent -= COL;
+ indentation(indent);
+ printf("</%sAtomicType>\n",xmlnsprefix);
+ break;
- mname = H5Tget_member_name(type, i);
- mtype = H5Tget_member_type(type, i);
+ case H5T_ENUM:
+ /* <hdf5:EnumType Nelems="ne" >
+ list Name, values of enum
+ */
+ nmembs = H5Tget_nmembers(type);
+ indentation(indent);
+ printf("<%sAtomicType>\n",xmlnsprefix);
+ indent += COL;
+ indentation(indent);
+ printf("<%sEnumType Nelems=\"%d\">\n",xmlnsprefix, nmembs);
+ xml_print_enum(type);
indentation(indent);
- t_fname = xml_escape_the_name(mname);
- printf("<%sField FieldName=\"%s\">\n",xmlnsprefix, t_fname);
+ printf("</%sEnumType>\n",xmlnsprefix);
+ indent -= COL;
+ indentation(indent);
+ printf("</%sAtomicType>\n",xmlnsprefix);
+ break;
- free(mname);
- free(t_fname);
+ case H5T_VLEN:
+ indentation(indent);
+ printf("<%sVLType>\n",xmlnsprefix);
+ super = H5Tget_super(type);
indent += COL;
indentation(indent);
printf("<%sDataType>\n",xmlnsprefix);
indent += COL;
- xml_print_datatype(mtype,0);
+ xml_print_datatype(super,0);
indent -= COL;
indentation(indent);
printf("</%sDataType>\n",xmlnsprefix);
indent -= COL;
-
indentation(indent);
- printf("</%sField>\n",xmlnsprefix);
- }
- indent -= COL;
- indentation(indent);
- printf("</%sCompoundType>\n",xmlnsprefix);
- break;
-
- case H5T_REFERENCE:
- indentation(indent);
- printf("<%sAtomicType>\n",xmlnsprefix);
- indent += COL;
- indentation(indent);
- /* Only Object references supported at this time */
- printf("<%sReferenceType>\n",xmlnsprefix);
- indentation(indent + COL);
- printf("<%sObjectReferenceType />\n",xmlnsprefix);
- indentation(indent);
- printf("</%sReferenceType>\n",xmlnsprefix);
- indent -= COL;
- indentation(indent);
- printf("</%sAtomicType>\n",xmlnsprefix);
- break;
-
- case H5T_ENUM:
- /* <hdf5:EnumType Nelems="ne" >
- list Name, values of enum
- */
- nmembs = H5Tget_nmembers(type);
- indentation(indent);
- printf("<%sAtomicType>\n",xmlnsprefix);
- indent += COL;
- indentation(indent);
- printf("<%sEnumType Nelems=\"%d\">\n",xmlnsprefix, nmembs);
- xml_print_enum(type);
- indentation(indent);
- printf("</%sEnumType>\n",xmlnsprefix);
- indent -= COL;
- indentation(indent);
- printf("</%sAtomicType>\n",xmlnsprefix);
- break;
+ printf("</%sVLType>\n",xmlnsprefix);
+ H5Tclose(super);
- case H5T_VLEN:
- indentation(indent);
- printf("<%sVLType>\n",xmlnsprefix);
- super = H5Tget_super(type);
- indent += COL;
- indentation(indent);
- printf("<%sDataType>\n",xmlnsprefix);
- indent += COL;
- xml_print_datatype(super,0);
- indent -= COL;
- indentation(indent);
- printf("</%sDataType>\n",xmlnsprefix);
- indent -= COL;
- indentation(indent);
- printf("</%sVLType>\n",xmlnsprefix);
- H5Tclose(super);
+ break;
- break;
+ case H5T_ARRAY:
+ /* Get array base type */
+ super = H5Tget_super(type);
- case H5T_ARRAY:
- /* Get array base type */
- super = H5Tget_super(type);
+ /* Print lead-in */
+ indentation(indent);
+ printf("<%sArrayType Ndims=\"",xmlnsprefix);
+ ndims = H5Tget_array_ndims(type);
+ printf("%u\">\n", ndims);
- /* Print lead-in */
- indentation(indent);
- printf("<%sArrayType Ndims=\"",xmlnsprefix);
- ndims = H5Tget_array_ndims(type);
- printf("%u\">\n", ndims);
+ /* Get array information */
+ H5Tget_array_dims(type, dims, NULL);
- /* Get array information */
- H5Tget_array_dims(type, dims, NULL);
+ /* list of dimensions */
+ indent += COL;
+ for (i = 0; i < ndims; i++) {
+ indentation(indent);
+ printf("<%sArrayDimension DimSize=\"%u\"/>\n",
+ xmlnsprefix,
+ (int) dims[i]);
+ }
+ indent -= COL;
- /* list of dimensions */
- indent += COL;
- for (i = 0; i < ndims; i++) {
+ indent += COL;
indentation(indent);
- printf("<%sArrayDimension DimSize=\"%u\"/>\n",
- xmlnsprefix,
- (int) dims[i]);
- }
- indent -= COL;
-
- indent += COL;
- indentation(indent);
- printf("<%sDataType>\n",xmlnsprefix);
- indent += COL;
- xml_print_datatype(super,0);
- indent -= COL;
- indentation(indent);
- printf("</%sDataType>\n",xmlnsprefix);
- indent -= COL;
- indentation(indent);
- printf("</%sArrayType>\n",xmlnsprefix);
- /* Close array base type */
- H5Tclose(super);
- break;
+ printf("<%sDataType>\n",xmlnsprefix);
+ indent += COL;
+ xml_print_datatype(super,0);
+ indent -= COL;
+ indentation(indent);
+ printf("</%sDataType>\n",xmlnsprefix);
+ indent -= COL;
+ indentation(indent);
+ printf("</%sArrayType>\n",xmlnsprefix);
+ /* Close array base type */
+ H5Tclose(super);
+ break;
- default:
- printf("<!-- unknown data type -->");
- d_status = EXIT_FAILURE;
- break;
+ default:
+ printf("<!-- unknown datatype -->");
+ d_status = EXIT_FAILURE;
+ break;
}
} /* end else */
}
@@ -4662,51 +4601,51 @@ xml_dump_datatype(hid_t type)
indent += COL;
indentation(indent);
- if (H5Tcommitted(type) > 0) {
- H5G_stat_t statbuf;
- haddr_t objno; /* Compact form of object's location */
+ if(H5Tcommitted(type) > 0) {
+ H5O_info_t oinfo;
obj_t *found_obj; /* Found object */
- /* Data type is a shared or named data type */
- H5Gget_objinfo(type, ".", TRUE, &statbuf);
- objno = (haddr_t)statbuf.objno[0] | ((haddr_t)statbuf.objno[1] << (8 * sizeof(long)));
- found_obj = search_obj(type_table, objno);
-
- if (found_obj) {
- /* Shared data type, must be entered as an object */
- /* These 2 cases are the same now, but may change */
- char * dtxid = malloc(100);
- xml_name_to_XID(found_obj->objname,dtxid,100,1);
- if (!found_obj->recorded) {
- /* anonymous stored data type:
- following the dumper's current
- practice:
- use it's object ref as its name
- */
- printf("<%sNamedDataTypePtr OBJ-XID=\"%s\"/>\n",
- xmlnsprefix, dtxid);
+ /* Datatype is a shared or named datatype */
+ H5Oget_info(type, ".", &oinfo, H5P_DEFAULT);
+ found_obj = search_obj(type_table, oinfo.addr);
- } else {
- /* pointer to a named data type already in XML */
+ if(found_obj) {
+ /* Shared datatype, must be entered as an object */
+ /* These 2 cases are the same now, but may change */
+ char * dtxid = malloc(100);
+
+ xml_name_to_XID(found_obj->objname, dtxid, 100, 1);
+ if (!found_obj->recorded) {
+ /* anonymous stored datatype:
+ following the dumper's current
+ practice:
+ use it's object ref as its name
+ */
+ printf("<%sNamedDataTypePtr OBJ-XID=\"%s\"/>\n",
+ xmlnsprefix, dtxid);
+ } else {
+ /* pointer to a named datatype already in XML */
char *t_objname = xml_escape_the_name(found_obj->objname);
- printf("<%sNamedDataTypePtr OBJ-XID=\"%s\" H5Path=\"%s\" />\n",
- xmlnsprefix, dtxid,t_objname);
- free(t_objname);
+
+ printf("<%sNamedDataTypePtr OBJ-XID=\"%s\" H5Path=\"%s\" />\n",
+ xmlnsprefix, dtxid, t_objname);
+ free(t_objname);
+ }
+ free(dtxid);
+ } else {
+ printf("<!-- h5dump error: unknown committed type. -->\n");
}
- free(dtxid);
- } else {
- printf("<!-- h5dump error: unknown committed type. -->\n");
+ indent -= COL;
}
- indent -= COL;
- return;
+ else {
+ printf("<%sDataType>\n", xmlnsprefix);
+ indent += COL;
+ xml_print_datatype(type, 0);
+ indent -= COL;
+ indentation(indent);
+ printf("</%sDataType>\n", xmlnsprefix);
+ indent -= COL;
}
- printf("<%sDataType>\n",xmlnsprefix);
- indent += COL;
- xml_print_datatype(type,0);
- indent -= COL;
- indentation(indent);
- printf("</%sDataType>\n",xmlnsprefix);
- indent -= COL;
}
/*-------------------------------------------------------------------------
@@ -4738,47 +4677,47 @@ xml_dump_dataspace(hid_t space)
switch (space_type) {
case H5S_SCALAR:
- /* scalar dataspace (just a tag, no XML attrs. defined */
- printf("<%sScalarDataspace />\n",xmlnsprefix);
-
+ /* scalar dataspace (just a tag, no XML attrs. defined */
+ printf("<%sScalarDataspace />\n",xmlnsprefix);
break;
- case H5S_SIMPLE:
- /* simple dataspace */
- /* <hdf5:SimpleDataspace Ndims="nd"> */
- printf("<%sSimpleDataspace Ndims=\"%d\">\n",xmlnsprefix, ndims);
- /* print the <hdf5:Dimension> elements */
- for (i = 0; i < ndims; i++) {
- indentation(indent + COL + COL + COL);
- if (maxsize[i] == H5S_UNLIMITED) {
- HDfprintf(stdout,
- "<%sDimension DimSize=\"%Hu\" MaxDimSize=\"UNLIMITED\"/>\n",
- xmlnsprefix,size[i]);
- } else if (maxsize[i] == (hsize_t) 0) {
- HDfprintf(stdout,
- "<%sDimension DimSize=\"%Hu\" MaxDimSize=\"%Hu\"/>\n",
- xmlnsprefix,size[i], size[i]);
- } else {
- HDfprintf(stdout,
- "<%sDimension DimSize=\"%Hu\" MaxDimSize=\"%Hu\"/>\n",
- xmlnsprefix, size[i], maxsize[i]);
- }
- }
- indentation(indent + COL + COL);
- printf("</%sSimpleDataspace>\n", xmlnsprefix );
+ case H5S_SIMPLE:
+ /* simple dataspace */
+ /* <hdf5:SimpleDataspace Ndims="nd"> */
+ printf("<%sSimpleDataspace Ndims=\"%d\">\n",xmlnsprefix, ndims);
+ /* print the <hdf5:Dimension> elements */
+ for (i = 0; i < ndims; i++) {
+ indentation(indent + COL + COL + COL);
+ if (maxsize[i] == H5S_UNLIMITED) {
+ HDfprintf(stdout,
+ "<%sDimension DimSize=\"%Hu\" MaxDimSize=\"UNLIMITED\"/>\n",
+ xmlnsprefix,size[i]);
+ } else if (maxsize[i] == (hsize_t) 0) {
+ HDfprintf(stdout,
+ "<%sDimension DimSize=\"%Hu\" MaxDimSize=\"%Hu\"/>\n",
+ xmlnsprefix,size[i], size[i]);
+ } else {
+ HDfprintf(stdout,
+ "<%sDimension DimSize=\"%Hu\" MaxDimSize=\"%Hu\"/>\n",
+ xmlnsprefix, size[i], maxsize[i]);
+ }
+ }
+ indentation(indent + COL + COL);
+ printf("</%sSimpleDataspace>\n", xmlnsprefix );
break;
+
#ifdef TMP
/* Commented out: wait until the schema is updated first */
case H5S_NULL:
- /* null dataspace (just a tag, no XML attrs. defined */
- printf("<%sNullDataspace />\n",xmlnsprefix);
-
+ /* null dataspace (just a tag, no XML attrs. defined */
+ printf("<%sNullDataspace />\n",xmlnsprefix);
break;
#endif /* TMP */
+
case H5S_NO_CLASS:
default:
- printf("<!-- unknown dataspace -->\n");
+ printf("<!-- unknown dataspace -->\n");
}
indentation(indent + COL);
@@ -4829,60 +4768,59 @@ xml_dump_data(hid_t obj_id, int obj_data, struct subset_t UNUSED * sset, int UNU
indentation(indent + COL);
printf("<%sDataFromFile>\n",xmlnsprefix);
if (obj_data == DATASET_DATA) {
- type = H5Dget_type(obj_id);
- if (H5Tget_class(type) == H5T_REFERENCE) {
- status = xml_print_refs(obj_id, DATASET_DATA);
- } else if (H5Tget_class(type) == H5T_STRING) {
- status = xml_print_strs(obj_id, DATASET_DATA);
- } else {
- status = h5tools_dump_dset(stdout, outputformat, obj_id, -1, NULL, depth);
- }
- } else {
- /* Attribute data */
- type = H5Aget_type(obj_id);
-
- if (H5Tget_class(type) == H5T_REFERENCE) {
- /* references are done differently than
- the standard output:
- XML dumps a path to the object
- referenced.
- */
- status = xml_print_refs(obj_id, ATTRIBUTE_DATA);
- H5Tclose(type);
- } else if (H5Tget_class(type) == H5T_STRING) {
- status = xml_print_strs(obj_id, ATTRIBUTE_DATA);
+ type = H5Dget_type(obj_id);
+ if (H5Tget_class(type) == H5T_REFERENCE) {
+ status = xml_print_refs(obj_id, DATASET_DATA);
+ } else if (H5Tget_class(type) == H5T_STRING) {
+ status = xml_print_strs(obj_id, DATASET_DATA);
+ } else {
+ status = h5tools_dump_dset(stdout, outputformat, obj_id, -1, NULL, depth);
+ }
} else {
- /* all other data */
+ /* Attribute data */
+ type = H5Aget_type(obj_id);
+
+ if (H5Tget_class(type) == H5T_REFERENCE) {
+ /* references are done differently than
+ the standard output:
+ XML dumps a path to the object
+ referenced.
+ */
+ status = xml_print_refs(obj_id, ATTRIBUTE_DATA);
+ H5Tclose(type);
+ } else if (H5Tget_class(type) == H5T_STRING) {
+ status = xml_print_strs(obj_id, ATTRIBUTE_DATA);
+ } else {
+ /* all other data */
p_type = h5tools_get_native_type(type);
- H5Tclose(type);
+ H5Tclose(type);
- space = H5Aget_space(obj_id);
+ space = H5Aget_space(obj_id);
- ndims = H5Sget_simple_extent_dims(space, size, NULL);
+ ndims = H5Sget_simple_extent_dims(space, size, NULL);
- for (i = 0; i < ndims; i++)
- nelmts *= size[i];
+ for (i = 0; i < ndims; i++)
+ nelmts *= size[i];
- buf =
- malloc((size_t)(nelmts * MAX(H5Tget_size(type), H5Tget_size(p_type))));
- assert(buf);
+ buf = malloc((size_t)(nelmts * MAX(H5Tget_size(type), H5Tget_size(p_type))));
+ assert(buf);
- if (H5Aread(obj_id, p_type, buf) >= 0)
+ if (H5Aread(obj_id, p_type, buf) >= 0)
status = h5tools_dump_mem(stdout, outputformat, obj_id,
- p_type, space, buf, depth);
+ p_type, space, buf, depth);
- free(buf);
- H5Tclose(p_type);
- H5Sclose(space);
- H5Tclose(type);
- }
+ free(buf);
+ H5Tclose(p_type);
+ H5Sclose(space);
+ H5Tclose(type);
+ }
}
if (status == FAIL) {
- indentation(indent + COL);
- printf("Unable to print data.\n");
- status = 1;
+ indentation(indent + COL);
+ printf("Unable to print data.\n");
+ status = 1;
}
indentation(indent + COL);
@@ -4917,104 +4855,104 @@ xml_dump_attr(hid_t attr, const char *attr_name, void UNUSED * op_data)
free(t_aname);
if ((attr_id = H5Aopen_name(attr, attr_name)) >= 0) {
- type = H5Aget_type(attr_id);
- space = H5Aget_space(attr_id);
+ type = H5Aget_type(attr_id);
+ space = H5Aget_space(attr_id);
space_type = H5Sget_simple_extent_type(space);
- dump_function_table->dump_dataspace_function(space);
- dump_function_table->dump_datatype_function(type);
-
- if (display_attr_data && space_type!=H5S_NULL) {
- switch (H5Tget_class(type)) {
- case H5T_INTEGER:
- case H5T_FLOAT:
- case H5T_STRING:
- case H5T_BITFIELD:
- case H5T_OPAQUE:
- case H5T_ENUM:
- case H5T_ARRAY:
- dump_function_table->dump_data_function(attr_id, ATTRIBUTE_DATA, NULL, 0);
- break;
+ dump_function_table->dump_dataspace_function(space);
+ dump_function_table->dump_datatype_function(type);
+
+ if (display_attr_data && space_type!=H5S_NULL) {
+ switch (H5Tget_class(type)) {
+ case H5T_INTEGER:
+ case H5T_FLOAT:
+ case H5T_STRING:
+ case H5T_BITFIELD:
+ case H5T_OPAQUE:
+ case H5T_ENUM:
+ case H5T_ARRAY:
+ dump_function_table->dump_data_function(attr_id, ATTRIBUTE_DATA, NULL, 0);
+ break;
- case H5T_TIME:
- indent += COL;
- indentation(indent);
- printf("<%sData>\n",xmlnsprefix);
- indentation(indent);
- printf("<!-- Time data not yet implemented. -->\n");
- indentation(indent);
- printf("<%sNoData/>\n",xmlnsprefix);
- indentation(indent);
- printf("<hdf5:Data>\n");
- printf("</%sData>\n",xmlnsprefix);
- indent -= COL;
- break;
+ case H5T_TIME:
+ indent += COL;
+ indentation(indent);
+ printf("<%sData>\n",xmlnsprefix);
+ indentation(indent);
+ printf("<!-- Time data not yet implemented. -->\n");
+ indentation(indent);
+ printf("<%sNoData/>\n",xmlnsprefix);
+ indentation(indent);
+ printf("<hdf5:Data>\n");
+ printf("</%sData>\n",xmlnsprefix);
+ indent -= COL;
+ break;
- case H5T_COMPOUND:
- indentation(indent);
- printf("<!-- Note: format of compound data not specified -->\n");
- dump_function_table->dump_data_function(attr_id, ATTRIBUTE_DATA, NULL, 0);
- break;
+ case H5T_COMPOUND:
+ indentation(indent);
+ printf("<!-- Note: format of compound data not specified -->\n");
+ dump_function_table->dump_data_function(attr_id, ATTRIBUTE_DATA, NULL, 0);
+ break;
- case H5T_REFERENCE:
- indentation(indent);
- printf("<%sData>\n",xmlnsprefix);
- indentation(indent);
- if (!H5Tequal(type, H5T_STD_REF_OBJ)) {
- printf("<!-- Note: Region references not supported -->\n");
- indentation(indent);
- printf("<%sNoData />\n",xmlnsprefix);
- } else {
- printf("<%sDataFromFile>\n",xmlnsprefix);
- xml_print_refs(attr_id, ATTRIBUTE_DATA);
- indentation(indent);
- printf("</%sDataFromFile>\n",xmlnsprefix);
- }
- indentation(indent);
- printf("</%sData>\n",xmlnsprefix);
- break;
+ case H5T_REFERENCE:
+ indentation(indent);
+ printf("<%sData>\n",xmlnsprefix);
+ indentation(indent);
+ if (!H5Tequal(type, H5T_STD_REF_OBJ)) {
+ printf("<!-- Note: Region references not supported -->\n");
+ indentation(indent);
+ printf("<%sNoData />\n",xmlnsprefix);
+ } else {
+ printf("<%sDataFromFile>\n",xmlnsprefix);
+ xml_print_refs(attr_id, ATTRIBUTE_DATA);
+ indentation(indent);
+ printf("</%sDataFromFile>\n",xmlnsprefix);
+ }
+ indentation(indent);
+ printf("</%sData>\n",xmlnsprefix);
+ break;
- case H5T_VLEN:
- printf("<!-- Note: format of VL data not specified -->\n");
- dump_function_table->dump_data_function(attr_id, ATTRIBUTE_DATA, NULL, 0);
- break;
- default:
- indentation(indent);
- printf("<%sData>\n",xmlnsprefix);
- indentation(indent);
- printf("<!-- Unknown datatype: %d -->\n", H5Tget_class(type));
- indentation(indent);
- printf("<%sNoData/>\n",xmlnsprefix);
- indentation(indent);
- printf("</%sData>\n",xmlnsprefix);
- break;
+ case H5T_VLEN:
+ printf("<!-- Note: format of VL data not specified -->\n");
+ dump_function_table->dump_data_function(attr_id, ATTRIBUTE_DATA, NULL, 0);
+ break;
+ default:
+ indentation(indent);
+ printf("<%sData>\n",xmlnsprefix);
+ indentation(indent);
+ printf("<!-- Unknown datatype: %d -->\n", H5Tget_class(type));
+ indentation(indent);
+ printf("<%sNoData/>\n",xmlnsprefix);
+ indentation(indent);
+ printf("</%sData>\n",xmlnsprefix);
+ break;
+ }
+ } else {
+ /* The case of an attribute never yet written ??
+ * Or dataspace is H5S_NULL. */
+ indentation(indent + COL);
+ printf("<%sData>\n",xmlnsprefix);
+ indentation(indent + COL + COL);
+ printf("<%sNoData/>\n",xmlnsprefix);
+ indentation(indent + COL);
+ printf("</%sData>\n",xmlnsprefix);
}
- } else {
- /* The case of an attribute never yet written ??
- * Or dataspace is H5S_NULL. */
- indentation(indent + COL);
- printf("<%sData>\n",xmlnsprefix);
- indentation(indent + COL + COL);
- printf("<%sNoData/>\n",xmlnsprefix);
- indentation(indent + COL);
- printf("</%sData>\n",xmlnsprefix);
- }
- H5Tclose(type);
- H5Sclose(space);
- H5Aclose(attr_id);
- indentation(indent);
- printf("</%sAttribute>\n", xmlnsprefix );
- return SUCCEED;
+ H5Tclose(type);
+ H5Sclose(space);
+ H5Aclose(attr_id);
+ indentation(indent);
+ printf("</%sAttribute>\n", xmlnsprefix );
+ return SUCCEED;
} else {
- /* ?? failed */
- indentation(indent + COL);
- printf("<!-- h5dump error: unable to open attribute. -->\n");
- indentation(indent);
- printf("</%sAttribute>\n", xmlnsprefix );
- d_status = EXIT_FAILURE;
- return FAIL;
+ /* ?? failed */
+ indentation(indent + COL);
+ printf("<!-- h5dump error: unable to open attribute. -->\n");
+ indentation(indent);
+ printf("</%sAttribute>\n", xmlnsprefix );
+ d_status = EXIT_FAILURE;
+ return FAIL;
}
}
@@ -5047,29 +4985,30 @@ xml_dump_named_datatype(hid_t type, const char *name)
HDstrcat(tmp, name);
indentation(indent);
- /*char **/ dtxid = HDmalloc(100);
- /*char **/ parentxid = HDmalloc(100);
- /*char **/t_tmp = xml_escape_the_name(tmp);
- /*char **/t_prefix = xml_escape_the_name(prefix);
- /*char **/t_name = xml_escape_the_name(name);
- xml_name_to_XID(tmp,dtxid,100,1);
- xml_name_to_XID(prefix,parentxid,100,1);
- if (strncmp(name, "#", 1) == 0) {
- /* Special: this is an 'anonymous' NDT, deleted but
- still in use.
- We follow the dumper's undocumented practice, and
- use its object id as its name.
- Exactly the same as normal, but a separate case
- in the event we want to do something else in
- the future.
- */
- printf("<%sNamedDataType Name=\"%s\" OBJ-XID=\"%s\" "
+ dtxid = HDmalloc(100);
+ parentxid = HDmalloc(100);
+ t_tmp = xml_escape_the_name(tmp);
+ t_prefix = xml_escape_the_name(prefix);
+ t_name = xml_escape_the_name(name);
+
+ xml_name_to_XID(tmp, dtxid, 100, 1);
+ xml_name_to_XID(prefix, parentxid, 100, 1);
+ if(HDstrncmp(name, "#", 1) == 0) {
+ /* Special: this is an 'anonymous' NDT, deleted but
+ still in use.
+ We follow the dumper's undocumented practice, and
+ use its object id as its name.
+ Exactly the same as normal, but a separate case
+ in the event we want to do something else in
+ the future.
+ */
+ printf("<%sNamedDataType Name=\"%s\" OBJ-XID=\"%s\" "
"Parents=\"%s\" H5ParentPaths=\"%s\">\n",
xmlnsprefix,
name, dtxid,
parentxid,(HDstrcmp(prefix, "") ? t_prefix : "/"));
} else {
- printf("<%sNamedDataType Name=\"%s\" OBJ-XID=\"%s\" "
+ printf("<%sNamedDataType Name=\"%s\" OBJ-XID=\"%s\" "
"H5Path=\"%s\" Parents=\"%s\" H5ParentPaths=\"%s\">\n",
xmlnsprefix,
t_name, dtxid,
@@ -5114,70 +5053,65 @@ xml_dump_named_datatype(hid_t type, const char *name)
static void
xml_dump_group(hid_t gid, const char *name)
{
- H5G_stat_t statbuf;
- haddr_t objno; /* Compact form of object's location */
+ H5O_info_t oinfo;
char *cp;
hid_t dset, type;
char type_name[1024], *tmp = NULL;
char *par = NULL;
int isRoot = 0;
- int xtype;
char *ptrstr;
char *t_objname;
char *par_name;
- if (HDstrcmp(name, "/") == 0) {
- isRoot = 1;
- tmp = HDmalloc(2);
- HDstrcpy(tmp, "/");
+ if(HDstrcmp(name, "/") == 0) {
+ isRoot = 1;
+ tmp = HDmalloc(2);
+ HDstrcpy(tmp, "/");
} else {
- tmp = HDmalloc(HDstrlen(prefix) + HDstrlen(name) + 2);
- HDstrcpy(tmp, prefix);
- par = HDstrdup(tmp);
- cp = HDstrrchr(par, '/');
- if (cp != NULL) {
- if ((cp == par) && HDstrlen(par) > 1) {
- *(cp + 1) = '\0';
- } else {
- *cp = '\0';
+ tmp = HDmalloc(HDstrlen(prefix) + HDstrlen(name) + 2);
+ HDstrcpy(tmp, prefix);
+ par = HDstrdup(tmp);
+ cp = HDstrrchr(par, '/');
+ if(cp) {
+ if((cp == par) && HDstrlen(par) > 1)
+ *(cp + 1) = '\0';
+ else
+ *cp = '\0';
}
}
- }
indentation(indent);
-
indent += COL;
- H5Gget_objinfo(gid, ".", TRUE, &statbuf);
- objno = (haddr_t)statbuf.objno[0] | ((haddr_t)statbuf.objno[1] << (8 * sizeof(long)));
- if (statbuf.nlink > 1) {
+ H5Oget_info(gid, ".", &oinfo, H5P_DEFAULT);
+ if(oinfo.rc > 1) {
obj_t *found_obj; /* Found object */
- /* Group with more than one link to it... */
- found_obj = search_obj(group_table, objno);
+ /* Group with more than one link to it... */
+ found_obj = search_obj(group_table, oinfo.addr);
- if (found_obj == NULL) {
- indentation(indent);
- error_msg(progname, "internal error (file %s:line %d)\n",
- __FILE__, __LINE__);
- d_status = EXIT_FAILURE;
- } else {
+ if (found_obj == NULL) {
+ indentation(indent);
+ error_msg(progname, "internal error (file %s:line %d)\n",
+ __FILE__, __LINE__);
+ d_status = EXIT_FAILURE;
+ } else {
char *t_name = xml_escape_the_name(name);
char *grpxid = malloc(100);
char *parentxid = malloc(100);
- if (found_obj->displayed) {
+ if(found_obj->displayed) {
/* already seen: enter a groupptr */
- if (isRoot) {
+ if(isRoot) {
/* probably can't happen! */
- xml_name_to_XID("/",grpxid,100,1);
+ xml_name_to_XID("/", grpxid, 100, 1);
printf("<%sRootGroup OBJ-XID=\"%s\" H5Path=\"%s\">\n",
- xmlnsprefix,grpxid,"/");
+ xmlnsprefix, grpxid, "/");
} else {
t_objname = xml_escape_the_name(found_obj->objname);
par_name = xml_escape_the_name(par);
- xml_name_to_XID(tmp,grpxid,100,1);
- xml_name_to_XID(par,parentxid,100,1);
+ xml_name_to_XID(tmp, grpxid, 100, 1);
+ xml_name_to_XID(par, parentxid, 100, 1);
printf("<%sGroup Name=\"%s\" OBJ-XID=\"%s-%d\" H5Path=\"%s\" "
"Parents=\"%s\" H5ParentPaths=\"%s\">\n",
xmlnsprefix,t_name, grpxid, get_next_xid(),
@@ -5198,22 +5132,22 @@ xml_dump_group(hid_t gid, const char *name)
ptrstr, t_objname, parentxid, par_name);
free(t_objname);
free(par_name);
-
} else {
/* first time this group has been seen -- describe it */
- if (isRoot) {
- xml_name_to_XID("/",grpxid,100,1);
+ if(isRoot) {
+ xml_name_to_XID("/", grpxid, 100, 1);
printf("<%sRootGroup OBJ-XID=\"%s\" H5Path=\"%s\">\n",
- xmlnsprefix,grpxid,"/");
+ xmlnsprefix, grpxid, "/");
} else {
char *t_tmp = xml_escape_the_name(tmp);
+
par_name = xml_escape_the_name(par);
- xml_name_to_XID(tmp,grpxid,100,1);
- xml_name_to_XID(par,parentxid,100,1);
+ xml_name_to_XID(tmp, grpxid, 100, 1);
+ xml_name_to_XID(par, parentxid, 100, 1);
printf("<%sGroup Name=\"%s\" OBJ-XID=\"%s\" H5Path=\"%s\" "
"Parents=\"%s\" H5ParentPaths=\"%s\" >\n",
- xmlnsprefix,t_name, grpxid, t_tmp, parentxid, par_name);
+ xmlnsprefix,t_name, grpxid, t_tmp, parentxid, par_name);
free(t_tmp);
free(par_name);
}
@@ -5223,12 +5157,12 @@ xml_dump_group(hid_t gid, const char *name)
H5Aiterate(gid, NULL,
dump_function_table->dump_attribute_function, NULL);
- if (!strcmp(name, "/") && unamedtype) {
+ if(isRoot && unamedtype) {
unsigned u;
/* Very special case: dump unamed type in root group */
- for (u = 0; u < type_table->nobjs; u++) {
- if (!type_table->objs[u].recorded) {
+ for(u = 0; u < type_table->nobjs; u++) {
+ if(!type_table->objs[u].recorded) {
dset = H5Dopen(gid, type_table->objs[u].objname);
type = H5Dget_type(dset);
sprintf(type_name, "#"H5_PRINTF_HADDR_FMT, type_table->objs[u].objno);
@@ -5239,17 +5173,8 @@ xml_dump_group(hid_t gid, const char *name)
}
}
- /* iterate through all the members */
- xtype = H5G_TYPE;
- H5Literate(gid, ".", H5_INDEX_NAME, H5_ITER_INC, NULL, dump_all, (void *) &xtype, H5P_DEFAULT);
- xtype = H5G_DATASET;
- H5Literate(gid, ".", H5_INDEX_NAME, H5_ITER_INC, NULL, dump_all, (void *) &xtype, H5P_DEFAULT);
- xtype = H5G_GROUP;
- H5Literate(gid, ".", H5_INDEX_NAME, H5_ITER_INC, NULL, dump_all, (void *) &xtype, H5P_DEFAULT);
- xtype = H5G_LINK;
- H5Literate(gid, ".", H5_INDEX_NAME, H5_ITER_INC, NULL, dump_all, (void *) &xtype, H5P_DEFAULT);
- xtype = H5G_UDLINK;
- H5Literate(gid, ".", H5_INDEX_NAME, H5_ITER_INC, NULL, dump_all, (void *) &xtype, H5P_DEFAULT);
+ /* iterate through all the links */
+ H5Literate(gid, ".", H5_INDEX_NAME, H5_ITER_INC, NULL, dump_all, NULL, H5P_DEFAULT);
}
free(t_name);
free(grpxid);
@@ -5258,41 +5183,43 @@ xml_dump_group(hid_t gid, const char *name)
} else {
/* only link -- must be first time! */
- char *t_name = xml_escape_the_name(name);
+ char *t_name = xml_escape_the_name(name);
char *grpxid = malloc(100);
char *parentxid = malloc(100);
- if (isRoot) {
- xml_name_to_XID("/",grpxid,100,1);
+
+ if(isRoot) {
+ xml_name_to_XID("/", grpxid, 100, 1);
printf("<%sRootGroup OBJ-XID=\"%s\" H5Path=\"%s\">\n",
- xmlnsprefix,grpxid,"/");
+ xmlnsprefix, grpxid, "/");
} else {
char *t_tmp = xml_escape_the_name(tmp);
+
par_name = xml_escape_the_name(par);
- xml_name_to_XID(tmp,grpxid,100,1);
- xml_name_to_XID(par,parentxid,100,1);
+ xml_name_to_XID(tmp, grpxid, 100, 1);
+ xml_name_to_XID(par, parentxid, 100, 1);
printf("<%sGroup Name=\"%s\" OBJ-XID=\"%s\" H5Path=\"%s\" "
- "Parents=\"%s\" H5ParentPaths=\"%s\" >\n",
- xmlnsprefix,t_name, grpxid, t_tmp,
- parentxid, par_name);
+ "Parents=\"%s\" H5ParentPaths=\"%s\" >\n",
+ xmlnsprefix, t_name, grpxid, t_tmp,
+ parentxid, par_name);
free(t_tmp);
free(par_name);
}
- free(t_name);
+ free(t_name);
free(grpxid);
free(parentxid);
/* 1. do all the attributes of the group */
H5Aiterate(gid, NULL, dump_function_table->dump_attribute_function, NULL);
- if (!strcmp(name, "/") && unamedtype) {
+ if(isRoot && unamedtype) {
unsigned u;
/* Very special case: dump unamed type in root group */
- for (u = 0; u < type_table->nobjs; u++) {
- if (!type_table->objs[u].recorded) {
+ for(u = 0; u < type_table->nobjs; u++) {
+ if(!type_table->objs[u].recorded) {
dset = H5Dopen(gid, type_table->objs[u].objname);
type = H5Dget_type(dset);
- sprintf(type_name, "#"H5_PRINTF_HADDR_FMT, type_table->objs[u].objno);
+ sprintf(type_name, "#"H5_PRINTF_HADDR_FMT, type_table->objs[u].objno);
dump_function_table->dump_named_datatype_function(type, type_name);
H5Tclose(type);
H5Dclose(dset);
@@ -5300,26 +5227,16 @@ xml_dump_group(hid_t gid, const char *name)
}
}
- /* iterate through all the members */
- xtype = H5G_TYPE;
- H5Literate(gid, ".", H5_INDEX_NAME, H5_ITER_INC, NULL, dump_all, (void *) &xtype, H5P_DEFAULT);
- xtype = H5G_DATASET;
- H5Literate(gid, ".", H5_INDEX_NAME, H5_ITER_INC, NULL, dump_all, (void *) &xtype, H5P_DEFAULT);
- xtype = H5G_GROUP;
- H5Literate(gid, ".", H5_INDEX_NAME, H5_ITER_INC, NULL, dump_all, (void *) &xtype, H5P_DEFAULT);
- xtype = H5G_LINK;
- H5Literate(gid, ".", H5_INDEX_NAME, H5_ITER_INC, NULL, dump_all, (void *) &xtype, H5P_DEFAULT);
- xtype = H5G_UDLINK;
- H5Literate(gid, ".", H5_INDEX_NAME, H5_ITER_INC, NULL, dump_all, (void *) &xtype, H5P_DEFAULT);
+ /* iterate through all the links */
+ H5Literate(gid, ".", H5_INDEX_NAME, H5_ITER_INC, NULL, dump_all, NULL, H5P_DEFAULT);
}
indent -= COL;
indentation(indent);
- if (isRoot) {
- printf("</%sRootGroup>\n",xmlnsprefix);
- } else {
- printf("</%sGroup>\n" ,xmlnsprefix);
- }
+ if(isRoot)
+ printf("</%sRootGroup>\n", xmlnsprefix);
+ else
+ printf("</%sGroup>\n" , xmlnsprefix);
free(tmp);
}
@@ -5347,53 +5264,55 @@ xml_print_refs(hid_t did, int source)
hsize_t i;
if (source == DATASET_DATA) {
- type = H5Dget_type(did);
+ type = H5Dget_type(did);
} else if (source == ATTRIBUTE_DATA) {
- type = H5Aget_type(did);
+ type = H5Aget_type(did);
} else {
- /* return an error */
- return FAIL;
+ /* return an error */
+ return FAIL;
}
if (H5Tget_class(type) != H5T_REFERENCE) {
- /* return an error */
- return FAIL;
- }
- if (!H5Tequal(type, H5T_STD_REF_OBJ)) {
- /* region ref not supported yet... */
- /* return an error */
- return FAIL;
- }
- if (source == DATASET_DATA) {
- space = H5Dget_space(did);
- ssiz = H5Sget_simple_extent_npoints(space);
- ssiz *= H5Tget_size(type);
-
- buf = calloc((size_t)ssiz, sizeof(char));
- if (buf == NULL) {
+ /* return an error */
return FAIL;
}
- e = H5Dread(did, H5T_STD_REF_OBJ, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf);
- /* need to check result here */
- if (e < 0) {
- free(buf);
+ if (!H5Tequal(type, H5T_STD_REF_OBJ)) {
+ /* region ref not supported yet... */
+ /* return an error */
return FAIL;
}
+ if (source == DATASET_DATA) {
+ space = H5Dget_space(did);
+ ssiz = H5Sget_simple_extent_npoints(space);
+ ssiz *= H5Tget_size(type);
+ buf = calloc((size_t)ssiz, sizeof(char));
+ if(buf == NULL)
+ return FAIL;
+ e = H5Dread(did, H5T_STD_REF_OBJ, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf);
+ /* need to check result here */
+ if(e < 0) {
+ free(buf);
+ return FAIL;
+ }
} else if (source == ATTRIBUTE_DATA) {
- space = H5Aget_space(did);
- ssiz = H5Sget_simple_extent_npoints(space);
- ssiz *= H5Tget_size(type);
+ space = H5Aget_space(did);
+ ssiz = H5Sget_simple_extent_npoints(space);
+ ssiz *= H5Tget_size(type);
- buf = calloc((size_t)ssiz, sizeof(char));
- if (buf == NULL) {
- free(buf);
- return FAIL;
- }
- e = H5Aread(did, H5T_STD_REF_OBJ, buf);
- /* need to check the result here */
+ buf = calloc((size_t)ssiz, sizeof(char));
+ if (buf == NULL) {
+ free(buf);
+ return FAIL;
+ }
+ e = H5Aread(did, H5T_STD_REF_OBJ, buf);
+ /* need to check the result here */
+ if(e < 0) {
+ free(buf);
+ return FAIL;
+ }
} else {
- /* error */
- return FAIL;
+ /* error */
+ return FAIL;
}
refbuf = (hobj_ref_t *) buf;
@@ -5402,19 +5321,19 @@ xml_print_refs(hid_t did, int source)
for (i = 0; i < ssiz; i++) {
const char *path;
- path = lookup_ref_path(*refbuf);
- indentation(indent + COL);
+ path = lookup_ref_path(*refbuf);
+ indentation(indent + COL);
- if (!path) {
- printf("\"%s\"\n", "NULL");
- } else {
+ if (!path) {
+ printf("\"%s\"\n", "NULL");
+ } else {
char *t_path = xml_escape_the_string(path, -1);
- printf("\"%s\"\n", t_path);
+ printf("\"%s\"\n", t_path);
free(t_path);
- }
+ }
- refbuf++;
+ refbuf++;
}
free(buf);
@@ -5449,54 +5368,50 @@ xml_print_strs(hid_t did, int source)
htri_t is_vlstr;
if (source == DATASET_DATA) {
- type = H5Dget_type(did);
+ type = H5Dget_type(did);
} else if (source == ATTRIBUTE_DATA) {
- type = H5Aget_type(did);
+ type = H5Aget_type(did);
} else {
- /* return an error */
- return FAIL;
+ /* return an error */
+ return FAIL;
}
if (H5Tget_class(type) != H5T_STRING) {
- /* return an error */
- return FAIL;
+ /* return an error */
+ return FAIL;
}
is_vlstr = H5Tis_variable_str(type);
if (source == DATASET_DATA) {
- space = H5Dget_space(did);
- ssiz = H5Sget_simple_extent_npoints(space);
- ssiz *= H5Tget_size(type);
-
- buf = malloc((size_t)ssiz);
-
- if (buf == NULL) {
- return FAIL;
- }
+ space = H5Dget_space(did);
+ ssiz = H5Sget_simple_extent_npoints(space);
+ ssiz *= H5Tget_size(type);
- e = H5Dread(did, type, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf);
+ buf = malloc((size_t)ssiz);
+ if(buf == NULL)
+ return FAIL;
- if (e < 0) {
- free(buf);
- return FAIL;
- }
+ e = H5Dread(did, type, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf);
+ if (e < 0) {
+ free(buf);
+ return FAIL;
+ }
} else if (source == ATTRIBUTE_DATA) {
- space = H5Aget_space(did);
- ssiz = H5Sget_simple_extent_npoints(space);
- ssiz *= H5Tget_size(type);
+ space = H5Aget_space(did);
+ ssiz = H5Sget_simple_extent_npoints(space);
+ ssiz *= H5Tget_size(type);
- buf = malloc((size_t)ssiz);
- if (buf == NULL) {
- return FAIL;
- }
+ buf = malloc((size_t)ssiz);
+ if(buf == NULL)
+ return FAIL;
- e = H5Aread(did, type, buf);
- if (e < 0) {
- free(buf);
- return FAIL;
- }
+ e = H5Aread(did, type, buf);
+ if (e < 0) {
+ free(buf);
+ return FAIL;
+ }
} else {
- /* error */
- return FAIL;
+ /* error */
+ return FAIL;
}
/* pull out each string... */
@@ -5516,16 +5431,16 @@ xml_print_strs(hid_t did, int source)
HDstrncpy(onestring, bp, tsiz);
str_size = tsiz;
}
- indentation(indent + COL);
+ indentation(indent + COL);
- if (!onestring) {
- printf("NULL\n");
- } else {
+ if (!onestring) {
+ printf("NULL\n");
+ } else {
char *t_onestring = xml_escape_the_string(onestring, (int)str_size);
- printf("\"%s\"\n", t_onestring);
+ printf("\"%s\"\n", t_onestring);
free(t_onestring);
- }
+ }
bp += tsiz;
}
@@ -5560,72 +5475,72 @@ check_filters(hid_t dcpl)
nfilt = H5Pget_nfilters(dcpl);
if (nfilt <= 0)
- return;
+ return;
for (i = 0; i < nfilt; i++) {
#ifdef H5_WANT_H5_V1_6_COMPAT
- filter = H5Pget_filter(dcpl, (unsigned)i, &flags,
+ filter = H5Pget_filter(dcpl, (unsigned)i, &flags,
(size_t *) &cd_nelmts,
cd_values, 120, namebuf);
#else
- filter = H5Pget_filter(dcpl, (unsigned)i, &flags,
+ filter = H5Pget_filter(dcpl, (unsigned)i, &flags,
(size_t *) &cd_nelmts,
cd_values, 120, namebuf, NULL);
#endif /* H5_WANT_H5_V1_6_COMPAT */
- if (filter == H5Z_FILTER_DEFLATE) {
- indentation(indent + COL);
- printf("<%sDeflate Level=\"",xmlnsprefix);
+ if (filter == H5Z_FILTER_DEFLATE) {
+ indentation(indent + COL);
+ printf("<%sDeflate Level=\"",xmlnsprefix);
if (cd_nelmts < 1) {
- /* not sure what this means? */
- printf("6");
+ /* not sure what this means? */
+ printf("6");
} else {
- printf("%d",cd_values[0]);
+ printf("%d",cd_values[0]);
}
- printf("\"/>\n");
- } else if (filter == H5Z_FILTER_FLETCHER32) {
- indentation(indent + COL);
- printf("<%sFletcher32 />",xmlnsprefix);
- } else if (filter == H5Z_FILTER_SHUFFLE) {
- indentation(indent + COL);
- printf("<%sShuffle />",xmlnsprefix);
- } else if (filter == H5Z_FILTER_SZIP) {
+ printf("\"/>\n");
+ } else if (filter == H5Z_FILTER_FLETCHER32) {
+ indentation(indent + COL);
+ printf("<%sFletcher32 />",xmlnsprefix);
+ } else if (filter == H5Z_FILTER_SHUFFLE) {
+ indentation(indent + COL);
+ printf("<%sShuffle />",xmlnsprefix);
+ } else if (filter == H5Z_FILTER_SZIP) {
- indentation(indent + COL);
- printf("<%sSZIP ",xmlnsprefix);
+ indentation(indent + COL);
+ printf("<%sSZIP ",xmlnsprefix);
if (cd_nelmts < 2) {
- /* no pixels ? */
- printf("Pixels_per_block=\"-1\" ");
+ /* no pixels ? */
+ printf("Pixels_per_block=\"-1\" ");
} else {
- printf("Pixels_per_block=\"%d\" ",cd_values[1]);
+ printf("Pixels_per_block=\"%d\" ",cd_values[1]);
}
- /* analyse the options mask */
- if (cd_values[0] & H5_SZIP_CHIP_OPTION_MASK) {
- printf("Mode =\"Hardware\" ");
- } else if (cd_values[0] & H5_SZIP_ALLOW_K13_OPTION_MASK) {
- printf("Mode =\"K13\" ");
- }
- printf("Coding=\"");
- if (cd_values[0] & H5_SZIP_EC_OPTION_MASK) {
- printf("Entropy");
- } else if (cd_values[0] & H5_SZIP_NN_OPTION_MASK) {
- printf("NN");
- }
- printf("\" ");
+ /* analyse the options mask */
+ if (cd_values[0] & H5_SZIP_CHIP_OPTION_MASK) {
+ printf("Mode =\"Hardware\" ");
+ } else if (cd_values[0] & H5_SZIP_ALLOW_K13_OPTION_MASK) {
+ printf("Mode =\"K13\" ");
+ }
+ printf("Coding=\"");
+ if (cd_values[0] & H5_SZIP_EC_OPTION_MASK) {
+ printf("Entropy");
+ } else if (cd_values[0] & H5_SZIP_NN_OPTION_MASK) {
+ printf("NN");
+ }
+ printf("\" ");
- printf("ByteOrder=\"");
- if (cd_values[0] & H5_SZIP_LSB_OPTION_MASK) {
- printf("LSB");
- } else if (cd_values[0] & H5_SZIP_MSB_OPTION_MASK) {
- printf("MSB");
- }
- printf("\" ");
+ printf("ByteOrder=\"");
+ if (cd_values[0] & H5_SZIP_LSB_OPTION_MASK) {
+ printf("LSB");
+ } else if (cd_values[0] & H5_SZIP_MSB_OPTION_MASK) {
+ printf("MSB");
+ }
+ printf("\" ");
- if (cd_values[0] & H5_SZIP_RAW_OPTION_MASK) {
- printf("Header=\"Raw\"");
- }
+ if (cd_values[0] & H5_SZIP_RAW_OPTION_MASK) {
+ printf("Header=\"Raw\"");
+ }
printf("/>\n");
- } else {
- /* unknown option */
- }
+ } else {
+ /* unknown option */
+ }
}
}
@@ -5675,76 +5590,76 @@ xml_dump_fill_value(hid_t dcpl, hid_t type)
/* all other data */
switch (H5Tget_class(type)) {
case H5T_INTEGER:
- indentation(indent);
- printf("<%sDataFromFile>\n",xmlnsprefix);
- indentation(indent);
- printf("\"%d\"\n",*(int *)buf);
- indentation(indent);
- printf("</%sDataFromFile>\n",xmlnsprefix);
- break;
+ indentation(indent);
+ printf("<%sDataFromFile>\n",xmlnsprefix);
+ indentation(indent);
+ printf("\"%d\"\n",*(int *)buf);
+ indentation(indent);
+ printf("</%sDataFromFile>\n",xmlnsprefix);
+ break;
case H5T_FLOAT:
- indentation(indent);
- printf("<%sDataFromFile>\n",xmlnsprefix);
- indentation(indent);
- printf("\"%f\"\n",*(float *)buf);
- indentation(indent);
- printf("</%sDataFromFile>\n",xmlnsprefix);
- break;
+ indentation(indent);
+ printf("<%sDataFromFile>\n",xmlnsprefix);
+ indentation(indent);
+ printf("\"%f\"\n",*(float *)buf);
+ indentation(indent);
+ printf("</%sDataFromFile>\n",xmlnsprefix);
+ break;
case H5T_BITFIELD:
case H5T_OPAQUE:
- indentation(indent);
- printf("<%sDataFromFile>\n",xmlnsprefix);
- sz = H5Tget_size(type);
- indentation(indent);
- printf("\"");
- for (i = 0; i < sz; i++) {
- printf("%x ",*(unsigned int *)buf);
- buf = (char *)buf + sizeof(unsigned int);
- }
- printf("\"\n");
- indentation(indent);
- printf("</%sDataFromFile>\n",xmlnsprefix);
- break;
+ indentation(indent);
+ printf("<%sDataFromFile>\n",xmlnsprefix);
+ sz = H5Tget_size(type);
+ indentation(indent);
+ printf("\"");
+ for (i = 0; i < sz; i++) {
+ printf("%x ",*(unsigned int *)buf);
+ buf = (char *)buf + sizeof(unsigned int);
+ }
+ printf("\"\n");
+ indentation(indent);
+ printf("</%sDataFromFile>\n",xmlnsprefix);
+ break;
case H5T_ENUM:
- indentation(indent);
- printf("<%sDataFromFile>\n",xmlnsprefix);
- name = H5Tget_member_name(type, *(unsigned *)buf);
- indentation(indent);
- printf("\"%s\"\n",name);
- indentation(indent);
- printf("</%sDataFromFile>\n",xmlnsprefix);
- break;
+ indentation(indent);
+ printf("<%sDataFromFile>\n",xmlnsprefix);
+ name = H5Tget_member_name(type, *(unsigned *)buf);
+ indentation(indent);
+ printf("\"%s\"\n",name);
+ indentation(indent);
+ printf("</%sDataFromFile>\n",xmlnsprefix);
+ break;
case H5T_ARRAY:
- indentation(indent);
+ indentation(indent);
printf("<!-- Array fill values not yet implemented. -->\n");
indentation(indent);
printf("<%sNoData />\n",xmlnsprefix);
break;
case H5T_TIME:
- indentation(indent);
+ indentation(indent);
printf("<!-- Time fill not yet implemented. -->\n");
indentation(indent);
printf("<%sNoData />\n",xmlnsprefix);
break;
case H5T_COMPOUND:
- indentation(indent);
+ indentation(indent);
printf("<!-- Compound fill not yet implemented. -->\n");
indentation(indent);
printf("<%sNoData />\n",xmlnsprefix);
break;
- case H5T_VLEN:
- indentation(indent);
+ case H5T_VLEN:
+ indentation(indent);
printf("<!-- VL fill not yet implemented. -->\n");
indentation(indent);
printf("<%sNoData />\n",xmlnsprefix);
break;
- default:
- indentation(indent);
- printf("<!-- Unknown fill datatype: %d -->\n", H5Tget_class(type));
- indentation(indent);
- printf("<%sNoData/>\n",xmlnsprefix);
- break;
- }
+ default:
+ indentation(indent);
+ printf("<!-- Unknown fill datatype: %d -->\n", H5Tget_class(type));
+ indentation(indent);
+ printf("<%sNoData/>\n",xmlnsprefix);
+ break;
+ }
}
free(buf);
indent -= COL;
@@ -5811,67 +5726,67 @@ xml_dump_dataset(hid_t did, const char *name, struct subset_t UNUSED * sset)
space = H5Dget_space(did);
/* Print information about storage layout */
- if (H5D_CHUNKED == H5Pget_layout(dcpl)) {
- maxdims = H5Sget_simple_extent_ndims(space);
- chsize = (hsize_t *) malloc(maxdims * sizeof(hsize_t));
- indent += COL;
- indentation(indent);
- printf("<%sStorageLayout>\n",xmlnsprefix);
- indent += COL;
- indentation(indent);
- printf("<%sChunkedLayout ",xmlnsprefix);
- ndims = H5Pget_chunk(dcpl, maxdims, chsize);
- printf("Ndims=\"%d\">\n", ndims);
+ if(H5D_CHUNKED == H5Pget_layout(dcpl)) {
+ maxdims = H5Sget_simple_extent_ndims(space);
+ chsize = (hsize_t *) malloc(maxdims * sizeof(hsize_t));
+ indent += COL;
+ indentation(indent);
+ printf("<%sStorageLayout>\n",xmlnsprefix);
+ indent += COL;
+ indentation(indent);
+ printf("<%sChunkedLayout ",xmlnsprefix);
+ ndims = H5Pget_chunk(dcpl, maxdims, chsize);
+ printf("Ndims=\"%d\">\n", ndims);
- indent += COL;
+ indent += COL;
- for (i = 0; i < ndims; i++) {
- indentation(indent);
- HDfprintf(stdout, "<%sChunkDimension DimSize=\"%Hu\" />\n",
- xmlnsprefix, chsize[i]);
- }
+ for (i = 0; i < ndims; i++) {
+ indentation(indent);
+ HDfprintf(stdout, "<%sChunkDimension DimSize=\"%Hu\" />\n",
+ xmlnsprefix, chsize[i]);
+ }
- indentation(indent);
- printf("<%sRequiredFilter>\n",xmlnsprefix);
- indent += COL;
- check_filters(dcpl);
- indent -= COL;
- indentation(indent);
- printf("</%sRequiredFilter>\n",xmlnsprefix);
+ indentation(indent);
+ printf("<%sRequiredFilter>\n",xmlnsprefix);
+ indent += COL;
+ check_filters(dcpl);
+ indent -= COL;
+ indentation(indent);
+ printf("</%sRequiredFilter>\n",xmlnsprefix);
- indent -= COL;
+ indent -= COL;
- indentation(indent);
- printf("</%sChunkedLayout>\n",xmlnsprefix);
- indent -= COL;
- indentation(indent);
- printf("</%sStorageLayout>\n",xmlnsprefix);
- indent -= COL;
- free(chsize);
+ indentation(indent);
+ printf("</%sChunkedLayout>\n",xmlnsprefix);
+ indent -= COL;
+ indentation(indent);
+ printf("</%sStorageLayout>\n",xmlnsprefix);
+ indent -= COL;
+ free(chsize);
} else if (H5D_CONTIGUOUS == H5Pget_layout(dcpl)) {
- indent += COL;
- indentation(indent);
- printf("<%sStorageLayout>\n",xmlnsprefix);
- indent += COL;
- indentation(indent);
- printf("<%sContiguousLayout/>\n",xmlnsprefix);
- indent -= COL;
- indentation(indent);
- printf("</%sStorageLayout>\n",xmlnsprefix);
- indent -= COL;
- indentation(indent);
+ indent += COL;
+ indentation(indent);
+ printf("<%sStorageLayout>\n",xmlnsprefix);
+ indent += COL;
+ indentation(indent);
+ printf("<%sContiguousLayout/>\n",xmlnsprefix);
+ indent -= COL;
+ indentation(indent);
+ printf("</%sStorageLayout>\n",xmlnsprefix);
+ indent -= COL;
+ indentation(indent);
} else if (H5D_COMPACT == H5Pget_layout(dcpl)) {
- indent += COL;
- indentation(indent);
- printf("<%sStorageLayout>\n",xmlnsprefix);
- indent += COL;
- indentation(indent);
- printf("<%sCompactLayout/>\n",xmlnsprefix);
- indent -= COL;
- indentation(indent);
- printf("</%sStorageLayout>\n",xmlnsprefix);
- indent -= COL;
- indentation(indent);
+ indent += COL;
+ indentation(indent);
+ printf("<%sStorageLayout>\n",xmlnsprefix);
+ indent += COL;
+ indentation(indent);
+ printf("<%sCompactLayout/>\n",xmlnsprefix);
+ indent -= COL;
+ indentation(indent);
+ printf("</%sStorageLayout>\n",xmlnsprefix);
+ indent -= COL;
+ indentation(indent);
}
/* and check for external.... ?? */
@@ -5883,36 +5798,36 @@ xml_dump_dataset(hid_t did, const char *name, struct subset_t UNUSED * sset)
H5Pget_fill_time(dcpl, &ft);
printf("FillTime=\"");
switch ( ft ) {
- case H5D_FILL_TIME_ALLOC:
- printf("FillOnAlloc");
- break;
- case H5D_FILL_TIME_NEVER:
- printf("FillNever");
- break;
- case H5D_FILL_TIME_IFSET:
- printf("FillIfSet");
- break;
- default:
- printf("?");
- break;
+ case H5D_FILL_TIME_ALLOC:
+ printf("FillOnAlloc");
+ break;
+ case H5D_FILL_TIME_NEVER:
+ printf("FillNever");
+ break;
+ case H5D_FILL_TIME_IFSET:
+ printf("FillIfSet");
+ break;
+ default:
+ printf("?");
+ break;
}
printf("\" ");
H5Pget_alloc_time(dcpl, &at);
printf("AllocationTime=\"");
switch ( at ) {
- case H5D_ALLOC_TIME_EARLY:
- printf("Early");
- break;
- case H5D_ALLOC_TIME_INCR:
- printf("Incremental");
- break;
- case H5D_ALLOC_TIME_LATE:
- printf("Late");
- break;
- case H5D_ALLOC_TIME_DEFAULT:
- default:
- printf("?");
- break;
+ case H5D_ALLOC_TIME_EARLY:
+ printf("Early");
+ break;
+ case H5D_ALLOC_TIME_INCR:
+ printf("Incremental");
+ break;
+ case H5D_ALLOC_TIME_LATE:
+ printf("Late");
+ break;
+ case H5D_ALLOC_TIME_DEFAULT:
+ default:
+ printf("?");
+ break;
}
printf("\"");
printf(">\n");
@@ -5948,77 +5863,77 @@ xml_dump_dataset(hid_t did, const char *name, struct subset_t UNUSED * sset)
tempi = H5Dget_storage_size(did);
if (display_data && (tempi > 0)) {
- switch (H5Tget_class(type)) {
- case H5T_INTEGER:
- case H5T_FLOAT:
- case H5T_STRING:
- case H5T_BITFIELD:
- case H5T_OPAQUE:
- case H5T_ENUM:
- case H5T_ARRAY:
- dump_function_table->dump_data_function(did, DATASET_DATA, NULL, 0);
- break;
+ switch (H5Tget_class(type)) {
+ case H5T_INTEGER:
+ case H5T_FLOAT:
+ case H5T_STRING:
+ case H5T_BITFIELD:
+ case H5T_OPAQUE:
+ case H5T_ENUM:
+ case H5T_ARRAY:
+ dump_function_table->dump_data_function(did, DATASET_DATA, NULL, 0);
+ break;
- case H5T_TIME:
- indent += COL;
- indentation(indent);
- printf("<%sData>\n",xmlnsprefix);
- indentation(indent);
- printf("<!-- Time data not yet implemented. -->\n");
- indentation(indent);
- printf("<%sNoData />\n",xmlnsprefix);
- indentation(indent);
- printf("<%sData>\n",xmlnsprefix);
- indent -= COL;
- break;
+ case H5T_TIME:
+ indent += COL;
+ indentation(indent);
+ printf("<%sData>\n",xmlnsprefix);
+ indentation(indent);
+ printf("<!-- Time data not yet implemented. -->\n");
+ indentation(indent);
+ printf("<%sNoData />\n",xmlnsprefix);
+ indentation(indent);
+ printf("<%sData>\n",xmlnsprefix);
+ indent -= COL;
+ break;
- case H5T_COMPOUND:
- indentation(indent);
- printf("<!-- Note: format of compound data not specified -->\n");
- dump_function_table->dump_data_function(did, DATASET_DATA, NULL, 0);
- break;
+ case H5T_COMPOUND:
+ indentation(indent);
+ printf("<!-- Note: format of compound data not specified -->\n");
+ dump_function_table->dump_data_function(did, DATASET_DATA, NULL, 0);
+ break;
- case H5T_REFERENCE:
- indentation(indent);
- printf("<%sData>\n",xmlnsprefix);
- indentation(indent);
- if (!H5Tequal(type, H5T_STD_REF_OBJ)) {
- printf("<!-- Note: Region references not supported -->\n");
+ case H5T_REFERENCE:
indentation(indent);
- printf("<%sNoData />\n",xmlnsprefix);
- } else {
- printf("<%sDataFromFile>\n",xmlnsprefix);
- xml_print_refs(did, DATASET_DATA);
- indentation(indent);
- printf("</%sDataFromFile>\n",xmlnsprefix);
- }
- indentation(indent);
- printf("</%sData>\n",xmlnsprefix);
- break;
+ printf("<%sData>\n",xmlnsprefix);
+ indentation(indent);
+ if (!H5Tequal(type, H5T_STD_REF_OBJ)) {
+ printf("<!-- Note: Region references not supported -->\n");
+ indentation(indent);
+ printf("<%sNoData />\n",xmlnsprefix);
+ } else {
+ printf("<%sDataFromFile>\n",xmlnsprefix);
+ xml_print_refs(did, DATASET_DATA);
+ indentation(indent);
+ printf("</%sDataFromFile>\n",xmlnsprefix);
+ }
+ indentation(indent);
+ printf("</%sData>\n",xmlnsprefix);
+ break;
- case H5T_VLEN:
- printf("<!-- Note: format of VL data not specified -->\n");
- dump_function_table->dump_data_function(did, DATASET_DATA, NULL, 0);
- break;
- default:
- indentation(indent);
+ case H5T_VLEN:
+ printf("<!-- Note: format of VL data not specified -->\n");
+ dump_function_table->dump_data_function(did, DATASET_DATA, NULL, 0);
+ break;
+ default:
+ indentation(indent);
+ printf("<%sData>\n",xmlnsprefix);
+ indentation(indent);
+ printf("<!-- Unknown datatype: %d -->\n", H5Tget_class(type));
+ indentation(indent);
+ printf("<%sNoData/>\n",xmlnsprefix);
+ indentation(indent);
+ printf("</%sData>\n",xmlnsprefix);
+ break;
+ }
+ } else {
+ /* no data written */
+ indentation(indent + COL);
printf("<%sData>\n",xmlnsprefix);
- indentation(indent);
- printf("<!-- Unknown datatype: %d -->\n", H5Tget_class(type));
- indentation(indent);
+ indentation(indent + COL + COL);
printf("<%sNoData/>\n",xmlnsprefix);
- indentation(indent);
+ indentation(indent + COL);
printf("</%sData>\n",xmlnsprefix);
- break;
- }
- } else {
- /* no data written */
- indentation(indent + COL);
- printf("<%sData>\n",xmlnsprefix);
- indentation(indent + COL + COL);
- printf("<%sNoData/>\n",xmlnsprefix);
- indentation(indent + COL);
- printf("</%sData>\n",xmlnsprefix);
}
H5Tclose(type);
@@ -6045,13 +5960,13 @@ xml_dump_dataset(hid_t did, const char *name, struct subset_t UNUSED * sset)
static void
xml_print_enum(hid_t type)
{
- char **name = NULL; /*member names */
+ char **name = NULL; /*member names */
unsigned char *value = NULL; /*value array */
- unsigned nmembs; /*number of members */
- hid_t super; /*enum base integer type */
- hid_t native = -1; /*native integer data type */
- size_t dst_size; /*destination value type size */
- unsigned i; /*miscellaneous counters */
+ unsigned nmembs; /*number of members */
+ hid_t super; /*enum base integer type */
+ hid_t native = -1; /*native integer datatype */
+ size_t dst_size; /*destination value type size */
+ unsigned i; /*miscellaneous counters */
size_t j;
nmembs = H5Tget_nmembers(type);
@@ -6064,22 +5979,22 @@ xml_print_enum(hid_t type)
printf("</%sDataType>\n",xmlnsprefix);
/*
- * Determine what data type to use for the native values. To simplify
+ * Determine what datatype to use for the native values. To simplify
* things we entertain three possibilities:
* 1. long_long -- the largest native signed integer
* 2. unsigned long_long -- the largest native unsigned integer
* 3. raw format
*/
if (H5Tget_size(type) <= sizeof(long_long)) {
- dst_size = sizeof(long_long);
+ dst_size = sizeof(long_long);
- if (H5T_SGN_NONE == H5Tget_sign(type)) {
- native = H5T_NATIVE_ULLONG;
- } else {
- native = H5T_NATIVE_LLONG;
- }
+ if (H5T_SGN_NONE == H5Tget_sign(type)) {
+ native = H5T_NATIVE_ULLONG;
+ } else {
+ native = H5T_NATIVE_LLONG;
+ }
} else {
- dst_size = H5Tget_size(type);
+ dst_size = H5Tget_size(type);
}
/* Get the names and raw values of all members */
@@ -6087,13 +6002,13 @@ xml_print_enum(hid_t type)
value = calloc(nmembs, MAX(H5Tget_size(type), dst_size));
for (i = 0; i < nmembs; i++) {
- name[i] = H5Tget_member_name(type, i);
- H5Tget_member_value(type, i, value + i * H5Tget_size(type));
+ name[i] = H5Tget_member_name(type, i);
+ H5Tget_member_value(type, i, value + i * H5Tget_size(type));
}
- /* Convert values to native data type */
+ /* Convert values to native datatype */
if (native > 0)
- H5Tconvert(super, native, nmembs, value, NULL, H5P_DEFAULT);
+ H5Tconvert(super, native, nmembs, value, NULL, H5P_DEFAULT);
/* Sort members by increasing value */
/*not implemented yet */
@@ -6103,38 +6018,38 @@ xml_print_enum(hid_t type)
for (i = 0; i < nmembs; i++) {
char *t_name = xml_escape_the_name(name[i]);
- indentation(indent);
- printf("<%sEnumElement>\n",xmlnsprefix);
- indentation(indent + COL);
- printf("%s\n", t_name);
+ indentation(indent);
+ printf("<%sEnumElement>\n",xmlnsprefix);
+ indentation(indent + COL);
+ printf("%s\n", t_name);
free(t_name);
- indentation(indent);
- printf("</%sEnumElement>\n",xmlnsprefix);
- indentation(indent);
- printf("<%sEnumValue>\n",xmlnsprefix);
- indentation(indent + COL);
- if (native < 0) {
- printf("0x");
-
- for (j = 0; j < dst_size; j++)
- printf("%02x", value[i * dst_size + j]);
- } else if (H5T_SGN_NONE == H5Tget_sign(native)) {
- HDfprintf(stdout,"%" H5_PRINTF_LL_WIDTH "u", *((unsigned long_long *)
- ((void *) (value + i * dst_size))));
- } else {
- HDfprintf(stdout,"%" H5_PRINTF_LL_WIDTH "d",
- *((long_long *) ((void *) (value + i * dst_size))));
- }
- printf("\n");
- indentation(indent);
- printf("</%sEnumValue>\n",xmlnsprefix);
+ indentation(indent);
+ printf("</%sEnumElement>\n",xmlnsprefix);
+ indentation(indent);
+ printf("<%sEnumValue>\n",xmlnsprefix);
+ indentation(indent + COL);
+ if (native < 0) {
+ printf("0x");
+
+ for (j = 0; j < dst_size; j++)
+ printf("%02x", value[i * dst_size + j]);
+ } else if (H5T_SGN_NONE == H5Tget_sign(native)) {
+ HDfprintf(stdout,"%" H5_PRINTF_LL_WIDTH "u", *((unsigned long_long *)
+ ((void *) (value + i * dst_size))));
+ } else {
+ HDfprintf(stdout,"%" H5_PRINTF_LL_WIDTH "d",
+ *((long_long *) ((void *) (value + i * dst_size))));
+ }
+ printf("\n");
+ indentation(indent);
+ printf("</%sEnumValue>\n",xmlnsprefix);
}
indent -= COL;
/* Release resources */
for (i = 0; i < nmembs; i++)
- free(name[i]);
+ free(name[i]);
free(name);
free(value);
@@ -6183,55 +6098,54 @@ h5_fileaccess(void)
if (NULL==(name=HDstrtok(s, " \t\n\r"))) return fapl;
if (!HDstrcmp(name, "sec2")) {
- /* Unix read() and write() system calls */
- if (H5Pset_fapl_sec2(fapl)<0) return -1;
+ /* Unix read() and write() system calls */
+ if (H5Pset_fapl_sec2(fapl)<0) return -1;
} else if (!HDstrcmp(name, "stdio")) {
- /* Standard C fread() and fwrite() system calls */
- if (H5Pset_fapl_stdio(fapl)<0) return -1;
+ /* Standard C fread() and fwrite() system calls */
+ if (H5Pset_fapl_stdio(fapl)<0) return -1;
} else if (!HDstrcmp(name, "core")) {
- /* In-core temporary file with 1MB increment */
- if (H5Pset_fapl_core(fapl, 1024*1024, FALSE)<0) return -1;
+ /* In-core temporary file with 1MB increment */
+ if (H5Pset_fapl_core(fapl, 1024*1024, FALSE)<0) return -1;
} else if (!HDstrcmp(name, "split")) {
- /* Split meta data and raw data each using default driver */
- if (H5Pset_fapl_split(fapl,
+ /* Split meta data and raw data each using default driver */
+ if (H5Pset_fapl_split(fapl,
"-m.h5", H5P_DEFAULT,
"-r.h5", H5P_DEFAULT)<0)
return -1;
} else if (!HDstrcmp(name, "multi")) {
- /* Multi-file driver, general case of the split driver */
- H5FD_mem_t memb_map[H5FD_MEM_NTYPES];
- hid_t memb_fapl[H5FD_MEM_NTYPES];
- const char *memb_name[H5FD_MEM_NTYPES];
- char sv[H5FD_MEM_NTYPES][1024];
- haddr_t memb_addr[H5FD_MEM_NTYPES];
- H5FD_mem_t mt;
-
- HDmemset(memb_map, 0, sizeof memb_map);
- HDmemset(memb_fapl, 0, sizeof memb_fapl);
- HDmemset(memb_name, 0, sizeof memb_name);
- HDmemset(memb_addr, 0, sizeof memb_addr);
-
- assert(HDstrlen(multi_letters)==H5FD_MEM_NTYPES);
- for (mt=H5FD_MEM_DEFAULT; mt<H5FD_MEM_NTYPES; H5_INC_ENUM(H5FD_mem_t,mt)) {
- memb_fapl[mt] = H5P_DEFAULT;
- memb_map[mt] = mt;
- sprintf(sv[mt], "%%s-%c.h5", multi_letters[mt]);
- memb_name[mt] = sv[mt];
- memb_addr[mt] = MAX(mt-1,0)*(HADDR_MAX/10);
- }
+ /* Multi-file driver, general case of the split driver */
+ H5FD_mem_t memb_map[H5FD_MEM_NTYPES];
+ hid_t memb_fapl[H5FD_MEM_NTYPES];
+ const char *memb_name[H5FD_MEM_NTYPES];
+ char sv[H5FD_MEM_NTYPES][1024];
+ haddr_t memb_addr[H5FD_MEM_NTYPES];
+ H5FD_mem_t mt;
+
+ HDmemset(memb_map, 0, sizeof memb_map);
+ HDmemset(memb_fapl, 0, sizeof memb_fapl);
+ HDmemset(memb_name, 0, sizeof memb_name);
+ HDmemset(memb_addr, 0, sizeof memb_addr);
+
+ assert(HDstrlen(multi_letters)==H5FD_MEM_NTYPES);
+ for (mt=H5FD_MEM_DEFAULT; mt<H5FD_MEM_NTYPES; H5_INC_ENUM(H5FD_mem_t,mt)) {
+ memb_fapl[mt] = H5P_DEFAULT;
+ memb_map[mt] = mt;
+ sprintf(sv[mt], "%%s-%c.h5", multi_letters[mt]);
+ memb_name[mt] = sv[mt];
+ memb_addr[mt] = MAX(mt-1,0)*(HADDR_MAX/10);
+ }
- if (H5Pset_fapl_multi(fapl, memb_map, memb_fapl, memb_name,
- memb_addr, FALSE)<0) {
- return -1;
- }
+ if (H5Pset_fapl_multi(fapl, memb_map, memb_fapl, memb_name,
+ memb_addr, FALSE) < 0)
+ return -1;
} else if (!HDstrcmp(name, "family")) {
hsize_t fam_size = 100*1024*1024; /*100 MB*/
- /* Family of files, each 1MB and using the default driver */
- if ((val=HDstrtok(NULL, " \t\n\r")))
- fam_size = (hsize_t)(HDstrtod(val, NULL) * 1024*1024);
- if (H5Pset_fapl_family(fapl, fam_size, H5P_DEFAULT)<0)
- return -1;
+ /* Family of files, each 1MB and using the default driver */
+ if ((val=HDstrtok(NULL, " \t\n\r")))
+ fam_size = (hsize_t)(HDstrtod(val, NULL) * 1024*1024);
+ if (H5Pset_fapl_family(fapl, fam_size, H5P_DEFAULT)<0)
+ return -1;
} else if (!HDstrcmp(name, "log")) {
long log_flags = H5FD_LOG_LOC_IO;
@@ -6240,14 +6154,14 @@ h5_fileaccess(void)
log_flags = HDstrtol(val, NULL, 0);
if (H5Pset_fapl_log(fapl, NULL, (unsigned)log_flags, 0) < 0)
- return -1;
+ return -1;
} else if (!HDstrcmp(name, "direct")) {
/* Substitute Direct I/O driver with sec2 driver temporarily because
* some output has sec2 driver as the standard. */
- if (H5Pset_fapl_sec2(fapl)<0) return -1;
+ if (H5Pset_fapl_sec2(fapl)<0) return -1;
} else {
- /* Unknown driver */
- return -1;
+ /* Unknown driver */
+ return -1;
}
return fapl;
@@ -6297,5 +6211,3 @@ add_prefix(char **prfx, size_t *prfx_len, const char *name)
HDstrcat(HDstrcat(*prfx, "/"), name);
} /* end add_prefix */
-
-
diff --git a/tools/h5ls/h5ls.c b/tools/h5ls/h5ls.c
index c3c89a3..3d8104c 100644
--- a/tools/h5ls/h5ls.c
+++ b/tools/h5ls/h5ls.c
@@ -66,17 +66,17 @@ static struct dispatch_t {
herr_t (*close)(hid_t obj);
herr_t (*list1)(hid_t obj);
herr_t (*list2)(hid_t obj, const char *name);
-} dispatch_g[H5G_NLIBTYPES];
+} dispatch_g[H5O_TYPE_NTYPES];
-#define DISPATCH(TYPE,NAME,OPEN,CLOSE,LIST1,LIST2) { \
- dispatch_g[TYPE].name = (NAME); \
- dispatch_g[TYPE].open = (OPEN); \
+#define DISPATCH(TYPE, NAME, OPEN, CLOSE, LIST1, LIST2) { \
+ dispatch_g[TYPE].name = (NAME); \
+ dispatch_g[TYPE].open = (OPEN); \
dispatch_g[TYPE].close = (CLOSE); \
dispatch_g[TYPE].list1 = (LIST1); \
dispatch_g[TYPE].list2 = (LIST2); \
}
-static herr_t list (hid_t group, const char *name, const H5L_info_t *linfo, void *cd);
+static herr_t list(hid_t group, const char *name, const H5L_info_t *linfo, void *cd);
static void display_type(hid_t type, int ind);
static char *fix_name(const char *path, const char *base);
@@ -145,30 +145,24 @@ usage: %s [OPTIONS] [OBJECTS...]\n\
*-------------------------------------------------------------------------
*/
static void
-sym_insert(H5G_stat_t *sb, const char *name)
+sym_insert(const H5O_info_t *oi, const char *name)
{
- haddr_t objno; /* Compact form of object's location */
int n;
/* Don't add it if the link count is 1 because such an object can only
* have one name. */
- if (sb->nlink<2) return;
+ if(oi->rc < 2)
+ return;
/* Extend the table */
- if (idtab_g.nobjs>=idtab_g.nalloc) {
+ if(idtab_g.nobjs >= idtab_g.nalloc) {
idtab_g.nalloc = MAX(256, 2*idtab_g.nalloc);
- idtab_g.obj = realloc(idtab_g.obj,
- idtab_g.nalloc*sizeof(idtab_g.obj[0]));
- }
+ idtab_g.obj = realloc(idtab_g.obj, idtab_g.nalloc*sizeof(idtab_g.obj[0]));
+ } /* end if */
/* Insert the entry */
n = idtab_g.nobjs++;
-#if H5_SIZEOF_UINT64_T > H5_SIZEOF_LONG
- objno = (haddr_t)sb->objno[0] | ((haddr_t)sb->objno[1] << (8 * sizeof(long)));
-#else
- objno = (haddr_t)sb->objno[0];
-#endif
- idtab_g.obj[n].id = objno;
+ idtab_g.obj[n].id = oi->addr;
idtab_g.obj[n].name = HDstrdup(name);
}
@@ -190,17 +184,18 @@ sym_insert(H5G_stat_t *sb, const char *name)
*-------------------------------------------------------------------------
*/
static char *
-sym_lookup(H5G_stat_t *sb)
+sym_lookup(const H5O_info_t *oi)
{
- haddr_t objno; /* Compact form of object's location */
int n;
- if (sb->nlink<2) return NULL; /*only one name possible*/
- objno = (haddr_t)sb->objno[0] | ((haddr_t)sb->objno[1] << (8 * sizeof(long)));
- for (n=0; n<idtab_g.nobjs; n++) {
- if(idtab_g.obj[n].id == objno)
+ /*only one name possible*/
+ if(oi->rc < 2)
+ return NULL;
+
+ for(n = 0; n < idtab_g.nobjs; n++)
+ if(idtab_g.obj[n].id == oi->addr)
return idtab_g.obj[n].name;
- }
+
return NULL;
}
@@ -1173,21 +1168,18 @@ display_type(hid_t type, int ind)
}
/* Shared? If so then print the type's OID */
- if (H5Tcommitted(type)) {
- H5G_stat_t sb;
+ if(H5Tcommitted(type)) {
+ H5O_info_t oi;
- if (H5Gget_objinfo(type, ".", FALSE, &sb)>=0) {
- haddr_t objno; /* Compact form of object's location */
-
- objno = (haddr_t)sb.objno[0] | ((haddr_t)sb.objno[1] << (8 * sizeof(long)));
+ if(H5Oget_info(type, ".", &oi, H5P_DEFAULT) >= 0)
printf("shared-%lu:"H5_PRINTF_HADDR_FMT" ",
- sb.fileno[0], objno);
- } else
+ oi.fileno, oi.addr);
+ else
printf("shared ");
- }
+ } /* end if */
/* Print the type */
- if ((!simple_output_g && display_native_type(type, ind)) ||
+ if((!simple_output_g && display_native_type(type, ind)) ||
display_ieee_type(type, ind) ||
display_int_type(type, ind) ||
display_float_type(type, ind) ||
@@ -1709,108 +1701,6 @@ datatype_list2(hid_t type, const char UNUSED *name)
/*-------------------------------------------------------------------------
- * Function: slink_open
- *
- * Purpose: This gets called to open a symbolic link. Since symbolic
- * links don't correspond to actual objects we simply print the
- * link information and return failure.
- *
- * Return: Success: 0 - an invalid object but successful return
- * of this function.
- *
- * Failure: -1
- *
- * Programmer: Robb Matzke
- * Thursday, August 27, 1998
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
-static hid_t
-slink_open(hid_t location, const char *name, hid_t UNUSED apl_id)
-{
- H5G_stat_t statbuf;
-
- if(H5Gget_objinfo(location, name, FALSE, &statbuf) < 0)
- return -1;
-
- if(statbuf.type == H5G_LINK) { /* Soft link */
- char *buf = HDmalloc(statbuf.linklen);
-
- if(H5Lget_val(location, name, buf, statbuf.linklen, H5P_DEFAULT) < 0) {
- HDfree(buf);
- return -1;
- }
-
- HDfputs(buf, stdout);
- HDfree(buf);
- }
-
- return 0;
-}
-
-
-/*-------------------------------------------------------------------------
- * Function: udlink_open
- *
- * Purpose: This gets called to open a user-defined link. Since these
- * links don't correspond to actual objects we simply print a message
- * and return failure.
- *
- * Return: Success: 0 - an invalid object but successful return
- * of this function.
- *
- * Failure: -1
- *
- * Programmer: James Laird
- * Tuesday, June 6, 2006
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
-static hid_t
-udlink_open(hid_t location, const char *name, hid_t UNUSED apl_id)
-{
- H5L_info_t linfo;
- char * buf = NULL;
- const char * filename;
- const char * path;
-
- if(H5Lget_info(location, name, &linfo, H5P_DEFAULT) < 0)
- return -1;
-
- switch(linfo.type) {
- /* For external links, try to display info for the object it points to */
- case H5L_TYPE_EXTERNAL:
- if((buf = HDmalloc(linfo.u.val_size)) == NULL)
- goto error;
- if(H5Lget_val(location, name, buf, linfo.u.val_size, H5P_DEFAULT) < 0)
- goto error;
-
- if(H5Lunpack_elink_val(buf, linfo.u.val_size, NULL, &filename, &path) < 0)
- goto error;
- HDfputs("file: ", stdout);
- HDfputs(filename, stdout);
- HDfputs(" path: ", stdout);
- HDfputs(path, stdout);
- break;
-
- default:
- HDfputs("cannot follow UD links", stdout);
- }
-
- return 0;
-
-error:
- if(buf)
- HDfree(buf);
- return -1;
-}
-
-
-/*-------------------------------------------------------------------------
* Function: list
*
* Purpose: Prints the group member name.
@@ -1830,102 +1720,162 @@ error:
*-------------------------------------------------------------------------
*/
static herr_t
-list(hid_t group, const char *name, const H5L_info_t UNUSED *linfo, void *_iter)
+list(hid_t group, const char *name, const H5L_info_t *linfo, void *_iter)
{
- hid_t obj = -1;
- char buf[512], comment[50], *fullname = NULL, *s = NULL;
- H5G_stat_t sb;
- haddr_t objno; /* Compact form of object's location */
- struct tm *tm;
- herr_t status;
iter_t *iter = (iter_t*)_iter;
+ char *fullname = NULL;
int n;
/* Print the object name, either full name or base name */
fullname = fix_name(iter->container, name);
- if (fullname_g) {
+ if(fullname_g)
n = display_string(stdout, fullname, TRUE);
- printf("%*s ", MAX(0, 24-n), "");
- } else {
+ else
n = display_string(stdout, name, TRUE);
- printf("%*s ", MAX(0, 24-n), "");
- }
+ printf("%*s ", MAX(0, (24 - n)), "");
+
+ /* Actions on objects */
+ if(linfo->type == H5L_TYPE_HARD) {
+ H5O_info_t oi;
+ char *s;
+ hid_t obj;
+
+ /* Get object information */
+ if(H5Oget_info(group, name, &oi, H5P_DEFAULT) < 0) {
+ puts("**NOT FOUND**");
+ return 0;
+ } else if(oi.type < 0 || oi.type >= H5O_TYPE_NTYPES) {
+ printf("Unknown type(%d)", (int)oi.type);
+ oi.type = H5O_TYPE_UNKNOWN;
+ }
+ if(oi.type >= 0 && dispatch_g[oi.type].name)
+ fputs(dispatch_g[oi.type].name, stdout);
+
+ /* If the object has already been printed then just show the object ID
+ * and return. */
+ if((s = sym_lookup(&oi))) {
+ printf(", same as ");
+ display_string(stdout, s, TRUE);
+ printf("\n");
+ goto done;
+ } /* end if */
+ else
+ sym_insert(&oi, fullname);
+
+ /* Open the object. Not all objects can be opened. If this is the case
+ * then return right away.
+ */
+ if(oi.type >= 0 &&
+ (NULL == dispatch_g[oi.type].open ||
+ (obj = (dispatch_g[oi.type].open)(group, name, H5P_DEFAULT)) < 0)) {
+ printf(" *ERROR*\n");
+ goto done;
+ } /* end if */
- /* Get object information */
- H5E_BEGIN_TRY {
- status = H5Gget_objinfo(group, name, FALSE, &sb);
- } H5E_END_TRY;
- if(status < 0) {
- puts("**NOT FOUND**");
- return 0;
- } else if(sb.type < 0 || sb.type >= H5G_NTYPES) {
- printf("Unknown type(%d)", sb.type);
- sb.type = H5G_UNKNOWN;
- }
- if(sb.type >= 0 && dispatch_g[sb.type].name)
- fputs(dispatch_g[sb.type].name, stdout);
- objno = (haddr_t)sb.objno[0] | ((haddr_t)sb.objno[1] << (8 * sizeof(long)));
-
- /* If the object has already been printed then just show the object ID
- * and return. */
- if((s = sym_lookup(&sb))) {
- printf(", same as ");
- display_string(stdout, s, TRUE);
- printf("\n");
- goto done;
- } else {
- sym_insert(&sb, fullname);
- }
+ /* List the first line of information for the object. */
+ if(oi.type >= 0 && dispatch_g[oi.type].list1)
+ (dispatch_g[oi.type].list1)(obj);
+ putchar('\n');
- /* Open the object. Not all objects can be opened. If this is the case
- * then return right away. */
- if(sb.type >= 0 &&
- (NULL == dispatch_g[sb.type].open ||
- (obj = (dispatch_g[sb.type].open)(group, name, H5P_DEFAULT)) < 0)) {
- printf(" *ERROR*\n");
- goto done;
- } /* end if */
+ /* Show detailed information about the object, beginning with information
+ * which is common to all objects. */
+ if(verbose_g > 0) {
+ char comment[50];
+
+ /* Display attributes */
+ if(oi.type >= 0)
+ H5Aiterate(obj, NULL, list_attr, NULL);
+
+ /* Object location & reference count */
+ printf(" %-10s %lu:"H5_PRINTF_HADDR_FMT"\n", "Location:", oi.fileno, oi.addr);
+ printf(" %-10s %u\n", "Links:", (unsigned)oi.rc);
+
+ /* Modification time */
+ if(oi.mtime > 0) {
+ char buf[256];
+ struct tm *tm;
+
+ if(simple_output_g)
+ tm = HDgmtime(&(oi.mtime));
+ else
+ tm = HDlocaltime(&(oi.mtime));
+ if(tm) {
+ HDstrftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S %Z", tm);
+ printf(" %-10s %s\n", "Modified:", buf);
+ } /* end if */
+ } /* end if */
- /* List the first line of information for the object. */
- if(sb.type >= 0 && dispatch_g[sb.type].list1)
- (dispatch_g[sb.type].list1)(obj);
- putchar('\n');
-
- /* Show detailed information about the object, beginning with information
- * which is common to all objects. */
- if(verbose_g > 0 && H5G_LINK != sb.type && H5G_UDLINK != sb.type) {
- if(sb.type >= 0)
- H5Aiterate(obj, NULL, list_attr, NULL);
- printf(" %-10s %lu:"H5_PRINTF_HADDR_FMT"\n", "Location:", sb.fileno[0], objno);
- printf(" %-10s %u\n", "Links:", sb.nlink);
- if(sb.mtime > 0) {
- if(simple_output_g)
- tm = HDgmtime(&(sb.mtime));
- else
- tm = HDlocaltime(&(sb.mtime));
- if(tm) {
- HDstrftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S %Z", tm);
- printf(" %-10s %s\n", "Modified:", buf);
+ /* Object comment */
+ comment[0] = '\0';
+ H5Oget_comment(group, name, comment, sizeof(comment), H5P_DEFAULT);
+ HDstrcpy(comment + sizeof(comment) - 4, "...");
+ if(comment[0]) {
+ printf(" %-10s \"", "Comment:");
+ display_string(stdout, comment, FALSE);
+ puts("\"");
} /* end if */
} /* end if */
- comment[0] = '\0';
- H5Oget_comment(group, name, comment, sizeof(comment), H5P_DEFAULT);
- HDstrcpy(comment + sizeof(comment) - 4, "...");
- if(comment[0]) {
- printf(" %-10s \"", "Comment:");
- display_string(stdout, comment, FALSE);
- puts("\"");
- } /* end if */
+
+ /* Detailed list for object */
+ if(oi.type >= 0 && dispatch_g[oi.type].list2)
+ (dispatch_g[oi.type].list2)(obj, fullname);
+
+ /* Close the object. */
+ if(oi.type >= 0 && dispatch_g[oi.type].close)
+ (dispatch_g[oi.type].close)(obj);
} /* end if */
- if(sb.type >= 0 && dispatch_g[sb.type].list2)
- (dispatch_g[sb.type].list2)(obj, fullname);
+ /* Actions on links */
+ else {
+ char *buf;
+
+ HDfputs("-> ", stdout);
+ switch(linfo->type) {
+ case H5L_TYPE_SOFT:
+ if((buf = HDmalloc(linfo->u.val_size)) == NULL)
+ goto done;
+
+ if(H5Lget_val(group, name, buf, linfo->u.val_size, H5P_DEFAULT) < 0) {
+ HDfree(buf);
+ goto done;
+ } /* end if */
+
+ HDfputs(buf, stdout);
+ HDfree(buf);
+ break;
-done:
- /* Close the object. */
- if(sb.type >= 0 && obj >= 0 && dispatch_g[sb.type].close)
- (dispatch_g[sb.type].close)(obj);
+ case H5L_TYPE_EXTERNAL:
+ {
+ const char *filename;
+ const char *path;
+
+ if((buf = HDmalloc(linfo->u.val_size)) == NULL)
+ goto done;
+
+ if(H5Lget_val(group, name, buf, linfo->u.val_size, H5P_DEFAULT) < 0) {
+ HDfree(buf);
+ goto done;
+ } /* end if */
+ if(H5Lunpack_elink_val(buf, linfo->u.val_size, NULL, &filename, &path) < 0) {
+ HDfree(buf);
+ goto done;
+ } /* end if */
+
+ HDfputs("file: ", stdout);
+ HDfputs(filename, stdout);
+ HDfputs(" path: ", stdout);
+ HDfputs(path, stdout);
+ }
+ break;
+
+ default:
+ HDfputs("cannot follow UD links", stdout);
+ break;
+ } /* end switch */
+ HDfputc('\n', stdout);
+ } /* end else */
- if (fullname)
+done:
+ if(fullname)
free(fullname);
return 0;
} /* end list() */
@@ -2104,178 +2054,182 @@ leave(int ret)
*-------------------------------------------------------------------------
*/
int
-main (int argc, const char *argv[])
+main(int argc, const char *argv[])
{
- hid_t file=-1, root=-1;
- char *fname=NULL, *oname=NULL, *x;
+ hid_t file = -1, root = -1;
+ char *fname = NULL, *oname = NULL, *x;
const char *s = NULL;
- char *rest, *container=NULL;
+ char *rest, *container = NULL;
int argno;
- H5G_stat_t sb;
- iter_t iter;
static char root_name[] = "/";
char drivername[50];
- const char *preferred_driver=NULL;
+ const char *preferred_driver = NULL;
/* Initialize h5tools lib */
h5tools_init();
- /* Build display table */
+ /* Build object display table */
DISPATCH(H5G_DATASET, "Dataset", H5Dopen2, H5Dclose, dataset_list1, dataset_list2);
DISPATCH(H5G_GROUP, "Group", H5Gopen2, H5Gclose, NULL, group_list2);
DISPATCH(H5G_TYPE, "Type", H5Topen2, H5Tclose, NULL, datatype_list2);
- DISPATCH(H5G_LINK, "-> ", slink_open, NULL, NULL, NULL);
- DISPATCH(H5G_UDLINK, "-> ", udlink_open, NULL, NULL, NULL);
-
-#if 0
- /* Name of this program without the path */
- if ((progname=strrchr(argv[0], '/'))) progname++;
- else progname = argv[0];
-#endif
/* Default output width */
width_g = get_width();
/* Switches come before non-switch arguments */
- for (argno=1; argno<argc && '-'==argv[argno][0]; argno++) {
- if (!strcmp(argv[argno], "--")) {
+ for(argno = 1; argno < argc && '-' == argv[argno][0]; argno++) {
+ if(!HDstrcmp(argv[argno], "--")) {
/* Last switch */
argno++;
break;
- } else if (!strcmp(argv[argno], "--help")) {
+ } else if(!HDstrcmp(argv[argno], "--help")) {
usage();
leave(0);
- } else if (!strcmp(argv[argno], "--address")) {
+ } else if(!HDstrcmp(argv[argno], "--address")) {
address_g = TRUE;
- } else if (!strcmp(argv[argno], "--data")) {
+ } else if(!HDstrcmp(argv[argno], "--data")) {
data_g = TRUE;
- } else if (!strcmp(argv[argno], "--errors")) {
+ } else if(!HDstrcmp(argv[argno], "--errors")) {
show_errors_g = TRUE;
- } else if (!strcmp(argv[argno], "--full")) {
+ } else if(!HDstrcmp(argv[argno], "--full")) {
fullname_g = TRUE;
- } else if (!strcmp(argv[argno], "--group")) {
+ } else if(!HDstrcmp(argv[argno], "--group")) {
grp_literal_g = TRUE;
- } else if (!strcmp(argv[argno], "--label")) {
+ } else if(!HDstrcmp(argv[argno], "--label")) {
label_g = TRUE;
- } else if (!strcmp(argv[argno], "--recursive")) {
+ } else if(!HDstrcmp(argv[argno], "--recursive")) {
recursive_g = TRUE;
fullname_g = TRUE;
- } else if (!strcmp(argv[argno], "--simple")) {
+ } else if(!HDstrcmp(argv[argno], "--simple")) {
simple_output_g = TRUE;
- } else if (!strcmp(argv[argno], "--string")) {
+ } else if(!HDstrcmp(argv[argno], "--string")) {
string_g = TRUE;
- } else if (!strncmp(argv[argno], "--vfd=", 6)) {
+ } else if(!HDstrncmp(argv[argno], "--vfd=", 6)) {
preferred_driver = argv[argno]+6;
- } else if (!strncmp(argv[argno], "--width=", 8)) {
- width_g = (int)strtol(argv[argno]+8, &rest, 0);
+ } else if(!HDstrncmp(argv[argno], "--width=", 8)) {
+ width_g = (int)HDstrtol(argv[argno]+8, &rest, 0);
- if (0 == width_g)
+ if(0 == width_g)
no_line_wrap_g = TRUE;
- else if (width_g<0 || *rest) {
+ else if(width_g < 0 || *rest) {
usage();
leave(1);
}
- } else if (!strcmp(argv[argno], "--width")) {
- if (argno+1>=argc) {
+ } else if(!HDstrcmp(argv[argno], "--width")) {
+ if((argno + 1) >= argc) {
usage();
leave(1);
} else {
s = argv[++argno];
}
- width_g = (int)strtol(s, &rest, 0);
- if (width_g<=0 || *rest) {
+ width_g = (int)HDstrtol(s, &rest, 0);
+ if(width_g <= 0 || *rest) {
usage();
leave(1);
}
- } else if (!strcmp(argv[argno], "--verbose")) {
+ } else if(!HDstrcmp(argv[argno], "--verbose")) {
verbose_g++;
- } else if (!strcmp(argv[argno], "--version")) {
+ } else if(!HDstrcmp(argv[argno], "--version")) {
print_version(progname);
leave(0);
- } else if (!strcmp(argv[argno], "--hexdump")) {
+ } else if(!HDstrcmp(argv[argno], "--hexdump")) {
hexdump_g = TRUE;
- } else if (!strncmp(argv[argno], "-w", 2)) {
- if (argv[argno][2]) {
- s = argv[argno]+2;
- } else if (argno+1>=argc) {
+ } else if(!HDstrncmp(argv[argno], "-w", 2)) {
+ if(argv[argno][2]) {
+ s = argv[argno] + 2;
+ } else if((argno + 1) >= argc) {
usage();
leave(1);
} else {
s = argv[++argno];
}
- width_g = (int)strtol(s, &rest, 0);
+ width_g = (int)HDstrtol(s, &rest, 0);
- if (0 == width_g)
+ if(0 == width_g)
no_line_wrap_g = TRUE;
- else if (width_g<0 || *rest) {
+ else if(width_g < 0 || *rest) {
usage();
leave(1);
}
- } else if ('-'!=argv[argno][1]) {
+ } else if('-'!=argv[argno][1]) {
/* Single-letter switches */
- for (s=argv[argno]+1; *s; s++) {
- switch (*s) {
+ for(s = argv[argno] + 1; *s; s++) {
+ switch(*s) {
case '?':
case 'h': /* --help */
usage();
leave(0);
+
case 'a': /* --address */
address_g = TRUE;
break;
+
case 'd': /* --data */
data_g = TRUE;
break;
+
case 'e': /* --errors */
show_errors_g = TRUE;
break;
+
case 'f': /* --full */
fullname_g = TRUE;
break;
+
case 'g': /* --group */
grp_literal_g = TRUE;
break;
+
case 'l': /* --label */
label_g = TRUE;
break;
+
case 'r': /* --recursive */
recursive_g = TRUE;
fullname_g = TRUE;
break;
+
case 'S': /* --simple */
simple_output_g = TRUE;
break;
+
case 's': /* --string */
string_g = TRUE;
break;
+
case 'v': /* --verbose */
verbose_g++;
break;
+
case 'V': /* --version */
print_version(progname);
leave(0);
+
case 'x': /* --hexdump */
hexdump_g = TRUE;
break;
+
default:
usage();
leave(1);
- }
- }
+ } /* end switch */
+ } /* end for */
} else {
usage();
leave(1);
}
- }
+ } /* end for */
/* If no arguments remain then print a usage message (instead of doing
* absolutely nothing ;-) */
- if (argno>=argc) {
+ if(argno >= argc) {
usage();
leave(1);
- }
+ } /* end if */
/* Turn off HDF5's automatic error printing unless you're debugging h5ls */
- if (!show_errors_g) H5Eset_auto2(H5E_DEFAULT, NULL, NULL);
+ if(!show_errors_g)
+ H5Eset_auto2(H5E_DEFAULT, NULL, NULL);
/* Each remaining argument is an hdf5 file followed by an optional slash
@@ -2291,42 +2245,67 @@ main (int argc, const char *argv[])
* then there must have been something wrong with the file (perhaps it
* doesn't exist). */
show_file_name_g = (argc-argno > 1); /*show file names if more than one*/
- while (argno<argc) {
+ while(argno < argc) {
+ H5O_info_t oi;
+ H5L_info_t li;
+ iter_t iter;
+
fname = HDstrdup(argv[argno++]);
oname = NULL;
file = -1;
- while (fname && *fname) {
+ while(fname && *fname) {
file = h5tools_fopen(fname, H5F_ACC_RDONLY, H5P_DEFAULT, preferred_driver, drivername, sizeof drivername);
- if (file>=0) {
- if (verbose_g) {
- printf("Opened \"%s\" with %s driver.\n",
- fname, drivername);
- }
+ if(file >= 0) {
+ if(verbose_g)
+ printf("Opened \"%s\" with %s driver.\n", fname, drivername);
break; /*success*/
- }
+ } /* end if */
/* Shorten the file name; lengthen the object name */
x = oname;
oname = strrchr(fname, '/');
- if (x) *x = '/';
- if (!oname) break;
+ if(x)
+ *x = '/';
+ if(!oname)
+ break;
*oname = '\0';
- }
- if (file<0) {
+ } /* end while */
+ if(file < 0) {
fprintf(stderr, "%s: unable to open file\n", argv[argno-1]);
continue;
- }
+ } /* end if */
if(oname)
oname++;
if(!oname || !*oname)
oname = root_name;
+ /* Check for root group as object name */
+ if(HDstrcmp(oname, root_name)) {
+ /* Check the type of link given */
+ if(H5Lget_info(file, oname, &li, H5P_DEFAULT) < 0) {
+ char *fullname = NULL;
+ int n;
+
+ fullname = fix_name(oname, "/");
+ if(fullname_g)
+ n = display_string(stdout, fullname, TRUE);
+ else
+ n = display_string(stdout, oname, TRUE);
+ printf("%*s \n", MAX(0, (24 - n)), "**NOT FOUND**");
+
+ HDfree(fullname);
+ leave(1);
+ } /* end if */
+ } /* end if */
+ else
+ li.type = H5L_TYPE_HARD;
+
/* Open the object and display it's information */
- if(H5Gget_objinfo(file, oname, TRUE, &sb) >= 0 && H5G_GROUP == sb.type && !grp_literal_g) {
+ if(li.type == H5L_TYPE_HARD && H5Oget_info(file, oname, &oi, H5P_DEFAULT) >= 0 && H5O_TYPE_GROUP == oi.type && !grp_literal_g) {
/* Specified name is a group. List the complete contents of the group. */
- sym_insert(&sb, oname);
+ sym_insert(&oi, oname);
iter.container = container = fix_name((show_file_name_g ? fname : ""), oname);
/* list root attributes */
@@ -2341,21 +2320,21 @@ main (int argc, const char *argv[])
/* list */
H5Literate(file, oname, H5_INDEX_NAME, H5_ITER_INC, NULL, list, &iter, H5P_DEFAULT);
free(container);
-
} else if((root = H5Gopen2(file, "/", H5P_DEFAULT)) < 0) {
leave(1); /*major problem!*/
-
} else {
/* Specified name is a non-group object -- list that object. The
- * container for the object is everything up to the base name. */
+ * container for the object is everything up to the base name.
+ */
iter.container = show_file_name_g ? fname : "/";
- list(root, oname, NULL, &iter);
+ list(root, oname, &li, &iter);
if(H5Gclose(root) < 0)
leave(1);
}
H5Fclose(file);
free(fname);
- }
+ } /* end while */
+
leave(0);
}
diff --git a/tools/h5repack/h5repack_copy.c b/tools/h5repack/h5repack_copy.c
index c710bce..42dca2a 100644
--- a/tools/h5repack/h5repack_copy.c
+++ b/tools/h5repack/h5repack_copy.c
@@ -626,12 +626,12 @@ int do_copy_objects(hid_t fidin,
*/
if ( has_filter && apply_s == 0 )
printf(" <warning: filter not applied to %s. dataset smaller than %d bytes>\n",
- travt->objs[i].name,
- (int)options->threshold);
+ travt->objs[i].name,
+ (int)options->threshold);
if ( has_filter && apply_f == 0 )
printf(" <warning: could not apply the filter to %s>\n",
- travt->objs[i].name);
+ travt->objs[i].name);
} /* verbose */
diff --git a/tools/h5repack/h5repack_refs.c b/tools/h5repack/h5repack_refs.c
index 8a549cd..a29ae48 100644
--- a/tools/h5repack/h5repack_refs.c
+++ b/tools/h5repack/h5repack_refs.c
@@ -30,8 +30,8 @@
*/
static const char* MapIdToName(hid_t refobj_id,trav_table_t *travt);
-static void close_obj(H5G_obj_t1 obj_type, hid_t obj_id);
-static int copy_refs_attr(hid_t loc_in,hid_t loc_out,pack_opt_t *options,trav_table_t *travt,hid_t fidout);
+static int copy_refs_attr(hid_t loc_in, hid_t loc_out, pack_opt_t *options,
+ trav_table_t *travt, hid_t fidout);
/*-------------------------------------------------------------------------
* Function: do_copy_refobjs
@@ -53,15 +53,15 @@ int do_copy_refobjs(hid_t fidin,
trav_table_t *travt,
pack_opt_t *options) /* repack options */
{
- hid_t grp_in=(-1); /* read group ID */
- hid_t grp_out=(-1); /* write group ID */
- hid_t dset_in=(-1); /* read dataset ID */
- hid_t dset_out=(-1); /* write dataset ID */
- hid_t type_in=(-1); /* named type ID */
- hid_t dcpl_id=(-1); /* dataset creation property list ID */
- hid_t space_id=(-1); /* space ID */
- hid_t ftype_id=(-1); /* file data type ID */
- hid_t mtype_id=(-1); /* memory data type ID */
+ hid_t grp_in = (-1); /* read group ID */
+ hid_t grp_out = (-1); /* write group ID */
+ hid_t dset_in = (-1); /* read dataset ID */
+ hid_t dset_out = (-1); /* write dataset ID */
+ hid_t type_in = (-1); /* named type ID */
+ hid_t dcpl_id = (-1); /* dataset creation property list ID */
+ hid_t space_id = (-1); /* space ID */
+ hid_t ftype_id = (-1); /* file data type ID */
+ hid_t mtype_id = (-1); /* memory data type ID */
size_t msize; /* memory size of memory type */
hsize_t nelmts; /* number of elements in dataset */
int rank; /* rank of dataset */
@@ -73,83 +73,75 @@ int do_copy_refobjs(hid_t fidin,
* browse
*-------------------------------------------------------------------------
*/
-
- for ( i = 0; i < travt->nobjs; i++)
- {
- switch ( travt->objs[i].type )
- {
+ for(i = 0; i < travt->nobjs; i++) {
+ switch(travt->objs[i].type) {
/*-------------------------------------------------------------------------
- * H5G_GROUP
+ * H5TRAV_TYPE_GROUP
*-------------------------------------------------------------------------
*/
- case H5G_GROUP:
-
+ case H5TRAV_TYPE_GROUP:
/*-------------------------------------------------------------------------
* copy referenced objects in attributes
*-------------------------------------------------------------------------
*/
-
- if ((grp_out = H5Gopen2(fidout, travt->objs[i].name, H5P_DEFAULT)) < 0)
+ if((grp_out = H5Gopen2(fidout, travt->objs[i].name, H5P_DEFAULT)) < 0)
goto error;
- if ((grp_in = H5Gopen2(fidin, travt->objs[i].name, H5P_DEFAULT)) < 0)
+ if((grp_in = H5Gopen2(fidin, travt->objs[i].name, H5P_DEFAULT)) < 0)
goto error;
- if (copy_refs_attr(grp_in,grp_out,options,travt,fidout) < 0)
+ if(copy_refs_attr(grp_in, grp_out, options, travt, fidout) < 0)
goto error;
- if (H5Gclose(grp_out) < 0)
+ if(H5Gclose(grp_out) < 0)
goto error;
- if (H5Gclose(grp_in) < 0)
+ if(H5Gclose(grp_in) < 0)
goto error;
-
/*-------------------------------------------------------------------------
* check for hard links
*-------------------------------------------------------------------------
*/
-
if(travt->objs[i].nlinks)
for(j = 0; j < travt->objs[i].nlinks; j++)
H5Lcreate_hard(fidout, travt->objs[i].name, H5L_SAME_LOC, travt->objs[i].links[j].new_name, H5P_DEFAULT, H5P_DEFAULT);
break;
/*-------------------------------------------------------------------------
- * H5G_DATASET
+ * H5TRAV_TYPE_DATASET
*-------------------------------------------------------------------------
*/
- case H5G_DATASET:
-
- if ((dset_in=H5Dopen(fidin,travt->objs[i].name))<0)
+ case H5TRAV_TYPE_DATASET:
+ if((dset_in = H5Dopen(fidin,travt->objs[i].name)) < 0)
goto error;
- if ((space_id=H5Dget_space(dset_in))<0)
+ if((space_id = H5Dget_space(dset_in)) < 0)
goto error;
- if ((ftype_id=H5Dget_type (dset_in))<0)
+ if((ftype_id = H5Dget_type (dset_in)) < 0)
goto error;
- if ((dcpl_id=H5Dget_create_plist(dset_in))<0)
+ if((dcpl_id = H5Dget_create_plist(dset_in)) < 0)
goto error;
- if ( (rank=H5Sget_simple_extent_ndims(space_id))<0)
+ if((rank = H5Sget_simple_extent_ndims(space_id)) < 0)
goto error;
- if ( H5Sget_simple_extent_dims(space_id,dims,NULL)<0)
+ if(H5Sget_simple_extent_dims(space_id,dims,NULL) < 0)
goto error;
- nelmts=1;
- for (k=0; k<rank; k++)
- nelmts*=dims[k];
+ nelmts = 1;
+ for(k = 0; k < rank; k++)
+ nelmts *= dims[k];
- if ((mtype_id=h5tools_get_native_type(ftype_id))<0)
+ if((mtype_id = h5tools_get_native_type(ftype_id)) < 0)
goto error;
- if ((msize=H5Tget_size(mtype_id))==0)
+ if((msize = H5Tget_size(mtype_id)) == 0)
goto error;
+
/*-------------------------------------------------------------------------
- * check if the dataset creation property list has filters that
- * are not registered in the current configuration
- * 1) the external filters GZIP and SZIP might not be available
- * 2) the internal filters might be turned off
- *-------------------------------------------------------------------------
- */
- if (h5tools_canreadf((NULL),dcpl_id)==1)
- {
+ * check if the dataset creation property list has filters that
+ * are not registered in the current configuration
+ * 1) the external filters GZIP and SZIP might not be available
+ * 2) the internal filters might be turned off
+ *-------------------------------------------------------------------------
+ */
+ if(h5tools_canreadf(NULL, dcpl_id) == 1) {
/*-------------------------------------------------------------------------
* test for a valid output dataset
*-------------------------------------------------------------------------
@@ -161,12 +153,10 @@ int do_copy_refobjs(hid_t fidin,
* we cannot just copy the buffers, but instead we recreate the reference
*-------------------------------------------------------------------------
*/
- if (H5Tequal(mtype_id, H5T_STD_REF_OBJ))
- {
- H5G_obj_t1 obj_type;
+ if(H5Tequal(mtype_id, H5T_STD_REF_OBJ)) {
hid_t refobj_id;
- hobj_ref_t *refbuf=NULL; /* buffer for object references */
- hobj_ref_t *buf=NULL;
+ hobj_ref_t *refbuf = NULL; /* buffer for object references */
+ hobj_ref_t *buf = NULL;
const char* refname;
unsigned u;
@@ -174,74 +164,66 @@ int do_copy_refobjs(hid_t fidin,
* read to memory
*-------------------------------------------------------------------------
*/
-
- if (nelmts)
- {
- buf=(void *) HDmalloc((unsigned)(nelmts*msize));
- if ( buf==NULL){
- printf( "cannot read into memory\n" );
+ if(nelmts) {
+ buf = (void *)HDmalloc((unsigned)(nelmts * msize));
+ if(buf==NULL) {
+ printf("cannot read into memory\n" );
goto error;
- }
- if (H5Dread(dset_in,mtype_id,H5S_ALL,H5S_ALL,H5P_DEFAULT,buf)<0)
+ } /* end if */
+ if(H5Dread(dset_in, mtype_id, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf) < 0)
goto error;
- if ((obj_type = H5Rget_obj_type(dset_in,H5R_OBJECT,buf))<0)
+ refbuf = HDcalloc((unsigned)nelmts, msize);
+ if(refbuf == NULL){
+ printf("cannot allocate memory\n" );
goto error;
- refbuf=HDcalloc((unsigned)nelmts,msize);
- if ( refbuf==NULL){
- printf( "cannot allocate memory\n" );
- goto error;
- }
- for ( u=0; u<nelmts; u++)
- {
+ } /* end if */
+ for(u = 0; u < nelmts; u++) {
H5E_BEGIN_TRY {
- if ((refobj_id = H5Rdereference(dset_in,H5R_OBJECT,&buf[u]))<0)
+ if((refobj_id = H5Rdereference(dset_in, H5R_OBJECT, &buf[u])) < 0)
continue;
} H5E_END_TRY;
- /* get the name. a valid name could only occur in the
- second traversal of the file */
- if ((refname=MapIdToName(refobj_id,travt))!=NULL)
- {
+
+ /* get the name. a valid name could only occur
+ * in the second traversal of the file
+ */
+ if((refname = MapIdToName(refobj_id, travt)) != NULL) {
/* create the reference, -1 parameter for objects */
- if (H5Rcreate(&refbuf[u],fidout,refname,H5R_OBJECT,-1)<0)
+ if(H5Rcreate(&refbuf[u], fidout, refname, H5R_OBJECT, -1) < 0)
goto error;
- if (options->verbose)
+ if(options->verbose)
printf("object <%s> object reference created to <%s>\n",
travt->objs[i].name,
refname);
- }/*refname*/
- close_obj(obj_type,refobj_id);
- }/* u */
- }/*nelmts*/
+ } /*refname*/
+ H5Oclose(refobj_id);
+ } /* u */
+ } /*nelmts*/
/*-------------------------------------------------------------------------
* create/write dataset/close
*-------------------------------------------------------------------------
*/
- if ((dset_out=H5Dcreate(fidout,travt->objs[i].name,mtype_id,space_id,dcpl_id))<0)
+ if((dset_out = H5Dcreate(fidout, travt->objs[i].name, mtype_id, space_id, dcpl_id)) < 0)
goto error;
- if (nelmts) {
- if (H5Dwrite(dset_out,mtype_id,H5S_ALL,H5S_ALL,H5P_DEFAULT,refbuf)<0)
+ if(nelmts)
+ if(H5Dwrite(dset_out, mtype_id, H5S_ALL, H5S_ALL, H5P_DEFAULT, refbuf) < 0)
goto error;
- }
- if (buf)
- free(buf);
- if (refbuf)
- free(refbuf);
-
- }/*H5T_STD_REF_OBJ*/
+ if(buf)
+ HDfree(buf);
+ if(refbuf)
+ HDfree(refbuf);
+ } /*H5T_STD_REF_OBJ*/
/*-------------------------------------------------------------------------
* dataset region references
*-------------------------------------------------------------------------
*/
- else if (H5Tequal(mtype_id, H5T_STD_REF_DSETREG))
- {
- H5G_obj_t1 obj_type;
+ else if(H5Tequal(mtype_id, H5T_STD_REF_DSETREG)) {
hid_t refobj_id;
- hdset_reg_ref_t *refbuf=NULL; /* input buffer for region references */
- hdset_reg_ref_t *buf=NULL; /* output buffer */
+ hdset_reg_ref_t *refbuf = NULL; /* input buffer for region references */
+ hdset_reg_ref_t *buf = NULL; /* output buffer */
const char* refname;
unsigned u;
@@ -249,91 +231,85 @@ int do_copy_refobjs(hid_t fidin,
* read input to memory
*-------------------------------------------------------------------------
*/
- if (nelmts)
- {
- buf=(void *) HDmalloc((unsigned)(nelmts*msize));
- if ( buf==NULL){
- printf( "cannot read into memory\n" );
- goto error;
- }
- if (H5Dread(dset_in,mtype_id,H5S_ALL,H5S_ALL,H5P_DEFAULT,buf)<0)
+ if(nelmts) {
+ buf = (void *)HDmalloc((unsigned)(nelmts * msize));
+ if(buf == NULL) {
+ printf("cannot read into memory\n");
goto error;
- if ((obj_type = H5Rget_obj_type(dset_in,H5R_DATASET_REGION,buf))<0)
+ } /* end if */
+ if(H5Dread(dset_in, mtype_id, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf) < 0)
goto error;
/*-------------------------------------------------------------------------
* create output
*-------------------------------------------------------------------------
*/
-
- refbuf=HDcalloc(sizeof(hdset_reg_ref_t),(size_t)nelmts); /*init to zero */
- if ( refbuf==NULL){
- printf( "cannot allocate memory\n" );
+ refbuf = HDcalloc(sizeof(hdset_reg_ref_t), (size_t)nelmts); /*init to zero */
+ if(refbuf == NULL) {
+ printf("cannot allocate memory\n");
goto error;
- }
- for ( u=0; u<nelmts; u++)
- {
+ } /* end if */
+
+ for(u = 0; u < nelmts; u++) {
H5E_BEGIN_TRY {
- if ((refobj_id = H5Rdereference(dset_in,H5R_DATASET_REGION,&buf[u]))<0)
+ if((refobj_id = H5Rdereference(dset_in, H5R_DATASET_REGION, &buf[u])) < 0)
continue;
} H5E_END_TRY;
- /* get the name. a valid name could only occur in the
- second traversal of the file */
- if ((refname=MapIdToName(refobj_id,travt))!=NULL)
- {
+ /* get the name. a valid name could only occur
+ * in the second traversal of the file
+ */
+ if((refname = MapIdToName(refobj_id, travt)) != NULL) {
hid_t region_id; /* region id of the referenced dataset */
- if ((region_id = H5Rget_region(dset_in,H5R_DATASET_REGION,&buf[u]))<0)
+
+ if((region_id = H5Rget_region(dset_in, H5R_DATASET_REGION, &buf[u])) < 0)
goto error;
+
/* create the reference, we need the space_id */
- if (H5Rcreate(&refbuf[u],fidout,refname,H5R_DATASET_REGION,region_id)<0)
+ if(H5Rcreate(&refbuf[u], fidout, refname, H5R_DATASET_REGION, region_id) < 0)
goto error;
- if (H5Sclose(region_id)<0)
+ if(H5Sclose(region_id) < 0)
goto error;
- if (options->verbose)
+ if(options->verbose)
printf("object <%s> region reference created to <%s>\n",
travt->objs[i].name,
refname);
- }/*refname*/
- close_obj(obj_type,refobj_id);
- }/* u */
- }/*nelmts*/
+ } /*refname*/
+ H5Oclose(refobj_id);
+ } /* u */
+ } /*nelmts*/
/*-------------------------------------------------------------------------
* create/write dataset/close
*-------------------------------------------------------------------------
*/
- if ((dset_out=H5Dcreate(fidout,travt->objs[i].name,mtype_id,space_id,dcpl_id))<0)
+ if((dset_out = H5Dcreate(fidout, travt->objs[i].name, mtype_id, space_id, dcpl_id)) < 0)
goto error;
- if (nelmts) {
- if (H5Dwrite(dset_out,mtype_id,H5S_ALL,H5S_ALL,H5P_DEFAULT,refbuf)<0)
+ if(nelmts)
+ if(H5Dwrite(dset_out, mtype_id, H5S_ALL, H5S_ALL, H5P_DEFAULT, refbuf) < 0)
goto error;
- }
- if (buf)
- free(buf);
- if (refbuf)
- free(refbuf);
+ if(buf)
+ HDfree(buf);
+ if(refbuf)
+ HDfree(refbuf);
} /* H5T_STD_REF_DSETREG */
-
-
/*-------------------------------------------------------------------------
* not references, open previously created object in 1st traversal
*-------------------------------------------------------------------------
*/
- else
- {
- if ((dset_out=H5Dopen(fidout,travt->objs[i].name))<0)
+ else {
+ if((dset_out = H5Dopen(fidout,travt->objs[i].name)) < 0)
goto error;
- }
+ } /* end else */
- assert(dset_out!=FAIL);
+ assert(dset_out != FAIL);
/*-------------------------------------------------------------------------
* copy referenced objects in attributes
*-------------------------------------------------------------------------
*/
- if (copy_refs_attr(dset_in,dset_out,options,travt,fidout)<0)
+ if(copy_refs_attr(dset_in, dset_out, options, travt, fidout) < 0)
goto error;
/*-------------------------------------------------------------------------
@@ -344,58 +320,49 @@ int do_copy_refobjs(hid_t fidin,
for(j = 0; j < travt->objs[i].nlinks; j++)
H5Lcreate_hard(fidout, travt->objs[i].name, H5L_SAME_LOC, travt->objs[i].links[j].new_name, H5P_DEFAULT, H5P_DEFAULT);
- if(H5Dclose(dset_out)<0)
+ if(H5Dclose(dset_out) < 0)
goto error;
-
- }/*can_read*/
+ } /*can_read*/
/*-------------------------------------------------------------------------
* close
*-------------------------------------------------------------------------
*/
-
- if (H5Tclose(ftype_id)<0)
+ if(H5Tclose(ftype_id) < 0)
goto error;
- if (H5Tclose(mtype_id)<0)
+ if(H5Tclose(mtype_id) < 0)
goto error;
- if (H5Pclose(dcpl_id)<0)
+ if(H5Pclose(dcpl_id) < 0)
goto error;
- if (H5Sclose(space_id)<0)
+ if(H5Sclose(space_id) < 0)
goto error;
- if (H5Dclose(dset_in)<0)
+ if(H5Dclose(dset_in) < 0)
goto error;
-
break;
/*-------------------------------------------------------------------------
- * H5G_TYPE
+ * H5TRAV_TYPE_NAMED_DATATYPE
*-------------------------------------------------------------------------
*/
- case H5G_TYPE:
-
- if ((type_in = H5Topen (fidin,travt->objs[i].name))<0)
+ case H5TRAV_TYPE_NAMED_DATATYPE:
+ if((type_in = H5Topen(fidin, travt->objs[i].name)) < 0)
goto error;
-
- if (H5Tclose(type_in)<0)
+ if(H5Tclose(type_in) < 0)
goto error;
-
break;
/*-------------------------------------------------------------------------
* H5G_LINK
*-------------------------------------------------------------------------
*/
-
case H5G_LINK:
-
/*nothing to do */
break;
default:
-
break;
- }
- }
+ } /* end switch */
+ } /* end for */
return 0;
@@ -411,6 +378,7 @@ error:
H5Tclose(mtype_id);
H5Tclose(type_in);
} H5E_END_TRY;
+
return -1;
}
@@ -440,285 +408,246 @@ static int copy_refs_attr(hid_t loc_in,
hid_t fidout /* for saving references */
)
{
- hid_t attr_id=-1; /* attr ID */
- hid_t attr_out=-1; /* attr ID */
- hid_t space_id=-1; /* space ID */
- hid_t ftype_id=-1; /* file data type ID */
- hid_t mtype_id=-1; /* memory data type ID */
- size_t msize; /* memory size of type */
- hsize_t nelmts; /* number of elements in dataset */
- int rank; /* rank of dataset */
- hsize_t dims[H5S_MAX_RANK];/* dimensions of dataset */
- char name[255];
- int n, j;
- unsigned u;
-
- if ((n = H5Aget_num_attrs(loc_in))<0)
- goto error;
-
- for ( u = 0; u < (unsigned)n; u++)
- {
-
-/*-------------------------------------------------------------------------
- * open
- *-------------------------------------------------------------------------
- */
- /* open attribute */
- if ((attr_id = H5Aopen_idx(loc_in, u))<0)
- goto error;
-
- /* get name */
- if (H5Aget_name( attr_id, 255, name )<0)
- goto error;
-
- /* get the file datatype */
- if ((ftype_id = H5Aget_type( attr_id )) < 0 )
- goto error;
-
- /* get the dataspace handle */
- if ((space_id = H5Aget_space( attr_id )) < 0 )
- goto error;
-
- /* get dimensions */
- if ( (rank = H5Sget_simple_extent_dims(space_id, dims, NULL)) < 0 )
- goto error;
-
-
- /*-------------------------------------------------------------------------
- * elements
- *-------------------------------------------------------------------------
- */
- nelmts=1;
- for (j=0; j<rank; j++)
- nelmts*=dims[j];
+ hid_t attr_id = -1; /* attr ID */
+ hid_t attr_out = -1; /* attr ID */
+ hid_t space_id = -1; /* space ID */
+ hid_t ftype_id = -1; /* file data type ID */
+ hid_t mtype_id = -1; /* memory data type ID */
+ size_t msize; /* memory size of type */
+ hsize_t nelmts; /* number of elements in dataset */
+ int rank; /* rank of dataset */
+ hsize_t dims[H5S_MAX_RANK];/* dimensions of dataset */
+ char name[255];
+ int n, j;
+ unsigned u;
+
+ if((n = H5Aget_num_attrs(loc_in)) < 0)
+ goto error;
- if ((mtype_id=h5tools_get_native_type(ftype_id))<0)
- goto error;
+ for(u = 0; u < (unsigned)n; u++) {
+ /*-------------------------------------------------------------------------
+ * open
+ *-------------------------------------------------------------------------
+ */
+ /* open attribute */
+ if((attr_id = H5Aopen_idx(loc_in, u)) < 0)
+ goto error;
+
+ /* get name */
+ if(H5Aget_name(attr_id, 255, name) < 0)
+ goto error;
+
+ /* get the file datatype */
+ if((ftype_id = H5Aget_type(attr_id)) < 0)
+ goto error;
+
+ /* get the dataspace handle */
+ if((space_id = H5Aget_space(attr_id)) < 0)
+ goto error;
+
+ /* get dimensions */
+ if((rank = H5Sget_simple_extent_dims(space_id, dims, NULL)) < 0)
+ goto error;
+
+
+ /*-------------------------------------------------------------------------
+ * elements
+ *-------------------------------------------------------------------------
+ */
+ nelmts = 1;
+ for(j = 0; j < rank; j++)
+ nelmts *= dims[j];
+
+ if((mtype_id = h5tools_get_native_type(ftype_id)) < 0)
+ goto error;
+
+ if((msize = H5Tget_size(mtype_id)) == 0)
+ goto error;
+
+
+ /*-------------------------------------------------------------------------
+ * object references are a special case
+ * we cannot just copy the buffers, but instead we recreate the reference
+ *-------------------------------------------------------------------------
+ */
+ if(H5Tequal(mtype_id, H5T_STD_REF_OBJ)) {
+ hid_t refobj_id;
+ hobj_ref_t *refbuf = NULL;
+ unsigned k;
+ const char* refname;
+ hobj_ref_t *buf = NULL;
- if ((msize=H5Tget_size(mtype_id))==0)
- goto error;
+ /*-------------------------------------------------------------------------
+ * read input to memory
+ *-------------------------------------------------------------------------
+ */
-
-/*-------------------------------------------------------------------------
- * object references are a special case
- * we cannot just copy the buffers, but instead we recreate the reference
- *-------------------------------------------------------------------------
- */
- if (H5Tequal(mtype_id, H5T_STD_REF_OBJ))
- {
- H5G_obj_t1 obj_type;
- hid_t refobj_id;
- hobj_ref_t *refbuf=NULL;
- unsigned k;
- const char* refname;
- hobj_ref_t *buf=NULL;
-
- /*-------------------------------------------------------------------------
- * read input to memory
- *-------------------------------------------------------------------------
- */
+ if (nelmts) {
+ buf = (void *)HDmalloc((unsigned)(nelmts * msize));
+ if(buf == NULL) {
+ printf("cannot read into memory\n");
+ goto error;
+ } /* end if */
+ if(H5Aread(attr_id, mtype_id, buf) < 0)
+ goto error;
- if (nelmts)
- {
- buf=(void *) HDmalloc((unsigned)(nelmts*msize));
- if ( buf==NULL){
- printf( "cannot read into memory\n" );
- goto error;
- }
- if (H5Aread(attr_id,mtype_id,buf)<0)
- goto error;
-
- if ((obj_type = H5Rget_obj_type(attr_id,H5R_OBJECT,buf))<0)
- goto error;
- refbuf=HDcalloc((unsigned)nelmts,msize);
- if ( refbuf==NULL){
- printf( "cannot allocate memory\n" );
- goto error;
- }
- for ( k=0; k<nelmts; k++)
- {
- H5E_BEGIN_TRY {
- if ((refobj_id = H5Rdereference(attr_id,H5R_OBJECT,&buf[k]))<0)
- goto error;
- } H5E_END_TRY;
- /* get the name. a valid name could only occur in the
- second traversal of the file */
- if ((refname=MapIdToName(refobj_id,travt))!=NULL)
- {
- /* create the reference */
- if (H5Rcreate(&refbuf[k],fidout,refname,H5R_OBJECT,-1)<0)
- goto error;
- if (options->verbose)
- printf("object <%s> reference created to <%s>\n",name,refname);
- }
- close_obj(obj_type,refobj_id);
- }/* k */
- }/*nelmts*/
+ refbuf = HDcalloc((unsigned)nelmts, msize);
+ if(refbuf == NULL) {
+ printf( "cannot allocate memory\n" );
+ goto error;
+ } /* end if */
- /*-------------------------------------------------------------------------
- * copy
- *-------------------------------------------------------------------------
- */
+ for(k = 0; k < nelmts; k++) {
+ H5E_BEGIN_TRY {
+ if((refobj_id = H5Rdereference(attr_id, H5R_OBJECT, &buf[k])) < 0)
+ goto error;
+ } H5E_END_TRY;
+
+ /* get the name. a valid name could only occur in the
+ * second traversal of the file
+ */
+ if((refname = MapIdToName(refobj_id, travt)) != NULL) {
+ /* create the reference */
+ if(H5Rcreate(&refbuf[k], fidout, refname, H5R_OBJECT, -1) < 0)
+ goto error;
+ if(options->verbose)
+ printf("object <%s> reference created to <%s>\n", name, refname);
+ }
+ H5Oclose(refobj_id);
+ } /* k */
+ } /*nelmts*/
- if ((attr_out=H5Acreate(loc_out,name,ftype_id,space_id,H5P_DEFAULT))<0)
- goto error;
- if (nelmts)
- {
- if(H5Awrite(attr_out,mtype_id,refbuf)<0)
- goto error;
- }
- if (H5Aclose(attr_out)<0)
- goto error;
+ /*-------------------------------------------------------------------------
+ * copy
+ *-------------------------------------------------------------------------
+ */
+ if((attr_out = H5Acreate(loc_out, name, ftype_id, space_id, H5P_DEFAULT)) < 0)
+ goto error;
+ if(nelmts)
+ if(H5Awrite(attr_out, mtype_id, refbuf) < 0)
+ goto error;
+ if(H5Aclose(attr_out) < 0)
+ goto error;
+
+ if(refbuf)
+ HDfree(refbuf);
+ if(buf)
+ HDfree(buf);
+ }/*H5T_STD_REF_OBJ*/
+
+ /*-------------------------------------------------------------------------
+ * dataset region references
+ *-------------------------------------------------------------------------
+ */
+ else if(H5Tequal(mtype_id, H5T_STD_REF_DSETREG)) {
+ hid_t refobj_id;
+ hdset_reg_ref_t *refbuf = NULL; /* input buffer for region references */
+ hdset_reg_ref_t *buf = NULL; /* output buffer */
+ const char* refname;
+ unsigned k;
- if (refbuf)
- free(refbuf);
- if (buf)
- free(buf);
+ /*-------------------------------------------------------------------------
+ * read input to memory
+ *-------------------------------------------------------------------------
+ */
+ if(nelmts) {
+ buf = (void *)HDmalloc((unsigned)(nelmts * msize));
+ if(buf == NULL) {
+ printf( "cannot read into memory\n" );
+ goto error;
+ } /* end if */
+ if(H5Aread(attr_id, mtype_id, buf) < 0)
+ goto error;
- }/*H5T_STD_REF_OBJ*/
+ /*-------------------------------------------------------------------------
+ * create output
+ *-------------------------------------------------------------------------
+ */
+ refbuf = HDcalloc(sizeof(hdset_reg_ref_t), (size_t)nelmts); /*init to zero */
+ if(refbuf == NULL) {
+ printf( "cannot allocate memory\n" );
+ goto error;
+ } /* end if */
-/*-------------------------------------------------------------------------
- * dataset region references
- *-------------------------------------------------------------------------
- */
- else if (H5Tequal(mtype_id, H5T_STD_REF_DSETREG))
- {
- H5G_obj_t1 obj_type;
- hid_t refobj_id;
- hdset_reg_ref_t *refbuf=NULL; /* input buffer for region references */
- hdset_reg_ref_t *buf=NULL; /* output buffer */
- const char* refname;
- unsigned k;
-
- /*-------------------------------------------------------------------------
- * read input to memory
- *-------------------------------------------------------------------------
- */
+ for(k = 0; k < nelmts; k++) {
+ H5E_BEGIN_TRY {
+ if((refobj_id = H5Rdereference(attr_id, H5R_DATASET_REGION, &buf[k])) < 0)
+ continue;
+ } H5E_END_TRY;
- if (nelmts)
- {
- buf=(void *) HDmalloc((unsigned)(nelmts*msize));
- if ( buf==NULL){
- printf( "cannot read into memory\n" );
- goto error;
- }
- if (H5Aread(attr_id,mtype_id,buf)<0)
- goto error;
- if ((obj_type = H5Rget_obj_type(attr_id,H5R_DATASET_REGION,buf))<0)
- goto error;
+ /* get the name. a valid name could only occur in the
+ * second traversal of the file
+ */
+ if((refname = MapIdToName(refobj_id, travt)) != NULL) {
+ hid_t region_id; /* region id of the referenced dataset */
- /*-------------------------------------------------------------------------
- * create output
- *-------------------------------------------------------------------------
- */
-
- refbuf=HDcalloc(sizeof(hdset_reg_ref_t),(size_t)nelmts); /*init to zero */
- if ( refbuf==NULL){
- printf( "cannot allocate memory\n" );
- goto error;
- }
- for ( k=0; k<nelmts; k++)
- {
- H5E_BEGIN_TRY {
- if ((refobj_id = H5Rdereference(attr_id,H5R_DATASET_REGION,&buf[k]))<0)
- continue;
- } H5E_END_TRY;
- /* get the name. a valid name could only occur in the
- second traversal of the file */
- if ((refname=MapIdToName(refobj_id,travt))!=NULL)
- {
- hid_t region_id; /* region id of the referenced dataset */
- if ((region_id = H5Rget_region(attr_id,H5R_DATASET_REGION,&buf[k]))<0)
- goto error;
- /* create the reference, we need the space_id */
- if (H5Rcreate(&refbuf[k],fidout,refname,H5R_DATASET_REGION,region_id)<0)
- goto error;
- if (H5Sclose(region_id)<0)
- goto error;
- if (options->verbose)
- printf("object <%s> region reference created to <%s>\n",name,refname);
- }
- close_obj(obj_type,refobj_id);
- }/* k */
- }/*nelmts */
+ if((region_id = H5Rget_region(attr_id, H5R_DATASET_REGION, &buf[k])) < 0)
+ goto error;
- /*-------------------------------------------------------------------------
- * copy
- *-------------------------------------------------------------------------
- */
-
- if ((attr_out=H5Acreate(loc_out,name,ftype_id,space_id,H5P_DEFAULT))<0)
- goto error;
- if (nelmts) {
- if(H5Awrite(attr_out,mtype_id,refbuf)<0)
- goto error;
- }
- if (H5Aclose(attr_out)<0)
- goto error;
- if (refbuf)
- free(refbuf);
- if (buf)
- free(buf);
- } /* H5T_STD_REF_DSETREG */
+ /* create the reference, we need the space_id */
+ if(H5Rcreate(&refbuf[k], fidout, refname, H5R_DATASET_REGION, region_id) < 0)
+ goto error;
+ if(H5Sclose(region_id) < 0)
+ goto error;
+ if(options->verbose)
+ printf("object <%s> region reference created to <%s>\n", name, refname);
+ } /* end if */
+ H5Oclose(refobj_id);
+ } /* k */
+ } /*nelmts */
-/*-------------------------------------------------------------------------
- * close
- *-------------------------------------------------------------------------
- */
+ /*-------------------------------------------------------------------------
+ * copy
+ *-------------------------------------------------------------------------
+ */
+ if((attr_out = H5Acreate(loc_out, name, ftype_id, space_id, H5P_DEFAULT)) < 0)
+ goto error;
+ if(nelmts)
+ if(H5Awrite(attr_out, mtype_id, refbuf) < 0)
+ goto error;
- if (H5Tclose(ftype_id)<0) goto error;
- if (H5Tclose(mtype_id)<0) goto error;
- if (H5Sclose(space_id)<0) goto error;
- if (H5Aclose(attr_id)<0) goto error;
- } /* u */
+ if(H5Aclose(attr_out) < 0)
+ goto error;
+
+ if(refbuf)
+ HDfree(refbuf);
+ if(buf)
+ HDfree(buf);
+ } /* H5T_STD_REF_DSETREG */
+
+ /*-------------------------------------------------------------------------
+ * close
+ *-------------------------------------------------------------------------
+ */
+ if(H5Tclose(ftype_id) < 0)
+ goto error;
+ if(H5Tclose(mtype_id) < 0)
+ goto error;
+ if(H5Sclose(space_id) < 0)
+ goto error;
+ if(H5Aclose(attr_id) < 0)
+ goto error;
+ } /* u */
- return 0;
+ return 0;
error:
- H5E_BEGIN_TRY {
- H5Tclose(ftype_id);
- H5Tclose(mtype_id);
- H5Sclose(space_id);
- H5Aclose(attr_id);
- H5Aclose(attr_out);
- } H5E_END_TRY;
- return -1;
-}
-
-/*-------------------------------------------------------------------------
- * Function: close_obj
- *
- * Purpose: Auxiliary function to close an object
- *
- *-------------------------------------------------------------------------
- */
+ H5E_BEGIN_TRY {
+ H5Tclose(ftype_id);
+ H5Tclose(mtype_id);
+ H5Sclose(space_id);
+ H5Aclose(attr_id);
+ H5Aclose(attr_out);
+ } H5E_END_TRY;
-static void close_obj(H5G_obj_t1 obj_type, hid_t obj_id)
-{
- H5E_BEGIN_TRY
- {
- switch (obj_type)
- {
- case H5G_GROUP:
- H5Gclose(obj_id);
- break;
- case H5G_DATASET:
- H5Dclose(obj_id);
- break;
- case H5G_TYPE:
- H5Tclose(obj_id);
- break;
- default:
- break;
- }
- } H5E_END_TRY;
+ return -1;
}
/*-------------------------------------------------------------------------
* Function: MapIdToName
*
- * Purpose: map an object ID to a name
+ * Purpose: map a ID from a reference to a dataset name
*
*-------------------------------------------------------------------------
*/
@@ -726,57 +655,22 @@ static void close_obj(H5G_obj_t1 obj_type, hid_t obj_id)
static const char* MapIdToName(hid_t refobj_id,
trav_table_t *travt)
{
- hid_t id;
- hid_t fid;
- H5G_stat_t refstat; /* Stat for the refobj id */
- H5G_stat_t objstat; /* Stat for objects in the file */
- unsigned int i;
-
- /* obtain information to identify the referenced object uniquely */
- if(H5Gget_objinfo(refobj_id, ".", 0, &refstat) <0)
- return NULL;
-
- /* obtains the file ID given an object ID. This ID must be closed */
- if ((fid = H5Iget_file_id(refobj_id))<0)
- {
- return NULL;
- }
-
- /* linear search */
- for ( i=0; i<travt->nobjs; i++)
- {
- switch ( travt->objs[i].type )
- {
- default:
- break;
-
- /*-------------------------------------------------------------------------
- * H5G_DATASET
- *-------------------------------------------------------------------------
- */
-
- case H5G_DATASET:
-
- if ((id = H5Dopen(fid,travt->objs[i].name))<0)
- return NULL;
- if(H5Gget_objinfo(id, ".", 0, &objstat) <0)
- return NULL;
- if (H5Dclose(id)<0)
+ unsigned int i;
+
+ /* linear search */
+ for(i = 0; i < travt->nobjs; i++) {
+ if(travt->objs[i].type == H5O_TYPE_DATASET) {
+ H5O_info_t ref_oinfo; /* Stat for the refobj id */
+
+ /* obtain information to identify the referenced object uniquely */
+ if(H5Oget_info(refobj_id, ".", &ref_oinfo, H5P_DEFAULT) < 0)
+ return NULL;
+
+ if(ref_oinfo.addr == travt->objs[i].objno)
+ return(travt->objs[i].name);
+ } /* end if */
+ } /* i */
+
return NULL;
- if (refstat.fileno[0]==objstat.fileno[0] && refstat.fileno[1]==objstat.fileno[1]
- && refstat.objno[0]==objstat.objno[0] && refstat.objno[1]==objstat.objno[1])
- {
- H5Fclose(fid);
- return travt->objs[i].name;
- }
- break;
- } /* switch */
- } /* i */
-
- if (H5Fclose(fid)<0)
- return NULL;
-
- return NULL;
}
-
diff --git a/tools/lib/h5diff.c b/tools/lib/h5diff.c
index 2d7cc7d..e0174b0 100644
--- a/tools/lib/h5diff.c
+++ b/tools/lib/h5diff.c
@@ -192,15 +192,13 @@ hsize_t h5diff(const char *fname1,
char filenames[2][1024];
hsize_t nfound = 0;
- memset(filenames, 0, 1024*2);
+ HDmemset(filenames, 0, 1024 * 2);
- if(options->m_quiet &&
- (options->m_verbose || options->m_report))
- {
+ if(options->m_quiet && (options->m_verbose || options->m_report)) {
printf("Error: -q (quiet mode) cannot be added to verbose or report modes\n");
options->err_stat=1;
return 0;
- }
+ } /* end if */
/*-------------------------------------------------------------------------
* open the files first; if they are not valid, no point in continuing
@@ -208,42 +206,32 @@ hsize_t h5diff(const char *fname1,
*/
/* disable error reporting */
- H5E_BEGIN_TRY
- {
+ H5E_BEGIN_TRY {
/* Open the files */
- if ((file1_id = H5Fopen (fname1, H5F_ACC_RDONLY, H5P_DEFAULT)) < 0)
- {
- printf ("h5diff: <%s>: unable to open file\n", fname1);
+ if((file1_id = H5Fopen(fname1, H5F_ACC_RDONLY, H5P_DEFAULT)) < 0) {
+ printf("h5diff: <%s>: unable to open file\n", fname1);
options->err_stat = 1;
#ifdef H5_HAVE_PARALLEL
if(g_Parallel)
- {
/* Let tasks know that they won't be needed */
phdiff_dismiss_workers();
- }
#endif
-
goto out;
- }
- if ((file2_id = H5Fopen (fname2, H5F_ACC_RDONLY, H5P_DEFAULT)) < 0)
- {
- printf ("h5diff: <%s>: unable to open file\n", fname2);
+ } /* end if */
+ if((file2_id = H5Fopen(fname2, H5F_ACC_RDONLY, H5P_DEFAULT)) < 0) {
+ printf("h5diff: <%s>: unable to open file\n", fname2);
options->err_stat = 1;
#ifdef H5_HAVE_PARALLEL
if(g_Parallel)
- {
/* Let tasks know that they won't be needed */
phdiff_dismiss_workers();
- }
#endif
-
goto out;
- }
+ } /* end if */
/* enable error reporting */
- }
- H5E_END_TRY;
+ } H5E_END_TRY;
/*-------------------------------------------------------------------------
* Initialize the info structs
@@ -256,84 +244,69 @@ hsize_t h5diff(const char *fname1,
* get the list of objects in the files
*-------------------------------------------------------------------------
*/
- if(h5trav_getinfo(file1_id, info1) < 0 || h5trav_getinfo(file2_id, info2) < 0)
- {
+ if(h5trav_getinfo(file1_id, info1) < 0 || h5trav_getinfo(file2_id, info2) < 0) {
printf("Error: Could not get file contents\n");
options->err_stat = 1;
#ifdef H5_HAVE_PARALLEL
if(g_Parallel)
- {
/* Let tasks know that they won't be needed */
phdiff_dismiss_workers();
- }
#endif
goto out;
- }
+ } /* end if */
/*-------------------------------------------------------------------------
* object name was supplied
*-------------------------------------------------------------------------
*/
-
- if (objname1)
- {
-
+ if(objname1) {
#ifdef H5_HAVE_PARALLEL
if(g_Parallel)
- {
/* Let tasks know that they won't be needed */
phdiff_dismiss_workers();
- }
#endif
- assert (objname2);
+ assert(objname2);
options->cmn_objs = 1; /* eliminate warning */
- nfound = diff_compare (file1_id, fname1, objname1, info1,
- file2_id, fname2, objname2, info2,
- options);
- }
+ nfound = diff_compare(file1_id, fname1, objname1, info1,
+ file2_id, fname2, objname2, info2,
+ options);
+ } /* end if */
/*-------------------------------------------------------------------------
* compare all
*-------------------------------------------------------------------------
*/
- else
- {
-
+ else {
#ifdef H5_HAVE_PARALLEL
- if(g_Parallel)
- {
+ if(g_Parallel) {
int i;
- if((HDstrlen(fname1) > 1024) || (HDstrlen(fname2) > 1024))
- {
+ if((HDstrlen(fname1) > 1024) || (HDstrlen(fname2) > 1024)) {
fprintf(stderr, "The parallel diff only supports path names up to 1024 characters\n");
MPI_Abort(MPI_COMM_WORLD, 0);
- }
+ } /* end if */
HDstrcpy(filenames[0], fname1);
HDstrcpy(filenames[1], fname2);
/* Alert the worker tasks that there's going to be work. */
-
for(i = 1; i < g_nTasks; i++)
- MPI_Send(filenames, 1024 * 2, MPI_CHAR, i, MPI_TAG_PARALLEL, MPI_COMM_WORLD);
- }
+ MPI_Send(filenames, (1024 * 2), MPI_CHAR, i, MPI_TAG_PARALLEL, MPI_COMM_WORLD);
+ } /* end if */
#endif
nfound = diff_match(file1_id, info1, file2_id, info2, options);
- }
+ } /* end else */
trav_info_free(info1);
trav_info_free(info2);
out:
/* close */
- H5E_BEGIN_TRY
- {
+ H5E_BEGIN_TRY {
H5Fclose(file1_id);
H5Fclose(file2_id);
- }
- H5E_END_TRY;
+ } H5E_END_TRY;
return nfound;
}
@@ -358,411 +331,360 @@ out:
*
*-------------------------------------------------------------------------
*/
-hsize_t diff_match (hid_t file1_id,
+hsize_t diff_match(hid_t file1_id,
trav_info_t * info1,
hid_t file2_id,
trav_info_t * info2,
diff_opt_t * options)
{
- int more_names_exist = (info1->nused > 0 && info2->nused > 0) ? 1 : 0;
- trav_table_t *table = NULL;
- int cmp;
- size_t curr1 = 0;
- size_t curr2 = 0;
- unsigned infile[2];
- char c1, c2;
- hsize_t nfound = 0;
- unsigned i;
-
-/*-------------------------------------------------------------------------
- * build the list
- *-------------------------------------------------------------------------
- */
- trav_table_init (&table);
-
- while (more_names_exist)
- {
- /* criteria is string compare */
- cmp = HDstrcmp(info1->paths[curr1].path, info2->paths[curr2].path);
- if (cmp == 0)
- {
- infile[0] = 1;
- infile[1] = 1;
- trav_table_addflags (infile, info1->paths[curr1].path, info1->paths[curr1].type,
- table);
-
- curr1++;
- curr2++;
- }
- else if (cmp < 0)
- {
- infile[0] = 1;
- infile[1] = 0;
- trav_table_addflags (infile, info1->paths[curr1].path, info1->paths[curr1].type,
- table);
- curr1++;
- }
- else
- {
- infile[0] = 0;
- infile[1] = 1;
- trav_table_addflags (infile, info2->paths[curr2].path, info2->paths[curr2].type,
- table);
- curr2++;
- }
-
- more_names_exist = (curr1 < info1->nused && curr2 < info2->nused) ? 1 : 0;
-
- } /* end while */
-
- /* list1 did not end */
- if (curr1 < info1->nused)
- {
- while (curr1 < info1->nused)
- {
- infile[0] = 1;
- infile[1] = 0;
- trav_table_addflags (infile, info1->paths[curr1].path, info1->paths[curr1].type,
- table);
- curr1++;
- }
- }
+ trav_table_t *table = NULL;
+ size_t curr1, curr2;
+ unsigned infile[2];
+ hsize_t nfound = 0;
+ unsigned i;
- /* list2 did not end */
- if (curr2 < info2->nused)
- {
- while (curr2 < info2->nused)
- {
- infile[0] = 0;
- infile[1] = 1;
- trav_table_addflags (infile, info2->paths[curr2].path, info2->paths[curr2].type,
- table);
- curr2++;
- }
- }
+ /*-------------------------------------------------------------------------
+ * build the list
+ *-------------------------------------------------------------------------
+ */
+ trav_table_init(&table);
+
+ curr1 = 0;
+ curr2 = 0;
+ while(curr1 < info1->nused && curr2 < info2->nused) {
+ /* criteria is string compare */
+ int cmp = HDstrcmp(info1->paths[curr1].path, info2->paths[curr2].path);
+
+ if(cmp == 0) {
+ infile[0] = 1;
+ infile[1] = 1;
+ trav_table_addflags(infile, info1->paths[curr1].path, info1->paths[curr1].type, table);
+
+ curr1++;
+ curr2++;
+ } /* end if */
+ else if(cmp < 0) {
+ infile[0] = 1;
+ infile[1] = 0;
+ trav_table_addflags(infile, info1->paths[curr1].path, info1->paths[curr1].type, table);
+ curr1++;
+ } /* end else-if */
+ else {
+ infile[0] = 0;
+ infile[1] = 1;
+ trav_table_addflags(infile, info2->paths[curr2].path, info2->paths[curr2].type, table);
+ curr2++;
+ } /* end else */
+ } /* end while */
+
+ /* list1 did not end */
+ infile[0] = 1;
+ infile[1] = 0;
+ while(curr1 < info1->nused) {
+ trav_table_addflags(infile, info1->paths[curr1].path, info1->paths[curr1].type, table);
+ curr1++;
+ } /* end while */
+
+ /* list2 did not end */
+ infile[0] = 0;
+ infile[1] = 1;
+ while(curr2 < info2->nused) {
+ trav_table_addflags(infile, info2->paths[curr2].path, info2->paths[curr2].type, table);
+ curr2++;
+ } /* end while */
-/*-------------------------------------------------------------------------
- * print the list
- *-------------------------------------------------------------------------
- */
+ /*-------------------------------------------------------------------------
+ * print the list
+ *-------------------------------------------------------------------------
+ */
+ if(options->m_verbose) {
+ printf("\n");
+ printf("file1 file2\n");
+ printf("---------------------------------------\n");
+ for(i = 0; i < table->nobjs; i++) {
+ char c1, c2;
- if (options->m_verbose)
- {
- printf ("\n");
- printf ("file1 file2\n");
- printf ("---------------------------------------\n");
- for (i = 0; i < table->nobjs; i++)
- {
- c1 = (table->objs[i].flags[0]) ? 'x' : ' ';
- c2 = (table->objs[i].flags[1]) ? 'x' : ' ';
- printf ("%5c %6c %-15s\n", c1, c2, table->objs[i].name);
- }
- printf ("\n");
- }
+ c1 = (table->objs[i].flags[0]) ? 'x' : ' ';
+ c2 = (table->objs[i].flags[1]) ? 'x' : ' ';
+ printf("%5c %6c %-15s\n", c1, c2, table->objs[i].name);
+ } /* end for */
+ printf ("\n");
+ } /* end if */
-/*-------------------------------------------------------------------------
- * do the diff for common objects
- *-------------------------------------------------------------------------
- */
- {
+ /*-------------------------------------------------------------------------
+ * do the diff for common objects
+ *-------------------------------------------------------------------------
+ */
#ifdef H5_HAVE_PARALLEL
- char* workerTasks = malloc((g_nTasks-1) * sizeof(char));
- int n;
- int busyTasks=0;
- struct diffs_found nFoundbyWorker;
- struct diff_args args;
- int havePrintToken = 1;
- MPI_Status Status;
-
- /*set all tasks as free */
- memset(workerTasks, 1, g_nTasks-1);
+{
+ char *workerTasks = HDmalloc((g_nTasks - 1) * sizeof(char));
+ int n;
+ int busyTasks = 0;
+ struct diffs_found nFoundbyWorker;
+ struct diff_args args;
+ int havePrintToken = 1;
+ MPI_Status Status;
+
+ /*set all tasks as free */
+ HDmemset(workerTasks, 1, (g_nTasks - 1));
#endif
- for (i = 0; i < table->nobjs; i++)
- {
- if (table->objs[i].flags[0] && table->objs[i].flags[1])
- {
+ for(i = 0; i < table->nobjs; i++) {
+ if(table->objs[i].flags[0] && table->objs[i].flags[1]) {
+ options->cmn_objs = 1;
+ if(!g_Parallel) {
+ nfound += diff(file1_id,
+ table->objs[i].name,
+ file2_id,
+ table->objs[i].name, options, table->objs[i].type);
+ } /* end if */
#ifdef H5_HAVE_PARALLEL
- int workerFound = 0;
+ else {
+ int workerFound = 0;
+
+ h5diffdebug("beginning of big else block\n");
+ /* We're in parallel mode */
+ /* Since the data type of diff value is hsize_t which can
+ * be arbitary large such that there is no MPI type that
+ * matches it, the value is passed between processes as
+ * an array of bytes in order to be portable. But this
+ * may not work in non-homogeneous MPI environments.
+ */
+
+ /*Set up args to pass to worker task. */
+ if(strlen(table->objs[i].name) > 255) {
+ printf("The parallel diff only supports object names up to 255 characters\n");
+ MPI_Abort(MPI_COMM_WORLD, 0);
+ } /* end if */
+
+ HDstrcpy(args.name, table->objs[i].name);
+ args.options = *options;
+ args.type= table->objs[i].type;
+
+ h5diffdebug2("busyTasks=%d\n", busyTasks);
+ /* if there are any outstanding print requests, let's handle one. */
+ if(busyTasks > 0) {
+ int incomingMessage;
+
+ /* check if any tasks freed up, and didn't need to print. */
+ MPI_Iprobe(MPI_ANY_SOURCE, MPI_TAG_DONE, MPI_COMM_WORLD, &incomingMessage, &Status);
+
+ /* first block*/
+ if(incomingMessage) {
+ workerTasks[Status.MPI_SOURCE - 1] = 1;
+ MPI_Recv(&nFoundbyWorker, sizeof(nFoundbyWorker), MPI_BYTE, Status.MPI_SOURCE, MPI_TAG_DONE, MPI_COMM_WORLD, &Status);
+ nfound += nFoundbyWorker.nfound;
+ options->not_cmp = options->not_cmp | nFoundbyWorker.not_cmp;
+ busyTasks--;
+ } /* end if */
+
+ /* check to see if the print token was returned. */
+ if(!havePrintToken) {
+ /* If we don't have the token, someone is probably sending us output */
+ print_incoming_data();
+
+ /* check incoming queue for token */
+ MPI_Iprobe(MPI_ANY_SOURCE, MPI_TAG_TOK_RETURN, MPI_COMM_WORLD, &incomingMessage, &Status);
+
+ /* incoming token implies free task. */
+ if(incomingMessage) {
+ workerTasks[Status.MPI_SOURCE - 1] = 1;
+ MPI_Recv(&nFoundbyWorker, sizeof(nFoundbyWorker), MPI_BYTE, Status.MPI_SOURCE, MPI_TAG_TOK_RETURN, MPI_COMM_WORLD, &Status);
+ nfound += nFoundbyWorker.nfound;
+ options->not_cmp = options->not_cmp | nFoundbyWorker.not_cmp;
+ busyTasks--;
+ havePrintToken = 1;
+ } /* end if */
+ } /* end if */
+
+ /* check to see if anyone needs the print token. */
+ if(havePrintToken) {
+ /* check incoming queue for print token requests */
+ MPI_Iprobe(MPI_ANY_SOURCE, MPI_TAG_TOK_REQUEST, MPI_COMM_WORLD, &incomingMessage, &Status);
+ if(incomingMessage) {
+ MPI_Recv(NULL, 0, MPI_BYTE, Status.MPI_SOURCE, MPI_TAG_TOK_REQUEST, MPI_COMM_WORLD, &Status);
+ MPI_Send(NULL, 0, MPI_BYTE, Status.MPI_SOURCE, MPI_TAG_PRINT_TOK, MPI_COMM_WORLD);
+ havePrintToken = 0;
+ } /* end if */
+ } /* end if */
+ } /* end if */
+
+ /* check array of tasks to see which ones are free.
+ * Manager task never does work, so freeTasks[0] is really
+ * worker task 0. */
+ for(n = 1; (n < g_nTasks) && !workerFound; n++) {
+ if(workerTasks[n-1]) {
+ /* send file id's and names to first free worker */
+ MPI_Send(&args, sizeof(struct diff_args), MPI_BYTE, n, MPI_TAG_ARGS, MPI_COMM_WORLD);
+
+ /* increment counter for total number of prints. */
+ busyTasks++;
+
+ /* mark worker as busy */
+ workerTasks[n - 1] = 0;
+ workerFound = 1;
+ } /* end if */
+ } /* end for */
+
+ h5diffdebug2("workerfound is %d \n", workerFound);
+ if(!workerFound) {
+ /* if they were all busy, we've got to wait for one free up
+ * before we can move on. If we don't have the token, some
+ * task is currently printing so we'll wait for that task to
+ * return it.
+ */
+
+ if(!havePrintToken) {
+ while(!havePrintToken) {
+ int incomingMessage;
+
+ print_incoming_data();
+ MPI_Iprobe(MPI_ANY_SOURCE, MPI_TAG_TOK_RETURN, MPI_COMM_WORLD, &incomingMessage, &Status);
+ if(incomingMessage) {
+ MPI_Recv(&nFoundbyWorker, sizeof(nFoundbyWorker), MPI_BYTE, MPI_ANY_SOURCE, MPI_TAG_TOK_RETURN, MPI_COMM_WORLD, &Status);
+ havePrintToken = 1;
+ nfound += nFoundbyWorker.nfound;
+ options->not_cmp = options->not_cmp | nFoundbyWorker.not_cmp;
+ /* send this task the work unit. */
+ MPI_Send(&args, sizeof(struct diff_args), MPI_BYTE, Status.MPI_SOURCE, MPI_TAG_ARGS, MPI_COMM_WORLD);
+ } /* end if */
+ } /* end while */
+ } /* end if */
+ /* if we do have the token, check for task to free up, or wait for a task to request it */
+ else {
+ /* But first print all the data in our incoming queue */
+ print_incoming_data();
+ MPI_Probe(MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, &Status);
+ if(Status.MPI_TAG == MPI_TAG_DONE) {
+ MPI_Recv(&nFoundbyWorker, sizeof(nFoundbyWorker), MPI_BYTE, Status.MPI_SOURCE, MPI_TAG_DONE, MPI_COMM_WORLD, &Status);
+ nfound += nFoundbyWorker.nfound;
+ options->not_cmp = options->not_cmp | nFoundbyWorker.not_cmp;
+ MPI_Send(&args, sizeof(struct diff_args), MPI_BYTE, Status.MPI_SOURCE, MPI_TAG_ARGS, MPI_COMM_WORLD);
+ } /* end if */
+ else if(Status.MPI_TAG == MPI_TAG_TOK_REQUEST) {
+ int incomingMessage;
+
+ MPI_Recv(NULL, 0, MPI_BYTE, Status.MPI_SOURCE, MPI_TAG_TOK_REQUEST, MPI_COMM_WORLD, &Status);
+ MPI_Send(NULL, 0, MPI_BYTE, Status.MPI_SOURCE, MPI_TAG_PRINT_TOK, MPI_COMM_WORLD);
+
+ do {
+ MPI_Iprobe(MPI_ANY_SOURCE, MPI_TAG_TOK_RETURN, MPI_COMM_WORLD, &incomingMessage, &Status);
+
+ print_incoming_data();
+ } while(!incomingMessage);
+
+ MPI_Recv(&nFoundbyWorker, sizeof(nFoundbyWorker), MPI_BYTE, Status.MPI_SOURCE, MPI_TAG_TOK_RETURN, MPI_COMM_WORLD, &Status);
+ nfound += nFoundbyWorker.nfound;
+ options->not_cmp = options->not_cmp | nFoundbyWorker.not_cmp;
+ MPI_Send(&args, sizeof(struct diff_args), MPI_BYTE, Status.MPI_SOURCE, MPI_TAG_ARGS, MPI_COMM_WORLD);
+ } /* end else-if */
+ else {
+ printf("ERROR: Invalid tag (%d) received \n", Status.MPI_TAG);
+ MPI_Abort(MPI_COMM_WORLD, 0);
+ MPI_Finalize();
+ } /* end else */
+ } /* end else */
+ } /* end if */
+ } /* end else */
#endif /* H5_HAVE_PARALLEL */
- options->cmn_objs = 1;
- if(!g_Parallel)
- {
- nfound += diff (file1_id,
- table->objs[i].name,
- file2_id,
- table->objs[i].name, options, table->objs[i].type);
- }
-#ifdef H5_HAVE_PARALLEL
- else
- {
- h5diffdebug("beginning of big else block\n");
- /* We're in parallel mode */
- /* Since the data type of diff value is hsize_t which can
- * be arbitary large such that there is no MPI type that
- * matches it, the value is passed between processes as
- * an array of bytes in order to be portable. But this
- * may not work in non-homogeneous MPI environments.
- */
-
- /*Set up args to pass to worker task. */
- if(strlen(table->objs[i].name) > 255)
- {
- printf("The parallel diff only supports object names up to 255 characters\n");
- MPI_Abort(MPI_COMM_WORLD, 0);
- }
-
- strcpy(args.name, table->objs[i].name);
- args.options = *options;
- args.type= table->objs[i].type;
-
- h5diffdebug2("busyTasks=%d\n", busyTasks);
- /* if there are any outstanding print requests, let's handle one. */
- if(busyTasks > 0)
- {
- int incomingMessage;
- /* check if any tasks freed up, and didn't need to print. */
- MPI_Iprobe(MPI_ANY_SOURCE, MPI_TAG_DONE, MPI_COMM_WORLD, &incomingMessage, &Status);
-
- /* first block*/
- if(incomingMessage)
- {
- workerTasks[Status.MPI_SOURCE-1] = 1;
- MPI_Recv(&nFoundbyWorker, sizeof(nFoundbyWorker), MPI_BYTE, Status.MPI_SOURCE, MPI_TAG_DONE, MPI_COMM_WORLD, &Status);
- nfound += nFoundbyWorker.nfound;
- options->not_cmp = options->not_cmp | nFoundbyWorker.not_cmp;
- busyTasks--;
- }
-
- /* check to see if the print token was returned. */
- if(!havePrintToken)
- {
- /* If we don't have the token, someone is probably sending us output */
- print_incoming_data();
-
- /* check incoming queue for token */
- MPI_Iprobe(MPI_ANY_SOURCE, MPI_TAG_TOK_RETURN, MPI_COMM_WORLD, &incomingMessage, &Status);
-
- /* incoming token implies free task. */
- if(incomingMessage)
- {
- workerTasks[Status.MPI_SOURCE-1] = 1;
- MPI_Recv(&nFoundbyWorker, sizeof(nFoundbyWorker), MPI_BYTE, Status.MPI_SOURCE, MPI_TAG_TOK_RETURN, MPI_COMM_WORLD, &Status);
- nfound += nFoundbyWorker.nfound;
- options->not_cmp = options->not_cmp | nFoundbyWorker.not_cmp;
- busyTasks--;
- havePrintToken = 1;
- }
- }
-
- /* check to see if anyone needs the print token. */
- if(havePrintToken)
- {
- /* check incoming queue for print token requests */
- MPI_Iprobe(MPI_ANY_SOURCE, MPI_TAG_TOK_REQUEST, MPI_COMM_WORLD, &incomingMessage, &Status);
- if(incomingMessage)
- {
- MPI_Recv(NULL, 0, MPI_BYTE, Status.MPI_SOURCE, MPI_TAG_TOK_REQUEST, MPI_COMM_WORLD, &Status);
- MPI_Send(NULL, 0, MPI_BYTE, Status.MPI_SOURCE, MPI_TAG_PRINT_TOK, MPI_COMM_WORLD);
- havePrintToken = 0;
- }
- }
- }
-
- /* check array of tasks to see which ones are free.
- * Manager task never does work, so freeTasks[0] is really
- * worker task 0. */
+ } /* end if */
+ } /* end for */
+ h5diffdebug("done with for loop\n");
- for(n=1; (n<g_nTasks) && !workerFound; n++)
- {
- if(workerTasks[n-1])
- {
- /* send file id's and names to first free worker */
- MPI_Send(&args, sizeof(struct diff_args), MPI_BYTE, n, MPI_TAG_ARGS, MPI_COMM_WORLD);
-
- /* increment counter for total number of prints. */
- busyTasks++;
+#ifdef H5_HAVE_PARALLEL
+ if(g_Parallel) {
+ /* make sure all tasks are done */
+ while(busyTasks > 0) {
+ MPI_Probe(MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, &Status);
+ if(Status.MPI_TAG == MPI_TAG_DONE) {
+ MPI_Recv(&nFoundbyWorker, sizeof(nFoundbyWorker), MPI_BYTE, Status.MPI_SOURCE, MPI_TAG_DONE, MPI_COMM_WORLD, &Status);
+ nfound += nFoundbyWorker.nfound;
+ options->not_cmp = options->not_cmp | nFoundbyWorker.not_cmp;
+ busyTasks--;
+ } /* end if */
+ else if(Status.MPI_TAG == MPI_TAG_TOK_RETURN) {
+ MPI_Recv(&nFoundbyWorker, sizeof(nFoundbyWorker), MPI_BYTE, Status.MPI_SOURCE, MPI_TAG_DONE, MPI_COMM_WORLD, &Status);
+ nfound += nFoundbyWorker.nfound;
+ options->not_cmp = options->not_cmp | nFoundbyWorker.not_cmp;
+ busyTasks--;
+ havePrintToken = 1;
+ } /* end else-if */
+ else if(Status.MPI_TAG == MPI_TAG_TOK_REQUEST) {
+ MPI_Recv(NULL, 0, MPI_BYTE, Status.MPI_SOURCE, MPI_TAG_TOK_REQUEST, MPI_COMM_WORLD, &Status);
+ if(havePrintToken) {
+ int incomingMessage;
+
+ MPI_Send(NULL, 0, MPI_BYTE, Status.MPI_SOURCE, MPI_TAG_PRINT_TOK, MPI_COMM_WORLD);
+
+ do {
+ MPI_Iprobe(MPI_ANY_SOURCE, MPI_TAG_TOK_RETURN, MPI_COMM_WORLD, &incomingMessage, &Status);
+
+ print_incoming_data();
+ } while(!incomingMessage);
+
+ MPI_Recv(&nFoundbyWorker, sizeof(nFoundbyWorker), MPI_BYTE, Status.MPI_SOURCE, MPI_TAG_TOK_RETURN, MPI_COMM_WORLD, &Status);
+ nfound += nFoundbyWorker.nfound;
+ options->not_cmp = options->not_cmp | nFoundbyWorker.not_cmp;
+ busyTasks--;
+ } /* end if */
+ /* someone else must have it...wait for them to return it, then give it to the task that just asked for it. */
+ else {
+ int source = Status.MPI_SOURCE;
+ int incomingMessage;
+
+ do {
+ MPI_Iprobe(MPI_ANY_SOURCE, MPI_TAG_TOK_RETURN, MPI_COMM_WORLD, &incomingMessage, &Status);
+
+ print_incoming_data();
+ } while(!incomingMessage);
+
+
+ MPI_Recv(&nFoundbyWorker, sizeof(nFoundbyWorker), MPI_BYTE, MPI_ANY_SOURCE, MPI_TAG_TOK_RETURN, MPI_COMM_WORLD, &Status);
+ nfound += nFoundbyWorker.nfound;
+ options->not_cmp = options->not_cmp | nFoundbyWorker.not_cmp;
+ busyTasks--;
+ MPI_Send(NULL, 0, MPI_BYTE, source, MPI_TAG_PRINT_TOK, MPI_COMM_WORLD);
+ } /* end else */
+ } /* end else-if */
+ else if(Status.MPI_TAG == MPI_TAG_TOK_RETURN) {
+ MPI_Recv(&nFoundbyWorker, sizeof(nFoundbyWorker), MPI_BYTE, Status.MPI_SOURCE, MPI_TAG_TOK_RETURN, MPI_COMM_WORLD, &Status);
+ nfound += nFoundbyWorker.nfound;
+ options->not_cmp = options->not_cmp | nFoundbyWorker.not_cmp;
+ busyTasks--;
+ havePrintToken = 1;
+ } /* end else-if */
+ else if(Status.MPI_TAG == MPI_TAG_PRINT_DATA)
+ {
+ char data[PRINT_DATA_MAX_SIZE + 1];
+ HDmemset(data, 0, PRINT_DATA_MAX_SIZE + 1);
- /* mark worker as busy */
- workerTasks[n-1] = 0;
- workerFound = 1;
- }
-
- }
+ MPI_Recv(data, PRINT_DATA_MAX_SIZE, MPI_CHAR, Status.MPI_SOURCE, MPI_TAG_PRINT_DATA, MPI_COMM_WORLD, &Status);
+ printf("%s", data);
+ } /* end else-if */
+ else {
+ printf("ph5diff-manager: ERROR!! Invalid tag (%d) received \n", Status.MPI_TAG);
+ MPI_Abort(MPI_COMM_WORLD, 0);
+ } /* end else */
+ } /* end while */
- h5diffdebug2("workerfound is %d \n", workerFound);
- if(!workerFound)
- {
- /* if they were all busy, we've got to wait for one free up before we can move on.
- * if we don't have the token, some task is currently printing so we'll wait for that task to return it. */
+ for(i = 1; i < g_nTasks; i++)
+ MPI_Send(NULL, 0, MPI_BYTE, i, MPI_TAG_END, MPI_COMM_WORLD);
- if(!havePrintToken)
- {
- while(!havePrintToken) {
- int incomingMessage;
+ /* Print any final data waiting in our queue */
print_incoming_data();
- MPI_Iprobe(MPI_ANY_SOURCE, MPI_TAG_TOK_RETURN, MPI_COMM_WORLD, &incomingMessage, &Status);
- if(incomingMessage)
- {
- MPI_Recv(&nFoundbyWorker, sizeof(nFoundbyWorker), MPI_BYTE, MPI_ANY_SOURCE, MPI_TAG_TOK_RETURN, MPI_COMM_WORLD, &Status);
- havePrintToken = 1;
- nfound += nFoundbyWorker.nfound;
- options->not_cmp = options->not_cmp | nFoundbyWorker.not_cmp;
- /* send this task the work unit. */
- MPI_Send(&args, sizeof(struct diff_args), MPI_BYTE, Status.MPI_SOURCE, MPI_TAG_ARGS, MPI_COMM_WORLD);
- }
- }
- }
- /* if we do have the token, check for task to free up, or wait for a task to request it */
- else
- {
- /* But first print all the data in our incoming queue */
- print_incoming_data();
- MPI_Probe(MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, &Status);
- if(Status.MPI_TAG == MPI_TAG_DONE)
- {
- MPI_Recv(&nFoundbyWorker, sizeof(nFoundbyWorker), MPI_BYTE, Status.MPI_SOURCE, MPI_TAG_DONE, MPI_COMM_WORLD, &Status);
- nfound += nFoundbyWorker.nfound;
- options->not_cmp = options->not_cmp | nFoundbyWorker.not_cmp;
- MPI_Send(&args, sizeof(struct diff_args), MPI_BYTE, Status.MPI_SOURCE, MPI_TAG_ARGS, MPI_COMM_WORLD);
- }
- else if(Status.MPI_TAG == MPI_TAG_TOK_REQUEST)
- {
- int incomingMessage;
- MPI_Recv(NULL, 0, MPI_BYTE, Status.MPI_SOURCE, MPI_TAG_TOK_REQUEST, MPI_COMM_WORLD, &Status);
- MPI_Send(NULL, 0, MPI_BYTE, Status.MPI_SOURCE, MPI_TAG_PRINT_TOK, MPI_COMM_WORLD);
-
- do
- {
- MPI_Iprobe(MPI_ANY_SOURCE, MPI_TAG_TOK_RETURN, MPI_COMM_WORLD, &incomingMessage, &Status);
-
- print_incoming_data();
- }
- while(!incomingMessage);
-
-
- MPI_Recv(&nFoundbyWorker, sizeof(nFoundbyWorker), MPI_BYTE, Status.MPI_SOURCE, MPI_TAG_TOK_RETURN, MPI_COMM_WORLD, &Status);
- nfound += nFoundbyWorker.nfound;
- options->not_cmp = options->not_cmp | nFoundbyWorker.not_cmp;
- MPI_Send(&args, sizeof(struct diff_args), MPI_BYTE, Status.MPI_SOURCE, MPI_TAG_ARGS, MPI_COMM_WORLD);
- }
- else
- {
- printf("ERROR: Invalid tag (%d) received \n", Status.MPI_TAG);
- MPI_Abort(MPI_COMM_WORLD, 0);
- MPI_Finalize();
- }
- }
- }
- }
-#endif /* H5_HAVE_PARALLEL */
- }
- }
- h5diffdebug("done with for loop\n");
-
-#ifdef H5_HAVE_PARALLEL
- if(g_Parallel)
- {
- while(busyTasks > 0) /* make sure all tasks are done */
- {
- MPI_Probe(MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, &Status);
- if(Status.MPI_TAG == MPI_TAG_DONE)
- {
- MPI_Recv(&nFoundbyWorker, sizeof(nFoundbyWorker), MPI_BYTE, Status.MPI_SOURCE, MPI_TAG_DONE, MPI_COMM_WORLD, &Status);
- nfound += nFoundbyWorker.nfound;
- options->not_cmp = options->not_cmp | nFoundbyWorker.not_cmp;
- busyTasks--;
- }
- else if(Status.MPI_TAG == MPI_TAG_TOK_RETURN)
- {
- MPI_Recv(&nFoundbyWorker, sizeof(nFoundbyWorker), MPI_BYTE, Status.MPI_SOURCE, MPI_TAG_DONE, MPI_COMM_WORLD, &Status);
- nfound += nFoundbyWorker.nfound;
- options->not_cmp = options->not_cmp | nFoundbyWorker.not_cmp;
- busyTasks--;
- havePrintToken = 1;
- }
- else if(Status.MPI_TAG == MPI_TAG_TOK_REQUEST)
- {
- MPI_Recv(NULL, 0, MPI_BYTE, Status.MPI_SOURCE, MPI_TAG_TOK_REQUEST, MPI_COMM_WORLD, &Status);
- if(havePrintToken)
- {
- int incomingMessage;
- MPI_Send(NULL, 0, MPI_BYTE, Status.MPI_SOURCE, MPI_TAG_PRINT_TOK, MPI_COMM_WORLD);
- do
- {
- MPI_Iprobe(MPI_ANY_SOURCE, MPI_TAG_TOK_RETURN, MPI_COMM_WORLD, &incomingMessage, &Status);
-
- print_incoming_data();
- }
- while(!incomingMessage);
- MPI_Recv(&nFoundbyWorker, sizeof(nFoundbyWorker), MPI_BYTE, Status.MPI_SOURCE, MPI_TAG_TOK_RETURN, MPI_COMM_WORLD, &Status);
- nfound += nFoundbyWorker.nfound;
- options->not_cmp = options->not_cmp | nFoundbyWorker.not_cmp;
- busyTasks--;
- }
- else /* someone else must have it...wait for them to return it, then give it to the task that just asked for it. */
- {
- int source = Status.MPI_SOURCE;
- int incomingMessage;
- do
- {
- MPI_Iprobe(MPI_ANY_SOURCE, MPI_TAG_TOK_RETURN, MPI_COMM_WORLD, &incomingMessage, &Status);
-
- print_incoming_data();
- }
- while(!incomingMessage);
-
-
- MPI_Recv(&nFoundbyWorker, sizeof(nFoundbyWorker), MPI_BYTE, MPI_ANY_SOURCE, MPI_TAG_TOK_RETURN, MPI_COMM_WORLD, &Status);
- nfound += nFoundbyWorker.nfound;
- options->not_cmp = options->not_cmp | nFoundbyWorker.not_cmp;
- busyTasks--;
- MPI_Send(NULL, 0, MPI_BYTE, source, MPI_TAG_PRINT_TOK, MPI_COMM_WORLD);
- }
- }
- else if(Status.MPI_TAG == MPI_TAG_TOK_RETURN)
- {
- MPI_Recv(&nFoundbyWorker, sizeof(nFoundbyWorker), MPI_BYTE, Status.MPI_SOURCE, MPI_TAG_TOK_RETURN, MPI_COMM_WORLD, &Status);
- nfound += nFoundbyWorker.nfound;
- options->not_cmp = options->not_cmp | nFoundbyWorker.not_cmp;
- busyTasks--;
- havePrintToken = 1;
- }
- else if(Status.MPI_TAG == MPI_TAG_PRINT_DATA)
- {
- char data[PRINT_DATA_MAX_SIZE+1];
- memset(data, 0, PRINT_DATA_MAX_SIZE+1);
-
- MPI_Recv(data, PRINT_DATA_MAX_SIZE, MPI_CHAR, Status.MPI_SOURCE, MPI_TAG_PRINT_DATA, MPI_COMM_WORLD, &Status);
-
- printf("%s", data);
- }
- else
- {
- printf("ph5diff-manager: ERROR!! Invalid tag (%d) received \n", Status.MPI_TAG);
- MPI_Abort(MPI_COMM_WORLD, 0);
- }
- }
-
- for(i=1; i<g_nTasks; i++)
- MPI_Send(NULL, 0, MPI_BYTE, i, MPI_TAG_END, MPI_COMM_WORLD);
-
- /* Print any final data waiting in our queue */
- print_incoming_data();
+ } /* end if */
+ h5diffdebug("done with if block\n");
- }
- h5diffdebug("done with if block\n");
-
- free(workerTasks);
+ free(workerTasks);
+}
#endif /* H5_HAVE_PARALLEL */
- }
- /* free table */
- trav_table_free (table);
+ /* free table */
+ trav_table_free(table);
- return nfound;
+ return nfound;
}
@@ -856,173 +778,157 @@ hsize_t diff_compare (hid_t file1_id,
*-------------------------------------------------------------------------
*/
-hsize_t diff (hid_t file1_id,
+hsize_t diff(hid_t file1_id,
const char *path1,
hid_t file2_id,
const char *path2,
diff_opt_t * options,
- H5G_obj_t1 type)
+ h5trav_type_t type)
{
- hid_t type1_id=(-1);
- hid_t type2_id=(-1);
- hid_t grp1_id=(-1);
- hid_t grp2_id=(-1);
+ hid_t type1_id = (-1);
+ hid_t type2_id = (-1);
+ hid_t grp1_id = (-1);
+ hid_t grp2_id = (-1);
int ret;
- H5G_stat_t sb1;
- H5G_stat_t sb2;
hsize_t nfound = 0;
- switch (type)
- {
-
- /*-------------------------------------------------------------------------
- * H5G_DATASET
- *-------------------------------------------------------------------------
- */
- case H5G_DATASET:
-
+ switch(type) {
/*-------------------------------------------------------------------------
- * verbose, always print name
+ * H5TRAV_TYPE_DATASET
*-------------------------------------------------------------------------
*/
- if (options->m_verbose)
- {
- if (print_objname(options,(hsize_t)1))
- do_print_objname ("dataset", path1, path2);
- nfound=diff_dataset(file1_id,file2_id,path1,path2,options);
- print_found(nfound);
+ case H5TRAV_TYPE_DATASET:
+ /*-------------------------------------------------------------------------
+ * verbose, always print name
+ *-------------------------------------------------------------------------
+ */
+ if(options->m_verbose) {
+ if(print_objname(options, (hsize_t)1))
+ do_print_objname("dataset", path1, path2);
+ nfound = diff_dataset(file1_id, file2_id, path1, path2, options);
+ print_found(nfound);
+ } /* end if */
+ /*-------------------------------------------------------------------------
+ * non verbose, check first if we have differences by enabling quiet mode
+ * so that printing is off, and compare again if differences found,
+ * disabling quite mode
+ *-------------------------------------------------------------------------
+ */
+ else {
+ if(options->m_quiet == 0) {
+ /* shut up temporarily */
+ options->m_quiet = 1;
+ nfound = diff_dataset(file1_id, file2_id, path1, path2, options);
+
+ /* print again */
+ options->m_quiet = 0;
+ if(nfound) {
+ if(print_objname(options,nfound))
+ do_print_objname("dataset", path1, path2);
+ nfound = diff_dataset(file1_id, file2_id, path1, path2, options);
+ print_found(nfound);
+ } /* end if */
+ } /* end if */
+ /* in quiet mode, just count differences */
+ else
+ nfound = diff_dataset(file1_id, file2_id, path1, path2, options);
+ } /* end else */
+ break;
- }
/*-------------------------------------------------------------------------
- * non verbose, check first if we have differences by enabling quiet mode
- * so that printing is off, and compare again if differences found,
- * disabling quite mode
+ * H5TRAV_TYPE_NAMED_DATATYPE
*-------------------------------------------------------------------------
*/
- else
- {
- if (options->m_quiet==0)
- {
- /* shut up temporarily */
- options->m_quiet=1;
- nfound=diff_dataset(file1_id,file2_id,path1,path2,options);
- /* print again */
- options->m_quiet=0;
- if (nfound)
- {
- if (print_objname(options,nfound))
- do_print_objname ("dataset", path1, path2);
- nfound=diff_dataset(file1_id,file2_id,path1,path2,options);
- print_found(nfound);
- }
- }
- /* in quiet mode, just count differences */
- else
- {
- nfound=diff_dataset(file1_id,file2_id,path1,path2,options);
- }
- }
-
- break;
-
- /*-------------------------------------------------------------------------
- * H5G_TYPE
- *-------------------------------------------------------------------------
- */
- case H5G_TYPE:
-
- if ((type1_id = H5Topen(file1_id, path1))<0)
- goto out;
- if ((type2_id = H5Topen(file2_id, path2))<0)
- goto out;
-
- if ((ret = H5Tequal(type1_id,type2_id))<0)
- goto out;
-
- /* if H5Tequal is > 0 then the datatypes refer to the same datatype */
- nfound = (ret>0) ? 0 : 1;
-
- if (print_objname(options,nfound))
- do_print_objname ("datatype", path1, path2);
-
- /* always print the number of differences found in verbose mode */
- if (options->m_verbose)
- print_found(nfound);
-
- /*-------------------------------------------------------------------------
- * compare attributes
- * the if condition refers to cases when the dataset is a referenced object
- *-------------------------------------------------------------------------
- */
- if (path1)
- nfound += diff_attr(type1_id,type2_id,path1,path2,options);
-
- if ( H5Tclose(type1_id)<0)
- goto out;
- if ( H5Tclose(type2_id)<0)
- goto out;
-
- break;
-
- /*-------------------------------------------------------------------------
- * H5G_GROUP
- *-------------------------------------------------------------------------
- */
- case H5G_GROUP:
+ case H5TRAV_TYPE_NAMED_DATATYPE:
+ if((type1_id = H5Topen(file1_id, path1)) < 0)
+ goto out;
+ if((type2_id = H5Topen(file2_id, path2)) < 0)
+ goto out;
+
+ if((ret = H5Tequal(type1_id, type2_id)) < 0)
+ goto out;
+
+ /* if H5Tequal is > 0 then the datatypes refer to the same datatype */
+ nfound = (ret > 0) ? 0 : 1;
+
+ if(print_objname(options,nfound))
+ do_print_objname("datatype", path1, path2);
- ret = HDstrcmp(path1, path2);
-
- /* if "path1" != "path2" then the groups are "different" */
- nfound = (ret != 0) ? 1 : 0;
+ /* always print the number of differences found in verbose mode */
+ if(options->m_verbose)
+ print_found(nfound);
+
+ /*-------------------------------------------------------------------------
+ * compare attributes
+ * the if condition refers to cases when the dataset is a referenced object
+ *-------------------------------------------------------------------------
+ */
+ if(path1)
+ nfound += diff_attr(type1_id, type2_id, path1, path2, options);
+
+ if(H5Tclose(type1_id) < 0)
+ goto out;
+ if(H5Tclose(type2_id) < 0)
+ goto out;
+ break;
+
+ /*-------------------------------------------------------------------------
+ * H5TRAV_TYPE_GROUP
+ *-------------------------------------------------------------------------
+ */
+ case H5TRAV_TYPE_GROUP:
+ ret = HDstrcmp(path1, path2);
- if(print_objname(options, nfound))
- do_print_objname("group", path1, path2);
+ /* if "path1" != "path2" then the groups are "different" */
+ nfound = (ret != 0) ? 1 : 0;
+
+ if(print_objname(options, nfound))
+ do_print_objname("group", path1, path2);
- /* always print the number of differences found in verbose mode */
- if(options->m_verbose)
- print_found(nfound);
-
- if((grp1_id = H5Gopen2(file1_id, path1, H5P_DEFAULT)) < 0)
- goto out;
- if((grp2_id = H5Gopen2(file2_id, path2, H5P_DEFAULT)) < 0)
- goto out;
+ /* always print the number of differences found in verbose mode */
+ if(options->m_verbose)
+ print_found(nfound);
+
+ if((grp1_id = H5Gopen2(file1_id, path1, H5P_DEFAULT)) < 0)
+ goto out;
+ if((grp2_id = H5Gopen2(file2_id, path2, H5P_DEFAULT)) < 0)
+ goto out;
- /*-------------------------------------------------------------------------
- * compare attributes
- * the if condition refers to cases when the dataset is a referenced object
- *-------------------------------------------------------------------------
- */
- if(path1)
- nfound += diff_attr(grp1_id, grp2_id, path1, path2, options);
-
- if(H5Gclose(grp1_id) < 0)
- goto out;
- if(H5Gclose(grp2_id) < 0)
- goto out;
-
- break;
-
-
- /*-------------------------------------------------------------------------
- * H5G_LINK
- *-------------------------------------------------------------------------
- */
- case H5G_LINK:
- {
- char *buf1 = NULL;
- char *buf2 = NULL;
+ /*-------------------------------------------------------------------------
+ * compare attributes
+ * the if condition refers to cases when the dataset is a referenced object
+ *-------------------------------------------------------------------------
+ */
+ if(path1)
+ nfound += diff_attr(grp1_id, grp2_id, path1, path2, options);
+
+ if(H5Gclose(grp1_id) < 0)
+ goto out;
+ if(H5Gclose(grp2_id) < 0)
+ goto out;
+ break;
+
- if(H5Gget_objinfo(file1_id, path1, FALSE, &sb1) < 0)
+ /*-------------------------------------------------------------------------
+ * H5TRAV_TYPE_LINK
+ *-------------------------------------------------------------------------
+ */
+ case H5TRAV_TYPE_LINK:
+ {
+ H5L_info_t li1, li2;
+ char *buf1, *buf2;
+
+ if(H5Lget_info(file1_id, path1, &li1, H5P_DEFAULT) < 0)
goto out;
- if(H5Gget_objinfo(file1_id, path1, FALSE, &sb2) < 0)
+ if(H5Lget_info(file1_id, path1, &li2, H5P_DEFAULT) < 0)
goto out;
- buf1 = HDmalloc(sb1.linklen);
- buf2 = HDmalloc(sb2.linklen);
+ buf1 = HDmalloc(li1.u.val_size);
+ buf2 = HDmalloc(li2.u.val_size);
- if(H5Lget_val(file1_id, path1, buf1, sb1.linklen, H5P_DEFAULT) < 0)
+ if(H5Lget_val(file1_id, path1, buf1, li1.u.val_size, H5P_DEFAULT) < 0)
goto out;
- if(H5Lget_val(file2_id, path2, buf2, sb2.linklen, H5P_DEFAULT) < 0)
+ if(H5Lget_val(file2_id, path2, buf2, li2.u.val_size, H5P_DEFAULT) < 0)
goto out;
ret = HDstrcmp(buf1, buf2);
@@ -1039,19 +945,16 @@ hsize_t diff (hid_t file1_id,
HDfree(buf1);
HDfree(buf2);
- }
- break;
-
- /*-------------------------------------------------------------------------
- * H5G_UDLINK
- *-------------------------------------------------------------------------
- */
- case H5G_UDLINK:
- {
- char *buf1 = NULL;
- char *buf2 = NULL;
- H5L_info_t li1;
- H5L_info_t li2;
+ }
+ break;
+
+ /*-------------------------------------------------------------------------
+ * H5TRAV_TYPE_UDLINK
+ *-------------------------------------------------------------------------
+ */
+ case H5TRAV_TYPE_UDLINK:
+ {
+ H5L_info_t li1, li2;
if(H5Lget_info(file1_id, path1, &li1, H5P_DEFAULT) < 0)
goto out;
@@ -1059,36 +962,36 @@ hsize_t diff (hid_t file1_id,
goto out;
/* Only external links will have a query function registered */
- if(li1.type == H5L_TYPE_EXTERNAL && li2.type == H5L_TYPE_EXTERNAL)
- {
- buf1 = HDmalloc (li1.u.val_size);
- buf2 = HDmalloc (li2.u.val_size);
+ if(li1.type == H5L_TYPE_EXTERNAL && li2.type == H5L_TYPE_EXTERNAL) {
+ char *buf1, *buf2;
+
+ buf1 = HDmalloc(li1.u.val_size);
+ buf2 = HDmalloc(li2.u.val_size);
- if(H5Lget_val(file1_id, path1, buf1, li1.u.val_size, H5P_DEFAULT) < 0)
- {
- HDfree (buf1); HDfree (buf2);
+ if(H5Lget_val(file1_id, path1, buf1, li1.u.val_size, H5P_DEFAULT) < 0) {
+ HDfree(buf1);
+ HDfree(buf2);
goto out;
- }
- if(H5Lget_val(file2_id, path2, buf2, li2.u.val_size, H5P_DEFAULT) < 0)
- {
- HDfree (buf1); HDfree (buf2);
+ } /* end if */
+ if(H5Lget_val(file2_id, path2, buf2, li2.u.val_size, H5P_DEFAULT) < 0) {
+ HDfree(buf1);
+ HDfree(buf2);
goto out;
- }
+ } /* end if */
/* If the buffers are the same size, compare them */
- if(li1.u.val_size == li2.u.val_size)
- {
- if(H5Lget_val(file1_id, path1, buf1, li1.u.val_size, H5P_DEFAULT) < 0)
- {
- HDfree (buf1); HDfree (buf2);
+ if(li1.u.val_size == li2.u.val_size) {
+ if(H5Lget_val(file1_id, path1, buf1, li1.u.val_size, H5P_DEFAULT) < 0) {
+ HDfree(buf1);
+ HDfree(buf2);
goto out;
- }
- if(H5Lget_val(file2_id, path2, buf2, li2.u.val_size, H5P_DEFAULT) < 0)
- {
- HDfree (buf1); HDfree (buf2);
+ } /* end if */
+ if(H5Lget_val(file2_id, path2, buf2, li2.u.val_size, H5P_DEFAULT) < 0) {
+ HDfree(buf1);
+ HDfree(buf2);
goto out;
- }
- ret = HDmemcmp (buf1, buf2, li1.u.val_size);
+ } /* end if */
+ ret = HDmemcmp(buf1, buf2, li1.u.val_size);
}
else
ret = 1;
@@ -1096,18 +999,20 @@ hsize_t diff (hid_t file1_id,
/* if "buf1" != "buf2" then the links are "different" */
nfound = (ret != 0) ? 1 : 0;
- if (print_objname (options, nfound))
- do_print_objname ("external link", path1, path2);
- }
- else
- {
- /* If one or both of these links isn't an external link, we can only
- * compare information from H5Lget_info since we don't have a query
- * function registered for them.
- *
- * If the link classes or the buffer length are not the
- * same, the links are "different"
- */
+ if(print_objname(options, nfound))
+ do_print_objname("external link", path1, path2);
+
+ HDfree(buf1);
+ HDfree(buf2);
+ } /* end if */
+ else {
+ /* If one or both of these links isn't an external link, we can only
+ * compare information from H5Lget_info since we don't have a query
+ * function registered for them.
+ *
+ * If the link classes or the buffer length are not the
+ * same, the links are "different"
+ */
if((li1.type != li2.type) || (li1.u.val_size != li2.u.val_size))
nfound = 1;
else
@@ -1115,47 +1020,37 @@ hsize_t diff (hid_t file1_id,
if (print_objname (options, nfound))
do_print_objname ("user defined link", path1, path2);
- }
+ } /* end else */
/* always print the number of differences found in verbose mode */
- if (options->m_verbose)
+ if(options->m_verbose)
print_found(nfound);
+ }
+ break;
- HDfree (buf1);
- HDfree (buf2);
- }
- break;
-
- default:
- if (options->m_verbose)
- {
- printf("Comparison not supported: <%s> and <%s> are of type %s\n",
- path1, path2, get_type(type) );
- }
- options->not_cmp=1;
- break;
- }
-
+ default:
+ if(options->m_verbose)
+ printf("Comparison not supported: <%s> and <%s> are of type %s\n",
+ path1, path2, get_type(type) );
+ options->not_cmp = 1;
+ break;
+ }
- return nfound;
+ return nfound;
out:
+ options->err_stat = 1;
- options->err_stat=1;
-
- /* close */
- /* disable error reporting */
- H5E_BEGIN_TRY
- {
- H5Tclose (type1_id);
- H5Tclose (type2_id);
- H5Gclose (grp1_id);
- H5Tclose (grp2_id);
- /* enable error reporting */
- }
- H5E_END_TRY;
-
- return nfound;
-}
+ /* close */
+ /* disable error reporting */
+ H5E_BEGIN_TRY {
+ H5Tclose(type1_id);
+ H5Tclose(type2_id);
+ H5Gclose(grp1_id);
+ H5Tclose(grp2_id);
+ /* enable error reporting */
+ } H5E_END_TRY;
+ return nfound;
+}
diff --git a/tools/lib/h5diff.h b/tools/lib/h5diff.h
index e22502f..60e96b2 100644
--- a/tools/lib/h5diff.h
+++ b/tools/lib/h5diff.h
@@ -25,18 +25,18 @@
*/
typedef struct {
- int m_quiet; /* quiet mide: no output at all */
- int m_report; /* report mode: print the data */
- int m_verbose; /* verbose mode: print the data, list of objcets, warnings */
- int d; /* delta, absolute value to compare */
- double delta; /* delta value */
- int p; /* relative error to compare*/
- double percent; /* relative error value */
- int n; /* count, compare up to count */
- hsize_t count; /* count value */
- int err_stat; /* an error ocurred (1, error, 0, no error) */
- int cmn_objs; /* do we have comparable objects */
- int not_cmp; /* are the objects comparable */
+ int m_quiet; /* quiet mide: no output at all */
+ int m_report; /* report mode: print the data */
+ int m_verbose; /* verbose mode: print the data, list of objcets, warnings */
+ int d; /* delta, absolute value to compare */
+ double delta; /* delta value */
+ int p; /* relative error to compare*/
+ double percent; /* relative error value */
+ int n; /* count, compare up to count */
+ hsize_t count; /* count value */
+ int err_stat; /* an error ocurred (1, error, 0, no error) */
+ int cmn_objs; /* do we have comparable objects */
+ int not_cmp; /* are the objects comparable */
} diff_opt_t;
@@ -89,7 +89,7 @@ hsize_t diff( hid_t file1_id,
hid_t file2_id,
const char *path2,
diff_opt_t *options,
- H5G_obj_t type );
+ h5trav_type_t type );
hsize_t diff_compare( hid_t file1_id,
const char *file1_name,
@@ -177,161 +177,160 @@ hsize_t diff_datum(void *_mem1,
hsize_t diff_float(unsigned char *mem1,
- unsigned char *mem2,
- hsize_t nelmts,
- hsize_t hyper_start,
- int rank,
- hsize_t *dims,
- hsize_t *acc,
- hsize_t *pos,
- diff_opt_t *options,
- const char *obj1,
- const char *obj2,
- int *ph);
+ unsigned char *mem2,
+ hsize_t nelmts,
+ hsize_t hyper_start,
+ int rank,
+ hsize_t *dims,
+ hsize_t *acc,
+ hsize_t *pos,
+ diff_opt_t *options,
+ const char *obj1,
+ const char *obj2,
+ int *ph);
hsize_t diff_double(unsigned char *mem1,
- unsigned char *mem2,
- hsize_t nelmts,
- hsize_t hyper_start,
- int rank,
- hsize_t *dims,
- hsize_t *acc,
- hsize_t *pos,
- diff_opt_t *options,
- const char *obj1,
- const char *obj2,
- int *ph);
+ unsigned char *mem2,
+ hsize_t nelmts,
+ hsize_t hyper_start,
+ int rank,
+ hsize_t *dims,
+ hsize_t *acc,
+ hsize_t *pos,
+ diff_opt_t *options,
+ const char *obj1,
+ const char *obj2,
+ int *ph);
hsize_t diff_schar(unsigned char *mem1,
- unsigned char *mem2,
- hsize_t nelmts,
- hsize_t hyper_start,
- int rank,
- hsize_t *dims,
- hsize_t *acc,
- hsize_t *pos,
- diff_opt_t *options,
- const char *obj1,
- const char *obj2,
- int *ph);
+ unsigned char *mem2,
+ hsize_t nelmts,
+ hsize_t hyper_start,
+ int rank,
+ hsize_t *dims,
+ hsize_t *acc,
+ hsize_t *pos,
+ diff_opt_t *options,
+ const char *obj1,
+ const char *obj2,
+ int *ph);
hsize_t diff_uchar(unsigned char *mem1,
- unsigned char *mem2,
- hsize_t nelmts,
- hsize_t hyper_start,
- int rank,
- hsize_t *dims,
- hsize_t *acc,
- hsize_t *pos,
- diff_opt_t *options,
- const char *obj1,
- const char *obj2,
- int *ph);
+ unsigned char *mem2,
+ hsize_t nelmts,
+ hsize_t hyper_start,
+ int rank,
+ hsize_t *dims,
+ hsize_t *acc,
+ hsize_t *pos,
+ diff_opt_t *options,
+ const char *obj1,
+ const char *obj2,
+ int *ph);
hsize_t diff_short(unsigned char *mem1,
- unsigned char *mem2,
- hsize_t nelmts,
- hsize_t hyper_start,
- int rank,
- hsize_t *dims,
- hsize_t *acc,
- hsize_t *pos,
- diff_opt_t *options,
- const char *obj1,
- const char *obj2,
- int *ph);
+ unsigned char *mem2,
+ hsize_t nelmts,
+ hsize_t hyper_start,
+ int rank,
+ hsize_t *dims,
+ hsize_t *acc,
+ hsize_t *pos,
+ diff_opt_t *options,
+ const char *obj1,
+ const char *obj2,
+ int *ph);
hsize_t diff_ushort(unsigned char *mem1,
- unsigned char *mem2,
- hsize_t nelmts,
- hsize_t hyper_start,
- int rank,
- hsize_t *dims,
- hsize_t *acc,
- hsize_t *pos,
- diff_opt_t *options,
- const char *obj1,
- const char *obj2,
- int *ph);
+ unsigned char *mem2,
+ hsize_t nelmts,
+ hsize_t hyper_start,
+ int rank,
+ hsize_t *dims,
+ hsize_t *acc,
+ hsize_t *pos,
+ diff_opt_t *options,
+ const char *obj1,
+ const char *obj2,
+ int *ph);
hsize_t diff_int(unsigned char *mem1,
- unsigned char *mem2,
- hsize_t nelmts,
- hsize_t hyper_start,
- int rank,
- hsize_t *dims,
- hsize_t *acc,
- hsize_t *pos,
- diff_opt_t *options,
- const char *obj1,
- const char *obj2,
- int *ph);
+ unsigned char *mem2,
+ hsize_t nelmts,
+ hsize_t hyper_start,
+ int rank,
+ hsize_t *dims,
+ hsize_t *acc,
+ hsize_t *pos,
+ diff_opt_t *options,
+ const char *obj1,
+ const char *obj2,
+ int *ph);
hsize_t diff_uint(unsigned char *mem1,
- unsigned char *mem2,
- hsize_t nelmts,
- hsize_t hyper_start,
- int rank,
- hsize_t *dims,
- hsize_t *acc,
- hsize_t *pos,
- diff_opt_t *options,
- const char *obj1,
- const char *obj2,
- int *ph);
+ unsigned char *mem2,
+ hsize_t nelmts,
+ hsize_t hyper_start,
+ int rank,
+ hsize_t *dims,
+ hsize_t *acc,
+ hsize_t *pos,
+ diff_opt_t *options,
+ const char *obj1,
+ const char *obj2,
+ int *ph);
hsize_t diff_long(unsigned char *mem1,
- unsigned char *mem2,
- hsize_t nelmts,
- hsize_t hyper_start,
- int rank,
- hsize_t *dims,
- hsize_t *acc,
- hsize_t *pos,
- diff_opt_t *options,
- const char *obj1,
- const char *obj2,
- int *ph);
+ unsigned char *mem2,
+ hsize_t nelmts,
+ hsize_t hyper_start,
+ int rank,
+ hsize_t *dims,
+ hsize_t *acc,
+ hsize_t *pos,
+ diff_opt_t *options,
+ const char *obj1,
+ const char *obj2,
+ int *ph);
hsize_t diff_ulong(unsigned char *mem1,
- unsigned char *mem2,
- hsize_t nelmts,
- hsize_t hyper_start,
- int rank,
- hsize_t *dims,
- hsize_t *acc,
- hsize_t *pos,
- diff_opt_t *options,
- const char *obj1,
- const char *obj2,
- int *ph);
+ unsigned char *mem2,
+ hsize_t nelmts,
+ hsize_t hyper_start,
+ int rank,
+ hsize_t *dims,
+ hsize_t *acc,
+ hsize_t *pos,
+ diff_opt_t *options,
+ const char *obj1,
+ const char *obj2,
+ int *ph);
hsize_t diff_llong(unsigned char *mem1,
- unsigned char *mem2,
- hsize_t nelmts,
- hsize_t hyper_start,
- int rank,
- hsize_t *dims,
- hsize_t *acc,
- hsize_t *pos,
- diff_opt_t *options,
- const char *obj1,
- const char *obj2,
- int *ph);
+ unsigned char *mem2,
+ hsize_t nelmts,
+ hsize_t hyper_start,
+ int rank,
+ hsize_t *dims,
+ hsize_t *acc,
+ hsize_t *pos,
+ diff_opt_t *options,
+ const char *obj1,
+ const char *obj2,
+ int *ph);
hsize_t diff_ullong(unsigned char *mem1,
- unsigned char *mem2,
- hsize_t nelmts,
- hsize_t hyper_start,
- int rank,
- hsize_t *dims,
- hsize_t *acc,
- hsize_t *pos,
- diff_opt_t *options,
- const char *obj1,
- const char *obj2,
- int *ph);
-
-
+ unsigned char *mem2,
+ hsize_t nelmts,
+ hsize_t hyper_start,
+ int rank,
+ hsize_t *dims,
+ hsize_t *acc,
+ hsize_t *pos,
+ diff_opt_t *options,
+ const char *obj1,
+ const char *obj2,
+ int *ph);
#endif /* H5DIFF_H__ */
+
diff --git a/tools/lib/h5diff_array.c b/tools/lib/h5diff_array.c
index 45f46ad..f83a36d 100644
--- a/tools/lib/h5diff_array.c
+++ b/tools/lib/h5diff_array.c
@@ -2178,189 +2178,165 @@ hsize_t diff_region(hid_t obj1_id,
diff_opt_t *options)
{
- hssize_t nblocks1, npoints1;
- hssize_t nblocks2, npoints2;
- H5G_stat_t sb1;
- H5G_stat_t sb2;
- hsize_t alloc_size;
- hsize_t *ptdata1;
- hsize_t *ptdata2;
- int ndims1;
- int ndims2;
- int i, j;
- haddr_t objno1, objno2; /* compact form of object's location */
- hsize_t nfound_b=0; /* block differences found */
- hsize_t nfound_p=0; /* point differences found */
-
- ndims1 = H5Sget_simple_extent_ndims(region1_id);
- ndims2 = H5Sget_simple_extent_ndims(region2_id);
-
- H5Gget_objinfo(obj1_id, ".", FALSE, &sb1);
- H5Gget_objinfo(obj2_id, ".", FALSE, &sb2);
-
- objno1 = (haddr_t)sb1.objno[0] | ((haddr_t)sb1.objno[1] << (8 * sizeof(long)));
- objno2 = (haddr_t)sb2.objno[0] | ((haddr_t)sb2.objno[1] << (8 * sizeof(long)));
-
-/*
- * These two functions fail if the region does not have blocks or points,
- * respectively. They do not currently know how to translate from one to
- * the other.
- */
- H5E_BEGIN_TRY {
- nblocks1 = H5Sget_select_hyper_nblocks(region1_id);
- nblocks2 = H5Sget_select_hyper_nblocks(region2_id);
-
- npoints1 = H5Sget_select_elem_npoints(region1_id);
- npoints2 = H5Sget_select_elem_npoints(region2_id);
- } H5E_END_TRY;
-
- if (nblocks1!=nblocks2 || npoints1!=npoints2 || ndims1!=ndims2)
- {
- options->not_cmp=1;
- return 0;
- }
-
-/*-------------------------------------------------------------------------
- * compare block information
- *-------------------------------------------------------------------------
- */
- if (nblocks1 > 0)
- {
-
- alloc_size = nblocks1 * ndims1 * 2 * sizeof(ptdata1[0]);
- assert(alloc_size == (hsize_t)((size_t)alloc_size)); /*check for overflow*/
-
- ptdata1 = malloc((size_t)alloc_size);
- H5_CHECK_OVERFLOW(nblocks1, hssize_t, hsize_t);
- H5Sget_select_hyper_blocklist(region1_id, (hsize_t)0, (hsize_t)nblocks1, ptdata1);
-
- ptdata2 = malloc((size_t)alloc_size);
- H5_CHECK_OVERFLOW(nblocks2, hssize_t, hsize_t);
- H5Sget_select_hyper_blocklist(region2_id, (hsize_t)0, (hsize_t)nblocks2, ptdata2);
-
- for (i = 0; i < nblocks1; i++)
- {
- /* start coordinates and opposite corner */
- for (j = 0; j < ndims1; j++)
- {
- hsize_t start1, start2, end1, end2;
- start1 = ptdata1[i * 2 * ndims1 + j];
- start2 = ptdata2[i * 2 * ndims1 + j];
- end1 = ptdata1[i * 2 * ndims1 + j + ndims1];
- end2 = ptdata2[i * 2 * ndims1 + j + ndims1];
- if (start1 != start2 || end1 != end2)
- {
- nfound_b++;
+ hssize_t nblocks1, npoints1;
+ hssize_t nblocks2, npoints2;
+ hsize_t alloc_size;
+ hsize_t *ptdata1;
+ hsize_t *ptdata2;
+ int ndims1;
+ int ndims2;
+ int i, j;
+ hsize_t nfound_b = 0; /* block differences found */
+ hsize_t nfound_p = 0; /* point differences found */
+
+ ndims1 = H5Sget_simple_extent_ndims(region1_id);
+ ndims2 = H5Sget_simple_extent_ndims(region2_id);
+
+ /*
+ * These two functions fail if the region does not have blocks or points,
+ * respectively. They do not currently know how to translate from one to
+ * the other.
+ */
+ H5E_BEGIN_TRY {
+ nblocks1 = H5Sget_select_hyper_nblocks(region1_id);
+ nblocks2 = H5Sget_select_hyper_nblocks(region2_id);
+
+ npoints1 = H5Sget_select_elem_npoints(region1_id);
+ npoints2 = H5Sget_select_elem_npoints(region2_id);
+ } H5E_END_TRY;
+
+ if(nblocks1 != nblocks2 || npoints1 != npoints2 || ndims1 != ndims2) {
+ options->not_cmp = 1;
+ return 0;
}
- }
- }
+ /*-------------------------------------------------------------------------
+ * compare block information
+ *-------------------------------------------------------------------------
+ */
+ if(nblocks1 > 0) {
+ alloc_size = nblocks1 * ndims1 * 2 * sizeof(ptdata1[0]);
+ assert(alloc_size == (hsize_t)((size_t)alloc_size)); /*check for overflow*/
+
+ ptdata1 = malloc((size_t)alloc_size);
+ H5_CHECK_OVERFLOW(nblocks1, hssize_t, hsize_t);
+ H5Sget_select_hyper_blocklist(region1_id, (hsize_t)0, (hsize_t)nblocks1, ptdata1);
+
+ ptdata2 = malloc((size_t)alloc_size);
+ H5_CHECK_OVERFLOW(nblocks2, hssize_t, hsize_t);
+ H5Sget_select_hyper_blocklist(region2_id, (hsize_t)0, (hsize_t)nblocks2, ptdata2);
+
+ for (i = 0; i < nblocks1; i++) {
+ /* start coordinates and opposite corner */
+ for (j = 0; j < ndims1; j++) {
+ hsize_t start1, start2, end1, end2;
+
+ start1 = ptdata1[i * 2 * ndims1 + j];
+ start2 = ptdata2[i * 2 * ndims1 + j];
+ end1 = ptdata1[i * 2 * ndims1 + j + ndims1];
+ end2 = ptdata2[i * 2 * ndims1 + j + ndims1];
+ if (start1 != start2 || end1 != end2)
+ nfound_b++;
+ }
+ }
- /* print differences if found */
- if (nfound_b && options->m_verbose)
- {
- parallel_print("Referenced dataset %lu %lu\n",
- (unsigned long)objno1,(unsigned long)objno2);
- parallel_print("------------------------------------------------------------\n");
-
- parallel_print("Region blocks\n");
- for (i = 0; i < nblocks1; i++)
- {
- parallel_print("block #%d", i);
- print_region_block(i, ptdata1, ndims1);
- print_region_block(i, ptdata2, ndims1);
- parallel_print("\n");
-
- }
- }
- HDfree(ptdata1);
- HDfree(ptdata2);
- }
+ /* print differences if found */
+ if (nfound_b && options->m_verbose) {
+ H5O_info_t oi1, oi2;
-/*-------------------------------------------------------------------------
- * compare point information
- *-------------------------------------------------------------------------
- */
+ H5Oget_info(obj1_id, ".", &oi1, H5P_DEFAULT);
+ H5Oget_info(obj2_id, ".", &oi2, H5P_DEFAULT);
- if (npoints1 > 0)
- {
- alloc_size = npoints1 * ndims1 * sizeof(ptdata1[0]);
- assert(alloc_size == (hsize_t)((size_t)alloc_size)); /*check for overflow*/
-
- ptdata1 = malloc((size_t)alloc_size);
- H5_CHECK_OVERFLOW(npoints1,hssize_t,hsize_t);
- H5Sget_select_elem_pointlist(region1_id, (hsize_t)0, (hsize_t)npoints1, ptdata1);
+ parallel_print("Referenced dataset %lu %lu\n",
+ (unsigned long)oi1.addr, (unsigned long)oi2.addr);
+ parallel_print("------------------------------------------------------------\n");
- ptdata2 = malloc((size_t)alloc_size);
- H5_CHECK_OVERFLOW(npoints1,hssize_t,hsize_t);
- H5Sget_select_elem_pointlist(region2_id, (hsize_t)0, (hsize_t)npoints2, ptdata2);
+ parallel_print("Region blocks\n");
+ for (i = 0; i < nblocks1; i++) {
+ parallel_print("block #%d", i);
+ print_region_block(i, ptdata1, ndims1);
+ print_region_block(i, ptdata2, ndims1);
+ parallel_print("\n");
+ }
+ }
- for (i = 0; i < npoints1; i++)
- {
- hsize_t pt1, pt2;
+ HDfree(ptdata1);
+ HDfree(ptdata2);
+ }
- for (j = 0; j < ndims1; j++)
- {
- pt1 = ptdata1[i * ndims1 + j];
- pt2 = ptdata2[i * ndims1 + j];
- if (pt1 != pt2)
- nfound_p++;
- }
- }
+ /*-------------------------------------------------------------------------
+ * compare point information
+ *-------------------------------------------------------------------------
+ */
+ if(npoints1 > 0) {
+ alloc_size = npoints1 * ndims1 * sizeof(ptdata1[0]);
+ assert(alloc_size == (hsize_t)((size_t)alloc_size)); /*check for overflow*/
+
+ ptdata1 = malloc((size_t)alloc_size);
+ H5_CHECK_OVERFLOW(npoints1,hssize_t,hsize_t);
+ H5Sget_select_elem_pointlist(region1_id, (hsize_t)0, (hsize_t)npoints1, ptdata1);
+
+ ptdata2 = malloc((size_t)alloc_size);
+ H5_CHECK_OVERFLOW(npoints1,hssize_t,hsize_t);
+ H5Sget_select_elem_pointlist(region2_id, (hsize_t)0, (hsize_t)npoints2, ptdata2);
+
+ for(i = 0; i < npoints1; i++) {
+ hsize_t pt1, pt2;
+
+ for(j = 0; j < ndims1; j++) {
+ pt1 = ptdata1[i * ndims1 + j];
+ pt2 = ptdata2[i * ndims1 + j];
+ if(pt1 != pt2)
+ nfound_p++;
+ }
+ }
- if (nfound_p && options->m_verbose)
- {
- parallel_print("Region points\n");
- for (i = 0; i < npoints1; i++)
- {
- hsize_t pt1, pt2;
- int diff_data = 0;
- for (j = 0; j < ndims1; j++)
- {
- pt1 = ptdata1[i * ndims1 + j];
- pt2 = ptdata2[i * ndims1 + j];
- if (pt1 != pt2)
- {
- diff_data = 1;
- break;
- }
- }
- if (diff_data)
- {
- parallel_print("point #%d", i);
- print_points(i, ptdata1, ndims1);
- print_points(i, ptdata2, ndims1);
- parallel_print("\n");
- }
- }
- }
+ if(nfound_p && options->m_verbose) {
+ parallel_print("Region points\n");
+ for(i = 0; i < npoints1; i++) {
+ hsize_t pt1, pt2;
+ int diff_data = 0;
+
+ for(j = 0; j < ndims1; j++) {
+ pt1 = ptdata1[i * ndims1 + j];
+ pt2 = ptdata2[i * ndims1 + j];
+ if(pt1 != pt2) {
+ diff_data = 1;
+ break;
+ }
+ }
+ if(diff_data) {
+ parallel_print("point #%d", i);
+ print_points(i, ptdata1, ndims1);
+ print_points(i, ptdata2, ndims1);
+ parallel_print("\n");
+ }
+ }
+ }
#if defined (H5DIFF_DEBUG)
- for (i = 0; i < npoints1; i++)
- {
- int j;
+ for (i = 0; i < npoints1; i++) {
+ int j;
- parallel_print("%sPt%lu: " ,
- i ? "," : "",
- (unsigned long)i);
+ parallel_print("%sPt%lu: " , i ? "," : "", (unsigned long)i);
- for (j = 0; j < ndims1; j++)
- parallel_print("%s%lu", j ? "," : "(",
- (unsigned long)(ptdata1[i * ndims1 + j]));
+ for (j = 0; j < ndims1; j++)
+ parallel_print("%s%lu", j ? "," : "(",
+ (unsigned long)(ptdata1[i * ndims1 + j]));
- parallel_print(")");
- }
+ parallel_print(")");
+ }
#endif
- HDfree(ptdata1);
- HDfree(ptdata2);
- }
+ HDfree(ptdata1);
+ HDfree(ptdata2);
+ }
- nfound_b = nfound_b/ndims1;
- nfound_p = nfound_p/ndims1;
- return (nfound_p + nfound_b);
+ nfound_b = nfound_b/ndims1;
+ nfound_p = nfound_p/ndims1;
+ return (nfound_p + nfound_b);
}
diff --git a/tools/lib/h5tools.c b/tools/lib/h5tools.c
index 50bc6cd..44154cd 100644
--- a/tools/lib/h5tools.c
+++ b/tools/lib/h5tools.c
@@ -128,12 +128,12 @@ void
h5tools_close(void)
{
if (h5tools_init_g) {
- if (rawdatastream && rawdatastream != stdout) {
- if (fclose(rawdatastream))
- perror("closing rawdatastream");
- else
- rawdatastream = NULL;
- }
+ if (rawdatastream && rawdatastream != stdout) {
+ if (fclose(rawdatastream))
+ perror("closing rawdatastream");
+ else
+ rawdatastream = NULL;
+ }
/* Clean up the reference path table, if it's been used */
term_ref_path_table();
@@ -141,7 +141,7 @@ h5tools_close(void)
/* Shut down the library */
H5close();
- h5tools_init_g = 0;
+ h5tools_init_g = 0;
}
}
@@ -554,152 +554,150 @@ h5tools_dump_simple_data(FILE *stream, const h5tool_format_t *info, hid_t contai
*to the ctx->size_last_dim. */
/* binary dump */
- if (bin_output)
- {
- do_bin_output(stream,nelmts,type,_mem);
- bin_output=0;
- }
- else
- {
- /* Setup */
- memset(&buffer, 0, sizeof(h5tools_str_t));
- size = H5Tget_size(type);
+ if(bin_output) {
+ do_bin_output(stream, nelmts, type, _mem);
+ bin_output = 0;
+ } /* end if */
+ else {
+ /* Setup */
+ HDmemset(&buffer, 0, sizeof(h5tools_str_t));
+ size = H5Tget_size(type);
- if (info->line_ncols > 0)
- ncols = info->line_ncols;
+ if(info->line_ncols > 0)
+ ncols = info->line_ncols;
- /* pass to the prefix in h5tools_simple_prefix the total position
- instead of the current stripmine position i; this is necessary
- to print the array indices */
- curr_pos = ctx->sm_pos;
+ /* pass to the prefix in h5tools_simple_prefix the total position
+ * instead of the current stripmine position i; this is necessary
+ * to print the array indices
+ */
+ curr_pos = ctx->sm_pos;
- h5tools_simple_prefix(stream, info, ctx, curr_pos, 0);
+ h5tools_simple_prefix(stream, info, ctx, curr_pos, 0);
- for (i = 0; i < nelmts; i++, ctx->cur_elmt++, elmt_counter++) {
- /* Render the element */
- h5tools_str_reset(&buffer);
- h5tools_str_sprint(&buffer, info, container, type, mem + i * size, ctx);
+ for (i = 0; i < nelmts; i++, ctx->cur_elmt++, elmt_counter++) {
+ /* Render the element */
+ h5tools_str_reset(&buffer);
+ h5tools_str_sprint(&buffer, info, container, type, mem + i * size, ctx);
- if (i + 1 < nelmts || (flags & END_OF_DATA) == 0)
- h5tools_str_append(&buffer, "%s", OPT(info->elmt_suf1, ","));
+ if (i + 1 < nelmts || (flags & END_OF_DATA) == 0)
+ h5tools_str_append(&buffer, "%s", OPT(info->elmt_suf1, ","));
- s = h5tools_str_fmt(&buffer, 0, "%s");
+ s = h5tools_str_fmt(&buffer, 0, "%s");
- /*
- * If the element would split on multiple lines if printed at our
- * current location...
- */
- if (info->line_multi_new == 1 &&
- (ctx->cur_column + h5tools_ncols(s) +
- strlen(OPT(info->elmt_suf2, " ")) +
- strlen(OPT(info->line_suf, ""))) > ncols) {
- if (ctx->prev_multiline) {
- /*
- * ... and the previous element also occupied more than one
- * line, then start this element at the beginning of a line.
- */
- ctx->need_prefix = TRUE;
- } else if ((ctx->prev_prefix_len + h5tools_ncols(s) +
- strlen(OPT(info->elmt_suf2, " ")) +
- strlen(OPT(info->line_suf, ""))) <= ncols) {
- /*
- * ...but *could* fit on one line otherwise, then we
- * should end the current line and start this element on its
- * own line.
- */
- ctx->need_prefix = TRUE;
+ /*
+ * If the element would split on multiple lines if printed at our
+ * current location...
+ */
+ if (info->line_multi_new == 1 &&
+ (ctx->cur_column + h5tools_ncols(s) +
+ strlen(OPT(info->elmt_suf2, " ")) +
+ strlen(OPT(info->line_suf, ""))) > ncols) {
+ if (ctx->prev_multiline) {
+ /*
+ * ... and the previous element also occupied more than one
+ * line, then start this element at the beginning of a line.
+ */
+ ctx->need_prefix = TRUE;
+ } else if ((ctx->prev_prefix_len + h5tools_ncols(s) +
+ strlen(OPT(info->elmt_suf2, " ")) +
+ strlen(OPT(info->line_suf, ""))) <= ncols) {
+ /*
+ * ...but *could* fit on one line otherwise, then we
+ * should end the current line and start this element on its
+ * own line.
+ */
+ ctx->need_prefix = TRUE;
+ }
}
- }
- /*
- * We need to break after each row of a dimension---> we should
- * break at the end of the each last dimension well that is the
- * way the dumper did it before
- */
- if (info->arr_linebreak && ctx->cur_elmt) {
- if (ctx->size_last_dim && (ctx->cur_elmt % ctx->size_last_dim) == 0)
- ctx->need_prefix = TRUE;
+ /*
+ * We need to break after each row of a dimension---> we should
+ * break at the end of the each last dimension well that is the
+ * way the dumper did it before
+ */
+ if (info->arr_linebreak && ctx->cur_elmt) {
+ if (ctx->size_last_dim && (ctx->cur_elmt % ctx->size_last_dim) == 0)
+ ctx->need_prefix = TRUE;
- if ((hsize_t)elmt_counter == ctx->size_last_dim) {
- ctx->need_prefix = TRUE;
- elmt_counter = 0;
+ if ((hsize_t)elmt_counter == ctx->size_last_dim) {
+ ctx->need_prefix = TRUE;
+ elmt_counter = 0;
+ }
}
- }
-
- /*
- * If the previous element occupied multiple lines and this element
- * is too long to fit on a line then start this element at the
- * beginning of the line.
- */
- if (info->line_multi_new == 1 && ctx->prev_multiline &&
- (ctx->cur_column + h5tools_ncols(s) +
- strlen(OPT(info->elmt_suf2, " ")) +
- strlen(OPT(info->line_suf, ""))) > ncols)
- ctx->need_prefix = TRUE;
-
- /*
- * If too many elements have already been printed then we need to
- * start a new line.
- */
- if (info->line_per_line > 0 && ctx->cur_elmt >= info->line_per_line)
- ctx->need_prefix = TRUE;
- /*
- * Each OPTIONAL_LINE_BREAK embedded in the rendered string can cause
- * the data to split across multiple lines. We display the sections
- * one-at a time.
- */
- for (secnum = 0, multiline = 0;
- (section = strtok(secnum ? NULL : s, OPTIONAL_LINE_BREAK));
- secnum++) {
/*
- * If the current section plus possible suffix and end-of-line
- * information would cause the output to wrap then we need to
- * start a new line.
+ * If the previous element occupied multiple lines and this element
+ * is too long to fit on a line then start this element at the
+ * beginning of the line.
*/
+ if (info->line_multi_new == 1 && ctx->prev_multiline &&
+ (ctx->cur_column + h5tools_ncols(s) +
+ strlen(OPT(info->elmt_suf2, " ")) +
+ strlen(OPT(info->line_suf, ""))) > ncols)
+ ctx->need_prefix = TRUE;
/*
- * Added the info->skip_first because the dumper does not want
- * this check to happen for the first line
+ * If too many elements have already been printed then we need to
+ * start a new line.
*/
- if ((!info->skip_first || i) &&
- (ctx->cur_column + strlen(section) +
- strlen(OPT(info->elmt_suf2, " ")) +
- strlen(OPT(info->line_suf, ""))) > ncols)
- ctx->need_prefix = 1;
+ if (info->line_per_line > 0 && ctx->cur_elmt >= info->line_per_line)
+ ctx->need_prefix = TRUE;
/*
- * Print the prefix or separate the beginning of this element
- * from the previous element.
+ * Each OPTIONAL_LINE_BREAK embedded in the rendered string can cause
+ * the data to split across multiple lines. We display the sections
+ * one-at a time.
*/
- if (ctx->need_prefix) {
- if (secnum)
- multiline++;
-
- /* pass to the prefix in h5tools_simple_prefix the total position
- instead of the current stripmine position i; this is necessary
- to print the array indices */
- curr_pos = ctx->sm_pos + i;
-
- h5tools_simple_prefix(stream, info, ctx, curr_pos, secnum);
- } else if ((i || ctx->continuation) && secnum == 0) {
- fputs(OPT(info->elmt_suf2, " "), stream);
- ctx->cur_column += strlen(OPT(info->elmt_suf2, " "));
- }
+ for (secnum = 0, multiline = 0;
+ (section = strtok(secnum ? NULL : s, OPTIONAL_LINE_BREAK));
+ secnum++) {
+ /*
+ * If the current section plus possible suffix and end-of-line
+ * information would cause the output to wrap then we need to
+ * start a new line.
+ */
- /* Print the section */
- fputs(section, stream);
- ctx->cur_column += strlen(section);
- }
+ /*
+ * Added the info->skip_first because the dumper does not want
+ * this check to happen for the first line
+ */
+ if ((!info->skip_first || i) &&
+ (ctx->cur_column + strlen(section) +
+ strlen(OPT(info->elmt_suf2, " ")) +
+ strlen(OPT(info->line_suf, ""))) > ncols)
+ ctx->need_prefix = 1;
- ctx->prev_multiline = multiline;
- }
+ /*
+ * Print the prefix or separate the beginning of this element
+ * from the previous element.
+ */
+ if (ctx->need_prefix) {
+ if (secnum)
+ multiline++;
+
+ /* pass to the prefix in h5tools_simple_prefix the total
+ * position instead of the current stripmine position i;
+ * this is necessary to print the array indices
+ */
+ curr_pos = ctx->sm_pos + i;
+
+ h5tools_simple_prefix(stream, info, ctx, curr_pos, secnum);
+ } else if ((i || ctx->continuation) && secnum == 0) {
+ fputs(OPT(info->elmt_suf2, " "), stream);
+ ctx->cur_column += strlen(OPT(info->elmt_suf2, " "));
+ }
- h5tools_str_close(&buffer);
+ /* Print the section */
+ fputs(section, stream);
+ ctx->cur_column += strlen(section);
+ }
- }/* else bin */
+ ctx->prev_multiline = multiline;
+ }
+ h5tools_str_close(&buffer);
+ }/* else bin */
}
diff --git a/tools/lib/h5tools_ref.c b/tools/lib/h5tools_ref.c
index 0b17b41..715d05e 100644
--- a/tools/lib/h5tools_ref.c
+++ b/tools/lib/h5tools_ref.c
@@ -49,49 +49,8 @@ extern int d_status;
static int ref_path_table_put(const char *, haddr_t objno);
static hbool_t ref_path_table_find(haddr_t objno);
-
-/*-------------------------------------------------------------------------
- * Function: init_ref_path_table
- *
- * Purpose: Enter the root group ("/") into the path table
- *
- * Return: Non-negative on success, negative on failure
- *
- * Programmer: Quincey Koziol
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
-int
-init_ref_path_table(hid_t fid)
-{
- H5G_stat_t sb;
- haddr_t objno; /* Compact form of object's location */
- char *root_path;
-
- /* Set file ID for later queries (XXX: this should be fixed) */
- thefile = fid;
-
- /* Create skip list to store reference path information */
- if((ref_path_table = H5SL_create(H5SL_TYPE_HADDR, 0.5, (size_t)16))==NULL)
- return (-1);
-
- if((root_path = HDstrdup("/")) == NULL)
- return (-1);
-
- if(H5Gget_objinfo(fid, "/", TRUE, &sb)<0) {
- /* fatal error? */
- HDfree(root_path);
- return (-1);
- }
- objno = (haddr_t)sb.objno[0] | ((haddr_t)sb.objno[1] << (8 * sizeof(long)));
-
- /* Insert into table (takes ownership of path) */
- ref_path_table_put(root_path, objno);
-
- return(0);
-}
+static herr_t fill_ref_path_table_cb(hid_t group, const char *obj_name,
+ const H5L_info_t *linfo, void *op_data);
/*-------------------------------------------------------------------------
* Function: free_ref_path_info
@@ -158,35 +117,31 @@ term_ref_path_table(void)
haddr_t
ref_path_table_lookup(const char *thepath)
{
- H5G_stat_t sb;
- haddr_t objno; /* Compact form of object's location */
-
- /* Check for external link first, so we don't return the OID of an object in another file */
- if(H5Gget_objinfo(thefile, thepath, FALSE, &sb)<0)
- return HADDR_UNDEF;
- if(sb.type == H5G_LINK) {
- /* Get object ID for object at path */
- /* (If the object is not a soft link, we've already retrieved the
- * correct information and don't have to perform this call. -QAK
- */
- if(H5Gget_objinfo(thefile, thepath, TRUE, &sb)<0)
- /* fatal error ? */
+ H5O_info_t oi;
+
+ /* Allow lookups on the root group, even though it doesn't have any link info */
+ if(HDstrcmp(thepath, "/")) {
+ H5L_info_t li;
+
+ /* Check for external link first, so we don't return the OID of an object in another file */
+ if(H5Lget_info(thefile, thepath, &li, H5P_DEFAULT) < 0)
+ return HADDR_UNDEF;
+
+ /* UD links can't be followed, so they always "dangle" like soft links. */
+ if(li.type >= H5L_TYPE_UD_MIN)
return HADDR_UNDEF;
- } else if(sb.type == H5G_UDLINK)
- {
- /* UD links can't be followed, so they always "dangle" like
- * soft links.
- */
- return HADDR_UNDEF;
} /* end if */
- objno = (haddr_t)sb.objno[0] | ((haddr_t)sb.objno[1] << (8 * sizeof(long)));
+ /* Get the object info now */
+ /* (returns failure for dangling soft links) */
+ if(H5Oget_info(thefile, thepath, &oi, H5P_DEFAULT) < 0)
+ return HADDR_UNDEF;
/* All existing objects in the file had better be in the table */
- HDassert(ref_path_table_find(objno));
+ HDassert(ref_path_table_find(oi.addr));
/* Return OID */
- return(objno);
+ return(oi.addr);
}
/*-------------------------------------------------------------------------
@@ -325,6 +280,65 @@ lookup_ref_path(haddr_t ref)
}
/*-------------------------------------------------------------------------
+ * Function: fill_ref_path_table_cb
+ *
+ * Purpose: Called by interator to create references for
+ * all objects and enter them in the table.
+ *
+ * Return: Error status.
+ *
+ * Programmer: REMcG
+ *
+ * Modifications:
+ *
+ *-------------------------------------------------------------------------
+ */
+static herr_t
+fill_ref_path_table_cb(hid_t group, const char *obj_name, const H5L_info_t *linfo,
+ void *op_data)
+{
+ if(linfo->type == H5L_TYPE_HARD) {
+ H5O_info_t oinfo;
+
+ H5Oget_info(group, obj_name, &oinfo, H5P_DEFAULT);
+
+ /* Check if the object is already in the path table */
+ if(!ref_path_table_find(oinfo.addr)) {
+ const char *obj_prefix = (const char *)op_data;
+ size_t tmp_len;
+ char *thepath;
+
+ /* Compute length for this object's path */
+ tmp_len = HDstrlen(obj_prefix) + HDstrlen(obj_name) + 2;
+
+ /* Allocate room for the path for this object */
+ if((thepath = (char *)HDmalloc(tmp_len)) == NULL)
+ return FAIL;
+
+ /* Build the name for this object */
+ HDstrcpy(thepath, obj_prefix);
+ HDstrcat(thepath, "/");
+ HDstrcat(thepath, obj_name);
+
+ /* Insert the object into the path table (takes ownership of the path) */
+ ref_path_table_put(thepath, oinfo.addr);
+
+ if(oinfo.type == H5O_TYPE_GROUP) {
+ /* Iterate over objects in this group, using this group's
+ * name as their prefix
+ */
+ if(H5Literate(group, obj_name, H5_INDEX_NAME, H5_ITER_INC, NULL, fill_ref_path_table_cb, thepath, H5P_DEFAULT) < 0) {
+ error_msg(progname, "unable to dump group \"%s\"\n", thepath);
+ d_status = EXIT_FAILURE;
+ } /* end if */
+ } /* end if */
+ } /* end if */
+ } /* end if */
+
+ return 0;
+}
+
+/*-------------------------------------------------------------------------
* Function: fill_ref_path_table
*
* Purpose: Called by interator to create references for
@@ -339,46 +353,32 @@ lookup_ref_path(haddr_t ref)
*-------------------------------------------------------------------------
*/
herr_t
-fill_ref_path_table(hid_t group, const char *obj_name, const H5L_info_t UNUSED *linfo,
- void *op_data)
+fill_ref_path_table(hid_t fid)
{
- const char *obj_prefix = (const char *)op_data;
- H5G_stat_t statbuf;
- haddr_t objno; /* Compact form of object's location */
-
- H5Gget_objinfo(group, obj_name, FALSE, &statbuf);
- objno = (haddr_t)statbuf.objno[0] | ((haddr_t)statbuf.objno[1] << (8 * sizeof(long)));
-
- /* Check if the object is in the path table */
- if (!ref_path_table_find(objno)) {
- size_t tmp_len;
- char *thepath;
-
- /* Compute length for this object's path */
- tmp_len = HDstrlen(obj_prefix) + HDstrlen(obj_name) + 2;
-
- /* Allocate room for the path for this object */
- if ((thepath = (char *) HDmalloc(tmp_len)) == NULL)
- return FAIL;
-
- /* Build the name for this object */
- HDstrcpy(thepath, obj_prefix);
- HDstrcat(thepath, "/");
- HDstrcat(thepath, obj_name);
-
- /* Insert the object into the path table */
- ref_path_table_put(thepath, objno);
-
- if(statbuf.type == H5G_GROUP) {
- /* Iterate over objects in this group, using this group's
- * name as their prefix
- */
- if(H5Literate(group, obj_name, H5_INDEX_NAME, H5_ITER_INC, NULL, fill_ref_path_table, thepath, H5P_DEFAULT) < 0) {
- error_msg(progname, "unable to dump group \"%s\"\n", obj_name);
- d_status = EXIT_FAILURE;
- }
- }
- }
+ H5O_info_t oinfo;
+ char *root_path;
+
+ /* Set file ID for later queries (XXX: this should be fixed) */
+ thefile = fid;
+
+ /* Create skip list to store reference path information */
+ if((ref_path_table = H5SL_create(H5SL_TYPE_HADDR, 0.5, (size_t)16))==NULL)
+ return (-1);
+
+ /* Build the name for root group */
+ root_path = HDstrdup("/");
+
+ /* Get info for root group */
+ H5Oget_info(fid, root_path, &oinfo, H5P_DEFAULT);
+
+ /* Insert the root group into the path table (takes ownership of path) */
+ ref_path_table_put(root_path, oinfo.addr);
+
+ /* Iterate over objects in this file */
+ if(H5Literate(fid, root_path, H5_INDEX_NAME, H5_ITER_INC, NULL, fill_ref_path_table_cb, (void *)"", H5P_DEFAULT) < 0) {
+ error_msg(progname, "unable to dump root group\n");
+ d_status = EXIT_FAILURE;
+ } /* end if */
return 0;
}
diff --git a/tools/lib/h5tools_ref.h b/tools/lib/h5tools_ref.h
index d996114..567ca4b 100644
--- a/tools/lib/h5tools_ref.h
+++ b/tools/lib/h5tools_ref.h
@@ -22,14 +22,13 @@
extern "C" {
#endif
-int init_ref_path_table(hid_t fid);
+herr_t fill_ref_path_table(hid_t fid);
const char *lookup_ref_path(haddr_t ref);
-herr_t fill_ref_path_table(hid_t, const char *, const H5L_info_t *, void *);
int get_next_xid(void);
-haddr_t get_fake_xid (void);
-haddr_t ref_path_table_lookup(const char *);
-haddr_t ref_path_table_gen_fake(const char *);
-int term_ref_path_table(void);
+haddr_t get_fake_xid(void);
+haddr_t ref_path_table_lookup(const char *);
+haddr_t ref_path_table_gen_fake(const char *);
+int term_ref_path_table(void);
#ifdef __cplusplus
}
diff --git a/tools/lib/h5tools_str.c b/tools/lib/h5tools_str.c
index 737c68a..f877baa 100644
--- a/tools/lib/h5tools_str.c
+++ b/tools/lib/h5tools_str.c
@@ -308,12 +308,12 @@ h5tools_str_fmt(h5tools_str_t *str/*in,out*/, size_t start, const char *fmt)
*/
char *
h5tools_str_prefix(h5tools_str_t *str/*in,out*/, const h5tool_format_t *info,
- hsize_t elmtno, int ndims, hsize_t min_idx[],
+ hsize_t elmtno, unsigned ndims, hsize_t min_idx[],
hsize_t max_idx[], h5tools_context_t *ctx)
{
hsize_t p_prod[H5S_MAX_RANK];
size_t i = 0;
- hsize_t curr_pos=elmtno;
+ hsize_t curr_pos = elmtno;
h5tools_str_reset(str);
@@ -325,10 +325,9 @@ h5tools_str_prefix(h5tools_str_t *str/*in,out*/, const h5tool_format_t *info,
for (i = ndims - 1, p_prod[ndims - 1] = 1; i > 0; --i)
p_prod[i - 1] = (max_idx[i] - min_idx[i]) * p_prod[i];
- for ( i = 0; i < (size_t)ndims; i++)
- {
- ctx->pos[i] = curr_pos/ctx->acc[i];
- curr_pos -= ctx->acc[i]*ctx->pos[i];
+ for ( i = 0; i < (size_t)ndims; i++) {
+ ctx->pos[i] = curr_pos/ctx->acc[i];
+ curr_pos -= ctx->acc[i]*ctx->pos[i];
}
assert( curr_pos == 0 );
@@ -580,31 +579,22 @@ h5tools_str_sprint(h5tools_str_t *str, const h5tool_format_t *info, hid_t contai
char *cp_vp = (char *)vp;
hid_t memb, obj, region;
unsigned nmembs;
- int otype;
static char fmt_llong[8], fmt_ullong[8];
H5T_str_t pad;
- H5G_stat_t sb;
/*
* some tempvars to store the value before we append it to the string to
* get rid of the memory alignment problem
*/
- double tempdouble;
- float tempfloat;
unsigned long_long tempullong;
long_long templlong;
unsigned long tempulong;
long templong;
unsigned int tempuint;
int tempint;
- unsigned short tempushort;
- short tempshort;
-#if H5_SIZEOF_LONG_DOUBLE !=0
- long double templdouble;
-#endif
/* Build default formats for long long types */
- if (!fmt_llong[0]) {
+ if(!fmt_llong[0]) {
sprintf(fmt_llong, "%%%sd", H5_PRINTF_LL_WIDTH);
sprintf(fmt_ullong, "%%%su", H5_PRINTF_LL_WIDTH);
}
@@ -612,29 +602,37 @@ h5tools_str_sprint(h5tools_str_t *str, const h5tool_format_t *info, hid_t contai
/* Append value depending on data type */
start = h5tools_str_len(str);
- if (info->raw) {
+ if(info->raw) {
size_t i;
+
n = H5Tget_size(type);
if (1==n) {
h5tools_str_append(str, OPT(info->fmt_raw, "0x%02x"), ucp_vp[0]);
} else {
- for (i = 0; i < n; i++) {
- if (i) h5tools_str_append(str, ":");
- h5tools_str_append(str, OPT(info->fmt_raw, "%02x"), ucp_vp[i]);
+ for(i = 0; i < n; i++) {
+ if(i)
+ h5tools_str_append(str, ":");
+ h5tools_str_append(str, OPT(info->fmt_raw, "%02x"), ucp_vp[i]);
}
}
} else if (H5Tequal(type, H5T_NATIVE_FLOAT)) {
- memcpy(&tempfloat, vp, sizeof(float));
+ float tempfloat;
+
+ HDmemcpy(&tempfloat, vp, sizeof(float));
h5tools_str_append(str, OPT(info->fmt_float, "%g"), tempfloat);
} else if (H5Tequal(type, H5T_NATIVE_DOUBLE)) {
- memcpy(&tempdouble, vp, sizeof(double));
- h5tools_str_append(str, OPT(info->fmt_double, "%g"), tempdouble);
+ double tempdouble;
+
+ HDmemcpy(&tempdouble, vp, sizeof(double));
+ h5tools_str_append(str, OPT(info->fmt_double, "%g"), tempdouble);
#if H5_SIZEOF_LONG_DOUBLE !=0
} else if (H5Tequal(type, H5T_NATIVE_LDOUBLE)) {
- memcpy(&templdouble, vp, sizeof(long double));
- h5tools_str_append(str, "%Lf", templdouble);
+ long double templdouble;
+
+ HDmemcpy(&templdouble, vp, sizeof(long double));
+ h5tools_str_append(str, "%Lf", templdouble);
#endif
- } else if (info->ascii && (H5Tequal(type, H5T_NATIVE_SCHAR) ||
+ } else if (info->ascii && (H5Tequal(type, H5T_NATIVE_SCHAR) ||
H5Tequal(type, H5T_NATIVE_UCHAR))) {
h5tools_print_char(str, info, (char)(*ucp_vp));
} else if (H5T_STRING == H5Tget_class(type)) {
@@ -713,32 +711,36 @@ h5tools_str_sprint(h5tools_str_t *str, const h5tool_format_t *info, hid_t contai
h5tools_str_append(str, "\"\"");
} /* end else */
} else if (H5Tequal(type, H5T_NATIVE_INT)) {
- memcpy(&tempint, vp, sizeof(int));
+ HDmemcpy(&tempint, vp, sizeof(int));
h5tools_str_append(str, OPT(info->fmt_int, "%d"), tempint);
} else if (H5Tequal(type, H5T_NATIVE_UINT)) {
- memcpy(&tempuint, vp, sizeof(unsigned int));
+ HDmemcpy(&tempuint, vp, sizeof(unsigned int));
h5tools_str_append(str, OPT(info->fmt_uint, "%u"), tempuint);
} else if (H5Tequal(type, H5T_NATIVE_SCHAR)) {
h5tools_str_append(str, OPT(info->fmt_schar, "%d"), *cp_vp);
} else if (H5Tequal(type, H5T_NATIVE_UCHAR)) {
h5tools_str_append(str, OPT(info->fmt_uchar, "%u"), *ucp_vp);
} else if (H5Tequal(type, H5T_NATIVE_SHORT)) {
- memcpy(&tempshort, vp, sizeof(short));
+ short tempshort;
+
+ HDmemcpy(&tempshort, vp, sizeof(short));
h5tools_str_append(str, OPT(info->fmt_short, "%d"), tempshort);
} else if (H5Tequal(type, H5T_NATIVE_USHORT)) {
- memcpy(&tempushort, vp, sizeof(unsigned short));
+ unsigned short tempushort;
+
+ HDmemcpy(&tempushort, vp, sizeof(unsigned short));
h5tools_str_append(str, OPT(info->fmt_ushort, "%u"), tempushort);
} else if (H5Tequal(type, H5T_NATIVE_LONG)) {
- memcpy(&templong, vp, sizeof(long));
+ HDmemcpy(&templong, vp, sizeof(long));
h5tools_str_append(str, OPT(info->fmt_long, "%ld"), templong);
} else if (H5Tequal(type, H5T_NATIVE_ULONG)) {
- memcpy(&tempulong, vp, sizeof(unsigned long));
+ HDmemcpy(&tempulong, vp, sizeof(unsigned long));
h5tools_str_append(str, OPT(info->fmt_ulong, "%lu"), tempulong);
} else if (H5Tequal(type, H5T_NATIVE_LLONG)) {
- memcpy(&templlong, vp, sizeof(long_long));
+ HDmemcpy(&templlong, vp, sizeof(long_long));
h5tools_str_append(str, OPT(info->fmt_llong, fmt_llong), templlong);
} else if (H5Tequal(type, H5T_NATIVE_ULLONG)) {
- memcpy(&tempullong, vp, sizeof(unsigned long_long));
+ HDmemcpy(&tempullong, vp, sizeof(unsigned long_long));
h5tools_str_append(str, OPT(info->fmt_ullong, fmt_ullong), tempullong);
} else if (H5Tequal(type, H5T_NATIVE_HSSIZE)) {
if (sizeof(hssize_t) == sizeof(int)) {
@@ -849,7 +851,6 @@ h5tools_str_sprint(h5tools_str_t *str, const h5tool_format_t *info, hid_t contai
obj = H5Rdereference(container, H5R_DATASET_REGION, vp);
region = H5Rget_region(container, H5R_DATASET_REGION, vp);
- H5Gget_objinfo(obj, ".", FALSE, &sb);
/* get name of the dataset the region reference points to using H5Rget_name */
H5Rget_name(obj, H5R_DATASET_REGION, vp, (char*)ref_name, 1024);
@@ -867,47 +868,46 @@ h5tools_str_sprint(h5tools_str_t *str, const h5tool_format_t *info, hid_t contai
if (h5tools_is_zero(vp, H5Tget_size(type))) {
h5tools_str_append(str, "NULL");
} else {
- haddr_t objno; /* Compact form of object's location */
+ H5O_info_t oi;
const char *path;
- otype = H5Rget_obj_type(container, H5R_OBJECT, vp);
obj = H5Rdereference(container, H5R_OBJECT, vp);
- H5Gget_objinfo(obj, ".", FALSE, &sb);
+ H5Oget_info(obj, ".", &oi, H5P_DEFAULT);
/* Print object type and close object */
- switch (otype) {
- case H5G_GROUP:
+ switch(oi.type) {
+ case H5O_TYPE_GROUP:
h5tools_str_append(str, H5_TOOLS_GROUP);
- H5Gclose(obj);
break;
- case H5G_DATASET:
+
+ case H5O_TYPE_DATASET:
h5tools_str_append(str, H5_TOOLS_DATASET);
- H5Dclose(obj);
break;
- case H5G_TYPE:
+
+ case H5O_TYPE_NAMED_DATATYPE:
h5tools_str_append(str, H5_TOOLS_DATATYPE);
- H5Tclose(obj);
break;
+
default:
- h5tools_str_append(str, "%u-", otype);
+ h5tools_str_append(str, "%u-", (unsigned)oi.type);
break;
- }
+ } /* end switch */
+ H5Oclose(obj);
/* Print OID */
- objno = (haddr_t)sb.objno[0] | ((haddr_t)sb.objno[1] << (8 * sizeof(long)));
- if (info->obj_hidefileno)
- h5tools_str_append(str, info->obj_format, objno);
+ if(info->obj_hidefileno)
+ h5tools_str_append(str, info->obj_format, oi.addr);
else
- h5tools_str_append(str, info->obj_format, sb.fileno[0], objno);
+ h5tools_str_append(str, info->obj_format, oi.fileno, oi.addr);
/* Print name */
path = lookup_ref_path(*(haddr_t *)vp);
if (path) {
- h5tools_str_append(str, " ");
- h5tools_str_append(str, path);
- h5tools_str_append(str, " ");
- }
- }
+ h5tools_str_append(str, " ");
+ h5tools_str_append(str, path);
+ h5tools_str_append(str, " ");
+ } /* end if */
+ } /* end else */
} else if (H5Tget_class(type) == H5T_ARRAY) {
int k, ndims;
hsize_t i, dims[H5S_MAX_RANK],temp_nelmts;
@@ -929,25 +929,23 @@ h5tools_str_sprint(h5tools_str_t *str, const h5tool_format_t *info, hid_t contai
/* Print the opening bracket */
h5tools_str_append(str, "%s", OPT(info->arr_pre, "["));
- for (i = 0; i < nelmts; i++) {
- if (i)
+ for(i = 0; i < nelmts; i++) {
+ if(i)
h5tools_str_append(str, "%s",
OPT(info->arr_sep, "," OPTIONAL_LINE_BREAK));
- if (info->arr_linebreak && i && i % dims[ndims - 1] == 0) {
+ if(info->arr_linebreak && i && i % dims[ndims - 1] == 0) {
int x;
h5tools_str_append(str, "%s", "\n");
- /*need to indent some more here*/
- if (ctx->indent_level >= 0 )
- {
- if (!info->pindex)
- h5tools_str_append(str, "%s", OPT(info->line_pre, ""));
- }
+ /* need to indent some more here*/
+ if(ctx->indent_level >= 0)
+ if(!info->pindex)
+ h5tools_str_append(str, "%s", OPT(info->line_pre, ""));
- for (x = 0; x < ctx->indent_level + 1; x++)
- h5tools_str_append(str,"%s",OPT(info->line_indent,""));
+ for(x = 0; x < ctx->indent_level + 1; x++)
+ h5tools_str_append(str, "%s", OPT(info->line_indent, ""));
} /* end if */
else if(i && info->arr_sep)
h5tools_str_append(str, " ");
@@ -961,7 +959,7 @@ h5tools_str_sprint(h5tools_str_t *str, const h5tool_format_t *info, hid_t contai
} /* end for */
/* Print the closing bracket */
- h5tools_str_append(str, "%s", OPT(info->arr_suf, "]"));
+ h5tools_str_append(str, "%s", OPT(info->arr_suf, "]"));
H5Tclose(memb);
} else if (H5Tget_class(type) == H5T_VLEN) {
unsigned int i;
diff --git a/tools/lib/h5tools_str.h b/tools/lib/h5tools_str.h
index 0964b7b..607d412 100644
--- a/tools/lib/h5tools_str.h
+++ b/tools/lib/h5tools_str.h
@@ -33,7 +33,7 @@ extern char *h5tools_str_reset(h5tools_str_t *str);
extern char *h5tools_str_trunc(h5tools_str_t *str, size_t size);
extern char *h5tools_str_fmt(h5tools_str_t *str, size_t start, const char *fmt);
extern char *h5tools_str_prefix(h5tools_str_t *str, const h5tool_format_t *info,
- hsize_t elmtno, int ndims, hsize_t min_idx[],
+ hsize_t elmtno, unsigned ndims, hsize_t min_idx[],
hsize_t max_idx[], h5tools_context_t *ctx);
extern int h5tools_str_dump_region(h5tools_str_t *, hid_t, const h5tool_format_t *);
extern char *h5tools_str_sprint(h5tools_str_t *str, const h5tool_format_t *info,
diff --git a/tools/lib/h5tools_utils.c b/tools/lib/h5tools_utils.c
index b04f3c6..4aabe09 100644
--- a/tools/lib/h5tools_utils.c
+++ b/tools/lib/h5tools_utils.c
@@ -483,26 +483,23 @@ build_obj_path_name(const char *prefix, const char *name)
static herr_t
find_objs_cb(hid_t group, const char *name, const H5L_info_t UNUSED *linfo, void *op_data)
{
- H5G_stat_t statbuf;
+ H5O_info_t oinfo;
find_objs_t *info = (find_objs_t*)op_data;
herr_t ret_value = 0;
- if(H5Gget_objinfo(group, name, FALSE, &statbuf) < 0)
+ if(H5Oget_info(group, name, &oinfo, H5P_DEFAULT) < 0)
; /* keep going */
else {
- haddr_t objno; /* Compact form of object's location */
-
- objno = (haddr_t)statbuf.objno[0] | ((haddr_t)statbuf.objno[1] << (8 * sizeof(long)));
- switch (statbuf.type) {
+ switch(oinfo.type) {
char *tmp;
size_t tmp_len;
- case H5G_GROUP:
- if (search_obj(info->group_table, objno) == NULL) {
+ case H5O_TYPE_GROUP:
+ if(search_obj(info->group_table, oinfo.addr) == NULL) {
char *old_prefix;
tmp = build_obj_path_name(info->prefix, name);
- add_obj(info->group_table, objno, tmp, TRUE);
+ add_obj(info->group_table, oinfo.addr, tmp, TRUE);
old_prefix = info->prefix;
tmp_len = HDstrlen(tmp);
@@ -516,44 +513,42 @@ find_objs_cb(hid_t group, const char *name, const H5L_info_t UNUSED *linfo, void
} /* end if */
break;
- case H5G_DATASET:
- if (search_obj(info->dset_table, objno) == NULL) {
+ case H5O_TYPE_DATASET:
+ if(search_obj(info->dset_table, oinfo.addr) == NULL) {
hid_t dset;
tmp = build_obj_path_name(info->prefix, name);
- add_obj(info->dset_table, objno, tmp, TRUE);
+ add_obj(info->dset_table, oinfo.addr, tmp, TRUE);
- if ((dset = H5Dopen (group, name)) >= 0) {
+ if((dset = H5Dopen (group, name)) >= 0) {
hid_t type;
type = H5Dget_type(dset);
- if (H5Tcommitted(type) > 0) {
- H5Gget_objinfo(type, ".", TRUE, &statbuf);
- objno = (haddr_t)statbuf.objno[0] | ((haddr_t)statbuf.objno[1] << (8 * sizeof(long)));
-
- if (search_obj(info->type_table, objno) == NULL) {
+ if(H5Tcommitted(type) > 0) {
+ H5Oget_info(type, ".", &oinfo, H5P_DEFAULT);
+ if (search_obj(info->type_table, oinfo.addr) == NULL) {
char *type_name = HDstrdup(tmp);
- add_obj(info->type_table, objno, type_name, FALSE);
+ add_obj(info->type_table, oinfo.addr, type_name, FALSE);
} /* end if */
- }
+ } /* end if */
H5Tclose(type);
H5Dclose(dset);
- } else {
+ } /* end if */
+ else
ret_value = FAIL;
- }
} /* end if */
break;
- case H5G_TYPE:
+ case H5O_TYPE_NAMED_DATATYPE:
{
obj_t *found_obj;
tmp = build_obj_path_name(info->prefix, name);
- if ((found_obj = search_obj(info->type_table, objno)) == NULL)
- add_obj(info->type_table, objno, tmp, TRUE);
+ if((found_obj = search_obj(info->type_table, oinfo.addr)) == NULL)
+ add_obj(info->type_table, oinfo.addr, tmp, TRUE);
else {
/* Use latest version of name */
HDfree(found_obj->objname);
@@ -594,6 +589,8 @@ herr_t
init_objs(hid_t fid, find_objs_t *info, table_t **group_table,
table_t **dset_table, table_t **type_table)
{
+ H5O_info_t oinfo;
+
/* Initialize the tables */
init_table(group_table);
init_table(dset_table);
@@ -605,25 +602,15 @@ init_objs(hid_t fid, find_objs_t *info, table_t **group_table,
info->type_table = *type_table;
info->dset_table = *dset_table;
- {
- /* add the root group as an object, it may have hard links to it */
-
- H5G_stat_t statbuf;
- haddr_t objno; /* compact form of object's location */
- char* tmp;
-
- if(H5Gget_objinfo(fid, "/", FALSE, &statbuf) < 0)
- return FAIL;
- else
- {
- objno = (haddr_t)statbuf.objno[0] | ((haddr_t)statbuf.objno[1] << (8 * sizeof(long)));
- /* call with an empty string, it appends group separator */
- tmp = build_obj_path_name(info->prefix, "");
- add_obj(info->group_table, objno, tmp, TRUE);
- }
- }
-
+ /* add the root group as an object, it may have hard links to it */
+ if(H5Oget_info(fid, "/", &oinfo, H5P_DEFAULT) < 0)
+ return FAIL;
+ else {
+ /* call with an empty string, it appends '/' group separator */
+ char *tmp = build_obj_path_name(info->prefix, "");
+ add_obj(info->group_table, oinfo.addr, tmp, TRUE);
+ } /* end else */
/* Find all shared objects */
return(H5Literate(fid, "/", H5_INDEX_NAME, H5_ITER_INC, NULL, find_objs_cb, (void *)info, H5P_DEFAULT));
diff --git a/tools/lib/h5trav.c b/tools/lib/h5trav.c
index 65cca66..58d618d 100644
--- a/tools/lib/h5trav.c
+++ b/tools/lib/h5trav.c
@@ -171,11 +171,13 @@ traverse_cb(hid_t loc_id, const char *link_name, const H5L_info_t *linfo,
is_group = (oinfo.type == H5O_TYPE_GROUP) ? TRUE : FALSE;
/* Make 'visit object' callback */
- (*udata->visitor->visit_obj)(link_path, &oinfo, already_visited, udata->visitor->udata);
+ if(udata->visitor->visit_obj)
+ (*udata->visitor->visit_obj)(link_path, &oinfo, already_visited, udata->visitor->udata);
} /* end if */
else {
/* Make 'visit link' callback */
- (*udata->visitor->visit_lnk)(link_path, linfo, udata->visitor->udata);
+ if(udata->visitor->visit_lnk)
+ (*udata->visitor->visit_lnk)(link_path, linfo, udata->visitor->udata);
} /* end else */
/* Check for group that we haven't visited yet & recurse */
@@ -267,7 +269,7 @@ traverse(hid_t file_id, const trav_visitor_t *visitor)
*-------------------------------------------------------------------------
*/
static void
-trav_info_add(trav_info_t *info, const char *path, H5G_obj_t obj_type)
+trav_info_add(trav_info_t *info, const char *path, h5trav_type_t obj_type)
{
size_t idx; /* Index of address to use */
@@ -302,8 +304,8 @@ trav_info_visit_obj(const char *path, const H5O_info_t *oinfo,
hbool_t UNUSED already_visited, void *udata)
{
/* Add the object to the 'info' struct */
- /* (object types map directly to "group" types) */
- trav_info_add((trav_info_t *)udata, path, (H5G_obj_t)oinfo->type);
+ /* (object types map directly to "traversal" types) */
+ trav_info_add((trav_info_t *)udata, path, (h5trav_type_t)oinfo->type);
return(0);
} /* end trav_info_visit_obj() */
@@ -326,7 +328,7 @@ static int
trav_info_visit_lnk(const char *path, const H5L_info_t *linfo, void *udata)
{
/* Add the link to the 'info' struct */
- trav_info_add((trav_info_t *)udata, path, ((linfo->type == H5L_TYPE_SOFT) ? H5G_LINK : H5G_UDLINK));
+ trav_info_add((trav_info_t *)udata, path, ((linfo->type == H5L_TYPE_SOFT) ? H5TRAV_TYPE_LINK : H5TRAV_TYPE_UDLINK));
return(0);
} /* end trav_info_visit_lnk() */
@@ -647,7 +649,7 @@ trav_table_add(trav_table_t *table,
table->objs[new].objno = oinfo ? oinfo->addr : HADDR_UNDEF;
table->objs[new].flags[0] = table->objs[new].flags[1] = 0;
table->objs[new].name = (char *)HDstrdup(path);
- table->objs[new].type = oinfo ? (H5G_obj_t)oinfo->type : H5G_LINK;
+ table->objs[new].type = oinfo ? (h5trav_type_t)oinfo->type : H5TRAV_TYPE_LINK;
table->objs[new].nlinks = 0;
table->objs[new].sizelinks = 0;
table->objs[new].links = NULL;
@@ -707,7 +709,7 @@ trav_table_addlink(trav_table_t *table,
void trav_table_addflags(unsigned *flags,
char *name,
- H5G_obj_t type,
+ h5trav_type_t type,
trav_table_t *table)
{
unsigned int new;
@@ -715,7 +717,7 @@ void trav_table_addflags(unsigned *flags,
if(table->nobjs == table->size) {
table->size = MAX(1, table->size * 2);
table->objs = (trav_obj_t *)HDrealloc(table->objs, table->size * sizeof(trav_obj_t));
- }
+ } /* end if */
new = table->nobjs++;
table->objs[new].objno = 0;
diff --git a/tools/lib/h5trav.h b/tools/lib/h5trav.h
index 4218013..05bc3cb 100644
--- a/tools/lib/h5trav.h
+++ b/tools/lib/h5trav.h
@@ -19,22 +19,32 @@
#include "hdf5.h"
/*-------------------------------------------------------------------------
- * public struct to store name and type of an object
+ * public enum to specify type of an object
* the TYPE can be:
- * H5G_UNKNOWN = -1,
- * H5G_GROUP, Object is a group
- * H5G_DATASET, Object is a dataset
- * H5G_TYPE, Object is a named data type
- * H5G_LINK, Object is a symbolic link
+ * H5TRAV_TYPE_UNKNOWN = -1,
+ * H5TRAV_TYPE_GROUP, Object is a group
+ * H5TRAV_TYPE_DATASET, Object is a dataset
+ * H5TRAV_TYPE_TYPE, Object is a named datatype
+ * H5TRAV_TYPE_LINK, Object is a symbolic link
+ * H5TRAV_TYPE_UDLINK, Object is a user-defined link
*-------------------------------------------------------------------------
*/
+typedef enum {
+ H5TRAV_TYPE_UNKNOWN = -1, /* Unknown object type */
+ H5TRAV_TYPE_GROUP, /* Object is a group */
+ H5TRAV_TYPE_DATASET, /* Object is a dataset */
+ H5TRAV_TYPE_NAMED_DATATYPE, /* Object is a named datatype */
+ H5TRAV_TYPE_LINK, /* Object is a symbolic link */
+ H5TRAV_TYPE_UDLINK /* Object is a user-defined link */
+} h5trav_type_t;
-typedef H5G_obj_t H5G_obj_t1;
-
-
+/*-------------------------------------------------------------------------
+ * public struct to store name and type of an object
+ *-------------------------------------------------------------------------
+ */
typedef struct trav_path_t {
char *path;
- H5G_obj_t type;
+ h5trav_type_t type;
} trav_path_t;
typedef struct trav_info_t {
@@ -59,10 +69,10 @@ typedef struct trav_link_t {
*/
typedef struct trav_obj_t {
- haddr_t objno; /* object number from H5Gget_objinfo */
+ haddr_t objno; /* object address */
unsigned flags[2]; /* h5diff.object is present or not in both files*/
char *name; /* name */
- H5G_obj_t type; /* type of object */
+ h5trav_type_t type; /* type of object */
trav_link_t *links; /* array of possible link names */
size_t sizelinks; /* size of links array */
size_t nlinks; /* number of links */
@@ -135,9 +145,8 @@ void trav_table_free(trav_table_t *table);
void trav_table_addflags(unsigned *flags,
char *objname,
- H5G_obj_t type,
+ h5trav_type_t type,
trav_table_t *table);
#endif /* H5TRAV_H__ */
-
diff --git a/tools/lib/ph5diff.h b/tools/lib/ph5diff.h
index 8ef59bd..d904095 100644
--- a/tools/lib/ph5diff.h
+++ b/tools/lib/ph5diff.h
@@ -16,12 +16,7 @@
#ifndef _PH5DIFF_H__
#define _PH5DIFF_H__
-/* use a larger output buffer for Tflops which does not support vsnprintf. */
-#ifdef __PUMAGON__
#define PRINT_DATA_MAX_SIZE 512
-#else
-#define PRINT_DATA_MAX_SIZE 512
-#endif
#define OUTBUFF_SIZE (PRINT_DATA_MAX_SIZE*4)
/* Send from manager to workers */
#define MPI_TAG_ARGS 1
@@ -41,7 +36,7 @@ extern int g_nTasks;
extern unsigned char g_Parallel;
extern char outBuff[];
extern int outBuffOffset;
-extern FILE* overflow_file;
+extern FILE * overflow_file;
struct diff_args
{
@@ -60,5 +55,5 @@ struct diffs_found
#include <mpi.h>
#endif
-
#endif /* _PH5DIFF_H__ */
+
diff --git a/tools/testfiles/h5copytst.out.ls b/tools/testfiles/h5copytst.out.ls
index 378aa0f..c4d1778 100644
--- a/tools/testfiles/h5copytst.out.ls
+++ b/tools/testfiles/h5copytst.out.ls
@@ -11,7 +11,6 @@ Opened "../testfiles/h5copytst.out.h5" with sec2 driver.
/A/B1/simple Dataset {6/6}
Location: 1:90216
Links: 1
- Modified: XXXX-XX-XX XX:XX:XX XXX
Storage: <details removed for portability>
Type: 32-bit little-endian integer
/A/B2 Group
@@ -20,7 +19,6 @@ Opened "../testfiles/h5copytst.out.h5" with sec2 driver.
/A/B2/simple2 Dataset {6/6}
Location: 1:94456
Links: 1
- Modified: XXXX-XX-XX XX:XX:XX XXX
Storage: <details removed for portability>
Type: 32-bit little-endian integer
/C Group
@@ -32,7 +30,6 @@ Opened "../testfiles/h5copytst.out.h5" with sec2 driver.
/C/D/simple Dataset {6/6}
Location: 1:97664
Links: 1
- Modified: XXXX-XX-XX XX:XX:XX XXX
Storage: <details removed for portability>
Type: 32-bit little-endian integer
/E Group
@@ -47,20 +44,17 @@ Opened "../testfiles/h5copytst.out.h5" with sec2 driver.
/E/F/grp_dsets/chunk Dataset {6/6}
Location: 1:102744
Links: 1
- Modified: XXXX-XX-XX XX:XX:XX XXX
Chunks: {2} 8 bytes
Storage: <details removed for portability>
Type: 32-bit little-endian integer
/E/F/grp_dsets/compact Dataset {6/6}
Location: 1:103200
Links: 1
- Modified: XXXX-XX-XX XX:XX:XX XXX
Storage: <details removed for portability>
Type: 32-bit little-endian integer
/E/F/grp_dsets/compound Dataset {2/2}
Location: 1:103336
Links: 1
- Modified: XXXX-XX-XX XX:XX:XX XXX
Storage: <details removed for portability>
Type: struct {
"str1" +0 20-byte null-terminated ASCII string
@@ -69,7 +63,6 @@ Opened "../testfiles/h5copytst.out.h5" with sec2 driver.
/E/F/grp_dsets/compressed Dataset {6/6}
Location: 1:103552
Links: 1
- Modified: XXXX-XX-XX XX:XX:XX XXX
Chunks: {2} 8 bytes
Storage: <details removed for portability>
Filter-0: deflate-1 OPT {1}
@@ -77,14 +70,12 @@ Opened "../testfiles/h5copytst.out.h5" with sec2 driver.
/E/F/grp_dsets/named_vl Dataset {2/2}
Location: 1:103768
Links: 1
- Modified: XXXX-XX-XX XX:XX:XX XXX
Storage: <details removed for portability>
Type: shared-1:103720 variable length of
32-bit little-endian integer
/E/F/grp_dsets/nested_vl Dataset {2/2}
Location: 1:112240
Links: 1
- Modified: XXXX-XX-XX XX:XX:XX XXX
Storage: <details removed for portability>
Type: variable length of
variable length of
@@ -92,7 +83,6 @@ Opened "../testfiles/h5copytst.out.h5" with sec2 driver.
/E/F/grp_dsets/simple Dataset {6/6}
Location: 1:112384
Links: 1
- Modified: XXXX-XX-XX XX:XX:XX XXX
Storage: <details removed for portability>
Type: 32-bit little-endian integer
/E/F/grp_dsets/vl Type
@@ -115,20 +105,17 @@ Opened "../testfiles/h5copytst.out.h5" with sec2 driver.
/G/H/grp_nested/grp_dsets/chunk Dataset {6/6}
Location: 1:118088
Links: 1
- Modified: XXXX-XX-XX XX:XX:XX XXX
Chunks: {2} 8 bytes
Storage: <details removed for portability>
Type: 32-bit little-endian integer
/G/H/grp_nested/grp_dsets/compact Dataset {6/6}
Location: 1:120688
Links: 1
- Modified: XXXX-XX-XX XX:XX:XX XXX
Storage: <details removed for portability>
Type: 32-bit little-endian integer
/G/H/grp_nested/grp_dsets/compound Dataset {2/2}
Location: 1:120824
Links: 1
- Modified: XXXX-XX-XX XX:XX:XX XXX
Storage: <details removed for portability>
Type: struct {
"str1" +0 20-byte null-terminated ASCII string
@@ -137,7 +124,6 @@ Opened "../testfiles/h5copytst.out.h5" with sec2 driver.
/G/H/grp_nested/grp_dsets/compressed Dataset {6/6}
Location: 1:123136
Links: 1
- Modified: XXXX-XX-XX XX:XX:XX XXX
Chunks: {2} 8 bytes
Storage: <details removed for portability>
Filter-0: deflate-1 OPT {1}
@@ -145,14 +131,12 @@ Opened "../testfiles/h5copytst.out.h5" with sec2 driver.
/G/H/grp_nested/grp_dsets/named_vl Dataset {2/2}
Location: 1:127448
Links: 1
- Modified: XXXX-XX-XX XX:XX:XX XXX
Storage: <details removed for portability>
Type: shared-1:123304 variable length of
32-bit little-endian integer
/G/H/grp_nested/grp_dsets/nested_vl Dataset {2/2}
Location: 1:127576
Links: 1
- Modified: XXXX-XX-XX XX:XX:XX XXX
Storage: <details removed for portability>
Type: variable length of
variable length of
@@ -160,7 +144,6 @@ Opened "../testfiles/h5copytst.out.h5" with sec2 driver.
/G/H/grp_nested/grp_dsets/simple Dataset {6/6}
Location: 1:127720
Links: 1
- Modified: XXXX-XX-XX XX:XX:XX XXX
Storage: <details removed for portability>
Type: 32-bit little-endian integer
/G/H/grp_nested/grp_dsets/vl Type
@@ -171,20 +154,17 @@ Opened "../testfiles/h5copytst.out.h5" with sec2 driver.
/chunk Dataset {6/6}
Location: 1:6216
Links: 1
- Modified: XXXX-XX-XX XX:XX:XX XXX
Chunks: {2} 8 bytes
Storage: <details removed for portability>
Type: 32-bit little-endian integer
/compact Dataset {6/6}
Location: 1:6344
Links: 1
- Modified: XXXX-XX-XX XX:XX:XX XXX
Storage: <details removed for portability>
Type: 32-bit little-endian integer
/compound Dataset {2/2}
Location: 1:8528
Links: 1
- Modified: XXXX-XX-XX XX:XX:XX XXX
Storage: <details removed for portability>
Type: struct {
"str1" +0 20-byte null-terminated ASCII string
@@ -193,7 +173,6 @@ Opened "../testfiles/h5copytst.out.h5" with sec2 driver.
/compressed Dataset {6/6}
Location: 1:12888
Links: 1
- Modified: XXXX-XX-XX XX:XX:XX XXX
Chunks: {2} 8 bytes
Storage: <details removed for portability>
Filter-0: deflate-1 OPT {1}
@@ -204,20 +183,17 @@ Opened "../testfiles/h5copytst.out.h5" with sec2 driver.
/grp_dsets/chunk Dataset {6/6}
Location: 1:35896
Links: 1
- Modified: XXXX-XX-XX XX:XX:XX XXX
Chunks: {2} 8 bytes
Storage: <details removed for portability>
Type: 32-bit little-endian integer
/grp_dsets/compact Dataset {6/6}
Location: 1:36352
Links: 1
- Modified: XXXX-XX-XX XX:XX:XX XXX
Storage: <details removed for portability>
Type: 32-bit little-endian integer
/grp_dsets/compound Dataset {2/2}
Location: 1:36488
Links: 1
- Modified: XXXX-XX-XX XX:XX:XX XXX
Storage: <details removed for portability>
Type: struct {
"str1" +0 20-byte null-terminated ASCII string
@@ -226,7 +202,6 @@ Opened "../testfiles/h5copytst.out.h5" with sec2 driver.
/grp_dsets/compressed Dataset {6/6}
Location: 1:36704
Links: 1
- Modified: XXXX-XX-XX XX:XX:XX XXX
Chunks: {2} 8 bytes
Storage: <details removed for portability>
Filter-0: deflate-1 OPT {1}
@@ -234,14 +209,12 @@ Opened "../testfiles/h5copytst.out.h5" with sec2 driver.
/grp_dsets/named_vl Dataset {2/2}
Location: 1:36920
Links: 1
- Modified: XXXX-XX-XX XX:XX:XX XXX
Storage: <details removed for portability>
Type: shared-1:36872 variable length of
32-bit little-endian integer
/grp_dsets/nested_vl Dataset {2/2}
Location: 1:45392
Links: 1
- Modified: XXXX-XX-XX XX:XX:XX XXX
Storage: <details removed for portability>
Type: variable length of
variable length of
@@ -249,13 +222,11 @@ Opened "../testfiles/h5copytst.out.h5" with sec2 driver.
/grp_dsets/simple Dataset {6/6}
Location: 1:45536
Links: 1
- Modified: XXXX-XX-XX XX:XX:XX XXX
Storage: <details removed for portability>
Type: 32-bit little-endian integer
/grp_dsets/simple_group Dataset {6/6}
Location: 1:61744
Links: 1
- Modified: XXXX-XX-XX XX:XX:XX XXX
Storage: <details removed for portability>
Type: 32-bit little-endian integer
/grp_dsets/vl Type
@@ -275,20 +246,17 @@ Opened "../testfiles/h5copytst.out.h5" with sec2 driver.
/grp_nested/grp_dsets/chunk Dataset {6/6}
Location: 1:49256
Links: 1
- Modified: XXXX-XX-XX XX:XX:XX XXX
Chunks: {2} 8 bytes
Storage: <details removed for portability>
Type: 32-bit little-endian integer
/grp_nested/grp_dsets/compact Dataset {6/6}
Location: 1:51856
Links: 1
- Modified: XXXX-XX-XX XX:XX:XX XXX
Storage: <details removed for portability>
Type: 32-bit little-endian integer
/grp_nested/grp_dsets/compound Dataset {2/2}
Location: 1:51992
Links: 1
- Modified: XXXX-XX-XX XX:XX:XX XXX
Storage: <details removed for portability>
Type: struct {
"str1" +0 20-byte null-terminated ASCII string
@@ -297,7 +265,6 @@ Opened "../testfiles/h5copytst.out.h5" with sec2 driver.
/grp_nested/grp_dsets/compressed Dataset {6/6}
Location: 1:54304
Links: 1
- Modified: XXXX-XX-XX XX:XX:XX XXX
Chunks: {2} 8 bytes
Storage: <details removed for portability>
Filter-0: deflate-1 OPT {1}
@@ -305,14 +272,12 @@ Opened "../testfiles/h5copytst.out.h5" with sec2 driver.
/grp_nested/grp_dsets/named_vl Dataset {2/2}
Location: 1:58616
Links: 1
- Modified: XXXX-XX-XX XX:XX:XX XXX
Storage: <details removed for portability>
Type: shared-1:54472 variable length of
32-bit little-endian integer
/grp_nested/grp_dsets/nested_vl Dataset {2/2}
Location: 1:58744
Links: 1
- Modified: XXXX-XX-XX XX:XX:XX XXX
Storage: <details removed for portability>
Type: variable length of
variable length of
@@ -320,7 +285,6 @@ Opened "../testfiles/h5copytst.out.h5" with sec2 driver.
/grp_nested/grp_dsets/simple Dataset {6/6}
Location: 1:58888
Links: 1
- Modified: XXXX-XX-XX XX:XX:XX XXX
Storage: <details removed for portability>
Type: 32-bit little-endian integer
/grp_nested/grp_dsets/vl Type
@@ -334,20 +298,17 @@ Opened "../testfiles/h5copytst.out.h5" with sec2 driver.
/grp_rename/chunk Dataset {6/6}
Location: 1:65088
Links: 1
- Modified: XXXX-XX-XX XX:XX:XX XXX
Chunks: {2} 8 bytes
Storage: <details removed for portability>
Type: 32-bit little-endian integer
/grp_rename/compact Dataset {6/6}
Location: 1:65544
Links: 1
- Modified: XXXX-XX-XX XX:XX:XX XXX
Storage: <details removed for portability>
Type: 32-bit little-endian integer
/grp_rename/compound Dataset {2/2}
Location: 1:65680
Links: 1
- Modified: XXXX-XX-XX XX:XX:XX XXX
Storage: <details removed for portability>
Type: struct {
"str1" +0 20-byte null-terminated ASCII string
@@ -356,7 +317,6 @@ Opened "../testfiles/h5copytst.out.h5" with sec2 driver.
/grp_rename/compressed Dataset {6/6}
Location: 1:65896
Links: 1
- Modified: XXXX-XX-XX XX:XX:XX XXX
Chunks: {2} 8 bytes
Storage: <details removed for portability>
Filter-0: deflate-1 OPT {1}
@@ -367,20 +327,17 @@ Opened "../testfiles/h5copytst.out.h5" with sec2 driver.
/grp_rename/grp_dsets/chunk Dataset {6/6}
Location: 1:78072
Links: 1
- Modified: XXXX-XX-XX XX:XX:XX XXX
Chunks: {2} 8 bytes
Storage: <details removed for portability>
Type: 32-bit little-endian integer
/grp_rename/grp_dsets/compact Dataset {6/6}
Location: 1:78528
Links: 1
- Modified: XXXX-XX-XX XX:XX:XX XXX
Storage: <details removed for portability>
Type: 32-bit little-endian integer
/grp_rename/grp_dsets/compound Dataset {2/2}
Location: 1:78664
Links: 1
- Modified: XXXX-XX-XX XX:XX:XX XXX
Storage: <details removed for portability>
Type: struct {
"str1" +0 20-byte null-terminated ASCII string
@@ -389,7 +346,6 @@ Opened "../testfiles/h5copytst.out.h5" with sec2 driver.
/grp_rename/grp_dsets/compressed Dataset {6/6}
Location: 1:78880
Links: 1
- Modified: XXXX-XX-XX XX:XX:XX XXX
Chunks: {2} 8 bytes
Storage: <details removed for portability>
Filter-0: deflate-1 OPT {1}
@@ -397,14 +353,12 @@ Opened "../testfiles/h5copytst.out.h5" with sec2 driver.
/grp_rename/grp_dsets/named_vl Dataset {2/2}
Location: 1:79096
Links: 1
- Modified: XXXX-XX-XX XX:XX:XX XXX
Storage: <details removed for portability>
Type: shared-1:79048 variable length of
32-bit little-endian integer
/grp_rename/grp_dsets/nested_vl Dataset {2/2}
Location: 1:87568
Links: 1
- Modified: XXXX-XX-XX XX:XX:XX XXX
Storage: <details removed for portability>
Type: variable length of
variable length of
@@ -412,7 +366,6 @@ Opened "../testfiles/h5copytst.out.h5" with sec2 driver.
/grp_rename/grp_dsets/simple Dataset {6/6}
Location: 1:87712
Links: 1
- Modified: XXXX-XX-XX XX:XX:XX XXX
Storage: <details removed for portability>
Type: 32-bit little-endian integer
/grp_rename/grp_dsets/vl Type
@@ -423,14 +376,12 @@ Opened "../testfiles/h5copytst.out.h5" with sec2 driver.
/grp_rename/named_vl Dataset {2/2}
Location: 1:66112
Links: 1
- Modified: XXXX-XX-XX XX:XX:XX XXX
Storage: <details removed for portability>
Type: shared-1:66064 variable length of
32-bit little-endian integer
/grp_rename/nested_vl Dataset {2/2}
Location: 1:74584
Links: 1
- Modified: XXXX-XX-XX XX:XX:XX XXX
Storage: <details removed for portability>
Type: variable length of
variable length of
@@ -438,7 +389,6 @@ Opened "../testfiles/h5copytst.out.h5" with sec2 driver.
/grp_rename/simple Dataset {6/6}
Location: 1:74728
Links: 1
- Modified: XXXX-XX-XX XX:XX:XX XXX
Storage: <details removed for portability>
Type: 32-bit little-endian integer
/grp_rename/vl Type
@@ -449,14 +399,12 @@ Opened "../testfiles/h5copytst.out.h5" with sec2 driver.
/named_vl Dataset {2/2}
Location: 1:13104
Links: 1
- Modified: XXXX-XX-XX XX:XX:XX XXX
Storage: <details removed for portability>
Type: shared-1:13056 variable length of
32-bit little-endian integer
/nested_vl Dataset {2/2}
Location: 1:27392
Links: 1
- Modified: XXXX-XX-XX XX:XX:XX XXX
Storage: <details removed for portability>
Type: variable length of
variable length of
@@ -464,7 +412,6 @@ Opened "../testfiles/h5copytst.out.h5" with sec2 driver.
/rename Dataset {2/2}
Location: 1:31760
Links: 1
- Modified: XXXX-XX-XX XX:XX:XX XXX
Storage: <details removed for portability>
Type: struct {
"str1" +0 20-byte null-terminated ASCII string
@@ -473,12 +420,10 @@ Opened "../testfiles/h5copytst.out.h5" with sec2 driver.
/simple Dataset {6/6}
Location: 1:800
Links: 1
- Modified: XXXX-XX-XX XX:XX:XX XXX
Storage: <details removed for portability>
Type: 32-bit little-endian integer
/simple_top Dataset {6/6}
Location: 1:29584
Links: 1
- Modified: XXXX-XX-XX XX:XX:XX XXX
Storage: <details removed for portability>
Type: 32-bit little-endian integer
diff --git a/tools/testfiles/tall-1.ddl b/tools/testfiles/tall-1.ddl
index 6069293..cd5f721 100644
--- a/tools/testfiles/tall-1.ddl
+++ b/tools/testfiles/tall-1.ddl
@@ -68,7 +68,7 @@ GROUP "/" {
LINKCLASS 64
TARGETFILE "somefile"
TARGETPATH "somepath"
-}
+ }
GROUP "g1.2.1" {
SOFTLINK "slink" {
LINKTARGET "somevalue"
diff --git a/tools/testfiles/tall-2A.ddl b/tools/testfiles/tall-2A.ddl
index b16feb8..2c56501 100644
--- a/tools/testfiles/tall-2A.ddl
+++ b/tools/testfiles/tall-2A.ddl
@@ -52,7 +52,7 @@ GROUP "/" {
LINKCLASS 64
TARGETFILE "somefile"
TARGETPATH "somepath"
-}
+ }
GROUP "g1.2.1" {
SOFTLINK "slink" {
LINKTARGET "somevalue"
diff --git a/tools/testfiles/tall-2A.h5.xml b/tools/testfiles/tall-2A.h5.xml
index 8a8467c..314ab4e 100644
--- a/tools/testfiles/tall-2A.h5.xml
+++ b/tools/testfiles/tall-2A.h5.xml
@@ -127,10 +127,10 @@ Expected output for 'h5dump --xml -A tall.h5'
</hdf5:Dataset>
</hdf5:Group>
<hdf5:Group Name="g1.2" OBJ-XID="xid_3568" H5Path="/g1/g1.2" Parents="xid_800" H5ParentPaths="/g1" >
+ <hdf5:ExternalLink LinkName="extlink" OBJ-XID="xid_18446744073709551614" H5SourcePath="/g1/g1.2/extlink" TargetFilename="somefile" TargetPath="somepath" Parents="xid_3568" H5ParentPaths="/g1/g1.2" />
<hdf5:Group Name="g1.2.1" OBJ-XID="xid_4272" H5Path="/g1/g1.2/g1.2.1" Parents="xid_3568" H5ParentPaths="/g1/g1.2" >
- <hdf5:SoftLink LinkName="slink" OBJ-XID="xid_18446744073709551614" H5SourcePath="/g1/g1.2/g1.2.1/slink" TargetPath="somevalue" Parents="xid_4272" H5ParentPaths="/g1/g1.2/g1.2.1" />
+ <hdf5:SoftLink LinkName="slink" OBJ-XID="xid_18446744073709551613" H5SourcePath="/g1/g1.2/g1.2.1/slink" TargetPath="somevalue" Parents="xid_4272" H5ParentPaths="/g1/g1.2/g1.2.1" />
</hdf5:Group>
- <hdf5:ExternalLink LinkName="extlink" OBJ-XID="xid_18446744073709551613" H5SourcePath="/g1/g1.2/extlink" TargetFilename="somefile" TargetPath="somepath" Parents="xid_3568" H5ParentPaths="/g1/g1.2" />
</hdf5:Group>
</hdf5:Group>
<hdf5:Group Name="g2" OBJ-XID="xid_1832" H5Path="/g2" Parents="xid_96" H5ParentPaths="/" >
diff --git a/tools/testfiles/tall-2B.ddl b/tools/testfiles/tall-2B.ddl
index 002156e..ec220e9 100644
--- a/tools/testfiles/tall-2B.ddl
+++ b/tools/testfiles/tall-2B.ddl
@@ -48,7 +48,7 @@ GROUP "/" {
LINKCLASS 64
TARGETFILE "somefile"
TARGETPATH "somepath"
-}
+ }
GROUP "g1.2.1" {
SOFTLINK "slink" {
LINKTARGET "somevalue"
diff --git a/tools/testfiles/tall.h5.xml b/tools/testfiles/tall.h5.xml
index 8f11e54..3747193 100644
--- a/tools/testfiles/tall.h5.xml
+++ b/tools/testfiles/tall.h5.xml
@@ -140,10 +140,10 @@ Expected output for 'h5dump --xml tall.h5'
</hdf5:Dataset>
</hdf5:Group>
<hdf5:Group Name="g1.2" OBJ-XID="xid_3568" H5Path="/g1/g1.2" Parents="xid_800" H5ParentPaths="/g1" >
+ <hdf5:ExternalLink LinkName="extlink" OBJ-XID="xid_18446744073709551614" H5SourcePath="/g1/g1.2/extlink" TargetFilename="somefile" TargetPath="somepath" Parents="xid_3568" H5ParentPaths="/g1/g1.2" />
<hdf5:Group Name="g1.2.1" OBJ-XID="xid_4272" H5Path="/g1/g1.2/g1.2.1" Parents="xid_3568" H5ParentPaths="/g1/g1.2" >
- <hdf5:SoftLink LinkName="slink" OBJ-XID="xid_18446744073709551614" H5SourcePath="/g1/g1.2/g1.2.1/slink" TargetPath="somevalue" Parents="xid_4272" H5ParentPaths="/g1/g1.2/g1.2.1" />
+ <hdf5:SoftLink LinkName="slink" OBJ-XID="xid_18446744073709551613" H5SourcePath="/g1/g1.2/g1.2.1/slink" TargetPath="somevalue" Parents="xid_4272" H5ParentPaths="/g1/g1.2/g1.2.1" />
</hdf5:Group>
- <hdf5:ExternalLink LinkName="extlink" OBJ-XID="xid_18446744073709551613" H5SourcePath="/g1/g1.2/extlink" TargetFilename="somefile" TargetPath="somepath" Parents="xid_3568" H5ParentPaths="/g1/g1.2" />
</hdf5:Group>
</hdf5:Group>
<hdf5:Group Name="g2" OBJ-XID="xid_1832" H5Path="/g2" Parents="xid_96" H5ParentPaths="/" >
diff --git a/tools/testfiles/tattr2.ls b/tools/testfiles/tattr2.ls
index 01ad413..e34206e 100644
--- a/tools/testfiles/tattr2.ls
+++ b/tools/testfiles/tattr2.ls
@@ -308,7 +308,6 @@ dset Dataset {2/2}
(2,2,1) 18, 19, 20, 21, 22, 23, 24
Location: 1:976
Links: 1
- Modified: XXXX-XX-XX XX:XX:XX XXX
Storage: 8 logical bytes, 0 allocated bytes
Type: 32-bit little-endian integer
g1 Group
diff --git a/tools/testfiles/tcompound.h5.xml b/tools/testfiles/tcompound.h5.xml
index 1cbbf2e..c6de351 100644
--- a/tools/testfiles/tcompound.h5.xml
+++ b/tools/testfiles/tcompound.h5.xml
@@ -24,57 +24,6 @@ Expected output for 'h5dump --xml tcompound.h5'
</hdf5:CompoundType>
</hdf5:DataType>
</hdf5:NamedDataType>
- <hdf5:NamedDataType Name="type1" OBJ-XID="xid_1424" H5Path="/type1" Parents="xid_696" H5ParentPaths="/">
- <hdf5:DataType>
- <hdf5:CompoundType>
- <hdf5:Field FieldName="int_name">
- <hdf5:DataType>
- <hdf5:AtomicType>
- <hdf5:IntegerType ByteOrder="BE" Sign="true" Size="4" />
- </hdf5:AtomicType>
- </hdf5:DataType>
- </hdf5:Field>
- <hdf5:Field FieldName="float_name">
- <hdf5:DataType>
- <hdf5:AtomicType>
- <hdf5:FloatType ByteOrder="BE" Size="4" SignBitLocation="31" ExponentBits="8" ExponentLocation="23" MantissaBits="23" MantissaLocation="0" />
- </hdf5:AtomicType>
- </hdf5:DataType>
- </hdf5:Field>
- </hdf5:CompoundType>
- </hdf5:DataType>
- </hdf5:NamedDataType>
- <hdf5:NamedDataType Name="type2" OBJ-XID="xid_2792" H5Path="/type2" Parents="xid_696" H5ParentPaths="/">
- <hdf5:DataType>
- <hdf5:CompoundType>
- <hdf5:Field FieldName="int_array">
- <hdf5:DataType>
- <hdf5:ArrayType Ndims="1">
- <hdf5:ArrayDimension DimSize="4"/>
- <hdf5:DataType>
- <hdf5:AtomicType>
- <hdf5:IntegerType ByteOrder="BE" Sign="true" Size="4" />
- </hdf5:AtomicType>
- </hdf5:DataType>
- </hdf5:ArrayType>
- </hdf5:DataType>
- </hdf5:Field>
- <hdf5:Field FieldName="float_array">
- <hdf5:DataType>
- <hdf5:ArrayType Ndims="2">
- <hdf5:ArrayDimension DimSize="5"/>
- <hdf5:ArrayDimension DimSize="6"/>
- <hdf5:DataType>
- <hdf5:AtomicType>
- <hdf5:FloatType ByteOrder="BE" Size="4" SignBitLocation="31" ExponentBits="8" ExponentLocation="23" MantissaBits="23" MantissaLocation="0" />
- </hdf5:AtomicType>
- </hdf5:DataType>
- </hdf5:ArrayType>
- </hdf5:DataType>
- </hdf5:Field>
- </hdf5:CompoundType>
- </hdf5:DataType>
- </hdf5:NamedDataType>
<hdf5:Dataset Name="dset1" OBJ-XID="xid_744" H5Path= "/dset1" Parents="xid_696" H5ParentPaths="/">
<hdf5:StorageLayout>
<hdf5:ContiguousLayout/>
@@ -122,26 +71,6 @@ Expected output for 'h5dump --xml tcompound.h5'
</hdf5:Data>
</hdf5:Dataset>
<hdf5:Group Name="group1" OBJ-XID="xid_2104" H5Path="/group1" Parents="xid_696" H5ParentPaths="/" >
- <hdf5:NamedDataType Name="type3" OBJ-XID="xid_5592" H5Path="/group1/type3" Parents="xid_2104" H5ParentPaths="/group1">
- <hdf5:DataType>
- <hdf5:CompoundType>
- <hdf5:Field FieldName="int">
- <hdf5:DataType>
- <hdf5:AtomicType>
- <hdf5:IntegerType ByteOrder="BE" Sign="true" Size="4" />
- </hdf5:AtomicType>
- </hdf5:DataType>
- </hdf5:Field>
- <hdf5:Field FieldName="float">
- <hdf5:DataType>
- <hdf5:AtomicType>
- <hdf5:FloatType ByteOrder="BE" Size="4" SignBitLocation="31" ExponentBits="8" ExponentLocation="23" MantissaBits="23" MantissaLocation="0" />
- </hdf5:AtomicType>
- </hdf5:DataType>
- </hdf5:Field>
- </hdf5:CompoundType>
- </hdf5:DataType>
- </hdf5:NamedDataType>
<hdf5:Dataset Name="dset2" OBJ-XID="xid_2152" H5Path= "/group1/dset2" Parents="xid_2104" H5ParentPaths="/group1">
<hdf5:StorageLayout>
<hdf5:ContiguousLayout/>
@@ -298,6 +227,26 @@ Expected output for 'h5dump --xml tcompound.h5'
</hdf5:DataFromFile>
</hdf5:Data>
</hdf5:Dataset>
+ <hdf5:NamedDataType Name="type3" OBJ-XID="xid_5592" H5Path="/group1/type3" Parents="xid_2104" H5ParentPaths="/group1">
+ <hdf5:DataType>
+ <hdf5:CompoundType>
+ <hdf5:Field FieldName="int">
+ <hdf5:DataType>
+ <hdf5:AtomicType>
+ <hdf5:IntegerType ByteOrder="BE" Sign="true" Size="4" />
+ </hdf5:AtomicType>
+ </hdf5:DataType>
+ </hdf5:Field>
+ <hdf5:Field FieldName="float">
+ <hdf5:DataType>
+ <hdf5:AtomicType>
+ <hdf5:FloatType ByteOrder="BE" Size="4" SignBitLocation="31" ExponentBits="8" ExponentLocation="23" MantissaBits="23" MantissaLocation="0" />
+ </hdf5:AtomicType>
+ </hdf5:DataType>
+ </hdf5:Field>
+ </hdf5:CompoundType>
+ </hdf5:DataType>
+ </hdf5:NamedDataType>
</hdf5:Group>
<hdf5:Group Name="group2" OBJ-XID="xid_6584" H5Path="/group2" Parents="xid_696" H5ParentPaths="/" >
<hdf5:Dataset Name="dset5" OBJ-XID="xid_7040" H5Path= "/group2/dset5" Parents="xid_6584" H5ParentPaths="/group2">
@@ -323,5 +272,56 @@ Expected output for 'h5dump --xml tcompound.h5'
</hdf5:Data>
</hdf5:Dataset>
</hdf5:Group>
+ <hdf5:NamedDataType Name="type1" OBJ-XID="xid_1424" H5Path="/type1" Parents="xid_696" H5ParentPaths="/">
+ <hdf5:DataType>
+ <hdf5:CompoundType>
+ <hdf5:Field FieldName="int_name">
+ <hdf5:DataType>
+ <hdf5:AtomicType>
+ <hdf5:IntegerType ByteOrder="BE" Sign="true" Size="4" />
+ </hdf5:AtomicType>
+ </hdf5:DataType>
+ </hdf5:Field>
+ <hdf5:Field FieldName="float_name">
+ <hdf5:DataType>
+ <hdf5:AtomicType>
+ <hdf5:FloatType ByteOrder="BE" Size="4" SignBitLocation="31" ExponentBits="8" ExponentLocation="23" MantissaBits="23" MantissaLocation="0" />
+ </hdf5:AtomicType>
+ </hdf5:DataType>
+ </hdf5:Field>
+ </hdf5:CompoundType>
+ </hdf5:DataType>
+ </hdf5:NamedDataType>
+ <hdf5:NamedDataType Name="type2" OBJ-XID="xid_2792" H5Path="/type2" Parents="xid_696" H5ParentPaths="/">
+ <hdf5:DataType>
+ <hdf5:CompoundType>
+ <hdf5:Field FieldName="int_array">
+ <hdf5:DataType>
+ <hdf5:ArrayType Ndims="1">
+ <hdf5:ArrayDimension DimSize="4"/>
+ <hdf5:DataType>
+ <hdf5:AtomicType>
+ <hdf5:IntegerType ByteOrder="BE" Sign="true" Size="4" />
+ </hdf5:AtomicType>
+ </hdf5:DataType>
+ </hdf5:ArrayType>
+ </hdf5:DataType>
+ </hdf5:Field>
+ <hdf5:Field FieldName="float_array">
+ <hdf5:DataType>
+ <hdf5:ArrayType Ndims="2">
+ <hdf5:ArrayDimension DimSize="5"/>
+ <hdf5:ArrayDimension DimSize="6"/>
+ <hdf5:DataType>
+ <hdf5:AtomicType>
+ <hdf5:FloatType ByteOrder="BE" Size="4" SignBitLocation="31" ExponentBits="8" ExponentLocation="23" MantissaBits="23" MantissaLocation="0" />
+ </hdf5:AtomicType>
+ </hdf5:DataType>
+ </hdf5:ArrayType>
+ </hdf5:DataType>
+ </hdf5:Field>
+ </hdf5:CompoundType>
+ </hdf5:DataType>
+ </hdf5:NamedDataType>
</hdf5:RootGroup>
</hdf5:HDF5-File>
diff --git a/tools/testfiles/tcompound2.h5.xml b/tools/testfiles/tcompound2.h5.xml
index 2940caa..e0b087c 100644
--- a/tools/testfiles/tcompound2.h5.xml
+++ b/tools/testfiles/tcompound2.h5.xml
@@ -24,57 +24,6 @@ Expected output for 'h5dump --xml tcompound2.h5'
</hdf5:CompoundType>
</hdf5:DataType>
</hdf5:NamedDataType>
- <hdf5:NamedDataType Name="type1" OBJ-XID="xid_3280" H5Path="/type1" Parents="xid_696" H5ParentPaths="/">
- <hdf5:DataType>
- <hdf5:CompoundType>
- <hdf5:Field FieldName="int_name">
- <hdf5:DataType>
- <hdf5:AtomicType>
- <hdf5:IntegerType ByteOrder="BE" Sign="true" Size="4" />
- </hdf5:AtomicType>
- </hdf5:DataType>
- </hdf5:Field>
- <hdf5:Field FieldName="float_name">
- <hdf5:DataType>
- <hdf5:AtomicType>
- <hdf5:FloatType ByteOrder="BE" Size="4" SignBitLocation="31" ExponentBits="8" ExponentLocation="23" MantissaBits="23" MantissaLocation="0" />
- </hdf5:AtomicType>
- </hdf5:DataType>
- </hdf5:Field>
- </hdf5:CompoundType>
- </hdf5:DataType>
- </hdf5:NamedDataType>
- <hdf5:NamedDataType Name="type2" OBJ-XID="xid_6544" H5Path="/type2" Parents="xid_696" H5ParentPaths="/">
- <hdf5:DataType>
- <hdf5:CompoundType>
- <hdf5:Field FieldName="int_array">
- <hdf5:DataType>
- <hdf5:ArrayType Ndims="1">
- <hdf5:ArrayDimension DimSize="4"/>
- <hdf5:DataType>
- <hdf5:AtomicType>
- <hdf5:IntegerType ByteOrder="BE" Sign="true" Size="4" />
- </hdf5:AtomicType>
- </hdf5:DataType>
- </hdf5:ArrayType>
- </hdf5:DataType>
- </hdf5:Field>
- <hdf5:Field FieldName="float_array">
- <hdf5:DataType>
- <hdf5:ArrayType Ndims="2">
- <hdf5:ArrayDimension DimSize="5"/>
- <hdf5:ArrayDimension DimSize="6"/>
- <hdf5:DataType>
- <hdf5:AtomicType>
- <hdf5:FloatType ByteOrder="BE" Size="4" SignBitLocation="31" ExponentBits="8" ExponentLocation="23" MantissaBits="23" MantissaLocation="0" />
- </hdf5:AtomicType>
- </hdf5:DataType>
- </hdf5:ArrayType>
- </hdf5:DataType>
- </hdf5:Field>
- </hdf5:CompoundType>
- </hdf5:DataType>
- </hdf5:NamedDataType>
<hdf5:Dataset Name="dset1" OBJ-XID="xid_744" H5Path= "/dset1" Parents="xid_696" H5ParentPaths="/">
<hdf5:StorageLayout>
<hdf5:ChunkedLayout Ndims="1">
@@ -126,26 +75,6 @@ Expected output for 'h5dump --xml tcompound2.h5'
</hdf5:Data>
</hdf5:Dataset>
<hdf5:Group Name="group1" OBJ-XID="xid_3960" H5Path="/group1" Parents="xid_696" H5ParentPaths="/" >
- <hdf5:NamedDataType Name="type3" OBJ-XID="xid_6624" H5Path="/group1/type3" Parents="xid_3960" H5ParentPaths="/group1">
- <hdf5:DataType>
- <hdf5:CompoundType>
- <hdf5:Field FieldName="int">
- <hdf5:DataType>
- <hdf5:AtomicType>
- <hdf5:IntegerType ByteOrder="BE" Sign="true" Size="4" />
- </hdf5:AtomicType>
- </hdf5:DataType>
- </hdf5:Field>
- <hdf5:Field FieldName="float">
- <hdf5:DataType>
- <hdf5:AtomicType>
- <hdf5:FloatType ByteOrder="BE" Size="4" SignBitLocation="31" ExponentBits="8" ExponentLocation="23" MantissaBits="23" MantissaLocation="0" />
- </hdf5:AtomicType>
- </hdf5:DataType>
- </hdf5:Field>
- </hdf5:CompoundType>
- </hdf5:DataType>
- </hdf5:NamedDataType>
<hdf5:Dataset Name="dset2" OBJ-XID="xid_4008" H5Path= "/group1/dset2" Parents="xid_3960" H5ParentPaths="/group1">
<hdf5:StorageLayout>
<hdf5:ChunkedLayout Ndims="1">
@@ -198,6 +127,26 @@ Expected output for 'h5dump --xml tcompound2.h5'
</hdf5:DataFromFile>
</hdf5:Data>
</hdf5:Dataset>
+ <hdf5:NamedDataType Name="type3" OBJ-XID="xid_6624" H5Path="/group1/type3" Parents="xid_3960" H5ParentPaths="/group1">
+ <hdf5:DataType>
+ <hdf5:CompoundType>
+ <hdf5:Field FieldName="int">
+ <hdf5:DataType>
+ <hdf5:AtomicType>
+ <hdf5:IntegerType ByteOrder="BE" Sign="true" Size="4" />
+ </hdf5:AtomicType>
+ </hdf5:DataType>
+ </hdf5:Field>
+ <hdf5:Field FieldName="float">
+ <hdf5:DataType>
+ <hdf5:AtomicType>
+ <hdf5:FloatType ByteOrder="BE" Size="4" SignBitLocation="31" ExponentBits="8" ExponentLocation="23" MantissaBits="23" MantissaLocation="0" />
+ </hdf5:AtomicType>
+ </hdf5:DataType>
+ </hdf5:Field>
+ </hdf5:CompoundType>
+ </hdf5:DataType>
+ </hdf5:NamedDataType>
</hdf5:Group>
<hdf5:Group Name="group2" OBJ-XID="xid_9512" H5Path="/group2" Parents="xid_696" H5ParentPaths="/" >
<hdf5:Dataset Name="dset5" OBJ-XID="xid_9968" H5Path= "/group2/dset5" Parents="xid_9512" H5ParentPaths="/group2">
@@ -227,5 +176,56 @@ Expected output for 'h5dump --xml tcompound2.h5'
</hdf5:Data>
</hdf5:Dataset>
</hdf5:Group>
+ <hdf5:NamedDataType Name="type1" OBJ-XID="xid_3280" H5Path="/type1" Parents="xid_696" H5ParentPaths="/">
+ <hdf5:DataType>
+ <hdf5:CompoundType>
+ <hdf5:Field FieldName="int_name">
+ <hdf5:DataType>
+ <hdf5:AtomicType>
+ <hdf5:IntegerType ByteOrder="BE" Sign="true" Size="4" />
+ </hdf5:AtomicType>
+ </hdf5:DataType>
+ </hdf5:Field>
+ <hdf5:Field FieldName="float_name">
+ <hdf5:DataType>
+ <hdf5:AtomicType>
+ <hdf5:FloatType ByteOrder="BE" Size="4" SignBitLocation="31" ExponentBits="8" ExponentLocation="23" MantissaBits="23" MantissaLocation="0" />
+ </hdf5:AtomicType>
+ </hdf5:DataType>
+ </hdf5:Field>
+ </hdf5:CompoundType>
+ </hdf5:DataType>
+ </hdf5:NamedDataType>
+ <hdf5:NamedDataType Name="type2" OBJ-XID="xid_6544" H5Path="/type2" Parents="xid_696" H5ParentPaths="/">
+ <hdf5:DataType>
+ <hdf5:CompoundType>
+ <hdf5:Field FieldName="int_array">
+ <hdf5:DataType>
+ <hdf5:ArrayType Ndims="1">
+ <hdf5:ArrayDimension DimSize="4"/>
+ <hdf5:DataType>
+ <hdf5:AtomicType>
+ <hdf5:IntegerType ByteOrder="BE" Sign="true" Size="4" />
+ </hdf5:AtomicType>
+ </hdf5:DataType>
+ </hdf5:ArrayType>
+ </hdf5:DataType>
+ </hdf5:Field>
+ <hdf5:Field FieldName="float_array">
+ <hdf5:DataType>
+ <hdf5:ArrayType Ndims="2">
+ <hdf5:ArrayDimension DimSize="5"/>
+ <hdf5:ArrayDimension DimSize="6"/>
+ <hdf5:DataType>
+ <hdf5:AtomicType>
+ <hdf5:FloatType ByteOrder="BE" Size="4" SignBitLocation="31" ExponentBits="8" ExponentLocation="23" MantissaBits="23" MantissaLocation="0" />
+ </hdf5:AtomicType>
+ </hdf5:DataType>
+ </hdf5:ArrayType>
+ </hdf5:DataType>
+ </hdf5:Field>
+ </hdf5:CompoundType>
+ </hdf5:DataType>
+ </hdf5:NamedDataType>
</hdf5:RootGroup>
</hdf5:HDF5-File>
diff --git a/tools/testfiles/tnamed_dtype_attr.h5.xml b/tools/testfiles/tnamed_dtype_attr.h5.xml
index 9d4a0c0..0b9ceae 100644
--- a/tools/testfiles/tnamed_dtype_attr.h5.xml
+++ b/tools/testfiles/tnamed_dtype_attr.h5.xml
@@ -4,13 +4,6 @@ Expected output for 'h5dump --xml tnamed_dtype_attr.h5'
<?xml version="1.0" encoding="UTF-8"?>
<hdf5:HDF5-File xmlns:hdf5="http://hdfgroup.org/DTDs/HDF5-File" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://hdfgroup.org/DTDs/HDF5File http://hdfgroup.org/DTDs/HDF5-File.xsd">
<hdf5:RootGroup OBJ-XID="xid_96" H5Path="/">
- <hdf5:NamedDataType Name="Datatype" OBJ-XID="xid_792" H5Path="/Datatype" Parents="xid_96" H5ParentPaths="/">
- <hdf5:DataType>
- <hdf5:AtomicType>
- <hdf5:IntegerType ByteOrder="LE" Sign="true" Size="4" />
- </hdf5:AtomicType>
- </hdf5:DataType>
- </hdf5:NamedDataType>
<hdf5:Dataset Name="Dataset" OBJ-XID="xid_1264" H5Path= "/Dataset" Parents="xid_96" H5ParentPaths="/">
<hdf5:StorageLayout>
<hdf5:ContiguousLayout/>
@@ -39,6 +32,13 @@ Expected output for 'h5dump --xml tnamed_dtype_attr.h5'
<hdf5:NoData/>
</hdf5:Data>
</hdf5:Dataset>
+ <hdf5:NamedDataType Name="Datatype" OBJ-XID="xid_792" H5Path="/Datatype" Parents="xid_96" H5ParentPaths="/">
+ <hdf5:DataType>
+ <hdf5:AtomicType>
+ <hdf5:IntegerType ByteOrder="LE" Sign="true" Size="4" />
+ </hdf5:AtomicType>
+ </hdf5:DataType>
+ </hdf5:NamedDataType>
<hdf5:Group Name="g1" OBJ-XID="xid_1536" H5Path="/g1" Parents="xid_96" H5ParentPaths="/" >
<hdf5:Attribute Name="Attribute">
<hdf5:Dataspace>
diff --git a/tools/testfiles/tnofilename.ddl b/tools/testfiles/tnofilename.ddl
index a516dde..9eb9f88 100644
--- a/tools/testfiles/tnofilename.ddl
+++ b/tools/testfiles/tnofilename.ddl
@@ -25,7 +25,7 @@ usage: h5dump [OPTIONS] file
with -o (output file) and -d (dataset). B can be:
MEMORY for a memory type, FILE for the file type,
LE or BE for pre-existing little or big endian types
- -t P, --datatype=P Print the specified named data type
+ -t P, --datatype=P Print the specified named datatype
-w N, --width=N Set the number of columns of output
-x, --xml Output in XML using Schema
-u, --use-dtd Output in XML using DTD
diff --git a/tools/testfiles/tobjref.h5.xml b/tools/testfiles/tobjref.h5.xml
index 57cb64b..327291e 100644
--- a/tools/testfiles/tobjref.h5.xml
+++ b/tools/testfiles/tobjref.h5.xml
@@ -35,33 +35,6 @@ Expected output for 'h5dump --xml tobjref.h5'
</hdf5:Data>
</hdf5:Dataset>
<hdf5:Group Name="Group1" OBJ-XID="xid_1320" H5Path="/Group1" Parents="xid_696" H5ParentPaths="/" >
- <hdf5:NamedDataType Name="Datatype1" OBJ-XID="xid_2268" H5Path="/Group1/Datatype1" Parents="xid_1320" H5ParentPaths="/Group1">
- <hdf5:DataType>
- <hdf5:CompoundType>
- <hdf5:Field FieldName="a">
- <hdf5:DataType>
- <hdf5:AtomicType>
- <hdf5:IntegerType ByteOrder="BE" Sign="true" Size="4" />
- </hdf5:AtomicType>
- </hdf5:DataType>
- </hdf5:Field>
- <hdf5:Field FieldName="b">
- <hdf5:DataType>
- <hdf5:AtomicType>
- <hdf5:FloatType ByteOrder="BE" Size="4" SignBitLocation="31" ExponentBits="8" ExponentLocation="23" MantissaBits="23" MantissaLocation="0" />
- </hdf5:AtomicType>
- </hdf5:DataType>
- </hdf5:Field>
- <hdf5:Field FieldName="c">
- <hdf5:DataType>
- <hdf5:AtomicType>
- <hdf5:FloatType ByteOrder="BE" Size="4" SignBitLocation="31" ExponentBits="8" ExponentLocation="23" MantissaBits="23" MantissaLocation="0" />
- </hdf5:AtomicType>
- </hdf5:DataType>
- </hdf5:Field>
- </hdf5:CompoundType>
- </hdf5:DataType>
- </hdf5:NamedDataType>
<hdf5:Dataset Name="Dataset1" OBJ-XID="xid_1696" H5Path= "/Group1/Dataset1" Parents="xid_1320" H5ParentPaths="/Group1">
<hdf5:StorageLayout>
<hdf5:ContiguousLayout/>
@@ -112,6 +85,33 @@ Expected output for 'h5dump --xml tobjref.h5'
</hdf5:DataFromFile>
</hdf5:Data>
</hdf5:Dataset>
+ <hdf5:NamedDataType Name="Datatype1" OBJ-XID="xid_2268" H5Path="/Group1/Datatype1" Parents="xid_1320" H5ParentPaths="/Group1">
+ <hdf5:DataType>
+ <hdf5:CompoundType>
+ <hdf5:Field FieldName="a">
+ <hdf5:DataType>
+ <hdf5:AtomicType>
+ <hdf5:IntegerType ByteOrder="BE" Sign="true" Size="4" />
+ </hdf5:AtomicType>
+ </hdf5:DataType>
+ </hdf5:Field>
+ <hdf5:Field FieldName="b">
+ <hdf5:DataType>
+ <hdf5:AtomicType>
+ <hdf5:FloatType ByteOrder="BE" Size="4" SignBitLocation="31" ExponentBits="8" ExponentLocation="23" MantissaBits="23" MantissaLocation="0" />
+ </hdf5:AtomicType>
+ </hdf5:DataType>
+ </hdf5:Field>
+ <hdf5:Field FieldName="c">
+ <hdf5:DataType>
+ <hdf5:AtomicType>
+ <hdf5:FloatType ByteOrder="BE" Size="4" SignBitLocation="31" ExponentBits="8" ExponentLocation="23" MantissaBits="23" MantissaLocation="0" />
+ </hdf5:AtomicType>
+ </hdf5:DataType>
+ </hdf5:Field>
+ </hdf5:CompoundType>
+ </hdf5:DataType>
+ </hdf5:NamedDataType>
</hdf5:Group>
</hdf5:RootGroup>
</hdf5:HDF5-File>
diff --git a/tools/testfiles/tref.h5.xml b/tools/testfiles/tref.h5.xml
index 5edd4d2..6b093de 100644
--- a/tools/testfiles/tref.h5.xml
+++ b/tools/testfiles/tref.h5.xml
@@ -4,35 +4,6 @@ Expected output for 'h5dump --xml tref.h5'
<?xml version="1.0" encoding="UTF-8"?>
<hdf5:HDF5-File xmlns:hdf5="http://hdfgroup.org/DTDs/HDF5-File" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://hdfgroup.org/DTDs/HDF5File http://hdfgroup.org/DTDs/HDF5-File.xsd">
<hdf5:RootGroup OBJ-XID="xid_696" H5Path="/">
- <hdf5:Dataset Name="ZZZDataset3" OBJ-XID="xid_2612" H5Path= "/ZZZDataset3" Parents="xid_696" H5ParentPaths="/">
- <hdf5:StorageLayout>
- <hdf5:ContiguousLayout/>
- </hdf5:StorageLayout>
- <hdf5:FillValueInfo FillTime="FillIfSet" AllocationTime="Late">
- <hdf5:FillValue>
- <hdf5:NoFill/>
- </hdf5:FillValue>
- </hdf5:FillValueInfo>
- <hdf5:Dataspace>
- <hdf5:SimpleDataspace Ndims="1">
- <hdf5:Dimension DimSize="3" MaxDimSize="3"/>
- </hdf5:SimpleDataspace>
- </hdf5:Dataspace>
- <hdf5:DataType>
- <hdf5:AtomicType>
- <hdf5:ReferenceType>
- <hdf5:ObjectReferenceType />
- </hdf5:ReferenceType>
- </hdf5:AtomicType>
- </hdf5:DataType>
- <hdf5:Data>
- <hdf5:DataFromFile>
- "/Group1/Dataset1"
- "/Group1/Dataset2"
- "/Group1"
- </hdf5:DataFromFile>
- </hdf5:Data>
- </hdf5:Dataset>
<hdf5:Group Name="Group1" OBJ-XID="xid_1344" H5Path="/Group1" Parents="xid_696" H5ParentPaths="/" >
<hdf5:Dataset Name="Dataset1" OBJ-XID="xid_1720" H5Path= "/Group1/Dataset1" Parents="xid_1344" H5ParentPaths="/Group1">
<hdf5:StorageLayout>
@@ -85,5 +56,34 @@ Expected output for 'h5dump --xml tref.h5'
</hdf5:Data>
</hdf5:Dataset>
</hdf5:Group>
+ <hdf5:Dataset Name="ZZZDataset3" OBJ-XID="xid_2612" H5Path= "/ZZZDataset3" Parents="xid_696" H5ParentPaths="/">
+ <hdf5:StorageLayout>
+ <hdf5:ContiguousLayout/>
+ </hdf5:StorageLayout>
+ <hdf5:FillValueInfo FillTime="FillIfSet" AllocationTime="Late">
+ <hdf5:FillValue>
+ <hdf5:NoFill/>
+ </hdf5:FillValue>
+ </hdf5:FillValueInfo>
+ <hdf5:Dataspace>
+ <hdf5:SimpleDataspace Ndims="1">
+ <hdf5:Dimension DimSize="3" MaxDimSize="3"/>
+ </hdf5:SimpleDataspace>
+ </hdf5:Dataspace>
+ <hdf5:DataType>
+ <hdf5:AtomicType>
+ <hdf5:ReferenceType>
+ <hdf5:ObjectReferenceType />
+ </hdf5:ReferenceType>
+ </hdf5:AtomicType>
+ </hdf5:DataType>
+ <hdf5:Data>
+ <hdf5:DataFromFile>
+ "/Group1/Dataset1"
+ "/Group1/Dataset2"
+ "/Group1"
+ </hdf5:DataFromFile>
+ </hdf5:Data>
+ </hdf5:Dataset>
</hdf5:RootGroup>
</hdf5:HDF5-File>
diff --git a/tools/testfiles/tsaf.h5.xml b/tools/testfiles/tsaf.h5.xml
index 8c44bab..3f4ef38 100644
--- a/tools/testfiles/tsaf.h5.xml
+++ b/tools/testfiles/tsaf.h5.xml
@@ -307,6 +307,295 @@ Expected output for 'h5dump --xml tsaf.h5'
</hdf5:DataFromFile>
</hdf5:Data>
</hdf5:Dataset>
+ <hdf5:Group Name=".attributes" OBJ-XID="xid_5072" H5Path="/.attributes" Parents="xid_696" H5ParentPaths="/" >
+ <hdf5:Group Name="database" OBJ-XID="xid_5728" H5Path="/.attributes/database" Parents="xid_5072" H5ParentPaths="/.attributes" >
+ <hdf5:Dataset Name=".SAF_DbProps" OBJ-XID="xid_6104" H5Path= "/.attributes/database/.SAF_DbProps" Parents="xid_5728" H5ParentPaths="/.attributes/database">
+ <hdf5:StorageLayout>
+ <hdf5:ContiguousLayout/>
+ </hdf5:StorageLayout>
+ <hdf5:FillValueInfo FillTime="FillIfSet" AllocationTime="Late">
+ <hdf5:FillValue>
+ <hdf5:NoFill/>
+ </hdf5:FillValue>
+ </hdf5:FillValueInfo>
+ <hdf5:Dataspace>
+ <hdf5:SimpleDataspace Ndims="1">
+ <hdf5:Dimension DimSize="1" MaxDimSize="1"/>
+ </hdf5:SimpleDataspace>
+ </hdf5:Dataspace>
+ <hdf5:DataType>
+ <hdf5:CompoundType>
+ <hdf5:Field FieldName="magic">
+ <hdf5:DataType>
+ <hdf5:AtomicType>
+ <hdf5:IntegerType ByteOrder="BE" Sign="true" Size="4" />
+ </hdf5:AtomicType>
+ </hdf5:DataType>
+ </hdf5:Field>
+ <hdf5:Field FieldName="SFileDir">
+ <hdf5:DataType>
+ <hdf5:AtomicType>
+ <hdf5:StringType Cset="H5T_CSET_ASCII" StrSize="1024" StrPad="H5T_STR_NULLTERM"/>
+ </hdf5:AtomicType>
+ </hdf5:DataType>
+ </hdf5:Field>
+ <hdf5:Field FieldName="ImportFile">
+ <hdf5:DataType>
+ <hdf5:AtomicType>
+ <hdf5:StringType Cset="H5T_CSET_ASCII" StrSize="1024" StrPad="H5T_STR_NULLTERM"/>
+ </hdf5:AtomicType>
+ </hdf5:DataType>
+ </hdf5:Field>
+ <hdf5:Field FieldName="parallel">
+ <hdf5:DataType>
+ <hdf5:AtomicType>
+ <hdf5:IntegerType ByteOrder="BE" Sign="true" Size="4" />
+ </hdf5:AtomicType>
+ </hdf5:DataType>
+ </hdf5:Field>
+ <hdf5:Field FieldName="safapi">
+ <hdf5:DataType>
+ <hdf5:CompoundType>
+ <hdf5:Field FieldName="vmajor">
+ <hdf5:DataType>
+ <hdf5:AtomicType>
+ <hdf5:IntegerType ByteOrder="BE" Sign="true" Size="4" />
+ </hdf5:AtomicType>
+ </hdf5:DataType>
+ </hdf5:Field>
+ <hdf5:Field FieldName="vminor">
+ <hdf5:DataType>
+ <hdf5:AtomicType>
+ <hdf5:IntegerType ByteOrder="BE" Sign="true" Size="4" />
+ </hdf5:AtomicType>
+ </hdf5:DataType>
+ </hdf5:Field>
+ <hdf5:Field FieldName="rel">
+ <hdf5:DataType>
+ <hdf5:AtomicType>
+ <hdf5:IntegerType ByteOrder="BE" Sign="true" Size="4" />
+ </hdf5:AtomicType>
+ </hdf5:DataType>
+ </hdf5:Field>
+ <hdf5:Field FieldName="annot">
+ <hdf5:DataType>
+ <hdf5:AtomicType>
+ <hdf5:StringType Cset="H5T_CSET_ASCII" StrSize="10" StrPad="H5T_STR_NULLTERM"/>
+ </hdf5:AtomicType>
+ </hdf5:DataType>
+ </hdf5:Field>
+ </hdf5:CompoundType>
+ </hdf5:DataType>
+ </hdf5:Field>
+ <hdf5:Field FieldName="saflib">
+ <hdf5:DataType>
+ <hdf5:CompoundType>
+ <hdf5:Field FieldName="vmajor">
+ <hdf5:DataType>
+ <hdf5:AtomicType>
+ <hdf5:IntegerType ByteOrder="BE" Sign="true" Size="4" />
+ </hdf5:AtomicType>
+ </hdf5:DataType>
+ </hdf5:Field>
+ <hdf5:Field FieldName="vminor">
+ <hdf5:DataType>
+ <hdf5:AtomicType>
+ <hdf5:IntegerType ByteOrder="BE" Sign="true" Size="4" />
+ </hdf5:AtomicType>
+ </hdf5:DataType>
+ </hdf5:Field>
+ <hdf5:Field FieldName="rel">
+ <hdf5:DataType>
+ <hdf5:AtomicType>
+ <hdf5:IntegerType ByteOrder="BE" Sign="true" Size="4" />
+ </hdf5:AtomicType>
+ </hdf5:DataType>
+ </hdf5:Field>
+ <hdf5:Field FieldName="annot">
+ <hdf5:DataType>
+ <hdf5:AtomicType>
+ <hdf5:StringType Cset="H5T_CSET_ASCII" StrSize="10" StrPad="H5T_STR_NULLTERM"/>
+ </hdf5:AtomicType>
+ </hdf5:DataType>
+ </hdf5:Field>
+ </hdf5:CompoundType>
+ </hdf5:DataType>
+ </hdf5:Field>
+ <hdf5:Field FieldName="vbt">
+ <hdf5:DataType>
+ <hdf5:CompoundType>
+ <hdf5:Field FieldName="vmajor">
+ <hdf5:DataType>
+ <hdf5:AtomicType>
+ <hdf5:IntegerType ByteOrder="BE" Sign="true" Size="4" />
+ </hdf5:AtomicType>
+ </hdf5:DataType>
+ </hdf5:Field>
+ <hdf5:Field FieldName="vminor">
+ <hdf5:DataType>
+ <hdf5:AtomicType>
+ <hdf5:IntegerType ByteOrder="BE" Sign="true" Size="4" />
+ </hdf5:AtomicType>
+ </hdf5:DataType>
+ </hdf5:Field>
+ <hdf5:Field FieldName="rel">
+ <hdf5:DataType>
+ <hdf5:AtomicType>
+ <hdf5:IntegerType ByteOrder="BE" Sign="true" Size="4" />
+ </hdf5:AtomicType>
+ </hdf5:DataType>
+ </hdf5:Field>
+ <hdf5:Field FieldName="annot">
+ <hdf5:DataType>
+ <hdf5:AtomicType>
+ <hdf5:StringType Cset="H5T_CSET_ASCII" StrSize="10" StrPad="H5T_STR_NULLTERM"/>
+ </hdf5:AtomicType>
+ </hdf5:DataType>
+ </hdf5:Field>
+ </hdf5:CompoundType>
+ </hdf5:DataType>
+ </hdf5:Field>
+ <hdf5:Field FieldName="dsl">
+ <hdf5:DataType>
+ <hdf5:CompoundType>
+ <hdf5:Field FieldName="vmajor">
+ <hdf5:DataType>
+ <hdf5:AtomicType>
+ <hdf5:IntegerType ByteOrder="BE" Sign="true" Size="4" />
+ </hdf5:AtomicType>
+ </hdf5:DataType>
+ </hdf5:Field>
+ <hdf5:Field FieldName="vminor">
+ <hdf5:DataType>
+ <hdf5:AtomicType>
+ <hdf5:IntegerType ByteOrder="BE" Sign="true" Size="4" />
+ </hdf5:AtomicType>
+ </hdf5:DataType>
+ </hdf5:Field>
+ <hdf5:Field FieldName="rel">
+ <hdf5:DataType>
+ <hdf5:AtomicType>
+ <hdf5:IntegerType ByteOrder="BE" Sign="true" Size="4" />
+ </hdf5:AtomicType>
+ </hdf5:DataType>
+ </hdf5:Field>
+ <hdf5:Field FieldName="annot">
+ <hdf5:DataType>
+ <hdf5:AtomicType>
+ <hdf5:StringType Cset="H5T_CSET_ASCII" StrSize="10" StrPad="H5T_STR_NULLTERM"/>
+ </hdf5:AtomicType>
+ </hdf5:DataType>
+ </hdf5:Field>
+ </hdf5:CompoundType>
+ </hdf5:DataType>
+ </hdf5:Field>
+ <hdf5:Field FieldName="hdf5">
+ <hdf5:DataType>
+ <hdf5:CompoundType>
+ <hdf5:Field FieldName="vmajor">
+ <hdf5:DataType>
+ <hdf5:AtomicType>
+ <hdf5:IntegerType ByteOrder="BE" Sign="true" Size="4" />
+ </hdf5:AtomicType>
+ </hdf5:DataType>
+ </hdf5:Field>
+ <hdf5:Field FieldName="vminor">
+ <hdf5:DataType>
+ <hdf5:AtomicType>
+ <hdf5:IntegerType ByteOrder="BE" Sign="true" Size="4" />
+ </hdf5:AtomicType>
+ </hdf5:DataType>
+ </hdf5:Field>
+ <hdf5:Field FieldName="rel">
+ <hdf5:DataType>
+ <hdf5:AtomicType>
+ <hdf5:IntegerType ByteOrder="BE" Sign="true" Size="4" />
+ </hdf5:AtomicType>
+ </hdf5:DataType>
+ </hdf5:Field>
+ <hdf5:Field FieldName="annot">
+ <hdf5:DataType>
+ <hdf5:AtomicType>
+ <hdf5:StringType Cset="H5T_CSET_ASCII" StrSize="10" StrPad="H5T_STR_NULLTERM"/>
+ </hdf5:AtomicType>
+ </hdf5:DataType>
+ </hdf5:Field>
+ </hdf5:CompoundType>
+ </hdf5:DataType>
+ </hdf5:Field>
+ <hdf5:Field FieldName="mpi">
+ <hdf5:DataType>
+ <hdf5:CompoundType>
+ <hdf5:Field FieldName="vmajor">
+ <hdf5:DataType>
+ <hdf5:AtomicType>
+ <hdf5:IntegerType ByteOrder="BE" Sign="true" Size="4" />
+ </hdf5:AtomicType>
+ </hdf5:DataType>
+ </hdf5:Field>
+ <hdf5:Field FieldName="vminor">
+ <hdf5:DataType>
+ <hdf5:AtomicType>
+ <hdf5:IntegerType ByteOrder="BE" Sign="true" Size="4" />
+ </hdf5:AtomicType>
+ </hdf5:DataType>
+ </hdf5:Field>
+ <hdf5:Field FieldName="rel">
+ <hdf5:DataType>
+ <hdf5:AtomicType>
+ <hdf5:IntegerType ByteOrder="BE" Sign="true" Size="4" />
+ </hdf5:AtomicType>
+ </hdf5:DataType>
+ </hdf5:Field>
+ <hdf5:Field FieldName="annot">
+ <hdf5:DataType>
+ <hdf5:AtomicType>
+ <hdf5:StringType Cset="H5T_CSET_ASCII" StrSize="10" StrPad="H5T_STR_NULLTERM"/>
+ </hdf5:AtomicType>
+ </hdf5:DataType>
+ </hdf5:Field>
+ </hdf5:CompoundType>
+ </hdf5:DataType>
+ </hdf5:Field>
+ <hdf5:Field FieldName="DoToc">
+ <hdf5:DataType>
+ <hdf5:AtomicType>
+ <hdf5:IntegerType ByteOrder="BE" Sign="true" Size="4" />
+ </hdf5:AtomicType>
+ </hdf5:DataType>
+ </hdf5:Field>
+ <hdf5:Field FieldName="ReadOnly">
+ <hdf5:DataType>
+ <hdf5:AtomicType>
+ <hdf5:IntegerType ByteOrder="BE" Sign="true" Size="4" />
+ </hdf5:AtomicType>
+ </hdf5:DataType>
+ </hdf5:Field>
+ <hdf5:Field FieldName="Clobber">
+ <hdf5:DataType>
+ <hdf5:AtomicType>
+ <hdf5:IntegerType ByteOrder="BE" Sign="true" Size="4" />
+ </hdf5:AtomicType>
+ </hdf5:DataType>
+ </hdf5:Field>
+ <hdf5:Field FieldName="OSModes">
+ <hdf5:DataType>
+ <hdf5:AtomicType>
+ <hdf5:IntegerType ByteOrder="BE" Sign="true" Size="4" />
+ </hdf5:AtomicType>
+ </hdf5:DataType>
+ </hdf5:Field>
+ </hdf5:CompoundType>
+ </hdf5:DataType>
+ <!-- Note: format of compound data not specified -->
+ <hdf5:Data>
+ <hdf5:DataFromFile>
+ -604320037 "." "don't import" 1 0 0 0 "none" 0 1 0 "devel" 1 3 0 "" 0 0 0 "none" 1 2 1 "" 1 2 0 "" 1 0 1 0
+ </hdf5:DataFromFile>
+ </hdf5:Data>
+ </hdf5:Dataset>
+ </hdf5:Group>
+ </hdf5:Group>
<hdf5:Dataset Name="Blob" OBJ-XID="xid_17612" H5Path= "/Blob" Parents="xid_696" H5ParentPaths="/">
<hdf5:StorageLayout>
<hdf5:ChunkedLayout Ndims="1">
@@ -2628,294 +2917,5 @@ Expected output for 'h5dump --xml tsaf.h5'
</hdf5:DataFromFile>
</hdf5:Data>
</hdf5:Dataset>
- <hdf5:Group Name=".attributes" OBJ-XID="xid_5072" H5Path="/.attributes" Parents="xid_696" H5ParentPaths="/" >
- <hdf5:Group Name="database" OBJ-XID="xid_5728" H5Path="/.attributes/database" Parents="xid_5072" H5ParentPaths="/.attributes" >
- <hdf5:Dataset Name=".SAF_DbProps" OBJ-XID="xid_6104" H5Path= "/.attributes/database/.SAF_DbProps" Parents="xid_5728" H5ParentPaths="/.attributes/database">
- <hdf5:StorageLayout>
- <hdf5:ContiguousLayout/>
- </hdf5:StorageLayout>
- <hdf5:FillValueInfo FillTime="FillIfSet" AllocationTime="Late">
- <hdf5:FillValue>
- <hdf5:NoFill/>
- </hdf5:FillValue>
- </hdf5:FillValueInfo>
- <hdf5:Dataspace>
- <hdf5:SimpleDataspace Ndims="1">
- <hdf5:Dimension DimSize="1" MaxDimSize="1"/>
- </hdf5:SimpleDataspace>
- </hdf5:Dataspace>
- <hdf5:DataType>
- <hdf5:CompoundType>
- <hdf5:Field FieldName="magic">
- <hdf5:DataType>
- <hdf5:AtomicType>
- <hdf5:IntegerType ByteOrder="BE" Sign="true" Size="4" />
- </hdf5:AtomicType>
- </hdf5:DataType>
- </hdf5:Field>
- <hdf5:Field FieldName="SFileDir">
- <hdf5:DataType>
- <hdf5:AtomicType>
- <hdf5:StringType Cset="H5T_CSET_ASCII" StrSize="1024" StrPad="H5T_STR_NULLTERM"/>
- </hdf5:AtomicType>
- </hdf5:DataType>
- </hdf5:Field>
- <hdf5:Field FieldName="ImportFile">
- <hdf5:DataType>
- <hdf5:AtomicType>
- <hdf5:StringType Cset="H5T_CSET_ASCII" StrSize="1024" StrPad="H5T_STR_NULLTERM"/>
- </hdf5:AtomicType>
- </hdf5:DataType>
- </hdf5:Field>
- <hdf5:Field FieldName="parallel">
- <hdf5:DataType>
- <hdf5:AtomicType>
- <hdf5:IntegerType ByteOrder="BE" Sign="true" Size="4" />
- </hdf5:AtomicType>
- </hdf5:DataType>
- </hdf5:Field>
- <hdf5:Field FieldName="safapi">
- <hdf5:DataType>
- <hdf5:CompoundType>
- <hdf5:Field FieldName="vmajor">
- <hdf5:DataType>
- <hdf5:AtomicType>
- <hdf5:IntegerType ByteOrder="BE" Sign="true" Size="4" />
- </hdf5:AtomicType>
- </hdf5:DataType>
- </hdf5:Field>
- <hdf5:Field FieldName="vminor">
- <hdf5:DataType>
- <hdf5:AtomicType>
- <hdf5:IntegerType ByteOrder="BE" Sign="true" Size="4" />
- </hdf5:AtomicType>
- </hdf5:DataType>
- </hdf5:Field>
- <hdf5:Field FieldName="rel">
- <hdf5:DataType>
- <hdf5:AtomicType>
- <hdf5:IntegerType ByteOrder="BE" Sign="true" Size="4" />
- </hdf5:AtomicType>
- </hdf5:DataType>
- </hdf5:Field>
- <hdf5:Field FieldName="annot">
- <hdf5:DataType>
- <hdf5:AtomicType>
- <hdf5:StringType Cset="H5T_CSET_ASCII" StrSize="10" StrPad="H5T_STR_NULLTERM"/>
- </hdf5:AtomicType>
- </hdf5:DataType>
- </hdf5:Field>
- </hdf5:CompoundType>
- </hdf5:DataType>
- </hdf5:Field>
- <hdf5:Field FieldName="saflib">
- <hdf5:DataType>
- <hdf5:CompoundType>
- <hdf5:Field FieldName="vmajor">
- <hdf5:DataType>
- <hdf5:AtomicType>
- <hdf5:IntegerType ByteOrder="BE" Sign="true" Size="4" />
- </hdf5:AtomicType>
- </hdf5:DataType>
- </hdf5:Field>
- <hdf5:Field FieldName="vminor">
- <hdf5:DataType>
- <hdf5:AtomicType>
- <hdf5:IntegerType ByteOrder="BE" Sign="true" Size="4" />
- </hdf5:AtomicType>
- </hdf5:DataType>
- </hdf5:Field>
- <hdf5:Field FieldName="rel">
- <hdf5:DataType>
- <hdf5:AtomicType>
- <hdf5:IntegerType ByteOrder="BE" Sign="true" Size="4" />
- </hdf5:AtomicType>
- </hdf5:DataType>
- </hdf5:Field>
- <hdf5:Field FieldName="annot">
- <hdf5:DataType>
- <hdf5:AtomicType>
- <hdf5:StringType Cset="H5T_CSET_ASCII" StrSize="10" StrPad="H5T_STR_NULLTERM"/>
- </hdf5:AtomicType>
- </hdf5:DataType>
- </hdf5:Field>
- </hdf5:CompoundType>
- </hdf5:DataType>
- </hdf5:Field>
- <hdf5:Field FieldName="vbt">
- <hdf5:DataType>
- <hdf5:CompoundType>
- <hdf5:Field FieldName="vmajor">
- <hdf5:DataType>
- <hdf5:AtomicType>
- <hdf5:IntegerType ByteOrder="BE" Sign="true" Size="4" />
- </hdf5:AtomicType>
- </hdf5:DataType>
- </hdf5:Field>
- <hdf5:Field FieldName="vminor">
- <hdf5:DataType>
- <hdf5:AtomicType>
- <hdf5:IntegerType ByteOrder="BE" Sign="true" Size="4" />
- </hdf5:AtomicType>
- </hdf5:DataType>
- </hdf5:Field>
- <hdf5:Field FieldName="rel">
- <hdf5:DataType>
- <hdf5:AtomicType>
- <hdf5:IntegerType ByteOrder="BE" Sign="true" Size="4" />
- </hdf5:AtomicType>
- </hdf5:DataType>
- </hdf5:Field>
- <hdf5:Field FieldName="annot">
- <hdf5:DataType>
- <hdf5:AtomicType>
- <hdf5:StringType Cset="H5T_CSET_ASCII" StrSize="10" StrPad="H5T_STR_NULLTERM"/>
- </hdf5:AtomicType>
- </hdf5:DataType>
- </hdf5:Field>
- </hdf5:CompoundType>
- </hdf5:DataType>
- </hdf5:Field>
- <hdf5:Field FieldName="dsl">
- <hdf5:DataType>
- <hdf5:CompoundType>
- <hdf5:Field FieldName="vmajor">
- <hdf5:DataType>
- <hdf5:AtomicType>
- <hdf5:IntegerType ByteOrder="BE" Sign="true" Size="4" />
- </hdf5:AtomicType>
- </hdf5:DataType>
- </hdf5:Field>
- <hdf5:Field FieldName="vminor">
- <hdf5:DataType>
- <hdf5:AtomicType>
- <hdf5:IntegerType ByteOrder="BE" Sign="true" Size="4" />
- </hdf5:AtomicType>
- </hdf5:DataType>
- </hdf5:Field>
- <hdf5:Field FieldName="rel">
- <hdf5:DataType>
- <hdf5:AtomicType>
- <hdf5:IntegerType ByteOrder="BE" Sign="true" Size="4" />
- </hdf5:AtomicType>
- </hdf5:DataType>
- </hdf5:Field>
- <hdf5:Field FieldName="annot">
- <hdf5:DataType>
- <hdf5:AtomicType>
- <hdf5:StringType Cset="H5T_CSET_ASCII" StrSize="10" StrPad="H5T_STR_NULLTERM"/>
- </hdf5:AtomicType>
- </hdf5:DataType>
- </hdf5:Field>
- </hdf5:CompoundType>
- </hdf5:DataType>
- </hdf5:Field>
- <hdf5:Field FieldName="hdf5">
- <hdf5:DataType>
- <hdf5:CompoundType>
- <hdf5:Field FieldName="vmajor">
- <hdf5:DataType>
- <hdf5:AtomicType>
- <hdf5:IntegerType ByteOrder="BE" Sign="true" Size="4" />
- </hdf5:AtomicType>
- </hdf5:DataType>
- </hdf5:Field>
- <hdf5:Field FieldName="vminor">
- <hdf5:DataType>
- <hdf5:AtomicType>
- <hdf5:IntegerType ByteOrder="BE" Sign="true" Size="4" />
- </hdf5:AtomicType>
- </hdf5:DataType>
- </hdf5:Field>
- <hdf5:Field FieldName="rel">
- <hdf5:DataType>
- <hdf5:AtomicType>
- <hdf5:IntegerType ByteOrder="BE" Sign="true" Size="4" />
- </hdf5:AtomicType>
- </hdf5:DataType>
- </hdf5:Field>
- <hdf5:Field FieldName="annot">
- <hdf5:DataType>
- <hdf5:AtomicType>
- <hdf5:StringType Cset="H5T_CSET_ASCII" StrSize="10" StrPad="H5T_STR_NULLTERM"/>
- </hdf5:AtomicType>
- </hdf5:DataType>
- </hdf5:Field>
- </hdf5:CompoundType>
- </hdf5:DataType>
- </hdf5:Field>
- <hdf5:Field FieldName="mpi">
- <hdf5:DataType>
- <hdf5:CompoundType>
- <hdf5:Field FieldName="vmajor">
- <hdf5:DataType>
- <hdf5:AtomicType>
- <hdf5:IntegerType ByteOrder="BE" Sign="true" Size="4" />
- </hdf5:AtomicType>
- </hdf5:DataType>
- </hdf5:Field>
- <hdf5:Field FieldName="vminor">
- <hdf5:DataType>
- <hdf5:AtomicType>
- <hdf5:IntegerType ByteOrder="BE" Sign="true" Size="4" />
- </hdf5:AtomicType>
- </hdf5:DataType>
- </hdf5:Field>
- <hdf5:Field FieldName="rel">
- <hdf5:DataType>
- <hdf5:AtomicType>
- <hdf5:IntegerType ByteOrder="BE" Sign="true" Size="4" />
- </hdf5:AtomicType>
- </hdf5:DataType>
- </hdf5:Field>
- <hdf5:Field FieldName="annot">
- <hdf5:DataType>
- <hdf5:AtomicType>
- <hdf5:StringType Cset="H5T_CSET_ASCII" StrSize="10" StrPad="H5T_STR_NULLTERM"/>
- </hdf5:AtomicType>
- </hdf5:DataType>
- </hdf5:Field>
- </hdf5:CompoundType>
- </hdf5:DataType>
- </hdf5:Field>
- <hdf5:Field FieldName="DoToc">
- <hdf5:DataType>
- <hdf5:AtomicType>
- <hdf5:IntegerType ByteOrder="BE" Sign="true" Size="4" />
- </hdf5:AtomicType>
- </hdf5:DataType>
- </hdf5:Field>
- <hdf5:Field FieldName="ReadOnly">
- <hdf5:DataType>
- <hdf5:AtomicType>
- <hdf5:IntegerType ByteOrder="BE" Sign="true" Size="4" />
- </hdf5:AtomicType>
- </hdf5:DataType>
- </hdf5:Field>
- <hdf5:Field FieldName="Clobber">
- <hdf5:DataType>
- <hdf5:AtomicType>
- <hdf5:IntegerType ByteOrder="BE" Sign="true" Size="4" />
- </hdf5:AtomicType>
- </hdf5:DataType>
- </hdf5:Field>
- <hdf5:Field FieldName="OSModes">
- <hdf5:DataType>
- <hdf5:AtomicType>
- <hdf5:IntegerType ByteOrder="BE" Sign="true" Size="4" />
- </hdf5:AtomicType>
- </hdf5:DataType>
- </hdf5:Field>
- </hdf5:CompoundType>
- </hdf5:DataType>
- <!-- Note: format of compound data not specified -->
- <hdf5:Data>
- <hdf5:DataFromFile>
- -604320037 "." "don't import" 1 0 0 0 "none" 0 1 0 "devel" 1 3 0 "" 0 0 0 "none" 1 2 1 "" 1 2 0 "" 1 0 1 0
- </hdf5:DataFromFile>
- </hdf5:Data>
- </hdf5:Dataset>
- </hdf5:Group>
- </hdf5:Group>
</hdf5:RootGroup>
</hdf5:HDF5-File>
diff --git a/tools/testfiles/tvlstr.h5.xml b/tools/testfiles/tvlstr.h5.xml
index 8a0a180..98a3b30 100644
--- a/tools/testfiles/tvlstr.h5.xml
+++ b/tools/testfiles/tvlstr.h5.xml
@@ -15,13 +15,6 @@ Expected output for 'h5dump --xml tvlstr.h5'
</hdf5:DataFromFile>
</hdf5:Data>
</hdf5:Attribute>
- <hdf5:NamedDataType Name="vl_string_type" OBJ-XID="xid_1576" H5Path="/vl_string_type" Parents="xid_928" H5ParentPaths="/">
- <hdf5:DataType>
- <hdf5:AtomicType>
- <hdf5:StringType Cset="H5T_CSET_ASCII" StrSize="H5T_VARIABLE" StrPad="H5T_STR_NULLPAD"/>
- </hdf5:AtomicType>
- </hdf5:DataType>
- </hdf5:NamedDataType>
<hdf5:Dataset Name="Dataset1" OBJ-XID="xid_976" H5Path= "/Dataset1" Parents="xid_928" H5ParentPaths="/">
<hdf5:StorageLayout>
<hdf5:ContiguousLayout/>
@@ -53,5 +46,12 @@ Expected output for 'h5dump --xml tvlstr.h5'
</hdf5:DataFromFile>
</hdf5:Data>
</hdf5:Dataset>
+ <hdf5:NamedDataType Name="vl_string_type" OBJ-XID="xid_1576" H5Path="/vl_string_type" Parents="xid_928" H5ParentPaths="/">
+ <hdf5:DataType>
+ <hdf5:AtomicType>
+ <hdf5:StringType Cset="H5T_CSET_ASCII" StrSize="H5T_VARIABLE" StrPad="H5T_STR_NULLPAD"/>
+ </hdf5:AtomicType>
+ </hdf5:DataType>
+ </hdf5:NamedDataType>
</hdf5:RootGroup>
</hdf5:HDF5-File>