summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAllen Byrne <byrn@hdfgroup.org>2012-07-12 20:30:30 (GMT)
committerAllen Byrne <byrn@hdfgroup.org>2012-07-12 20:30:30 (GMT)
commit210d04b05f1ea3a172acf531519a36ee39c982b3 (patch)
tree62bb19366bb46b2c417130d10a6e91d1b8b735ae
parent1942f47bcfa0739e97efba02197136e1ecbb4a29 (diff)
downloadhdf5-210d04b05f1ea3a172acf531519a36ee39c982b3.zip
hdf5-210d04b05f1ea3a172acf531519a36ee39c982b3.tar.gz
hdf5-210d04b05f1ea3a172acf531519a36ee39c982b3.tar.bz2
[svn-r22567] HDFFV-7784: add attributes to the list of file contents option for h5dump. This is accomplished by adding an optional value to the option (-n)
Created test and reference files. Tested: local linux with cmake
-rw-r--r--MANIFEST2
-rw-r--r--tools/h5dump/CMakeLists.txt14
-rw-r--r--tools/h5dump/h5dump.c8
-rw-r--r--tools/h5dump/h5dump_ddl.c129
-rw-r--r--tools/h5dump/testh5dump.sh.in4
-rw-r--r--tools/lib/h5trav.c93
-rw-r--r--tools/lib/h5trav.h1
-rw-r--r--tools/testfiles/h5dump-help.txt1
-rw-r--r--tools/testfiles/tattrcontents1.ddl21
-rw-r--r--tools/testfiles/tattrcontents2.ddl21
-rw-r--r--tools/testfiles/tnofilename-with-packed-bits.ddl1
-rw-r--r--tools/testfiles/tpbitsIncomplete.ddl1
-rw-r--r--tools/testfiles/tpbitsLengthExceeded.ddl1
-rw-r--r--tools/testfiles/tpbitsLengthPositive.ddl1
-rw-r--r--tools/testfiles/tpbitsMaxExceeded.ddl1
-rw-r--r--tools/testfiles/tpbitsOffsetExceeded.ddl1
-rw-r--r--tools/testfiles/tpbitsOffsetNegative.ddl1
17 files changed, 224 insertions, 77 deletions
diff --git a/MANIFEST b/MANIFEST
index 9b2c36e..ef76775 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -1472,6 +1472,8 @@
./tools/testfiles/tattr2.h5
./tools/testfiles/tall-2A.ddl
./tools/testfiles/tall-2B.ddl
+./tools/testfiles/tattrcontents1.ddl
+./tools/testfiles/tattrcontents2.ddl
./tools/testfiles/tcontents.ddl
./tools/testfiles/tordercontents1.ddl
./tools/testfiles/tordercontents2.ddl
diff --git a/tools/h5dump/CMakeLists.txt b/tools/h5dump/CMakeLists.txt
index b8a2d4c..88d28c4 100644
--- a/tools/h5dump/CMakeLists.txt
+++ b/tools/h5dump/CMakeLists.txt
@@ -69,6 +69,8 @@ IF (BUILD_TESTING)
${HDF5_TOOLS_SRC_DIR}/testfiles/tattr-2.ddl
${HDF5_TOOLS_SRC_DIR}/testfiles/tattr-3.ddl
${HDF5_TOOLS_SRC_DIR}/testfiles/tattr-4_be.ddl
+ ${HDF5_TOOLS_SRC_DIR}/testfiles/tattrcontents1.ddl
+ ${HDF5_TOOLS_SRC_DIR}/testfiles/tattrcontents2.ddl
${HDF5_TOOLS_SRC_DIR}/testfiles/tattrintsize.ddl
${HDF5_TOOLS_SRC_DIR}/testfiles/tattrreg.ddl
${HDF5_TOOLS_SRC_DIR}/testfiles/tattrregR.ddl
@@ -854,6 +856,10 @@ IF (BUILD_TESTING)
tattr-3.out.err
tattr-4_be.out
tattr-4_be.out.err
+ tattrcontents1.out
+ tattrcontents1.out.err
+ tattrcontents2.out
+ tattrcontents2.out.err
tattrintsize.out
tattrintsize.out.err
tattrreg.out
@@ -1010,6 +1016,10 @@ IF (BUILD_TESTING)
tordercontents1.out.err
tordercontents2.out
tordercontents2.out.err
+ torderlinks1.out
+ torderlinks1.out.err
+ torderlinks2.out
+ torderlinks2.out.err
tperror.out
tperror.out.err
treference.out
@@ -1060,6 +1070,8 @@ IF (BUILD_TESTING)
tvlstr.out.err
tvms.out
tvms.out.err
+ twidedisplay.out
+ twidedisplay.out.err
)
SET_TESTS_PROPERTIES (H5DUMP-clearall-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles")
IF (NOT "${last_test}" STREQUAL "")
@@ -1218,6 +1230,8 @@ IF (BUILD_TESTING)
ADD_H5_TEST (tcontents 0 --enable-error-stack -n tfcontents1.h5)
ADD_H5_TEST (tordercontents1 0 --enable-error-stack -n --sort_by=name --sort_order=ascending tfcontents1.h5)
ADD_H5_TEST (tordercontents2 0 --enable-error-stack -n --sort_by=name --sort_order=descending tfcontents1.h5)
+ ADD_H5_TEST (tattrcontents1 0 --enable-error-stack -n 1 --sort_order=ascending tall.h5)
+ ADD_H5_TEST (tattrcontents2 0 --enable-error-stack -n 1 --sort_order=descending tall.h5)
# tests for storage layout
# compact
diff --git a/tools/h5dump/h5dump.c b/tools/h5dump/h5dump.c
index cd52743..15d862e 100644
--- a/tools/h5dump/h5dump.c
+++ b/tools/h5dump/h5dump.c
@@ -71,11 +71,11 @@ struct handler_t {
*/
/* The following initialization makes use of C language cancatenating */
/* "xxx" "yyy" into "xxxyyy". */
-static const char *s_opts = "hnpeyBHirVa:c:d:f:g:k:l:t:w:xD:uX:o:b*F:s:S:Aq:z:m:RECM:";
+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:";
static struct long_options l_opts[] = {
{ "help", no_arg, 'h' },
{ "hel", no_arg, 'h' },
- { "contents", no_arg, 'n' },
+ { "contents", optional_arg, 'n' },
{ "properties", no_arg, 'p' },
{ "boot-block", no_arg, 'B' },
{ "boot-bloc", no_arg, 'B' },
@@ -235,6 +235,7 @@ usage(const char *prog)
HDfprintf(rawoutstream, " OPTIONS\n");
HDfprintf(rawoutstream, " -h, --help Print a usage message and exit\n");
HDfprintf(rawoutstream, " -n, --contents Print a list of the file contents and exit\n");
+ HDfprintf(rawoutstream, " Optional value 1 also prints attributes.\n");
HDfprintf(rawoutstream, " -B, --superblock Print the content of the super block\n");
HDfprintf(rawoutstream, " -H, --header Print the header only; no data is displayed\n");
HDfprintf(rawoutstream, " -A, --onlyattr Print the header and value of attributes\n");
@@ -999,6 +1000,9 @@ parse_start:
case 'n':
display_fi = TRUE;
last_was_dset = FALSE;
+ if ( opt_arg != NULL) {
+ h5trav_set_verbose(HDatoi(opt_arg));
+ }
break;
case 'p':
display_dcpl = TRUE;
diff --git a/tools/h5dump/h5dump_ddl.c b/tools/h5dump/h5dump_ddl.c
index 22d2a2b..6f5fd3f 100644
--- a/tools/h5dump/h5dump_ddl.c
+++ b/tools/h5dump/h5dump_ddl.c
@@ -543,6 +543,56 @@ done:
}
/*-------------------------------------------------------------------------
+ * Function: attr_iteration
+ *
+ * Purpose: Iterate and display attributes within the specified group
+ *
+ * Return: void
+ *
+ *-------------------------------------------------------------------------
+ */
+void
+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);
+ } /* 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 */
+}
+
+/*-------------------------------------------------------------------------
+ * Function: link_iteration
+ *
+ * Purpose: Iterate and display links within the specified group
+ *
+ * Return: void
+ *
+ *-------------------------------------------------------------------------
+ */
+void
+link_iteration(hid_t gid, unsigned crt_order_flags)
+{
+
+ /* if there is a request to do H5_INDEX_CRT_ORDER and tracking order is set
+ in the group, then, sort by creation order, otherwise by name */
+ if((sort_by == H5_INDEX_CRT_ORDER) && (crt_order_flags & H5P_CRT_ORDER_TRACKED))
+ H5Literate(gid, sort_by, sort_order, NULL, dump_all_cb, NULL);
+ else
+ H5Literate(gid, H5_INDEX_NAME, sort_order, NULL, dump_all_cb, NULL);
+}
+
+/*-------------------------------------------------------------------------
* Function: dump_named_datatype
*
* Purpose: Dump named datatype
@@ -659,21 +709,7 @@ dump_named_datatype(hid_t tid, const char *name)
/* print attributes */
dump_indent += COL;
- /* attribute iteration: if there is a request to do H5_INDEX_CRT_ORDER and tracking order is set
- in the datatype's create property list 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(tid, 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 */
- else {
- if(H5Aiterate2(tid, 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 */
+ attr_iteration(tid, attr_crt_order_flags);
dump_indent -= COL;
@@ -829,53 +865,13 @@ dump_group(hid_t gid, const char *name)
}
else {
found_obj->displayed = TRUE;
- /* 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);
- } /* 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 */
-
- /* if there is a request to do H5_INDEX_CRT_ORDER and tracking order is set
- in the group, then, sort by creation order, otherwise by name */
- if((sort_by == H5_INDEX_CRT_ORDER) && (crt_order_flags & H5P_CRT_ORDER_TRACKED))
- H5Literate(gid, sort_by, sort_order, NULL, dump_all_cb, NULL);
- else
- H5Literate(gid, H5_INDEX_NAME, sort_order, NULL, dump_all_cb, NULL);
+ attr_iteration(gid, attr_crt_order_flags);
+ link_iteration(gid, crt_order_flags);
}
}
else {
- /* 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);
- } /* 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 */
-
- /* if there is a request to do H5_INDEX_CRT_ORDER and tracking order is set
- in the group, then, sort by creation order, otherwise by name */
- if((sort_by == H5_INDEX_CRT_ORDER) && (crt_order_flags & H5P_CRT_ORDER_TRACKED))
- H5Literate(gid, sort_by, sort_order, NULL, dump_all_cb, NULL);
- else
- H5Literate(gid, H5_INDEX_NAME, sort_order, NULL, dump_all_cb, NULL);
+ attr_iteration(gid, attr_crt_order_flags);
+ link_iteration(gid, crt_order_flags);
}
dump_indent -= COL;
@@ -1050,20 +1046,7 @@ dump_dataset(hid_t did, const char *name, struct subset_t *sset)
H5Tclose(type);
if (!bin_output) {
- /* 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(did, 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 */
- else {
- if(H5Aiterate2(did, 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 */
+ attr_iteration(did, attr_crt_order_flags);
}
ctx.indent_level--;
dump_indent -= COL;
diff --git a/tools/h5dump/testh5dump.sh.in b/tools/h5dump/testh5dump.sh.in
index 612b9ab..8d2fb20 100644
--- a/tools/h5dump/testh5dump.sh.in
+++ b/tools/h5dump/testh5dump.sh.in
@@ -194,6 +194,8 @@ $SRC_H5DUMP_TESTFILES/tattr-1.ddl
$SRC_H5DUMP_TESTFILES/tattr-2.ddl
$SRC_H5DUMP_TESTFILES/tattr-3.ddl
$SRC_H5DUMP_TESTFILES/tattr-4_be.ddl
+$SRC_H5DUMP_TESTFILES/tattrcontents1.ddl
+$SRC_H5DUMP_TESTFILES/tattrcontents2.ddl
$SRC_H5DUMP_TESTFILES/tattrintsize.ddl
$SRC_H5DUMP_TESTFILES/tattrreg.ddl
$SRC_H5DUMP_TESTFILES/tattrregR.ddl
@@ -818,6 +820,8 @@ TOOLTEST4 tperror.ddl --enable-error-stack -p -d bogus tfcontents1.h5
TOOLTEST tcontents.ddl --enable-error-stack -n tfcontents1.h5
TOOLTEST tordercontents1.ddl --enable-error-stack -n --sort_by=name --sort_order=ascending tfcontents1.h5
TOOLTEST tordercontents2.ddl --enable-error-stack -n --sort_by=name --sort_order=descending tfcontents1.h5
+TOOLTEST tattrcontents1.ddl --enable-error-stack -n 1 --sort_order=ascending tall.h5
+TOOLTEST tattrcontents2.ddl --enable-error-stack -n 1 --sort_order=descending tall.h5
# tests for storage layout
# compact
diff --git a/tools/lib/h5trav.c b/tools/lib/h5trav.c
index 170e612..0215c46 100644
--- a/tools/lib/h5trav.c
+++ b/tools/lib/h5trav.c
@@ -48,6 +48,9 @@ typedef struct {
hid_t fid; /* File ID being traversed */
} trav_print_udata_t;
+/* format for hsize_t */
+#define HSIZE_T_FORMAT "%"H5_PRINTF_LL_WIDTH"u"
+
/*-------------------------------------------------------------------------
* local functions
*-------------------------------------------------------------------------
@@ -67,6 +70,7 @@ static void trav_table_addlink(trav_table_t *table,
static H5_index_t trav_index_by = H5_INDEX_NAME;
static H5_iter_order_t trav_index_order = H5_ITER_INC;
+static int trav_verbosity = 0;
/*-------------------------------------------------------------------------
* Function: h5trav_set_index
@@ -85,6 +89,21 @@ h5trav_set_index(H5_index_t print_index_by, H5_iter_order_t print_index_order)
}
/*-------------------------------------------------------------------------
+ * Function: h5trav_set_verbose
+ *
+ * Purpose: Set verbosity of file contents 1=>attributes
+ *
+ * Return: none
+ *
+ *-------------------------------------------------------------------------
+ */
+void
+h5trav_set_verbose(int print_verbose)
+{
+ trav_verbosity = print_verbose;
+}
+
+/*-------------------------------------------------------------------------
* "h5trav info" public functions. used in h5diff
*-------------------------------------------------------------------------
*/
@@ -845,6 +864,72 @@ void trav_table_free( trav_table_t *table )
HDfree(table);
}
+static herr_t
+trav_attr(hid_t obj, const char *attr_name, const H5A_info_t UNUSED *ainfo, void *op_data)
+{
+ char *buf;
+
+ buf = (char*)op_data;
+ if((strlen(buf)==1) && (*buf=='/'))
+ printf(" %-10s %s%s", "attribute", buf, attr_name);
+ else
+ printf(" %-10s %s/%s", "attribute", buf, attr_name);
+
+#ifdef H5TRAV_PRINT_SPACE
+ if(trav_verbosity < 2) {
+#endif
+ printf("\n");
+#ifdef H5TRAV_PRINT_SPACE
+ }
+ else {
+ hid_t attr = -1;
+ hid_t space = -1;
+ hsize_t size[H5S_MAX_RANK];
+ int ndims;
+ int i;
+ H5S_class_t space_type;
+
+ if((attr = H5Aopen(obj, attr_name, H5P_DEFAULT))) {
+ space = H5Aget_space(attr);
+
+ /* Data space */
+ ndims = H5Sget_simple_extent_dims(space, size, NULL);
+ space_type = H5Sget_simple_extent_type(space);
+ switch(space_type) {
+ case H5S_SCALAR:
+ /* scalar dataspace */
+ printf(" scalar\n");
+ break;
+
+ case H5S_SIMPLE:
+ /* simple dataspace */
+ printf(" {");
+ for (i=0; i<ndims; i++) {
+ printf("%s" HSIZE_T_FORMAT, i?", ":"", size[i]);
+ }
+ printf("}\n");
+ break;
+
+ case H5S_NULL:
+ /* null dataspace */
+ printf(" null\n");
+ break;
+
+ default:
+ /* Unknown dataspace type */
+ printf(" unknown\n");
+ break;
+ } /* end switch */
+
+ H5Sclose(space);
+ H5Aclose(attr);
+ }
+ }
+#endif
+
+ return(0);
+}
+
/*-------------------------------------------------------------------------
* Function: trav_print_visit_obj
@@ -861,8 +946,9 @@ void trav_table_free( trav_table_t *table )
*/
static int
trav_print_visit_obj(const char *path, const H5O_info_t *oinfo,
- const char *already_visited, void UNUSED *udata)
+ const char *already_visited, void *udata)
{
+ trav_print_udata_t *print_udata = (trav_print_udata_t *)udata;
/* Print the name of the object */
/* (no new-line, so that objects that we've encountered before can print
* the name of the original object)
@@ -886,9 +972,12 @@ trav_print_visit_obj(const char *path, const H5O_info_t *oinfo,
} /* end switch */
/* Check if we've already seen this object */
- if(NULL == already_visited)
+ if(NULL == already_visited) {
/* Finish printing line about object */
printf("\n");
+ if(trav_verbosity > 0)
+ H5Aiterate_by_name(print_udata->fid, path, trav_index_by, trav_index_order, NULL, trav_attr, path, H5P_DEFAULT);
+ }
else
/* Print the link's original name */
printf(" -> %s\n", already_visited);
diff --git a/tools/lib/h5trav.h b/tools/lib/h5trav.h
index ce44bc9..c416cf8 100644
--- a/tools/lib/h5trav.h
+++ b/tools/lib/h5trav.h
@@ -160,6 +160,7 @@ H5TOOLS_DLL int h5trav_getindext(const char *obj, const trav_table_t *travt);
*-------------------------------------------------------------------------
*/
H5TOOLS_DLL int h5trav_print(hid_t fid);
+H5TOOLS_DLL void h5trav_set_verbose(int print_verbose);
#ifdef __cplusplus
}
diff --git a/tools/testfiles/h5dump-help.txt b/tools/testfiles/h5dump-help.txt
index d8551ca..43808e7 100644
--- a/tools/testfiles/h5dump-help.txt
+++ b/tools/testfiles/h5dump-help.txt
@@ -2,6 +2,7 @@ usage: h5dump [OPTIONS] files
OPTIONS
-h, --help Print a usage message and exit
-n, --contents Print a list of the file contents and exit
+ Optional value 1 also prints attributes.
-B, --superblock Print the content of the super block
-H, --header Print the header only; no data is displayed
-A, --onlyattr Print the header and value of attributes
diff --git a/tools/testfiles/tattrcontents1.ddl b/tools/testfiles/tattrcontents1.ddl
new file mode 100644
index 0000000..e118d89
--- /dev/null
+++ b/tools/testfiles/tattrcontents1.ddl
@@ -0,0 +1,21 @@
+HDF5 "tall.h5" {
+FILE_CONTENTS {
+ group /
+ attribute /attr1
+ attribute /attr2
+ group /g1
+ group /g1/g1.1
+ dataset /g1/g1.1/dset1.1.1
+ attribute /g1/g1.1/dset1.1.1/attr1
+ attribute /g1/g1.1/dset1.1.1/attr2
+ dataset /g1/g1.1/dset1.1.2
+ group /g1/g1.2
+ ext link /g1/g1.2/extlink -> somefile somepath
+ group /g1/g1.2/g1.2.1
+ link /g1/g1.2/g1.2.1/slink -> somevalue
+ group /g2
+ dataset /g2/dset2.1
+ dataset /g2/dset2.2
+ unknown type of UD link /g2/udlink -> ???
+ }
+}
diff --git a/tools/testfiles/tattrcontents2.ddl b/tools/testfiles/tattrcontents2.ddl
new file mode 100644
index 0000000..4076385
--- /dev/null
+++ b/tools/testfiles/tattrcontents2.ddl
@@ -0,0 +1,21 @@
+HDF5 "tall.h5" {
+FILE_CONTENTS {
+ group /
+ attribute /attr2
+ attribute /attr1
+ group /g2
+ unknown type of UD link /g2/udlink -> ???
+ dataset /g2/dset2.2
+ dataset /g2/dset2.1
+ group /g1
+ group /g1/g1.2
+ group /g1/g1.2/g1.2.1
+ link /g1/g1.2/g1.2.1/slink -> somevalue
+ ext link /g1/g1.2/extlink -> somefile somepath
+ group /g1/g1.1
+ dataset /g1/g1.1/dset1.1.2
+ dataset /g1/g1.1/dset1.1.1
+ attribute /g1/g1.1/dset1.1.1/attr2
+ attribute /g1/g1.1/dset1.1.1/attr1
+ }
+}
diff --git a/tools/testfiles/tnofilename-with-packed-bits.ddl b/tools/testfiles/tnofilename-with-packed-bits.ddl
index 050a3a3..f74483f 100644
--- a/tools/testfiles/tnofilename-with-packed-bits.ddl
+++ b/tools/testfiles/tnofilename-with-packed-bits.ddl
@@ -2,6 +2,7 @@ usage: h5dump [OPTIONS] files
OPTIONS
-h, --help Print a usage message and exit
-n, --contents Print a list of the file contents and exit
+ Optional value 1 also prints attributes.
-B, --superblock Print the content of the super block
-H, --header Print the header only; no data is displayed
-A, --onlyattr Print the header and value of attributes
diff --git a/tools/testfiles/tpbitsIncomplete.ddl b/tools/testfiles/tpbitsIncomplete.ddl
index 5608d2b..31a386d 100644
--- a/tools/testfiles/tpbitsIncomplete.ddl
+++ b/tools/testfiles/tpbitsIncomplete.ddl
@@ -2,6 +2,7 @@ usage: h5dump [OPTIONS] files
OPTIONS
-h, --help Print a usage message and exit
-n, --contents Print a list of the file contents and exit
+ Optional value 1 also prints attributes.
-B, --superblock Print the content of the super block
-H, --header Print the header only; no data is displayed
-A, --onlyattr Print the header and value of attributes
diff --git a/tools/testfiles/tpbitsLengthExceeded.ddl b/tools/testfiles/tpbitsLengthExceeded.ddl
index f89b65f..b2ab900 100644
--- a/tools/testfiles/tpbitsLengthExceeded.ddl
+++ b/tools/testfiles/tpbitsLengthExceeded.ddl
@@ -2,6 +2,7 @@ usage: h5dump [OPTIONS] files
OPTIONS
-h, --help Print a usage message and exit
-n, --contents Print a list of the file contents and exit
+ Optional value 1 also prints attributes.
-B, --superblock Print the content of the super block
-H, --header Print the header only; no data is displayed
-A, --onlyattr Print the header and value of attributes
diff --git a/tools/testfiles/tpbitsLengthPositive.ddl b/tools/testfiles/tpbitsLengthPositive.ddl
index ba32aa6..2140ab7 100644
--- a/tools/testfiles/tpbitsLengthPositive.ddl
+++ b/tools/testfiles/tpbitsLengthPositive.ddl
@@ -2,6 +2,7 @@ usage: h5dump [OPTIONS] files
OPTIONS
-h, --help Print a usage message and exit
-n, --contents Print a list of the file contents and exit
+ Optional value 1 also prints attributes.
-B, --superblock Print the content of the super block
-H, --header Print the header only; no data is displayed
-A, --onlyattr Print the header and value of attributes
diff --git a/tools/testfiles/tpbitsMaxExceeded.ddl b/tools/testfiles/tpbitsMaxExceeded.ddl
index 16f953d..598b2cd 100644
--- a/tools/testfiles/tpbitsMaxExceeded.ddl
+++ b/tools/testfiles/tpbitsMaxExceeded.ddl
@@ -2,6 +2,7 @@ usage: h5dump [OPTIONS] files
OPTIONS
-h, --help Print a usage message and exit
-n, --contents Print a list of the file contents and exit
+ Optional value 1 also prints attributes.
-B, --superblock Print the content of the super block
-H, --header Print the header only; no data is displayed
-A, --onlyattr Print the header and value of attributes
diff --git a/tools/testfiles/tpbitsOffsetExceeded.ddl b/tools/testfiles/tpbitsOffsetExceeded.ddl
index 446fe2d..a8192e9 100644
--- a/tools/testfiles/tpbitsOffsetExceeded.ddl
+++ b/tools/testfiles/tpbitsOffsetExceeded.ddl
@@ -2,6 +2,7 @@ usage: h5dump [OPTIONS] files
OPTIONS
-h, --help Print a usage message and exit
-n, --contents Print a list of the file contents and exit
+ Optional value 1 also prints attributes.
-B, --superblock Print the content of the super block
-H, --header Print the header only; no data is displayed
-A, --onlyattr Print the header and value of attributes
diff --git a/tools/testfiles/tpbitsOffsetNegative.ddl b/tools/testfiles/tpbitsOffsetNegative.ddl
index 747cf99..60e31ec 100644
--- a/tools/testfiles/tpbitsOffsetNegative.ddl
+++ b/tools/testfiles/tpbitsOffsetNegative.ddl
@@ -2,6 +2,7 @@ usage: h5dump [OPTIONS] files
OPTIONS
-h, --help Print a usage message and exit
-n, --contents Print a list of the file contents and exit
+ Optional value 1 also prints attributes.
-B, --superblock Print the content of the super block
-H, --header Print the header only; no data is displayed
-A, --onlyattr Print the header and value of attributes