mirror of
https://github.com/HDFGroup/hdf5.git
synced 2025-02-17 16:10:24 +08:00
[svn-r23829] HDFFV-8134: allow exclusion of attributes. This implements the technique and creates a test. Help changes will be added after trunk tests pass the test cycle.
Tested: local linux
This commit is contained in:
parent
c2750822ff
commit
308106c0e9
2
MANIFEST
2
MANIFEST
@ -1553,6 +1553,7 @@
|
||||
./tools/testfiles/tudlink-2.ddl
|
||||
./tools/testfiles/tattr2.h5
|
||||
./tools/testfiles/tall-2A.ddl
|
||||
./tools/testfiles/tall-2A0.ddl
|
||||
./tools/testfiles/tall-2B.ddl
|
||||
./tools/testfiles/tattrcontents1.ddl
|
||||
./tools/testfiles/tattrcontents2.ddl
|
||||
@ -1612,6 +1613,7 @@
|
||||
./tools/h5dump/errfiles/filter_fail.err
|
||||
./tools/h5dump/errfiles/tall-1.err
|
||||
./tools/h5dump/errfiles/tall-2A.err
|
||||
./tools/h5dump/errfiles/tall-2A0.err
|
||||
./tools/h5dump/errfiles/tall-2B.err
|
||||
./tools/h5dump/errfiles/tarray1_big.err
|
||||
./tools/h5dump/errfiles/tattr-3.err
|
||||
|
@ -52,6 +52,7 @@ IF (BUILD_TESTING)
|
||||
${HDF5_TOOLS_SRC_DIR}/testfiles/tall-1.ddl
|
||||
${HDF5_TOOLS_SRC_DIR}/testfiles/tall-2.ddl
|
||||
${HDF5_TOOLS_SRC_DIR}/testfiles/tall-2A.ddl
|
||||
${HDF5_TOOLS_SRC_DIR}/testfiles/tall-2A0.ddl
|
||||
${HDF5_TOOLS_SRC_DIR}/testfiles/tall-2B.ddl
|
||||
${HDF5_TOOLS_SRC_DIR}/testfiles/tall-3.ddl
|
||||
${HDF5_TOOLS_SRC_DIR}/testfiles/tall-4s.ddl
|
||||
@ -305,6 +306,7 @@ IF (BUILD_TESTING)
|
||||
${PROJECT_SOURCE_DIR}/errfiles/filter_fail.err
|
||||
${PROJECT_SOURCE_DIR}/errfiles/tall-1.err
|
||||
${PROJECT_SOURCE_DIR}/errfiles/tall-2A.err
|
||||
${PROJECT_SOURCE_DIR}/errfiles/tall-2A0.err
|
||||
${PROJECT_SOURCE_DIR}/errfiles/tall-2B.err
|
||||
${PROJECT_SOURCE_DIR}/errfiles/tarray1_big.err
|
||||
${PROJECT_SOURCE_DIR}/errfiles/tattrregR.err
|
||||
@ -1072,6 +1074,8 @@ IF (BUILD_TESTING)
|
||||
tall-2.out.err
|
||||
tall-2A.out
|
||||
tall-2A.out.err
|
||||
tall-2A0.out
|
||||
tall-2A0.out.err
|
||||
tall-2B.out
|
||||
tall-2B.out.err
|
||||
tall-3.out
|
||||
@ -1506,6 +1510,9 @@ IF (BUILD_TESTING)
|
||||
# test '-A' to suppress data but print attr's
|
||||
ADD_H5ERR_MASK_TEST (tall-2A 0 --enable-error-stack -A tall.h5)
|
||||
|
||||
# test '-A' to suppress attr's but print data
|
||||
ADD_H5ERR_MASK_TEST (tall-2A0 0 --enable-error-stack -A 0 tall.h5)
|
||||
|
||||
# test '-r' to print attributes in ASCII instead of decimal
|
||||
ADD_H5ERR_MASK_TEST (tall-2B 0 --enable-error-stack -A -r tall.h5)
|
||||
|
||||
|
25
tools/h5dump/errfiles/tall-2A0.err
Normal file
25
tools/h5dump/errfiles/tall-2A0.err
Normal file
@ -0,0 +1,25 @@
|
||||
HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs):
|
||||
#000: (file name) line (number) in H5Oopen(): unable to open object
|
||||
major: Symbol table
|
||||
minor: Can't open object
|
||||
#001: (file name) line (number) in H5O_open_name(): object not found
|
||||
major: Symbol table
|
||||
minor: Object not found
|
||||
#002: (file name) line (number) in H5G_loc_find(): can't find object
|
||||
major: Symbol table
|
||||
minor: Object not found
|
||||
#003: (file name) line (number) in H5G_traverse(): internal path traversal failed
|
||||
major: Symbol table
|
||||
minor: Object not found
|
||||
#004: (file name) line (number) in H5G_traverse_real(): special link traversal failed
|
||||
major: Links
|
||||
minor: Link traversal failure
|
||||
#005: (file name) line (number) in H5G__traverse_special(): user-defined link traversal failed
|
||||
major: Links
|
||||
minor: Link traversal failure
|
||||
#006: (file name) line (number) in H5G_traverse_ud(): traversal callback returned invalid ID
|
||||
major: Symbol table
|
||||
minor: Unable to find atom information (already closed?)
|
||||
#007: (file name) line (number) in H5L_extern_traverse(): unable to open external file, external link file name = 'somefile', temp_file_name = 'somefile'
|
||||
major: Links
|
||||
minor: Unable to open file
|
@ -71,7 +71,7 @@ struct handler_t {
|
||||
*/
|
||||
/* The following initialization makes use of C language cancatenating */
|
||||
/* "xxx" "yyy" into "xxxyyy". */
|
||||
static const char *s_opts = "hn*peyBHirVa:c:d:f:g:k:l:t:w:xD:uX:o*b*F:s:S:Aq:z:m:RECM:O*";
|
||||
static const char *s_opts = "hn*peyBHirVa:c:d:f:g:k:l:t:w:xD:uX:o*b*F:s:S:A*q:z:m:RECM:O*";
|
||||
static struct long_options l_opts[] = {
|
||||
{ "help", no_arg, 'h' },
|
||||
{ "hel", no_arg, 'h' },
|
||||
@ -175,7 +175,7 @@ static struct long_options l_opts[] = {
|
||||
{ "xml-n", require_arg, 'X' },
|
||||
{ "xml", no_arg, 'x' },
|
||||
{ "xm", no_arg, 'x' },
|
||||
{ "onlyattr", no_arg, 'A' },
|
||||
{ "onlyattr", optional_arg, 'A' },
|
||||
{ "escape", no_arg, 'e' },
|
||||
{ "noindex", no_arg, 'y' },
|
||||
{ "binary", optional_arg, 'b' },
|
||||
@ -1093,9 +1093,14 @@ parse_start:
|
||||
last_was_dset = FALSE;
|
||||
break;
|
||||
case 'A':
|
||||
display_data = FALSE;
|
||||
display_attr_data = TRUE;
|
||||
last_was_dset = FALSE;
|
||||
if ( opt_arg != NULL) {
|
||||
if(0 == HDatoi(opt_arg)) include_attrs = FALSE;
|
||||
}
|
||||
else {
|
||||
display_data = FALSE;
|
||||
display_attr_data = TRUE;
|
||||
last_was_dset = FALSE;
|
||||
}
|
||||
break;
|
||||
case 'i':
|
||||
display_oid = TRUE;
|
||||
|
@ -76,6 +76,7 @@ int display_region = FALSE; /*print region reference data */
|
||||
int enable_error_stack= FALSE; /* re-enable error stack */
|
||||
int disable_compact_subset= FALSE; /* disable compact form of subset notation */
|
||||
int display_packed_bits = FALSE; /*print 1-8 byte numbers as packed bits*/
|
||||
int include_attrs = TRUE; /* Display attributes */
|
||||
|
||||
/* sort parameters */
|
||||
H5_index_t sort_by = H5_INDEX_NAME; /*sort_by [creation_order | name] */
|
||||
|
@ -556,19 +556,20 @@ attr_iteration(hid_t gid, unsigned attr_crt_order_flags)
|
||||
{
|
||||
/* attribute iteration: if there is a request to do H5_INDEX_CRT_ORDER and tracking order is set
|
||||
in the group for attributes, then, sort by creation order, otherwise by name */
|
||||
|
||||
if((sort_by == H5_INDEX_CRT_ORDER) && (attr_crt_order_flags & H5P_CRT_ORDER_TRACKED)) {
|
||||
if(H5Aiterate2(gid, sort_by, sort_order, NULL, dump_attr_cb, NULL) < 0) {
|
||||
error_msg("error getting attribute information\n");
|
||||
h5tools_setstatus(EXIT_FAILURE);
|
||||
if(include_attrs) {
|
||||
if((sort_by == H5_INDEX_CRT_ORDER) && (attr_crt_order_flags & H5P_CRT_ORDER_TRACKED)) {
|
||||
if(H5Aiterate2(gid, sort_by, sort_order, NULL, dump_attr_cb, NULL) < 0) {
|
||||
error_msg("error getting attribute information\n");
|
||||
h5tools_setstatus(EXIT_FAILURE);
|
||||
} /* end if */
|
||||
} /* end if */
|
||||
} /* end if */
|
||||
else {
|
||||
if(H5Aiterate2(gid, H5_INDEX_NAME, sort_order, NULL, dump_attr_cb, NULL) < 0) {
|
||||
error_msg("error getting attribute information\n");
|
||||
h5tools_setstatus(EXIT_FAILURE);
|
||||
} /* end if */
|
||||
} /* end else */
|
||||
else {
|
||||
if(H5Aiterate2(gid, H5_INDEX_NAME, sort_order, NULL, dump_attr_cb, NULL) < 0) {
|
||||
error_msg("error getting attribute information\n");
|
||||
h5tools_setstatus(EXIT_FAILURE);
|
||||
} /* end if */
|
||||
} /* end else */
|
||||
}
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
|
@ -76,6 +76,7 @@ extern int display_region; /*print region reference data */
|
||||
extern int enable_error_stack; /* re-enable error stack */
|
||||
extern int disable_compact_subset; /* disable compact form of subset notation */
|
||||
extern int display_packed_bits; /*print 1-8 byte numbers as packed bits*/
|
||||
extern int include_attrs; /* Display attributes */
|
||||
|
||||
/* sort parameters */
|
||||
extern H5_index_t sort_by; /*sort_by [creation_order | name] */
|
||||
|
@ -175,6 +175,7 @@ $SRC_H5DUMP_TESTFILES/packedbits.ddl
|
||||
$SRC_H5DUMP_TESTFILES/tall-1.ddl
|
||||
$SRC_H5DUMP_TESTFILES/tall-2.ddl
|
||||
$SRC_H5DUMP_TESTFILES/tall-2A.ddl
|
||||
$SRC_H5DUMP_TESTFILES/tall-2A0.ddl
|
||||
$SRC_H5DUMP_TESTFILES/tall-2B.ddl
|
||||
$SRC_H5DUMP_TESTFILES/tall-3.ddl
|
||||
$SRC_H5DUMP_TESTFILES/tall-4s.ddl
|
||||
@ -335,6 +336,7 @@ LIST_ERROR_TEST_FILES="
|
||||
${SRC_H5DUMP_ERRORFILES}/filter_fail.err
|
||||
${SRC_H5DUMP_ERRORFILES}/tall-1.err
|
||||
${SRC_H5DUMP_ERRORFILES}/tall-2A.err
|
||||
${SRC_H5DUMP_ERRORFILES}/tall-2A0.err
|
||||
${SRC_H5DUMP_ERRORFILES}/tall-2B.err
|
||||
${SRC_H5DUMP_ERRORFILES}/tarray1_big.err
|
||||
${SRC_H5DUMP_ERRORFILES}/tattr-3.err
|
||||
@ -1005,6 +1007,9 @@ TOOLTEST tlarge_objname.ddl --enable-error-stack -w157 tlarge_objname.h5
|
||||
# test '-A' to suppress data but print attr's
|
||||
TOOLTEST4 tall-2A.ddl --enable-error-stack -A tall.h5
|
||||
|
||||
# test '-A' to suppress attr's but print data
|
||||
TOOLTEST4 tall-2A0.ddl --enable-error-stack -A 0 tall.h5
|
||||
|
||||
# test '-r' to print attributes in ASCII instead of decimal
|
||||
TOOLTEST4 tall-2B.ddl --enable-error-stack -A -r tall.h5
|
||||
|
||||
|
64
tools/testfiles/tall-2A0.ddl
Normal file
64
tools/testfiles/tall-2A0.ddl
Normal file
@ -0,0 +1,64 @@
|
||||
HDF5 "tall.h5" {
|
||||
GROUP "/" {
|
||||
GROUP "g1" {
|
||||
GROUP "g1.1" {
|
||||
DATASET "dset1.1.1" {
|
||||
DATATYPE H5T_STD_I32BE
|
||||
DATASPACE SIMPLE { ( 10, 10 ) / ( 10, 10 ) }
|
||||
DATA {
|
||||
(0,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
(1,0): 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
|
||||
(2,0): 0, 2, 4, 6, 8, 10, 12, 14, 16, 18,
|
||||
(3,0): 0, 3, 6, 9, 12, 15, 18, 21, 24, 27,
|
||||
(4,0): 0, 4, 8, 12, 16, 20, 24, 28, 32, 36,
|
||||
(5,0): 0, 5, 10, 15, 20, 25, 30, 35, 40, 45,
|
||||
(6,0): 0, 6, 12, 18, 24, 30, 36, 42, 48, 54,
|
||||
(7,0): 0, 7, 14, 21, 28, 35, 42, 49, 56, 63,
|
||||
(8,0): 0, 8, 16, 24, 32, 40, 48, 56, 64, 72,
|
||||
(9,0): 0, 9, 18, 27, 36, 45, 54, 63, 72, 81
|
||||
}
|
||||
}
|
||||
DATASET "dset1.1.2" {
|
||||
DATATYPE H5T_STD_I32BE
|
||||
DATASPACE SIMPLE { ( 20 ) / ( 20 ) }
|
||||
DATA {
|
||||
(0): 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
|
||||
(17): 17, 18, 19
|
||||
}
|
||||
}
|
||||
}
|
||||
GROUP "g1.2" {
|
||||
EXTERNAL_LINK "extlink" {
|
||||
TARGETFILE "somefile"
|
||||
TARGETPATH "somepath"
|
||||
}
|
||||
GROUP "g1.2.1" {
|
||||
SOFTLINK "slink" {
|
||||
LINKTARGET "somevalue"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
GROUP "g2" {
|
||||
DATASET "dset2.1" {
|
||||
DATATYPE H5T_IEEE_F32BE
|
||||
DATASPACE SIMPLE { ( 10 ) / ( 10 ) }
|
||||
DATA {
|
||||
(0): 1, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9
|
||||
}
|
||||
}
|
||||
DATASET "dset2.2" {
|
||||
DATATYPE H5T_IEEE_F32BE
|
||||
DATASPACE SIMPLE { ( 3, 5 ) / ( 3, 5 ) }
|
||||
DATA {
|
||||
(0,0): 0, 0.1, 0.2, 0.3, 0.4,
|
||||
(1,0): 0, 0.2, 0.4, 0.6, 0.8,
|
||||
(2,0): 0, 0.3, 0.6, 0.9, 1.2
|
||||
}
|
||||
}
|
||||
USERDEFINED_LINK "udlink" {
|
||||
LINKCLASS 187
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user