summaryrefslogtreecommitdiffstats
path: root/tools/h5repack/h5repack_filters.c
diff options
context:
space:
mode:
authorPedro Vicente Nunes <pvn@hdfgroup.org>2007-11-28 20:30:43 (GMT)
committerPedro Vicente Nunes <pvn@hdfgroup.org>2007-11-28 20:30:43 (GMT)
commit1b645ffd9177610c42d41c0dffbb7237154b9dad (patch)
tree1bf0d695d485817eeac809c7fb97911c09d17313 /tools/h5repack/h5repack_filters.c
parentcb2a70feb48da0a5d5d5e17d7682fcd29ca27e39 (diff)
downloadhdf5-1b645ffd9177610c42d41c0dffbb7237154b9dad.zip
hdf5-1b645ffd9177610c42d41c0dffbb7237154b9dad.tar.gz
hdf5-1b645ffd9177610c42d41c0dffbb7237154b9dad.tar.bz2
[svn-r14299] new feature: add support for h5repack to handle several global filters
usage is to repeat the -f option tested: windows, linux, solaris
Diffstat (limited to 'tools/h5repack/h5repack_filters.c')
-rw-r--r--tools/h5repack/h5repack_filters.c73
1 files changed, 38 insertions, 35 deletions
diff --git a/tools/h5repack/h5repack_filters.c b/tools/h5repack/h5repack_filters.c
index 0e7a557..c1c001c 100644
--- a/tools/h5repack/h5repack_filters.c
+++ b/tools/h5repack/h5repack_filters.c
@@ -122,7 +122,7 @@ int aux_assign_obj(const char* name, /* object name from traverse lis
{
/* assign the global filter */
tmp.nfilters=1;
- tmp.filter[0]=options->filter_g;
+ tmp.filter[0]=options->filter_g[0];
} /* if all */
else
{
@@ -144,9 +144,12 @@ int aux_assign_obj(const char* name, /* object name from traverse lis
if (options->all_filter)
{
- /* assign the global filter */
- tmp.nfilters=1;
- tmp.filter[0]=options->filter_g;
+ int k;
+
+ /* assign the global filters */
+ tmp.nfilters=options->n_filter_g;
+ for ( k = 0; k < options->n_filter_g; k++)
+ tmp.filter[k]=options->filter_g[k];
}
if (options->all_layout)
{
@@ -424,36 +427,36 @@ int apply_filters(const char* name, /* object name from traverse list */
int print_filters(hid_t dcpl_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 */
- size_t cd_num; /* filter client data counter */
- char f_name[256]; /* filter name */
- char s[64]; /* temporary string buffer */
- int i;
-
- /* get information about filters */
- if((nfilters = H5Pget_nfilters(dcpl_id)) < 0)
- return -1;
-
- for(i = 0; i < nfilters; i++) {
- cd_nelmts = NELMTS(cd_values);
- filtn = H5Pget_filter2(dcpl_id, (unsigned)i, &filt_flags, &cd_nelmts,
- cd_values, sizeof(f_name), f_name, NULL);
-
- f_name[sizeof(f_name)-1] = '\0';
- sprintf(s, "Filter-%d:", i);
- printf(" %-10s %s-%u %s {", s,
- f_name[0] ? f_name : "method",
- (unsigned)filtn,
- filt_flags & H5Z_FLAG_OPTIONAL?"OPT":"");
- for(cd_num = 0; cd_num < cd_nelmts; cd_num++)
- printf("%s%u", cd_num?", ":"", cd_values[cd_num]);
- printf("}\n");
- }
-
- return 0;
+ 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 */
+ size_t cd_num; /* filter client data counter */
+ char f_name[256]; /* filter name */
+ char s[64]; /* temporary string buffer */
+ int i;
+
+ /* get information about filters */
+ if((nfilters = H5Pget_nfilters(dcpl_id)) < 0)
+ return -1;
+
+ for(i = 0; i < nfilters; i++) {
+ cd_nelmts = NELMTS(cd_values);
+ filtn = H5Pget_filter2(dcpl_id, (unsigned)i, &filt_flags, &cd_nelmts,
+ cd_values, sizeof(f_name), f_name, NULL);
+
+ f_name[sizeof(f_name)-1] = '\0';
+ sprintf(s, "Filter-%d:", i);
+ printf(" %-10s %s-%u %s {", s,
+ f_name[0] ? f_name : "method",
+ (unsigned)filtn,
+ filt_flags & H5Z_FLAG_OPTIONAL?"OPT":"");
+ for(cd_num = 0; cd_num < cd_nelmts; cd_num++)
+ printf("%s%u", cd_num?", ":"", cd_values[cd_num]);
+ printf("}\n");
+ }
+
+ return 0;
}