From f8069fa8505f453afcd84f368dfc543ea7b8ee24 Mon Sep 17 00:00:00 2001
From: Allen Byrne <50328838+byrnHDF@users.noreply.github.com>
Date: Mon, 15 Jul 2024 09:43:20 -0500
Subject: [PATCH] Add tools usage text as doxygen for Tools UG (#4602)
---
doxygen/Doxyfile.in | 2 +
doxygen/dox/Tools.dox | 29 ++
doxygen/dox/UsersGuide.dox | 2 +
hl/tools/h5watch/h5watch.h | 62 ++++
release_docs/RELEASE.txt | 4 +
tools/src/h5copy/h5copy.h | 72 +++++
tools/src/h5diff/h5diff_main.h | 214 +++++++++++++
tools/src/h5dump/h5dump.h | 181 +++++++++++
tools/src/h5format_convert/h5format_convert.h | 58 ++++
tools/src/h5import/h5import.h | 288 ++++++++++++++++++
tools/src/h5jam/h5jam.h | 65 ++++
tools/src/h5ls/h5ls.h | 108 +++++++
tools/src/h5repack/h5repack.h | 225 ++++++++++++++
tools/src/h5stat/h5stat.h | 65 ++++
tools/src/misc/h5clear.h | 67 ++++
tools/src/misc/h5debug.h | 31 ++
tools/src/misc/h5delete.h | 30 ++
tools/src/misc/h5mkgrp.h | 53 ++++
tools/src/misc/h5repart.h | 47 +++
tools/test/h5copy/CMakeTests.cmake | 2 +-
20 files changed, 1604 insertions(+), 1 deletion(-)
create mode 100644 doxygen/dox/Tools.dox
create mode 100644 hl/tools/h5watch/h5watch.h
create mode 100644 tools/src/h5copy/h5copy.h
create mode 100644 tools/src/h5diff/h5diff_main.h
create mode 100644 tools/src/h5format_convert/h5format_convert.h
create mode 100644 tools/src/h5jam/h5jam.h
create mode 100644 tools/src/h5ls/h5ls.h
create mode 100644 tools/src/h5stat/h5stat.h
create mode 100644 tools/src/misc/h5clear.h
create mode 100644 tools/src/misc/h5debug.h
create mode 100644 tools/src/misc/h5delete.h
create mode 100644 tools/src/misc/h5mkgrp.h
create mode 100644 tools/src/misc/h5repart.h
diff --git a/doxygen/Doxyfile.in b/doxygen/Doxyfile.in
index 8d059bc873..1c3698148d 100644
--- a/doxygen/Doxyfile.in
+++ b/doxygen/Doxyfile.in
@@ -689,6 +689,8 @@ FILE_PATTERNS = H5*public.h H5*module.h H5*develop.h H5FD*.h \
*.F90 \
*.dox \
*.md \
+ h5copy.h h5diff_main.h h5dump.h h5format_convert.h h5import.h h5jam.h h5ls.h h5repack.h h5stat.h \
+ h5watch.h h5clear.h h5debug.h h5delete.h h5mkgrp.h h5repart.h \
H5Cpp.h H5AbstractDs.h H5AtomType.h H5Attribute.h H5CommonFG.h H5CompType.h \
H5DataSet.h H5DataSpace.h H5DataType.h H5OcreatProp.h H5DaccProp.h H5DcreatProp.h \
H5DxferProp.h H5EnumType.h H5Exception.h H5FaccProp.h H5FcreatProp.h H5File.h \
diff --git a/doxygen/dox/Tools.dox b/doxygen/dox/Tools.dox
new file mode 100644
index 0000000000..12d2ca1e20
--- /dev/null
+++ b/doxygen/dox/Tools.dox
@@ -0,0 +1,29 @@
+/** @page CommandTools Command Line Tools for HDF5 Files
+
+Navigate back: \ref index "Main"
+
+
+
+\section sec_cltools Command Line Tools for HDF5 Files
+There are several command line tools provided with HDF5.
+\li \ref sec_cltools_h5copy
+\li \ref sec_cltools_h5diff
+\li \ref sec_cltools_h5dump
+\li \ref sec_cltools_h5format_convert
+\li \ref sec_cltools_h5import
+\li \ref sec_cltools_h5jam
+\li \ref sec_cltools_h5ls
+\li \ref sec_cltools_h5repack
+\li \ref sec_cltools_h5stat
+\li \ref sec_cltools_h5clear
+\li \ref sec_cltools_h5debug
+\li \ref sec_cltools_h5delete
+\li \ref sec_cltools_h5mkgrp
+\li \ref sec_cltools_h5repart
+\li \ref sec_cltools_h5watch
+
+
+
+Navigate back: \ref index "Main"
+
+*/
diff --git a/doxygen/dox/UsersGuide.dox b/doxygen/dox/UsersGuide.dox
index 55a1ca134b..d036e75115 100644
--- a/doxygen/dox/UsersGuide.dox
+++ b/doxygen/dox/UsersGuide.dox
@@ -309,6 +309,8 @@
\ref sec_map
+\ref sec_cltools
+
\ref sec_addition
\page AR_UG Additional Resources
diff --git a/hl/tools/h5watch/h5watch.h b/hl/tools/h5watch/h5watch.h
new file mode 100644
index 0000000000..188707bba2
--- /dev/null
+++ b/hl/tools/h5watch/h5watch.h
@@ -0,0 +1,62 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Copyright by The HDF Group. *
+ * All rights reserved. *
+ * *
+ * This file is part of HDF5. The full HDF5 copyright notice, including *
+ * terms governing use, modification, and redistribution, is contained in *
+ * the COPYING file, which can be found at the root of the source code *
+ * distribution tree, or in https://www.hdfgroup.org/licenses. *
+ * If you do not have access to either file, you may request a copy from *
+ * help@hdfgroup.org. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+#ifndef H5WATCH_H
+#define H5WATCH_H
+
+/** \page H5TOOL_WH_UG The HDF5 h5watch Tool
+ *
+ * \section sec_cltools_h5watch h5watch
+ *
+ * \subsection subsec_cltools_h5watch_intro Introduction
+ * With h5watch, you can dump stats from an HDF5 file.
+ *
+ * \subsection subsec_cltools_h5watch_usage Usage
+ * h5watch [OPTIONS] [OBJECT]
+ *
+ * \subsection subsec_cltools_h5watch_error Error Report Option
+ * \li --enable-error-stack Prints messages from the HDF5 error stack as they occur.
+ * Optional value 2 also prints file open errors, --enable-error-stack=2.
+ *
+ * \subsection subsec_cltools_h5watch_options Options
+ * \li --help Print a usage message and exit
+ * \li --version Print the library version number and exit
+ * \li --label Label members of compound typed dataset.
+ * \li --simple Use a machine-readable output format.
+ * \li --dim Monitor changes in size of dataset dimensions only.
+ * \li --width=N Set the number of columns to N for output.
+ * A value of 0 sets the number of columns to the
+ * maximum (65535). The default width is 80 columns.
+ * \li --polling=N Set the polling interval to N (in seconds) when the
+ * dataset will be checked for appended data.
+ * The default polling interval is 1.
+ * \li --fields=\
+ * Display data for the fields specified in \
+ * for a compound data type.
+ * \ can be specified as follows:
+ * - 1) A comma-separated list of field names in a
+ * compound data type. "," is the separator for field names while "." is the separator
+ * for a nested field.
+ * - 2) A single field name in a compound data type.
+ * This option can be used multiple times.
+ * Note that backslash is the escape character to avoid
+ * characters in field names that conflict with the tool's separators.
+ *
+ * \subsection subsec_cltools_h5watch_objs Object
+ * OBJECT is specified as [\/\/\]
+ * \li \ Name of the HDF5 file. It may be preceded by path
+ * separated by slashes to the specified HDF5 file.
+ * \li \ Path separated by slashes to the specified dataset
+ * \li \ Name of the dataset
+ *
+ */
+
+#endif /* H5WATCH_H */
diff --git a/release_docs/RELEASE.txt b/release_docs/RELEASE.txt
index 8b43f5ecdd..29bd8a48f4 100644
--- a/release_docs/RELEASE.txt
+++ b/release_docs/RELEASE.txt
@@ -765,6 +765,10 @@ New Features
Tools:
------
+ - Add doxygen files for the tools
+
+ Implement the tools usage text as pages in doxygen.
+
- Add option to adjust the page buffer size in tools
The page buffer cache size for a file can now be adjusted using the
diff --git a/tools/src/h5copy/h5copy.h b/tools/src/h5copy/h5copy.h
new file mode 100644
index 0000000000..b0a684f4ab
--- /dev/null
+++ b/tools/src/h5copy/h5copy.h
@@ -0,0 +1,72 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Copyright by The HDF Group. *
+ * All rights reserved. *
+ * *
+ * This file is part of HDF5. The full HDF5 copyright notice, including *
+ * terms governing use, modification, and redistribution, is contained in *
+ * the COPYING file, which can be found at the root of the source code *
+ * distribution tree, or in https://www.hdfgroup.org/licenses. *
+ * If you do not have access to either file, you may request a copy from *
+ * help@hdfgroup.org. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+#ifndef H5COPY_H
+#define H5COPY_H
+
+/** \page H5TOOL_CP_UG The HDF5 h5copy Tool
+ *
+ * \section sec_cltools_h5copy h5copy
+ *
+ * \subsection subsec_cltools_h5copy_intro Introduction
+ * With h5copy, you can copy objects from an HDF5 file to another file.
+ *
+ * \subsection subsec_cltools_h5copy_usage Usage
+ * h5copy [OPTIONS] [OBJECTS...]
+ *
+ * \subsection subsec_cltools_h5copy_objs Objects
+ * \li --input input file name
+ * \li --output output file name
+ * \li --source source object name
+ * \li --destination destination object name
+ *
+ * \subsection subsec_cltools_h5copy_error Error Report Option
+ * \li --enable-error-stack Prints messages from the HDF5 error stack as they occur.
+ Optional value 2 also prints file open errors, --enable-error-stack=2.
+ *
+ * \subsection subsec_cltools_h5copy_options Options
+ * \li --help Print a usage message and exit
+ * \li --parents No error if existing, make parent groups as needed
+ * \li --verbose Print information about OBJECTS and OPTIONS
+ * \li --version Print the library version number and exit
+ * \li --flag Flag type
+ *
+ * \subsubsection subsubsec_cltools_h5copy_options_args Flag Type Options
+ * Flag type is one of the following strings:
+ * \li shallow Copy only immediate members for groups
+ * \li soft Expand soft links into new objects
+ * \li ext Expand external links into new objects
+ * \li ref Copy references and any referenced objects, i.e., objects
+ * that the references point to.
+ * Referenced objects are copied in addition to the objects
+ * specified on the command line and reference datasets are
+ * populated with correct reference values. Copies of referenced
+ * datasets outside the copy range specified on the command line
+ * will normally have a different name from the original.
+ * (Default: Without this option, reference value(s) in any
+ * reference datasets are set to NULL and referenced objects are
+ * not copied unless they are otherwise within the copy range
+ * specified on the command line.)
+ * \li noattr Copy object without copying attributes
+ * \li allflags Switches all flags from the default to the non-default setting
+ *
+ * These flag types correspond to the following API symbols
+ * \li #H5O_COPY_SHALLOW_HIERARCHY_FLAG
+ * \li #H5O_COPY_EXPAND_SOFT_LINK_FLAG
+ * \li #H5O_COPY_EXPAND_EXT_LINK_FLAG
+ * \li #H5O_COPY_EXPAND_REFERENCE_FLAG
+ * \li #H5O_COPY_WITHOUT_ATTR_FLAG
+ * \li #H5O_COPY_ALL
+ *
+ */
+
+#endif /* H5COPY_H */
diff --git a/tools/src/h5diff/h5diff_main.h b/tools/src/h5diff/h5diff_main.h
new file mode 100644
index 0000000000..fcbf25bb02
--- /dev/null
+++ b/tools/src/h5diff/h5diff_main.h
@@ -0,0 +1,214 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Copyright by The HDF Group. *
+ * All rights reserved. *
+ * *
+ * This file is part of HDF5. The full HDF5 copyright notice, including *
+ * terms governing use, modification, and redistribution, is contained in *
+ * the COPYING file, which can be found at the root of the source code *
+ * distribution tree, or in https://www.hdfgroup.org/licenses. *
+ * If you do not have access to either file, you may request a copy from *
+ * help@hdfgroup.org. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+#ifndef H5DIFF_H
+#define H5DIFF_H
+
+/** \page H5TOOL_DF_UG The HDF5 h5diff Tool
+ *
+ * \section sec_cltools_h5diff h5diff
+ *
+ * \subsection subsec_cltools_h5diff_intro Introduction
+ * With h5diff, you can compare objects between an HDF5 file and objects in another or the same HDF5 file.
+ *
+ * \subsection subsec_cltools_h5diff_usage Usage
+ * h5diff [OPTIONS] file1 file2 [obj1[ obj2]]
+ * \li file1 File name of the first HDF5 file
+ * \li file2 File name of the second HDF5 file
+ * \li [obj1] Name of an HDF5 object, in absolute path
+ * \li [obj2] Name of an HDF5 object, in absolute path
+ *
+ * \subsection subsec_cltools_h5diff_error Error Report
+ * \li --enable-error-stack Prints messages from the HDF5 error stack as they occur.
+ * Optional value 2 also prints file open errors, --enable-error-stack=2.
+ *
+ * \subsection subsec_cltools_h5diff_options Options
+ * \li --help Print a usage message and exit.
+ * \li --version Print the library version number and exit.
+ * \li --report Report mode. Print differences.
+ * \li --verbose Verbose mode. Print differences information and list of objects.
+ * \li --verbose=N Verbose mode with level. Print differences and list of objects.
+ * Level of detail depends on value of N:
+ * - 0 Identical to '-v' or '--verbose'.
+ * - 1 All level 0 information plus one-line attribute status summary.
+ * - 2 All level 1 information plus extended attribute status report.
+ * - 3 All level 2 information plus file names.
+ * \li --quiet Quiet mode. Do not produce output.
+ * \li --page-buffer-size=N Set the page buffer cache size, N=non-negative integers
+ * \li --vol-value-1 Value (ID) of the VOL connector to use for opening the
+ * first HDF5 file specified
+ * \li --vol-name-1 Name of the VOL connector to use for opening the first
+ * HDF5 file specified
+ * \li --vol-info-1 VOL-specific info to pass to the VOL connector used for
+ * opening the first HDF5 file specified
+ * \li --vol-value-2 Value (ID) of the VOL connector to use for opening the
+ * second HDF5 file specified
+ * \li --vol-name-2 Name of the VOL connector to use for opening the second
+ * HDF5 file specified
+ * \li --vol-info-2 VOL-specific info to pass to the VOL connector used for
+ * opening the second HDF5 file specified.
+ * If none of the above options are used to specify a VOL for a file, then
+ * the VOL named by HDF5_VOL_CONNECTOR (or the native VOL connector,
+ * if that environment variable is unset) will be used
+ * \li --vfd-value-1 Value (ID) of the VFL driver to use for opening the
+ * first HDF5 file specified
+ * \li --vfd-name-1 Name of the VFL driver to use for opening the first
+ * HDF5 file specified
+ * \li --vfd-info-1 VFD-specific info to pass to the VFL driver used for
+ * opening the first HDF5 file specified
+ * \li --vfd-value-2 Value (ID) of the VFL driver to use for opening the
+ * second HDF5 file specified
+ * \li --vfd-name-2 Name of the VFL driver to use for opening the second
+ * HDF5 file specified
+ * \li --vfd-info-2 VFD-specific info to pass to the VFL driver used for
+ * opening the second HDF5 file specified
+ * \li --follow-symlinks
+ * Follow symbolic links (soft links and external links) and compare the
+ * links' target objects.
+ * If symbolic link(s) with the same name exist in the files being
+ * compared, then determine whether the target of each link is an existing
+ * object (dataset, group, or named datatype) or the link is a dangling
+ * link (a soft or external link pointing to a target object that does
+ * not yet exist).
+ * - If both symbolic links are dangling links, they are treated as being
+ * the same; by default, h5diff returns an exit code of 0.
+ * If, however, --no-dangling-links is used with --follow-symlinks,
+ * this situation is treated as an error and h5diff returns an
+ * exit code of 2.
+ * - If only one of the two links is a dangling link,they are treated as
+ * being different and h5diff returns an exit code of 1.
+ * If, however, --no-dangling-links is used with --follow-symlinks,
+ * this situation is treated as an error and h5diff returns an
+ * exit code of 2.
+ * - If both symbolic links point to existing objects, h5diff compares the
+ * two objects.
+ * If any symbolic link specified in the call to h5diff does not exist,
+ * h5diff treats it as an error and returns an exit code of 2.
+ * \li --no-dangling-links
+ * Must be used with --follow-symlinks option; otherwise, h5diff shows
+ * error message and returns an exit code of 2.
+ * Check for any symbolic links (soft links or external links) that do not
+ * resolve to an existing object (dataset, group, or named datatype).
+ * If any dangling link is found, this situation is treated as an error
+ * and h5diff returns an exit code of 2.
+ * \li --compare List objects that are not comparable
+ * \li --nan Avoid NaNs detection
+ * \li --count=C Print differences up to \b C. \b C must be a positive integer.
+ * \li --delta=D
+ * Print difference if (|a-b| > D). \b D must be a positive number, where \b a
+ * is the data point value in file1 and b is the data point value in file2.
+ * Can not use with '--relative' or '--use-system-epsilon'.
+ * \li --relative=R
+ * Print difference if (|(a-b)/b| > R). \b R must be a positive number, where \b a
+ * is the data point value in file1 and \b b is the data point value in file2.
+ * Can not use with '--delta' or '--use-system-epsilon'.
+ * \li --use-system-epsilon
+ * Print difference if (|a-b| > EPSILON), \b EPSILON is system defined value, where
+ * \b a is the data point value in file1 and \b b is the data point value in file2. If the system epsilon is
+ * not defined,one of the following predefined values will be used: FLT_EPSILON = 1.19209E-07
for floating-point type
+ * DBL_EPSILON = 2.22045E-16
+ * for double precision
+ * type Can not use with '--relative' or '--delta'.
+ * \li --exclude-path "path" Exclude the specified path to an object when
+ * comparing files or groups. If a group is excluded, all member objects will also be excluded.
+ * The specified path is excluded wherever it occurs. This flexibility enables the same option
+ * to exclude either objects that exist only in one file or common objects that are known to differ.
+ * When comparing files, "path" is the absolute path to the excluded object;
+ * when comparing groups, "path" is similar to the relative path from the group to the excluded object. This
+ * "path" can be taken from the first section of the output of the --verbose option.
+ * For example, if you are comparing the group /groupA
+ * in two files and you want to exclude
+ * /groupA/groupB/groupC
in both files,
+ * the exclude option would read as follows:
+ * --exclude-path "/groupB/groupC"
+ * If there are multiple paths to an object, only the specified path(s) will be excluded; the
+ * comparison will include any path not explicitly excluded.
+ * This option can be used repeatedly to
+ * exclude multiple paths.
+ * \li --exclude-attribute "path/to/object/with/attribute" Exclude
+ * attributes on the specified path to an object when comparing files or groups.
+ * If there are multiple paths to an object, only the specified path(s) will be excluded;
+ * the comparison will include any path not explicitly excluded.
+ * This option can be used repeatedly to exclude multiple paths.
+ *
+ * \subsubsection subsubsec_cltools_h5diff_modee Modes of output
+ * \li Default mode print the number of differences found and where they occurred
+ * \li Report mode print the above plus the differences
+ * \li Verbose mode print the above plus a list of objects and warnings
+ * \li Quiet mode do not print output
+ *
+ * \subsubsection subsubsec_cltools_h5diff_file File comparison
+ * If no objects [obj1[ obj2]] are specified, the h5diff comparison proceeds as
+ * a comparison of the two files' root groups. That is, h5diff first compares
+ * the names of root group members, generates a report of root group objects
+ * that appear in only one file or in both files, and recursively compares
+ * common objects.
+ *
+ * \subsubsection subsubsec_cltools_h5diff_object Object comparison
+ * \li 1) Groups
+ * First compares the names of member objects (relative path, from the
+ * specified group) and generates a report of objects that appear in only
+ * one group or in both groups. Common objects are then compared recursively.
+ * \li 2) Attributes and Datasets
+ * Array rank and dimensions, datatypes, and data values are compared.
+ * \li 3) Datatypes
+ * The comparison is based on the return value of H5Tequal.
+ * \li 4) Symbolic links
+ * The paths to the target objects are compared.
+ * (The option --follow-symlinks overrides the default behavior when
+ * symbolic links are compared.)
+ *
+ * \subsubsection subsubsec_cltools_h5diff_subset Subsetting Options
+ * \li --no-compact-subset Disable compact form of subsetting and allow the use
+ * of "[" in dataset names.
+ *
+ * Subsetting is available by using the fcompact form of subsetting, as follows:
+ * obj1 /foo/mydataset[START;STRIDE;COUNT;BLOCK]
+ *
+ * It is not required to use all parameters, but until the last parameter value used,
+ * all of the semicolons (;) are required, even when a parameter value is not specified.
+ *
+ * Example:
+ * obj1 /foo/mydataset[START;;COUNT;BLOCK]
+ * obj1 /foo/mydataset[START]
+ *
+ * The \b STRIDE, \b COUNT, and \b BLOCK parameters are optional and will default to 1 in
+ * each dimension. \b START is optional and will default to 0 in each dimension.
+ * Each of \b START, \b STRIDE, \b COUNT, and \b BLOCK must be a comma-separated list of integers with
+ * one integer for each dimension of the dataset.
+ *
+ * \subsubsection subsubsec_cltools_h5diff_exit Exit code
+ * \li 0 if no differences
+ * \li 1 if differences found
+ * \li 2 if error
+ *
+ * \subsubsection subsubsec_cltools_h5diff_examples Examples
+ * \li 1) h5diff file1 file2 /g1/dset1 /g1/dset2
+ *
+ * Compares object '/g1/dset1' in file1 with '/g1/dset2' in file2
+ *
+ * \li 2) h5diff file1 file2 /g1/dset1
+ *
+ * Compares object '/g1/dset1' in both files
+ *
+ * \li 3) h5diff file1 file2
+ *
+ * Compares all objects in both files
+ *
+ * Notes:
+ * file1 and file2 can be the same file.
+ * Use h5diff file1 file1 /g1/dset1 /g1/dset2 to compare '/g1/dset1' and '/g1/dset2' in the same file
+ *
+ */
+
+#endif /* H5DIFF_H */
diff --git a/tools/src/h5dump/h5dump.h b/tools/src/h5dump/h5dump.h
index 5deb95190a..879206dfa6 100644
--- a/tools/src/h5dump/h5dump.h
+++ b/tools/src/h5dump/h5dump.h
@@ -12,6 +12,187 @@
#ifndef H5DUMP_H
#define H5DUMP_H
+/** \page H5TOOL_DP_UG The HDF5 h5dump Tool
+ *
+ * \section sec_cltools_h5dump h5dump
+ *
+ * \subsection subsec_cltools_h5dump_intro Introduction
+ * With h5dump, you can display objects from an HDF5 file.
+ *
+ * \subsection subsec_cltools_h5dump_usage Usage
+ * h5dump [OPTIONS] [files
+ *
+ * \subsection subsec_cltools_h5dump_error Error Report Option
+ * \li --enable-error-stack Prints messages from the HDF5 error stack as they occur.
+ * Optional value 2 also prints file open errors, --enable-error-stack=2.
+ *
+ * \subsection subsec_cltools_h5dump_options Options
+ * \li --help Print a usage message and exit
+ * \li --version Print the library version number and exit
+ *
+ * \subsection subsec_cltools_h5dump_options_file File Options
+ * \li --contents Print a list of the file contents, group and dataset,
+ * names and values, then exit. Optional value 1 also prints attributes, --contents=1.
+ * \li --superblock Print the content of the super block
+ * \li --header Print the header only; no data is displayed
+ * \li --filedriver=D Specify which driver to open the file with
+ * \li --output=F Output raw data into file F
+ * \li --binary=B Binary file output, of form B
+ * \li --ddl=F Output ddl text into file F
+ * Use blank(empty) filename F to suppress ddl display
+ * \li --page-buffer-size=N Set the page buffer cache size, N=non-negative integers
+ * \li --s3-cred=\ Supply S3 authentication information to "ros3" vfd.
+ * \code \ :: "(,,)" \endcode
+ * If absent or \code \ -> "(,,)" \endcode, no authentication.
+ * Has no effect if filedriver is not "ros3".
+ * \li --hdfs-attrs=\ Supply configuration information for HDFS file access.
+ * For use with --filedriver=hdfs
+ * \code \ :: (\,\,
+ * \,\,
+ * \) \endcode
+ * Any absent attribute will use a default value.
+ * \li --vol-value Value (ID) of the VOL connector to use for opening the HDF5 file specified
+ * \li --vol-name Name of the VOL connector to use for opening the HDF5 file specified
+ * \li --vol-info VOL-specific info to pass to the VOL connector used for
+ * opening the HDF5 file specified.
+ * If none of the above options are used to specify a VOL, then
+ * the VOL named by \b HDF5_VOL_CONNECTOR (or the native VOL connector,
+ * if that environment variable is unset) will be used
+ * \li--vfd-value Value (ID) of the VFL driver to use for opening the HDF5 file specified
+ * \li --vfd-name Name of the VFL driver to use for opening the HDF5 file specified
+ * \li --vfd-info VFD-specific info to pass to the VFL driver used for
+ * opening the HDF5 file specified
+ *
+ * \subsection subsec_cltools_h5dump_options_obj Object Options
+ * \li --attribute=P Print the specified attribute
+ * If an attribute name contains a slash (/), escape the
+ * slash with a preceding backslash (\).
+ * (See example section below.)
+ * \li --dataset=P Print the specified dataset
+ * \li --group=P Print the specified group and all members
+ * \li --soft-link=P Print the value(s) of the specified soft link
+ * \li --datatype=P Print the specified named datatype
+ * \li --any_path=P Print any attribute, dataset, group, datatype, or link that matches P
+ * P can be the absolute path or just a relative path.
+ * \li --onlyattr Print the header and value of attributes
+ * Optional value 0 suppresses printing attributes.
+ * \li --vds-view-first-missing Set the VDS bounds to first missing mapped elements.
+ * \li --vds-gap-size=N Set the missing file gap size, N=non-negative integers
+ *
+ * \subsection subsec_cltools_h5dump_options_prop Object Property Options
+ * \li --object-ids Print the object ids
+ * \li --properties Print dataset filters, storage layout and fill value
+ * \li --packedbits=L Print packed bits as unsigned integers, using mask
+ * format L for an integer dataset specified with
+ * option -d. L is a list of offset,length values,
+ * separated by commas. Offset is the beginning bit in
+ * the data value and length is the number of bits of
+ * the mask.
+ * \li --region Print dataset pointed by region references
+ *
+ * \subsection subsec_cltools_h5dump_options_fmt Formatting Options
+ * \li --escape Escape non printing characters
+ * \li --string Print 1-byte integer datasets as ASCII
+ * \li --noindex Do not print array indices with the data
+ * \li --format=T Set the floating point output format
+ * \li --sort_by=Q Sort groups and attributes by index Q
+ * \li --sort_order=Z Sort groups and attributes by order Z
+ * \li --no-compact-subset Disable compact form of subsetting and allow the use
+ * of "[" in dataset names.
+ * \li --width=N Set the number of columns of output. A value of 0 (zero)
+ * sets the number of columns to the maximum (65535).
+ * Default width is 80 columns.
+ *
+ * \subsection subsec_cltools_h5dump_options_xml XML Options
+ * \li --xml Output in XML using Schema
+ * \li --use-dtd Output in XML using DTD
+ * \li --xml-dtd=U Use the DTD or schema at U
+ * \li --xml-ns=S (XML Schema) Use qualified names n the XML
+ * ":": no namespace, default: "hdf5:"
+ * E.g., to dump a file called "-f", use h5dump -- -f
+ *
+ * \subsection subsec_cltools_h5dump_options_subset Subsetting Options
+ * Subsetting is available by using the following options with a dataset
+ * option. Subsetting is done by selecting a hyperslab from the data.
+ * Thus, the options mirror those for performing a hyperslab selection.
+ * One of the \b START, \b COUNT, \b STRIDE, or \b BLOCK parameters are mandatory if you do subsetting.
+ * The \b STRIDE, \b COUNT, and \b BLOCK parameters are optional and will default to 1 in
+ * each dimension. \b START is optional and will default to 0 in each dimension.
+ *
+ * \li --start=START Offset of start of subsetting selection
+ * \b START - is a list of integers, the number of which are equal to the
+ * number of dimensions in the dataspace being queried.
+ * \li --stride=STRIDE Hyperslab stride
+ * \b COUNT - is a list of integers, the number of which are equal to the
+ * number of dimensions in the dataspace being queried.
+ * \li --count=COUNT Number of blocks to include in selection
+ * \b STRIDE - is a list of integers, the number of which are equal to the
+ * number of dimensions in the dataspace being queried.
+ * \li --block=BLOCK Size of block in hyperslab
+ * \b BLOCK - is a list of integers, the number of which are equal to the
+ * number of dimensions in the dataspace being queried.
+ * (Alternate compact form of subsetting is described in the Reference Manual)
+ *
+ * \subsubsection subsubsec_cltools_h5dump_options_args Option Argument Conventions
+ * \li D - is the file driver to use in opening the file. Acceptable values are available
+ * from https://support.hdfgroup.org/documentation/HDF5/registered_virtual_file_drivers_vfds.html. Without
+ * the file driver flag, the file will be opened with each driver in turn and in the order specified above
+ * until one driver succeeds in opening the file. See examples below for family, split, and multi driver
+ * special file name usage.
+ *
+ * \li F - is a filename.
+ * \li P - is the full path from the root group to the object.
+ * \li N - is an integer greater than 1.
+ * \li T - is a string containing the floating point format, e.g '%.3f'
+ * \li U - is a URI reference (as defined in [IETF RFC 2396],
+ * updated by [IETF RFC 2732])
+ * \li B - is the form of binary output: NATIVE for a memory type, FILE for the
+ * file type, LE or BE for pre-existing little or big endian types.
+ * Must be used with -o (output file) and it is recommended that
+ * -d (dataset) is used. B is an optional argument, defaults to NATIVE
+ * \li Q - is the sort index type. It can be "creation_order" or "name" (default)
+ * \li Z - is the sort order type. It can be "descending" or "ascending" (default)
+ *
+ * \subsection subsec_cltools_h5dump_examples Usage Examples
+ *
+ * \li 1) Attribute foo of the group /bar_none in file quux.h5
+ *
+ * h5dump --attribute=/bar_none/foo quux.h5
+ *
+ * \li 2) Attribute "high/low" of the group /bar_none in the file quux.h5
+ *
+ * h5dump --attribute="/bar_none/high\/low" quux.h5
+ *
+ * \li 3) Selecting a subset from dataset /foo in file quux.h5
+ *
+ * h5dump --dataset=/foo --start="0,1" --stride="1,1" --count="2,3" --block="2,2" quux.h5
+ *
+ * \li 4) Saving dataset 'dset' in file quux.h5 to binary file 'out.bin' using a little-endian type
+ *
+ * h5dump --dataset=/dset --binary=LE --output=out.bin quux.h5
+ *
+ * \li 5) Display two packed bits (bits 0-1 and bits 4-6) in the dataset /dset
+ *
+ * h5dump -d-dataset=/dset --packedbits=0,1,4,3 quux.h5
+ *
+ * \li 6) Dataset foo in files file1.h5 file2.h5 file3.h5
+ *
+ * h5dump --dataset=/foo file1.h5 file2.h5 file3.h5
+ *
+ * \li 7) Dataset foo in split files splitfile-m.h5 splitfile-r.h5
+ *
+ * h5dump --dataset=/foo --filedriver=split splitfile
+ *
+ * \li 8) Dataset foo in multi files mf-s.h5, mf-b.h5, mf-r.h5, mf-g.h5, mf-l.h5 and mf-o.h5
+ *
+ * h5dump --dataset=/foo --filedriver=multi mf
+ *
+ * \li 9) Dataset foo in family files fam00000.h5 fam00001.h5 and fam00002.h5
+ *
+ * h5dump --dataset=/foo --filedriver=family fam%05d.h5
+ *
+ */
+
#include "hdf5.h"
#include "H5private.h"
#include "h5tools.h"
diff --git a/tools/src/h5format_convert/h5format_convert.h b/tools/src/h5format_convert/h5format_convert.h
new file mode 100644
index 0000000000..5f101dac52
--- /dev/null
+++ b/tools/src/h5format_convert/h5format_convert.h
@@ -0,0 +1,58 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Copyright by The HDF Group. *
+ * All rights reserved. *
+ * *
+ * This file is part of HDF5. The full HDF5 copyright notice, including *
+ * terms governing use, modification, and redistribution, is contained in *
+ * the COPYING file, which can be found at the root of the source code *
+ * distribution tree, or in https://www.hdfgroup.org/licenses. *
+ * If you do not have access to either file, you may request a copy from *
+ * help@hdfgroup.org. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+#ifndef H5FORMAT_CONVERT_H
+#define H5FORMAT_CONVERT_H
+
+/** \page H5TOOL_FC_UG The HDF5 h5format_convert Tool
+ *
+ * \section sec_cltools_h5format_convert h5format_convert
+ *
+ * \subsection subsec_cltools_h5format_convert_intro Introduction
+ * With h5format_convert, you can convert a datasets format in an HDF5 file.
+ *
+ * \subsection subsec_cltools_h5format_convert_usage Usage
+ * h5format_convert [OPTIONS] file_name
+ *
+ * \subsection subsec_cltools_h5format_convert_error Error Report Option
+ * \li --enable-error-stack Prints messages from the HDF5 error stack as they occur.
+ * Optional value 2 also prints file open errors, --enable-error-stack=2.
+ *
+ * \subsection subsec_cltools_h5format_convert_options Options
+ * \li --help Print a usage message and exit
+ * \li --version Print the library version number and exit
+ * \li --verbose Turn on verbose mode
+ * \li --dname=dataset_name Pathname for the dataset
+ * \li --noop Perform all the steps except the actual conversion
+ *
+ * \subsubsection subsubsec_cltools_h5format_convert_examples Usage Examples
+ * \li 1) h5format_convert --dname=/group/dataset file_name
+ *
+ * Convert the dataset in the HDF5 file :
+ * - chunked dataset: convert the chunk indexing type to version 1 B-tree
+ * - compact/contiguous dataset: downgrade the layout version to 3
+ * - virtual dataset: no action
+ *
+ * \li 2) h5format_convert file_name
+ *
+ * Convert all datasets in the HDF5 file :
+ * - chunked dataset: convert the chunk indexing type to version 1 B-tree
+ * - compact/contiguous dataset: downgrade the layout version to 3
+ * - virtual dataset: no action
+ *
+ * \li 3) h5format_convert --noop --dname=/group/dataset file_name
+ *
+ * Go through all the steps except the actual conversion when
+ * converting the dataset in the HDF5 file .
+ *
+ */
+
+#endif /* H5FORMAT_CONVERT_H */
diff --git a/tools/src/h5import/h5import.h b/tools/src/h5import/h5import.h
index 86a27889c9..5b03780674 100644
--- a/tools/src/h5import/h5import.h
+++ b/tools/src/h5import/h5import.h
@@ -19,6 +19,294 @@
#ifndef H5IMPORT_H
#define H5IMPORT_H
+/** \page H5TOOL_IM_UG The HDF5 h5import Tool
+ *
+ * \section sec_cltools_h5import h5import
+ *
+ * \subsection subsec_cltools_h5import_intro Introduction
+ * With h5import, you can convert data stored in one or more ASCII or binary files
+ * into one or more datasets (in accordance with the
+ * user-specified type and storage properties) in an existing
+ * or new HDF5 file.
+ *
+ * \subsection subsec_cltools_h5import_desc Description
+ * The primary objective of the utility is to convert floating
+ * point or integer data stored in \b ASCII text or binary form
+ * into a dataset according to the type and storage properties
+ * specified by the user. The utility can also accept \b ASCII
+ * text files and store the contents in a compact form as an
+ * array of one-dimensional strings.
+ *
+ * The input data to be written as a dataset can be provided
+ * to the utility in one of the following forms:
+ * \li 1. ASCII text file with numeric data (floating point or
+ * integer data)
+ * \li 2. Binary file with native floating point data (32-bit or
+ * 64-bit)
+ * \li 3. Binary file with native integer (signed or unsigned)
+ * data (8-bit or 16-bit or 32-bit or 64-bit)
+ * \li 4. ASCII text file containing strings (text data)
+ *
+ * Every input file is associated with a configuration file
+ * also provided as an input to the utility. (See Section
+ * \ref subsec_cltools_h5import_config to know how it is to be organized).
+ * The class, size and dimensions of the input data is
+ * specified in this configuration file. A point to note is
+ * that the floating point data in the \b ASCII text file may be
+ * organized in the fixed floating form (for example 323.56)
+ * or in scientific notation (for example 3.23E+02). A
+ * different input-class specification is to be used for both forms.
+ *
+ * The utility extracts the input data from the input file
+ * according to the specified parameters and saves it into
+ * an HDF5 dataset.
+ *
+ * The user can specify output type and storage properties in
+ * the configuration file. The user is required to specify the
+ * path of the dataset. If the groups in the path leading to
+ * the dataset do not exist, the groups will be created by the
+ * utility. If no group is specified, the dataset will be
+ * created under the root group.
+ *
+ * In addition to the name, the user is also required to
+ * provide the class and size of output data to be written to
+ * the dataset and may optionally specify the output-architecture,
+ * and the output-byte-order. If output-architecture is not
+ * specified, the default is \b NATIVE. Output-byte-orders are fixed
+ * for some architectures and may be specified only if output-
+ * architecture is \b IEEE, \b UNIX or \b STD.
+ *
+ * Also, layout and other storage properties such as
+ * compression, external storage and extendible datasets may be
+ * optionally specified. The layout and storage properties
+ * denote how raw data is to be organized on the disk. If these
+ * options are not specified, the default is \b Contiguous layout
+ * and storage.
+ *
+ * The dataset can be organized in any of the following ways:
+ * \li 1. Contiguous
+ * \li 2. Chunked
+ * \li 3. External Storage File (has to be contiguous)
+ * \li 4. Extendible data sets(has to be chunked)
+ * \li 5. Compressed (has to be chunked)
+ * \li 6. Compressed & Extendible (has to be chunked)
+ *
+ * If the user wants to store raw data in a non-HDF5 file then
+ * the external storage file option is to be used and the name
+ * of the file is to be specified.
+ *
+ * If the user wants the dimensions of the dataset to be
+ * unlimited, the extendible data set option can be chosen.
+ *
+ * The user may also specify the type of compression and the
+ * level to which the data set must be compressed by setting
+ * the compressed option.
+ *
+ * \subsection subsec_cltools_h5import_usage Usage
+ * h5import -h[elp], OR h5import \ -c[onfig] \ [\
+ * -c[config]\...] -o[utfile] \
+ *
+ * \subsection subsec_cltools_h5import_help Help
+ * \li -h[elp] Print a usage message and exit
+ *
+ * \subsubsection subsubsec_cltools_h5import_options Program Options
+ * \li \
+ * Name of the Input file(s), containing a
+ * single n-dimensional floating point or integer array
+ * in either ASCII text, native floating point(32-bit
+ * or 64-bit) or native integer(8-bit or 16-bit or
+ * 32-bit or 64-bit). Data to be specified in the order
+ * of fastest changing dimensions first.
+ *
+ * \li -c[config] \
+ * Every input file should be associated with a
+ * configuration file and this is done by the -c option.
+ * \ is the name of the configuration file.
+ * (See Section \ref subsec_cltools_h5import_config).
+ *
+ * \li -o[utfile] \
+ * Name of the HDF5 output file. Data from one or more
+ * input files are stored as one or more data sets in
+ * \. The output file may be an existing file or
+ * it may be new, in which case it will be created.
+ *
+ * \subsection subsec_cltools_h5import_config Configuration File
+ * The configuration file is an ASCII text file and must be
+ * the ddl formatted file (without data values) produced by \b h5dump
+ * when used with the options \code -o outfilename -b \endcode of a single dataset (-d)
+ * OR organized as CONFIG-KEYWORD VALUE pairs, one pair on each
+ * line.
+ *
+ * The configuration file may have the following keywords each
+ * followed by an acceptable value.
+ *
+ * \subsubsection subsubsec_cltools_h5import_config_req Required KEYWORDS
+ * \li PATH
+ * \li INPUT-CLASS
+ * \li INPUT-SIZE
+ * \li INPUT-BYTE-ORDER
+ * \li RANK
+ * \li DIMENSION-SIZES
+ * \li OUTPUT-CLASS
+ * \li OUTPUT-SIZE
+ *
+ * \subsubsection subsubsec_cltools_h5import_config_opt Optional KEYWORDS
+ * \li OUTPUT-ARCHITECTURE
+ * \li OUTPUT-BYTE-ORDER
+ * \li CHUNKED-DIMENSION-SIZES
+ * \li COMPRESSION-TYPE
+ * \li COMPRESSION-PARAM
+ * \li EXTERNAL-STORAGE
+ * \li MAXIMUM-DIMENSIONS
+ *
+ * \subsubsection subsubsec_cltools_h5import_config_val Values for keywords
+ * \li PATH
+ * Strings separated by spaces to represent
+ * the path of the dataset. If the groups in
+ * the path do not exist, they will be created.
+ * For example,
+ * - PATH grp1/grp2/dataset1
+ * - PATH: keyword
+ * - grp1: group under the root. If non-existent will be created
+ * - grp2: group under grp1. If non-existent will be created under grp1
+ * - dataset1: the name of the dataset to be created
+ *
+ * \li INPUT-CLASS
+ * String denoting the type of input data.
+ * - TEXTIN
+ * - TEXTFP
+ * - FP
+ * - IN
+ * - STR
+ * - TEXTUIN
+ * - UIN
+ * \b INPUT-CLASS "TEXTIN" denotes an ASCII text file with signed integer data in ASCII form,
+ * \b INPUT-CLASS "TEXTUIN" denotes an ASCII text file with unsigned integer data in ASCII form,
+ * "TEXTFP" denotes an ASCII text file containing floating point data in the fixed notation
+ * (325.34),
+ * "FP" denotes a floating point binary file,
+ * "IN" denotes a signed integer binary file,
+ * "UIN" denotes an unsigned integer binary file,
+ * & "STR" denotes an ASCII text file the contents of which should be stored as a 1-D
+ * array of strings.
+ * If \b INPUT-CLASS is "STR", then \b RANK,
+ * \b DIMENSION-SIZES, \b OUTPUT-CLASS, \b OUTPUT-SIZE,
+ * \b OUTPUT-ARCHITECTURE and \b OUTPUT-BYTE-ORDER
+ * will be ignored.
+ *
+ * \li INPUT-SIZE
+ * Integer denoting the size of the input data (8, 16, 32, 64).
+ * - For floating point, \b INPUT-SIZE can be 32 or 64.
+ * - For integers (signed and unsigned) \b INPUT-SIZE can be 8, 16, 32 or 64.
+ *
+ * \li RANK
+ * Integer denoting the number of dimensions.
+ *
+ * \li DIMENSION-SIZES
+ * Integers separated by spaces to denote the dimension sizes for the number of dimensions
+ * determined by rank.
+ *
+ * \li OUTPUT-CLASS
+ * String denoting data type of the dataset to be written ("IN","FP", "UIN")
+ *
+ * \li OUTPUT-SIZE
+ * Integer denoting the size of the data in the output dataset to be written.
+ * If \b OUTPUT-CLASS is "FP", \b OUTPUT-SIZE can be 32 or 64.
+ * If \b OUTPUT-CLASS is "IN" or "UIN", \b OUTPUT-SIZE can be 8, 16, 32 or 64.
+ *
+ * \li OUTPUT-ARCHITECTURE
+ * \b STRING denoting the type of output architecture. Can accept the following values
+ * - STD
+ * - IEEE
+ * - INTEL
+ * - CRAY
+ * - MIPS
+ * - ALPHA
+ * - NATIVE (default)
+ * - UNIX
+ *
+ * \li OUTPUT-BYTE-ORDER
+ * String denoting the output-byte-order. Ignored if the \b OUTPUT-ARCHITECTURE is not specified or
+ * if it is \b IEEE, \b UNIX or \b STD. Can accept the following values.
+ *
+ *
+ * \li CHUNKED-DIMENSION-SIZES
+ * Integers separated by spaces to denote the dimension sizes of the chunk for the number of
+ * dimensions determined by rank. Required field to denote that the dataset will be stored with
+ * chunked storage. If this field is absent the dataset will be stored with contiguous storage.
+ *
+ * \li COMPRESSION-TYPE
+ * String denoting the type of compression to be used with the chunked storage. Requires the
+ * \b CHUNKED-DIMENSION-SIZES to be specified. The only currently supported compression method is \b GZIP.
+ * Will accept the following value
+ *
+ *
+ * \li COMPRESSION-PARAM
+ * Integer used to denote compression level and this option is to be always specified when
+ * the \b COMPRESSION-TYPE option is specified. The values are applicable only to \b GZIP
+ * compression.
+ * Value 1-9: The level of Compression.
+ * 1 will result in the fastest compression while 9 will result in
+ * the best compression ratio.
+ * The default level of compression is 6.
+ *
+ * \li EXTERNAL-STORAGE
+ * String to denote the name of the non-HDF5 file to store data to. Cannot be used if \b
+ * CHUNKED-DIMENSIONS or \b COMPRESSION-TYPE or \b EXTENDIBLE-DATASET is specified. Value
+ * \: the name of the external file as a string to be used.
+ *
+ * \li MAXIMUM-DIMENSIONS
+ * Integers separated by spaces to denote the maximum dimension sizes of all the
+ * dimensions determined by rank. Requires the \b CHUNKED-DIMENSION-SIZES to be specified. A value of
+ * -1 for any dimension implies \b UNLIMITED \b DIMENSION size for that particular dimension.
+ *
+ * \subsection subsec_cltools_h5import_examples Usage Examples
+ * \li Configuration File may look like
+ * \code
+ * PATH work h5 pkamat First-set
+ * INPUT-CLASS TEXTFP
+ * RANK 3
+ * DIMENSION-SIZES 5 2 4
+ * OUTPUT-CLASS FP
+ * OUTPUT-SIZE 64
+ * OUTPUT-ARCHITECTURE IEEE
+ * OUTPUT-BYTE-ORDER LE
+ * CHUNKED-DIMENSION-SIZES 2 2 2
+ * \endcode
+ * The above configuration will accept a floating point array
+ * (5 x 2 x 4) in an ASCII file with the rank and dimension sizes
+ * specified and will save it in a chunked dataset (of pattern
+ * 2 X 2 X 2) of 64-bit floating point in the little-endian order
+ * and IEEE architecture. The dataset will be stored at
+ * "/work/h5/pkamat/First-set"
+ *
+ * \li Another configuration could be
+ * \code
+ * PATH Second-set
+ * INPUT-CLASS IN
+ * RANK 5
+ * DIMENSION-SIZES 6 3 5 2 4
+ * OUTPUT-CLASS IN
+ * OUTPUT-SIZE 32
+ * CHUNKED-DIMENSION-SIZES 2 2 2 2 2
+ * EXTENDIBLE-DATASET 1 3
+ * COMPRESSION-TYPE GZIP
+ * COMPRESSION-PARAM 7
+ * \endcode
+ * The above configuration will accept an integer array
+ * (6 X 3 X 5 x 2 x 4) in a binary file with the rank and
+ * dimension sizes specified and will save it in a chunked dataset
+ * (of pattern 2 X 2 X 2 X 2 X 2) of 32-bit floating point in
+ * native format (as output-architecture is not specified). The
+ * first and the third dimension will be defined as unlimited. The
+ * dataset will be compressed using GZIP and a compression level
+ * of 7.
+ * The dataset will be stored at \code /Second-set \endcode
+ *
+ *
+ */
+
/*
* state table tokens
*/
diff --git a/tools/src/h5jam/h5jam.h b/tools/src/h5jam/h5jam.h
new file mode 100644
index 0000000000..7d3cca6553
--- /dev/null
+++ b/tools/src/h5jam/h5jam.h
@@ -0,0 +1,65 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Copyright by The HDF Group. *
+ * All rights reserved. *
+ * *
+ * This file is part of HDF5. The full HDF5 copyright notice, including *
+ * terms governing use, modification, and redistribution, is contained in *
+ * the COPYING file, which can be found at the root of the source code *
+ * distribution tree, or in https://www.hdfgroup.org/licenses. *
+ * If you do not have access to either file, you may request a copy from *
+ * help@hdfgroup.org. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+#ifndef H5JAM_H
+#define H5JAM_H
+
+/** \page H5TOOL_JAM_UG The HDF5 h5jam/h5unjam Tool
+ *
+ * \section sec_cltools_h5jam h5jam and h5unjam
+ *
+ * \subsection subsec_cltools_h5jam_intro Introduction
+ * \li h5jam Adds user block to the front of an HDF5 file and creates a new concatenated file.
+ * \li h5unjam Splits an HDF5 file into two files, one containing the user block data and the other the HDF5
+ * data.
+ *
+ * \subsection subsec_cltools_h5jam_usage Usage
+ * h5jam -i \ -u \ [-o \] [--clobber]
+ * h5unjam -i \ [-o \ ] [-u \ | --delete]
+ *
+ * \subsection subsec_cltools_h5jam_options h5jam Options
+ * \li -i in_file.h5 Specifies the input HDF5 file.
+ * \li -u in_user_file Specifies the file to be inserted into the user block.
+ * Can be any file format except an HDF5 format.
+ * \li -o out_file.h5 Specifies the output HDF5 file.
+ * If not specified, the user block will be concatenated in
+ * place to the input HDF5 file.
+ * \li --clobber Wipes out any existing user block before concatenating
+ * the given user block.
+ * The size of the new user block will be the larger of:
+ * - the size of existing user block in the input HDF5 file
+ * - the size of user block required by new input user file
+ * (size = 512 x 2N, N is positive integer.)
+ * \li -h Prints a usage message and exits.
+ * \li -V Prints the HDF5 library version and exits.
+ *
+ * \subsection subsec_cltools_h5unjam_options h5unjam Options
+ * \li -i in_file.h5 Specifies the HDF5 as input. If the input HDF5 file
+ * contains no user block, exit with an error message.
+ * \li -o out_file.h5 Specifies output HDF5 file without a user block.
+ * If not specified, the user block will be removed from the
+ * input HDF5 file.
+ * \li -u out_user_file
+ * Specifies the output file containing the data from the
+ * user block.
+ * Cannot be used with --delete option.
+ * \li --delete Remove the user block from the input HDF5 file. The content
+ * of the user block is discarded.
+ * Cannot be used with the -u option.
+ * \li -h Prints a usage message and exits.
+ * \li -V Prints the HDF5 library version and exits.
+ *
+ * If neither --delete nor -u is specified, the user block from the input
+ * file will be displayed to stdout.
+ *
+ */
+
+#endif /* H5JAM_H */
diff --git a/tools/src/h5ls/h5ls.h b/tools/src/h5ls/h5ls.h
new file mode 100644
index 0000000000..d72c1be10d
--- /dev/null
+++ b/tools/src/h5ls/h5ls.h
@@ -0,0 +1,108 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Copyright by The HDF Group. *
+ * All rights reserved. *
+ * *
+ * This file is part of HDF5. The full HDF5 copyright notice, including *
+ * terms governing use, modification, and redistribution, is contained in *
+ * the COPYING file, which can be found at the root of the source code *
+ * distribution tree, or in https://www.hdfgroup.org/licenses. *
+ * If you do not have access to either file, you may request a copy from *
+ * help@hdfgroup.org. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+#ifndef H5LS_H
+#define H5LS_H
+
+/** \page H5TOOL_LS_UG The HDF5 h5ls Tool
+ *
+ * \section sec_cltools_h5ls h5ls
+ *
+ * \subsection subsec_cltools_h5ls_intro Introduction
+ * With h5ls, you can dump objects from an HDF5 file.
+ *
+ * \subsection subsec_cltools_h5ls_usage Usage
+ * h5ls [OPTIONS] file[/OBJECT] [file[/[OBJECT]...]
+ *
+ * \subsection subsec_cltools_h5ls_objs file/OBJECT
+ * Each object consists of an HDF5 file name optionally followed by a
+ * slash and an object name within the file (if no object is specified
+ * within the file then the contents of the root group are displayed).
+ * The file name may include a printf(3C) integer format such as
+ * "%05d" to open a file family.
+ *
+ * \subsection subsec_cltools_h5ls_error Error Report Option
+ * \li --enable-error-stack Prints messages from the HDF5 error stack as they occur.
+ * Optional value 2 also prints file open errors, --enable-error-stack=2.
+ *
+ * \subsection subsec_cltools_h5ls_options Options
+ * \li --help Print a usage message and exit
+ * \li --address Print raw data address. If dataset is contiguous, address
+ * is offset in file of beginning of raw data. If chunked,
+ * returned list of addresses indicates offset of each chunk.
+ * Must be used with --verbose option.
+ * Provides no information for non-dataset objects.
+ * \li --data Print the values of datasets
+ * \li --follow-symlinks
+ * Follow symbolic links (soft links and external links)
+ * to display target object information.
+ * Without this option, h5ls identifies a symbolic link
+ * as a soft link or external link and prints the value
+ * assigned to the symbolic link; it does not provide any
+ * information regarding the target object or determine
+ * whether the link is a dangling link.
+ * \li --no-dangling-links
+ * Must be used with --follow-symlinks option;
+ * otherwise, h5ls shows error message and returns an exit
+ * code of 1.
+ * Check for any symbolic links (soft links or external links)
+ * that do not resolve to an existing object (dataset, group,
+ * or named datatype).
+ * If any dangling link is found, this situation is treated
+ * as an error and h5ls returns an exit code of 1.
+ * \li --full Print full path names instead of base names
+ * \li --group Show information about a group, not its contents
+ * \li --label Label members of compound datasets
+ * \li --recursive List all groups recursively, avoiding cycles
+ * \li --string Print 1-byte integer datasets as ASCII
+ * \li --simple Use a machine-readable output format
+ * \li --width=N Set the number of columns of output
+ * \li --verbose Generate more verbose output
+ * \li --version Print the library version number and exit
+ * \li --page-buffer-size=N Set the page buffer cache size, N=non-negative integers
+ * \li --vfd=DRIVER Use the specified virtual file driver
+ * \li --hexdump Show raw data in hexadecimal format
+ * \li --s3-cred=C Supply S3 authentication information to "ros3" vfd.
+ * Accepts tuple of \code (\,\,\) \endcode.
+ * If absent or C = \code (,,) \endcode defaults to no-authentication.
+ * Has no effect if vfd flag not set to "ros3".
+ * \li --hdfs-attrs=A Supply configuration information to Hadoop VFD.
+ * Accepts tuple of \code (\,\,
+ * ...\,\,\) \endcode
+ * If absent or A == \code (,,,,) \endcode all default values are used.
+ * Has no effect if vfd flag is not 'hdfs'.
+ * \li --vol-value Value (ID) of the VOL connector to use for opening the
+ * HDF5 file specified
+ * \li --vol-name Name of the VOL connector to use for opening the
+ * HDF5 file specified
+ * \li --vol-info VOL-specific info to pass to the VOL connector used for
+ * opening the HDF5 file specified
+ * If none of the above options are used to specify a VOL, then
+ * the VOL named by HDF5_VOL_CONNECTOR (or the native VOL connector,
+ * if that environment variable is unset) will be used
+ * \li --vfd-value Value (ID) of the VFL driver to use for opening the
+ * HDF5 file specified
+ * \li --vfd-name Name of the VFL driver to use for opening the
+ * HDF5 file specified
+ * \li --vfd-info VFD-specific info to pass to the VFL driver used for
+ * opening the HDF5 file specified
+ *
+ * \subsubsection subsubsec_cltools_h5ls_options_depre Deprecated Options
+ * The following options have been removed in HDF5 1.12. Use the indicated
+ * replacement option in all work.
+ * \li --external Follow external links.
+ * Replaced by --follow-symlinks.
+ * \li --errors Show all HDF5 error reporting
+ * Replaced by --enable-error-stack.
+ *
+ */
+
+#endif /* H5LS_H */
diff --git a/tools/src/h5repack/h5repack.h b/tools/src/h5repack/h5repack.h
index cc724a067c..2977ffab6d 100644
--- a/tools/src/h5repack/h5repack.h
+++ b/tools/src/h5repack/h5repack.h
@@ -13,6 +13,231 @@
#ifndef H5REPACK_H
#define H5REPACK_H
+/** \page H5TOOL_RP_UG The HDF5 h5repack Tool
+ *
+ * \section sec_cltools_h5repack h5repack
+ *
+ * \subsection subsec_cltools_h5repack_intro Introduction
+ * With h5repack, you can write an HDF5 file to a new file and change the layout for objects in the new file.
+ *
+ * \subsection subsec_cltools_h5repack_usage Usage
+ * h5repack [OPTIONS] file1 file2
+ * \li file1 Input HDF5 File
+ * \li file2 Output HDF5 File
+ *
+ * \subsection subsec_cltools_h5repack_error Error Report Option
+ * \li --enable-error-stack Prints messages from the HDF5 error stack as they occur.
+ * Optional value 2 also prints file open errors, --enable-error-stack=2.
+ *
+ * \subsection subsec_cltools_h5repack_options Options
+ * \li --help Print a usage message and exit
+ * \li --verbose=N Verbose mode, print object information.
+ * N - is an integer greater than 1, 2 displays read/write timing
+ * \li --version Print the library version number and exit
+ * \li --native Use a native HDF5 type when repacking
+ * \li --page-buffer-size=N Set the page buffer cache size, N=non-negative integers
+ * \li --src-vol-value Value (ID) of the VOL connector to use for opening the
+ * input HDF5 file specified
+ * \li --src-vol-name Name of the VOL connector to use for opening the input
+ * HDF5 file specified
+ * \li --src-vol-info VOL-specific info to pass to the VOL connector used for
+ * opening the input HDF5 file specified
+ * \li --dst-vol-value Value (ID) of the VOL connector to use for opening the
+ * output HDF5 file specified
+ * \li --dst-vol-name Name of the VOL connector to use for opening the output
+ * HDF5 file specified
+ * \li --dst-vol-info VOL-specific info to pass to the VOL connector used for
+ * opening the output HDF5 file specified
+ * \li --src-vfd-value Value (ID) of the VFL driver to use for opening the
+ * input HDF5 file specified
+ * \li --src-vfd-name Name of the VFL driver to use for opening the input
+ * HDF5 file specified
+ * \li --src-vfd-info VFD-specific info to pass to the VFL driver used for
+ * opening the input HDF5 file specified
+ * \li --dst-vfd-value Value (ID) of the VFL driver to use for opening the
+ * output HDF5 file specified
+ * \li --dst-vfd-name Name of the VFL driver to use for opening the output
+ * HDF5 file specified
+ * \li --dst-vfd-info VFD-specific info to pass to the VFL driver used for
+ * opening the output HDF5 file specified
+ * \li --latest Use latest version of file format
+ * This option will take precedence over the options
+ * --low and --high
+ * \li --low=BOUND The low bound for library release versions to use
+ * when creating objects in the file
+ * (default is #H5F_LIBVER_EARLIEST)
+ * \li --high=BOUND The high bound for library release versions to use
+ * when creating objects in the file
+ * (default is #H5F_LIBVER_LATEST)
+ * \li --merge Follow external soft link recursively and merge data
+ * \li --prune Do not follow external soft links and remove link
+ * \li --merge --prune Follow external link, merge data and remove dangling link
+ * \li --compact=L1 Maximum number of links in header messages
+ * \li --indexed=L2 Minimum number of links in the indexed format
+ * \li --ssize=S[:F] Shared object header message minimum size
+ * \li --minimum=M Do not apply the filter to datasets smaller than M
+ * \li --file=E Name of file E with the --file and --layout options
+ * \li --ublock=U Name of file U with user block data to be added
+ * \li --block=B Size of user block to be added
+ * \li --metadata_block_size=A Metadata block size for #H5Pset_meta_block_size
+ * \li --threshold=T Threshold value for #H5Pset_alignment
+ * \li --alignment=A Alignment value for #H5Pset_alignment
+ * \li --sort_by=Q Sort groups and attributes by index Q
+ * \li --sort_order=Z Sort groups and attributes by order Z
+ * \li --filter=FILT Filter type
+ * \li --layout=LAYT Layout type
+ * \li --fs_strategy=FS_STRATEGY File space management strategy for
+ * #H5Pset_file_space_strategy
+ * \li --fs_persist=FS_PERSIST Persisting or not
+ * persisting free-space for #H5Pset_file_space_strategy
+ * \li --fs_threshold=FS_THRESHOLD : Free-space section
+ * threshold for #H5Pset_file_space_strategy
+ * \li --fs_pagesize=FS_PAGESIZE File space page size for #H5Pset_file_space_page_size
+ *
+ * \subsubsection subsubsec_cltools_h5repack_options_args Arguments to Certain Options
+ * \li M - is an integer greater than 1, size of dataset in bytes (default is 0)
+ * \li E - is a filename.
+ * \li S - is an integer
+ * \li U - is a filename.
+ * \li T - is an integer
+ * \li A - is an integer greater than zero
+ * \li Q - is the sort index type for the input file. It can be "name" or
+ * "creation_order" (default)
+ * \li Z - is the sort order type for the input file. It can be "descending" or
+ * "ascending" (default)
+ * \li B - is the user block size, any value that is 512 or greater and is
+ * a power of 2 (1024 default)
+ * \li F - is the shared object header message type, any of . If F is not specified, S applies to all messages
+ *
+ * \subsubsection subsubsec_cltools_h5repack_options_bound Library Version Bounds
+ * BOUND is an integer indicating the library release versions to use when
+ * creating objects in the file (see #H5Pset_libver_bounds()):
+ * \li 0 This is #H5F_LIBVER_EARLIEST in #H5F_libver_t struct
+ * \li 1 This is #H5F_LIBVER_V18 in #H5F_libver_t struct
+ * \li 2 This is #H5F_LIBVER_V110 in #H5F_libver_t struct
+ * \li 3 This is #H5F_LIBVER_V112 in #H5F_libver_t struct
+ * \li 4 This is #H5F_LIBVER_V114 in #H5F_libver_t struct
+ * \li 5 This is #H5F_LIBVER_V116 in #H5F_libver_t struct
+ * \li #H5F_LIBVER_LATEST is aliased to #H5F_LIBVER_V116 for this release
+ *
+ * \subsubsection subsubsec_cltools_h5repack_options_fs File Strategy Settings
+ * FS_STRATEGY is a string indicating the file space strategy used:
+ * \li FSM_AGGR
+ * The mechanisms used in managing file space are free-space
+ * managers, aggregators and virtual file driver.
+ * \li PAGE
+ * The mechanisms used in managing file space are free-space
+ * managers with embedded paged aggregation and virtual file driver.
+ * \li AGGR
+ * The mechanisms used in managing file space are aggregators and
+ * virtual file driver.
+ * \li NONE
+ * The mechanisms used in managing file space are virtual file
+ * driver.
+ * \li The default strategy when not set is \b FSM_AGGR without persisting free-space.
+ *
+ * \li FS_PERSIST is 1 for persisting free-space or 0 for not persisting free-space.
+ * The default when not set is not persisting free-space.
+ * The value is ignored for \b AGGR and \b NONE strategies.
+ *
+ * \li FS_THRESHOLD is the minimum size (in bytes) of free-space sections to be
+ * tracked by the library. The default when not set is 1.
+ * The value is ignored for \b AGGR and \b NONE strategies.
+ *
+ * \li FS_PAGESIZE is the size (in bytes) >=512 that is used by the library when
+ * the file space strategy \b PAGE is used.
+ * The default when not set is 4096.
+ *
+ * \subsubsection subsubsec_cltools_h5repack_options_filt Applying a Third-party Filter
+ * FILT - is a string with the format:
+ *
+ * \li \:\=\
+ *
+ * \li \ is a comma separated list of object names, meaning apply
+ * compression only to those objects. If no names are specified, the filter
+ * is applied to all objects
+ * \li \ can be:
+ * - GZIP to apply the HDF5 GZIP filter (GZIP compression)
+ * - SZIP to apply the HDF5 SZIP filter (SZIP compression)
+ * - SHUF to apply the HDF5 shuffle filter
+ * - FLET to apply the HDF5 checksum filter
+ * - NBIT to apply the HDF5 NBIT filter (NBIT compression)
+ * - SOFF to apply the HDF5 Scale/Offset filter
+ * - UD to apply a user defined filter
+ * - NONE to remove all filters
+ * \li \ is optional filter parameter information
+ * - GZIP=\ from 1-9
+ * - SZIP= pixels per block is a even number in
+ * 2-32 and coding method is either EC or NN
+ * - SHUF (no parameter)
+ * - FLET (no parameter)
+ * - NBIT (no parameter)
+ * - SOFF=\ scale_factor is an integer and scale_type
+ * is either IN or DS
+ * - UD=\
+ *
- Required values filter_number, filter_flag, cd_value_count,
+ * value1
- Optional values value2 to valueN
- filter_flag 1
+ * is OPTIONAL or 0 is MANDATORY
- NONE (no parameter)
+ *
+ * \subsubsection subsubsec_cltools_h5repack_options_lay Layout Settings
+ * LAYT - is a string with the format:
+ *
+ * \li \:\=\
+ *
+ * \li \ is a comma separated list of object names, meaning that
+ * layout information is supplied for those objects. If no names are
+ * specified, the layout type is applied to all objects
+ * \li \ can be:
+ * - CHUNK to apply chunking layout
+ * - COMPA to apply compact layout
+ * - CONTI to apply contiguous layout
+ * \li \ is optional layout information
+ * - CHUNK=DIM[xDIM...xDIM], the chunk size of each dimension
+ * - COMPA (no parameter)
+ * - CONTI (no parameter)
+ *
+ * \subsubsection subsubsec_cltools_h5repack_options_note NOTE
+ * The environment variable H5TOOLS_BUFSIZE can be set to
+ * the number of MBs to change the default hyperslab buffer size from 32MB.
+ * \code setenv H5TOOLS_BUFSIZE=64 to double the hyperslab buffer. \endcode
+ *
+ * \subsection subsec_cltools_h5repack_examples Usage Examples
+ *
+ * \li 1) h5repack --verbose --filter=GZIP=1 file1 file2
+ *
+ * GZIP compression with level 1 to all objects
+ *
+ * \li 2) h5repack --verbose --filter=dset1:SZIP=8,NN file1 file2
+ *
+ * SZIP compression with 8 pixels per block and NN coding method to object dset1
+ *
+ * \li 3) h5repack --verbose --layout=dset1,dset2:CHUNK=20x10 --filter=dset3,dset4,dset5:NONE file1 file2
+ *
+ * Chunked layout, with a layout size of 20x10, to objects dset1 and dset2
+ * and remove filters to objects dset3, dset4, dset5
+ *
+ * \li 4) h5repack --latest --compact=10 --ssize=20:dtype file1 file2
+ *
+ * Using latest file format with maximum compact group size of 10 and
+ * minimum shared datatype size of 20
+ *
+ * \li 5) h5repack --filter=SHUF --filter=GZIP=1 file1 file2
+ *
+ * Add both filters SHUF and GZIP in this order to all datasets
+ *
+ * \li 6) h5repack --filter=UD=307,0,1,9 file1 file2
+ *
+ * Add bzip2 filter to all datasets
+ *
+ * \li 7) h5repack --low=0 --high=1 file1 file2
+ *
+ * Set low=H5F_LIBVER_EARLIEST and high=H5F_LIBVER_V18 via
+ * H5Pset_libver_bounds() when creating the repacked file, file2
+ *
+ *
+ */
+
#include "H5private.h"
#include "hdf5.h"
#include "h5trav.h"
diff --git a/tools/src/h5stat/h5stat.h b/tools/src/h5stat/h5stat.h
new file mode 100644
index 0000000000..848480eb2b
--- /dev/null
+++ b/tools/src/h5stat/h5stat.h
@@ -0,0 +1,65 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Copyright by The HDF Group. *
+ * All rights reserved. *
+ * *
+ * This file is part of HDF5. The full HDF5 copyright notice, including *
+ * terms governing use, modification, and redistribution, is contained in *
+ * the COPYING file, which can be found at the root of the source code *
+ * distribution tree, or in https://www.hdfgroup.org/licenses. *
+ * If you do not have access to either file, you may request a copy from *
+ * help@hdfgroup.org. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+#ifndef H5STAT_H
+#define H5STAT_H
+
+/** \page H5TOOL_ST_UG The HDF5 h5stat Tool
+ *
+ * \section sec_cltools_h5stat h5stat
+ *
+ * \subsection subsec_cltools_h5stat_intro Introduction
+ * With h5stat, you can dump stats from an HDF5 file.
+ *
+ * \subsection subsec_cltools_h5stat_usage Usage
+ * h5stat [OPTIONS] file
+ *
+ * \subsection subsec_cltools_h5stat_error Error Report Option
+ * \li --enable-error-stack Prints messages from the HDF5 error stack as they occur.
+ * Optional value 2 also prints file open errors, --enable-error-stack=2.
+ *
+ * \subsection subsec_cltools_h5stat_options Options
+ * \li --help Print a usage message and exit
+ * \li --version Print the library version number and exit
+ * \li --file Print file information
+ * \li --filemetadata Print file space information for file's metadata
+ * \li --group Print group information
+ * \li --links=N Set the threshold for the # of links when printing
+ * information for small groups. N is an integer greater
+ * than 0. The default threshold is 10.
+ * \li --groupmetadata Print file space information for groups' metadata
+ * \li --dset Print dataset information
+ * \li --dims=N Set the threshold for the dimension sizes when printing
+ * information for small datasets. N is an integer greater
+ * than 0. The default threshold is 10.
+ * \li --dsetmetadata Print file space information for datasets' metadata
+ * \li --dtypemetadata Print datasets' datatype information
+ * \li --attribute Print attribute information
+ * \li --numattrs=N Set the threshold for the number of attributes when printing
+ * information for small number of attributes. N is an integer greater
+ * than 0. The default threshold is 10.
+ * \li --freespace Print free space information
+ * \li --summary Print summary of file space information
+ * \li --page-buffer-size=N Set the page buffer cache size, N=non-negative integers
+ * \li --s3-cred=C Supply S3 authentication information to "ros3" vfd.
+ * Accepts tuple of \code (\,\,\) \endcode.
+ * If absent or C = \code (,,) \endcode defaults to no-authentication.
+ * Has no effect if vfd flag not set to "ros3".
+ * \li --hdfs-attrs=A Supply configuration information to Hadoop VFD.
+ * Accepts tuple of \code (\,\,
+ * ...\,\,\) \endcode
+ * If absent or A == \code (,,,,) \endcode all default values are used.
+ * Has no effect if vfd flag is not 'hdfs'.
+ * If an attribute is empty, a default value will be used.
+ *
+ */
+
+#endif /* H5STAT_H */
diff --git a/tools/src/misc/h5clear.h b/tools/src/misc/h5clear.h
new file mode 100644
index 0000000000..354b2f6ef3
--- /dev/null
+++ b/tools/src/misc/h5clear.h
@@ -0,0 +1,67 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Copyright by The HDF Group. *
+ * All rights reserved. *
+ * *
+ * This file is part of HDF5. The full HDF5 copyright notice, including *
+ * terms governing use, modification, and redistribution, is contained in *
+ * the COPYING file, which can be found at the root of the source code *
+ * distribution tree, or in https://www.hdfgroup.org/licenses. *
+ * If you do not have access to either file, you may request a copy from *
+ * help@hdfgroup.org. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+#ifndef H5CLEAR_H
+#define H5CLEAR_H
+
+/** \page H5TOOL_CR_UG The HDF5 h5clear Tool
+ *
+ * \section sec_cltools_h5clear h5clear
+ *
+ * \subsection subsec_cltools_h5clear_intro Introduction
+ * With h5clear, you can clear the superblock status flag field, remove the metadata cache image, print
+ * the EOA and EOF, or set the EOA of a file. It is not a general repair tool and should not
+ * be used to fix file corruption. If a process doesn't shut down cleanly, the
+ * superblock mark can be left that prevents opening a file without SWMR. Then,
+ * h5clear can be used to remove this superblock mark so that the file can be inspected
+ * and appropriate actions can be taken.
+ *
+ * \subsection subsec_cltools_h5clear_usage Usage
+ * h5clear [OPTIONS] file_name
+ *
+ * \subsection subsec_cltools_h5clear_error Error Report Option
+ * \li --enable-error-stack Prints messages from the HDF5 error stack as they occur.
+ * Optional value 2 also prints file open errors, --enable-error-stack=2.
+ *
+ * \subsection subsec_cltools_h5clear_options Options
+ * \li --help Print a usage message and exit
+ * \li --version Print the library version number and exit
+ * \li --status Clear the status_flags field in the file's superblock
+ * \li --image Remove the metadata cache image from the file
+ * \li --filesize Print the file's EOA and EOF
+ * \li --increment=C Set the file's EOA to the maximum of (EOA, EOF) + C for
+ * the file \.
+ * C is >= 0; C is optional and will default to 1M when not set.
+ * This option helps to repair a crashed SWMR file when the stored
+ * EOA in the superblock is different from the actual EOF.
+ * The file's EOA and EOF will be the same after applying
+ * this option to the file.
+ *
+ * \subsection subsec_cltools_h5clear_examples Usage Examples
+ * \li 1) h5clear -s file_name
+ *
+ * Clear the status_flags field in the superblock of the HDF5 file .
+ *
+ * \li 2) h5clear -m file_name
+ *
+ * Remove the metadata cache image from the HDF5 file .
+ *
+ * \li 3) h5clear --increment file_name
+ *
+ * Set the EOA to the maximum of (EOA, EOF) + 1M for the file .
+ *
+ * \li 4) h5clear --increment=512 file_name
+ *
+ * Set the EOA to the maximum of (EOA, EOF) + 512 for the file\.
+ *
+ */
+
+#endif /* H5CLEAR_H */
diff --git a/tools/src/misc/h5debug.h b/tools/src/misc/h5debug.h
new file mode 100644
index 0000000000..e946681a6a
--- /dev/null
+++ b/tools/src/misc/h5debug.h
@@ -0,0 +1,31 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Copyright by The HDF Group. *
+ * All rights reserved. *
+ * *
+ * This file is part of HDF5. The full HDF5 copyright notice, including *
+ * terms governing use, modification, and redistribution, is contained in *
+ * the COPYING file, which can be found at the root of the source code *
+ * distribution tree, or in https://www.hdfgroup.org/licenses. *
+ * If you do not have access to either file, you may request a copy from *
+ * help@hdfgroup.org. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+#ifndef H5DEBUG_H
+#define H5DEBUG_H
+
+/** \page H5TOOL_DG_UG The HDF5 h5debug Tool
+ *
+ * \section sec_cltools_h5debug h5debug
+ *
+ * \subsection subsec_cltools_h5debug_intro Introduction
+ * With h5debug, you can debug an existing HDF5 file at a low level.
+ *
+ * \subsection subsec_cltools_h5debug_usage Usage
+ * h5debug filename [signature-addr [extra]*]
+ *
+ * \subsection subsec_cltools_h5debug_options Options
+ * \li signature-addr Primary data structure to dump
+ * \li extra Extra arguments for primary data structure
+ *
+ */
+
+#endif /* H5DEBUG_H */
diff --git a/tools/src/misc/h5delete.h b/tools/src/misc/h5delete.h
new file mode 100644
index 0000000000..5faedc023a
--- /dev/null
+++ b/tools/src/misc/h5delete.h
@@ -0,0 +1,30 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Copyright by The HDF Group. *
+ * All rights reserved. *
+ * *
+ * This file is part of HDF5. The full HDF5 copyright notice, including *
+ * terms governing use, modification, and redistribution, is contained in *
+ * the COPYING file, which can be found at the root of the source code *
+ * distribution tree, or in https://www.hdfgroup.org/licenses. *
+ * If you do not have access to either file, you may request a copy from *
+ * help@hdfgroup.org. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+#ifndef H5DELETE_H
+#define H5DELETE_H
+
+/** \page H5TOOL_DT_UG The HDF5 h5delete Tool
+ *
+ * \section sec_cltools_h5delete h5delete
+ *
+ * \subsection subsec_cltools_h5delete_intro Introduction
+ * With h5delete, you can delete an HDF5 file.
+ *
+ * \subsection subsec_cltools_h5delete_usage Usage
+ * h5delete [-f] \
+ *
+ * \subsection subsec_cltools_h5delete_options Options
+ * \li -f Suppress output
+ *
+ */
+
+#endif /* H5DELETE_H */
diff --git a/tools/src/misc/h5mkgrp.h b/tools/src/misc/h5mkgrp.h
new file mode 100644
index 0000000000..cb0b2740bc
--- /dev/null
+++ b/tools/src/misc/h5mkgrp.h
@@ -0,0 +1,53 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Copyright by The HDF Group. *
+ * All rights reserved. *
+ * *
+ * This file is part of HDF5. The full HDF5 copyright notice, including *
+ * terms governing use, modification, and redistribution, is contained in *
+ * the COPYING file, which can be found at the root of the source code *
+ * distribution tree, or in https://www.hdfgroup.org/licenses. *
+ * If you do not have access to either file, you may request a copy from *
+ * help@hdfgroup.org. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+#ifndef H5MKGRP_H
+#define H5MKGRP_H
+
+/** \page H5TOOL_MG_UG The HDF5 h5mkgrp Tool
+ *
+ * \section sec_cltools_h5mkgrp h5mkgrp
+ *
+ * \subsection subsec_cltools_h5mkgrp_intro Introduction
+ * With h5mkgrp, you can create group(s) in an HDF5 file
+ *
+ * \subsection subsec_cltools_h5mkgrp_usage Usage
+ * h5mkgrp [OPTIONS] FILE GROUP
+ *
+ * \subsection subsec_cltools_h5mkgrp_error Error Report Option
+ * \li--enable-error-stack Prints messages from the HDF5 error stack as they occur.
+ * Optional value 2 also prints file open errors, --enable-error-stack=2.
+ *
+ * \subsection subsec_cltools_h5mkgrp_options Options
+ * \li --help Print a usage message and exit
+ * \li --version Print the library version number and exit
+ * \li --verbose Print information about OBJECTS and OPTIONS
+ * \li --latest Use latest version of file format to create groups
+ * \li --parents No error if existing, make parent groups as needed
+ * \li --vol-value Value (ID) of the VOL connector to use for opening the
+ * HDF5 file specified
+ * \li --vol-name Name of the VOL connector to use for opening the
+ * HDF5 file specified
+ * \li --vol-info VOL-specific info to pass to the VOL connector used for
+ * opening the HDF5 file specified.
+ * If none of the above options are used to specify a VOL, then
+ * the VOL named by HDF5_VOL_CONNECTOR (or the native VOL connector,
+ * if that environment variable is unset) will be used
+ * \li --vfd-value Value (ID) of the VFL driver to use for opening the
+ * HDF5 file specified
+ * \li --vfd-name Name of the VFL driver to use for opening the
+ * HDF5 file specified
+ * \li --vfd-info VFD-specific info to pass to the VFL driver used for
+ * opening the HDF5 file specified
+ *
+ */
+
+#endif /* H5MKGRP_H */
diff --git a/tools/src/misc/h5repart.h b/tools/src/misc/h5repart.h
new file mode 100644
index 0000000000..9452bd5b6f
--- /dev/null
+++ b/tools/src/misc/h5repart.h
@@ -0,0 +1,47 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Copyright by The HDF Group. *
+ * All rights reserved. *
+ * *
+ * This file is part of HDF5. The full HDF5 copyright notice, including *
+ * terms governing use, modification, and redistribution, is contained in *
+ * the COPYING file, which can be found at the root of the source code *
+ * distribution tree, or in https://www.hdfgroup.org/licenses. *
+ * If you do not have access to either file, you may request a copy from *
+ * help@hdfgroup.org. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+#ifndef H5REPART_H
+#define H5REPART_H
+
+/** \page H5TOOL_RT_UG The HDF5 h5repart Tool
+ *
+ * \section sec_cltools_h5repart h5repart
+ *
+ * \subsection subsec_cltools_h5repart_intro Introduction
+ * With h5repart, you can repartition a file family. This program can be used to
+ * split a single file into a family of files, join a family of
+ * files into a single file, or copy one family to another while
+ * changing the size of the family members. It can also be used
+ * to copy a single file to a single file with holes.
+ *
+ * \subsection subsec_cltools_h5repart_usage Usage
+ * h5repart [OPTIONS] SRC DST
+ *
+ * \subsection subsec_cltools_h5repart_objs SRC/DST
+ * \li SRC The name of the source file
+ * \li DST The name of the destination files
+ *
+ * \subsection subsec_cltools_h5repart_options Options
+ * \li -v Produce verbose output
+ * \li -V Print version number and exit
+ * \li -b N The I/O block size, defaults to 1kB
+ * \li -m N The destination member size or 1GB
+ * \li -family_to_sec2 Deprecated version of -family_to_single (below)
+ * \li -family_to_single Change file driver from family to the default single-file
+ * VFD (windows or sec2)
+ *
+ * Sizes may be suffixed with 'g' for GB, 'm' for MB or 'k' for kB.
+ * File family names include an integer printf format such as '%%d'
+ *
+ */
+
+#endif /* H5REPART_H */
diff --git a/tools/test/h5copy/CMakeTests.cmake b/tools/test/h5copy/CMakeTests.cmake
index 0069eaf6ae..d4315ef134 100644
--- a/tools/test/h5copy/CMakeTests.cmake
+++ b/tools/test/h5copy/CMakeTests.cmake
@@ -549,7 +549,7 @@
ADD_H5_TEST2 (grp_dsets_rename 2 ${HDF_FILE1}.h5 grp_dsets grp_rename -v -s grp_dsets -d /grp_rename/grp_dsets)
endif ()
- # "Test copying objects into group hier. that doesn't exist yet in destination file"
+ # "Test copying objects into group that doesn't exist yet in destination file"
ADD_H5_TEST (A_B1_simple 0 ${HDF_FILE1}.h5 -vp -s simple -d /A/B1/simple)
ADD_H5_TEST (A_B2_simple2 0 ${HDF_FILE1}.h5 -vp -s simple -d /A/B2/simple2)
ADD_H5_TEST (C_D_simple 0 ${HDF_FILE1}.h5 -vp -s /grp_dsets/simple -d /C/D/simple)