diff options
Diffstat (limited to 'tools/src')
-rw-r--r-- | tools/src/h5diff/h5diff_common.c | 57 | ||||
-rw-r--r-- | tools/src/h5diff/h5diff_main.c | 4 | ||||
-rw-r--r-- | tools/src/h5dump/h5dump.c | 32 |
3 files changed, 78 insertions, 15 deletions
diff --git a/tools/src/h5diff/h5diff_common.c b/tools/src/h5diff/h5diff_common.c index 2619a9d..6bfdac7 100644 --- a/tools/src/h5diff/h5diff_common.c +++ b/tools/src/h5diff/h5diff_common.c @@ -56,6 +56,28 @@ static struct h5_long_options l_opts[] = {{"help", no_arg, 'h'}, {"vfd-info-2", require_arg, 'Z'}, {NULL, 0, '\0'}}; +static H5FD_onion_fapl_info_t onion_fa_g_1 = { + H5FD_ONION_FAPL_INFO_VERSION_CURR, + H5P_DEFAULT, /* backing_fapl_id */ + 32, /* page_size */ + H5FD_ONION_STORE_TARGET_ONION, /* store_target */ + H5FD_ONION_FAPL_INFO_REVISION_ID_LATEST, + 0, /* force_write_open */ + 0, /* creation_flags */ + "first input file", /* comment */ +}; + +static H5FD_onion_fapl_info_t onion_fa_g_2 = { + H5FD_ONION_FAPL_INFO_VERSION_CURR, + H5P_DEFAULT, /* backing_fapl_id */ + 32, /* page_size */ + H5FD_ONION_STORE_TARGET_ONION, /* store_target */ + H5FD_ONION_FAPL_INFO_REVISION_ID_LATEST, + 0, /* force_write_open */ + 0, /* creation_flags */ + "second input file", /* comment */ +}; + /*------------------------------------------------------------------------- * Function: check_options * @@ -445,37 +467,60 @@ parse_command_line(int argc, const char *const *argv, const char **fname1, const case '7': opts->vfd_info[0].type = VFD_BY_VALUE; opts->vfd_info[0].u.value = (H5FD_class_value_t)HDatoi(H5_optarg); - opts->custom_vfd[0] = TRUE; break; case '8': opts->vfd_info[0].type = VFD_BY_NAME; opts->vfd_info[0].u.name = H5_optarg; - opts->custom_vol[0] = TRUE; break; case '9': - opts->vfd_info[0].info = (const void *)H5_optarg; + opts->vfd_info[0].info = H5_optarg; break; case '0': opts->vfd_info[1].type = VFD_BY_VALUE; opts->vfd_info[1].u.value = (H5FD_class_value_t)HDatoi(H5_optarg); - opts->custom_vfd[1] = TRUE; break; case 'Y': opts->vfd_info[1].type = VFD_BY_NAME; opts->vfd_info[1].u.name = H5_optarg; - opts->custom_vfd[1] = TRUE; break; case 'Z': - opts->vfd_info[1].info = (const void *)H5_optarg; + opts->vfd_info[1].info = H5_optarg; break; } } + /* Copy the VFD driver info for both the files if it's the onion file */ + if (opts->vfd_info[0].u.name) { + if (!HDstrcmp(opts->vfd_info[0].u.name, "onion")) { + if (opts->vfd_info[0].info) + onion_fa_g_1.revision_id = HDatoi((char *)(opts->vfd_info[0].info)); + else + onion_fa_g_1.revision_id = 0; + + /* Need to free this memory */ + opts->vfd_info[0].info = HDmalloc(sizeof(H5FD_onion_fapl_info_t)); + HDmemcpy(opts->vfd_info[0].info, &onion_fa_g_1, sizeof(H5FD_onion_fapl_info_t)); + } + } /* driver name defined */ + + if (opts->vfd_info[1].u.name) { + if (!HDstrcmp(opts->vfd_info[1].u.name, "onion")) { + if (opts->vfd_info[1].info) + onion_fa_g_2.revision_id = HDatoi((char *)(opts->vfd_info[1].info)); + else + onion_fa_g_2.revision_id = 0; + + /* Need to free this memory */ + opts->vfd_info[1].info = HDmalloc(sizeof(H5FD_onion_fapl_info_t)); + HDmemcpy(opts->vfd_info[1].info, &onion_fa_g_2, sizeof(H5FD_onion_fapl_info_t)); + } + } /* driver name defined */ + /* check options */ check_options(opts); diff --git a/tools/src/h5diff/h5diff_main.c b/tools/src/h5diff/h5diff_main.c index 2a43b56..7b39104 100644 --- a/tools/src/h5diff/h5diff_main.c +++ b/tools/src/h5diff/h5diff_main.c @@ -127,6 +127,10 @@ main(int argc, char *argv[]) HDfree(opts.sset[i]->count.data); if (opts.sset[i]->block.data) HDfree(opts.sset[i]->block.data); + if (opts.vfd_info[0].info) + HDfree(opts.vfd_info[1].info); + if (opts.vfd_info[1].info) + HDfree(opts.vfd_info[1].info); HDfree(opts.sset[i]); opts.sset[i] = NULL; diff --git a/tools/src/h5dump/h5dump.c b/tools/src/h5dump/h5dump.c index 8bbd271..bb0863a 100644 --- a/tools/src/h5dump/h5dump.c +++ b/tools/src/h5dump/h5dump.c @@ -57,11 +57,10 @@ static H5FD_onion_fapl_info_t onion_fa_g = { 32, /* page_size */ H5FD_ONION_STORE_TARGET_ONION, /* store_target */ H5FD_ONION_FAPL_INFO_REVISION_ID_LATEST, - 0, /* force_write_open */ - 0, /* creation_flags */ - "indoor speaking voices", /* comment */ + 0, /* force_write_open */ + 0, /* creation_flags */ + "input file", /* comment */ }; -static uint64_t onion_revision_g = UINT64_MAX; /* module-scoped variables for XML option */ #define DEFAULT_XSD "http://www.hdfgroup.org/HDF5/XML/schema/HDF5-File.xsd" @@ -1230,11 +1229,6 @@ end_collect: else enable_error_stack = 1; break; - case 'F': - /* TODO: Convert to strtoumax */ - onion_revision_g = (uint64_t)HDatol(H5_optarg); - HDprintf("Using revision %" PRIu64 "\n", onion_revision_g); - break; case 'C': dump_opts.disable_compact_subset = TRUE; break; @@ -1318,6 +1312,22 @@ end_collect: } } + /* Copy the VFD driver info for the input file if it's the onion file */ + if (vfd_info_g.u.name) { + if (!HDstrcmp(vfd_info_g.u.name, "onion")) { + if (vfd_info_g.info) + onion_fa_g.revision_id = HDatoi((char *)(vfd_info_g.info)); + else + onion_fa_g.revision_id = 0; + + HDprintf("Using revision %" PRIu64 "\n", onion_fa_g.revision_id); + + /* Need to free this memory */ + vfd_info_g.info = HDmalloc(sizeof(H5FD_onion_fapl_info_t)); + HDmemcpy(vfd_info_g.info, &onion_fa_g, sizeof(H5FD_onion_fapl_info_t)); + } + } /* driver name defined */ + parse_end: /* check for file name to be processed */ if (argc <= H5_optind) { @@ -1625,6 +1635,10 @@ done: /* Free tables for objects */ table_list_free(); + /* Free the VFD info */ + if (vfd_info_g.info) + HDfree(vfd_info_g.info); + if (fapl_id != H5P_DEFAULT && 0 < H5Pclose(fapl_id)) { error_msg("Can't close fapl entry\n"); h5tools_setstatus(EXIT_FAILURE); |