From d308ee9e68863c3bd7424fd3215d38ab4c1a9156 Mon Sep 17 00:00:00 2001 From: Pedro Vicente Nunes Date: Mon, 14 Feb 2005 14:25:23 -0500 Subject: [svn-r10000] Purpose: bug fix Description: in 1 case when there was not a requested layout, the original chunk was not preserved Solution: Platforms tested: linux (small change) Misc. update: --- tools/h5repack/h5repack_filters.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/tools/h5repack/h5repack_filters.c b/tools/h5repack/h5repack_filters.c index 43b7dcc..89490e3 100644 --- a/tools/h5repack/h5repack_filters.c +++ b/tools/h5repack/h5repack_filters.c @@ -202,8 +202,11 @@ int apply_filters(const char* name, /* object name from traverse list */ unsigned aggression; /* the deflate level */ hsize_t nelmts; /* number of elements in dataset */ size_t size; /* size of datatype in bytes */ + hsize_t chsize[64]; /* chunk size in elements */ + H5D_layout_t layout; int i; pack_info_t obj; + if (rank==0) goto out; @@ -250,6 +253,31 @@ int apply_filters(const char* name, /* object name from traverse list */ if (H5Premove_filter(dcpl_id,H5Z_FILTER_ALL)<0) return -1; } + + + /*------------------------------------------------------------------------- + * check if there is an existent chunk + * read it only if there is not a requested layout + *------------------------------------------------------------------------- + */ + if (obj.layout == -1 ) + { + if ((layout = H5Pget_layout(dcpl_id))<0) + return -1; + + if (layout==H5D_CHUNKED) + { + if ((rank = H5Pget_chunk(dcpl_id,NELMTS(chsize),chsize/*out*/))<0) + return -1; + obj.layout=H5D_CHUNKED; + obj.chunk.rank=rank; + for ( i=0; i