summaryrefslogtreecommitdiffstats
path: root/tools/h5dump/h5dump.c
diff options
context:
space:
mode:
Diffstat (limited to 'tools/h5dump/h5dump.c')
-rw-r--r--tools/h5dump/h5dump.c3698
1 files changed, 1805 insertions, 1893 deletions
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 */
-
-