summaryrefslogtreecommitdiffstats
path: root/tools/h5ls.c
diff options
context:
space:
mode:
authorRobb Matzke <matzke@llnl.gov>1999-03-30 11:38:34 (GMT)
committerRobb Matzke <matzke@llnl.gov>1999-03-30 11:38:34 (GMT)
commitf003dead4d1701aedd7833354ede73c6eb93a971 (patch)
treee64999eb9d666aedd808f1c91f4a2be8676d6881 /tools/h5ls.c
parent804fae33ced79c63a2c7fa2adc8537c80597fb33 (diff)
downloadhdf5-f003dead4d1701aedd7833354ede73c6eb93a971.zip
hdf5-f003dead4d1701aedd7833354ede73c6eb93a971.tar.gz
hdf5-f003dead4d1701aedd7833354ede73c6eb93a971.tar.bz2
[svn-r1169] ./configure.in
./configure [REGENERATED] ./src/H5D.c ./src/H5O.c Removed H5AC, H5B, and H5T from the default list of packages to debug (because they're pretty expensive debugging), and added H5O. Also fixed a bug for undefined variable in H5D when H5S debugging is turned on but H5T debugging is turned off. ./config/conclude.in Fixed installation of header files for building in a directory other than the source directory. This fixes a bug where H5config.h wasn't being installed. ./src/H5.c ./src/H5A.c ./src/H5D.c ./src/H5F.c ./src/H5G.c ./src/H5I.c ./src/H5Iprivate.h ./src/H5P.c ./src/H5R.c ./src/H5RA.c ./src/H5S.c ./src/H5T.c ./src/H5TB.c ./src/H5Tprivate.h ./src/H5Z.c ./src/H5detect.c ./src/H5private.h Changed the way the library shuts down again. Now it handles cycles between packages and isn't so sensitive to dependencies between packages. A package might shut down only to be restarted to process a request from some other package being shut down. Loops are detected after 100 iteractions and the shutdown is aborted with a message on standard error. This also makes it a lot easier to debug. ./src/H5A.c Fixed H5A_write() and H5A_read() so they pass a non-null background buffer to the conversion functions. This is necessary when an attribute has a compound data type. ./src/H5Flow.c ./src/H5Fprivate.h ./src/H5Fsec2.c Reindented new Win32 stuff. ./src/H5Odtype.c Fixed a bug when enumeration types are used in a compound data type. The byte pointer wasn't incremented after the type information was written. ./tools/h5ls.c Compound data types display their total size because it's not always obvious from looking at the members. Scalar attributes show their space as `scalar' instead of `{}'. The index value is not printed for attributes that have only a few values. Instead the word `Data:' is printed on the first line of attribute data. Named types display their data type only if verbose output was requested.
Diffstat (limited to 'tools/h5ls.c')
-rw-r--r--tools/h5ls.c37
1 files changed, 25 insertions, 12 deletions
diff --git a/tools/h5ls.c b/tools/h5ls.c
index d1c3552..45e0deb 100644
--- a/tools/h5ls.c
+++ b/tools/h5ls.c
@@ -641,6 +641,7 @@ display_cmpd_type(hid_t type, int indent)
char *name=NULL; /*member name */
int ndims; /*dimensionality */
size_t dims[8]; /*dimensions */
+ size_t size; /*total size of type in bytes */
int perm[8]; /*index permutation */
hid_t subtype; /*member data type */
int i, j, n; /*miscellaneous counters */
@@ -684,7 +685,9 @@ display_cmpd_type(hid_t type, int indent)
display_type(subtype, indent+4);
H5Tclose(subtype);
}
- printf("\n%*s}", indent, "");
+ size = H5Tget_size(type);
+ printf("\n%*s} %lu byte%s",
+ indent, "", (unsigned long)size, 1==size?"":"s");
return TRUE;
}
@@ -1036,28 +1039,36 @@ list_attr (hid_t obj, const char *attr_name, void __unused__ *op_data)
printf(" Attribute: ");
n = display_string(stdout, attr_name, TRUE);
- printf("%*s", MAX(0, 10-n), "");
+ printf("%*s", MAX(0, 9-n), "");
if ((attr = H5Aopen_name(obj, attr_name))) {
space = H5Aget_space(attr);
type = H5Aget_type(attr);
/* Data space */
ndims = H5Sget_simple_extent_dims(space, size, NULL);
- printf(" {");
- for (i=0; i<ndims; i++) {
- HDfprintf(stdout, "%s%Hu", i?", ":"", size[i]);
- nelmts *= size[i];
+ if (0==ndims) {
+ puts(" scalar");
+ } else {
+ printf(" {");
+ for (i=0; i<ndims; i++) {
+ HDfprintf(stdout, "%s%Hu", i?", ":"", size[i]);
+ nelmts *= size[i];
+ }
+ puts("}");
}
- puts("}");
/* Data type */
- printf(" Type: ");
+ printf(" Type: ");
display_type(type, 15);
putchar('\n');
/* Data */
memset(&info, 0, sizeof info);
- info.idx_fmt = " (%s) ";
+ if (nelmts<5) {
+ info.idx_fmt = " Data: ";
+ } else {
+ info.idx_fmt = " (%s) ";
+ }
info.line_ncols = width_g;
if (label_g) info.cmpd_name = "%s=";
if (string_g && 1==H5Tget_size(type) &&
@@ -1322,9 +1333,11 @@ group_list2(hid_t grp, const char *name)
static herr_t
datatype_list2(hid_t type, const char __unused__ *name)
{
- printf(" %-10s ", "Type:");
- display_type(type, 15);
- printf("\n");
+ if (verbose_g>0) {
+ printf(" %-10s ", "Type:");
+ display_type(type, 15);
+ printf("\n");
+ }
return 0;
}