From 56e3f667d6e3e265ac044f3faf1b17137556e0f7 Mon Sep 17 00:00:00 2001 From: Quincey Koziol Date: Mon, 23 Jan 2006 15:46:34 -0500 Subject: [svn-r11886] Purpose: Code cleanup Description: Check in some of the code cleanups from working on the external link support. (This doesn't include any of the external link features) Platforms tested: FreeBSD 4.11 (sleipnir) Mac OSX.4 (amazon) Linux 2.4 --- MANIFEST | 1 + hl/src/H5LT.c | 4 +- perform/perf.c | 2 +- src/H5FDlog.c | 4 +- src/H5Fpublic.h | 2 +- src/H5Gname.c | 10 +- src/H5Gtraverse.c | 3 +- src/H5Oshared.c | 6 +- src/H5RS.c | 6 +- src/H5detect.c | 4 - test/b+tree.c | 3 +- test/cache.c | 2 +- test/dsets.c | 36 +- test/dt_arith.c | 20 +- test/error_test.c | 6 +- test/tattr.c | 1 - test/trefstr.c | 2 +- test/unlink.c | 18 +- tools/h5diff/h5diff_common.c | 2 +- tools/h5diff/h5diff_common.h | 2 +- tools/h5diff/h5diff_main.c | 2 +- tools/h5diff/ph5diff_main.c | 4 +- tools/h5dump/h5dump.c | 1467 ++++++++++++++--------------- tools/h5dump/h5dump.h | 129 +++ tools/h5dump/h5dumpgentest.c | 2 +- tools/h5import/h5import.c | 35 +- tools/h5import/h5import.h | 6 + tools/h5import/h5importtest.c | 5 +- tools/h5ls/h5ls.c | 6 +- tools/h5repack/h5repack.h | 82 +- tools/h5repack/h5repack_copy.c | 2 +- tools/h5repack/h5repack_main.c | 22 +- tools/h5repack/h5repack_parse.c | 8 +- tools/h5repack/testh5repack.h | 97 ++ tools/h5repack/testh5repack_attr.c | 1 + tools/h5repack/testh5repack_detect_szip.c | 1 + tools/h5repack/testh5repack_dset.c | 1 + tools/h5repack/testh5repack_main.c | 1 + tools/h5repack/testh5repack_make.c | 3 + tools/h5repack/testh5repack_util.c | 1 + tools/lib/h5diff.c | 87 +- tools/lib/h5diff_array.c | 44 +- tools/lib/h5tools.c | 29 +- tools/lib/h5tools.h | 159 +--- tools/lib/h5tools_ref.c | 27 +- tools/lib/h5tools_str.c | 12 +- tools/lib/h5tools_str.h | 8 +- tools/lib/h5tools_utils.c | 2 +- tools/lib/h5trav.c | 83 +- tools/lib/h5trav.h | 7 +- tools/misc/h5repart_gentest.c | 2 +- tools/misc/h5stat.c | 6 +- tools/testfiles/h5diff_25.txt | 2 +- 53 files changed, 1198 insertions(+), 1279 deletions(-) create mode 100644 tools/h5repack/testh5repack.h diff --git a/MANIFEST b/MANIFEST index 0058601..d44b962 100644 --- a/MANIFEST +++ b/MANIFEST @@ -853,6 +853,7 @@ ./tools/h5repack/h5repack_parse.c ./tools/h5repack/h5repack_refs.c ./tools/h5repack/h5repack_verify.c +./tools/h5repack/testh5repack.h ./tools/h5repack/testh5repack_attr.c ./tools/h5repack/testh5repack_dset.c ./tools/h5repack/testh5repack_main.c diff --git a/hl/src/H5LT.c b/hl/src/H5LT.c index 432d696..bee7612 100644 --- a/hl/src/H5LT.c +++ b/hl/src/H5LT.c @@ -2110,8 +2110,8 @@ print_enum(hid_t type, char* str, int indt) dst_size = H5Tget_size(native); /* Get the names and raw values of all members */ - name = (char**)calloc(nmembs, sizeof(char *)); - value = (unsigned char*)calloc(nmembs, MAX(dst_size, super_size)); + name = (char**)calloc((size_t)nmembs, sizeof(char *)); + value = (unsigned char*)calloc((size_t)nmembs, MAX(dst_size, super_size)); for (i = 0; i < nmembs; i++) { if((name[i] = H5Tget_member_name(type, i))==NULL) diff --git a/perform/perf.c b/perform/perf.c index 8f5d096..0f47bee 100644 --- a/perform/perf.c +++ b/perform/perf.c @@ -460,7 +460,7 @@ double Wtime() #else /* H5_HAVE_PARALLEL */ /* dummy program since H5_HAVE_PARALLE is not configured in */ int -main() +main(int UNUSED argc, char UNUSED **argv) { printf("No parallel performance because parallel is not configured in\n"); return(0); diff --git a/src/H5FDlog.c b/src/H5FDlog.c index 5725f87..b933182 100644 --- a/src/H5FDlog.c +++ b/src/H5FDlog.c @@ -560,11 +560,11 @@ H5FD_log_open(const char *name, unsigned flags, hid_t fapl_id, /* Check if we are doing any logging at all */ if(file->fa.flags!=0) { file->iosize=fa->buf_size; - if(file->fa.flags&H5FD_LOG_NUM_READ) { + if(file->fa.flags&H5FD_LOG_FILE_READ) { file->nread=H5MM_calloc(file->iosize); assert(file->nread); } /* end if */ - if(file->fa.flags&H5FD_LOG_NUM_WRITE) { + if(file->fa.flags&H5FD_LOG_FILE_WRITE) { file->nwrite=H5MM_calloc(file->iosize); assert(file->nwrite); } /* end if */ diff --git a/src/H5Fpublic.h b/src/H5Fpublic.h index a38fe25..7243c98 100644 --- a/src/H5Fpublic.h +++ b/src/H5Fpublic.h @@ -62,7 +62,7 @@ #define H5F_OBJ_LOCAL (0x0020u) /* Restrict search to objects opened through current file ID */ /* (as opposed to objects opened through any file ID accessing this file) */ -#define H5F_FAMILY_DEFAULT 0 +#define H5F_FAMILY_DEFAULT (hsize_t)0 #ifdef H5_HAVE_PARALLEL /* diff --git a/src/H5Gname.c b/src/H5Gname.c index c4f5c95..cc4e77b 100644 --- a/src/H5Gname.c +++ b/src/H5Gname.c @@ -169,7 +169,7 @@ H5G_build_fullpath(const char *prefix, const char *name) path_len += HDstrlen(name) + need_sep; /* Allocate space for the path */ - if(NULL == (full_path = H5FL_BLK_MALLOC(str_buf, path_len + 1))) + if(NULL == (full_path = (char *)H5FL_BLK_MALLOC(str_buf, path_len + 1))) HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed") /* Build full path */ @@ -575,7 +575,7 @@ H5G_name_move_path(H5RS_str_t **path_r_ptr, const char *full_suffix, const char /* Allocate space for the new path */ new_path_len = path_prefix2_len + HDstrlen(dst_suffix) + full_suffix_len; - if(NULL == (new_path = H5FL_BLK_MALLOC(str_buf, new_path_len + 1))) + if(NULL == (new_path = (char *)H5FL_BLK_MALLOC(str_buf, new_path_len + 1))) HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "memory allocation failed") /* Create the new path */ @@ -706,7 +706,7 @@ H5G_name_replace_cb(void *obj_ptr, hid_t obj_id, void *key) /* Allocate space for the new full path */ new_full_len = HDstrlen(src_path) + HDstrlen(full_path); - if(NULL == (new_full_path = H5FL_BLK_MALLOC(str_buf, new_full_len + 1))) + if(NULL == (new_full_path = (char *)H5FL_BLK_MALLOC(str_buf, new_full_len + 1))) HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "memory allocation failed") /* Create the new full path */ @@ -752,7 +752,7 @@ H5G_name_replace_cb(void *obj_ptr, hid_t obj_id, void *key) /* Build new full path */ /* Create the new full path */ - if(NULL == (new_full_path = H5FL_BLK_MALLOC(str_buf, HDstrlen(full_suffix) + 1))) + if(NULL == (new_full_path = (char *)H5FL_BLK_MALLOC(str_buf, HDstrlen(full_suffix) + 1))) HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "memory allocation failed") HDstrcpy(new_full_path, full_suffix); @@ -838,7 +838,7 @@ H5G_name_replace_cb(void *obj_ptr, hid_t obj_id, void *key) /* Allocate space for the new full path */ new_full_len = HDstrlen(dst_path) + HDstrlen(full_suffix); - if(NULL == (new_full_path = H5FL_BLK_MALLOC(str_buf, new_full_len + 1))) + if(NULL == (new_full_path = (char *)H5FL_BLK_MALLOC(str_buf, new_full_len + 1))) HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "memory allocation failed") /* Create the new full path */ diff --git a/src/H5Gtraverse.c b/src/H5Gtraverse.c index 8a53064..60ab54b 100644 --- a/src/H5Gtraverse.c +++ b/src/H5Gtraverse.c @@ -416,9 +416,8 @@ H5G_traverse_real(const H5G_loc_t *_loc, const char *name, unsigned target, /* Set the object location, if it's a hard link set the address also */ obj_loc.oloc->file = grp_loc.oloc->file; - if(lnk.type == H5G_LINK_HARD) { + if(lnk.type == H5G_LINK_HARD) obj_loc.oloc->addr = lnk.u.hard.addr; - } /* end if */ obj_loc_valid = TRUE; /* diff --git a/src/H5Oshared.c b/src/H5Oshared.c index a8e8246..cdba678 100644 --- a/src/H5Oshared.c +++ b/src/H5Oshared.c @@ -107,6 +107,7 @@ H5O_shared_read(H5F_t *f, hid_t dxpl_id, H5O_shared_t *shared, const H5O_msg_cla HDassert(shared); HDassert(type); + /* Get the shared message */ ret_value = H5O_read_real(&(shared->oloc), type, 0, mesg, dxpl_id); if(type->set_share && (type->set_share)(f, ret_value, shared) < 0) HGOTO_ERROR (H5E_OHDR, H5E_CANTINIT, NULL, "unable to set sharing information") @@ -321,14 +322,11 @@ done: * Programmer: Robb Matzke * Thursday, April 2, 1998 * - * Modifications: - * *------------------------------------------------------------------------- */ static size_t -H5O_shared_size (const H5F_t *f, const void *_mesg) +H5O_shared_size (const H5F_t *f, const void UNUSED *_mesg) { - const H5O_shared_t *shared = (const H5O_shared_t *) _mesg; size_t ret_value; FUNC_ENTER_NOAPI_NOINIT_NOFUNC(H5O_shared_size); diff --git a/src/H5RS.c b/src/H5RS.c index 49128b1..c8f1ecc 100644 --- a/src/H5RS.c +++ b/src/H5RS.c @@ -65,7 +65,7 @@ H5RS_xstrdup(const char *s) FUNC_ENTER_NOAPI_NOINIT_NOFUNC(H5RS_xstrdup) if(s) { - ret_value = H5FL_BLK_MALLOC(str_buf, HDstrlen(s) + 1); + ret_value = (char *)H5FL_BLK_MALLOC(str_buf, HDstrlen(s) + 1); HDassert(ret_value); HDstrcpy(ret_value, s); } /* end if */ @@ -147,7 +147,7 @@ H5RS_wrap(const char *s) HGOTO_ERROR(H5E_RS,H5E_NOSPACE,NULL,"memory allocation failed"); /* Set the internal fields */ - ret_value->s=(char*)s; + ret_value->s=(char*)s; /* (Cast away const OK - QAK) */ ret_value->wrapped=1; ret_value->n=1; @@ -347,7 +347,7 @@ H5RS_dup_str(const char *s) path_len = HDstrlen(s); /* Allocate space for the string */ - if(NULL == (new_str = H5FL_BLK_MALLOC(str_buf, path_len + 1))) + if(NULL == (new_str = (char *)H5FL_BLK_MALLOC(str_buf, path_len + 1))) HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed") /* Copy name for full path */ diff --git a/src/H5detect.c b/src/H5detect.c index d5af70c..4b15c36 100644 --- a/src/H5detect.c +++ b/src/H5detect.c @@ -520,10 +520,6 @@ print_results(int nd, detected_t *d, int na, malign_t *misc_align) #include \"H5FLprivate.h\"\n\ #include \"H5Tpkg.h\"\n\ \n\ -/* Declare external the free lists for H5T_t's and H5T_shared_t's */\n\ -H5FL_EXTERN(H5T_t);\n\ -H5FL_EXTERN(H5T_shared_t);\n\ -\n\ \n"); /* The interface initialization function */ diff --git a/test/b+tree.c b/test/b+tree.c index 1c756b8..b29c192 100644 --- a/test/b+tree.c +++ b/test/b+tree.c @@ -108,6 +108,7 @@ error: * *------------------------------------------------------------------------- */ +#ifdef QAK static int test_insert_basic(hid_t fapl) { @@ -116,7 +117,6 @@ test_insert_basic(hid_t fapl) H5F_t *f=NULL; char *record; /* Record to insert into tree */ haddr_t bpt_addr; /* Address of B+ tree created */ - herr_t ret; /* Generic error return value */ h5_fixname(FILENAME[0], fapl, filename, sizeof filename); @@ -153,6 +153,7 @@ error: } H5E_END_TRY; return 1; } /* test_insert_basic() */ +#endif /* QAK */ /*------------------------------------------------------------------------- diff --git a/test/cache.c b/test/cache.c index 84943ee..fbe93a5 100644 --- a/test/cache.c +++ b/test/cache.c @@ -1917,7 +1917,7 @@ static void insert_entry(H5C_t * cache_ptr, int32_t type, int32_t idx, - hbool_t dirty, + hbool_t UNUSED dirty, unsigned int flags) { herr_t result; diff --git a/test/dsets.c b/test/dsets.c index 3d6fab3..8555168 100644 --- a/test/dsets.c +++ b/test/dsets.c @@ -2573,7 +2573,7 @@ test_nbit_int(hid_t file) for (i= 0;i< size[0]; i++) for (j = 0; j < size[1]; j++) { orig_data[i][j] = (int)(((long_long)HDrandom() % - (long_long)HDpow(2.0, precision - 1)) << offset); + (long_long)HDpow(2.0, (double)(precision - 1))) << offset); /* even-numbered values are negtive */ if((i*size[1]+j+1)%2 == 0) @@ -2987,7 +2987,7 @@ test_nbit_array(hid_t file) for (m = 0; m < adims[0]; m++) for (n = 0; n < adims[1]; n++) orig_data[i][j][m][n] = (unsigned int)(((long_long)HDrandom() % - (long_long)HDpow(2.0, precision)) << offset); + (long_long)HDpow(2.0, (double)precision)) << offset); PASSED(); #else SKIPPED(); @@ -3167,11 +3167,11 @@ test_nbit_compound(hid_t file) for (i= 0;i< size[0]; i++) for (j = 0; j < size[1]; j++) { orig_data[i][j].i = (int)(((long_long)HDrandom() % - (long_long)HDpow(2.0, precision[0]-1)) << offset[0]); + (long_long)HDpow(2.0, (double)(precision[0]-1))) << offset[0]); orig_data[i][j].c = (char)(((long_long)HDrandom() % - (long_long)HDpow(2.0, precision[1]-1)) << offset[1]); + (long_long)HDpow(2.0, (double)(precision[1]-1))) << offset[1]); orig_data[i][j].s = (short)(((long_long)HDrandom() % - (long_long)HDpow(2.0, precision[2]-1)) << offset[2]); + (long_long)HDpow(2.0, (double)(precision[2]-1))) << offset[2]); orig_data[i][j].f = float_val[i][j]; /* some even-numbered integer values are negtive */ @@ -3414,29 +3414,29 @@ test_nbit_compound_2(hid_t file) for (i= 0;i< size[0]; i++) for (j = 0; j < size[1]; j++) { orig_data[i][j].a.i = (int)(((long_long)HDrandom() % - (long_long)HDpow(2.0, precision[0]-1)) << offset[0]); + (long_long)HDpow(2.0, (double)(precision[0]-1))) << offset[0]); orig_data[i][j].a.c = (char)(((long_long)HDrandom() % - (long_long)HDpow(2.0, precision[1]-1)) << offset[1]); + (long_long)HDpow(2.0, (double)(precision[1]-1))) << offset[1]); orig_data[i][j].a.s = (short)(-((long_long)HDrandom() % - (long_long)HDpow(2.0, precision[2]-1)) << offset[2]); + (long_long)HDpow(2.0, (double)(precision[2]-1))) << offset[2]); orig_data[i][j].a.f = float_val[i][j]; orig_data[i][j].v = (unsigned int)(((long_long)HDrandom() % - (long_long)HDpow(2.0, precision[3])) << offset[3]); + (long_long)HDpow(2.0, (double)precision[3])) << offset[3]); for(m = 0; m < array_dims[0]; m++) for(n = 0; n < array_dims[1]; n++) orig_data[i][j].b[m][n] = (char)(((long_long)HDrandom() % - (long_long)HDpow(2.0, precision[4]-1)) << offset[4]); + (long_long)HDpow(2.0, (double)(precision[4]-1))) << offset[4]); for(m = 0; m < array_dims[0]; m++) for(n = 0; n < array_dims[1]; n++) { orig_data[i][j].d[m][n].i = (int)(-((long_long)HDrandom() % - (long_long)HDpow(2.0, precision[0]-1)) << offset[0]); + (long_long)HDpow(2.0, (double)(precision[0]-1))) << offset[0]); orig_data[i][j].d[m][n].c = (char)(((long_long)HDrandom() % - (long_long)HDpow(2.0, precision[1]-1)) << offset[1]); + (long_long)HDpow(2.0, (double)(precision[1]-1))) << offset[1]); orig_data[i][j].d[m][n].s = (short)(((long_long)HDrandom() % - (long_long)HDpow(2.0, precision[2]-1)) << offset[2]); + (long_long)HDpow(2.0, (double)(precision[2]-1))) << offset[2]); orig_data[i][j].d[m][n].f = float_val[i][j]; } } @@ -3639,7 +3639,7 @@ test_nbit_compound_3(hid_t file) /* Initialize data */ for(i = 0; i < size[0]; i++) { - orig_data[i].i = HDrandom() % (long)HDpow(2.0, 17-1); + orig_data[i].i = HDrandom() % (long)HDpow(2.0, 17.0 - 1.0); strcpy(orig_data[i].str, "fixed-length C string"); orig_data[i].vl_str = strdup("variable-length C string"); @@ -4131,7 +4131,7 @@ test_scaleoffset_float(hid_t file) /* Check that the values read are the same as the values written */ for (i=0; i HDpow(10.0, -3)) { + if (HDfabs(new_data[i][j]-orig_data[i][j]) > HDpow(10.0, -3.0)) { H5_FAILED(); printf(" Read different values than written.\n"); printf(" At index %lu,%lu\n", (unsigned long)i, (unsigned long)j); @@ -4281,7 +4281,7 @@ test_scaleoffset_float_2(hid_t file) /* Check that the values read are the same as the values written */ for (j=0; j HDpow(10.0, -3)) { + if (HDfabs(new_data[0][j]-orig_data[0][j]) > HDpow(10.0, -3.0)) { H5_FAILED(); printf(" Read different values than written.\n"); printf(" At index %lu,%lu\n", (unsigned long)0, (unsigned long)j); @@ -4411,7 +4411,7 @@ test_scaleoffset_double(hid_t file) /* Check that the values read are the same as the values written */ for (i=0; i HDpow(10.0, -7)) { + if (HDfabs(new_data[i][j]-orig_data[i][j]) > HDpow(10.0, -7.0)) { H5_FAILED(); printf(" Read different values than written.\n"); printf(" At index %lu,%lu\n", (unsigned long)i, (unsigned long)j); @@ -4561,7 +4561,7 @@ test_scaleoffset_double_2(hid_t file) /* Check that the values read are the same as the values written */ for (j=0; j HDpow(10.0, -7)) { + if (HDfabs(new_data[0][j]-orig_data[0][j]) > HDpow(10.0, -7.0)) { H5_FAILED(); printf(" Read different values than written.\n"); printf(" At index %lu,%lu\n", (unsigned long)0, (unsigned long)j); diff --git a/test/dt_arith.c b/test/dt_arith.c index 36ca72c..86aca82 100644 --- a/test/dt_arith.c +++ b/test/dt_arith.c @@ -372,7 +372,7 @@ static int without_hardware_g = 0; void some_dummy_func(float x); static hbool_t overflows(unsigned char *origin_bits, hid_t src_id, size_t dst_num_bits); static int my_isnan(dtype_t type, void *val); -static int my_isinf(dtype_t type, int endian, unsigned char *val, size_t size, +static int my_isinf(int endian, unsigned char *val, size_t size, size_t mpos, size_t msize, size_t epos, size_t esize); /*------------------------------------------------------------------------- @@ -708,14 +708,14 @@ static int test_particular_fp_integer(void) signed char dst_c; unsigned char *buf1, *buf2; unsigned char *saved_buf1, *saved_buf2; - unsigned int src_size1, src_size2; - unsigned int dst_size1, dst_size2; + size_t src_size1, src_size2; + size_t dst_size1, dst_size2; float src_f = (float)INT_MAX; int dst_i; int fill_value = 13; int endian; /*endianess */ unsigned int fails_this_test = 0; - int j; + size_t j; TESTING("hard particular floating number -> integer conversions"); @@ -2681,12 +2681,12 @@ my_isnan(dtype_t type, void *val) *------------------------------------------------------------------------- */ static int -my_isinf(dtype_t type, int endian, unsigned char *val, size_t size, +my_isinf(int endian, unsigned char *val, size_t size, size_t mpos, size_t msize, size_t epos, size_t esize) { unsigned char *bits; int retval = 0; - int i; + size_t i; ssize_t ret1=0, ret2=0; bits = (unsigned char*)calloc(1, size); @@ -3088,7 +3088,7 @@ test_conv_flt_1 (const char *name, int run_test, hid_t src, hid_t dst) if (underflow && HDfabsf(x) <= FLT_MIN && HDfabsf(hw_f) <= FLT_MIN) continue; /* all underflowed, no error */ - if (overflow && my_isinf(dst_type, endian, buf+j*sizeof(float), + if (overflow && my_isinf(endian, buf+j*sizeof(float), dst_size, dst_mpos, dst_msize, dst_epos, dst_esize)) continue; /* all overflowed, no error */ check_mant[0] = HDfrexpf(x, check_expo+0); @@ -3099,7 +3099,7 @@ test_conv_flt_1 (const char *name, int run_test, hid_t src, hid_t dst) if (underflow && HDfabs(x) <= DBL_MIN && HDfabs(hw_d) <= DBL_MIN) continue; /* all underflowed, no error */ - if (overflow && my_isinf(dst_type, endian, buf+j*sizeof(double), + if (overflow && my_isinf(endian, buf+j*sizeof(double), dst_size, dst_mpos, dst_msize, dst_epos, dst_esize)) continue; /* all overflowed, no error */ check_mant[0] = HDfrexp(x, check_expo+0); @@ -4389,8 +4389,10 @@ test_conv_int_fp(const char *name, int run_test, hid_t src, hid_t dst) if(run_test==TEST_NORMAL) return MAX((int)fails_all_tests, 1); - else if(run_test==TEST_DENORM || run_test==TEST_SPECIAL) + else { + HDassert(run_test==TEST_DENORM || run_test==TEST_SPECIAL); return 1; + } } diff --git a/test/error_test.c b/test/error_test.c index b7994a0..ad3dd11 100644 --- a/test/error_test.c +++ b/test/error_test.c @@ -303,8 +303,8 @@ error_stack(void) * *------------------------------------------------------------------------- */ -herr_t -long_desc_cb(unsigned n, const H5E_error_t *err_desc, void* client_data) +static herr_t +long_desc_cb(unsigned UNUSED n, const H5E_error_t *err_desc, void* client_data) { char *real_desc = (char *)client_data; @@ -335,7 +335,7 @@ long_desc_cb(unsigned n, const H5E_error_t *err_desc, void* client_data) static herr_t test_long_desc(void) { - char *format="Testing very long description string, %s"; + const char *format="Testing very long description string, %s"; char *long_desc; char *full_desc; size_t u; diff --git a/test/tattr.c b/test/tattr.c index 2363401..6f41225 100644 --- a/test/tattr.c +++ b/test/tattr.c @@ -472,7 +472,6 @@ test_attr_plist(void) hid_t sid1,sid2; /* Dataspace ID */ hid_t attr; /* Attribute ID */ hid_t plist; /* Property list ID */ - char *attr_name=NULL; /* name of attribute */ hsize_t dims1[] = {SPACE1_DIM1, SPACE1_DIM2, SPACE1_DIM3}; hsize_t dims2[] = {ATTR1_DIM1}; H5T_cset_t cset; /* Character set for attributes */ diff --git a/test/trefstr.c b/test/trefstr.c index eca4aaf..4ba6df5 100644 --- a/test/trefstr.c +++ b/test/trefstr.c @@ -300,7 +300,7 @@ test_refstr_own(void) MESSAGE(5, ("Testing Transferring Ref-Counted Strings\n")); /* Initialize buffer */ - s = H5FL_BLK_MALLOC(str_buf,HDstrlen("foo") + 1); + s = (char *)H5FL_BLK_MALLOC(str_buf,HDstrlen("foo") + 1); HDstrcpy(s, "foo"); /* Transfer ownership of dynamically allocated string to ref-counted string */ diff --git a/test/unlink.c b/test/unlink.c index 37bd55b..607f89f 100644 --- a/test/unlink.c +++ b/test/unlink.c @@ -1504,7 +1504,7 @@ test_unlink_rightleaf(hid_t fid) ngroups = 150; /* Number of groups to create */ char name[256]; /* Name of object to create */ - TESTING("Deleting right-most child in non-leaf B-tree node"); + TESTING("deleting right-most child in non-leaf B-tree node"); /* Allocate space for the group IDs */ gids = (hid_t *) HDmalloc (ngroups * sizeof(hid_t)); @@ -1568,7 +1568,7 @@ test_unlink_rightnode(hid_t fid) ngroups = 150; /* Number of groups to create */ char name[256]; /* Name of object to create */ - TESTING("Deleting right-most child in non-leaf B-tree node"); + TESTING("deleting right-most child in non-leaf B-tree node"); /* Allocate space for the group IDs */ gids = (hid_t *) HDmalloc (ngroups * sizeof(hid_t)); @@ -1632,7 +1632,7 @@ test_unlink_middlenode(hid_t fid) ngroups = 250; /* Number of groups to create */ char name[256]; /* Name of object to create */ - TESTING("Deleting right-most child in non-leaf B-tree node"); + TESTING("deleting right-most child in non-leaf B-tree node"); /* Allocate space for the group IDs */ gids = (hid_t *) HDmalloc (ngroups * sizeof(hid_t)); @@ -1836,7 +1836,7 @@ test_resurrect_dataset(void) hid_t f=-1, s=-1, d=-1, fapl=-1; char filename[1024]; - TESTING("Resurrecting dataset after deletion"); + TESTING("resurrecting dataset after deletion"); /* Create file */ fapl = h5_fileaccess(); @@ -1910,7 +1910,7 @@ test_resurrect_datatype(void) hid_t file=-1, type=-1, fapl=-1; char filename[1024]; - TESTING("Resurrecting datatype after deletion"); + TESTING("resurrecting datatype after deletion"); /* Create file */ fapl = h5_fileaccess(); @@ -1980,7 +1980,7 @@ test_resurrect_group(void) hid_t file=-1, group=-1, fapl=-1; char filename[1024]; - TESTING("Resurrecting group after deletion"); + TESTING("resurrecting group after deletion"); /* Create file */ fapl = h5_fileaccess(); @@ -2055,11 +2055,11 @@ test_unlink_chunked_dataset(void) hsize_t chunk_dims[FILESPACE_NDIMS]={FILESPACE_CHUNK0,FILESPACE_CHUNK1,FILESPACE_CHUNK2}; char filename[1024]; - TESTING("Unlinking chunked dataset"); + TESTING("unlinking chunked dataset"); /* Create file */ fapl_id = h5_fileaccess(); - h5_fixname(FILENAME[7], fapl_id, filename, sizeof filename); + h5_fixname(FILENAME[9], fapl_id, filename, sizeof filename); /* Create the file */ if((file_id = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl_id))<0) TEST_ERROR; @@ -2092,7 +2092,7 @@ test_unlink_chunked_dataset(void) if(H5Fclose(file_id)<0) TEST_ERROR; /* Re-open the file */ - if((file_id = H5Fopen(filename, H5F_ACC_RDWR, H5P_DEFAULT))<0) TEST_ERROR; + if((file_id = H5Fopen(filename, H5F_ACC_RDWR, fapl_id))<0) TEST_ERROR; /* Delete the dataset */ if(H5Gunlink(file_id, DATASETNAME)<0) TEST_ERROR; diff --git a/tools/h5diff/h5diff_common.c b/tools/h5diff/h5diff_common.c index 9210d40..441f291 100644 --- a/tools/h5diff/h5diff_common.c +++ b/tools/h5diff/h5diff_common.c @@ -180,7 +180,7 @@ void parse_input(int argc, const char* argv[], const char** fname1, const char** *------------------------------------------------------------------------- */ - void print_results(hsize_t nfound, diff_opt_t* options) + void print_results(diff_opt_t* options) { if (options->m_quiet || options->err_stat) return; diff --git a/tools/h5diff/h5diff_common.h b/tools/h5diff/h5diff_common.h index 7cdf7cd..31b1b29 100644 --- a/tools/h5diff/h5diff_common.h +++ b/tools/h5diff/h5diff_common.h @@ -20,5 +20,5 @@ int check_n_input( const char* ); int check_f_input( const char* ); void parse_input(int argc, const char* argv[], const char** fname1, const char** fname2, const char** objname1, const char** objname2, diff_opt_t* options); void h5diff_exit(int status); -void print_results(hsize_t nfound, diff_opt_t* options); +void print_results(diff_opt_t* options); diff --git a/tools/h5diff/h5diff_main.c b/tools/h5diff/h5diff_main.c index 51c618e..cd23d4b 100644 --- a/tools/h5diff/h5diff_main.c +++ b/tools/h5diff/h5diff_main.c @@ -63,7 +63,7 @@ int main(int argc, const char *argv[]) nfound = h5diff(fname1,fname2,objname1,objname2,&options); - print_results(nfound, &options); + print_results(&options); /*------------------------------------------------------------------------- * exit code diff --git a/tools/h5diff/ph5diff_main.c b/tools/h5diff/ph5diff_main.c index c469a4b..bb4cd1a 100644 --- a/tools/h5diff/ph5diff_main.c +++ b/tools/h5diff/ph5diff_main.c @@ -79,7 +79,7 @@ int main(int argc, const char *argv[]) nfound = h5diff(fname1,fname2,objname1,objname2,&options); - print_results(nfound, &options); + print_results(&options); MPI_Finalize(); @@ -95,7 +95,7 @@ int main(int argc, const char *argv[]) MPI_Barrier(MPI_COMM_WORLD); - print_results(nfound, &options); + print_results(&options); print_manager_output(); MPI_Finalize(); diff --git a/tools/h5dump/h5dump.c b/tools/h5dump/h5dump.c index 2a99989..8a5e192 100644 --- a/tools/h5dump/h5dump.c +++ b/tools/h5dump/h5dump.c @@ -59,7 +59,7 @@ static char *prefix; static const char *driver = NULL; /* The driver to open the file with. */ -static const dump_header *dump_header_format; +static const h5dump_header_t *dump_header_format; /* things to display or which are set via command line parameters */ static int display_all = TRUE; @@ -86,21 +86,20 @@ static int doxml = 0; static int useschema = 1; static const char *xml_dtd_uri = NULL; static const char *xmlnsprefix="hdf5:"; +static int indent; /*how far in to indent the line */ /** end XML **/ /* internal functions */ -static hid_t h5_fileaccess(void); -static void dump_oid(hid_t oid); -static void print_enum(hid_t type); -static herr_t dump_all(hid_t group, const char *name, void *op_data); -#ifdef LATER -static void check_compression(hid_t); -#endif /* LATER */ -static int xml_name_to_XID(const char *, char *, int , int ); -static void init_prefix(char **prfx, size_t prfx_len); - -static h5dump_t dataformat = { +static hid_t h5_fileaccess(void); +static void dump_oid(hid_t oid); +static void print_enum(hid_t type); +static herr_t dump_all(hid_t group, const char *name, void *op_data); +static int xml_name_to_XID(const char *, char *, int , int ); +static void init_prefix(char **prfx, size_t prfx_len); +static void add_prefix(char **prfx, size_t *prfx_len, const char *name); + +static h5tool_format_t dataformat = { 0, /*raw */ "", /*fmt_raw */ @@ -184,7 +183,7 @@ static h5dump_t dataformat = { * * This table only affects XML output. */ -static h5dump_t xml_dataformat = { +static h5tool_format_t xml_dataformat = { 0, /*raw */ "", /*fmt_raw */ @@ -255,13 +254,13 @@ static h5dump_t xml_dataformat = { /** XML **/ -static const dump_header standardformat = { +static const h5dump_header_t standardformat = { "standardformat", /*name */ "HDF5", /*fileebgin */ "", /*fileend */ SUPER_BLOCK, /*bootblockbegin */ "", /*bootblockend */ - GROUPNAME, /*groupbegin */ + GROUP, /*groupbegin */ "", /*groupend */ DATASET, /*datasetbegin */ "", /*datasetend */ @@ -1335,244 +1334,263 @@ static herr_t dump_all(hid_t group, const char *name, void * op_data) { hid_t obj; - char *targbuf, *tmp = NULL; + char *obj_path = NULL; /* Full path of object */ H5G_stat_t statbuf; herr_t ret = SUCCEED; - H5Gget_objinfo(group, name, FALSE, &statbuf); + /* Stat the object */ + if(H5Gget_objinfo(group, name, FALSE, &statbuf) < 0) { + error_msg(progname, "unable to get object information\n"); + d_status = EXIT_FAILURE; + ret = FAIL; + goto done; + } /* end if */ if (*(int *)op_data != H5G_UNKNOWN && statbuf.type != *(int *) op_data) goto done; - tmp = malloc(strlen(prefix) + strlen(name) + 2); - strcpy(tmp, prefix); + /* Build the object's path name */ + obj_path = HDmalloc(HDstrlen(prefix) + HDstrlen(name) + 2); + HDassert(obj_path); + HDstrcpy(obj_path, prefix); + HDstrcat(obj_path, "/"); + HDstrcat(obj_path, name); switch (statbuf.type) { - case H5G_LINK: - indentation(indent); - targbuf = malloc(statbuf.u.slink.linklen); + case H5G_LINK: + { + char *targbuf; - if (!doxml) { - begin_obj(dump_header_format->softlinkbegin, name, - dump_header_format->softlinkblockbegin); - indentation(indent + COL); - } + indentation(indent); + targbuf = HDmalloc(statbuf.u.slink.linklen); + HDassert(targbuf); - if (H5Gget_linkval(group, name, statbuf.u.slink.linklen, targbuf) < 0) { - error_msg(progname, "unable to get link value\n"); - d_status = EXIT_FAILURE; - ret = FAIL; - } else { - /* print the value of a soft link */ - if (!doxml) { - /* Standard DDL: no modification */ - printf("LINKTARGET \"%s\"\n", targbuf); - } else { - /* XML */ - char *linkxid = malloc(100); - char *parentxid = malloc(100); - char *targetxid = malloc(100); - char *t_prefix = xml_escape_the_name(strcmp(prefix,"") ? prefix : "/"); - char *t_name = xml_escape_the_name(name); - char *t_targbuf = xml_escape_the_name(targbuf); - char *tmp2, *t_tmp; - int res; - - tmp2 = malloc(strlen(prefix) + statbuf.u.slink.linklen + 1); - strcpy(tmp2, prefix); - - if (targbuf && targbuf[0] == '/') - strcpy(tmp2, targbuf); - else - strcat(strcat(tmp2, "/"), targbuf); - - t_tmp = xml_escape_the_name(strcat(strcat(tmp, "/"), name)); - xml_name_to_XID(t_tmp,linkxid,100,1); - xml_name_to_XID(prefix,parentxid,100,1); - - res = xml_name_to_XID(tmp2,targetxid,100,0); - - if (res == 0) { - /* target obj found */ - printf("<%sSoftLink LinkName=\"%s\" " - "OBJ-XID=\"%s\" " - "H5SourcePath=\"%s\" " + if (!doxml) { + begin_obj(dump_header_format->softlinkbegin, name, + dump_header_format->softlinkblockbegin); + indentation(indent + COL); + } + + if (H5Gget_linkval(group, name, statbuf.u.slink.linklen, targbuf) < 0) { + error_msg(progname, "unable to get link value\n"); + d_status = EXIT_FAILURE; + ret = FAIL; + } else { + /* print the value of a soft link */ + if (!doxml) { + /* Standard DDL: no modification */ + printf("LINKTARGET \"%s\"\n", targbuf); + } else { + /* XML */ + char linkxid[100]; + char parentxid[100]; + char targetxid[100]; + char *t_prefix = xml_escape_the_name(HDstrcmp(prefix,"") ? prefix : "/"); + char *t_name = xml_escape_the_name(name); + char *t_targbuf = xml_escape_the_name(targbuf); + char *t_obj_path = xml_escape_the_name(obj_path); + char *t_link_path; + int res; + + t_link_path = HDmalloc(HDstrlen(prefix) + statbuf.u.slink.linklen + 1); + if(targbuf[0] == '/') + HDstrcpy(t_link_path, targbuf); + else { + HDstrcpy(t_link_path, prefix); + HDstrcat(HDstrcat(t_link_path, "/"), targbuf); + } /* end else */ + + /* Create OBJ-XIDs for the parent and object */ + xml_name_to_XID(t_obj_path, linkxid, sizeof(linkxid), 1); + xml_name_to_XID(prefix, parentxid, sizeof(parentxid), 1); + + /* Try to create an OBJ-XID for the object pointed to */ + res = xml_name_to_XID(t_link_path, targetxid, sizeof(targetxid), 0); + if (res == 0) { + /* target obj found */ + printf("<%sSoftLink LinkName=\"%s\" " + "OBJ-XID=\"%s\" " + "H5SourcePath=\"%s\" " "TargetPath=\"%s\" TargetObj=\"%s\" " - "Parents=\"%s\" H5ParentPaths=\"%s\" />\n", - xmlnsprefix, - t_name, - linkxid, - t_tmp, - t_targbuf, targetxid, - parentxid, t_prefix); - free(targetxid); - } else { - /* dangling link -- omit from xml attributes */ - printf("<%sSoftLink LinkName=\"%s\" " - "OBJ-XID=\"%s\" " - "H5SourcePath=\"%s\" " + "Parents=\"%s\" H5ParentPaths=\"%s\" />\n", + xmlnsprefix, + t_name, /* LinkName */ + linkxid, /* OBJ-XID */ + t_obj_path, /* H5SourcePath */ + t_targbuf, /* TargetPath */ + targetxid, /* TargetObj */ + parentxid, /* Parents */ + t_prefix); /* H5ParentPaths */ + } else { + /* dangling link -- omit from xml attributes */ + printf("<%sSoftLink LinkName=\"%s\" " + "OBJ-XID=\"%s\" " + "H5SourcePath=\"%s\" " "TargetPath=\"%s\" " - "Parents=\"%s\" H5ParentPaths=\"%s\" />\n", - xmlnsprefix, - t_name, - linkxid, - t_tmp, - t_targbuf, - parentxid, t_prefix); - } + "Parents=\"%s\" H5ParentPaths=\"%s\" />\n", + xmlnsprefix, + t_name, /* LinkName */ + linkxid, /* OBJ-XID */ + t_obj_path, /* H5SourcePath */ + t_targbuf, /* TargetPath */ + parentxid, /* Parents */ + t_prefix); /* H5ParentPaths */ + } - free(t_name); - free(t_targbuf); - free(t_tmp); - free(tmp2); - free(linkxid); - free(parentxid); - } - } + HDfree(t_prefix); + HDfree(t_name); + HDfree(t_targbuf); + HDfree(t_obj_path); + HDfree(t_link_path); + } + } - if (!doxml) { - indentation(indent); - end_obj(dump_header_format->softlinkend, - dump_header_format->softlinkblockend); - } + if (!doxml) { + indentation(indent); + end_obj(dump_header_format->softlinkend, + dump_header_format->softlinkblockend); + } - free(targbuf); - break; + HDfree(targbuf); + break; + } - case H5G_GROUP: - if ((obj = H5Gopen(group, name)) < 0) { - error_msg(progname, "unable to dump group \"%s\"\n", name); - d_status = EXIT_FAILURE; - ret = FAIL; - } else { - size_t new_len = strlen(prefix) + strlen(name) + 2; + case H5G_GROUP: + if ((obj = H5Gopen(group, name)) < 0) { + error_msg(progname, "unable to dump group \"%s\"\n", name); + d_status = EXIT_FAILURE; + ret = FAIL; + } else { + char *old_prefix; /* Pointer to previous prefix */ - if (prefix_len <= new_len) { - prefix_len = new_len + 1; - prefix = realloc(prefix, prefix_len); - } + /* Keep copy of prefix before iterating into group */ + old_prefix = HDstrdup(prefix); + HDassert(old_prefix); - strcat(strcat(prefix, "/"), name); - dump_function_table->dump_group_function(obj, name); - strcpy(prefix, tmp); - H5Gclose(obj); - } + /* Append group name to prefix */ + add_prefix(&prefix, &prefix_len, name); - break; + /* Iterate into group */ + dump_function_table->dump_group_function(obj, name); - case H5G_DATASET: - if ((obj = H5Dopen(group, name)) >= 0) { - /* hard link */ - H5Gget_objinfo(obj, ".", TRUE, &statbuf); + /* Restore old prefix name */ + HDstrcpy(prefix, old_prefix); + HDfree(old_prefix); - if (statbuf.u.obj.nlink > 1) { - obj_t *found_obj; /* Found object */ + /* Close group */ + H5Gclose(obj); + } - found_obj = search_obj(dset_table, statbuf.u.obj.objno); + break; - if (found_obj == NULL) { - indentation(indent); - begin_obj(dump_header_format->datasetbegin, name, - dump_header_format->datasetblockbegin); - indentation(indent + COL); - error_msg(progname, - "internal error (file %s:line %d)\n", - __FILE__, __LINE__); - indentation(indent); - end_obj(dump_header_format->datasetend, - dump_header_format->datasetblockend); - d_status = EXIT_FAILURE; - ret = FAIL; - H5Dclose(obj); - goto done; - } else if (found_obj->displayed) { - indentation(indent); + case H5G_DATASET: + if ((obj = H5Dopen(group, name)) >= 0) { + /* hard link */ + H5Gget_objinfo(obj, ".", TRUE, &statbuf); + + if (statbuf.u.obj.nlink > 1) { + obj_t *found_obj; /* Found object */ + + found_obj = search_obj(dset_table, statbuf.u.obj.objno); + + if (found_obj == NULL) { + indentation(indent); + begin_obj(dump_header_format->datasetbegin, name, + dump_header_format->datasetblockbegin); + indentation(indent + COL); + error_msg(progname, + "internal error (file %s:line %d)\n", + __FILE__, __LINE__); + indentation(indent); + end_obj(dump_header_format->datasetend, + dump_header_format->datasetblockend); + d_status = EXIT_FAILURE; + ret = FAIL; + H5Dclose(obj); + goto done; + } else if (found_obj->displayed) { + indentation(indent); + + if (!doxml) { + begin_obj(dump_header_format->datasetbegin, name, + dump_header_format->datasetblockbegin); + indentation(indent + COL); + printf("%s \"%s\"\n", HARDLINK, found_obj->objname); + indentation(indent); + end_obj(dump_header_format->datasetend, + dump_header_format->datasetblockend); + } else { + /* the XML version */ + char *t_obj_path = xml_escape_the_name(obj_path); + char *t_prefix = xml_escape_the_name(HDstrcmp(prefix,"") ? prefix : "/"); + char *t_name = xml_escape_the_name(name); + char dsetxid[100]; + char parentxid[100]; + char pointerxid[100]; + + /* Create OBJ-XIDs for the parent and object */ + xml_name_to_XID(obj_path, dsetxid, sizeof(dsetxid), 1); + xml_name_to_XID(prefix, parentxid, sizeof(parentxid), 1); + + printf("<%sDataset Name=\"%s\" OBJ-XID=\"%s-%d\" " + "H5Path=\"%s\" Parents=\"%s\" " + "H5ParentPaths=\"%s\">\n", + xmlnsprefix, + t_name, /* Dataset Name */ + dsetxid, get_next_xid(), /* OBJ-XID */ + t_obj_path, /* H5Path */ + parentxid, /* Parents */ + t_prefix); /* H5ParentPaths */ + + indentation(indent + COL); + xml_name_to_XID(found_obj->objname, pointerxid, sizeof(pointerxid), 1); + printf("<%sDatasetPtr OBJ-XID=\"%s\" H5Path=\"%s\"/>\n", + xmlnsprefix, + pointerxid,t_obj_path); + indentation(indent); + printf("\n", xmlnsprefix); + + HDfree(t_name); + HDfree(t_obj_path); + HDfree(t_prefix); + } - if (!doxml) { - begin_obj(dump_header_format->datasetbegin, name, - dump_header_format->datasetblockbegin); - indentation(indent + COL); - printf("%s \"%s\"\n", HARDLINK, found_obj->objname); - indentation(indent); - end_obj(dump_header_format->datasetend, - dump_header_format->datasetblockend); - } else { - /* the XML version */ - char *t_tmp; - char *t_prefix; - char *t_name; - char *dsetxid = malloc(100); - char *parentxid = malloc(100); - char *pointerxid = malloc(100); - char *tx_tmp = malloc(strlen(tmp)+strlen(name)+1); - strcpy(tx_tmp,tmp); - t_tmp = xml_escape_the_name(strcat(strcat(tx_tmp, "/"), name)); - t_prefix = xml_escape_the_name(prefix); - t_name = xml_escape_the_name(name); - xml_name_to_XID( strcat(strcat(tmp,"/"),name), dsetxid,100,1); - xml_name_to_XID( prefix ,parentxid,100,1); - - printf("<%sDataset Name=\"%s\" OBJ-XID=\"%s-%d\" " - "H5Path=\"%s\" Parents=\"%s\" " - "H5ParentPaths=\"%s\">\n", - xmlnsprefix, - t_name, dsetxid, get_next_xid(), - t_tmp, parentxid, - (strcmp(prefix, "") ? t_prefix : "/")); - - indentation(indent + COL); - xml_name_to_XID(found_obj->objname,pointerxid,100,1); - printf("<%sDatasetPtr OBJ-XID=\"%s\" H5Path=\"%s\"/>\n", - xmlnsprefix, - pointerxid,t_tmp); - indentation(indent); - printf("\n", xmlnsprefix); - - free(t_name); - free(dsetxid); - free(parentxid); - free(pointerxid); - free(t_tmp); - free(tx_tmp); - free(t_prefix); - } - - H5Dclose(obj); - goto done; - } else { - found_obj->displayed = TRUE; + H5Dclose(obj); + goto done; + } else { + found_obj->displayed = TRUE; + } + } /* end if */ - } - } + dump_function_table->dump_dataset_function(obj, name, NULL); + H5Dclose(obj); + } else { + error_msg(progname, "unable to dump dataset \"%s\"\n", name); + d_status = EXIT_FAILURE; + ret = FAIL; + } + break; - dump_function_table->dump_dataset_function(obj, name, NULL); - H5Dclose(obj); - } else { - error_msg(progname, "unable to dump dataset \"%s\"\n", name); - d_status = EXIT_FAILURE; - ret = FAIL; - } - break; + case H5G_TYPE: + if ((obj = H5Topen(group, name)) < 0) { + error_msg(progname, "unable to dump data type \"%s\"\n", name); + d_status = EXIT_FAILURE; + ret = FAIL; + } else { + dump_function_table->dump_named_datatype_function(obj, name); + H5Tclose(obj); + } + break; - case H5G_TYPE: - if ((obj = H5Topen(group, name)) < 0) { - error_msg(progname, "unable to dump data type \"%s\"\n", name); - d_status = EXIT_FAILURE; + default: + error_msg(progname, "unknown object \"%s\"\n", name); + d_status = EXIT_FAILURE; ret = FAIL; - } else { - dump_function_table->dump_named_datatype_function(obj, name); - H5Tclose(obj); - } - break; - - default: - error_msg(progname, "unknown object \"%s\"\n", name); - d_status = EXIT_FAILURE; - ret = FAIL; } done: - free(tmp); + if(obj_path) + HDfree(obj_path); return ret; } @@ -1630,19 +1648,19 @@ dump_group(hid_t gid, const char *name) char type_name[1024], *tmp; int xtype = H5G_UNKNOWN; /* dump all */ - tmp = malloc(strlen(prefix) + strlen(name) + 2); - strcpy(tmp, prefix); + tmp = HDmalloc(HDstrlen(prefix) + HDstrlen(name) + 2); + HDstrcpy(tmp, prefix); indentation(indent); begin_obj(dump_header_format->groupbegin, name, dump_header_format->groupblockbegin); indent += COL; if (display_oid) - dump_oid(gid); + dump_oid(gid); dump_comment(gid); - if (!strcmp(name, "/") && unamedtype) { + if (!HDstrcmp(name, "/") && unamedtype) { unsigned u; /* Local index variable */ /* dump unamed type in root group */ @@ -1718,33 +1736,33 @@ dump_dataset(hid_t did, const char *name, struct subset_t *sset) dump_dataspace(space); if (display_oid) - dump_oid(did); + dump_oid(did); if (display_dcpl) - dump_dcpl(dcpl_id, type, did); + dump_dcpl(dcpl_id, type, did); if (display_data) switch (H5Tget_class(type)) { - case H5T_TIME: - indentation(indent + COL); - printf("DATA{ not yet implemented.}\n"); - break; + case H5T_TIME: + indentation(indent + COL); + printf("DATA{ not yet implemented.}\n"); + break; - case H5T_INTEGER: - case H5T_FLOAT: - case H5T_STRING: - case H5T_BITFIELD: - case H5T_OPAQUE: - case H5T_COMPOUND: - case H5T_REFERENCE: - case H5T_ENUM: - case H5T_VLEN: - case H5T_ARRAY: - dump_data(did, DATASET_DATA, sset, display_ai); - break; + case H5T_INTEGER: + case H5T_FLOAT: + case H5T_STRING: + case H5T_BITFIELD: + case H5T_OPAQUE: + case H5T_COMPOUND: + case H5T_REFERENCE: + case H5T_ENUM: + case H5T_VLEN: + case H5T_ARRAY: + dump_data(did, DATASET_DATA, sset, display_ai); + break; - default: - break; + default: + break; } indent += COL; @@ -1775,7 +1793,7 @@ dump_dataset(hid_t did, const char *name, struct subset_t *sset) static void dump_dims(hsize_t *s, int dims) { - register int i; + int i; for (i = 0; i < dims; i++) { printf("%u", (unsigned int)s[i]); @@ -1864,7 +1882,7 @@ dump_subsetting_header(struct subset_t *sset, int dims) static void dump_data(hid_t obj_id, int obj_data, struct subset_t *sset, int pindex) { - h5dump_t *outputformat = &dataformat; + h5tool_format_t *outputformat = &dataformat; int status = -1; void *buf; hid_t space, type, p_type; @@ -1878,12 +1896,11 @@ dump_data(hid_t obj_id, int obj_data, struct subset_t *sset, int pindex) outputformat->do_escape=display_escape; /* print the matrix indices */ outputformat->pindex=pindex; - if (outputformat->pindex) - { - outputformat->idx_fmt = "(%s): "; - outputformat->idx_n_fmt = "%lu"; - outputformat->idx_sep = ","; - outputformat->line_pre = "%s"; + if (outputformat->pindex) { + outputformat->idx_fmt = "(%s): "; + outputformat->idx_n_fmt = "%lu"; + outputformat->idx_sep = ","; + outputformat->line_pre = "%s"; } indent += COL; @@ -1914,7 +1931,7 @@ dump_data(hid_t obj_id, int obj_data, struct subset_t *sset, int pindex) if (obj_data == DATASET_DATA) { hid_t f_type = H5Dget_type(obj_id); char string_prefix[64]; - h5dump_t string_dataformat; + h5tool_format_t string_dataformat; if (display_char && H5Tget_size(f_type) == 1 && H5Tget_class(f_type) == H5T_INTEGER) { /* @@ -1954,7 +1971,7 @@ dump_data(hid_t obj_id, int obj_data, struct subset_t *sset, int pindex) status = SUCCEED; } else { char string_prefix[64]; - h5dump_t string_dataformat; + h5tool_format_t string_dataformat; type = H5Aget_type(obj_id); p_type = h5tools_get_native_type(type); @@ -2062,15 +2079,15 @@ dump_oid(hid_t oid) static void dump_comment(hid_t obj_id) { - char comment[50]; + char comment[50]; - comment[0] = '\0'; - H5Gget_comment(obj_id, ".", sizeof(comment), comment); + comment[0] = '\0'; + H5Gget_comment(obj_id, ".", sizeof(comment), comment); - if (comment[0]) { - indentation(indent); - printf("COMMENT \"%s\"\n", comment); - } + if (comment[0]) { + indentation(indent); + printf("COMMENT \"%s\"\n", comment); + } } @@ -2094,7 +2111,7 @@ static void dump_fill_value(hid_t dcpl,hid_t type_id, hid_t obj_id) size_t size; void *buf=NULL; hsize_t nelmts=1; - h5dump_t *outputformat = &dataformat; + h5tool_format_t *outputformat = &dataformat; hid_t n_type; memset(&ctx, 0, sizeof(ctx)); @@ -2113,7 +2130,6 @@ static void dump_fill_value(hid_t dcpl,hid_t type_id, hid_t obj_id) if (buf) free (buf); - } @@ -2131,321 +2147,303 @@ static void dump_fill_value(hid_t dcpl,hid_t type_id, hid_t obj_id) static void dump_dcpl(hid_t dcpl_id,hid_t type_id, hid_t obj_id) { - int nfilters; /* number of filters */ - unsigned filt_flags; /* filter flags */ - H5Z_filter_t filtn; /* filter identification number */ - unsigned cd_values[20]; /* filter client data values */ - size_t cd_nelmts; /* filter client number of values */ - char f_name[256]; /* filter name */ - unsigned szip_options_mask; - unsigned szip_pixels_per_block; - hsize_t chsize[64]; /* chunk size in elements */ - int rank; /* rank */ - char name[256]; /* external file name */ - off_t offset; /* offset of external file */ - hsize_t size; /* size of external file */ - H5D_fill_value_t fvstatus; - H5D_alloc_time_t at; - H5D_fill_time_t ft; - hsize_t storage_size; - haddr_t ioffset; - int i, next; - unsigned j; - - storage_size=H5Dget_storage_size(obj_id); - ioffset=H5Dget_offset(obj_id); - next=H5Pget_external_count(dcpl_id); - strcpy(f_name,"\0"); - -/*------------------------------------------------------------------------- - * STORAGE_LAYOUT - *------------------------------------------------------------------------- - */ - indentation(indent + COL); - printf("%s %s\n", STORAGE_LAYOUT, BEGIN); - - if (H5D_CHUNKED == H5Pget_layout(dcpl_id)) - { - /*start indent */ - indent += COL; - indentation(indent + COL); - printf("%s ", CHUNKED); - rank = H5Pget_chunk(dcpl_id,NELMTS(chsize),chsize); - HDfprintf(stdout,"%s %Hu", dump_header_format->dataspacedimbegin, chsize[0]); - for ( i=1; idataspacedimend); - indentation(indent + COL); - HDfprintf(stdout, "SIZE %Hu\n ", storage_size); - /*end indent */ - indent -= COL; - indentation(indent + COL); - printf("%s\n",END); - } - else if (H5D_COMPACT == H5Pget_layout(dcpl_id)) - { - /*start indent */ - indent += COL; - indentation(indent + COL); - printf("%s\n", COMPACT); - indentation(indent + COL); - HDfprintf(stdout, "SIZE %Hu\n", storage_size); - /*end indent */ - indent -= COL; - indentation(indent + COL); - printf("%s\n",END); - } - else if (H5D_CONTIGUOUS == H5Pget_layout(dcpl_id)) - { - /*------------------------------------------------------------------------- - * EXTERNAL_FILE - *------------------------------------------------------------------------- - */ - if (next) - { - /*start indent */ - indent += COL; - indentation(indent + COL); - printf("%s\n", CONTIGUOUS); - indentation(indent + COL); - printf("%s %s\n", EXTERNAL, BEGIN); - /*start indent */ - indent += COL; - for ( j=0; j<(unsigned)next; j++) { - H5Pget_external(dcpl_id,j,sizeof(name),name,&offset,&size); + int nfilters; /* number of filters */ + unsigned filt_flags; /* filter flags */ + H5Z_filter_t filtn; /* filter identification number */ + unsigned cd_values[20]; /* filter client data values */ + size_t cd_nelmts; /* filter client number of values */ + char f_name[256]; /* filter name */ + unsigned szip_options_mask; + unsigned szip_pixels_per_block; + hsize_t chsize[64]; /* chunk size in elements */ + int rank; /* rank */ + char name[256]; /* external file name */ + off_t offset; /* offset of external file */ + hsize_t size; /* size of external file */ + H5D_fill_value_t fvstatus; + H5D_alloc_time_t at; + H5D_fill_time_t ft; + hsize_t storage_size; + haddr_t ioffset; + int i, next; + unsigned j; + + storage_size=H5Dget_storage_size(obj_id); + ioffset=H5Dget_offset(obj_id); + next=H5Pget_external_count(dcpl_id); + strcpy(f_name,"\0"); + + /*------------------------------------------------------------------------- + * STORAGE_LAYOUT + *------------------------------------------------------------------------- + */ indentation(indent + COL); - HDfprintf(stdout,"FILENAME %s SIZE %Hu OFFSET %ld\n",name,size,offset); - } - /*end indent */ - indent -= COL; - indentation(indent + COL); - printf("%s\n",END); - /*end indent */ - indent -= COL; - indentation(indent + COL); - printf("%s\n",END); - } - else - { - /*start indent */ - indent += COL; - indentation(indent + COL); - printf("%s\n", CONTIGUOUS); - indentation(indent + COL); - HDfprintf(stdout,"SIZE %Hu\n", storage_size); - indentation(indent + COL); - HDfprintf(stdout,"OFFSET %Hu\n", ioffset); - /*end indent */ - indent -= COL; - indentation(indent + COL); - printf("%s\n",END); - } - } -/*------------------------------------------------------------------------- - * FILTERS - *------------------------------------------------------------------------- - */ - nfilters = H5Pget_nfilters(dcpl_id); + printf("%s %s\n", STORAGE_LAYOUT, BEGIN); + + if (H5D_CHUNKED == H5Pget_layout(dcpl_id)) { + /*start indent */ + indent += COL; + indentation(indent + COL); + printf("%s ", CHUNKED); + + rank = H5Pget_chunk(dcpl_id,NELMTS(chsize),chsize); + HDfprintf(stdout,"%s %Hu", dump_header_format->dataspacedimbegin, chsize[0]); + for ( i=1; idataspacedimend); + indentation(indent + COL); + HDfprintf(stdout, "SIZE %Hu\n ", storage_size); + + /*end indent */ + indent -= COL; + indentation(indent + COL); + printf("%s\n",END); + } + else if (H5D_COMPACT == H5Pget_layout(dcpl_id)) { + /*start indent */ + indent += COL; + indentation(indent + COL); + printf("%s\n", COMPACT); + + indentation(indent + COL); + HDfprintf(stdout, "SIZE %Hu\n", storage_size); + + /*end indent */ + indent -= COL; + indentation(indent + COL); + printf("%s\n",END); + } + else if (H5D_CONTIGUOUS == H5Pget_layout(dcpl_id)) { + /*------------------------------------------------------------------------- + * EXTERNAL_FILE + *------------------------------------------------------------------------- + */ + if (next) { + /*start indent */ + indent += COL; + indentation(indent + COL); + printf("%s\n", CONTIGUOUS); + + indentation(indent + COL); + printf("%s %s\n", EXTERNAL, BEGIN); + + /*start indent */ + indent += COL; + for ( j=0; j<(unsigned)next; j++) { + H5Pget_external(dcpl_id,j,sizeof(name),name,&offset,&size); + indentation(indent + COL); + HDfprintf(stdout,"FILENAME %s SIZE %Hu OFFSET %ld\n",name,size,offset); + } + /*end indent */ + indent -= COL; + indentation(indent + COL); + printf("%s\n",END); + + /*end indent */ + indent -= COL; + indentation(indent + COL); + printf("%s\n",END); + } + else { + /*start indent */ + indent += COL; + indentation(indent + COL); + printf("%s\n", CONTIGUOUS); - indentation(indent + COL); - printf("%s %s\n", FILTERS, BEGIN); - indent += COL; + indentation(indent + COL); + HDfprintf(stdout,"SIZE %Hu\n", storage_size); + indentation(indent + COL); + HDfprintf(stdout,"OFFSET %Hu\n", ioffset); + + /*end indent */ + indent -= COL; + indentation(indent + COL); + printf("%s\n",END); + } + } + /*------------------------------------------------------------------------- + * FILTERS + *------------------------------------------------------------------------- + */ + nfilters = H5Pget_nfilters(dcpl_id); - if (nfilters) - { - for (i=0; igroupblockend); d_status = EXIT_FAILURE; } else { - size_t new_len = strlen(group) + 1; + size_t new_len = HDstrlen(group) + 1; if (prefix_len <= new_len) { prefix_len = new_len; - prefix = realloc(prefix, prefix_len); + prefix = HDrealloc(prefix, prefix_len); } H5Gget_objinfo(gid, ".", TRUE, &statbuf); - strcpy(prefix, group); + HDstrcpy(prefix, group); dump_group(gid, group); if (H5Gclose(gid) < 0) @@ -2952,15 +2934,10 @@ handle_links(hid_t fid, char *links, void UNUSED * data) H5G_stat_t statbuf; if (H5Gget_objinfo(fid, links, FALSE, &statbuf) < 0) { - begin_obj(dump_header_format->softlinkbegin, links, - dump_header_format->softlinkblockbegin); - indentation(COL); error_msg(progname, "unable to get obj info from \"%s\"\n", links); - end_obj(dump_header_format->softlinkend, - dump_header_format->softlinkblockend); d_status = EXIT_FAILURE; } else if (statbuf.type == H5G_LINK) { - char *buf = malloc(statbuf.u.slink.linklen); + char *buf = HDmalloc(statbuf.u.slink.linklen); begin_obj(dump_header_format->softlinkbegin, links, dump_header_format->softlinkblockbegin); @@ -2976,14 +2953,10 @@ handle_links(hid_t fid, char *links, void UNUSED * data) end_obj(dump_header_format->softlinkend, dump_header_format->softlinkblockend); - free(buf); + + HDfree(buf); } else { - begin_obj(dump_header_format->softlinkbegin, links, - dump_header_format->softlinkblockbegin); - indentation(COL); error_msg(progname, "\"%s\" is not a link\n", links); - end_obj(dump_header_format->softlinkend, - dump_header_format->softlinkblockend); d_status = EXIT_FAILURE; } } @@ -3453,13 +3426,13 @@ main(int argc, const char *argv[]) /* find all objects that might be targets of a refernce */ init_ref_path_table(fid); /* Insert the root group into the ref. path table */ - H5Giterate(fid, "/", NULL, fill_ref_path_table, (void *)""); + H5Giterate(fid, (const char *)"/", NULL, fill_ref_path_table, (void *)""); if (doxml) { /* initialize XML */ /* reset prefix! */ - strcpy(prefix, ""); + HDstrcpy(prefix, ""); /* make sure the URI is initialized to something */ if (xml_dtd_uri == NULL) { @@ -3584,7 +3557,7 @@ done: free_table(dset_table); free_table(type_table); - free(prefix); + HDfree(prefix); /* To Do: clean up XML table */ @@ -4485,7 +4458,7 @@ xml_dump_dataspace(hid_t space) static void xml_dump_data(hid_t obj_id, int obj_data, struct subset_t UNUSED * sset, int UNUSED pindex) { - h5dump_t *outputformat = &xml_dataformat; + h5tool_format_t *outputformat = &xml_dataformat; int status = -1; void *buf; hid_t space, type, p_type; @@ -4723,14 +4696,14 @@ xml_dump_named_datatype(hid_t type, const char *name) char *t_prefix; char *t_name; - tmp = malloc(strlen(prefix) + strlen(name) + 2); - strcpy(tmp, prefix); - strcat(tmp, "/"); - strcat(tmp, name); + tmp = HDmalloc(HDstrlen(prefix) + HDstrlen(name) + 2); + HDstrcpy(tmp, prefix); + HDstrcat(tmp, "/"); + HDstrcat(tmp, name); indentation(indent); - /*char **/ dtxid = malloc(100); - /*char **/ parentxid = malloc(100); + /*char **/ dtxid = HDmalloc(100); + /*char **/ parentxid = HDmalloc(100); /*char **/t_tmp = xml_escape_the_name(tmp); /*char **/t_prefix = xml_escape_the_name(prefix); /*char **/t_name = xml_escape_the_name(name); @@ -4749,20 +4722,20 @@ xml_dump_named_datatype(hid_t type, const char *name) "Parents=\"%s\" H5ParentPaths=\"%s\">\n", xmlnsprefix, name, dtxid, - parentxid,(strcmp(prefix, "") ? t_prefix : "/")); + parentxid,(HDstrcmp(prefix, "") ? t_prefix : "/")); } else { printf("<%sNamedDataType Name=\"%s\" OBJ-XID=\"%s\" " "H5Path=\"%s\" Parents=\"%s\" H5ParentPaths=\"%s\">\n", xmlnsprefix, t_name, dtxid, - t_tmp, parentxid, (strcmp(prefix, "") ? t_prefix : "/")); + t_tmp, parentxid, (HDstrcmp(prefix, "") ? t_prefix : "/")); } - free(dtxid); - free(parentxid); - free(t_tmp); - free(t_prefix); - free(t_name); - free(tmp); + HDfree(dtxid); + HDfree(parentxid); + HDfree(t_tmp); + HDfree(t_prefix); + HDfree(t_name); + HDfree(tmp); indent += COL; indentation(indent); @@ -4807,17 +4780,17 @@ xml_dump_group(hid_t gid, const char *name) char *t_objname; char *par_name; - if (strcmp(name, "/") == 0) { + if (HDstrcmp(name, "/") == 0) { isRoot = 1; - tmp = malloc(2); - strcpy(tmp, "/"); + tmp = HDmalloc(2); + HDstrcpy(tmp, "/"); } else { - tmp = malloc(strlen(prefix) + strlen(name) + 2); - strcpy(tmp, prefix); + tmp = HDmalloc(HDstrlen(prefix) + HDstrlen(name) + 2); + HDstrcpy(tmp, prefix); par = HDstrdup(tmp); - cp = strrchr(par, '/'); + cp = HDstrrchr(par, '/'); if (cp != NULL) { - if ((cp == par) && strlen(par) > 1) { + if ((cp == par) && HDstrlen(par) > 1) { *(cp + 1) = '\0'; } else { *cp = '\0'; @@ -5212,59 +5185,6 @@ xml_print_strs(hid_t did, int source) } /*------------------------------------------------------------------------- - * Function: check_compression - * - * Purpose: private function to check for compression and - * put a comment in the XML. (Not fully implemented.) - * - * Return: void - * - * Programmer: REMcG - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -#ifdef LATER -static void -check_compression(hid_t dcpl) -{ - int nfilt; - int i; - H5Z_filter_t filter; - char namebuf[20]; - size_t cd_nelmts = 1; - unsigned int cd_values; - unsigned int flags; -/* not used yet: will need to do somehting more elaborate to handle future - * compression methods. - char *t1 = "H5Z_FILTER_DEFLATE"; -*/ - - nfilt = H5Pget_nfilters(dcpl); - if (nfilt <= 0) - return; - for (i = 0; i < nfilt; i++) { -#ifdef H5_WANT_H5_V1_6_COMPAT - filter = H5Pget_filter(dcpl, i, &flags, - (size_t *) &cd_nelmts, - &cd_values, 20, namebuf); -#else - filter = H5Pget_filter(dcpl, i, &flags, - (size_t *) &cd_nelmts, - &cd_values, 20, namebuf, NULL); -#endif /* H5_WANT_H5_V1_6_COMPAT */ - if (filter == H5Z_FILTER_DEFLATE) { - indentation(indent + COL); - printf("<%sCompression />\n",xmlnsprefix); - indentation(indent + COL); - printf("\n", cd_values); - } - } -} -#endif /* LATER */ - -/*------------------------------------------------------------------------- * Function: check_filters * * Purpose: private function to check for the filters and @@ -5512,13 +5432,13 @@ xml_dump_dataset(hid_t did, const char *name, struct subset_t UNUSED * sset) hsize_t tempi; char *tmp; char *t_name, *t_tmp, *t_prefix; - char *rstr = malloc(100); - char *pstr = malloc(100); + char *rstr = HDmalloc(100); + char *pstr = HDmalloc(100); - tmp = malloc(strlen(prefix) + strlen(name) + 2); - strcpy(tmp, prefix); - strcat(tmp, "/"); - strcat(tmp, name); + tmp = HDmalloc(HDstrlen(prefix) + HDstrlen(name) + 2); + HDstrcpy(tmp, prefix); + HDstrcat(tmp, "/"); + HDstrcat(tmp, name); indentation(indent); t_name = xml_escape_the_name(name); @@ -5530,12 +5450,12 @@ xml_dump_dataset(hid_t did, const char *name, struct subset_t UNUSED * sset) printf("<%sDataset Name=\"%s\" OBJ-XID=\"%s\" H5Path= \"%s\" Parents=\"%s\" H5ParentPaths=\"%s\">\n",xmlnsprefix, t_name, rstr, t_tmp, pstr, strcmp(prefix, "") ? t_prefix : "/"); - free(t_name); - free(t_tmp); - free(t_prefix); - free(rstr); - free(pstr); - free(tmp); + HDfree(t_name); + HDfree(t_tmp); + HDfree(t_prefix); + HDfree(rstr); + HDfree(pstr); + HDfree(tmp); dcpl = H5Dget_create_plist(did); type = H5Dget_type(did); @@ -5994,7 +5914,32 @@ h5_fileaccess(void) static void init_prefix(char **prfx, size_t prfx_len) { - assert(prfx_len > 0); + HDassert(prfx_len > 0); *prfx = HDcalloc(prfx_len, 1); } + +/*------------------------------------------------------------------------- + * Function: add_prefix + * + * Purpose: Add object to prefix + * + * Return: void + * + *------------------------------------------------------------------------- + */ +static void +add_prefix(char **prfx, size_t *prfx_len, const char *name) +{ + size_t new_len = HDstrlen(*prfx) + HDstrlen(name) + 2; + + /* Check if we need more space */ + if(*prfx_len <= new_len) { + *prfx_len = new_len + 1; + *prfx = HDrealloc(*prfx, *prfx_len); + } + + /* Append object name to prefix */ + HDstrcat(HDstrcat(*prfx, "/"), name); +} /* end add_prefix */ + diff --git a/tools/h5dump/h5dump.h b/tools/h5dump/h5dump.h index 96e7d71..dbc5de9 100644 --- a/tools/h5dump/h5dump.h +++ b/tools/h5dump/h5dump.h @@ -18,4 +18,133 @@ #define H5DUMP_MAX_RANK H5S_MAX_RANK +#define ATTRIBUTE_DATA 0 +#define DATASET_DATA 1 +#define ENUM_DATA 2 +#define COL 3 + +/* Strings for output */ +#define ATTRIBUTE "ATTRIBUTE" +#define BLOCK "BLOCK" +#define SUPER_BLOCK "SUPER_BLOCK" +#define COMPRESSION "COMPRESSION" +#define CONCATENATOR "//" +#define COMPLEX "COMPLEX" +#define COUNT "COUNT" +#define CSET "CSET" +#define CTYPE "CTYPE" +#define DATA "DATA" +#define DATASPACE "DATASPACE" +#define EXTERNAL "EXTERNAL" +#define FILENO "FILENO" +#define HARDLINK "HARDLINK" +#define NLINK "NLINK" +#define OBJID "OBJECTID" +#define OBJNO "OBJNO" +#define S_SCALAR "SCALAR" +#define S_SIMPLE "SIMPLE" +#define S_NULL "NULL" +#define SOFTLINK "SOFTLINK" +#define STORAGELAYOUT "STORAGELAYOUT" +#define START "START" +#define STRIDE "STRIDE" +#define STRSIZE "STRSIZE" +#define STRPAD "STRPAD" +#define SUBSET "SUBSET" +#define FILTERS "FILTERS" +#define DEFLATE "COMPRESSION DEFLATE" +#define DEFLATE_LEVEL "LEVEL" +#define SHUFFLE "PREPROCESSING SHUFFLE" +#define FLETCHER32 "CHECKSUM FLETCHER32" +#define SZIP "COMPRESSION SZIP" +#define NBIT "COMPRESSION NBIT" +#define SCALEOFFSET "COMPRESSION SCALEOFFSET" +#define SCALEOFFSET_MINBIT "MIN BITS" +#define STORAGE_LAYOUT "STORAGE_LAYOUT" +#define CONTIGUOUS "CONTIGUOUS" +#define COMPACT "COMPACT" +#define CHUNKED "CHUNKED" +#define EXTERNAL_FILE "EXTERNAL_FILE" +#define FILLVALUE "FILLVALUE" +#define FILE_CONTENTS "FILE_CONTENTS" + +#define BEGIN "{" +#define END "}" + +typedef struct h5dump_header_t { + const char *name; + const char *filebegin; + const char *fileend; + const char *bootblockbegin; + const char *bootblockend; + const char *groupbegin; + const char *groupend; + const char *datasetbegin; + const char *datasetend; + const char *attributebegin; + const char *attributeend; + const char *datatypebegin; + const char *datatypeend; + const char *dataspacebegin; + const char *dataspaceend; + const char *databegin; + const char *dataend; + const char *softlinkbegin; + const char *softlinkend; + const char *subsettingbegin; + const char *subsettingend; + const char *startbegin; + const char *startend; + const char *stridebegin; + const char *strideend; + const char *countbegin; + const char *countend; + const char *blockbegin; + const char *blockend; + + const char *fileblockbegin; + const char *fileblockend; + const char *bootblockblockbegin; + const char *bootblockblockend; + const char *groupblockbegin; + const char *groupblockend; + const char *datasetblockbegin; + const char *datasetblockend; + const char *attributeblockbegin; + const char *attributeblockend; + const char *datatypeblockbegin; + const char *datatypeblockend; + const char *dataspaceblockbegin; + const char *dataspaceblockend; + const char *datablockbegin; + const char *datablockend; + const char *softlinkblockbegin; + const char *softlinkblockend; + const char *strblockbegin; + const char *strblockend; + const char *enumblockbegin; + const char *enumblockend; + const char *structblockbegin; + const char *structblockend; + const char *vlenblockbegin; + const char *vlenblockend; + const char *subsettingblockbegin; + const char *subsettingblockend; + const char *startblockbegin; + const char *startblockend; + const char *strideblockbegin; + const char *strideblockend; + const char *countblockbegin; + const char *countblockend; + const char *blockblockbegin; + const char *blockblockend; + + const char *dataspacedescriptionbegin; + const char *dataspacedescriptionend; + const char *dataspacedimbegin; + const char *dataspacedimend; + +} h5dump_header_t; + + #endif /* !H5DUMP_H__ */ diff --git a/tools/h5dump/h5dumpgentest.c b/tools/h5dump/h5dumpgentest.c index 4f1c0f5..8345e5a 100644 --- a/tools/h5dump/h5dumpgentest.c +++ b/tools/h5dump/h5dumpgentest.c @@ -4664,7 +4664,7 @@ static void gent_filters(void) assert(ret>=0); /* set the scaleoffset filter */ - ret=H5Pset_scaleoffset(dcpl,H5Z_SO_INT,H5Tget_size(H5T_NATIVE_INT)); + ret=H5Pset_scaleoffset(dcpl,H5Z_SO_INT,(int)H5Tget_size(H5T_NATIVE_INT)); assert(ret>=0); ret=make_dset(fid,"scaleoffset",sid,H5T_NATIVE_INT,dcpl,buf1); diff --git a/tools/h5import/h5import.c b/tools/h5import/h5import.c index 79c249b..7d81779 100755 --- a/tools/h5import/h5import.c +++ b/tools/h5import/h5import.c @@ -11,15 +11,14 @@ * http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have * * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ -#include -#include -#include -#ifndef MIPSEL -#include -#endif /* MIPSEL */ -#include -#include -#include "h5import.h" + +#include "hdf5.h" +#include "H5private.h" +#include +#include +#include +#include +#include "h5import.h" int main(int argc, char *argv[]) { @@ -30,15 +29,15 @@ int main(int argc, char *argv[]) int state = 0; struct Input *in=NULL; - const char *err1 = "Invalid number of arguments: %d.\n"; - const char *err2 = "Error in state table.\n"; - const char *err3 = "No output file given.\n"; - const char *err4 = "Program aborted.\n"; - const char *err5 = "Invalid path %s.\n"; - const char *err6 = "Invalid dimensions - %s.\n"; - const char *err7 = "Invalid type of data - %s.\n"; - const char *err8 = "Invalid size of data - %s.\n"; - const char *err9 = "Cannot specify more than 30 input files in one call to h5import.\n"; + const char *err1 = "Invalid number of arguments: %d.\n"; + const char *err2 = "Error in state table.\n"; + const char *err3 = "No output file given.\n"; + const char *err4 = "Program aborted.\n"; + const char *err5 = "Invalid path %s.\n"; + const char *err6 = "Invalid dimensions - %s.\n"; + const char *err7 = "Invalid type of data - %s.\n"; + const char *err8 = "Invalid size of data - %s.\n"; + const char *err9 = "Cannot specify more than 30 input files in one call to h5import.\n"; (void) setvbuf(stderr, (char *) NULL, _IOLBF, 0); (void) setvbuf(stdout, (char *) NULL, _IOLBF, 0); diff --git a/tools/h5import/h5import.h b/tools/h5import/h5import.h index cf318fc..85fa71e 100755 --- a/tools/h5import/h5import.h +++ b/tools/h5import/h5import.h @@ -18,6 +18,9 @@ * */ +#ifndef H5IMPORT_H__ +#define H5IMPORT_H__ + /* * state table tokens */ @@ -220,3 +223,6 @@ hid_t createInputDataType(struct Input *in); static int readUIntegerData(FILE **strm, struct Input *in); static int allocateUIntegerStorage(struct Input *in); static int validateConfigurationParameters(struct Input * in); + +#endif /* H5IMPORT_H__ */ + diff --git a/tools/h5import/h5importtest.c b/tools/h5import/h5importtest.c index e6c29e5..32d3fe5 100755 --- a/tools/h5import/h5importtest.c +++ b/tools/h5import/h5importtest.c @@ -11,8 +11,10 @@ * http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have * * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + #include -#include +#include "H5private.h" + /* * Name: * h5importtest @@ -286,4 +288,3 @@ main(void) return (0); } - diff --git a/tools/h5ls/h5ls.c b/tools/h5ls/h5ls.c index 75e4218..1c1a3fb 100644 --- a/tools/h5ls/h5ls.c +++ b/tools/h5ls/h5ls.c @@ -64,7 +64,7 @@ static struct dispatch_t { herr_t (*close)(hid_t obj); herr_t (*list1)(hid_t obj); herr_t (*list2)(hid_t obj, const char *name); -} dispatch_g[H5G_NTYPES]; +} dispatch_g[H5G_NLIBTYPES]; #define DISPATCH(TYPE,NAME,OPEN,CLOSE,LIST1,LIST2) { \ dispatch_g[TYPE].name = (NAME); \ @@ -1226,7 +1226,7 @@ dump_dataset_values(hid_t dset) { hid_t f_type = H5Dget_type(dset); size_t size = H5Tget_size(f_type); - h5dump_t info; + h5tool_format_t info; char string_prefix[64]; static char fmt_double[16], fmt_float[16]; @@ -1332,7 +1332,7 @@ list_attr (hid_t obj, const char *attr_name, void UNUSED *op_data) size_t need; hsize_t temp_need; void *buf; - h5dump_t info; + h5tool_format_t info; H5S_class_t space_type; printf(" Attribute: "); diff --git a/tools/h5repack/h5repack.h b/tools/h5repack/h5repack.h index 1554039..3647d43 100644 --- a/tools/h5repack/h5repack.h +++ b/tools/h5repack/h5repack.h @@ -16,7 +16,6 @@ #ifndef H5REPACK_H__ #define H5REPACK_H__ -#include #include "hdf5.h" #include "h5trav.h" #include "h5diff.h" @@ -44,11 +43,11 @@ typedef struct { the type of filter and additional parameter type can be one of the filters H5Z_FILTER_NONE 0, uncompress if compressed - H5Z_FILTER_DEFLATE 1 , deflation like gzip + H5Z_FILTER_DEFLATE 1 , deflation like gzip H5Z_FILTER_SHUFFLE 2 , shuffle the data H5Z_FILTER_FLETCHER32 3 , letcher32 checksum of EDC H5Z_FILTER_SZIP 4 , szip compression - H5Z_FILTER_NBIT 5 , nbit compression + H5Z_FILTER_NBIT 5 , nbit compression H5Z_FILTER_SCALEOFFSET 6 , scaleoffset compression */ @@ -244,82 +243,7 @@ obj_list_t* parse_layout(const char *str, const char* get_sfilter (H5Z_filter_t filtn); int parse_number(char *str); -/*------------------------------------------------------------------------- - * tests - *------------------------------------------------------------------------- - */ - -#define FNAME0 "test0.h5" -#define FNAME0OUT "test0out.h5" -#define FNAME1 "test1.h5" -#define FNAME1OUT "test1out.h5" -#define FNAME2 "test2.h5" -#define FNAME2OUT "test2out.h5" -#define FNAME3 "test3.h5" -#define FNAME3OUT "test3out.h5" -#define FNAME4 "test4.h5" -#define FNAME4OUT "test4out.h5" -#define FNAME5 "test5.h5" -#define FNAME5OUT "test5out.h5" -#define FNAME6 "test6.h5" -#define FNAME7 "test_szip.h5" -#define FNAME8 "test_deflate.h5" -#define FNAME9 "test_shuffle.h5" -#define FNAME10 "test_fletcher32.h5" -#define FNAME11 "test_all.h5" -#define FNAME7OUT "test_szipout.h5" -#define FNAME8OUT "test_deflateout.h5" -#define FNAME9OUT "test_shuffleout.h5" -#define FNAME10OUT "test_fletcher32out.h5" -#define FNAME11OUT "test_allout.h5" -#define FNAME12 "test_nbit.h5" -#define FNAME12OUT "test_nbitout.h5" -#define FNAME13 "test_scaleoffset.h5" -#define FNAME13OUT "test_scaleoffsetout.h5" - -int make_testfiles(void); - -int write_dset( hid_t loc_id, - int rank, - hsize_t *dims, - const char *dset_name, - hid_t type_id, - void *buf ); -int write_attr(hid_t loc_id, - int rank, - hsize_t *dims, - const char *attr_name, - hid_t type_id, - void *buf); -void write_attr_in(hid_t loc_id, - const char* dset_name, /* for saving reference to dataset*/ - hid_t fid, /* for reference create */ - int make_diffs /* flag to modify data buffers */); -void write_dset_in(hid_t loc_id, - const char* dset_name, /* for saving reference to dataset*/ - hid_t file_id, - int make_diffs /* flag to modify data buffers */); - - - -/*------------------------------------------------------------------------- - * tests utils - *------------------------------------------------------------------------- - */ -int make_dset(hid_t loc_id, - const char *name, - hid_t sid, - hid_t dcpl, - void *buf); - -int make_attr(hid_t loc_id, - int rank, - hsize_t *dims, - const char *attr_name, - hid_t type_id, - void *buf); - - #endif /* H5REPACK_H__ */ + diff --git a/tools/h5repack/h5repack_copy.c b/tools/h5repack/h5repack_copy.c index fee7440..e5d962a 100644 --- a/tools/h5repack/h5repack_copy.c +++ b/tools/h5repack/h5repack_copy.c @@ -527,7 +527,7 @@ int do_copy_objects(hid_t fidin, default: if (options->verbose) printf(" %-10s %s\n","User defined object",travt->objs[i].name); - break; + goto error; } } diff --git a/tools/h5repack/h5repack_main.c b/tools/h5repack/h5repack_main.c index 96eb787..efedd95 100644 --- a/tools/h5repack/h5repack_main.c +++ b/tools/h5repack/h5repack_main.c @@ -137,11 +137,11 @@ void usage(void) printf("-o output Output HDF5 File\n"); printf("[-h] Print usage message\n"); printf("[-v] Verbose mode. Print more output (list of objects,\n"); - printf(" filters, warnings)\n"); + printf(" filters, warnings)\n"); printf("[-f 'filter'] Filter type: 'filter' is a string with the format\n"); - printf("\n"); + printf("\n"); printf(" : = \n"); - printf("\n"); + printf("\n"); printf(" is a comma separated list of object names\n"); printf(" meaning apply compression only to those objects.\n"); printf(" if no object names are specified, the filter is applied to all objects\n"); @@ -151,7 +151,7 @@ void usage(void) printf(" SHUF, to apply the HDF5 shuffle filter\n"); printf(" FLET, to apply the HDF5 checksum filter\n"); printf(" NBIT, to apply the HDF5 NBIT filter (NBIT compression)\n"); - printf(" SOFF, to apply the HDF5 Scale/Offset filter\n"); + printf(" SOFF, to apply the HDF5 Scale/Offset filter\n"); printf(" NONE, to remove the filter\n"); printf(" is optional compression info\n"); printf(" SHUF (no parameter)\n"); @@ -159,12 +159,12 @@ void usage(void) printf(" NBIT (no parameter)\n"); printf(" GZIP= from 1-9\n"); printf(" SZIP=\n"); - printf(" (pixels per block is a even number in 2-32 and coding method\n"); - printf(" is 'EC' or 'NN')\n"); - printf(" SOFF=\n"); - printf(" (scale_factor is an integer and scale_type is either 'IN'\n"); - printf(" for integer type, or 'DS', for floating point type\n"); - printf(" using the D-scaling method)\n"); + printf(" (pixels per block is a even number in 2-32 and coding method\n"); + printf(" is 'EC' or 'NN')\n"); + printf(" SOFF=\n"); + printf(" (scale_factor is an integer and scale_type is either 'IN'\n"); + printf(" for integer type, or 'DS', for floating point type\n"); + printf(" using the D-scaling method)\n"); printf("[-l 'layout'] Layout type. 'layout' is a string with the format\n"); printf("\n"); printf(" : \n"); @@ -182,7 +182,7 @@ void usage(void) printf("\n"); printf("-e file File with the -f and -l options (only filter and layout flags)\n"); printf("-m size Do not apply the filter to objects which size in bytes\n"); - printf(" is smaller than number. If no size is specified a minimum of\n"); + printf(" is smaller than number. If no size is specified a minimum of\n"); printf(" 1024 bytes is assumed.\n"); printf("\n"); printf("Examples of use:\n"); diff --git a/tools/h5repack/h5repack_parse.c b/tools/h5repack/h5repack_parse.c index 1c67216..9760fa2 100644 --- a/tools/h5repack/h5repack_parse.c +++ b/tools/h5repack/h5repack_parse.c @@ -137,9 +137,9 @@ obj_list_t* parse_filter(const char *str, /*------------------------------------------------------------------------- * H5Z_FILTER_SZIP - * szip has the format SZIP= + * szip has the format SZIP= * pixels per block is a even number in 2-32 and coding method is 'EC' or 'NN' - * example SZIP=8,NN + * example SZIP=8,NN *------------------------------------------------------------------------- */ if (strcmp(scomp,"SZIP")==0) @@ -171,9 +171,9 @@ obj_list_t* parse_filter(const char *str, i=len-1; /* end */ (*n_objs)--; /* we counted an extra ',' */ if (strcmp(smask,"NN")==0) - filt->cd_values[j++]=H5_SZIP_NN_OPTION_MASK; + filt->cd_values[j++]=H5_SZIP_NN_OPTION_MASK; else if (strcmp(smask,"EC")==0) - filt->cd_values[j++]=H5_SZIP_EC_OPTION_MASK; + filt->cd_values[j++]=H5_SZIP_EC_OPTION_MASK; else { printf("Input Error: szip mask must be 'NN' or 'EC' \n"); diff --git a/tools/h5repack/testh5repack.h b/tools/h5repack/testh5repack.h new file mode 100644 index 0000000..c367009 --- /dev/null +++ b/tools/h5repack/testh5repack.h @@ -0,0 +1,97 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + + +#ifndef TESTH5REPACK_H__ +#define TESTH5REPACK_H__ + +/*------------------------------------------------------------------------- + * tests + *------------------------------------------------------------------------- + */ + +#define FNAME0 "test0.h5" +#define FNAME0OUT "test0out.h5" +#define FNAME1 "test1.h5" +#define FNAME1DST "test1_dst.h5" +#define FNAME1OUT "test1out.h5" +#define FNAME2 "test2.h5" +#define FNAME2OUT "test2out.h5" +#define FNAME3 "test3.h5" +#define FNAME3OUT "test3out.h5" +#define FNAME4 "test4.h5" +#define FNAME4OUT "test4out.h5" +#define FNAME5 "test5.h5" +#define FNAME5OUT "test5out.h5" +#define FNAME6 "test6.h5" +#define FNAME7 "test_szip.h5" +#define FNAME8 "test_deflate.h5" +#define FNAME9 "test_shuffle.h5" +#define FNAME10 "test_fletcher32.h5" +#define FNAME11 "test_all.h5" +#define FNAME7OUT "test_szipout.h5" +#define FNAME8OUT "test_deflateout.h5" +#define FNAME9OUT "test_shuffleout.h5" +#define FNAME10OUT "test_fletcher32out.h5" +#define FNAME11OUT "test_allout.h5" +#define FNAME12 "test_nbit.h5" +#define FNAME12OUT "test_nbitout.h5" +#define FNAME13 "test_scaleoffset.h5" +#define FNAME13OUT "test_scaleoffsetout.h5" + +int make_testfiles(void); + +int write_dset( hid_t loc_id, + int rank, + hsize_t *dims, + const char *dset_name, + hid_t type_id, + void *buf ); +int write_attr(hid_t loc_id, + int rank, + hsize_t *dims, + const char *attr_name, + hid_t type_id, + void *buf); +void write_attr_in(hid_t loc_id, + const char* dset_name, /* for saving reference to dataset*/ + hid_t fid, /* for reference create */ + int make_diffs /* flag to modify data buffers */); +void write_dset_in(hid_t loc_id, + const char* dset_name, /* for saving reference to dataset*/ + hid_t file_id, + int make_diffs /* flag to modify data buffers */); + + + +/*------------------------------------------------------------------------- + * tests utils + *------------------------------------------------------------------------- + */ +int make_dset(hid_t loc_id, + const char *name, + hid_t sid, + hid_t dcpl, + void *buf); + +int make_attr(hid_t loc_id, + int rank, + hsize_t *dims, + const char *attr_name, + hid_t type_id, + void *buf); + + +#endif /* TESTH5REPACK_H__ */ + diff --git a/tools/h5repack/testh5repack_attr.c b/tools/h5repack/testh5repack_attr.c index f18bbc2..7635cf2 100644 --- a/tools/h5repack/testh5repack_attr.c +++ b/tools/h5repack/testh5repack_attr.c @@ -15,6 +15,7 @@ #include "hdf5.h" #include "h5test.h" #include "h5repack.h" +#include "testh5repack.h" /*------------------------------------------------------------------------- * Function: write_attr_in diff --git a/tools/h5repack/testh5repack_detect_szip.c b/tools/h5repack/testh5repack_detect_szip.c index 16962af..095910e 100644 --- a/tools/h5repack/testh5repack_detect_szip.c +++ b/tools/h5repack/testh5repack_detect_szip.c @@ -16,6 +16,7 @@ #include "hdf5.h" #include "h5test.h" #include "h5repack.h" +#include "testh5repack.h" /*------------------------------------------------------------------------- diff --git a/tools/h5repack/testh5repack_dset.c b/tools/h5repack/testh5repack_dset.c index 862257a..c345028 100644 --- a/tools/h5repack/testh5repack_dset.c +++ b/tools/h5repack/testh5repack_dset.c @@ -15,6 +15,7 @@ #include "hdf5.h" #include "h5test.h" #include "h5repack.h" +#include "testh5repack.h" static void make_dset_reg_ref(hid_t loc_id); diff --git a/tools/h5repack/testh5repack_main.c b/tools/h5repack/testh5repack_main.c index ab6c09e..42beb76 100644 --- a/tools/h5repack/testh5repack_main.c +++ b/tools/h5repack/testh5repack_main.c @@ -15,6 +15,7 @@ #include "hdf5.h" #include "h5test.h" #include "h5repack.h" +#include "testh5repack.h" #include "h5diff.h" #if 0 diff --git a/tools/h5repack/testh5repack_make.c b/tools/h5repack/testh5repack_make.c index 247d606..43b68b1 100644 --- a/tools/h5repack/testh5repack_make.c +++ b/tools/h5repack/testh5repack_make.c @@ -15,6 +15,7 @@ #include "hdf5.h" #include "h5test.h" #include "h5repack.h" +#include "testh5repack.h" #define DIM1 40 #define DIM2 20 @@ -851,8 +852,10 @@ int make_all(hid_t loc_id) { hid_t dcpl; /* dataset creation property list */ hid_t sid; /* dataspace ID */ +#if defined (H5_HAVE_FILTER_NBIT) hid_t dtid; hid_t dsid; +#endif /* H5_HAVE_FILTER_NBIT */ #if defined (H5_HAVE_FILTER_SZIP) unsigned szip_options_mask=H5_SZIP_ALLOW_K13_OPTION_MASK|H5_SZIP_NN_OPTION_MASK; unsigned szip_pixels_per_block=8; diff --git a/tools/h5repack/testh5repack_util.c b/tools/h5repack/testh5repack_util.c index cad52d3..63b8b1d 100644 --- a/tools/h5repack/testh5repack_util.c +++ b/tools/h5repack/testh5repack_util.c @@ -14,6 +14,7 @@ #include "hdf5.h" #include "h5repack.h" +#include "testh5repack.h" /*------------------------------------------------------------------------- * Function: make_dset diff --git a/tools/lib/h5diff.c b/tools/lib/h5diff.c index 7a25d4f..b61cc60 100644 --- a/tools/lib/h5diff.c +++ b/tools/lib/h5diff.c @@ -161,35 +161,31 @@ static void print_incoming_data(void) * * Date: October 22, 2003 * - * Modifications: Jan 2005 Leon Arber, larber@uiuc.edu - * Added support for parallel diffing - * *------------------------------------------------------------------------- */ -hsize_t -h5diff (const char *fname1, - const char *fname2, - const char *objname1, const char *objname2, diff_opt_t * options) +hsize_t h5diff(const char *fname1, + const char *fname2, + const char *objname1, + const char *objname2, + diff_opt_t *options) { int nobjects1, nobjects2; trav_info_t *info1 = NULL; trav_info_t *info2 = NULL; hid_t file1_id=(-1), file2_id=(-1); - char filenames[2][1024]; - hsize_t nfound = 0; - int not_cmp = 0; + char filenames[2][1024]; + hsize_t nfound = 0; memset(filenames, 0, 1024*2); - - if (options->m_quiet && (options->m_verbose || options->m_report)) - { - printf - ("Error: -q (quiet mode) cannot be added to verbose or report modes\n"); - options->err_stat = 1; - return 0; - } + if (options->m_quiet && + (options->m_verbose || options->m_report)) + { + printf("Error: -q (quiet mode) cannot be added to verbose or report modes\n"); + options->err_stat=1; + return 0; + } /*------------------------------------------------------------------------- * open the files first; if they are not valid, no point in continuing @@ -256,8 +252,6 @@ h5diff (const char *fname1, goto out; } - - /*------------------------------------------------------------------------- * get the list of objects in the files *------------------------------------------------------------------------- @@ -269,10 +263,8 @@ h5diff (const char *fname1, { printf ("Error: Not enough memory for object list\n"); options->err_stat = 1; - if (info1) - h5trav_freeinfo (info1, nobjects1); - if (info2) - h5trav_freeinfo (info2, nobjects1); + if (info1) h5trav_freeinfo (info1, nobjects1); + if (info2) h5trav_freeinfo (info2, nobjects1); #ifdef H5_HAVE_PARALLEL if(g_Parallel) { @@ -875,10 +867,10 @@ diff_compare (hid_t file1_id, * * Purpose: switch between types and choose the diff function * TYPE is either - * H5G_LINK Object is a symbolic link * H5G_GROUP Object is a group * H5G_DATASET Object is a dataset * H5G_TYPE Object is a named data type + * H5G_LINK Object is a symbolic link * * Return: Number of differences found * @@ -901,8 +893,6 @@ diff (hid_t file1_id, int ret; H5G_stat_t sb1; H5G_stat_t sb2; - char *buf1 = NULL; - char *buf2 = NULL; hsize_t nfound = 0; switch (type) @@ -1042,18 +1032,22 @@ diff (hid_t file1_id, *------------------------------------------------------------------------- */ case H5G_LINK: - if (H5Gget_objinfo (file1_id, path1, FALSE, &sb1) < 0) - goto out; - if (H5Gget_objinfo (file1_id, path1, FALSE, &sb2) < 0) - goto out; + { + char *buf1 = NULL; + char *buf2 = NULL; - buf1 = malloc (sb1.u.slink.linklen); - buf2 = malloc (sb2.u.slink.linklen); + if (H5Gget_objinfo (file1_id, path1, FALSE, &sb1) < 0) + goto out; + if (H5Gget_objinfo (file1_id, path1, FALSE, &sb2) < 0) + goto out; + + buf1 = HDmalloc (sb1.u.slink.linklen); + buf2 = HDmalloc (sb2.u.slink.linklen); if (H5Gget_linkval (file1_id, path1, sb1.u.slink.linklen, buf1) < 0) - goto out; + goto out; if (H5Gget_linkval (file2_id, path2, sb1.u.slink.linklen, buf2) < 0) - goto out; + goto out; ret = HDstrcmp (buf1, buf2); @@ -1061,23 +1055,13 @@ diff (hid_t file1_id, nfound = (ret != 0) ? 1 : 0; if (print_objname (options, nfound)) - parallel_print("Link: <%s> and <%s>\n", path1, path2); - - if (buf1) - { - free (buf1); - buf1 = NULL; - } - - if (buf2) - { - free (buf2); - buf2 = NULL; - } + parallel_print("Soft Link: <%s> and <%s>\n", path1, path2); + HDfree (buf1); + HDfree (buf2); + } break; - default: nfound = 0; if (options->m_verbose) @@ -1105,11 +1089,6 @@ out: } H5E_END_TRY; - if (buf1) - free (buf1); - if (buf2) - free (buf2); - return nfound; } diff --git a/tools/lib/h5diff_array.c b/tools/lib/h5diff_array.c index dd4784d..f9f0da7 100644 --- a/tools/lib/h5diff_array.c +++ b/tools/lib/h5diff_array.c @@ -336,7 +336,7 @@ hsize_t diff_datum(void *_mem1, } else { - s = mem1; + s = (char *)mem1; size = H5Tget_size(m_type); } @@ -382,6 +382,7 @@ hsize_t diff_datum(void *_mem1, } break; + /*------------------------------------------------------------------------- * H5T_OPAQUE *------------------------------------------------------------------------- @@ -831,7 +832,6 @@ hsize_t diff_datum(void *_mem1, print_pos(ph,1,i,acc,pos,rank,obj1,obj2); parallel_print(SPACES); parallel_print(IPFORMAT,temp1_short,temp2_short,abs(temp1_short-temp2_short), abs(1-temp2_short/temp1_short)); - } nfound++; } @@ -841,7 +841,6 @@ hsize_t diff_datum(void *_mem1, if ( print_data(options) ) { print_pos(ph,0,i,acc,pos,rank,obj1,obj2); - parallel_print(SPACES); parallel_print(IFORMAT,temp1_short,temp2_short,abs(temp1_short-temp2_short)); } @@ -1124,7 +1123,7 @@ hsize_t diff_datum(void *_mem1, parallel_print(SPACES); parallel_print(LPIFORMAT,temp1_long,temp2_long,labs(temp1_long-temp2_long), labs(1-temp2_long/temp1_long)); } - nfound++; + nfound++; } } /* -d and -p */ @@ -1752,13 +1751,13 @@ void close_obj(H5G_obj_t obj_type, hid_t obj_id) */ static int diff_region(hid_t region1_id, hid_t region2_id) { - hssize_t nblocks1, npoints1; - hssize_t nblocks2, npoints2; + hssize_t nblocks1, npoints1; + hssize_t nblocks2, npoints2; hsize_t alloc_size; hsize_t *ptdata1; hsize_t *ptdata2; - int ndims1 = H5Sget_simple_extent_ndims(region1_id); - int ndims2 = H5Sget_simple_extent_ndims(region2_id); + int ndims1 = H5Sget_simple_extent_ndims(region1_id); + int ndims2 = H5Sget_simple_extent_ndims(region2_id); int ret=0; #if defined (H5DIFF_DEBUG) @@ -2190,7 +2189,7 @@ hsize_t diff_schar(unsigned char *mem1, nfound++; } mem1+=sizeof(char); - mem2+=sizeof(char); + mem2+=sizeof(char); if (options->n && nfound>=options->count) return nfound; } @@ -2217,7 +2216,7 @@ hsize_t diff_schar(unsigned char *mem1, nfound++; } mem1+=sizeof(char); - mem2+=sizeof(char); + mem2+=sizeof(char); if (options->n && nfound>=options->count) return nfound; } @@ -2245,7 +2244,7 @@ hsize_t diff_schar(unsigned char *mem1, nfound++; } mem1+=sizeof(char); - mem2+=sizeof(char); + mem2+=sizeof(char); if (options->n && nfound>=options->count) return nfound; } @@ -2330,7 +2329,7 @@ hsize_t diff_uchar(unsigned char *mem1, nfound++; } mem1+=sizeof(unsigned char); - mem2+=sizeof(unsigned char); + mem2+=sizeof(unsigned char); if (options->n && nfound>=options->count) return nfound; } @@ -2358,7 +2357,7 @@ hsize_t diff_uchar(unsigned char *mem1, nfound++; } mem1+=sizeof(unsigned char); - mem2+=sizeof(unsigned char); + mem2+=sizeof(unsigned char); if (options->n && nfound>=options->count) return nfound; } @@ -2472,7 +2471,7 @@ hsize_t diff_short(unsigned char *mem1, nfound++; } mem1+=sizeof(short); - mem2+=sizeof(short); + mem2+=sizeof(short); if (options->n && nfound>=options->count) return nfound; } @@ -2500,7 +2499,7 @@ hsize_t diff_short(unsigned char *mem1, nfound++; } mem1+=sizeof(short); - mem2+=sizeof(short); + mem2+=sizeof(short); if (options->n && nfound>=options->count) return nfound; } @@ -2530,7 +2529,7 @@ hsize_t diff_short(unsigned char *mem1, nfound++; } mem1+=sizeof(short); - mem2+=sizeof(short); + mem2+=sizeof(short); if (options->n && nfound>=options->count) return nfound; } @@ -2614,7 +2613,7 @@ hsize_t diff_ushort(unsigned char *mem1, nfound++; } mem1+=sizeof(unsigned short); - mem2+=sizeof(unsigned short); + mem2+=sizeof(unsigned short); if (options->n && nfound>=options->count) return nfound; } @@ -2642,7 +2641,7 @@ hsize_t diff_ushort(unsigned char *mem1, nfound++; } mem1+=sizeof(unsigned short); - mem2+=sizeof(unsigned short); + mem2+=sizeof(unsigned short); if (options->n && nfound>=options->count) return nfound; } @@ -2672,7 +2671,7 @@ hsize_t diff_ushort(unsigned char *mem1, nfound++; } mem1+=sizeof(unsigned short); - mem2+=sizeof(unsigned short); + mem2+=sizeof(unsigned short); if (options->n && nfound>=options->count) return nfound; } @@ -2889,7 +2888,7 @@ hsize_t diff_uint(unsigned char *mem1, memcpy(&temp1_uint, mem1, sizeof(unsigned int)); memcpy(&temp2_uint, mem2, sizeof(unsigned int)); - if (abs(temp1_uint-temp2_uint) > options->delta) + if (abs((int)(temp1_uint-temp2_uint)) > options->delta) { if ( print_data(options) ) { @@ -3063,9 +3062,6 @@ hsize_t diff_long(unsigned char *mem1, { if ( print_data(options) ) { - memcpy(&temp1_long, mem1, sizeof(long)); - memcpy(&temp2_long, mem2, sizeof(long)); - if (labs(temp1_long-temp2_long) > (long)options->delta) { if ( print_data(options) ) @@ -3218,7 +3214,7 @@ hsize_t diff_ulong(unsigned char *mem1, nfound++; } mem1+=sizeof(unsigned long); - mem2+=sizeof(unsigned long); + mem2+=sizeof(unsigned long); if (options->n && nfound>=options->count) return nfound; } diff --git a/tools/lib/h5tools.c b/tools/lib/h5tools.c index 9556fe7..01f0fca 100644 --- a/tools/lib/h5tools.c +++ b/tools/lib/h5tools.c @@ -44,7 +44,6 @@ #define ALIGN(A,Z) ((((A) + (Z) - 1) / (Z)) * (Z)) /* global variables */ -int indent; int compound_data; FILE *rawdatastream; /* should initialize to stdout but gcc moans about it */ @@ -425,7 +424,7 @@ h5tools_ncols(const char *s) *------------------------------------------------------------------------- */ static void -h5tools_simple_prefix(FILE *stream, const h5dump_t *info, +h5tools_simple_prefix(FILE *stream, const h5tool_format_t *info, h5tools_context_t *ctx, hsize_t elmtno, int secnum) { h5tools_str_t prefix; @@ -538,7 +537,7 @@ h5tools_simple_prefix(FILE *stream, const h5dump_t *info, *------------------------------------------------------------------------- */ void -h5tools_dump_simple_data(FILE *stream, const h5dump_t *info, hid_t container, +h5tools_dump_simple_data(FILE *stream, const h5tool_format_t *info, hid_t container, h5tools_context_t *ctx/*in,out*/, unsigned flags, hsize_t nelmts, hid_t type, void *_mem) { @@ -670,11 +669,8 @@ h5tools_dump_simple_data(FILE *stream, const h5dump_t *info, hid_t container, multiline++; /* pass to the prefix in h5tools_simple_prefix the total position - instead of the current stripmine position i; this is necessary - to print the array indices */ - - /* pass to the prefix in h5tools_simple_prefix the total position - this is necessary to print the array indices */ + instead of the current stripmine position i; this is necessary + to print the array indices */ curr_pos = ctx->sm_pos + i; h5tools_simple_prefix(stream, info, ctx, curr_pos, secnum); @@ -709,7 +705,7 @@ h5tools_dump_simple_data(FILE *stream, const h5dump_t *info, hid_t container, *------------------------------------------------------------------------- */ static herr_t -h5tools_dump_simple_subset(FILE *stream, const h5dump_t *info, hid_t dset, +h5tools_dump_simple_subset(FILE *stream, const h5tool_format_t *info, hid_t dset, hid_t p_type, struct subset_t *sset, int indentlevel) { @@ -876,7 +872,7 @@ done: *------------------------------------------------------------------------- */ static int -h5tools_dump_simple_dset(FILE *stream, const h5dump_t *info, hid_t dset, +h5tools_dump_simple_dset(FILE *stream, const h5tool_format_t *info, hid_t dset, hid_t p_type, int indentlevel) { hid_t f_space; /*file data space */ @@ -1071,7 +1067,7 @@ h5tools_dump_simple_dset(FILE *stream, const h5dump_t *info, hid_t dset, *------------------------------------------------------------------------- */ static int -h5tools_dump_simple_mem(FILE *stream, const h5dump_t *info, hid_t obj_id, +h5tools_dump_simple_mem(FILE *stream, const h5tool_format_t *info, hid_t obj_id, hid_t type, hid_t space, void *mem, int indentlevel) { int i; /*counters */ @@ -1160,7 +1156,7 @@ h5tools_dump_simple_mem(FILE *stream, const h5dump_t *info, hid_t obj_id, *------------------------------------------------------------------------- */ int -h5tools_dump_dset(FILE *stream, const h5dump_t *info, hid_t dset, hid_t _p_type, +h5tools_dump_dset(FILE *stream, const h5tool_format_t *info, hid_t dset, hid_t _p_type, struct subset_t *sset, int indentlevel) { hid_t f_space; @@ -1168,7 +1164,7 @@ h5tools_dump_dset(FILE *stream, const h5dump_t *info, hid_t dset, hid_t _p_type, hid_t f_type; H5S_class_t space_type; int status = FAIL; - h5dump_t info_dflt; + h5tool_format_t info_dflt; /* Use default values */ if (!stream) @@ -1238,10 +1234,10 @@ done: *------------------------------------------------------------------------- */ int -h5tools_dump_mem(FILE *stream, const h5dump_t *info, hid_t obj_id, hid_t type, +h5tools_dump_mem(FILE *stream, const h5tool_format_t *info, hid_t obj_id, hid_t type, hid_t space, void *mem, int indentlevel) { - h5dump_t info_dflt; + h5tool_format_t info_dflt; /* Use default values */ if (!stream) @@ -1260,8 +1256,6 @@ h5tools_dump_mem(FILE *stream, const h5dump_t *info, hid_t obj_id, hid_t type, indentlevel); } - - /*------------------------------------------------------------------------- * Function: init_acc_pos * @@ -1290,4 +1284,3 @@ void init_acc_pos(h5tools_context_t *ctx, hsize_t *dims) ctx->pos[i]=0; } - diff --git a/tools/lib/h5tools.h b/tools/lib/h5tools.h index c5ca4fa..4bbc2d6 100644 --- a/tools/lib/h5tools.h +++ b/tools/lib/h5tools.h @@ -26,13 +26,13 @@ #define ESCAPE_HTML 1 #define OPT(X,S) ((X) ? (X) : (S)) #define OPTIONAL_LINE_BREAK "\001" /* Special strings embedded in the output */ -#define START_OF_DATA 0x0001 -#define END_OF_DATA 0x0002 +#define START_OF_DATA 0x0001 +#define END_OF_DATA 0x0002 /* * Information about how to format output. */ -typedef struct h5dump_t { +typedef struct h5tool_format_t { /* * Fields associated with formatting numeric data. If a datatype matches * multiple formats based on its size, then the first applicable format @@ -321,82 +321,7 @@ typedef struct h5dump_t { /*escape non printable characters */ int do_escape; -} h5dump_t; - -typedef struct dump_header{ - const char *name; - const char *filebegin; - const char *fileend; - const char *bootblockbegin; - const char *bootblockend; - const char *groupbegin; - const char *groupend; - const char *datasetbegin; - const char *datasetend; - const char *attributebegin; - const char *attributeend; - const char *datatypebegin; - const char *datatypeend; - const char *dataspacebegin; - const char *dataspaceend; - const char *databegin; - const char *dataend; - const char *softlinkbegin; - const char *softlinkend; - const char *subsettingbegin; - const char *subsettingend; - const char *startbegin; - const char *startend; - const char *stridebegin; - const char *strideend; - const char *countbegin; - const char *countend; - const char *blockbegin; - const char *blockend; - - const char *fileblockbegin; - const char *fileblockend; - const char *bootblockblockbegin; - const char *bootblockblockend; - const char *groupblockbegin; - const char *groupblockend; - const char *datasetblockbegin; - const char *datasetblockend; - const char *attributeblockbegin; - const char *attributeblockend; - const char *datatypeblockbegin; - const char *datatypeblockend; - const char *dataspaceblockbegin; - const char *dataspaceblockend; - const char *datablockbegin; - const char *datablockend; - const char *softlinkblockbegin; - const char *softlinkblockend; - const char *strblockbegin; - const char *strblockend; - const char *enumblockbegin; - const char *enumblockend; - const char *structblockbegin; - const char *structblockend; - const char *vlenblockbegin; - const char *vlenblockend; - const char *subsettingblockbegin; - const char *subsettingblockend; - const char *startblockbegin; - const char *startblockend; - const char *strideblockbegin; - const char *strideblockend; - const char *countblockbegin; - const char *countblockend; - const char *blockblockbegin; - const char *blockblockend; - - const char *dataspacedescriptionbegin; - const char *dataspacedescriptionend; - const char *dataspacedimbegin; - const char *dataspacedimend; - -} dump_header; +} h5tool_format_t; typedef struct h5tools_context_t { size_t cur_column; /*current column for output */ @@ -419,8 +344,6 @@ typedef struct h5tools_context_t { hsize_t sm_pos; /* current stripmine element position */ } h5tools_context_t; - - /* a structure to hold the subsetting particulars for a dataset */ struct subset_t { hsize_t *start; @@ -429,74 +352,12 @@ struct subset_t { hsize_t *block; }; -/*if we get a new program that needs to use the library add its name here*/ -typedef enum { - UNKNOWN = 0, - H5LS, - H5DUMP -} ProgType; - -/* taken from h5dump.h */ -#define ATTRIBUTE_DATA 0 -#define DATASET_DATA 1 -#define ENUM_DATA 2 - -#define COL 3 - -extern int indent; /*how far in to indent the line */ extern FILE *rawdatastream; /*output stream for raw data */ -/* taken from h5dump.h*/ -#define ATTRIBUTE "ATTRIBUTE" -#define BLOCK "BLOCK" -#define SUPER_BLOCK "SUPER_BLOCK" -#define COMPRESSION "COMPRESSION" -#define CONCATENATOR "//" -#define COMPLEX "COMPLEX" -#define COUNT "COUNT" -#define CSET "CSET" -#define CTYPE "CTYPE" -#define DATA "DATA" +/* Strings for output */ +#define GROUP "GROUP" #define DATASET "DATASET" -#define DATASPACE "DATASPACE" #define DATATYPE "DATATYPE" -#define EXTERNAL "EXTERNAL" -#define FILENO "FILENO" -#define GROUPNAME "GROUP" -#define HARDLINK "HARDLINK" -#define NLINK "NLINK" -#define OBJID "OBJECTID" -#define OBJNO "OBJNO" -#define S_SCALAR "SCALAR" -#define S_SIMPLE "SIMPLE" -#define S_NULL "NULL" -#define SOFTLINK "SOFTLINK" -#define STORAGELAYOUT "STORAGELAYOUT" -#define START "START" -#define STRIDE "STRIDE" -#define STRSIZE "STRSIZE" -#define STRPAD "STRPAD" -#define SUBSET "SUBSET" -#define FILTERS "FILTERS" -#define DEFLATE "COMPRESSION DEFLATE" -#define DEFLATE_LEVEL "LEVEL" -#define SHUFFLE "PREPROCESSING SHUFFLE" -#define FLETCHER32 "CHECKSUM FLETCHER32" -#define SZIP "COMPRESSION SZIP" -#define NBIT "COMPRESSION NBIT" -#define SCALEOFFSET "COMPRESSION SCALEOFFSET" -#define SCALEOFFSET_MINBIT "MIN BITS" -#define STORAGE_LAYOUT "STORAGE_LAYOUT" -#define CONTIGUOUS "CONTIGUOUS" -#define COMPACT "COMPACT" -#define CHUNKED "CHUNKED" -#define EXTERNAL_FILE "EXTERNAL_FILE" -#define FILLVALUE "FILLVALUE" -#define FILE_CONTENTS "FILE_CONTENTS" - - -#define BEGIN "{" -#define END "}" /* Definitions of useful routines */ extern void h5tools_init(void); @@ -504,13 +365,13 @@ extern void h5tools_close(void); extern hid_t h5tools_fopen(const char *fname, const char *driver, char *drivername, size_t drivername_len, int argc, const char *argv[]); -extern int h5tools_dump_dset(FILE *stream, const h5dump_t *info, hid_t dset, +extern int h5tools_dump_dset(FILE *stream, const h5tool_format_t *info, hid_t dset, hid_t p_typ, struct subset_t *sset, int indentlevel); -extern int h5tools_dump_mem(FILE *stream, const h5dump_t *info, hid_t obj_id, +extern int h5tools_dump_mem(FILE *stream, const h5tool_format_t *info, hid_t obj_id, hid_t type, hid_t space, void *mem, int indentlevel); extern hid_t h5tools_get_native_type(hid_t type); -extern void h5tools_dump_simple_data(FILE *stream, const h5dump_t *info, hid_t container, +extern void h5tools_dump_simple_data(FILE *stream, const h5tool_format_t *info, hid_t container, h5tools_context_t *ctx/*in,out*/, unsigned flags, hsize_t nelmts, hid_t type, void *_mem); @@ -520,5 +381,5 @@ extern int h5tools_can_encode(H5Z_filter_t filtn); void init_acc_pos(h5tools_context_t *ctx, hsize_t *dims); - #endif /* H5TOOLS_H__ */ + diff --git a/tools/lib/h5tools_ref.c b/tools/lib/h5tools_ref.c index c93d2e5..89bdaf1 100644 --- a/tools/lib/h5tools_ref.c +++ b/tools/lib/h5tools_ref.c @@ -156,17 +156,26 @@ haddr_t ref_path_table_lookup(const char *thepath) { H5G_stat_t sb; - haddr_t ret_value; - /* Get object ID for object at path */ - if(H5Gget_objinfo(thefile, thepath, TRUE, &sb)<0) - /* fatal error ? */ + /* Check for external link first, so we don't return the OID of an object in another file */ + if(H5Gget_objinfo(thefile, thepath, FALSE, &sb)<0) return HADDR_UNDEF; - - /* Return OID or HADDR_UNDEF */ - ret_value = ref_path_table_find(sb.u.obj.objno) ? sb.u.obj.objno : HADDR_UNDEF; - - return(ret_value); + if(sb.type == H5G_LINK) { + /* Get object ID for object at path */ + /* (If the object is not a soft link, we've already retrieved the + * correct information and don't have to perform this call. -QAK + */ + if(H5Gget_objinfo(thefile, thepath, TRUE, &sb)<0) + /* fatal error ? */ + return HADDR_UNDEF; + } /* end if */ + + + /* All existing objects in the file had better be in the table */ + HDassert(ref_path_table_find(sb.u.obj.objno)); + + /* Return OID */ + return(sb.u.obj.objno); } /*------------------------------------------------------------------------- diff --git a/tools/lib/h5tools_str.c b/tools/lib/h5tools_str.c index 1c1c1b2..73ca045 100644 --- a/tools/lib/h5tools_str.c +++ b/tools/lib/h5tools_str.c @@ -24,7 +24,7 @@ #include #include "H5private.h" -#include "h5tools.h" /*for h5dump_t structure */ +#include "h5tools.h" /*for h5tool_format_t structure */ #include "h5tools_ref.h" #include "h5tools_str.h" /*function prototypes */ @@ -304,7 +304,7 @@ h5tools_str_fmt(h5tools_str_t *str/*in,out*/, size_t start, const char *fmt) *------------------------------------------------------------------------- */ char * -h5tools_str_prefix(h5tools_str_t *str/*in,out*/, const h5dump_t *info, +h5tools_str_prefix(h5tools_str_t *str/*in,out*/, const h5tool_format_t *info, hsize_t elmtno, int ndims, hsize_t min_idx[], hsize_t max_idx[], h5tools_context_t *ctx) { @@ -364,7 +364,7 @@ h5tools_str_prefix(h5tools_str_t *str/*in,out*/, const h5dump_t *info, *------------------------------------------------------------------------- */ int -h5tools_str_dump_region(h5tools_str_t *str, hid_t region, const h5dump_t *info) +h5tools_str_dump_region(h5tools_str_t *str, hid_t region, const h5tool_format_t *info) { hssize_t nblocks, npoints; hsize_t alloc_size; @@ -461,7 +461,7 @@ h5tools_str_dump_region(h5tools_str_t *str, hid_t region, const h5dump_t *info) *------------------------------------------------------------------------- */ void -h5tools_print_char(h5tools_str_t *str, const h5dump_t *info, unsigned char ch) +h5tools_print_char(h5tools_str_t *str, const h5tool_format_t *info, unsigned char ch) { if (info->str_locale == ESCAPE_HTML) { if (ch <= ' ' || ch > '~') @@ -564,7 +564,7 @@ h5tools_print_char(h5tools_str_t *str, const h5dump_t *info, unsigned char ch) *------------------------------------------------------------------------- */ char * -h5tools_str_sprint(h5tools_str_t *str, const h5dump_t *info, hid_t container, +h5tools_str_sprint(h5tools_str_t *str, const h5tool_format_t *info, hid_t container, hid_t type, void *vp, h5tools_context_t *ctx) { size_t n, offset, size=0, nelmts, start; @@ -859,7 +859,7 @@ h5tools_str_sprint(h5tools_str_t *str, const h5dump_t *info, hid_t container, /* Print object type and close object */ switch (otype) { case H5G_GROUP: - h5tools_str_append(str, GROUPNAME); + h5tools_str_append(str, GROUP); H5Gclose(obj); break; case H5G_DATASET: diff --git a/tools/lib/h5tools_str.h b/tools/lib/h5tools_str.h index db7c1b3..19872a1 100644 --- a/tools/lib/h5tools_str.h +++ b/tools/lib/h5tools_str.h @@ -31,12 +31,12 @@ extern char *h5tools_str_append(h5tools_str_t *str, const char *fmt, ...); extern char *h5tools_str_reset(h5tools_str_t *str); extern char *h5tools_str_trunc(h5tools_str_t *str, size_t size); extern char *h5tools_str_fmt(h5tools_str_t *str, size_t start, const char *fmt); -extern char *h5tools_str_prefix(h5tools_str_t *str, const h5dump_t *info, +extern char *h5tools_str_prefix(h5tools_str_t *str, const h5tool_format_t *info, hsize_t elmtno, int ndims, hsize_t min_idx[], hsize_t max_idx[], h5tools_context_t *ctx); -extern int h5tools_str_dump_region(h5tools_str_t *, hid_t, const h5dump_t *); -extern void h5tools_print_char(h5tools_str_t *str, const h5dump_t *info, unsigned char ch); -extern char *h5tools_str_sprint(h5tools_str_t *str, const h5dump_t *info, +extern int h5tools_str_dump_region(h5tools_str_t *, hid_t, const h5tool_format_t *); +extern void h5tools_print_char(h5tools_str_t *str, const h5tool_format_t *info, unsigned char ch); +extern char *h5tools_str_sprint(h5tools_str_t *str, const h5tool_format_t *info, hid_t container, hid_t type, void *vp, h5tools_context_t *ctx); diff --git a/tools/lib/h5tools_utils.c b/tools/lib/h5tools_utils.c index 3e63c56..9eba7c5 100644 --- a/tools/lib/h5tools_utils.c +++ b/tools/lib/h5tools_utils.c @@ -591,7 +591,7 @@ init_objs(hid_t fid, find_objs_t *info, table_t **group_table, init_table(type_table); /* Init the find_objs_t */ - info->prefix = ""; + info->prefix = (char *)""; info->group_table = *group_table; info->type_table = *type_table; info->dset_table = *dset_table; diff --git a/tools/lib/h5trav.c b/tools/lib/h5trav.c index 5030e37..b59162a 100644 --- a/tools/lib/h5trav.c +++ b/tools/lib/h5trav.c @@ -17,14 +17,14 @@ #include "H5private.h" /* functions for traversal */ -int traverse( hid_t loc_id, +static int traverse( hid_t loc_id, const char *group_name, trav_table_t *table, trav_info_t *info, int *idx, int print); -herr_t get_nnames( hid_t loc_id, +static hssize_t get_nnames( hid_t loc_id, const char *group_name ); herr_t get_name_type( hid_t loc_id, @@ -159,36 +159,6 @@ void h5trav_freeinfo( trav_info_t *info, int nobjs ) /*------------------------------------------------------------------------- - * Function: count_names - * - * Purpose: operator function - * - * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu - * - * Date: October 10, 2002 - * - * Comments: - * - * Modifications: - * - *------------------------------------------------------------------------- - */ - -static herr_t count_names( hid_t loc_id, const char *name, void *op_data) -{ - - H5G_stat_t statbuf; - - if (H5Gget_objinfo( loc_id, name, 0, &statbuf) < 0 ) - return 1; - - (*(int *)op_data)++; - - /* Define a default zero value for return. This will cause the iterator to continue */ - return 0; -} - -/*------------------------------------------------------------------------- * Function: get_nnames * * Purpose: Counts the number of names in the group GROUP_NAME @@ -209,15 +179,24 @@ static herr_t count_names( hid_t loc_id, const char *name, void *op_data) *------------------------------------------------------------------------- */ -herr_t get_nnames( hid_t loc_id, const char *group_name ) +static hssize_t get_nnames( hid_t loc_id, const char *group_name ) { + hid_t gid; + hsize_t nobjs = 0; - int nobjs = 0; + /* Open the group */ + if((gid = H5Gopen(loc_id, group_name)) < 0) + return(-1); - if ( H5Giterate( loc_id, group_name, NULL, count_names, (void *)&nobjs ) < 0 ) - return -1; + /* Retrieve the number of objects in it */ + if(H5Gget_num_objs(gid, &nobjs) < 0) + return(-1); - return nobjs; + /* Close the group */ + if(H5Gclose(gid) < 0) + return(-1); + + return((hssize_t)nobjs); } @@ -242,7 +221,7 @@ static herr_t opget_info( hid_t loc_id, const char *name, void *op_data) H5G_stat_t statbuf; - if (H5Gget_objinfo( loc_id, name, 0, &statbuf) < 0 ) + if (H5Gget_objinfo( loc_id, name, FALSE, &statbuf) < 0 ) return -1; ((trav_info_t *)op_data)->type = statbuf.type; @@ -306,7 +285,7 @@ herr_t get_name_type( hid_t loc_id, *------------------------------------------------------------------------- */ -int traverse( hid_t loc_id, +static int traverse( hid_t loc_id, const char *group_name, trav_table_t *table, trav_info_t *info, @@ -323,7 +302,7 @@ int traverse( hid_t loc_id, int i, j; /* get the number of names */ - if (( n_names = get_nnames( loc_id, group_name )) < 0 ) + if (( n_names = (int)get_nnames( loc_id, group_name )) < 0 ) return -1; for ( i = 0; i < n_names; i++) @@ -332,13 +311,13 @@ int traverse( hid_t loc_id, return -1; /* allocate path buffer */ - path = (char*) HDmalloc(strlen(group_name) + strlen(name) + 2); + path = (char*) HDmalloc(HDstrlen(group_name) + HDstrlen(name) + 2); /* initialize path */ - strcpy( path, group_name ); - if ( strcmp(group_name,"/")!=0 ) - strcat( path, "/" ); - strcat( path, name ); + HDstrcpy( path, group_name ); + if ( HDstrcmp(group_name, "/") != 0 ) + HDstrcat( path, "/" ); + HDstrcat( path, name ); /* disable error reporting */ H5E_BEGIN_TRY { @@ -483,22 +462,22 @@ int traverse( hid_t loc_id, case H5G_LINK: { - char *targbuf=NULL; - /* increment */ inserted_objs++; /* add object to table */ - trav_table_add(statbuf.u.obj.objno, path, H5G_LINK, table ); + trav_table_add(HADDR_UNDEF, path, H5G_LINK, table ); if (statbuf.u.slink.linklen>0) { - targbuf=malloc(statbuf.u.slink.linklen); + char *targbuf; + + targbuf = HDmalloc(statbuf.u.slink.linklen); + assert(targbuf); H5Gget_linkval(loc_id,path,statbuf.u.slink.linklen,targbuf); if (print) printf(" %-10s %s -> %s\n", "link", path, targbuf); - if (targbuf) - free(targbuf); + free(targbuf); } else { @@ -511,6 +490,8 @@ int traverse( hid_t loc_id, default: + HDfprintf(stderr, "traverse: Unknown object!\n"); + return (-1); break; } diff --git a/tools/lib/h5trav.h b/tools/lib/h5trav.h index cd38a9b..40fa63d 100644 --- a/tools/lib/h5trav.h +++ b/tools/lib/h5trav.h @@ -17,19 +17,14 @@ #include "hdf5.h" -#if 0 -#define H5_TRAV_DEBUG -#endif - - /*------------------------------------------------------------------------- * public struct to store name and type of an object * the TYPE can be: * H5G_UNKNOWN = -1, - * H5G_LINK, Object is a symbolic link * H5G_GROUP, Object is a group * H5G_DATASET, Object is a dataset * H5G_TYPE, Object is a named data type + * H5G_LINK, Object is a symbolic link *------------------------------------------------------------------------- */ diff --git a/tools/misc/h5repart_gentest.c b/tools/misc/h5repart_gentest.c index df56e72..6457595 100644 --- a/tools/misc/h5repart_gentest.c +++ b/tools/misc/h5repart_gentest.c @@ -29,7 +29,7 @@ int main(void) { - hid_t file=(-1), fapl, fapl2=(-1), space=(-1), dset=(-1); + hid_t file=(-1), fapl, space=(-1), dset=(-1); char dname[]="dataset"; int i, j; int buf[FAMILY_NUMBER][FAMILY_SIZE]; diff --git a/tools/misc/h5stat.c b/tools/misc/h5stat.c index 4965d23..20e76be 100644 --- a/tools/misc/h5stat.c +++ b/tools/misc/h5stat.c @@ -94,11 +94,11 @@ static struct { static unsigned ceil_log10(unsigned long x) { - unsigned long pow = 1; + unsigned long pow10 = 1; unsigned ret = 0; - while(x >= pow) { - pow *= 10; + while(x >= pow10) { + pow10 *= 10; ret++; } /* end while */ diff --git a/tools/testfiles/h5diff_25.txt b/tools/testfiles/h5diff_25.txt index b137f44..237a685 100644 --- a/tools/testfiles/h5diff_25.txt +++ b/tools/testfiles/h5diff_25.txt @@ -1,4 +1,4 @@ ############################# Expected output for 'h5diff file3.h5 file3.h5 -v link link' ############################# -Link: and +Soft Link: and -- cgit v0.12