summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
Diffstat (limited to 'tools')
-rw-r--r--tools/h5import.c12
-rw-r--r--tools/h5tools.c20
2 files changed, 29 insertions, 3 deletions
diff --git a/tools/h5import.c b/tools/h5import.c
index de1af53..dd88ba6 100644
--- a/tools/h5import.c
+++ b/tools/h5import.c
@@ -56,7 +56,7 @@ usage (const char *argv0)
int
main (int argc, char *argv[])
{
- hid_t file, space, dset;
+ hid_t file, space=-1, dset=-1;
const char *output_name, *dset_name;
int argno, fd=-1;
hsize_t size[1];
@@ -108,8 +108,14 @@ main (int argc, char *argv[])
if (fd>=0) close (fd);
fd = -1;
H5E_BEGIN_TRY {
- H5Sclose (space);
- H5Dclose (dset);
+ if (space>=0) {
+ H5Sclose (space);
+ space = -1;
+ }
+ if (dset>=0) {
+ H5Dclose (dset);
+ dset = -1;
+ }
} H5E_END_TRY;
}
diff --git a/tools/h5tools.c b/tools/h5tools.c
index bfb46a3..f6b7c24 100644
--- a/tools/h5tools.c
+++ b/tools/h5tools.c
@@ -157,6 +157,26 @@ h5dump_sprint(char *s/*out*/, const h5dump_t *info, hid_t type, void *vp)
sprintf(temp, "%ld", *((long*)vp));
} else if (H5Tequal(type, H5T_NATIVE_ULONG)) {
sprintf(temp, "%lu", *((unsigned long*)vp));
+ } else if (H5Tequal(type, H5T_NATIVE_HSSIZE)) {
+ if (sizeof(hssize_t)==sizeof(long)) {
+ sprintf(temp, "%ld", *((long*)vp));
+ } else {
+ char fmt[8];
+ strcpy(fmt, "%");
+ strcat(fmt, PRINTF_LL_WIDTH);
+ strcat(fmt, "d");
+ sprintf(temp, fmt, *((long long*)vp));
+ }
+ } else if (H5Tequal(type, H5T_NATIVE_HSIZE)) {
+ if (sizeof(hsize_t)==sizeof(long)) {
+ sprintf(temp, "%lu", *((unsigned long*)vp));
+ } else {
+ char fmt[8];
+ strcpy(fmt, "%");
+ strcat(fmt, PRINTF_LL_WIDTH);
+ strcat(fmt, "u");
+ sprintf(temp, fmt, *((unsigned long long*)vp));
+ }
} else if (H5T_COMPOUND==H5Tget_class(type)) {
nmembs = H5Tget_nmembers(type);
strcpy(temp, OPT(info->cmpd_pre, "{"));