diff options
author | Pedro Vicente Nunes <pvn@hdfgroup.org> | 2009-01-14 15:58:16 (GMT) |
---|---|---|
committer | Pedro Vicente Nunes <pvn@hdfgroup.org> | 2009-01-14 15:58:16 (GMT) |
commit | 98d4ba5d8a6fcb80fdf02517e48c4d6b19b1b122 (patch) | |
tree | 84519a1daf58c1a383429d58c21d46d79edf7f11 /tools/h5ls/h5ls.c | |
parent | b7a12779d578169ec9d2b27dea9be68de38e48d3 (diff) | |
download | hdf5-98d4ba5d8a6fcb80fdf02517e48c4d6b19b1b122.zip hdf5-98d4ba5d8a6fcb80fdf02517e48c4d6b19b1b122.tar.gz hdf5-98d4ba5d8a6fcb80fdf02517e48c4d6b19b1b122.tar.bz2 |
[svn-r16310] merge 16299
Print a message of
Storage: information not available
When displaying storage information for VL and dataset region types
Added 2 shell runs that display this information
#818
Tested: windows, linux
Diffstat (limited to 'tools/h5ls/h5ls.c')
-rw-r--r-- | tools/h5ls/h5ls.c | 36 |
1 files changed, 29 insertions, 7 deletions
diff --git a/tools/h5ls/h5ls.c b/tools/h5ls/h5ls.c index eec1fcd..d0af4bb 100644 --- a/tools/h5ls/h5ls.c +++ b/tools/h5ls/h5ls.c @@ -1515,7 +1515,8 @@ dataset_list2(hid_t dset, const char UNUSED *name) int ndims; /* dimensionality */ int n, max_len; /* max extern file name length */ double utilization; /* percent utilization of storage */ - int i; + H5T_class_t tclass; /* datatype class identifier */ + int i; if(verbose_g > 0) { dcpl = H5Dget_create_plist(dset); @@ -1539,14 +1540,35 @@ dataset_list2(hid_t dset, const char UNUSED *name) /* Print total raw storage size */ total = H5Sget_simple_extent_npoints(space) * H5Tget_size(type); used = H5Dget_storage_size(dset); + tclass = H5Tget_class(type); printf(" %-10s ", "Storage:"); - printf("%lu logical byte%s, %lu allocated byte%s", - (unsigned long)total, 1==total?"":"s", - (unsigned long)used, 1==used?"":"s"); - if (used>0) { - utilization = (total*100.0)/used; - printf(", %1.2f%% utilization", utilization); + switch (tclass) + { + + case H5T_VLEN: + printf("information not available"); + break; + + case H5T_REFERENCE: + if ( H5Tequal(type, H5T_STD_REF_DSETREG)) + { + printf("information not available"); + } + break; + + default: + printf("%lu logical byte%s, %lu allocated byte%s", + (unsigned long)total, 1==total?"":"s", + (unsigned long)used, 1==used?"":"s"); + if (used>0) + { + utilization = (total*100.0)/used; + printf(", %1.2f%% utilization", utilization); + } + } + + putchar('\n'); /* Print information about external strorage */ |