summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
Diffstat (limited to 'tools')
-rw-r--r--tools/h5import.c26
-rw-r--r--tools/h5ls.c44
-rw-r--r--tools/h5repart.c29
-rw-r--r--tools/h5tools.c10
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];