diff options
author | Pedro Vicente Nunes <pvn@hdfgroup.org> | 2004-03-02 18:12:25 (GMT) |
---|---|---|
committer | Pedro Vicente Nunes <pvn@hdfgroup.org> | 2004-03-02 18:12:25 (GMT) |
commit | 931efcb5ebd4099d18d93e7dcdaf296ea4991d73 (patch) | |
tree | 045fa2f9825fae4609e73d39b6831f1efa6a3c43 /tools/lib/h5diff_dset.c | |
parent | 77d3875c5b0787d373165f6b7537081b46e0d031 (diff) | |
download | hdf5-931efcb5ebd4099d18d93e7dcdaf296ea4991d73.zip hdf5-931efcb5ebd4099d18d93e7dcdaf296ea4991d73.tar.gz hdf5-931efcb5ebd4099d18d93e7dcdaf296ea4991d73.tar.bz2 |
[svn-r8229] Purpose:
1) new function for tools library
2) new test script for h5repack
Description:
1) currently all the tools (h5dump, h5diff, etc) do not check if a filter is available
for reading some dataset that might have a filter not available on the current configuration (the behaviour
of the tools until now was to trigger a library error, saying that the dataset cannot be read
due to the lack of the filter)
Solution:
1) added a new function h5tools_canreadf that checks if a dataset can be read
depending on the availability of filters.
this function was added in calls for h5diff and h5repack.
instead of triggering the library error, a message is printed, saying that the dataset
cannot be read (the print is optional, it is on on verbose mode)
2) added a shell script that tests the commannd line tool behaviour of h5repack
the script does a series of runs of h5repack with several options on the same file (this file test4.h5
was added to the testfiles dir).
then, it runs the h5diff tool, with the input and output files , in each run.
the goal of the test is also to check item 1) . the binary file was saved with filters
that might not be available on other configurations
Platforms tested:
linux (all filters enabled)
linux (some filters disabled)
solaris (some filters disabled)
AIX (some filters disabled)
windows (all filters on and off )
Misc. update:
Diffstat (limited to 'tools/lib/h5diff_dset.c')
-rw-r--r-- | tools/lib/h5diff_dset.c | 39 |
1 files changed, 26 insertions, 13 deletions
diff --git a/tools/lib/h5diff_dset.c b/tools/lib/h5diff_dset.c index 767db68..8cd5b32 100644 --- a/tools/lib/h5diff_dset.c +++ b/tools/lib/h5diff_dset.c @@ -14,6 +14,7 @@ #include "h5diff.h" #include "H5private.h" +#include "h5tools.h" #include <assert.h> /*------------------------------------------------------------------------- @@ -36,9 +37,12 @@ int diff_dataset( hid_t file1_id, const char *obj2_name, diff_opt_t *options ) { - hid_t dset1_id =-1; - hid_t dset2_id =-1; - int gout=0, nfound; + hid_t dset1_id =-1; + hid_t dset2_id =-1; + hid_t dcpl1_id; + hid_t dcpl2_id; + int gout=0, nfound=0; + /* disable error reporting */ H5E_BEGIN_TRY { @@ -64,23 +68,36 @@ int diff_dataset( hid_t file1_id, if (gout) goto out; - nfound=diff_datasetid(dset1_id, + if ((dcpl1_id=H5Dget_create_plist(dset1_id))<0) + goto out; + if ((dcpl2_id=H5Dget_create_plist(dset2_id))<0) + goto out; + +/*------------------------------------------------------------------------- + * check if the dataset creation property list has filters that + * are not registered in the current configuration + * 1) the external filters GZIP and SZIP might not be available + * 2) the internal filters might be turned off + *------------------------------------------------------------------------- + */ + if ((h5tools_canreadf((options->verbose?obj1_name:NULL),dcpl1_id)==1) && + (h5tools_canreadf((options->verbose?obj2_name:NULL),dcpl2_id)==1)) + { + nfound=diff_datasetid(dset1_id, dset2_id, obj1_name, obj2_name, options); - - - + } /*------------------------------------------------------------------------- * close *------------------------------------------------------------------------- */ - out: - /* disable error reporting */ H5E_BEGIN_TRY { + H5Pclose(dcpl1_id); + H5Pclose(dcpl2_id); H5Dclose(dset1_id); H5Dclose(dset2_id); /* enable error reporting */ @@ -377,12 +394,8 @@ out: } H5E_END_TRY; return nfound; - } - - - /*------------------------------------------------------------------------- * Function: diff_can_type * |