diff options
Diffstat (limited to 'tools')
-rw-r--r-- | tools/h5ls.c | 28 | ||||
-rw-r--r-- | tools/h5tools.c | 8 |
2 files changed, 31 insertions, 5 deletions
diff --git a/tools/h5ls.c b/tools/h5ls.c index c79c8d1..52ac9cb 100644 --- a/tools/h5ls.c +++ b/tools/h5ls.c @@ -175,7 +175,7 @@ list (hid_t group, const char *name, void __unused__ *op_data) hid_t obj; hid_t (*func)(void*); void *edata; - int i; + int i, nf; char buf[512], comment[50]; H5G_stat_t statbuf; struct tm *tm; @@ -204,6 +204,30 @@ list (hid_t group, const char *name, void __unused__ *op_data) printf ("}\n"); H5Dclose (space); H5Aiterate (obj, NULL, list_attr, NULL); + + /* Print additional information about datasets */ + if (verbose_g>0) { + hid_t dcpl = H5Dget_create_plist(obj); + if ((nf = H5Pget_nfilters(dcpl))>0) { + for (i=0; i<nf; i++) { + unsigned filt_flags; + H5Z_filter_t filt_id; + unsigned cd_values[20]; + size_t cd_nelmts = NELMTS(cd_values); + size_t cd_num; + filt_id = H5Pget_filter(dcpl, i, &filt_flags, &cd_nelmts, + cd_values); + sprintf(comment, "Filter-%d:", i); + printf(" %-10s %u %s {", comment, (unsigned)filt_id, + filt_flags & H5Z_FLAG_OPTIONAL?"OPT":""); + for (cd_num=0; cd_num<cd_nelmts; cd_num++) { + printf("%s%u", cd_num?", ":"", cd_values[cd_num]); + } + printf("}\n"); + } + } + H5Pclose(dcpl); + } H5Dclose (obj); } else if ((obj=H5Gopen (group, name))>=0) { printf ("Group\n"); @@ -240,7 +264,7 @@ list (hid_t group, const char *name, void __unused__ *op_data) if (comment[0]) printf(" %-10s %s\n", "Comment:", comment); } - if (dump_g && (obj=H5Dopen(group, name))) { + if (dump_g && (obj=H5Dopen(group, name))>=0) { /* Turn on error reporting before dumping the data */ H5Eset_auto(func, edata); dump_dataset_values(obj); diff --git a/tools/h5tools.c b/tools/h5tools.c index fae2251..0472074 100644 --- a/tools/h5tools.c +++ b/tools/h5tools.c @@ -293,8 +293,10 @@ h5dump_simple(FILE *stream, const h5dump_t *info, hid_t dset, hid_t p_type) hs_size, NULL); H5Sselect_hyperslab(sm_space, H5S_SELECT_SET, zero, NULL, &hs_nelmts, NULL); - H5Dread(dset, p_type, sm_space, f_space, H5P_DEFAULT, sm_buf); - + if (H5Dread(dset, p_type, sm_space, f_space, H5P_DEFAULT, sm_buf)<0) { + return -1; + } + /* Print the data */ for (i=0; i<hs_nelmts; i++) { /* Render the element */ @@ -375,7 +377,7 @@ h5dump_fixtype(hid_t f_type) hid_t m_type=-1, f_memb; hid_t *memb=NULL; char **name=NULL; - int nmembs, i, j, *ndims=NULL; + int nmembs=0, i, j, *ndims=NULL; size_t size, offset, *dims=NULL, nelmts; size = H5Tget_size(f_type); |