diff options
Diffstat (limited to 'tools')
35 files changed, 1135 insertions, 1212 deletions
diff --git a/tools/h5diff/h5diff_common.c b/tools/h5diff/h5diff_common.c index 9210d40..441f291 100644 --- a/tools/h5diff/h5diff_common.c +++ b/tools/h5diff/h5diff_common.c @@ -180,7 +180,7 @@ void parse_input(int argc, const char* argv[], const char** fname1, const char** *------------------------------------------------------------------------- */ - void print_results(hsize_t nfound, diff_opt_t* options) + void print_results(diff_opt_t* options) { if (options->m_quiet || options->err_stat) return; diff --git a/tools/h5diff/h5diff_common.h b/tools/h5diff/h5diff_common.h index 7cdf7cd..31b1b29 100644 --- a/tools/h5diff/h5diff_common.h +++ b/tools/h5diff/h5diff_common.h @@ -20,5 +20,5 @@ int check_n_input( const char* ); int check_f_input( const char* ); void parse_input(int argc, const char* argv[], const char** fname1, const char** fname2, const char** objname1, const char** objname2, diff_opt_t* options); void h5diff_exit(int status); -void print_results(hsize_t nfound, diff_opt_t* options); +void print_results(diff_opt_t* options); diff --git a/tools/h5diff/h5diff_main.c b/tools/h5diff/h5diff_main.c index 51c618e..cd23d4b 100644 --- a/tools/h5diff/h5diff_main.c +++ b/tools/h5diff/h5diff_main.c @@ -63,7 +63,7 @@ int main(int argc, const char *argv[]) nfound = h5diff(fname1,fname2,objname1,objname2,&options); - print_results(nfound, &options); + print_results(&options); /*------------------------------------------------------------------------- * exit code diff --git a/tools/h5diff/ph5diff_main.c b/tools/h5diff/ph5diff_main.c index c469a4b..bb4cd1a 100644 --- a/tools/h5diff/ph5diff_main.c +++ b/tools/h5diff/ph5diff_main.c @@ -79,7 +79,7 @@ int main(int argc, const char *argv[]) nfound = h5diff(fname1,fname2,objname1,objname2,&options); - print_results(nfound, &options); + print_results(&options); MPI_Finalize(); @@ -95,7 +95,7 @@ int main(int argc, const char *argv[]) MPI_Barrier(MPI_COMM_WORLD); - print_results(nfound, &options); + print_results(&options); print_manager_output(); MPI_Finalize(); diff --git a/tools/h5dump/h5dump.c b/tools/h5dump/h5dump.c index 2a99989..8a5e192 100644 --- a/tools/h5dump/h5dump.c +++ b/tools/h5dump/h5dump.c @@ -59,7 +59,7 @@ static char *prefix; static const char *driver = NULL; /* The driver to open the file with. */ -static const dump_header *dump_header_format; +static const h5dump_header_t *dump_header_format; /* things to display or which are set via command line parameters */ static int display_all = TRUE; @@ -86,21 +86,20 @@ static int doxml = 0; static int useschema = 1; static const char *xml_dtd_uri = NULL; static const char *xmlnsprefix="hdf5:"; +static int indent; /*how far in to indent the line */ /** end XML **/ /* internal functions */ -static hid_t h5_fileaccess(void); -static void dump_oid(hid_t oid); -static void print_enum(hid_t type); -static herr_t dump_all(hid_t group, const char *name, void *op_data); -#ifdef LATER -static void check_compression(hid_t); -#endif /* LATER */ -static int xml_name_to_XID(const char *, char *, int , int ); -static void init_prefix(char **prfx, size_t prfx_len); - -static h5dump_t dataformat = { +static hid_t h5_fileaccess(void); +static void dump_oid(hid_t oid); +static void print_enum(hid_t type); +static herr_t dump_all(hid_t group, const char *name, void *op_data); +static int xml_name_to_XID(const char *, char *, int , int ); +static void init_prefix(char **prfx, size_t prfx_len); +static void add_prefix(char **prfx, size_t *prfx_len, const char *name); + +static h5tool_format_t dataformat = { 0, /*raw */ "", /*fmt_raw */ @@ -184,7 +183,7 @@ static h5dump_t dataformat = { * * This table only affects XML output. */ -static h5dump_t xml_dataformat = { +static h5tool_format_t xml_dataformat = { 0, /*raw */ "", /*fmt_raw */ @@ -255,13 +254,13 @@ static h5dump_t xml_dataformat = { /** XML **/ -static const dump_header standardformat = { +static const h5dump_header_t standardformat = { "standardformat", /*name */ "HDF5", /*fileebgin */ "", /*fileend */ SUPER_BLOCK, /*bootblockbegin */ "", /*bootblockend */ - GROUPNAME, /*groupbegin */ + GROUP, /*groupbegin */ "", /*groupend */ DATASET, /*datasetbegin */ "", /*datasetend */ @@ -1335,244 +1334,263 @@ static herr_t dump_all(hid_t group, const char *name, void * op_data) { hid_t obj; - char *targbuf, *tmp = NULL; + char *obj_path = NULL; /* Full path of object */ H5G_stat_t statbuf; herr_t ret = SUCCEED; - H5Gget_objinfo(group, name, FALSE, &statbuf); + /* Stat the object */ + if(H5Gget_objinfo(group, name, FALSE, &statbuf) < 0) { + error_msg(progname, "unable to get object information\n"); + d_status = EXIT_FAILURE; + ret = FAIL; + goto done; + } /* end if */ if (*(int *)op_data != H5G_UNKNOWN && statbuf.type != *(int *) op_data) goto done; - tmp = malloc(strlen(prefix) + strlen(name) + 2); - strcpy(tmp, prefix); + /* Build the object's path name */ + obj_path = HDmalloc(HDstrlen(prefix) + HDstrlen(name) + 2); + HDassert(obj_path); + HDstrcpy(obj_path, prefix); + HDstrcat(obj_path, "/"); + HDstrcat(obj_path, name); switch (statbuf.type) { - case H5G_LINK: - indentation(indent); - targbuf = malloc(statbuf.u.slink.linklen); + case H5G_LINK: + { + char *targbuf; - if (!doxml) { - begin_obj(dump_header_format->softlinkbegin, name, - dump_header_format->softlinkblockbegin); - indentation(indent + COL); - } + indentation(indent); + targbuf = HDmalloc(statbuf.u.slink.linklen); + HDassert(targbuf); - if (H5Gget_linkval(group, name, statbuf.u.slink.linklen, targbuf) < 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 = malloc(100); - char *parentxid = malloc(100); - char *targetxid = malloc(100); - char *t_prefix = xml_escape_the_name(strcmp(prefix,"") ? prefix : "/"); - char *t_name = xml_escape_the_name(name); - char *t_targbuf = xml_escape_the_name(targbuf); - char *tmp2, *t_tmp; - int res; - - tmp2 = malloc(strlen(prefix) + statbuf.u.slink.linklen + 1); - strcpy(tmp2, prefix); - - if (targbuf && targbuf[0] == '/') - strcpy(tmp2, targbuf); - else - strcat(strcat(tmp2, "/"), targbuf); - - t_tmp = xml_escape_the_name(strcat(strcat(tmp, "/"), name)); - xml_name_to_XID(t_tmp,linkxid,100,1); - xml_name_to_XID(prefix,parentxid,100,1); - - res = xml_name_to_XID(tmp2,targetxid,100,0); - - if (res == 0) { - /* target obj found */ - printf("<%sSoftLink LinkName=\"%s\" " - "OBJ-XID=\"%s\" " - "H5SourcePath=\"%s\" " + if (!doxml) { + begin_obj(dump_header_format->softlinkbegin, name, + dump_header_format->softlinkblockbegin); + indentation(indent + COL); + } + + if (H5Gget_linkval(group, name, statbuf.u.slink.linklen, targbuf) < 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) + statbuf.u.slink.linklen + 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, - linkxid, - t_tmp, - t_targbuf, targetxid, - parentxid, t_prefix); - free(targetxid); - } else { - /* dangling link -- omit from xml attributes */ - printf("<%sSoftLink LinkName=\"%s\" " - "OBJ-XID=\"%s\" " - "H5SourcePath=\"%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, - linkxid, - t_tmp, - t_targbuf, - parentxid, t_prefix); - } + "Parents=\"%s\" H5ParentPaths=\"%s\" />\n", + xmlnsprefix, + t_name, /* LinkName */ + linkxid, /* OBJ-XID */ + t_obj_path, /* H5SourcePath */ + t_targbuf, /* TargetPath */ + parentxid, /* Parents */ + t_prefix); /* H5ParentPaths */ + } - free(t_name); - free(t_targbuf); - free(t_tmp); - free(tmp2); - free(linkxid); - free(parentxid); - } - } + HDfree(t_prefix); + HDfree(t_name); + HDfree(t_targbuf); + HDfree(t_obj_path); + HDfree(t_link_path); + } + } - if (!doxml) { - indentation(indent); - end_obj(dump_header_format->softlinkend, - dump_header_format->softlinkblockend); - } + if (!doxml) { + indentation(indent); + end_obj(dump_header_format->softlinkend, + dump_header_format->softlinkblockend); + } - free(targbuf); - break; + HDfree(targbuf); + break; + } - case H5G_GROUP: - if ((obj = H5Gopen(group, name)) < 0) { - error_msg(progname, "unable to dump group \"%s\"\n", name); - d_status = EXIT_FAILURE; - ret = FAIL; - } else { - size_t new_len = strlen(prefix) + strlen(name) + 2; + case H5G_GROUP: + if ((obj = H5Gopen(group, name)) < 0) { + error_msg(progname, "unable to dump group \"%s\"\n", name); + d_status = EXIT_FAILURE; + ret = FAIL; + } else { + char *old_prefix; /* Pointer to previous prefix */ - if (prefix_len <= new_len) { - prefix_len = new_len + 1; - prefix = realloc(prefix, prefix_len); - } + /* Keep copy of prefix before iterating into group */ + old_prefix = HDstrdup(prefix); + HDassert(old_prefix); - strcat(strcat(prefix, "/"), name); - dump_function_table->dump_group_function(obj, name); - strcpy(prefix, tmp); - H5Gclose(obj); - } + /* Append group name to prefix */ + add_prefix(&prefix, &prefix_len, name); - break; + /* Iterate into group */ + dump_function_table->dump_group_function(obj, name); - case H5G_DATASET: - if ((obj = H5Dopen(group, name)) >= 0) { - /* hard link */ - H5Gget_objinfo(obj, ".", TRUE, &statbuf); + /* Restore old prefix name */ + HDstrcpy(prefix, old_prefix); + HDfree(old_prefix); - if (statbuf.u.obj.nlink > 1) { - obj_t *found_obj; /* Found object */ + /* Close group */ + H5Gclose(obj); + } - found_obj = search_obj(dset_table, statbuf.u.obj.objno); + break; - 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); + case H5G_DATASET: + if ((obj = H5Dopen(group, name)) >= 0) { + /* hard link */ + H5Gget_objinfo(obj, ".", TRUE, &statbuf); + + if (statbuf.u.obj.nlink > 1) { + obj_t *found_obj; /* Found object */ + + found_obj = search_obj(dset_table, statbuf.u.obj.objno); + + 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 (!doxml) { + begin_obj(dump_header_format->datasetbegin, name, + dump_header_format->datasetblockbegin); + 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]; + char parentxid[100]; + char pointerxid[100]; + + /* Create OBJ-XIDs for the parent and object */ + xml_name_to_XID(obj_path, dsetxid, sizeof(dsetxid), 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); + + HDfree(t_name); + HDfree(t_obj_path); + HDfree(t_prefix); + } - if (!doxml) { - begin_obj(dump_header_format->datasetbegin, name, - dump_header_format->datasetblockbegin); - 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_tmp; - char *t_prefix; - char *t_name; - char *dsetxid = malloc(100); - char *parentxid = malloc(100); - char *pointerxid = malloc(100); - char *tx_tmp = malloc(strlen(tmp)+strlen(name)+1); - strcpy(tx_tmp,tmp); - t_tmp = xml_escape_the_name(strcat(strcat(tx_tmp, "/"), name)); - t_prefix = xml_escape_the_name(prefix); - t_name = xml_escape_the_name(name); - xml_name_to_XID( strcat(strcat(tmp,"/"),name), dsetxid,100,1); - xml_name_to_XID( prefix ,parentxid,100,1); - - printf("<%sDataset Name=\"%s\" OBJ-XID=\"%s-%d\" " - "H5Path=\"%s\" Parents=\"%s\" " - "H5ParentPaths=\"%s\">\n", - xmlnsprefix, - t_name, dsetxid, get_next_xid(), - t_tmp, parentxid, - (strcmp(prefix, "") ? t_prefix : "/")); - - indentation(indent + COL); - xml_name_to_XID(found_obj->objname,pointerxid,100,1); - printf("<%sDatasetPtr OBJ-XID=\"%s\" H5Path=\"%s\"/>\n", - xmlnsprefix, - pointerxid,t_tmp); - indentation(indent); - printf("</%sDataset>\n", xmlnsprefix); - - free(t_name); - free(dsetxid); - free(parentxid); - free(pointerxid); - free(t_tmp); - free(tx_tmp); - free(t_prefix); - } - - H5Dclose(obj); - goto done; - } else { - found_obj->displayed = TRUE; + H5Dclose(obj); + goto done; + } else { + found_obj->displayed = TRUE; + } + } /* end if */ - } - } + 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; - 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 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; - case H5G_TYPE: - if ((obj = H5Topen(group, name)) < 0) { - error_msg(progname, "unable to dump data type \"%s\"\n", name); - d_status = EXIT_FAILURE; + default: + error_msg(progname, "unknown object \"%s\"\n", name); + d_status = EXIT_FAILURE; ret = FAIL; - } else { - dump_function_table->dump_named_datatype_function(obj, name); - H5Tclose(obj); - } - break; - - default: - error_msg(progname, "unknown object \"%s\"\n", name); - d_status = EXIT_FAILURE; - ret = FAIL; } done: - free(tmp); + if(obj_path) + HDfree(obj_path); return ret; } @@ -1630,19 +1648,19 @@ dump_group(hid_t gid, const char *name) char type_name[1024], *tmp; int xtype = H5G_UNKNOWN; /* dump all */ - tmp = malloc(strlen(prefix) + strlen(name) + 2); - strcpy(tmp, prefix); + tmp = HDmalloc(HDstrlen(prefix) + HDstrlen(name) + 2); + HDstrcpy(tmp, prefix); indentation(indent); begin_obj(dump_header_format->groupbegin, name, dump_header_format->groupblockbegin); indent += COL; if (display_oid) - dump_oid(gid); + dump_oid(gid); dump_comment(gid); - if (!strcmp(name, "/") && unamedtype) { + if (!HDstrcmp(name, "/") && unamedtype) { unsigned u; /* Local index variable */ /* dump unamed type in root group */ @@ -1718,33 +1736,33 @@ dump_dataset(hid_t did, const char *name, struct subset_t *sset) dump_dataspace(space); if (display_oid) - dump_oid(did); + dump_oid(did); if (display_dcpl) - dump_dcpl(dcpl_id, type, did); + dump_dcpl(dcpl_id, type, did); if (display_data) switch (H5Tget_class(type)) { - case H5T_TIME: - indentation(indent + COL); - printf("DATA{ not yet implemented.}\n"); - break; + case H5T_TIME: + indentation(indent + COL); + printf("DATA{ not yet implemented.}\n"); + break; - case H5T_INTEGER: - case H5T_FLOAT: - case H5T_STRING: - case H5T_BITFIELD: - case H5T_OPAQUE: - case H5T_COMPOUND: - case H5T_REFERENCE: - case H5T_ENUM: - case H5T_VLEN: - case H5T_ARRAY: - dump_data(did, DATASET_DATA, sset, display_ai); - break; + case H5T_INTEGER: + case H5T_FLOAT: + case H5T_STRING: + case H5T_BITFIELD: + case H5T_OPAQUE: + case H5T_COMPOUND: + case H5T_REFERENCE: + case H5T_ENUM: + case H5T_VLEN: + case H5T_ARRAY: + dump_data(did, DATASET_DATA, sset, display_ai); + break; - default: - break; + default: + break; } indent += COL; @@ -1775,7 +1793,7 @@ dump_dataset(hid_t did, const char *name, struct subset_t *sset) static void dump_dims(hsize_t *s, int dims) { - register int i; + int i; for (i = 0; i < dims; i++) { printf("%u", (unsigned int)s[i]); @@ -1864,7 +1882,7 @@ dump_subsetting_header(struct subset_t *sset, int dims) static void dump_data(hid_t obj_id, int obj_data, struct subset_t *sset, int pindex) { - h5dump_t *outputformat = &dataformat; + h5tool_format_t *outputformat = &dataformat; int status = -1; void *buf; hid_t space, type, p_type; @@ -1878,12 +1896,11 @@ dump_data(hid_t obj_id, int obj_data, struct subset_t *sset, int pindex) outputformat->do_escape=display_escape; /* print the matrix indices */ outputformat->pindex=pindex; - if (outputformat->pindex) - { - outputformat->idx_fmt = "(%s): "; - outputformat->idx_n_fmt = "%lu"; - outputformat->idx_sep = ","; - outputformat->line_pre = "%s"; + if (outputformat->pindex) { + outputformat->idx_fmt = "(%s): "; + outputformat->idx_n_fmt = "%lu"; + outputformat->idx_sep = ","; + outputformat->line_pre = "%s"; } indent += COL; @@ -1914,7 +1931,7 @@ dump_data(hid_t obj_id, int obj_data, struct subset_t *sset, int pindex) if (obj_data == DATASET_DATA) { hid_t f_type = H5Dget_type(obj_id); char string_prefix[64]; - h5dump_t string_dataformat; + h5tool_format_t string_dataformat; if (display_char && H5Tget_size(f_type) == 1 && H5Tget_class(f_type) == H5T_INTEGER) { /* @@ -1954,7 +1971,7 @@ dump_data(hid_t obj_id, int obj_data, struct subset_t *sset, int pindex) status = SUCCEED; } else { char string_prefix[64]; - h5dump_t string_dataformat; + h5tool_format_t string_dataformat; type = H5Aget_type(obj_id); p_type = h5tools_get_native_type(type); @@ -2062,15 +2079,15 @@ dump_oid(hid_t oid) static void dump_comment(hid_t obj_id) { - char comment[50]; + char comment[50]; - comment[0] = '\0'; - H5Gget_comment(obj_id, ".", sizeof(comment), comment); + comment[0] = '\0'; + H5Gget_comment(obj_id, ".", sizeof(comment), comment); - if (comment[0]) { - indentation(indent); - printf("COMMENT \"%s\"\n", comment); - } + if (comment[0]) { + indentation(indent); + printf("COMMENT \"%s\"\n", comment); + } } @@ -2094,7 +2111,7 @@ static void dump_fill_value(hid_t dcpl,hid_t type_id, hid_t obj_id) size_t size; void *buf=NULL; hsize_t nelmts=1; - h5dump_t *outputformat = &dataformat; + h5tool_format_t *outputformat = &dataformat; hid_t n_type; memset(&ctx, 0, sizeof(ctx)); @@ -2113,7 +2130,6 @@ static void dump_fill_value(hid_t dcpl,hid_t type_id, hid_t obj_id) if (buf) free (buf); - } @@ -2131,321 +2147,303 @@ static void dump_fill_value(hid_t dcpl,hid_t type_id, hid_t obj_id) static void dump_dcpl(hid_t dcpl_id,hid_t type_id, hid_t obj_id) { - int nfilters; /* number of filters */ - unsigned filt_flags; /* filter flags */ - H5Z_filter_t filtn; /* filter identification number */ - unsigned cd_values[20]; /* filter client data values */ - size_t cd_nelmts; /* filter client number of values */ - char f_name[256]; /* filter name */ - unsigned szip_options_mask; - unsigned szip_pixels_per_block; - hsize_t chsize[64]; /* chunk size in elements */ - int rank; /* rank */ - char name[256]; /* external file name */ - off_t offset; /* offset of external file */ - hsize_t size; /* size of external file */ - H5D_fill_value_t fvstatus; - H5D_alloc_time_t at; - H5D_fill_time_t ft; - hsize_t storage_size; - haddr_t ioffset; - int i, next; - unsigned j; - - storage_size=H5Dget_storage_size(obj_id); - ioffset=H5Dget_offset(obj_id); - next=H5Pget_external_count(dcpl_id); - strcpy(f_name,"\0"); - -/*------------------------------------------------------------------------- - * STORAGE_LAYOUT - *------------------------------------------------------------------------- - */ - indentation(indent + COL); - printf("%s %s\n", STORAGE_LAYOUT, BEGIN); - - if (H5D_CHUNKED == H5Pget_layout(dcpl_id)) - { - /*start indent */ - indent += COL; - indentation(indent + COL); - printf("%s ", CHUNKED); - rank = H5Pget_chunk(dcpl_id,NELMTS(chsize),chsize); - HDfprintf(stdout,"%s %Hu", dump_header_format->dataspacedimbegin, chsize[0]); - for ( i=1; i<rank; i++) - HDfprintf(stdout, ", %Hu", chsize[i]); - printf(" %s\n", dump_header_format->dataspacedimend); - indentation(indent + COL); - HDfprintf(stdout, "SIZE %Hu\n ", storage_size); - /*end indent */ - indent -= COL; - indentation(indent + COL); - printf("%s\n",END); - } - else if (H5D_COMPACT == H5Pget_layout(dcpl_id)) - { - /*start indent */ - indent += COL; - indentation(indent + COL); - printf("%s\n", COMPACT); - indentation(indent + COL); - HDfprintf(stdout, "SIZE %Hu\n", storage_size); - /*end indent */ - indent -= COL; - indentation(indent + COL); - printf("%s\n",END); - } - else if (H5D_CONTIGUOUS == H5Pget_layout(dcpl_id)) - { - /*------------------------------------------------------------------------- - * EXTERNAL_FILE - *------------------------------------------------------------------------- - */ - if (next) - { - /*start indent */ - indent += COL; - indentation(indent + COL); - printf("%s\n", CONTIGUOUS); - indentation(indent + COL); - printf("%s %s\n", EXTERNAL, BEGIN); - /*start indent */ - indent += COL; - for ( j=0; j<(unsigned)next; j++) { - H5Pget_external(dcpl_id,j,sizeof(name),name,&offset,&size); + int nfilters; /* number of filters */ + unsigned filt_flags; /* filter flags */ + H5Z_filter_t filtn; /* filter identification number */ + unsigned cd_values[20]; /* filter client data values */ + size_t cd_nelmts; /* filter client number of values */ + char f_name[256]; /* filter name */ + unsigned szip_options_mask; + unsigned szip_pixels_per_block; + hsize_t chsize[64]; /* chunk size in elements */ + int rank; /* rank */ + char name[256]; /* external file name */ + off_t offset; /* offset of external file */ + hsize_t size; /* size of external file */ + H5D_fill_value_t fvstatus; + H5D_alloc_time_t at; + H5D_fill_time_t ft; + hsize_t storage_size; + haddr_t ioffset; + int i, next; + unsigned j; + + storage_size=H5Dget_storage_size(obj_id); + ioffset=H5Dget_offset(obj_id); + next=H5Pget_external_count(dcpl_id); + strcpy(f_name,"\0"); + + /*------------------------------------------------------------------------- + * STORAGE_LAYOUT + *------------------------------------------------------------------------- + */ indentation(indent + COL); - HDfprintf(stdout,"FILENAME %s SIZE %Hu OFFSET %ld\n",name,size,offset); - } - /*end indent */ - indent -= COL; - indentation(indent + COL); - printf("%s\n",END); - /*end indent */ - indent -= COL; - indentation(indent + COL); - printf("%s\n",END); - } - else - { - /*start indent */ - indent += COL; - indentation(indent + COL); - printf("%s\n", CONTIGUOUS); - indentation(indent + COL); - HDfprintf(stdout,"SIZE %Hu\n", storage_size); - indentation(indent + COL); - HDfprintf(stdout,"OFFSET %Hu\n", ioffset); - /*end indent */ - indent -= COL; - indentation(indent + COL); - printf("%s\n",END); - } - } -/*------------------------------------------------------------------------- - * FILTERS - *------------------------------------------------------------------------- - */ - nfilters = H5Pget_nfilters(dcpl_id); + printf("%s %s\n", STORAGE_LAYOUT, BEGIN); + + if (H5D_CHUNKED == H5Pget_layout(dcpl_id)) { + /*start indent */ + indent += COL; + indentation(indent + COL); + printf("%s ", CHUNKED); + + rank = H5Pget_chunk(dcpl_id,NELMTS(chsize),chsize); + HDfprintf(stdout,"%s %Hu", dump_header_format->dataspacedimbegin, chsize[0]); + for ( i=1; i<rank; i++) + HDfprintf(stdout, ", %Hu", chsize[i]); + printf(" %s\n", dump_header_format->dataspacedimend); + indentation(indent + COL); + HDfprintf(stdout, "SIZE %Hu\n ", storage_size); + + /*end indent */ + indent -= COL; + indentation(indent + COL); + printf("%s\n",END); + } + else if (H5D_COMPACT == H5Pget_layout(dcpl_id)) { + /*start indent */ + indent += COL; + indentation(indent + COL); + printf("%s\n", COMPACT); + + indentation(indent + COL); + HDfprintf(stdout, "SIZE %Hu\n", storage_size); + + /*end indent */ + indent -= COL; + indentation(indent + COL); + printf("%s\n",END); + } + else if (H5D_CONTIGUOUS == H5Pget_layout(dcpl_id)) { + /*------------------------------------------------------------------------- + * EXTERNAL_FILE + *------------------------------------------------------------------------- + */ + if (next) { + /*start indent */ + indent += COL; + indentation(indent + COL); + printf("%s\n", CONTIGUOUS); + + indentation(indent + COL); + printf("%s %s\n", EXTERNAL, BEGIN); + + /*start indent */ + indent += COL; + for ( j=0; j<(unsigned)next; j++) { + H5Pget_external(dcpl_id,j,sizeof(name),name,&offset,&size); + indentation(indent + COL); + HDfprintf(stdout,"FILENAME %s SIZE %Hu OFFSET %ld\n",name,size,offset); + } + /*end indent */ + indent -= COL; + indentation(indent + COL); + printf("%s\n",END); + + /*end indent */ + indent -= COL; + indentation(indent + COL); + printf("%s\n",END); + } + else { + /*start indent */ + indent += COL; + indentation(indent + COL); + printf("%s\n", CONTIGUOUS); - indentation(indent + COL); - printf("%s %s\n", FILTERS, BEGIN); - indent += COL; + indentation(indent + COL); + HDfprintf(stdout,"SIZE %Hu\n", storage_size); + indentation(indent + COL); + HDfprintf(stdout,"OFFSET %Hu\n", ioffset); + + /*end indent */ + indent -= COL; + indentation(indent + COL); + printf("%s\n",END); + } + } + /*------------------------------------------------------------------------- + * FILTERS + *------------------------------------------------------------------------- + */ + nfilters = H5Pget_nfilters(dcpl_id); - if (nfilters) - { - for (i=0; i<nfilters; i++) - { - cd_nelmts = NELMTS(cd_values); + indentation(indent + COL); + printf("%s %s\n", FILTERS, BEGIN); + indent += COL; + + if (nfilters) { + for (i=0; i<nfilters; i++) { + cd_nelmts = NELMTS(cd_values); #ifdef H5_WANT_H5_V1_6_COMPAT - filtn = H5Pget_filter(dcpl_id, - (unsigned)i, - &filt_flags, - &cd_nelmts, - cd_values, - sizeof(f_name), - f_name); + filtn = H5Pget_filter(dcpl_id, (unsigned)i, &filt_flags, &cd_nelmts, + cd_values, sizeof(f_name), f_name); #else - filtn = H5Pget_filter(dcpl_id, - (unsigned)i, - &filt_flags, - &cd_nelmts, - cd_values, - sizeof(f_name), - f_name, - NULL); + filtn = H5Pget_filter(dcpl_id, (unsigned)i, &filt_flags, &cd_nelmts, + cd_values, sizeof(f_name), f_name, NULL); #endif /* H5_WANT_H5_V1_6_COMPAT */ - switch (filtn) - { - case H5Z_FILTER_DEFLATE: + switch (filtn) { + case H5Z_FILTER_DEFLATE: + indentation(indent + COL); + printf("%s %s %s %d %s\n", DEFLATE, BEGIN, DEFLATE_LEVEL, cd_values[0], END); + break; + case H5Z_FILTER_SHUFFLE: + indentation(indent + COL); + printf("%s\n", SHUFFLE); + break; + case H5Z_FILTER_FLETCHER32: + indentation(indent + COL); + printf("%s\n", FLETCHER32); + break; + case H5Z_FILTER_SZIP: + { + szip_options_mask=cd_values[0];; + szip_pixels_per_block=cd_values[1]; + + indentation(indent + COL); + printf("%s %s\n",SZIP, BEGIN); + + /*start indent */ + indent += COL; + indentation(indent + COL); + printf("PIXELS_PER_BLOCK %d\n", szip_pixels_per_block); + + indentation(indent + COL); + if (szip_options_mask & H5_SZIP_CHIP_OPTION_MASK) + printf("MODE %s\n", "HARDWARE"); + else if (szip_options_mask & H5_SZIP_ALLOW_K13_OPTION_MASK) + printf("MODE %s\n", "K13"); + + indentation(indent + COL); + if (szip_options_mask & H5_SZIP_EC_OPTION_MASK) + printf("CODING %s\n", "ENTROPY"); + else if (szip_options_mask & H5_SZIP_NN_OPTION_MASK) + printf("CODING %s\n", "NEAREST NEIGHBOUR"); + + indentation(indent + COL); + if (szip_options_mask & H5_SZIP_LSB_OPTION_MASK) + printf("BYTE_ORDER %s\n", "LSB"); + else if (szip_options_mask & H5_SZIP_MSB_OPTION_MASK) + printf("BYTE_ORDER %s\n", "MSB"); + + indentation(indent + COL); + if (szip_options_mask & H5_SZIP_RAW_OPTION_MASK) + printf("HEADER %s\n", "RAW"); + + /*end indent */ + indent -= COL; + indentation(indent + COL); + printf("%s\n",END); + } + break; + case H5Z_FILTER_NBIT: + indentation(indent + COL); + printf("%s\n", NBIT); + break; + case H5Z_FILTER_SCALEOFFSET: + indentation(indent + COL); + printf("%s %s %s %d %s\n", SCALEOFFSET, BEGIN, SCALEOFFSET_MINBIT, cd_values[0], END); + break; + default: + indentation(indent + COL); + if (H5Zfilter_avail(filtn)) + printf("%s %s\n", "USER_REGISTERED_FILTER", BEGIN); + else + printf("%s %s\n", "UNKNOWN_FILTER", BEGIN); + /*start indent */ + indent += COL; + indentation(indent + COL); + printf("FILTER_ID %d\n", filtn); + if (f_name[0]!='\0') { + indentation(indent + COL); + printf("COMMENT %s\n", f_name); + } + if (cd_nelmts) { + indentation(indent + COL); + printf("%s %s ","PARAMS", BEGIN); + for (j=0; j<cd_nelmts; j++) + printf("%d ", cd_values[j]); + printf("%s\n", END); + } + break; + }/*switch*/ + } /*i*/ + }/*nfilters*/ + else { + indentation(indent + COL); + printf("NONE\n"); + } + indent -= COL; indentation(indent + COL); - printf("%s %s %s %d %s\n", DEFLATE, BEGIN, DEFLATE_LEVEL, cd_values[0], END); - break; - case H5Z_FILTER_SHUFFLE: + printf("%s\n",END); + + /*------------------------------------------------------------------------- + * FILLVALUE + *------------------------------------------------------------------------- + */ indentation(indent + COL); - printf("%s\n", SHUFFLE); - break; - case H5Z_FILTER_FLETCHER32: + printf("%s %s\n", FILLVALUE, BEGIN); + /*start indent */ + indent += COL; indentation(indent + COL); - printf("%s\n", FLETCHER32); - break; - case H5Z_FILTER_SZIP: - { - szip_options_mask=cd_values[0];; - szip_pixels_per_block=cd_values[1]; - - indentation(indent + COL); - printf("%s %s\n",SZIP, BEGIN); - - /*start indent */ - indent += COL; - indentation(indent + COL); - printf("PIXELS_PER_BLOCK %d\n", szip_pixels_per_block); - - indentation(indent + COL); - if (szip_options_mask & H5_SZIP_CHIP_OPTION_MASK) - printf("MODE %s\n", "HARDWARE"); - else if (szip_options_mask & H5_SZIP_ALLOW_K13_OPTION_MASK) - printf("MODE %s\n", "K13"); - - indentation(indent + COL); - if (szip_options_mask & H5_SZIP_EC_OPTION_MASK) - printf("CODING %s\n", "ENTROPY"); - else if (szip_options_mask & H5_SZIP_NN_OPTION_MASK) - printf("CODING %s\n", "NEAREST NEIGHBOUR"); - - indentation(indent + COL); - if (szip_options_mask & H5_SZIP_LSB_OPTION_MASK) - printf("BYTE_ORDER %s\n", "LSB"); - else if (szip_options_mask & H5_SZIP_MSB_OPTION_MASK) - printf("BYTE_ORDER %s\n", "MSB"); - - indentation(indent + COL); - if (szip_options_mask & H5_SZIP_RAW_OPTION_MASK) - printf("HEADER %s\n", "RAW"); - - /*end indent */ - indent -= COL; - indentation(indent + COL); - printf("%s\n",END); + printf("FILL_TIME "); + H5Pget_fill_time(dcpl_id, &ft); + switch ( ft ) { + case H5D_FILL_TIME_ALLOC: + printf("%s", "H5D_FILL_TIME_ALLOC\n"); + break; + case H5D_FILL_TIME_NEVER: + printf("%s", "H5D_FILL_TIME_NEVER\n"); + break; + case H5D_FILL_TIME_IFSET: + printf("%s", "H5D_FILL_TIME_IFSET\n"); + break; + default: + assert(0); + break; } - break; - case H5Z_FILTER_NBIT: indentation(indent + COL); - printf("%s\n", NBIT); - break; - case H5Z_FILTER_SCALEOFFSET: + printf("%s ", "VALUE "); + H5Pfill_value_defined(dcpl_id, &fvstatus); + if (fvstatus == H5D_FILL_VALUE_UNDEFINED) + printf("%s\n", "H5D_FILL_VALUE_UNDEFINED"); + else + dump_fill_value(dcpl_id,type_id,obj_id); + /* end indent */ + indent -= COL; indentation(indent + COL); - printf("%s %s %s %d %s\n", SCALEOFFSET, BEGIN, SCALEOFFSET_MINBIT, cd_values[0], END); - break; - default: + printf("\n"); indentation(indent + COL); - if (H5Zfilter_avail(filtn)) - printf("%s %s\n", "USER_REGISTERED_FILTER", BEGIN); - else - printf("%s %s\n", "UNKNOWN_FILTER", BEGIN); + printf("%s\n",END); + + /*------------------------------------------------------------------------- + * ALLOCATION_TIME + *------------------------------------------------------------------------- + */ + indentation(indent + COL); + printf("ALLOCATION_TIME %s\n",BEGIN); /*start indent */ indent += COL; indentation(indent + COL); - printf("FILTER_ID %d\n", filtn); - if (f_name[0]!='\0') { - indentation(indent + COL); - printf("COMMENT %s\n", f_name); - } - if (cd_nelmts) { - indentation(indent + COL); - printf("%s %s ","PARAMS", BEGIN); - for (j=0; j<cd_nelmts; j++) { - printf("%d ", cd_values[j]); - } - printf("%s\n", END); + H5Pget_alloc_time(dcpl_id, &at); + switch (at) { + case H5D_ALLOC_TIME_EARLY: + printf("%s", "H5D_ALLOC_TIME_EARLY\n"); + break; + case H5D_ALLOC_TIME_INCR: + printf("%s", "H5D_ALLOC_TIME_INCR\n"); + break; + case H5D_ALLOC_TIME_LATE: + printf("%s", "H5D_ALLOC_TIME_LATE\n"); + break; + default: + assert(0); + break; } - break; - }/*switch*/ - } /*i*/ - }/*nfilters*/ - else - { - indentation(indent + COL); - printf("NONE\n"); - } - indent -= COL; - indentation(indent + COL); - printf("%s\n",END); - -/*------------------------------------------------------------------------- - * FILLVALUE - *------------------------------------------------------------------------- - */ - indentation(indent + COL); - printf("%s %s\n", FILLVALUE, BEGIN); - /*start indent */ - indent += COL; - indentation(indent + COL); - printf("FILL_TIME "); - H5Pget_fill_time(dcpl_id, &ft); - switch ( ft ) - { - case H5D_FILL_TIME_ALLOC: - printf("%s", "H5D_FILL_TIME_ALLOC\n"); - break; - case H5D_FILL_TIME_NEVER: - printf("%s", "H5D_FILL_TIME_NEVER\n"); - break; - case H5D_FILL_TIME_IFSET: - printf("%s", "H5D_FILL_TIME_IFSET\n"); - break; - default: - assert(0); - break; - } - indentation(indent + COL); - printf("%s ", "VALUE "); - H5Pfill_value_defined(dcpl_id, &fvstatus); - if (fvstatus == H5D_FILL_VALUE_UNDEFINED) - { - printf("%s\n", "H5D_FILL_VALUE_UNDEFINED"); - } - else - { - dump_fill_value(dcpl_id,type_id,obj_id); - } - /* end indent */ - indent -= COL; - indentation(indent + COL); - printf("\n"); - indentation(indent + COL); - printf("%s\n",END); - -/*------------------------------------------------------------------------- - * ALLOCATION_TIME - *------------------------------------------------------------------------- - */ - indentation(indent + COL); - printf("ALLOCATION_TIME %s\n",BEGIN); - /*start indent */ - indent += COL; - indentation(indent + COL); - H5Pget_alloc_time(dcpl_id, &at); - switch (at) - { - case H5D_ALLOC_TIME_EARLY: - printf("%s", "H5D_ALLOC_TIME_EARLY\n"); - break; - case H5D_ALLOC_TIME_INCR: - printf("%s", "H5D_ALLOC_TIME_INCR\n"); - break; - case H5D_ALLOC_TIME_LATE: - printf("%s", "H5D_ALLOC_TIME_LATE\n"); - break; - default: - assert(0); - break; - } - /* end indent */ - indent -= COL; - indentation(indent + COL); - printf("%s\n",END); + /* end indent */ + indent -= COL; + indentation(indent + COL); + printf("%s\n",END); } /*------------------------------------------------------------------------- @@ -2464,103 +2462,87 @@ dump_dcpl(hid_t dcpl_id,hid_t type_id, hid_t obj_id) static void dump_fcpl(hid_t fid) { - hid_t fcpl; /* file creation property list ID */ - hid_t fapl; /* file access property list ID */ - hsize_t userblock; /* userblock size retrieved from FCPL */ - size_t off_size; /* size of offsets in the file */ - size_t len_size; /* size of lengths in the file */ - unsigned super; /* superblock version # */ - unsigned freelist; /* free list version # */ - unsigned stab; /* symbol table entry version # */ - unsigned shhdr; /* shared object header version # */ - hid_t fdriver; /* file driver */ - char dname[15]; /* buffer to store driver name */ - unsigned sym_lk; /* symbol table B-tree leaf 'K' value */ - unsigned sym_ik; /* symbol table B-tree internal 'K' value */ - unsigned istore_ik; /* indexed storage B-tree internal 'K' value */ - - fcpl=H5Fget_create_plist(fid); - H5Pget_version(fcpl, &super, &freelist, &stab, &shhdr); - H5Pget_userblock(fcpl,&userblock); - H5Pget_sizes(fcpl,&off_size,&len_size); - H5Pget_sym_k(fcpl,&sym_ik,&sym_lk); - H5Pget_istore_k(fcpl,&istore_ik); - H5Pclose(fcpl); - fapl=h5_fileaccess(); - fdriver=H5Pget_driver(fapl); - H5Pclose(fapl); - -/*------------------------------------------------------------------------- - * SUPER_BLOCK - *------------------------------------------------------------------------- - */ - printf("%s %s\n",SUPER_BLOCK, BEGIN); - indentation(indent + COL); - printf("%s %u\n","SUPERBLOCK_VERSION", super); - indentation(indent + COL); - printf("%s %u\n","FREELIST_VERSION", freelist); - indentation(indent + COL); - printf("%s %u\n","SYMBOLTABLE_VERSION", stab); - indentation(indent + COL); - printf("%s %u\n","OBJECTHEADER_VERSION", shhdr); - indentation(indent + COL); - HDfprintf(stdout,"%s %Hd\n","OFFSET_SIZE", (long_long)off_size); - indentation(indent + COL); - HDfprintf(stdout,"%s %Hd\n","LENGTH_SIZE", (long_long)len_size); - indentation(indent + COL); - printf("%s %u\n","BTREE_RANK", sym_ik); - indentation(indent + COL); - printf("%s %d\n","BTREE_LEAF", sym_lk); - - if (H5FD_CORE==fdriver) - { - strcpy(dname,"H5FD_CORE"); - } - else if (H5FD_FAMILY==fdriver) - { - strcpy(dname,"H5FD_FAMILY"); - } - else if (H5FD_LOG==fdriver) - { - strcpy(dname,"H5FD_LOG"); - } - else if (H5FD_MPIO==fdriver) - { - strcpy(dname,"H5FD_MPIO"); - } - else if (H5FD_MULTI==fdriver) - { - strcpy(dname,"H5FD_MULTI"); - } - else if (H5FD_SEC2==fdriver) - { - strcpy(dname,"H5FD_SEC2"); - } - else if (H5FD_STDIO==fdriver) - { - strcpy(dname,"H5FD_STDIO"); - } + hid_t fcpl; /* file creation property list ID */ + hid_t fapl; /* file access property list ID */ + hsize_t userblock; /* userblock size retrieved from FCPL */ + size_t off_size; /* size of offsets in the file */ + size_t len_size; /* size of lengths in the file */ + unsigned super; /* superblock version # */ + unsigned freelist; /* free list version # */ + unsigned stab; /* symbol table entry version # */ + unsigned shhdr; /* shared object header version # */ + hid_t fdriver; /* file driver */ + char dname[15]; /* buffer to store driver name */ + unsigned sym_lk; /* symbol table B-tree leaf 'K' value */ + unsigned sym_ik; /* symbol table B-tree internal 'K' value */ + unsigned istore_ik; /* indexed storage B-tree internal 'K' value */ + + fcpl=H5Fget_create_plist(fid); + H5Pget_version(fcpl, &super, &freelist, &stab, &shhdr); + H5Pget_userblock(fcpl,&userblock); + H5Pget_sizes(fcpl,&off_size,&len_size); + H5Pget_sym_k(fcpl,&sym_ik,&sym_lk); + H5Pget_istore_k(fcpl,&istore_ik); + H5Pclose(fcpl); + fapl=h5_fileaccess(); + fdriver=H5Pget_driver(fapl); + H5Pclose(fapl); + + /*------------------------------------------------------------------------- + * SUPER_BLOCK + *------------------------------------------------------------------------- + */ + printf("%s %s\n",SUPER_BLOCK, BEGIN); + indentation(indent + COL); + printf("%s %u\n","SUPERBLOCK_VERSION", super); + indentation(indent + COL); + printf("%s %u\n","FREELIST_VERSION", freelist); + indentation(indent + COL); + printf("%s %u\n","SYMBOLTABLE_VERSION", stab); + indentation(indent + COL); + printf("%s %u\n","OBJECTHEADER_VERSION", shhdr); + indentation(indent + COL); + HDfprintf(stdout,"%s %Hd\n","OFFSET_SIZE", (long_long)off_size); + indentation(indent + COL); + HDfprintf(stdout,"%s %Hd\n","LENGTH_SIZE", (long_long)len_size); + indentation(indent + COL); + printf("%s %u\n","BTREE_RANK", sym_ik); + indentation(indent + COL); + printf("%s %d\n","BTREE_LEAF", sym_lk); + + if (H5FD_CORE==fdriver) + HDstrcpy(dname,"H5FD_CORE"); + else if (H5FD_FAMILY==fdriver) + HDstrcpy(dname,"H5FD_FAMILY"); + else if (H5FD_LOG==fdriver) + HDstrcpy(dname,"H5FD_LOG"); + else if (H5FD_MPIO==fdriver) + HDstrcpy(dname,"H5FD_MPIO"); + else if (H5FD_MULTI==fdriver) + HDstrcpy(dname,"H5FD_MULTI"); + else if (H5FD_SEC2==fdriver) + HDstrcpy(dname,"H5FD_SEC2"); + else if (H5FD_STDIO==fdriver) + HDstrcpy(dname,"H5FD_STDIO"); #ifdef H5_HAVE_STREAM - else if (H5FD_STREAM==fdriver) - { - strcpy(dname,"H5FD_STREAM"); - } + else if (H5FD_STREAM==fdriver) + HDstrcpy(dname,"H5FD_STREAM"); #endif - indentation(indent + COL); - printf("%s %s\n","FILE_DRIVER", dname); - indentation(indent + COL); - printf("%s %u\n","ISTORE_K", istore_ik); - printf("%s\n",END); - -/*------------------------------------------------------------------------- - * USER_BLOCK - *------------------------------------------------------------------------- - */ - printf("USER_BLOCK %s\n",BEGIN); - indentation(indent + COL); - HDfprintf(stdout,"%s %Hu\n","USERBLOCK_SIZE", userblock); - printf("%s\n",END); + indentation(indent + COL); + printf("%s %s\n","FILE_DRIVER", dname); + indentation(indent + COL); + printf("%s %u\n","ISTORE_K", istore_ik); + printf("%s\n",END); + + /*------------------------------------------------------------------------- + * USER_BLOCK + *------------------------------------------------------------------------- + */ + printf("USER_BLOCK %s\n",BEGIN); + indentation(indent + COL); + HDfprintf(stdout,"%s %Hu\n","USERBLOCK_SIZE", userblock); + printf("%s\n",END); } /*------------------------------------------------------------------------- @@ -2916,15 +2898,15 @@ handle_groups(hid_t fid, char *group, void UNUSED * data) dump_header_format->groupblockend); d_status = EXIT_FAILURE; } else { - size_t new_len = strlen(group) + 1; + size_t new_len = HDstrlen(group) + 1; if (prefix_len <= new_len) { prefix_len = new_len; - prefix = realloc(prefix, prefix_len); + prefix = HDrealloc(prefix, prefix_len); } H5Gget_objinfo(gid, ".", TRUE, &statbuf); - strcpy(prefix, group); + HDstrcpy(prefix, group); dump_group(gid, group); if (H5Gclose(gid) < 0) @@ -2952,15 +2934,10 @@ handle_links(hid_t fid, char *links, void UNUSED * data) H5G_stat_t statbuf; if (H5Gget_objinfo(fid, links, FALSE, &statbuf) < 0) { - begin_obj(dump_header_format->softlinkbegin, links, - dump_header_format->softlinkblockbegin); - indentation(COL); error_msg(progname, "unable to get obj info from \"%s\"\n", links); - end_obj(dump_header_format->softlinkend, - dump_header_format->softlinkblockend); d_status = EXIT_FAILURE; } else if (statbuf.type == H5G_LINK) { - char *buf = malloc(statbuf.u.slink.linklen); + char *buf = HDmalloc(statbuf.u.slink.linklen); begin_obj(dump_header_format->softlinkbegin, links, dump_header_format->softlinkblockbegin); @@ -2976,14 +2953,10 @@ handle_links(hid_t fid, char *links, void UNUSED * data) end_obj(dump_header_format->softlinkend, dump_header_format->softlinkblockend); - free(buf); + + HDfree(buf); } else { - begin_obj(dump_header_format->softlinkbegin, links, - dump_header_format->softlinkblockbegin); - indentation(COL); error_msg(progname, "\"%s\" is not a link\n", links); - end_obj(dump_header_format->softlinkend, - dump_header_format->softlinkblockend); d_status = EXIT_FAILURE; } } @@ -3453,13 +3426,13 @@ main(int argc, const char *argv[]) /* find all objects that might be targets of a refernce */ init_ref_path_table(fid); /* Insert the root group into the ref. path table */ - H5Giterate(fid, "/", NULL, fill_ref_path_table, (void *)""); + H5Giterate(fid, (const char *)"/", NULL, fill_ref_path_table, (void *)""); if (doxml) { /* initialize XML */ /* reset prefix! */ - strcpy(prefix, ""); + HDstrcpy(prefix, ""); /* make sure the URI is initialized to something */ if (xml_dtd_uri == NULL) { @@ -3584,7 +3557,7 @@ done: free_table(dset_table); free_table(type_table); - free(prefix); + HDfree(prefix); /* To Do: clean up XML table */ @@ -4485,7 +4458,7 @@ xml_dump_dataspace(hid_t space) static void xml_dump_data(hid_t obj_id, int obj_data, struct subset_t UNUSED * sset, int UNUSED pindex) { - h5dump_t *outputformat = &xml_dataformat; + h5tool_format_t *outputformat = &xml_dataformat; int status = -1; void *buf; hid_t space, type, p_type; @@ -4723,14 +4696,14 @@ xml_dump_named_datatype(hid_t type, const char *name) char *t_prefix; char *t_name; - tmp = malloc(strlen(prefix) + strlen(name) + 2); - strcpy(tmp, prefix); - strcat(tmp, "/"); - strcat(tmp, name); + tmp = HDmalloc(HDstrlen(prefix) + HDstrlen(name) + 2); + HDstrcpy(tmp, prefix); + HDstrcat(tmp, "/"); + HDstrcat(tmp, name); indentation(indent); - /*char **/ dtxid = malloc(100); - /*char **/ parentxid = malloc(100); + /*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); @@ -4749,20 +4722,20 @@ xml_dump_named_datatype(hid_t type, const char *name) "Parents=\"%s\" H5ParentPaths=\"%s\">\n", xmlnsprefix, name, dtxid, - parentxid,(strcmp(prefix, "") ? t_prefix : "/")); + parentxid,(HDstrcmp(prefix, "") ? t_prefix : "/")); } else { printf("<%sNamedDataType Name=\"%s\" OBJ-XID=\"%s\" " "H5Path=\"%s\" Parents=\"%s\" H5ParentPaths=\"%s\">\n", xmlnsprefix, t_name, dtxid, - t_tmp, parentxid, (strcmp(prefix, "") ? t_prefix : "/")); + t_tmp, parentxid, (HDstrcmp(prefix, "") ? t_prefix : "/")); } - free(dtxid); - free(parentxid); - free(t_tmp); - free(t_prefix); - free(t_name); - free(tmp); + HDfree(dtxid); + HDfree(parentxid); + HDfree(t_tmp); + HDfree(t_prefix); + HDfree(t_name); + HDfree(tmp); indent += COL; indentation(indent); @@ -4807,17 +4780,17 @@ xml_dump_group(hid_t gid, const char *name) char *t_objname; char *par_name; - if (strcmp(name, "/") == 0) { + if (HDstrcmp(name, "/") == 0) { isRoot = 1; - tmp = malloc(2); - strcpy(tmp, "/"); + tmp = HDmalloc(2); + HDstrcpy(tmp, "/"); } else { - tmp = malloc(strlen(prefix) + strlen(name) + 2); - strcpy(tmp, prefix); + tmp = HDmalloc(HDstrlen(prefix) + HDstrlen(name) + 2); + HDstrcpy(tmp, prefix); par = HDstrdup(tmp); - cp = strrchr(par, '/'); + cp = HDstrrchr(par, '/'); if (cp != NULL) { - if ((cp == par) && strlen(par) > 1) { + if ((cp == par) && HDstrlen(par) > 1) { *(cp + 1) = '\0'; } else { *cp = '\0'; @@ -5212,59 +5185,6 @@ xml_print_strs(hid_t did, int source) } /*------------------------------------------------------------------------- - * Function: check_compression - * - * Purpose: private function to check for compression and - * put a comment in the XML. (Not fully implemented.) - * - * Return: void - * - * Programmer: REMcG - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -#ifdef LATER -static void -check_compression(hid_t dcpl) -{ - int nfilt; - int i; - H5Z_filter_t filter; - char namebuf[20]; - size_t cd_nelmts = 1; - unsigned int cd_values; - unsigned int flags; -/* not used yet: will need to do somehting more elaborate to handle future - * compression methods. - char *t1 = "H5Z_FILTER_DEFLATE"; -*/ - - nfilt = H5Pget_nfilters(dcpl); - if (nfilt <= 0) - return; - for (i = 0; i < nfilt; i++) { -#ifdef H5_WANT_H5_V1_6_COMPAT - filter = H5Pget_filter(dcpl, i, &flags, - (size_t *) &cd_nelmts, - &cd_values, 20, namebuf); -#else - filter = H5Pget_filter(dcpl, i, &flags, - (size_t *) &cd_nelmts, - &cd_values, 20, namebuf, NULL); -#endif /* H5_WANT_H5_V1_6_COMPAT */ - if (filter == H5Z_FILTER_DEFLATE) { - indentation(indent + COL); - printf("<%sCompression />\n",xmlnsprefix); - indentation(indent + COL); - printf("<!-- Compression parameter %d -->\n", cd_values); - } - } -} -#endif /* LATER */ - -/*------------------------------------------------------------------------- * Function: check_filters * * Purpose: private function to check for the filters and @@ -5512,13 +5432,13 @@ xml_dump_dataset(hid_t did, const char *name, struct subset_t UNUSED * sset) hsize_t tempi; char *tmp; char *t_name, *t_tmp, *t_prefix; - char *rstr = malloc(100); - char *pstr = malloc(100); + char *rstr = HDmalloc(100); + char *pstr = HDmalloc(100); - tmp = malloc(strlen(prefix) + strlen(name) + 2); - strcpy(tmp, prefix); - strcat(tmp, "/"); - strcat(tmp, name); + tmp = HDmalloc(HDstrlen(prefix) + HDstrlen(name) + 2); + HDstrcpy(tmp, prefix); + HDstrcat(tmp, "/"); + HDstrcat(tmp, name); indentation(indent); t_name = xml_escape_the_name(name); @@ -5530,12 +5450,12 @@ xml_dump_dataset(hid_t did, const char *name, struct subset_t UNUSED * sset) printf("<%sDataset Name=\"%s\" OBJ-XID=\"%s\" H5Path= \"%s\" Parents=\"%s\" H5ParentPaths=\"%s\">\n",xmlnsprefix, t_name, rstr, t_tmp, pstr, strcmp(prefix, "") ? t_prefix : "/"); - free(t_name); - free(t_tmp); - free(t_prefix); - free(rstr); - free(pstr); - free(tmp); + HDfree(t_name); + HDfree(t_tmp); + HDfree(t_prefix); + HDfree(rstr); + HDfree(pstr); + HDfree(tmp); dcpl = H5Dget_create_plist(did); type = H5Dget_type(did); @@ -5994,7 +5914,32 @@ h5_fileaccess(void) static void init_prefix(char **prfx, size_t prfx_len) { - assert(prfx_len > 0); + HDassert(prfx_len > 0); *prfx = HDcalloc(prfx_len, 1); } + +/*------------------------------------------------------------------------- + * Function: add_prefix + * + * Purpose: Add object to prefix + * + * Return: void + * + *------------------------------------------------------------------------- + */ +static void +add_prefix(char **prfx, size_t *prfx_len, const char *name) +{ + size_t new_len = HDstrlen(*prfx) + HDstrlen(name) + 2; + + /* Check if we need more space */ + if(*prfx_len <= new_len) { + *prfx_len = new_len + 1; + *prfx = HDrealloc(*prfx, *prfx_len); + } + + /* Append object name to prefix */ + HDstrcat(HDstrcat(*prfx, "/"), name); +} /* end add_prefix */ + diff --git a/tools/h5dump/h5dump.h b/tools/h5dump/h5dump.h index 96e7d71..dbc5de9 100644 --- a/tools/h5dump/h5dump.h +++ b/tools/h5dump/h5dump.h @@ -18,4 +18,133 @@ #define H5DUMP_MAX_RANK H5S_MAX_RANK +#define ATTRIBUTE_DATA 0 +#define DATASET_DATA 1 +#define ENUM_DATA 2 +#define COL 3 + +/* Strings for output */ +#define ATTRIBUTE "ATTRIBUTE" +#define BLOCK "BLOCK" +#define SUPER_BLOCK "SUPER_BLOCK" +#define COMPRESSION "COMPRESSION" +#define CONCATENATOR "//" +#define COMPLEX "COMPLEX" +#define COUNT "COUNT" +#define CSET "CSET" +#define CTYPE "CTYPE" +#define DATA "DATA" +#define DATASPACE "DATASPACE" +#define EXTERNAL "EXTERNAL" +#define FILENO "FILENO" +#define HARDLINK "HARDLINK" +#define NLINK "NLINK" +#define OBJID "OBJECTID" +#define OBJNO "OBJNO" +#define S_SCALAR "SCALAR" +#define S_SIMPLE "SIMPLE" +#define S_NULL "NULL" +#define SOFTLINK "SOFTLINK" +#define STORAGELAYOUT "STORAGELAYOUT" +#define START "START" +#define STRIDE "STRIDE" +#define STRSIZE "STRSIZE" +#define STRPAD "STRPAD" +#define SUBSET "SUBSET" +#define FILTERS "FILTERS" +#define DEFLATE "COMPRESSION DEFLATE" +#define DEFLATE_LEVEL "LEVEL" +#define SHUFFLE "PREPROCESSING SHUFFLE" +#define FLETCHER32 "CHECKSUM FLETCHER32" +#define SZIP "COMPRESSION SZIP" +#define NBIT "COMPRESSION NBIT" +#define SCALEOFFSET "COMPRESSION SCALEOFFSET" +#define SCALEOFFSET_MINBIT "MIN BITS" +#define STORAGE_LAYOUT "STORAGE_LAYOUT" +#define CONTIGUOUS "CONTIGUOUS" +#define COMPACT "COMPACT" +#define CHUNKED "CHUNKED" +#define EXTERNAL_FILE "EXTERNAL_FILE" +#define FILLVALUE "FILLVALUE" +#define FILE_CONTENTS "FILE_CONTENTS" + +#define BEGIN "{" +#define END "}" + +typedef struct h5dump_header_t { + const char *name; + const char *filebegin; + const char *fileend; + const char *bootblockbegin; + const char *bootblockend; + const char *groupbegin; + const char *groupend; + const char *datasetbegin; + const char *datasetend; + const char *attributebegin; + const char *attributeend; + const char *datatypebegin; + const char *datatypeend; + const char *dataspacebegin; + const char *dataspaceend; + const char *databegin; + const char *dataend; + const char *softlinkbegin; + const char *softlinkend; + const char *subsettingbegin; + const char *subsettingend; + const char *startbegin; + const char *startend; + const char *stridebegin; + const char *strideend; + const char *countbegin; + const char *countend; + const char *blockbegin; + const char *blockend; + + const char *fileblockbegin; + const char *fileblockend; + const char *bootblockblockbegin; + const char *bootblockblockend; + const char *groupblockbegin; + const char *groupblockend; + const char *datasetblockbegin; + const char *datasetblockend; + const char *attributeblockbegin; + const char *attributeblockend; + const char *datatypeblockbegin; + const char *datatypeblockend; + const char *dataspaceblockbegin; + const char *dataspaceblockend; + const char *datablockbegin; + const char *datablockend; + const char *softlinkblockbegin; + const char *softlinkblockend; + const char *strblockbegin; + const char *strblockend; + const char *enumblockbegin; + const char *enumblockend; + const char *structblockbegin; + const char *structblockend; + const char *vlenblockbegin; + const char *vlenblockend; + const char *subsettingblockbegin; + const char *subsettingblockend; + const char *startblockbegin; + const char *startblockend; + const char *strideblockbegin; + const char *strideblockend; + const char *countblockbegin; + const char *countblockend; + const char *blockblockbegin; + const char *blockblockend; + + const char *dataspacedescriptionbegin; + const char *dataspacedescriptionend; + const char *dataspacedimbegin; + const char *dataspacedimend; + +} h5dump_header_t; + + #endif /* !H5DUMP_H__ */ diff --git a/tools/h5dump/h5dumpgentest.c b/tools/h5dump/h5dumpgentest.c index 4f1c0f5..8345e5a 100644 --- a/tools/h5dump/h5dumpgentest.c +++ b/tools/h5dump/h5dumpgentest.c @@ -4664,7 +4664,7 @@ static void gent_filters(void) assert(ret>=0); /* set the scaleoffset filter */ - ret=H5Pset_scaleoffset(dcpl,H5Z_SO_INT,H5Tget_size(H5T_NATIVE_INT)); + ret=H5Pset_scaleoffset(dcpl,H5Z_SO_INT,(int)H5Tget_size(H5T_NATIVE_INT)); assert(ret>=0); ret=make_dset(fid,"scaleoffset",sid,H5T_NATIVE_INT,dcpl,buf1); diff --git a/tools/h5import/h5import.c b/tools/h5import/h5import.c index 79c249b..7d81779 100755 --- a/tools/h5import/h5import.c +++ b/tools/h5import/h5import.c @@ -11,15 +11,14 @@ * http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have * * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ -#include <hdf5.h> -#include <H5private.h> -#include <stdio.h> -#ifndef MIPSEL -#include <math.h> -#endif /* MIPSEL */ -#include <string.h> -#include <ctype.h> -#include "h5import.h" + +#include "hdf5.h" +#include "H5private.h" +#include <stdio.h> +#include <math.h> +#include <string.h> +#include <ctype.h> +#include "h5import.h" int main(int argc, char *argv[]) { @@ -30,15 +29,15 @@ int main(int argc, char *argv[]) int state = 0; struct Input *in=NULL; - const char *err1 = "Invalid number of arguments: %d.\n"; - const char *err2 = "Error in state table.\n"; - const char *err3 = "No output file given.\n"; - const char *err4 = "Program aborted.\n"; - const char *err5 = "Invalid path %s.\n"; - const char *err6 = "Invalid dimensions - %s.\n"; - const char *err7 = "Invalid type of data - %s.\n"; - const char *err8 = "Invalid size of data - %s.\n"; - const char *err9 = "Cannot specify more than 30 input files in one call to h5import.\n"; + const char *err1 = "Invalid number of arguments: %d.\n"; + const char *err2 = "Error in state table.\n"; + const char *err3 = "No output file given.\n"; + const char *err4 = "Program aborted.\n"; + const char *err5 = "Invalid path %s.\n"; + const char *err6 = "Invalid dimensions - %s.\n"; + const char *err7 = "Invalid type of data - %s.\n"; + const char *err8 = "Invalid size of data - %s.\n"; + const char *err9 = "Cannot specify more than 30 input files in one call to h5import.\n"; (void) setvbuf(stderr, (char *) NULL, _IOLBF, 0); (void) setvbuf(stdout, (char *) NULL, _IOLBF, 0); diff --git a/tools/h5import/h5import.h b/tools/h5import/h5import.h index cf318fc..85fa71e 100755 --- a/tools/h5import/h5import.h +++ b/tools/h5import/h5import.h @@ -18,6 +18,9 @@ * */ +#ifndef H5IMPORT_H__ +#define H5IMPORT_H__ + /* * state table tokens */ @@ -220,3 +223,6 @@ hid_t createInputDataType(struct Input *in); static int readUIntegerData(FILE **strm, struct Input *in); static int allocateUIntegerStorage(struct Input *in); static int validateConfigurationParameters(struct Input * in); + +#endif /* H5IMPORT_H__ */ + diff --git a/tools/h5import/h5importtest.c b/tools/h5import/h5importtest.c index e6c29e5..32d3fe5 100755 --- a/tools/h5import/h5importtest.c +++ b/tools/h5import/h5importtest.c @@ -11,8 +11,10 @@ * http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have * * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + #include <stdio.h> -#include <H5private.h> +#include "H5private.h" + /* * Name: * h5importtest @@ -286,4 +288,3 @@ main(void) return (0); } - diff --git a/tools/h5ls/h5ls.c b/tools/h5ls/h5ls.c index 75e4218..1c1a3fb 100644 --- a/tools/h5ls/h5ls.c +++ b/tools/h5ls/h5ls.c @@ -64,7 +64,7 @@ static struct dispatch_t { herr_t (*close)(hid_t obj); herr_t (*list1)(hid_t obj); herr_t (*list2)(hid_t obj, const char *name); -} dispatch_g[H5G_NTYPES]; +} dispatch_g[H5G_NLIBTYPES]; #define DISPATCH(TYPE,NAME,OPEN,CLOSE,LIST1,LIST2) { \ dispatch_g[TYPE].name = (NAME); \ @@ -1226,7 +1226,7 @@ dump_dataset_values(hid_t dset) { hid_t f_type = H5Dget_type(dset); size_t size = H5Tget_size(f_type); - h5dump_t info; + h5tool_format_t info; char string_prefix[64]; static char fmt_double[16], fmt_float[16]; @@ -1332,7 +1332,7 @@ list_attr (hid_t obj, const char *attr_name, void UNUSED *op_data) size_t need; hsize_t temp_need; void *buf; - h5dump_t info; + h5tool_format_t info; H5S_class_t space_type; printf(" Attribute: "); diff --git a/tools/h5repack/h5repack.h b/tools/h5repack/h5repack.h index 1554039..3647d43 100644 --- a/tools/h5repack/h5repack.h +++ b/tools/h5repack/h5repack.h @@ -16,7 +16,6 @@ #ifndef H5REPACK_H__ #define H5REPACK_H__ -#include <string.h> #include "hdf5.h" #include "h5trav.h" #include "h5diff.h" @@ -44,11 +43,11 @@ typedef struct { the type of filter and additional parameter type can be one of the filters H5Z_FILTER_NONE 0, uncompress if compressed - H5Z_FILTER_DEFLATE 1 , deflation like gzip + H5Z_FILTER_DEFLATE 1 , deflation like gzip H5Z_FILTER_SHUFFLE 2 , shuffle the data H5Z_FILTER_FLETCHER32 3 , letcher32 checksum of EDC H5Z_FILTER_SZIP 4 , szip compression - H5Z_FILTER_NBIT 5 , nbit compression + H5Z_FILTER_NBIT 5 , nbit compression H5Z_FILTER_SCALEOFFSET 6 , scaleoffset compression */ @@ -244,82 +243,7 @@ obj_list_t* parse_layout(const char *str, const char* get_sfilter (H5Z_filter_t filtn); int parse_number(char *str); -/*------------------------------------------------------------------------- - * tests - *------------------------------------------------------------------------- - */ - -#define FNAME0 "test0.h5" -#define FNAME0OUT "test0out.h5" -#define FNAME1 "test1.h5" -#define FNAME1OUT "test1out.h5" -#define FNAME2 "test2.h5" -#define FNAME2OUT "test2out.h5" -#define FNAME3 "test3.h5" -#define FNAME3OUT "test3out.h5" -#define FNAME4 "test4.h5" -#define FNAME4OUT "test4out.h5" -#define FNAME5 "test5.h5" -#define FNAME5OUT "test5out.h5" -#define FNAME6 "test6.h5" -#define FNAME7 "test_szip.h5" -#define FNAME8 "test_deflate.h5" -#define FNAME9 "test_shuffle.h5" -#define FNAME10 "test_fletcher32.h5" -#define FNAME11 "test_all.h5" -#define FNAME7OUT "test_szipout.h5" -#define FNAME8OUT "test_deflateout.h5" -#define FNAME9OUT "test_shuffleout.h5" -#define FNAME10OUT "test_fletcher32out.h5" -#define FNAME11OUT "test_allout.h5" -#define FNAME12 "test_nbit.h5" -#define FNAME12OUT "test_nbitout.h5" -#define FNAME13 "test_scaleoffset.h5" -#define FNAME13OUT "test_scaleoffsetout.h5" - -int make_testfiles(void); - -int write_dset( hid_t loc_id, - int rank, - hsize_t *dims, - const char *dset_name, - hid_t type_id, - void *buf ); -int write_attr(hid_t loc_id, - int rank, - hsize_t *dims, - const char *attr_name, - hid_t type_id, - void *buf); -void write_attr_in(hid_t loc_id, - const char* dset_name, /* for saving reference to dataset*/ - hid_t fid, /* for reference create */ - int make_diffs /* flag to modify data buffers */); -void write_dset_in(hid_t loc_id, - const char* dset_name, /* for saving reference to dataset*/ - hid_t file_id, - int make_diffs /* flag to modify data buffers */); - - - -/*------------------------------------------------------------------------- - * tests utils - *------------------------------------------------------------------------- - */ -int make_dset(hid_t loc_id, - const char *name, - hid_t sid, - hid_t dcpl, - void *buf); - -int make_attr(hid_t loc_id, - int rank, - hsize_t *dims, - const char *attr_name, - hid_t type_id, - void *buf); - - #endif /* H5REPACK_H__ */ + diff --git a/tools/h5repack/h5repack_copy.c b/tools/h5repack/h5repack_copy.c index fee7440..e5d962a 100644 --- a/tools/h5repack/h5repack_copy.c +++ b/tools/h5repack/h5repack_copy.c @@ -527,7 +527,7 @@ int do_copy_objects(hid_t fidin, default: if (options->verbose) printf(" %-10s %s\n","User defined object",travt->objs[i].name); - break; + goto error; } } diff --git a/tools/h5repack/h5repack_main.c b/tools/h5repack/h5repack_main.c index 96eb787..efedd95 100644 --- a/tools/h5repack/h5repack_main.c +++ b/tools/h5repack/h5repack_main.c @@ -137,11 +137,11 @@ void usage(void) printf("-o output Output HDF5 File\n"); printf("[-h] Print usage message\n"); printf("[-v] Verbose mode. Print more output (list of objects,\n"); - printf(" filters, warnings)\n"); + printf(" filters, warnings)\n"); printf("[-f 'filter'] Filter type: 'filter' is a string with the format\n"); - printf("\n"); + printf("\n"); printf(" <list of objects> : <name of filter> = <filter parameters>\n"); - printf("\n"); + printf("\n"); printf(" <list of objects> is a comma separated list of object names\n"); printf(" meaning apply compression only to those objects.\n"); printf(" if no object names are specified, the filter is applied to all objects\n"); @@ -151,7 +151,7 @@ void usage(void) printf(" SHUF, to apply the HDF5 shuffle filter\n"); printf(" FLET, to apply the HDF5 checksum filter\n"); printf(" NBIT, to apply the HDF5 NBIT filter (NBIT compression)\n"); - printf(" SOFF, to apply the HDF5 Scale/Offset filter\n"); + printf(" SOFF, to apply the HDF5 Scale/Offset filter\n"); printf(" NONE, to remove the filter\n"); printf(" <filter parameters> is optional compression info\n"); printf(" SHUF (no parameter)\n"); @@ -159,12 +159,12 @@ void usage(void) printf(" NBIT (no parameter)\n"); printf(" GZIP=<deflation level> from 1-9\n"); printf(" SZIP=<pixels per block,coding>\n"); - printf(" (pixels per block is a even number in 2-32 and coding method\n"); - printf(" is 'EC' or 'NN')\n"); - printf(" SOFF=<scale_factor,scale_type>\n"); - printf(" (scale_factor is an integer and scale_type is either 'IN'\n"); - printf(" for integer type, or 'DS', for floating point type\n"); - printf(" using the D-scaling method)\n"); + printf(" (pixels per block is a even number in 2-32 and coding method\n"); + printf(" is 'EC' or 'NN')\n"); + printf(" SOFF=<scale_factor,scale_type>\n"); + printf(" (scale_factor is an integer and scale_type is either 'IN'\n"); + printf(" for integer type, or 'DS', for floating point type\n"); + printf(" using the D-scaling method)\n"); printf("[-l 'layout'] Layout type. 'layout' is a string with the format\n"); printf("\n"); printf(" <list of objects> : <layout type>\n"); @@ -182,7 +182,7 @@ void usage(void) printf("\n"); printf("-e file File with the -f and -l options (only filter and layout flags)\n"); printf("-m size Do not apply the filter to objects which size in bytes\n"); - printf(" is smaller than number. If no size is specified a minimum of\n"); + printf(" is smaller than number. If no size is specified a minimum of\n"); printf(" 1024 bytes is assumed.\n"); printf("\n"); printf("Examples of use:\n"); diff --git a/tools/h5repack/h5repack_parse.c b/tools/h5repack/h5repack_parse.c index 1c67216..9760fa2 100644 --- a/tools/h5repack/h5repack_parse.c +++ b/tools/h5repack/h5repack_parse.c @@ -137,9 +137,9 @@ obj_list_t* parse_filter(const char *str, /*------------------------------------------------------------------------- * H5Z_FILTER_SZIP - * szip has the format SZIP=<pixels per block,coding> + * szip has the format SZIP=<pixels per block,coding> * pixels per block is a even number in 2-32 and coding method is 'EC' or 'NN' - * example SZIP=8,NN + * example SZIP=8,NN *------------------------------------------------------------------------- */ if (strcmp(scomp,"SZIP")==0) @@ -171,9 +171,9 @@ obj_list_t* parse_filter(const char *str, i=len-1; /* end */ (*n_objs)--; /* we counted an extra ',' */ if (strcmp(smask,"NN")==0) - filt->cd_values[j++]=H5_SZIP_NN_OPTION_MASK; + filt->cd_values[j++]=H5_SZIP_NN_OPTION_MASK; else if (strcmp(smask,"EC")==0) - filt->cd_values[j++]=H5_SZIP_EC_OPTION_MASK; + filt->cd_values[j++]=H5_SZIP_EC_OPTION_MASK; else { printf("Input Error: szip mask must be 'NN' or 'EC' \n"); diff --git a/tools/h5repack/testh5repack.h b/tools/h5repack/testh5repack.h new file mode 100644 index 0000000..c367009 --- /dev/null +++ b/tools/h5repack/testh5repack.h @@ -0,0 +1,97 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + + +#ifndef TESTH5REPACK_H__ +#define TESTH5REPACK_H__ + +/*------------------------------------------------------------------------- + * tests + *------------------------------------------------------------------------- + */ + +#define FNAME0 "test0.h5" +#define FNAME0OUT "test0out.h5" +#define FNAME1 "test1.h5" +#define FNAME1DST "test1_dst.h5" +#define FNAME1OUT "test1out.h5" +#define FNAME2 "test2.h5" +#define FNAME2OUT "test2out.h5" +#define FNAME3 "test3.h5" +#define FNAME3OUT "test3out.h5" +#define FNAME4 "test4.h5" +#define FNAME4OUT "test4out.h5" +#define FNAME5 "test5.h5" +#define FNAME5OUT "test5out.h5" +#define FNAME6 "test6.h5" +#define FNAME7 "test_szip.h5" +#define FNAME8 "test_deflate.h5" +#define FNAME9 "test_shuffle.h5" +#define FNAME10 "test_fletcher32.h5" +#define FNAME11 "test_all.h5" +#define FNAME7OUT "test_szipout.h5" +#define FNAME8OUT "test_deflateout.h5" +#define FNAME9OUT "test_shuffleout.h5" +#define FNAME10OUT "test_fletcher32out.h5" +#define FNAME11OUT "test_allout.h5" +#define FNAME12 "test_nbit.h5" +#define FNAME12OUT "test_nbitout.h5" +#define FNAME13 "test_scaleoffset.h5" +#define FNAME13OUT "test_scaleoffsetout.h5" + +int make_testfiles(void); + +int write_dset( hid_t loc_id, + int rank, + hsize_t *dims, + const char *dset_name, + hid_t type_id, + void *buf ); +int write_attr(hid_t loc_id, + int rank, + hsize_t *dims, + const char *attr_name, + hid_t type_id, + void *buf); +void write_attr_in(hid_t loc_id, + const char* dset_name, /* for saving reference to dataset*/ + hid_t fid, /* for reference create */ + int make_diffs /* flag to modify data buffers */); +void write_dset_in(hid_t loc_id, + const char* dset_name, /* for saving reference to dataset*/ + hid_t file_id, + int make_diffs /* flag to modify data buffers */); + + + +/*------------------------------------------------------------------------- + * tests utils + *------------------------------------------------------------------------- + */ +int make_dset(hid_t loc_id, + const char *name, + hid_t sid, + hid_t dcpl, + void *buf); + +int make_attr(hid_t loc_id, + int rank, + hsize_t *dims, + const char *attr_name, + hid_t type_id, + void *buf); + + +#endif /* TESTH5REPACK_H__ */ + diff --git a/tools/h5repack/testh5repack_attr.c b/tools/h5repack/testh5repack_attr.c index f18bbc2..7635cf2 100644 --- a/tools/h5repack/testh5repack_attr.c +++ b/tools/h5repack/testh5repack_attr.c @@ -15,6 +15,7 @@ #include "hdf5.h" #include "h5test.h" #include "h5repack.h" +#include "testh5repack.h" /*------------------------------------------------------------------------- * Function: write_attr_in diff --git a/tools/h5repack/testh5repack_detect_szip.c b/tools/h5repack/testh5repack_detect_szip.c index 16962af..095910e 100644 --- a/tools/h5repack/testh5repack_detect_szip.c +++ b/tools/h5repack/testh5repack_detect_szip.c @@ -16,6 +16,7 @@ #include "hdf5.h" #include "h5test.h" #include "h5repack.h" +#include "testh5repack.h" /*------------------------------------------------------------------------- diff --git a/tools/h5repack/testh5repack_dset.c b/tools/h5repack/testh5repack_dset.c index 862257a..c345028 100644 --- a/tools/h5repack/testh5repack_dset.c +++ b/tools/h5repack/testh5repack_dset.c @@ -15,6 +15,7 @@ #include "hdf5.h" #include "h5test.h" #include "h5repack.h" +#include "testh5repack.h" static void make_dset_reg_ref(hid_t loc_id); diff --git a/tools/h5repack/testh5repack_main.c b/tools/h5repack/testh5repack_main.c index ab6c09e..42beb76 100644 --- a/tools/h5repack/testh5repack_main.c +++ b/tools/h5repack/testh5repack_main.c @@ -15,6 +15,7 @@ #include "hdf5.h" #include "h5test.h" #include "h5repack.h" +#include "testh5repack.h" #include "h5diff.h" #if 0 diff --git a/tools/h5repack/testh5repack_make.c b/tools/h5repack/testh5repack_make.c index 247d606..43b68b1 100644 --- a/tools/h5repack/testh5repack_make.c +++ b/tools/h5repack/testh5repack_make.c @@ -15,6 +15,7 @@ #include "hdf5.h" #include "h5test.h" #include "h5repack.h" +#include "testh5repack.h" #define DIM1 40 #define DIM2 20 @@ -851,8 +852,10 @@ int make_all(hid_t loc_id) { hid_t dcpl; /* dataset creation property list */ hid_t sid; /* dataspace ID */ +#if defined (H5_HAVE_FILTER_NBIT) hid_t dtid; hid_t dsid; +#endif /* H5_HAVE_FILTER_NBIT */ #if defined (H5_HAVE_FILTER_SZIP) unsigned szip_options_mask=H5_SZIP_ALLOW_K13_OPTION_MASK|H5_SZIP_NN_OPTION_MASK; unsigned szip_pixels_per_block=8; diff --git a/tools/h5repack/testh5repack_util.c b/tools/h5repack/testh5repack_util.c index cad52d3..63b8b1d 100644 --- a/tools/h5repack/testh5repack_util.c +++ b/tools/h5repack/testh5repack_util.c @@ -14,6 +14,7 @@ #include "hdf5.h" #include "h5repack.h" +#include "testh5repack.h" /*------------------------------------------------------------------------- * Function: make_dset diff --git a/tools/lib/h5diff.c b/tools/lib/h5diff.c index 7a25d4f..b61cc60 100644 --- a/tools/lib/h5diff.c +++ b/tools/lib/h5diff.c @@ -161,35 +161,31 @@ static void print_incoming_data(void) * * Date: October 22, 2003 * - * Modifications: Jan 2005 Leon Arber, larber@uiuc.edu - * Added support for parallel diffing - * *------------------------------------------------------------------------- */ -hsize_t -h5diff (const char *fname1, - const char *fname2, - const char *objname1, const char *objname2, diff_opt_t * options) +hsize_t h5diff(const char *fname1, + const char *fname2, + const char *objname1, + const char *objname2, + diff_opt_t *options) { int nobjects1, nobjects2; trav_info_t *info1 = NULL; trav_info_t *info2 = NULL; hid_t file1_id=(-1), file2_id=(-1); - char filenames[2][1024]; - hsize_t nfound = 0; - int not_cmp = 0; + char filenames[2][1024]; + hsize_t nfound = 0; memset(filenames, 0, 1024*2); - - if (options->m_quiet && (options->m_verbose || options->m_report)) - { - printf - ("Error: -q (quiet mode) cannot be added to verbose or report modes\n"); - options->err_stat = 1; - return 0; - } + if (options->m_quiet && + (options->m_verbose || options->m_report)) + { + printf("Error: -q (quiet mode) cannot be added to verbose or report modes\n"); + options->err_stat=1; + return 0; + } /*------------------------------------------------------------------------- * open the files first; if they are not valid, no point in continuing @@ -256,8 +252,6 @@ h5diff (const char *fname1, goto out; } - - /*------------------------------------------------------------------------- * get the list of objects in the files *------------------------------------------------------------------------- @@ -269,10 +263,8 @@ h5diff (const char *fname1, { printf ("Error: Not enough memory for object list\n"); options->err_stat = 1; - if (info1) - h5trav_freeinfo (info1, nobjects1); - if (info2) - h5trav_freeinfo (info2, nobjects1); + if (info1) h5trav_freeinfo (info1, nobjects1); + if (info2) h5trav_freeinfo (info2, nobjects1); #ifdef H5_HAVE_PARALLEL if(g_Parallel) { @@ -875,10 +867,10 @@ diff_compare (hid_t file1_id, * * Purpose: switch between types and choose the diff function * TYPE is either - * H5G_LINK Object is a symbolic link * H5G_GROUP Object is a group * H5G_DATASET Object is a dataset * H5G_TYPE Object is a named data type + * H5G_LINK Object is a symbolic link * * Return: Number of differences found * @@ -901,8 +893,6 @@ diff (hid_t file1_id, int ret; H5G_stat_t sb1; H5G_stat_t sb2; - char *buf1 = NULL; - char *buf2 = NULL; hsize_t nfound = 0; switch (type) @@ -1042,18 +1032,22 @@ diff (hid_t file1_id, *------------------------------------------------------------------------- */ case H5G_LINK: - if (H5Gget_objinfo (file1_id, path1, FALSE, &sb1) < 0) - goto out; - if (H5Gget_objinfo (file1_id, path1, FALSE, &sb2) < 0) - goto out; + { + char *buf1 = NULL; + char *buf2 = NULL; - buf1 = malloc (sb1.u.slink.linklen); - buf2 = malloc (sb2.u.slink.linklen); + if (H5Gget_objinfo (file1_id, path1, FALSE, &sb1) < 0) + goto out; + if (H5Gget_objinfo (file1_id, path1, FALSE, &sb2) < 0) + goto out; + + buf1 = HDmalloc (sb1.u.slink.linklen); + buf2 = HDmalloc (sb2.u.slink.linklen); if (H5Gget_linkval (file1_id, path1, sb1.u.slink.linklen, buf1) < 0) - goto out; + goto out; if (H5Gget_linkval (file2_id, path2, sb1.u.slink.linklen, buf2) < 0) - goto out; + goto out; ret = HDstrcmp (buf1, buf2); @@ -1061,23 +1055,13 @@ diff (hid_t file1_id, nfound = (ret != 0) ? 1 : 0; if (print_objname (options, nfound)) - parallel_print("Link: <%s> and <%s>\n", path1, path2); - - if (buf1) - { - free (buf1); - buf1 = NULL; - } - - if (buf2) - { - free (buf2); - buf2 = NULL; - } + parallel_print("Soft Link: <%s> and <%s>\n", path1, path2); + HDfree (buf1); + HDfree (buf2); + } break; - default: nfound = 0; if (options->m_verbose) @@ -1105,11 +1089,6 @@ out: } H5E_END_TRY; - if (buf1) - free (buf1); - if (buf2) - free (buf2); - return nfound; } diff --git a/tools/lib/h5diff_array.c b/tools/lib/h5diff_array.c index dd4784d..f9f0da7 100644 --- a/tools/lib/h5diff_array.c +++ b/tools/lib/h5diff_array.c @@ -336,7 +336,7 @@ hsize_t diff_datum(void *_mem1, } else { - s = mem1; + s = (char *)mem1; size = H5Tget_size(m_type); } @@ -382,6 +382,7 @@ hsize_t diff_datum(void *_mem1, } break; + /*------------------------------------------------------------------------- * H5T_OPAQUE *------------------------------------------------------------------------- @@ -831,7 +832,6 @@ hsize_t diff_datum(void *_mem1, print_pos(ph,1,i,acc,pos,rank,obj1,obj2); parallel_print(SPACES); parallel_print(IPFORMAT,temp1_short,temp2_short,abs(temp1_short-temp2_short), abs(1-temp2_short/temp1_short)); - } nfound++; } @@ -841,7 +841,6 @@ hsize_t diff_datum(void *_mem1, if ( print_data(options) ) { print_pos(ph,0,i,acc,pos,rank,obj1,obj2); - parallel_print(SPACES); parallel_print(IFORMAT,temp1_short,temp2_short,abs(temp1_short-temp2_short)); } @@ -1124,7 +1123,7 @@ hsize_t diff_datum(void *_mem1, parallel_print(SPACES); parallel_print(LPIFORMAT,temp1_long,temp2_long,labs(temp1_long-temp2_long), labs(1-temp2_long/temp1_long)); } - nfound++; + nfound++; } } /* -d and -p */ @@ -1752,13 +1751,13 @@ void close_obj(H5G_obj_t obj_type, hid_t obj_id) */ static int diff_region(hid_t region1_id, hid_t region2_id) { - hssize_t nblocks1, npoints1; - hssize_t nblocks2, npoints2; + hssize_t nblocks1, npoints1; + hssize_t nblocks2, npoints2; hsize_t alloc_size; hsize_t *ptdata1; hsize_t *ptdata2; - int ndims1 = H5Sget_simple_extent_ndims(region1_id); - int ndims2 = H5Sget_simple_extent_ndims(region2_id); + int ndims1 = H5Sget_simple_extent_ndims(region1_id); + int ndims2 = H5Sget_simple_extent_ndims(region2_id); int ret=0; #if defined (H5DIFF_DEBUG) @@ -2190,7 +2189,7 @@ hsize_t diff_schar(unsigned char *mem1, nfound++; } mem1+=sizeof(char); - mem2+=sizeof(char); + mem2+=sizeof(char); if (options->n && nfound>=options->count) return nfound; } @@ -2217,7 +2216,7 @@ hsize_t diff_schar(unsigned char *mem1, nfound++; } mem1+=sizeof(char); - mem2+=sizeof(char); + mem2+=sizeof(char); if (options->n && nfound>=options->count) return nfound; } @@ -2245,7 +2244,7 @@ hsize_t diff_schar(unsigned char *mem1, nfound++; } mem1+=sizeof(char); - mem2+=sizeof(char); + mem2+=sizeof(char); if (options->n && nfound>=options->count) return nfound; } @@ -2330,7 +2329,7 @@ hsize_t diff_uchar(unsigned char *mem1, nfound++; } mem1+=sizeof(unsigned char); - mem2+=sizeof(unsigned char); + mem2+=sizeof(unsigned char); if (options->n && nfound>=options->count) return nfound; } @@ -2358,7 +2357,7 @@ hsize_t diff_uchar(unsigned char *mem1, nfound++; } mem1+=sizeof(unsigned char); - mem2+=sizeof(unsigned char); + mem2+=sizeof(unsigned char); if (options->n && nfound>=options->count) return nfound; } @@ -2472,7 +2471,7 @@ hsize_t diff_short(unsigned char *mem1, nfound++; } mem1+=sizeof(short); - mem2+=sizeof(short); + mem2+=sizeof(short); if (options->n && nfound>=options->count) return nfound; } @@ -2500,7 +2499,7 @@ hsize_t diff_short(unsigned char *mem1, nfound++; } mem1+=sizeof(short); - mem2+=sizeof(short); + mem2+=sizeof(short); if (options->n && nfound>=options->count) return nfound; } @@ -2530,7 +2529,7 @@ hsize_t diff_short(unsigned char *mem1, nfound++; } mem1+=sizeof(short); - mem2+=sizeof(short); + mem2+=sizeof(short); if (options->n && nfound>=options->count) return nfound; } @@ -2614,7 +2613,7 @@ hsize_t diff_ushort(unsigned char *mem1, nfound++; } mem1+=sizeof(unsigned short); - mem2+=sizeof(unsigned short); + mem2+=sizeof(unsigned short); if (options->n && nfound>=options->count) return nfound; } @@ -2642,7 +2641,7 @@ hsize_t diff_ushort(unsigned char *mem1, nfound++; } mem1+=sizeof(unsigned short); - mem2+=sizeof(unsigned short); + mem2+=sizeof(unsigned short); if (options->n && nfound>=options->count) return nfound; } @@ -2672,7 +2671,7 @@ hsize_t diff_ushort(unsigned char *mem1, nfound++; } mem1+=sizeof(unsigned short); - mem2+=sizeof(unsigned short); + mem2+=sizeof(unsigned short); if (options->n && nfound>=options->count) return nfound; } @@ -2889,7 +2888,7 @@ hsize_t diff_uint(unsigned char *mem1, memcpy(&temp1_uint, mem1, sizeof(unsigned int)); memcpy(&temp2_uint, mem2, sizeof(unsigned int)); - if (abs(temp1_uint-temp2_uint) > options->delta) + if (abs((int)(temp1_uint-temp2_uint)) > options->delta) { if ( print_data(options) ) { @@ -3063,9 +3062,6 @@ hsize_t diff_long(unsigned char *mem1, { if ( print_data(options) ) { - memcpy(&temp1_long, mem1, sizeof(long)); - memcpy(&temp2_long, mem2, sizeof(long)); - if (labs(temp1_long-temp2_long) > (long)options->delta) { if ( print_data(options) ) @@ -3218,7 +3214,7 @@ hsize_t diff_ulong(unsigned char *mem1, nfound++; } mem1+=sizeof(unsigned long); - mem2+=sizeof(unsigned long); + mem2+=sizeof(unsigned long); if (options->n && nfound>=options->count) return nfound; } diff --git a/tools/lib/h5tools.c b/tools/lib/h5tools.c index 9556fe7..01f0fca 100644 --- a/tools/lib/h5tools.c +++ b/tools/lib/h5tools.c @@ -44,7 +44,6 @@ #define ALIGN(A,Z) ((((A) + (Z) - 1) / (Z)) * (Z)) /* global variables */ -int indent; int compound_data; FILE *rawdatastream; /* should initialize to stdout but gcc moans about it */ @@ -425,7 +424,7 @@ h5tools_ncols(const char *s) *------------------------------------------------------------------------- */ static void -h5tools_simple_prefix(FILE *stream, const h5dump_t *info, +h5tools_simple_prefix(FILE *stream, const h5tool_format_t *info, h5tools_context_t *ctx, hsize_t elmtno, int secnum) { h5tools_str_t prefix; @@ -538,7 +537,7 @@ h5tools_simple_prefix(FILE *stream, const h5dump_t *info, *------------------------------------------------------------------------- */ void -h5tools_dump_simple_data(FILE *stream, const h5dump_t *info, hid_t container, +h5tools_dump_simple_data(FILE *stream, const h5tool_format_t *info, hid_t container, h5tools_context_t *ctx/*in,out*/, unsigned flags, hsize_t nelmts, hid_t type, void *_mem) { @@ -670,11 +669,8 @@ h5tools_dump_simple_data(FILE *stream, const h5dump_t *info, hid_t container, multiline++; /* pass to the prefix in h5tools_simple_prefix the total position - instead of the current stripmine position i; this is necessary - to print the array indices */ - - /* pass to the prefix in h5tools_simple_prefix the total position - this is necessary to print the array indices */ + instead of the current stripmine position i; this is necessary + to print the array indices */ curr_pos = ctx->sm_pos + i; h5tools_simple_prefix(stream, info, ctx, curr_pos, secnum); @@ -709,7 +705,7 @@ h5tools_dump_simple_data(FILE *stream, const h5dump_t *info, hid_t container, *------------------------------------------------------------------------- */ static herr_t -h5tools_dump_simple_subset(FILE *stream, const h5dump_t *info, hid_t dset, +h5tools_dump_simple_subset(FILE *stream, const h5tool_format_t *info, hid_t dset, hid_t p_type, struct subset_t *sset, int indentlevel) { @@ -876,7 +872,7 @@ done: *------------------------------------------------------------------------- */ static int -h5tools_dump_simple_dset(FILE *stream, const h5dump_t *info, hid_t dset, +h5tools_dump_simple_dset(FILE *stream, const h5tool_format_t *info, hid_t dset, hid_t p_type, int indentlevel) { hid_t f_space; /*file data space */ @@ -1071,7 +1067,7 @@ h5tools_dump_simple_dset(FILE *stream, const h5dump_t *info, hid_t dset, *------------------------------------------------------------------------- */ static int -h5tools_dump_simple_mem(FILE *stream, const h5dump_t *info, hid_t obj_id, +h5tools_dump_simple_mem(FILE *stream, const h5tool_format_t *info, hid_t obj_id, hid_t type, hid_t space, void *mem, int indentlevel) { int i; /*counters */ @@ -1160,7 +1156,7 @@ h5tools_dump_simple_mem(FILE *stream, const h5dump_t *info, hid_t obj_id, *------------------------------------------------------------------------- */ int -h5tools_dump_dset(FILE *stream, const h5dump_t *info, hid_t dset, hid_t _p_type, +h5tools_dump_dset(FILE *stream, const h5tool_format_t *info, hid_t dset, hid_t _p_type, struct subset_t *sset, int indentlevel) { hid_t f_space; @@ -1168,7 +1164,7 @@ h5tools_dump_dset(FILE *stream, const h5dump_t *info, hid_t dset, hid_t _p_type, hid_t f_type; H5S_class_t space_type; int status = FAIL; - h5dump_t info_dflt; + h5tool_format_t info_dflt; /* Use default values */ if (!stream) @@ -1238,10 +1234,10 @@ done: *------------------------------------------------------------------------- */ int -h5tools_dump_mem(FILE *stream, const h5dump_t *info, hid_t obj_id, hid_t type, +h5tools_dump_mem(FILE *stream, const h5tool_format_t *info, hid_t obj_id, hid_t type, hid_t space, void *mem, int indentlevel) { - h5dump_t info_dflt; + h5tool_format_t info_dflt; /* Use default values */ if (!stream) @@ -1260,8 +1256,6 @@ h5tools_dump_mem(FILE *stream, const h5dump_t *info, hid_t obj_id, hid_t type, indentlevel); } - - /*------------------------------------------------------------------------- * Function: init_acc_pos * @@ -1290,4 +1284,3 @@ void init_acc_pos(h5tools_context_t *ctx, hsize_t *dims) ctx->pos[i]=0; } - diff --git a/tools/lib/h5tools.h b/tools/lib/h5tools.h index c5ca4fa..4bbc2d6 100644 --- a/tools/lib/h5tools.h +++ b/tools/lib/h5tools.h @@ -26,13 +26,13 @@ #define ESCAPE_HTML 1 #define OPT(X,S) ((X) ? (X) : (S)) #define OPTIONAL_LINE_BREAK "\001" /* Special strings embedded in the output */ -#define START_OF_DATA 0x0001 -#define END_OF_DATA 0x0002 +#define START_OF_DATA 0x0001 +#define END_OF_DATA 0x0002 /* * Information about how to format output. */ -typedef struct h5dump_t { +typedef struct h5tool_format_t { /* * Fields associated with formatting numeric data. If a datatype matches * multiple formats based on its size, then the first applicable format @@ -321,82 +321,7 @@ typedef struct h5dump_t { /*escape non printable characters */ int do_escape; -} h5dump_t; - -typedef struct dump_header{ - const char *name; - const char *filebegin; - const char *fileend; - const char *bootblockbegin; - const char *bootblockend; - const char *groupbegin; - const char *groupend; - const char *datasetbegin; - const char *datasetend; - const char *attributebegin; - const char *attributeend; - const char *datatypebegin; - const char *datatypeend; - const char *dataspacebegin; - const char *dataspaceend; - const char *databegin; - const char *dataend; - const char *softlinkbegin; - const char *softlinkend; - const char *subsettingbegin; - const char *subsettingend; - const char *startbegin; - const char *startend; - const char *stridebegin; - const char *strideend; - const char *countbegin; - const char *countend; - const char *blockbegin; - const char *blockend; - - const char *fileblockbegin; - const char *fileblockend; - const char *bootblockblockbegin; - const char *bootblockblockend; - const char *groupblockbegin; - const char *groupblockend; - const char *datasetblockbegin; - const char *datasetblockend; - const char *attributeblockbegin; - const char *attributeblockend; - const char *datatypeblockbegin; - const char *datatypeblockend; - const char *dataspaceblockbegin; - const char *dataspaceblockend; - const char *datablockbegin; - const char *datablockend; - const char *softlinkblockbegin; - const char *softlinkblockend; - const char *strblockbegin; - const char *strblockend; - const char *enumblockbegin; - const char *enumblockend; - const char *structblockbegin; - const char *structblockend; - const char *vlenblockbegin; - const char *vlenblockend; - const char *subsettingblockbegin; - const char *subsettingblockend; - const char *startblockbegin; - const char *startblockend; - const char *strideblockbegin; - const char *strideblockend; - const char *countblockbegin; - const char *countblockend; - const char *blockblockbegin; - const char *blockblockend; - - const char *dataspacedescriptionbegin; - const char *dataspacedescriptionend; - const char *dataspacedimbegin; - const char *dataspacedimend; - -} dump_header; +} h5tool_format_t; typedef struct h5tools_context_t { size_t cur_column; /*current column for output */ @@ -419,8 +344,6 @@ typedef struct h5tools_context_t { hsize_t sm_pos; /* current stripmine element position */ } h5tools_context_t; - - /* a structure to hold the subsetting particulars for a dataset */ struct subset_t { hsize_t *start; @@ -429,74 +352,12 @@ struct subset_t { hsize_t *block; }; -/*if we get a new program that needs to use the library add its name here*/ -typedef enum { - UNKNOWN = 0, - H5LS, - H5DUMP -} ProgType; - -/* taken from h5dump.h */ -#define ATTRIBUTE_DATA 0 -#define DATASET_DATA 1 -#define ENUM_DATA 2 - -#define COL 3 - -extern int indent; /*how far in to indent the line */ extern FILE *rawdatastream; /*output stream for raw data */ -/* taken from h5dump.h*/ -#define ATTRIBUTE "ATTRIBUTE" -#define BLOCK "BLOCK" -#define SUPER_BLOCK "SUPER_BLOCK" -#define COMPRESSION "COMPRESSION" -#define CONCATENATOR "//" -#define COMPLEX "COMPLEX" -#define COUNT "COUNT" -#define CSET "CSET" -#define CTYPE "CTYPE" -#define DATA "DATA" +/* Strings for output */ +#define GROUP "GROUP" #define DATASET "DATASET" -#define DATASPACE "DATASPACE" #define DATATYPE "DATATYPE" -#define EXTERNAL "EXTERNAL" -#define FILENO "FILENO" -#define GROUPNAME "GROUP" -#define HARDLINK "HARDLINK" -#define NLINK "NLINK" -#define OBJID "OBJECTID" -#define OBJNO "OBJNO" -#define S_SCALAR "SCALAR" -#define S_SIMPLE "SIMPLE" -#define S_NULL "NULL" -#define SOFTLINK "SOFTLINK" -#define STORAGELAYOUT "STORAGELAYOUT" -#define START "START" -#define STRIDE "STRIDE" -#define STRSIZE "STRSIZE" -#define STRPAD "STRPAD" -#define SUBSET "SUBSET" -#define FILTERS "FILTERS" -#define DEFLATE "COMPRESSION DEFLATE" -#define DEFLATE_LEVEL "LEVEL" -#define SHUFFLE "PREPROCESSING SHUFFLE" -#define FLETCHER32 "CHECKSUM FLETCHER32" -#define SZIP "COMPRESSION SZIP" -#define NBIT "COMPRESSION NBIT" -#define SCALEOFFSET "COMPRESSION SCALEOFFSET" -#define SCALEOFFSET_MINBIT "MIN BITS" -#define STORAGE_LAYOUT "STORAGE_LAYOUT" -#define CONTIGUOUS "CONTIGUOUS" -#define COMPACT "COMPACT" -#define CHUNKED "CHUNKED" -#define EXTERNAL_FILE "EXTERNAL_FILE" -#define FILLVALUE "FILLVALUE" -#define FILE_CONTENTS "FILE_CONTENTS" - - -#define BEGIN "{" -#define END "}" /* Definitions of useful routines */ extern void h5tools_init(void); @@ -504,13 +365,13 @@ extern void h5tools_close(void); extern hid_t h5tools_fopen(const char *fname, const char *driver, char *drivername, size_t drivername_len, int argc, const char *argv[]); -extern int h5tools_dump_dset(FILE *stream, const h5dump_t *info, hid_t dset, +extern int h5tools_dump_dset(FILE *stream, const h5tool_format_t *info, hid_t dset, hid_t p_typ, struct subset_t *sset, int indentlevel); -extern int h5tools_dump_mem(FILE *stream, const h5dump_t *info, hid_t obj_id, +extern int h5tools_dump_mem(FILE *stream, const h5tool_format_t *info, hid_t obj_id, hid_t type, hid_t space, void *mem, int indentlevel); extern hid_t h5tools_get_native_type(hid_t type); -extern void h5tools_dump_simple_data(FILE *stream, const h5dump_t *info, hid_t container, +extern void h5tools_dump_simple_data(FILE *stream, const h5tool_format_t *info, hid_t container, h5tools_context_t *ctx/*in,out*/, unsigned flags, hsize_t nelmts, hid_t type, void *_mem); @@ -520,5 +381,5 @@ extern int h5tools_can_encode(H5Z_filter_t filtn); void init_acc_pos(h5tools_context_t *ctx, hsize_t *dims); - #endif /* H5TOOLS_H__ */ + diff --git a/tools/lib/h5tools_ref.c b/tools/lib/h5tools_ref.c index c93d2e5..89bdaf1 100644 --- a/tools/lib/h5tools_ref.c +++ b/tools/lib/h5tools_ref.c @@ -156,17 +156,26 @@ haddr_t ref_path_table_lookup(const char *thepath) { H5G_stat_t sb; - haddr_t ret_value; - /* Get object ID for object at path */ - if(H5Gget_objinfo(thefile, thepath, TRUE, &sb)<0) - /* fatal error ? */ + /* Check for external link first, so we don't return the OID of an object in another file */ + if(H5Gget_objinfo(thefile, thepath, FALSE, &sb)<0) return HADDR_UNDEF; - - /* Return OID or HADDR_UNDEF */ - ret_value = ref_path_table_find(sb.u.obj.objno) ? sb.u.obj.objno : HADDR_UNDEF; - - return(ret_value); + if(sb.type == H5G_LINK) { + /* Get object ID for object at path */ + /* (If the object is not a soft link, we've already retrieved the + * correct information and don't have to perform this call. -QAK + */ + if(H5Gget_objinfo(thefile, thepath, TRUE, &sb)<0) + /* fatal error ? */ + return HADDR_UNDEF; + } /* end if */ + + + /* All existing objects in the file had better be in the table */ + HDassert(ref_path_table_find(sb.u.obj.objno)); + + /* Return OID */ + return(sb.u.obj.objno); } /*------------------------------------------------------------------------- diff --git a/tools/lib/h5tools_str.c b/tools/lib/h5tools_str.c index 1c1c1b2..73ca045 100644 --- a/tools/lib/h5tools_str.c +++ b/tools/lib/h5tools_str.c @@ -24,7 +24,7 @@ #include <string.h> #include "H5private.h" -#include "h5tools.h" /*for h5dump_t structure */ +#include "h5tools.h" /*for h5tool_format_t structure */ #include "h5tools_ref.h" #include "h5tools_str.h" /*function prototypes */ @@ -304,7 +304,7 @@ h5tools_str_fmt(h5tools_str_t *str/*in,out*/, size_t start, const char *fmt) *------------------------------------------------------------------------- */ char * -h5tools_str_prefix(h5tools_str_t *str/*in,out*/, const h5dump_t *info, +h5tools_str_prefix(h5tools_str_t *str/*in,out*/, const h5tool_format_t *info, hsize_t elmtno, int ndims, hsize_t min_idx[], hsize_t max_idx[], h5tools_context_t *ctx) { @@ -364,7 +364,7 @@ h5tools_str_prefix(h5tools_str_t *str/*in,out*/, const h5dump_t *info, *------------------------------------------------------------------------- */ int -h5tools_str_dump_region(h5tools_str_t *str, hid_t region, const h5dump_t *info) +h5tools_str_dump_region(h5tools_str_t *str, hid_t region, const h5tool_format_t *info) { hssize_t nblocks, npoints; hsize_t alloc_size; @@ -461,7 +461,7 @@ h5tools_str_dump_region(h5tools_str_t *str, hid_t region, const h5dump_t *info) *------------------------------------------------------------------------- */ void -h5tools_print_char(h5tools_str_t *str, const h5dump_t *info, unsigned char ch) +h5tools_print_char(h5tools_str_t *str, const h5tool_format_t *info, unsigned char ch) { if (info->str_locale == ESCAPE_HTML) { if (ch <= ' ' || ch > '~') @@ -564,7 +564,7 @@ h5tools_print_char(h5tools_str_t *str, const h5dump_t *info, unsigned char ch) *------------------------------------------------------------------------- */ char * -h5tools_str_sprint(h5tools_str_t *str, const h5dump_t *info, hid_t container, +h5tools_str_sprint(h5tools_str_t *str, const h5tool_format_t *info, hid_t container, hid_t type, void *vp, h5tools_context_t *ctx) { size_t n, offset, size=0, nelmts, start; @@ -859,7 +859,7 @@ h5tools_str_sprint(h5tools_str_t *str, const h5dump_t *info, hid_t container, /* Print object type and close object */ switch (otype) { case H5G_GROUP: - h5tools_str_append(str, GROUPNAME); + h5tools_str_append(str, GROUP); H5Gclose(obj); break; case H5G_DATASET: diff --git a/tools/lib/h5tools_str.h b/tools/lib/h5tools_str.h index db7c1b3..19872a1 100644 --- a/tools/lib/h5tools_str.h +++ b/tools/lib/h5tools_str.h @@ -31,12 +31,12 @@ extern char *h5tools_str_append(h5tools_str_t *str, const char *fmt, ...); extern char *h5tools_str_reset(h5tools_str_t *str); extern char *h5tools_str_trunc(h5tools_str_t *str, size_t size); extern char *h5tools_str_fmt(h5tools_str_t *str, size_t start, const char *fmt); -extern char *h5tools_str_prefix(h5tools_str_t *str, const h5dump_t *info, +extern char *h5tools_str_prefix(h5tools_str_t *str, const h5tool_format_t *info, hsize_t elmtno, int ndims, hsize_t min_idx[], hsize_t max_idx[], h5tools_context_t *ctx); -extern int h5tools_str_dump_region(h5tools_str_t *, hid_t, const h5dump_t *); -extern void h5tools_print_char(h5tools_str_t *str, const h5dump_t *info, unsigned char ch); -extern char *h5tools_str_sprint(h5tools_str_t *str, const h5dump_t *info, +extern int h5tools_str_dump_region(h5tools_str_t *, hid_t, const h5tool_format_t *); +extern void h5tools_print_char(h5tools_str_t *str, const h5tool_format_t *info, unsigned char ch); +extern char *h5tools_str_sprint(h5tools_str_t *str, const h5tool_format_t *info, hid_t container, hid_t type, void *vp, h5tools_context_t *ctx); diff --git a/tools/lib/h5tools_utils.c b/tools/lib/h5tools_utils.c index 3e63c56..9eba7c5 100644 --- a/tools/lib/h5tools_utils.c +++ b/tools/lib/h5tools_utils.c @@ -591,7 +591,7 @@ init_objs(hid_t fid, find_objs_t *info, table_t **group_table, init_table(type_table); /* Init the find_objs_t */ - info->prefix = ""; + info->prefix = (char *)""; info->group_table = *group_table; info->type_table = *type_table; info->dset_table = *dset_table; diff --git a/tools/lib/h5trav.c b/tools/lib/h5trav.c index 5030e37..b59162a 100644 --- a/tools/lib/h5trav.c +++ b/tools/lib/h5trav.c @@ -17,14 +17,14 @@ #include "H5private.h" /* functions for traversal */ -int traverse( hid_t loc_id, +static int traverse( hid_t loc_id, const char *group_name, trav_table_t *table, trav_info_t *info, int *idx, int print); -herr_t get_nnames( hid_t loc_id, +static hssize_t get_nnames( hid_t loc_id, const char *group_name ); herr_t get_name_type( hid_t loc_id, @@ -159,36 +159,6 @@ void h5trav_freeinfo( trav_info_t *info, int nobjs ) /*------------------------------------------------------------------------- - * Function: count_names - * - * Purpose: operator function - * - * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu - * - * Date: October 10, 2002 - * - * Comments: - * - * Modifications: - * - *------------------------------------------------------------------------- - */ - -static herr_t count_names( hid_t loc_id, const char *name, void *op_data) -{ - - H5G_stat_t statbuf; - - if (H5Gget_objinfo( loc_id, name, 0, &statbuf) < 0 ) - return 1; - - (*(int *)op_data)++; - - /* Define a default zero value for return. This will cause the iterator to continue */ - return 0; -} - -/*------------------------------------------------------------------------- * Function: get_nnames * * Purpose: Counts the number of names in the group GROUP_NAME @@ -209,15 +179,24 @@ static herr_t count_names( hid_t loc_id, const char *name, void *op_data) *------------------------------------------------------------------------- */ -herr_t get_nnames( hid_t loc_id, const char *group_name ) +static hssize_t get_nnames( hid_t loc_id, const char *group_name ) { + hid_t gid; + hsize_t nobjs = 0; - int nobjs = 0; + /* Open the group */ + if((gid = H5Gopen(loc_id, group_name)) < 0) + return(-1); - if ( H5Giterate( loc_id, group_name, NULL, count_names, (void *)&nobjs ) < 0 ) - return -1; + /* Retrieve the number of objects in it */ + if(H5Gget_num_objs(gid, &nobjs) < 0) + return(-1); - return nobjs; + /* Close the group */ + if(H5Gclose(gid) < 0) + return(-1); + + return((hssize_t)nobjs); } @@ -242,7 +221,7 @@ static herr_t opget_info( hid_t loc_id, const char *name, void *op_data) H5G_stat_t statbuf; - if (H5Gget_objinfo( loc_id, name, 0, &statbuf) < 0 ) + if (H5Gget_objinfo( loc_id, name, FALSE, &statbuf) < 0 ) return -1; ((trav_info_t *)op_data)->type = statbuf.type; @@ -306,7 +285,7 @@ herr_t get_name_type( hid_t loc_id, *------------------------------------------------------------------------- */ -int traverse( hid_t loc_id, +static int traverse( hid_t loc_id, const char *group_name, trav_table_t *table, trav_info_t *info, @@ -323,7 +302,7 @@ int traverse( hid_t loc_id, int i, j; /* get the number of names */ - if (( n_names = get_nnames( loc_id, group_name )) < 0 ) + if (( n_names = (int)get_nnames( loc_id, group_name )) < 0 ) return -1; for ( i = 0; i < n_names; i++) @@ -332,13 +311,13 @@ int traverse( hid_t loc_id, return -1; /* allocate path buffer */ - path = (char*) HDmalloc(strlen(group_name) + strlen(name) + 2); + path = (char*) HDmalloc(HDstrlen(group_name) + HDstrlen(name) + 2); /* initialize path */ - strcpy( path, group_name ); - if ( strcmp(group_name,"/")!=0 ) - strcat( path, "/" ); - strcat( path, name ); + HDstrcpy( path, group_name ); + if ( HDstrcmp(group_name, "/") != 0 ) + HDstrcat( path, "/" ); + HDstrcat( path, name ); /* disable error reporting */ H5E_BEGIN_TRY { @@ -483,22 +462,22 @@ int traverse( hid_t loc_id, case H5G_LINK: { - char *targbuf=NULL; - /* increment */ inserted_objs++; /* add object to table */ - trav_table_add(statbuf.u.obj.objno, path, H5G_LINK, table ); + trav_table_add(HADDR_UNDEF, path, H5G_LINK, table ); if (statbuf.u.slink.linklen>0) { - targbuf=malloc(statbuf.u.slink.linklen); + char *targbuf; + + targbuf = HDmalloc(statbuf.u.slink.linklen); + assert(targbuf); H5Gget_linkval(loc_id,path,statbuf.u.slink.linklen,targbuf); if (print) printf(" %-10s %s -> %s\n", "link", path, targbuf); - if (targbuf) - free(targbuf); + free(targbuf); } else { @@ -511,6 +490,8 @@ int traverse( hid_t loc_id, default: + HDfprintf(stderr, "traverse: Unknown object!\n"); + return (-1); break; } diff --git a/tools/lib/h5trav.h b/tools/lib/h5trav.h index cd38a9b..40fa63d 100644 --- a/tools/lib/h5trav.h +++ b/tools/lib/h5trav.h @@ -17,19 +17,14 @@ #include "hdf5.h" -#if 0 -#define H5_TRAV_DEBUG -#endif - - /*------------------------------------------------------------------------- * public struct to store name and type of an object * the TYPE can be: * H5G_UNKNOWN = -1, - * H5G_LINK, Object is a symbolic link * H5G_GROUP, Object is a group * H5G_DATASET, Object is a dataset * H5G_TYPE, Object is a named data type + * H5G_LINK, Object is a symbolic link *------------------------------------------------------------------------- */ diff --git a/tools/misc/h5repart_gentest.c b/tools/misc/h5repart_gentest.c index df56e72..6457595 100644 --- a/tools/misc/h5repart_gentest.c +++ b/tools/misc/h5repart_gentest.c @@ -29,7 +29,7 @@ int main(void) { - hid_t file=(-1), fapl, fapl2=(-1), space=(-1), dset=(-1); + hid_t file=(-1), fapl, space=(-1), dset=(-1); char dname[]="dataset"; int i, j; int buf[FAMILY_NUMBER][FAMILY_SIZE]; diff --git a/tools/misc/h5stat.c b/tools/misc/h5stat.c index 4965d23..20e76be 100644 --- a/tools/misc/h5stat.c +++ b/tools/misc/h5stat.c @@ -94,11 +94,11 @@ static struct { static unsigned ceil_log10(unsigned long x) { - unsigned long pow = 1; + unsigned long pow10 = 1; unsigned ret = 0; - while(x >= pow) { - pow *= 10; + while(x >= pow10) { + pow10 *= 10; ret++; } /* end while */ diff --git a/tools/testfiles/h5diff_25.txt b/tools/testfiles/h5diff_25.txt index b137f44..237a685 100644 --- a/tools/testfiles/h5diff_25.txt +++ b/tools/testfiles/h5diff_25.txt @@ -1,4 +1,4 @@ ############################# Expected output for 'h5diff file3.h5 file3.h5 -v link link' ############################# -Link: </link> and </link> +Soft Link: </link> and </link> |