diff options
Diffstat (limited to 'tools')
-rw-r--r-- | tools/h5import.c | 26 | ||||
-rw-r--r-- | tools/h5ls.c | 44 | ||||
-rw-r--r-- | tools/h5repart.c | 29 | ||||
-rw-r--r-- | tools/h5tools.c | 10 |
4 files changed, 76 insertions, 33 deletions
diff --git a/tools/h5import.c b/tools/h5import.c index a5c030a..5d36e78 100644 --- a/tools/h5import.c +++ b/tools/h5import.c @@ -7,15 +7,27 @@ * * Purpose: Create an hdf5 file with a 1d dataset of uint8. */ -#include <fcntl.h> -#include <hdf5.h> -#include <string.h> -#include <stdlib.h> -#include <stdio.h> -#include <sys/stat.h> + +/* See H5private.h for how to include system headers */ +#include <H5config.h> +#ifdef STDC_HEADERS +# include <fcntl.h> +# include <string.h> +# include <stdlib.h> +# include <stdio.h> +#endif + #ifdef HAVE_UNISTD_H -#include <unistd.h> +# include <sys/types.h> +# include <unistd.h> #endif + +#ifdef HAVE_SYS_STAT_H +# include <sys/stat.h> +#endif + +#include <hdf5.h> + /*------------------------------------------------------------------------- * Function: usage diff --git a/tools/h5ls.c b/tools/h5ls.c index 383c590..4423b31 100644 --- a/tools/h5ls.c +++ b/tools/h5ls.c @@ -919,6 +919,7 @@ dataset_list2(hid_t dset) { hid_t dcpl; /*dataset creation property list*/ hid_t type; /*data type of dataset */ + hid_t space; /*data space of dataset */ int nf; /*number of filters */ unsigned filt_flags; /*filter flags */ H5Z_filter_t filt_id; /*filter identification number */ @@ -929,42 +930,50 @@ dataset_list2(hid_t dset) char s[64]; /*temporary string buffer */ off_t f_offset; /*offset in external file */ hsize_t f_size; /*bytes used in external file */ - hsize_t total_offset; /*total dataset offset */ + hsize_t total; /*total size or offset */ + hsize_t chsize[64]; /*chunk size in elements */ + int ndims; /*dimensionality */ int i; - if (verbose_g>0) { dcpl = H5Dget_create_plist(dset); - - /* Print data type */ - printf(" %-10s ", "Type:"); + space = H5Dget_space(dset); type = H5Dget_type(dset); - display_type(type, 15); - H5Tclose(type); - printf("\n"); + + /* Print information about chunked storage */ + if (H5D_CHUNKED==H5Pget_layout(dcpl)) { + ndims = H5Pget_chunk(dcpl, NELMTS(chsize), chsize/*out*/); + printf(" %-10s {", "Chunks:"); + total = H5Tget_size(type); + for (i=0; i<ndims; i++) { + printf("%s%lu", i?", ":"", (unsigned long)(chsize[i])); + total *= chsize[i]; + } + printf("} %lu bytes\n", (unsigned long)total); + } /* Print information about external strorage */ if ((nf = H5Pget_external_count(dcpl))>0) { printf(" %-10s %d external file%s (num/addr/offset/length)\n", "Extern:", nf, 1==nf?"":"s"); - for (i=0, total_offset=0; i<nf; i++) { + for (i=0, total=0; i<nf; i++) { if (H5Pget_external(dcpl, i, sizeof(f_name), f_name, &f_offset, &f_size)<0) { HDfprintf(stdout, " #%03d %10Hu %10s %10s ***ERROR*** %s\n", - i, total_offset, "", "", + i, total, "", "", i+1<nf?"Following addresses are incorrect":""); } else if (H5S_UNLIMITED==f_size) { HDfprintf(stdout, " #%03d %10Hu %10Hu %10s \"", - i, total_offset, (hsize_t)f_offset, "INF"); + i, total, (hsize_t)f_offset, "INF"); display_string(f_name); } else { HDfprintf(stdout, " #%03d %10Hu %10Hu %10Hu \"", - i, total_offset, (hsize_t)f_offset, f_size); + i, total, (hsize_t)f_offset, f_size); display_string(f_name); } printf("\"\n"); - total_offset += f_size; + total += f_size; } } @@ -986,6 +995,15 @@ dataset_list2(hid_t dset) printf("}\n"); } } + + /* Print data type */ + printf(" %-10s ", "Type:"); + display_type(type, 15); + printf("\n"); + + /* Close stuff */ + H5Tclose(type); + H5Sclose(space); H5Pclose(dcpl); } diff --git a/tools/h5repart.c b/tools/h5repart.c index 4561a91..b1a878e 100644 --- a/tools/h5repart.c +++ b/tools/h5repart.c @@ -11,17 +11,28 @@ * changing the size of the family members. It can also be used * to copy a single file to a single file with holes. */ -#include <ctype.h> -#include <errno.h> -#include <fcntl.h> -#include <hdf5.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <sys/stat.h> + +/* See H5private.h for how to include system headers */ +#include <H5config.h> +#ifdef STDC_HEADERS +# include <ctype.h> +# include <errno.h> +# include <fcntl.h> +# include <stdio.h> +# include <stdlib.h> +# include <string.h> +#endif + #ifdef HAVE_UNISTD_H -#include <unistd.h> +# include <sys/types.h> +# include <unistd.h> #endif + +#ifdef HAVE_SYS_STAT_H +# include <sys/stat.h> +#endif + +#include <hdf5.h> #define FALSE 0 #define TRUE 1 #define NAMELEN 4096 diff --git a/tools/h5tools.c b/tools/h5tools.c index 30bd03e..ec91f34 100644 --- a/tools/h5tools.c +++ b/tools/h5tools.c @@ -29,8 +29,6 @@ #endif #define OPT(X,S) ((X)?(X):(S)) -#define MIN(X,Y) ((X)<(Y)?(X):(Y)) -#define NELMTS(X) (sizeof(X)/sizeof(*X)) #define ALIGN(A,Z) ((((A)+(Z)-1)/(Z))*(Z)) @@ -250,7 +248,9 @@ h5dump_sprint(char *s/*out*/, const h5dump_t *info, hid_t type, void *vp) sprintf(temp, "%lu", *((unsigned long*)vp)); } else if (H5Tequal(type, H5T_NATIVE_HSSIZE)) { - if (sizeof(hssize_t)==sizeof(long)) { + if (sizeof(hssize_t)==sizeof(int)) { + sprintf(temp, "%d", *((int*)vp)); + } else if (sizeof(hssize_t)==sizeof(long)) { sprintf(temp, "%ld", *((long*)vp)); } else { char fmt[8]; @@ -261,7 +261,9 @@ h5dump_sprint(char *s/*out*/, const h5dump_t *info, hid_t type, void *vp) } } else if (H5Tequal(type, H5T_NATIVE_HSIZE)) { - if (sizeof(hsize_t)==sizeof(long)) { + if (sizeof(hsize_t)==sizeof(int)) { + sprintf(temp, "%u", *((unsigned*)vp)); + } else if (sizeof(hsize_t)==sizeof(long)) { sprintf(temp, "%lu", *((unsigned long*)vp)); } else { char fmt[8]; |