summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAllen Byrne <byrn@hdfgroup.org>2013-08-12 19:54:49 (GMT)
committerAllen Byrne <byrn@hdfgroup.org>2013-08-12 19:54:49 (GMT)
commita003143ded20bc0d3cc0da3b04170bf2a9602482 (patch)
treec71ec5b50a81aa721f6384eef5bc98c1e92655d5
parentca0bd915dbfac669f7fd962196846724d89982d2 (diff)
downloadhdf5-a003143ded20bc0d3cc0da3b04170bf2a9602482.zip
hdf5-a003143ded20bc0d3cc0da3b04170bf2a9602482.tar.gz
hdf5-a003143ded20bc0d3cc0da3b04170bf2a9602482.tar.bz2
[svn-r23992] HDFFV-8490 and H5UNJAM file handling. Merge from trunk.
Tested: local linux
-rw-r--r--tools/h5dump/h5dump.c259
-rw-r--r--tools/h5jam/h5unjam.c149
-rw-r--r--tools/lib/h5tools.c267
-rw-r--r--tools/lib/h5tools.h8
-rw-r--r--tools/testfiles/h5dump-help.txt73
-rw-r--r--tools/testfiles/tnofilename-with-packed-bits.ddl73
-rw-r--r--tools/testfiles/tpbitsIncomplete.ddl73
-rw-r--r--tools/testfiles/tpbitsLengthExceeded.ddl73
-rw-r--r--tools/testfiles/tpbitsLengthPositive.ddl73
-rw-r--r--tools/testfiles/tpbitsMaxExceeded.ddl73
-rw-r--r--tools/testfiles/tpbitsOffsetExceeded.ddl73
-rw-r--r--tools/testfiles/tpbitsOffsetNegative.ddl73
12 files changed, 695 insertions, 572 deletions
diff --git a/tools/h5dump/h5dump.c b/tools/h5dump/h5dump.c
index 9b304bd..be6ee7f 100644
--- a/tools/h5dump/h5dump.c
+++ b/tools/h5dump/h5dump.c
@@ -230,57 +230,61 @@ usage(const char *prog)
PRINTSTREAM(rawoutstream, "usage: %s [OPTIONS] files\n", prog);
PRINTVALSTREAM(rawoutstream, " OPTIONS\n");
PRINTVALSTREAM(rawoutstream, " -h, --help Print a usage message and exit\n");
+ PRINTVALSTREAM(rawoutstream, " -V, --version Print version number and exit\n");
+ PRINTVALSTREAM(rawoutstream, "--------------- File Options ---------------\n");
PRINTVALSTREAM(rawoutstream, " -n, --contents Print a list of the file contents and exit\n");
PRINTVALSTREAM(rawoutstream, " Optional value 1 also prints attributes.\n");
PRINTVALSTREAM(rawoutstream, " -B, --superblock Print the content of the super block\n");
PRINTVALSTREAM(rawoutstream, " -H, --header Print the header only; no data is displayed\n");
- PRINTVALSTREAM(rawoutstream, " -A, --onlyattr Print the header and value of attributes\n");
- PRINTVALSTREAM(rawoutstream, " Optional value 0 suppresses printing attributes.\n");
- PRINTVALSTREAM(rawoutstream, " -i, --object-ids Print the object ids\n");
- PRINTVALSTREAM(rawoutstream, " -r, --string Print 1-byte integer datasets as ASCII\n");
- PRINTVALSTREAM(rawoutstream, " -e, --escape Escape non printing characters\n");
- PRINTVALSTREAM(rawoutstream, " -V, --version Print version number and exit\n");
+ PRINTVALSTREAM(rawoutstream, " -f D, --filedriver=D Specify which driver to open the file with\n");
+ PRINTVALSTREAM(rawoutstream, " -o F, --output=F Output raw data into file F\n");
+ PRINTVALSTREAM(rawoutstream, " -b B, --binary=B Binary file output, of form B\n");
+ PRINTVALSTREAM(rawoutstream, " -O F, --ddl=F Output ddl text into file F\n");
+ PRINTVALSTREAM(rawoutstream, " Do not use filename F to suppress ddl display\n");
+ PRINTVALSTREAM(rawoutstream, "--------------- Object Options ---------------\n");
PRINTVALSTREAM(rawoutstream, " -a P, --attribute=P Print the specified attribute\n");
PRINTVALSTREAM(rawoutstream, " If an attribute name contains a slash (/), escape the\n");
PRINTVALSTREAM(rawoutstream, " slash with a preceding backslash (\\).\n");
PRINTVALSTREAM(rawoutstream, " (See example section below.)\n");
PRINTVALSTREAM(rawoutstream, " -d P, --dataset=P Print the specified dataset\n");
- PRINTVALSTREAM(rawoutstream, " -y, --noindex Do not print array indices with the data\n");
- PRINTVALSTREAM(rawoutstream, " -p, --properties Print dataset filters, storage layout and fill value\n");
- PRINTVALSTREAM(rawoutstream, " -f D, --filedriver=D Specify which driver to open the file with\n");
PRINTVALSTREAM(rawoutstream, " -g P, --group=P Print the specified group and all members\n");
PRINTVALSTREAM(rawoutstream, " -l P, --soft-link=P Print the value(s) of the specified soft link\n");
- PRINTVALSTREAM(rawoutstream, " -o F, --output=F Output raw data into file F\n");
- PRINTVALSTREAM(rawoutstream, " -b B, --binary=B Binary file output, of form B\n");
PRINTVALSTREAM(rawoutstream, " -t P, --datatype=P Print the specified named datatype\n");
- PRINTVALSTREAM(rawoutstream, " -w N, --width=N Set the number of columns of output. A value of 0 (zero)\n");
- PRINTVALSTREAM(rawoutstream, " sets the number of columns to the maximum (65535).\n");
- PRINTVALSTREAM(rawoutstream, " Default width is 80 columns.\n");
+ PRINTVALSTREAM(rawoutstream, " -A, --onlyattr Print the header and value of attributes\n");
+ PRINTVALSTREAM(rawoutstream, " Optional value 0 suppresses printing attributes.\n");
+ PRINTVALSTREAM(rawoutstream, "--------------- Object Property Options ---------------\n");
+ PRINTVALSTREAM(rawoutstream, " -i, --object-ids Print the object ids\n");
+ PRINTVALSTREAM(rawoutstream, " -p, --properties Print dataset filters, storage layout and fill value\n");
+ PRINTVALSTREAM(rawoutstream, " -M L, --packedbits=L Print packed bits as unsigned integers, using mask\n");
+ PRINTVALSTREAM(rawoutstream, " format L for an integer dataset specified with\n");
+ PRINTVALSTREAM(rawoutstream, " option -d. L is a list of offset,length values,\n");
+ PRINTVALSTREAM(rawoutstream, " separated by commas. Offset is the beginning bit in\n");
+ PRINTVALSTREAM(rawoutstream, " the data value and length is the number of bits of\n");
+ PRINTVALSTREAM(rawoutstream, " the mask.\n");
+ PRINTVALSTREAM(rawoutstream, " -R, --region Print dataset pointed by region references\n");
+ PRINTVALSTREAM(rawoutstream, "--------------- Formatting Options ---------------\n");
+ PRINTVALSTREAM(rawoutstream, " -e, --escape Escape non printing characters\n");
+ PRINTVALSTREAM(rawoutstream, " -r, --string Print 1-byte integer datasets as ASCII\n");
+ PRINTVALSTREAM(rawoutstream, " -y, --noindex Do not print array indices with the data\n");
PRINTVALSTREAM(rawoutstream, " -m T, --format=T Set the floating point output format\n");
PRINTVALSTREAM(rawoutstream, " -q Q, --sort_by=Q Sort groups and attributes by index Q\n");
PRINTVALSTREAM(rawoutstream, " -z Z, --sort_order=Z Sort groups and attributes by order Z\n");
- PRINTVALSTREAM(rawoutstream,
- " -M L, --packedbits=L Print packed bits as unsigned integers, using mask\n"
- " format L for an integer dataset specified with\n"
- " option -d. L is a list of offset,length values,\n"
- " separated by commas. Offset is the beginning bit in\n"
- " the data value and length is the number of bits of\n"
- " the mask.\n"
- );
- PRINTVALSTREAM(rawoutstream, " -R, --region Print dataset pointed by region references\n");
+ PRINTVALSTREAM(rawoutstream, " --enable-error-stack Prints messages from the HDF5 error stack as they\n");
+ PRINTVALSTREAM(rawoutstream, " occur.\n");
+ PRINTVALSTREAM(rawoutstream, " --no-compact-subset Disable compact form of subsetting and allow the use\n");
+ PRINTVALSTREAM(rawoutstream, " of \"[\" in dataset names.\n");
+ PRINTVALSTREAM(rawoutstream, " -w N, --width=N Set the number of columns of output. A value of 0 (zero)\n");
+ PRINTVALSTREAM(rawoutstream, " sets the number of columns to the maximum (65535).\n");
+ PRINTVALSTREAM(rawoutstream, " Default width is 80 columns.\n");
+ PRINTVALSTREAM(rawoutstream, "--------------- XML Options ---------------\n");
PRINTVALSTREAM(rawoutstream, " -x, --xml Output in XML using Schema\n");
PRINTVALSTREAM(rawoutstream, " -u, --use-dtd Output in XML using DTD\n");
PRINTVALSTREAM(rawoutstream, " -D U, --xml-dtd=U Use the DTD or schema at U\n");
PRINTVALSTREAM(rawoutstream, " -X S, --xml-ns=S (XML Schema) Use qualified names n the XML\n");
PRINTVALSTREAM(rawoutstream, " \":\": no namespace, default: \"hdf5:\"\n");
PRINTVALSTREAM(rawoutstream, " E.g., to dump a file called `-f', use h5dump -- -f\n");
- PRINTVALSTREAM(rawoutstream, " --enable-error-stack Prints messages from the HDF5 error stack as they\n");
- PRINTVALSTREAM(rawoutstream, " occur.\n");
- PRINTVALSTREAM(rawoutstream, " --no-compact-subset Disable compact form of subsetting and allow the use\n");
- PRINTVALSTREAM(rawoutstream, " of \"[\" in dataset names.\n");
- PRINTVALSTREAM(rawoutstream, " -O F, --ddl=F Output ddl text into file F\n");
- PRINTVALSTREAM(rawoutstream, " Do not use filename F to suppress ddl display\n");
PRINTVALSTREAM(rawoutstream, "\n");
+ PRINTVALSTREAM(rawoutstream, "--------------- Subsetting Options ---------------\n");
PRINTVALSTREAM(rawoutstream, " Subsetting is available by using the following options with a dataset\n");
PRINTVALSTREAM(rawoutstream, " attribute. Subsetting is done by selecting a hyperslab from the data.\n");
PRINTVALSTREAM(rawoutstream, " Thus, the options mirror those for performing a hyperslab selection.\n");
@@ -296,20 +300,13 @@ usage(const char *prog)
PRINTVALSTREAM(rawoutstream, " number of dimensions in the dataspace being queried\n");
PRINTVALSTREAM(rawoutstream, " (Alternate compact form of subsetting is described in the Reference Manual)\n");
PRINTVALSTREAM(rawoutstream, "\n");
+ PRINTVALSTREAM(rawoutstream, "--------------- Option Argument Conventions ---------------\n");
PRINTVALSTREAM(rawoutstream, " D - is the file driver to use in opening the file. Acceptable values\n");
PRINTVALSTREAM(rawoutstream, " are \"sec2\", \"family\", \"split\", \"multi\", \"direct\", and \"stream\". Without\n");
PRINTVALSTREAM(rawoutstream, " the file driver flag, the file will be opened with each driver in\n");
PRINTVALSTREAM(rawoutstream, " turn and in the order specified above until one driver succeeds\n");
PRINTVALSTREAM(rawoutstream, " in opening the file.\n");
- PRINTVALSTREAM(rawoutstream, " These are the letters that are appended to the file name(without .h5) when opening\n");
- PRINTVALSTREAM(rawoutstream, " names for the split(m,r) and multi(s,b,r,g,l,o) drivers. They are:\n");
- PRINTVALSTREAM(rawoutstream, " m: All meta data when using the split driver.\n");
- PRINTVALSTREAM(rawoutstream, " s: The userblock, superblock, and driver info block\n");
- PRINTVALSTREAM(rawoutstream, " b: B-tree nodes\n");
- PRINTVALSTREAM(rawoutstream, " r: Dataset raw data\n");
- PRINTVALSTREAM(rawoutstream, " g: Global heap\n");
- PRINTVALSTREAM(rawoutstream, " l: local heap (object names)\n");
- PRINTVALSTREAM(rawoutstream, " o: object headers\n");
+ PRINTVALSTREAM(rawoutstream, " See examples below for family, split, and multi driver special file name usage.\n");
PRINTVALSTREAM(rawoutstream, "\n");
PRINTVALSTREAM(rawoutstream, " F - is a filename.\n");
PRINTVALSTREAM(rawoutstream, " P - is the full path from the root group to the object.\n");
@@ -324,7 +321,7 @@ usage(const char *prog)
PRINTVALSTREAM(rawoutstream, " Q - is the sort index type. It can be \"creation_order\" or \"name\" (default)\n");
PRINTVALSTREAM(rawoutstream, " Z - is the sort order type. It can be \"descending\" or \"ascending\" (default)\n");
PRINTVALSTREAM(rawoutstream, "\n");
- PRINTVALSTREAM(rawoutstream, " Examples:\n");
+ PRINTVALSTREAM(rawoutstream, "--------------- Examples ---------------\n");
PRINTVALSTREAM(rawoutstream, "\n");
PRINTVALSTREAM(rawoutstream, " 1) Attribute foo of the group /bar_none in file quux.h5\n");
PRINTVALSTREAM(rawoutstream, "\n");
@@ -355,6 +352,14 @@ usage(const char *prog)
PRINTVALSTREAM(rawoutstream, "\n");
PRINTVALSTREAM(rawoutstream, " h5dump -d /foo -f split splitfile\n");
PRINTVALSTREAM(rawoutstream, "\n");
+ PRINTVALSTREAM(rawoutstream, " 7) Dataset foo in multi files mf-s.h5, mf-b.h5, mf-r.h5, mf-g.h5, mf-l.h5 and mf-o.h5\n");
+ PRINTVALSTREAM(rawoutstream, "\n");
+ PRINTVALSTREAM(rawoutstream, " h5dump -d /foo -f multi mf\n");
+ PRINTVALSTREAM(rawoutstream, "\n");
+ PRINTVALSTREAM(rawoutstream, " 8) Dataset foo in family files fam00000.h5 fam00001.h5 and fam00002.h5\n");
+ PRINTVALSTREAM(rawoutstream, "\n");
+ PRINTVALSTREAM(rawoutstream, " h5dump -d /foo -f family fam%05d.h5\n");
+ PRINTVALSTREAM(rawoutstream, "\n");
}
@@ -481,172 +486,6 @@ table_list_free(void)
} /* end table_list_free() */
/*-------------------------------------------------------------------------
- * Function: set_data_output_file
- *
- * Purpose: Open fname as the output file for dataset raw data.
- * Set rawdatastream as its file stream.
- *
- * Return: 0 -- succeeded
- * negative -- failed
- *
- * Programmer: Albert Cheng, 2000/09/30
- *
- * Modifications:
- * pvn June, 1, 2006. Add a switch for binary output
- *
- *-------------------------------------------------------------------------
- */
-static int
-set_data_output_file(const char *fname, int is_bin)
-{
- int retvalue = FAIL;
- FILE *f; /* temporary holding place for the stream pointer
- * so that rawdatastream is changed only when succeeded */
-
- if (rawdatastream && rawdatastream != stdout) {
- if (HDfclose(rawdatastream))
- HDperror("closing rawdatastream");
- else
- rawdatastream = NULL;
- }
-
- /* First check if filename is string "NULL" */
- if (fname != NULL) {
- /* binary output */
- if (is_bin) {
- if ((f = HDfopen(fname, "wb")) != NULL) {
- rawdatastream = f;
- retvalue = SUCCEED;
- }
- }
- else {
- if ((f = HDfopen(fname, "w")) != NULL) {
- rawdatastream = f;
- retvalue = SUCCEED;
- }
- }
- }
- else {
- rawdatastream = NULL;
- retvalue = SUCCEED;
- }
-
- return retvalue;
-}
-
-/*-------------------------------------------------------------------------
- * Function: set_attr_output_file
- *
- * Purpose: Open fname as the output file for attribute raw data.
- * Set rawattrstream as its file stream.
- *
- * Return: 0 -- succeeded
- * negative -- failed
- *
- *-------------------------------------------------------------------------
- */
-static int
-set_attr_output_file(const char *fname, int is_bin)
-{
- int retvalue = FAIL;
- FILE *f; /* temporary holding place for the stream pointer
- * so that rawattrstream is changed only when succeeded */
-
- if (rawattrstream && rawattrstream != stdout) {
- if (HDfclose(rawattrstream))
- HDperror("closing rawattrstream");
- else
- rawattrstream = NULL;
- }
-
- /* First check if filename is string "NULL" */
- if (fname != NULL) {
- if ((f = HDfopen(fname, "w")) != NULL) {
- rawattrstream = f;
- retvalue = SUCCEED;
- }
- }
- else {
- rawattrstream = NULL;
- retvalue = SUCCEED;
- }
-
- return retvalue;
-}
-
-/*-------------------------------------------------------------------------
- * Function: set_output_file
- *
- * Purpose: Open fname as the output file for raw output.
- * Set rawoutstream as its file stream.
- *
- * Return: 0 -- succeeded
- * negative -- failed
- *
- *-------------------------------------------------------------------------
- */
-static int
-set_output_file(const char *fname)
-{
- int retvalue = FAIL;
- FILE *f; /* temporary holding place for the stream pointer
- * so that rawoutstream is changed only when succeeded */
-
- if (rawoutstream && rawoutstream != stdout) {
- if (HDfclose(rawoutstream))
- HDperror("closing rawoutstream");
- else
- rawoutstream = NULL;
- }
- /* First check if filename is string "NULL" */
- if (fname != NULL) {
- if ((f = HDfopen(fname, "w")) != NULL) {
- rawoutstream = f;
- retvalue = SUCCEED;
- }
- }
- else {
- rawoutstream = NULL;
- retvalue = SUCCEED;
- }
-
- return retvalue;
-}
-
-/*-------------------------------------------------------------------------
- * Function: set_error_file
- *
- * Purpose: Open fname as the error output file for dataset raw error.
- * Set rawerrorstream as its file stream.
- *
- * Return: 0 -- succeeded
- * negative -- failed
- *
- *-------------------------------------------------------------------------
- */
-static int
-set_error_file(const char *fname)
-{
- int retvalue = FAIL;
- FILE *f; /* temporary holding place for the stream pointer
- * so that rawerrorstream is changed only when succeeded */
-
- if (rawerrorstream && rawerrorstream != stderr) {
- if (HDfclose(rawerrorstream))
- HDperror("closing rawerrorstream");
- else
- rawerrorstream = NULL;
- }
-
- if ((f = HDfopen(fname, "w")) != NULL) {
- rawerrorstream = f;
- retvalue = SUCCEED;
- }
-
- return retvalue;
-}
-
-/*-------------------------------------------------------------------------
* Function: set_binary_form
*
* Purpose: set the binary form of output by translating from a string input
@@ -1186,7 +1025,7 @@ parse_start:
break;
case 'O':
- if (set_output_file(opt_arg) < 0) {
+ if (h5tools_set_output_file(opt_arg, 0) < 0) {
usage(h5tools_getprogname());
goto error;
}
@@ -1194,20 +1033,20 @@ parse_start:
case 'o':
if ( bin_output ) {
- if (set_data_output_file(opt_arg, 1) < 0) {
+ if (h5tools_set_data_output_file(opt_arg, 1) < 0) {
usage(h5tools_getprogname());
goto error;
}
}
else {
if(display_attr_data && !display_data) {
- if (set_attr_output_file(opt_arg, 0) < 0) {
+ if (h5tools_set_attr_output_file(opt_arg, 0) < 0) {
usage(h5tools_getprogname());
goto error;
}
}
if(display_data || display_all) {
- if (set_data_output_file(opt_arg, 0) < 0) {
+ if (h5tools_set_data_output_file(opt_arg, 0) < 0) {
usage(h5tools_getprogname());
goto error;
}
@@ -1229,7 +1068,7 @@ parse_start:
}
bin_output = TRUE;
if (outfname!=NULL) {
- if (set_data_output_file(outfname, 1) < 0) {
+ if (h5tools_set_data_output_file(outfname, 1) < 0) {
/* failed to set output file */
usage(h5tools_getprogname());
goto error;
diff --git a/tools/h5jam/h5unjam.c b/tools/h5jam/h5unjam.c
index 691e2f2..40358c6 100644
--- a/tools/h5jam/h5unjam.c
+++ b/tools/h5jam/h5unjam.c
@@ -27,7 +27,7 @@
hsize_t write_pad( int , hsize_t );
hsize_t compute_pad( hsize_t );
-herr_t copy_to_file( int , int , ssize_t, ssize_t );
+herr_t copy_to_file( FILE *, FILE * , ssize_t, ssize_t );
int do_delete = FALSE;
char *output_file = NULL;
@@ -137,20 +137,28 @@ static int
parse_command_line(int argc, const char *argv[])
{
int opt = FALSE;
-
- /* parse command line options */
+
+ /* parse command line options */
while ((opt = get_option(argc, argv, s_opts, l_opts)) != EOF) {
switch((char)opt) {
case 'o':
output_file = HDstrdup(opt_arg);
- break;
+ if (output_file)
+ h5tools_set_data_output_file(output_file, 1);
+ break;
case 'i':
input_file = HDstrdup(opt_arg);
- break;
+ if (input_file)
+ h5tools_set_input_file(input_file, 1);
+ break;;
case 'u':
ub_file = HDstrdup(opt_arg);
+ if (ub_file)
+ h5tools_set_output_file(ub_file, 1);
+ else
+ rawoutstream = stdout;
break;
case 'd':
@@ -205,9 +213,6 @@ done:
int
main(int argc, const char *argv[])
{
- int ifid = -1;
- int ufid = -1;
- int h5fid = -1;
void *edata;
H5E_auto2_t func;
hid_t ifile = -1;
@@ -222,24 +227,24 @@ main(int argc, const char *argv[])
h5tools_setprogname(PROGRAMNAME);
h5tools_setstatus(EXIT_SUCCESS);
- /* Disable error reporting */
+ /* Disable error reporting */
H5Eget_auto2(H5E_DEFAULT, &func, &edata);
H5Eset_auto2(H5E_DEFAULT, NULL, NULL);
- /* Initialize h5tools lib */
+ /* Initialize h5tools lib */
h5tools_init();
if(EXIT_FAILURE == parse_command_line(argc, argv))
goto done;
if (input_file == NULL) {
- /* no user block */
+ /* no user block */
error_msg("missing arguemnt for HDF5 file input.\n");
help_ref_msg(stderr);
h5tools_setstatus(EXIT_FAILURE);
goto done;
}
-
+
testval = H5Fis_hdf5(input_file);
if (testval <= 0) {
@@ -283,14 +288,7 @@ main(int argc, const char *argv[])
goto done;
}
- ifid = HDopen(input_file,O_RDONLY,0);
- if(ifid < 0) {
- error_msg("unable to open input HDF5 file \"%s\"\n", input_file);
- h5tools_setstatus(EXIT_FAILURE);
- goto done;
- }
-
- res = HDfstat(ifid, &sbuf);
+ res = HDfstat(HDfileno(rawinstream), &sbuf);
if(res < 0) {
error_msg("Can't stat file \"%s\"\n", input_file);
h5tools_setstatus(EXIT_FAILURE);
@@ -305,43 +303,15 @@ main(int argc, const char *argv[])
goto done;
}
- if (ub_file == NULL) {
- /* write to sdtout */
- ufid = HDdup(1);
- }
- else {
- ufid = HDopen(ub_file,O_WRONLY|O_CREAT|O_TRUNC, 0644 );
-
- if (ufid < 0) {
- error_msg("unable to open user block file for output\"%s\"\n", ub_file);
- h5tools_setstatus(EXIT_FAILURE);
- goto done;
- }
- }
-
if (output_file == NULL) {
- h5fid = HDopen(input_file,O_WRONLY, 0);
-
- if (h5fid < 0) {
error_msg("unable to open output HDF5 file \"%s\"\n", input_file);
h5tools_setstatus(EXIT_FAILURE);
goto done;
- }
}
- else {
- h5fid = HDopen(output_file,O_WRONLY|O_CREAT|O_TRUNC, 0644 );
-
- if (h5fid < 0) {
- error_msg("unable to open output HDF5 file \"%s\"\n", output_file);
- h5tools_setstatus(EXIT_FAILURE);
- goto done;
- }
- }
-
- /* copy from 0 to 'usize - 1' into ufid */
+ /* copy from 0 to 'usize - 1' into ufid */
if (!do_delete) {
- if(copy_to_file(ifid, ufid, 0, (ssize_t) usize) < 0) {
+ if(copy_to_file(rawinstream, rawoutstream, 0, (ssize_t) usize) < 0) {
error_msg("unable to copy user block to output file \"%s\"\n", ub_file);
h5tools_setstatus(EXIT_FAILURE);
goto done;
@@ -349,34 +319,25 @@ main(int argc, const char *argv[])
}
/* copy from usize to end of file into h5fid,
- * starting at end of user block if present
- */
- if(copy_to_file(ifid, h5fid, (ssize_t) usize, (ssize_t)(fsize - (ssize_t)usize)) < 0) {
+ * starting at end of user block if present */
+ if(copy_to_file(rawinstream, rawdatastream, (ssize_t) usize, (ssize_t)(fsize - (ssize_t)usize)) < 0) {
error_msg("unable to copy hdf5 data to output file \"%s\"\n", output_file);
h5tools_setstatus(EXIT_FAILURE);
goto done;
}
-
+
done:
if(input_file)
HDfree(input_file);
+
if(output_file)
HDfree(output_file);
+
if(ub_file) {
HDfree(ub_file);
- if(ufid >= 0)
- status = HDclose(ufid);
- HDassert(status >= 0);
- }
-
- if(h5fid >= 0) {
- status = HDclose(h5fid);
- HDassert(status >= 0);
- }
- if(ifid >= 0) {
- status = HDclose(ifid);
- HDassert(status >= 0);
}
+
+ h5tools_close();
return h5tools_getstatus();
}
@@ -388,54 +349,60 @@ done:
* Returns 0 on success, -1 on failure.
*/
herr_t
-copy_to_file( int infid, int ofid, ssize_t where, ssize_t how_much )
+copy_to_file( FILE *infid, FILE *ofid, ssize_t _where, ssize_t how_much )
{
static char buf[COPY_BUF_SIZE];
+ off_t where = (off_t)_where;
off_t to;
off_t from;
- ssize_t nchars = -1;
- ssize_t wnchars = -1;
herr_t ret_value = 0;
/* nothing to copy */
if(how_much <= 0)
goto done;
+ /* rewind */
+ HDfseek(infid, 0L, 0);
+
from = where;
to = 0;
-
while(how_much > 0) {
- /* Seek to correct position in input file */
- HDlseek(infid,from,SEEK_SET);
+ size_t bytes_in = 0; /* # of bytes to read */
+ size_t bytes_read = 0; /* # of bytes actually read */
+ size_t bytes_wrote = 0; /* # of bytes written */
- /* Read data to buffer */
if (how_much > COPY_BUF_SIZE)
- nchars = HDread(infid,buf,(unsigned)COPY_BUF_SIZE);
+ bytes_in = COPY_BUF_SIZE;
else
- nchars = HDread(infid,buf,(unsigned)how_much);
- if(nchars < 0) {
+ bytes_in = how_much;
+
+ /* Seek to correct position in input file */
+ HDfseek(infid, from, SEEK_SET);
+
+ /* Read data to buffer */
+ bytes_read = HDfread(buf, (size_t)1, bytes_in, infid);
+ if(0 == bytes_read && HDferror(infid)) {
ret_value = -1;
goto done;
} /* end if */
+ if(0 == bytes_read && HDfeof(infid)) {
+ goto done;
+ } /* end if */
/* Seek to correct position in output file */
- HDlseek(ofid,to,SEEK_SET);
+ HDfseek(ofid, to, SEEK_SET);
/* Update positions/size */
- how_much -= nchars;
- from += nchars;
- to += nchars;
-
- /* Write nchars bytes to output file */
- wnchars = nchars;
- while(nchars > 0) {
- wnchars = HDwrite(ofid,buf,(unsigned)nchars);
- if(wnchars < 0) {
- ret_value = -1;
- goto done;
- } /* end if */
- nchars -= wnchars;
- } /* end while */
+ how_much -= bytes_read;
+ from += bytes_read;
+ to += bytes_read;
+
+ /* Write nchars bytes to output file */
+ bytes_wrote = HDfwrite(buf, (size_t)1, bytes_read, ofid);
+ if(bytes_wrote != bytes_read || (0 == bytes_wrote && HDferror(ofid))) { /* error */
+ ret_value = -1;
+ goto done;
+ } /* end if */
} /* end while */
done:
diff --git a/tools/lib/h5tools.c b/tools/lib/h5tools.c
index 06471de..66f87a3 100644
--- a/tools/lib/h5tools.c
+++ b/tools/lib/h5tools.c
@@ -36,10 +36,11 @@ hid_t H5tools_ERR_CLS_g = -1;
hid_t H5E_tools_g = -1;
hid_t H5E_tools_min_id_g = -1;
int compound_data;
-FILE *rawattrstream; /* should initialize to stdout but gcc moans about it */
-FILE *rawdatastream; /* should initialize to stdout but gcc moans about it */
-FILE *rawoutstream; /* should initialize to stdout but gcc moans about it */
-FILE *rawerrorstream; /* should initialize to stderr but gcc moans about it */
+FILE *rawattrstream = NULL; /* should initialize to stdout but gcc moans about it */
+FILE *rawdatastream = NULL; /* should initialize to stdout but gcc moans about it */
+FILE *rawinstream = NULL; /* should initialize to stdin but gcc moans about it */
+FILE *rawoutstream = NULL; /* should initialize to stdout but gcc moans about it */
+FILE *rawerrorstream = NULL; /* should initialize to stderr but gcc moans about it */
int bin_output; /* binary output */
int bin_form; /* binary form */
int region_output; /* region output */
@@ -120,6 +121,8 @@ h5tools_init(void)
rawattrstream = stdout;
if (!rawdatastream)
rawdatastream = stdout;
+ if (!rawinstream)
+ rawinstream = stdin;
if (!rawoutstream)
rawoutstream = stdout;
if (!rawerrorstream)
@@ -172,6 +175,12 @@ h5tools_close(void)
else
rawdatastream = NULL;
}
+ if (rawinstream && rawinstream != stdin) {
+ if (fclose(rawinstream))
+ perror("closing rawinstream");
+ else
+ rawinstream = NULL;
+ }
if (rawoutstream && rawoutstream != stdout) {
if (fclose(rawoutstream))
perror("closing rawoutstream");
@@ -198,6 +207,254 @@ h5tools_close(void)
}
/*-------------------------------------------------------------------------
+ * Function: h5tools_set_data_output_file
+ *
+ * Purpose: Open fname as the output file for dataset raw data.
+ * Set rawdatastream as its file stream.
+ *
+ * Return: 0 -- succeeded
+ * negative -- failed
+ *
+ * Programmer: Albert Cheng, 2000/09/30
+ *
+ * Modifications:
+ * pvn June, 1, 2006. Add a switch for binary output
+ *
+ *-------------------------------------------------------------------------
+ */
+int
+h5tools_set_data_output_file(const char *fname, int is_bin)
+{
+ int retvalue = FAIL;
+ FILE *f; /* temporary holding place for the stream pointer
+ * so that rawdatastream is changed only when succeeded */
+
+ if (rawdatastream && rawdatastream != stdout) {
+ if (HDfclose(rawdatastream))
+ HDperror("closing rawdatastream");
+ else
+ rawdatastream = NULL;
+ }
+
+ /* First check if filename is string "NULL" */
+ if (fname != NULL) {
+ /* binary output */
+ if (is_bin) {
+ if ((f = HDfopen(fname, "wb")) != NULL) {
+ rawdatastream = f;
+ retvalue = SUCCEED;
+ }
+ }
+ else {
+ if ((f = HDfopen(fname, "w")) != NULL) {
+ rawdatastream = f;
+ retvalue = SUCCEED;
+ }
+ }
+ }
+ else {
+ rawdatastream = NULL;
+ retvalue = SUCCEED;
+ }
+
+ return retvalue;
+}
+
+/*-------------------------------------------------------------------------
+ * Function: h5tools_set_attr_output_file
+ *
+ * Purpose: Open fname as the output file for attribute raw data.
+ * Set rawattrstream as its file stream.
+ *
+ * Return: 0 -- succeeded
+ * negative -- failed
+ *
+ *-------------------------------------------------------------------------
+ */
+int
+h5tools_set_attr_output_file(const char *fname, int is_bin)
+{
+ int retvalue = FAIL;
+ FILE *f; /* temporary holding place for the stream pointer
+ * so that rawattrstream is changed only when succeeded */
+
+ if (rawattrstream && rawattrstream != stdout) {
+ if (HDfclose(rawattrstream))
+ HDperror("closing rawattrstream");
+ else
+ rawattrstream = NULL;
+ }
+
+ /* First check if filename is string "NULL" */
+ if (fname != NULL) {
+ /* binary output */
+ if (is_bin) {
+ if ((f = HDfopen(fname, "wb")) != NULL) {
+ rawattrstream = f;
+ retvalue = SUCCEED;
+ }
+ }
+ else {
+ if ((f = HDfopen(fname, "w")) != NULL) {
+ rawattrstream = f;
+ retvalue = SUCCEED;
+ }
+ }
+ }
+ else {
+ rawattrstream = NULL;
+ retvalue = SUCCEED;
+ }
+
+ return retvalue;
+}
+
+/*-------------------------------------------------------------------------
+ * Function: h5tools_set_input_file
+ *
+ * Purpose: Open fname as the input file for raw input.
+ * Set rawinstream as its file stream.
+ *
+ * Return: 0 -- succeeded
+ * negative -- failed
+ *
+ *-------------------------------------------------------------------------
+ */
+int
+h5tools_set_input_file(const char *fname, int is_bin)
+{
+ int retvalue = FAIL;
+ FILE *f; /* temporary holding place for the stream pointer
+ * so that rawinstream is changed only when succeeded */
+
+ if (rawinstream && rawinstream != stdin) {
+ if (HDfclose(rawinstream))
+ HDperror("closing rawinstream");
+ else
+ rawinstream = NULL;
+ }
+ /* First check if filename is string "NULL" */
+ if (fname != NULL) {
+ /* binary output */
+ if (is_bin) {
+ if ((f = HDfopen(fname, "rb")) != NULL) {
+ rawinstream = f;
+ retvalue = SUCCEED;
+ }
+ }
+ else {
+ if ((f = HDfopen(fname, "r")) != NULL) {
+ rawinstream = f;
+ retvalue = SUCCEED;
+ }
+ }
+ }
+ else {
+ rawinstream = NULL;
+ retvalue = SUCCEED;
+ }
+
+ return retvalue;
+}
+
+/*-------------------------------------------------------------------------
+ * Function: h5tools_set_output_file
+ *
+ * Purpose: Open fname as the output file for raw output.
+ * Set rawoutstream as its file stream.
+ *
+ * Return: 0 -- succeeded
+ * negative -- failed
+ *
+ *-------------------------------------------------------------------------
+ */
+int
+h5tools_set_output_file(const char *fname, int is_bin)
+{
+ int retvalue = FAIL;
+ FILE *f; /* temporary holding place for the stream pointer
+ * so that rawoutstream is changed only when succeeded */
+
+ if (rawoutstream && rawoutstream != stdout) {
+ if (HDfclose(rawoutstream))
+ HDperror("closing rawoutstream");
+ else
+ rawoutstream = NULL;
+ }
+ /* First check if filename is string "NULL" */
+ if (fname != NULL) {
+ /* binary output */
+ if (is_bin) {
+ if ((f = HDfopen(fname, "wb")) != NULL) {
+ rawoutstream = f;
+ retvalue = SUCCEED;
+ }
+ }
+ else {
+ if ((f = HDfopen(fname, "w")) != NULL) {
+ rawoutstream = f;
+ retvalue = SUCCEED;
+ }
+ }
+ }
+ else {
+ rawoutstream = NULL;
+ retvalue = SUCCEED;
+ }
+
+ return retvalue;
+}
+
+/*-------------------------------------------------------------------------
+ * Function: h5tools_set_error_file
+ *
+ * Purpose: Open fname as the error output file for dataset raw error.
+ * Set rawerrorstream as its file stream.
+ *
+ * Return: 0 -- succeeded
+ * negative -- failed
+ *
+ *-------------------------------------------------------------------------
+ */
+int
+h5tools_set_error_file(const char *fname, int is_bin)
+{
+ int retvalue = FAIL;
+ FILE *f; /* temporary holding place for the stream pointer
+ * so that rawerrorstream is changed only when succeeded */
+
+ if (rawerrorstream && rawerrorstream != stderr) {
+ if (HDfclose(rawerrorstream))
+ HDperror("closing rawerrorstream");
+ else
+ rawerrorstream = NULL;
+ }
+
+ /* First check if filename is string "NULL" */
+ if (fname != NULL) {
+ /* binary output */
+ if (is_bin) {
+ if ((f = HDfopen(fname, "wb")) != NULL) {
+ rawerrorstream = f;
+ retvalue = SUCCEED;
+ }
+ }
+ else {
+ if ((f = HDfopen(fname, "w")) != NULL) {
+ rawerrorstream = f;
+ retvalue = SUCCEED;
+ }
+ }
+ }
+ else {
+ rawerrorstream = NULL;
+ retvalue = SUCCEED;
+ }
+
+ return retvalue;
+}
+
+/*-------------------------------------------------------------------------
* Audience: Private
* Chapter: H5Tools Library
* Purpose: Get a FAPL for a driver
@@ -1468,7 +1725,7 @@ render_bin_output_region_blocks(hid_t region_space, hid_t region_id,
* hssize_t npoints is the number of points in the region
*-------------------------------------------------------------------------
*/
-static int
+int
render_bin_output_region_data_points(hid_t region_space, hid_t region_id,
FILE *stream, hid_t container,
int ndims, hid_t type_id, hssize_t npoints)
diff --git a/tools/lib/h5tools.h b/tools/lib/h5tools.h
index efadba4..ea6a44f 100644
--- a/tools/lib/h5tools.h
+++ b/tools/lib/h5tools.h
@@ -532,6 +532,7 @@ H5TOOLS_DLLVAR int packed_data_length; /* lengtht of packed bits to display
H5TOOLS_DLLVAR unsigned long long packed_data_mask; /* mask in which packed bits to display */
H5TOOLS_DLLVAR FILE *rawattrstream; /* output stream for raw attribute data */
H5TOOLS_DLLVAR FILE *rawdatastream; /* output stream for raw data */
+H5TOOLS_DLLVAR FILE *rawinstream; /* input stream for raw input */
H5TOOLS_DLLVAR FILE *rawoutstream; /* output stream for raw output */
H5TOOLS_DLLVAR FILE *rawerrorstream; /* output stream for raw error */
H5TOOLS_DLLVAR int bin_output; /* binary output */
@@ -549,6 +550,11 @@ H5TOOLS_DLLVAR int attr_data_output; /* attribute data output */
/* Definitions of useful routines */
H5TOOLS_DLL void h5tools_init(void);
H5TOOLS_DLL void h5tools_close(void);
+H5TOOLS_DLL int h5tools_set_data_output_file(const char *fname, int is_bin);
+H5TOOLS_DLL int h5tools_set_attr_output_file(const char *fname, int is_bin);
+H5TOOLS_DLL int h5tools_set_input_file(const char *fname, int is_bin);
+H5TOOLS_DLL int h5tools_set_output_file(const char *fname, int is_bin);
+H5TOOLS_DLL int h5tools_set_error_file(const char *fname, int is_bin);
H5TOOLS_DLL hid_t h5tools_fopen(const char *fname, unsigned flags, hid_t fapl,
const char *driver, char *drivername, size_t drivername_len);
H5TOOLS_DLL hid_t h5tools_get_native_type(hid_t type);
@@ -568,8 +574,6 @@ H5TOOLS_DLL void h5tools_region_simple_prefix(FILE *stream, const h5tool_form
h5tools_context_t *ctx, hsize_t elmtno, hsize_t *ptdata, int secnum);
H5TOOLS_DLL int render_bin_output(FILE *stream, hid_t container, hid_t tid, void *_mem, hsize_t nelmts);
-H5TOOLS_DLL int render_bin_output_region_data_blocks(hid_t region_id, FILE *stream,
- hid_t container, int ndims, hid_t type_id, hssize_t nblocks, hsize_t *ptdata);
H5TOOLS_DLL hbool_t render_bin_output_region_blocks(hid_t region_space, hid_t region_id,
FILE *stream, hid_t container);
H5TOOLS_DLL hbool_t render_bin_output_region_points(hid_t region_space, hid_t region_id,
diff --git a/tools/testfiles/h5dump-help.txt b/tools/testfiles/h5dump-help.txt
index b735b18..82b7323 100644
--- a/tools/testfiles/h5dump-help.txt
+++ b/tools/testfiles/h5dump-help.txt
@@ -1,35 +1,31 @@
usage: h5dump [OPTIONS] files
OPTIONS
-h, --help Print a usage message and exit
+ -V, --version Print version number and exit
+--------------- File Options ---------------
-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
- Optional value 0 suppresses printing attributes.
- -i, --object-ids Print the object ids
- -r, --string Print 1-byte integer datasets as ASCII
- -e, --escape Escape non printing characters
- -V, --version Print version number and exit
+ -f D, --filedriver=D Specify which driver to open the file with
+ -o F, --output=F Output raw data into file F
+ -b B, --binary=B Binary file output, of form B
+ -O F, --ddl=F Output ddl text into file F
+ Do not use filename F to suppress ddl display
+--------------- Object Options ---------------
-a P, --attribute=P Print the specified attribute
If an attribute name contains a slash (/), escape the
slash with a preceding backslash (\).
(See example section below.)
-d P, --dataset=P Print the specified dataset
- -y, --noindex Do not print array indices with the data
- -p, --properties Print dataset filters, storage layout and fill value
- -f D, --filedriver=D Specify which driver to open the file with
-g P, --group=P Print the specified group and all members
-l P, --soft-link=P Print the value(s) of the specified soft link
- -o F, --output=F Output raw data into file F
- -b B, --binary=B Binary file output, of form B
-t P, --datatype=P Print the specified named datatype
- -w N, --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.
- -m T, --format=T Set the floating point output format
- -q Q, --sort_by=Q Sort groups and attributes by index Q
- -z Z, --sort_order=Z Sort groups and attributes by order Z
+ -A, --onlyattr Print the header and value of attributes
+ Optional value 0 suppresses printing attributes.
+--------------- Object Property Options ---------------
+ -i, --object-ids Print the object ids
+ -p, --properties Print dataset filters, storage layout and fill value
-M L, --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,
@@ -37,19 +33,29 @@ usage: h5dump [OPTIONS] files
the data value and length is the number of bits of
the mask.
-R, --region Print dataset pointed by region references
+--------------- Formatting Options ---------------
+ -e, --escape Escape non printing characters
+ -r, --string Print 1-byte integer datasets as ASCII
+ -y, --noindex Do not print array indices with the data
+ -m T, --format=T Set the floating point output format
+ -q Q, --sort_by=Q Sort groups and attributes by index Q
+ -z Z, --sort_order=Z Sort groups and attributes by order Z
+ --enable-error-stack Prints messages from the HDF5 error stack as they
+ occur.
+ --no-compact-subset Disable compact form of subsetting and allow the use
+ of "[" in dataset names.
+ -w N, --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.
+--------------- XML Options ---------------
-x, --xml Output in XML using Schema
-u, --use-dtd Output in XML using DTD
-D U, --xml-dtd=U Use the DTD or schema at U
-X S, --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
- --enable-error-stack Prints messages from the HDF5 error stack as they
- occur.
- --no-compact-subset Disable compact form of subsetting and allow the use
- of "[" in dataset names.
- -O F, --ddl=F Output ddl text into file F
- Do not use filename F to suppress ddl display
+--------------- Subsetting Options ---------------
Subsetting is available by using the following options with a dataset
attribute. Subsetting is done by selecting a hyperslab from the data.
Thus, the options mirror those for performing a hyperslab selection.
@@ -65,20 +71,13 @@ usage: h5dump [OPTIONS] files
number of dimensions in the dataspace being queried
(Alternate compact form of subsetting is described in the Reference Manual)
+--------------- Option Argument Conventions ---------------
D - is the file driver to use in opening the file. Acceptable values
are "sec2", "family", "split", "multi", "direct", and "stream". 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.
- These are the letters that are appended to the file name(without .h5) when opening
- names for the split(m,r) and multi(s,b,r,g,l,o) drivers. They are:
- m: All meta data when using the split driver.
- s: The userblock, superblock, and driver info block
- b: B-tree nodes
- r: Dataset raw data
- g: Global heap
- l: local heap (object names)
- o: object headers
+ See examples below for family, split, and multi driver special file name usage.
F - is a filename.
P - is the full path from the root group to the object.
@@ -93,7 +92,7 @@ usage: h5dump [OPTIONS] files
Q - is the sort index type. It can be "creation_order" or "name" (default)
Z - is the sort order type. It can be "descending" or "ascending" (default)
- Examples:
+--------------- Examples ---------------
1) Attribute foo of the group /bar_none in file quux.h5
@@ -124,3 +123,11 @@ usage: h5dump [OPTIONS] files
h5dump -d /foo -f split splitfile
+ 7) 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 -d /foo -f multi mf
+
+ 8) Dataset foo in family files fam00000.h5 fam00001.h5 and fam00002.h5
+
+ h5dump -d /foo -f family fam-574932464.h5
+
diff --git a/tools/testfiles/tnofilename-with-packed-bits.ddl b/tools/testfiles/tnofilename-with-packed-bits.ddl
index e8d6d84..bb0a876 100644
--- a/tools/testfiles/tnofilename-with-packed-bits.ddl
+++ b/tools/testfiles/tnofilename-with-packed-bits.ddl
@@ -1,35 +1,31 @@
usage: h5dump [OPTIONS] files
OPTIONS
-h, --help Print a usage message and exit
+ -V, --version Print version number and exit
+--------------- File Options ---------------
-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
- Optional value 0 suppresses printing attributes.
- -i, --object-ids Print the object ids
- -r, --string Print 1-byte integer datasets as ASCII
- -e, --escape Escape non printing characters
- -V, --version Print version number and exit
+ -f D, --filedriver=D Specify which driver to open the file with
+ -o F, --output=F Output raw data into file F
+ -b B, --binary=B Binary file output, of form B
+ -O F, --ddl=F Output ddl text into file F
+ Do not use filename F to suppress ddl display
+--------------- Object Options ---------------
-a P, --attribute=P Print the specified attribute
If an attribute name contains a slash (/), escape the
slash with a preceding backslash (\).
(See example section below.)
-d P, --dataset=P Print the specified dataset
- -y, --noindex Do not print array indices with the data
- -p, --properties Print dataset filters, storage layout and fill value
- -f D, --filedriver=D Specify which driver to open the file with
-g P, --group=P Print the specified group and all members
-l P, --soft-link=P Print the value(s) of the specified soft link
- -o F, --output=F Output raw data into file F
- -b B, --binary=B Binary file output, of form B
-t P, --datatype=P Print the specified named datatype
- -w N, --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.
- -m T, --format=T Set the floating point output format
- -q Q, --sort_by=Q Sort groups and attributes by index Q
- -z Z, --sort_order=Z Sort groups and attributes by order Z
+ -A, --onlyattr Print the header and value of attributes
+ Optional value 0 suppresses printing attributes.
+--------------- Object Property Options ---------------
+ -i, --object-ids Print the object ids
+ -p, --properties Print dataset filters, storage layout and fill value
-M L, --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,
@@ -37,19 +33,29 @@ usage: h5dump [OPTIONS] files
the data value and length is the number of bits of
the mask.
-R, --region Print dataset pointed by region references
+--------------- Formatting Options ---------------
+ -e, --escape Escape non printing characters
+ -r, --string Print 1-byte integer datasets as ASCII
+ -y, --noindex Do not print array indices with the data
+ -m T, --format=T Set the floating point output format
+ -q Q, --sort_by=Q Sort groups and attributes by index Q
+ -z Z, --sort_order=Z Sort groups and attributes by order Z
+ --enable-error-stack Prints messages from the HDF5 error stack as they
+ occur.
+ --no-compact-subset Disable compact form of subsetting and allow the use
+ of "[" in dataset names.
+ -w N, --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.
+--------------- XML Options ---------------
-x, --xml Output in XML using Schema
-u, --use-dtd Output in XML using DTD
-D U, --xml-dtd=U Use the DTD or schema at U
-X S, --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
- --enable-error-stack Prints messages from the HDF5 error stack as they
- occur.
- --no-compact-subset Disable compact form of subsetting and allow the use
- of "[" in dataset names.
- -O F, --ddl=F Output ddl text into file F
- Do not use filename F to suppress ddl display
+--------------- Subsetting Options ---------------
Subsetting is available by using the following options with a dataset
attribute. Subsetting is done by selecting a hyperslab from the data.
Thus, the options mirror those for performing a hyperslab selection.
@@ -65,20 +71,13 @@ usage: h5dump [OPTIONS] files
number of dimensions in the dataspace being queried
(Alternate compact form of subsetting is described in the Reference Manual)
+--------------- Option Argument Conventions ---------------
D - is the file driver to use in opening the file. Acceptable values
are "sec2", "family", "split", "multi", "direct", and "stream". 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.
- These are the letters that are appended to the file name(without .h5) when opening
- names for the split(m,r) and multi(s,b,r,g,l,o) drivers. They are:
- m: All meta data when using the split driver.
- s: The userblock, superblock, and driver info block
- b: B-tree nodes
- r: Dataset raw data
- g: Global heap
- l: local heap (object names)
- o: object headers
+ See examples below for family, split, and multi driver special file name usage.
F - is a filename.
P - is the full path from the root group to the object.
@@ -93,7 +92,7 @@ usage: h5dump [OPTIONS] files
Q - is the sort index type. It can be "creation_order" or "name" (default)
Z - is the sort order type. It can be "descending" or "ascending" (default)
- Examples:
+--------------- Examples ---------------
1) Attribute foo of the group /bar_none in file quux.h5
@@ -124,4 +123,12 @@ usage: h5dump [OPTIONS] files
h5dump -d /foo -f split splitfile
+ 7) 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 -d /foo -f multi mf
+
+ 8) Dataset foo in family files fam00000.h5 fam00001.h5 and fam00002.h5
+
+ h5dump -d /foo -f family fam-574932464.h5
+
h5dump error: missing file name
diff --git a/tools/testfiles/tpbitsIncomplete.ddl b/tools/testfiles/tpbitsIncomplete.ddl
index 06c5613..1292049 100644
--- a/tools/testfiles/tpbitsIncomplete.ddl
+++ b/tools/testfiles/tpbitsIncomplete.ddl
@@ -1,35 +1,31 @@
usage: h5dump [OPTIONS] files
OPTIONS
-h, --help Print a usage message and exit
+ -V, --version Print version number and exit
+--------------- File Options ---------------
-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
- Optional value 0 suppresses printing attributes.
- -i, --object-ids Print the object ids
- -r, --string Print 1-byte integer datasets as ASCII
- -e, --escape Escape non printing characters
- -V, --version Print version number and exit
+ -f D, --filedriver=D Specify which driver to open the file with
+ -o F, --output=F Output raw data into file F
+ -b B, --binary=B Binary file output, of form B
+ -O F, --ddl=F Output ddl text into file F
+ Do not use filename F to suppress ddl display
+--------------- Object Options ---------------
-a P, --attribute=P Print the specified attribute
If an attribute name contains a slash (/), escape the
slash with a preceding backslash (\).
(See example section below.)
-d P, --dataset=P Print the specified dataset
- -y, --noindex Do not print array indices with the data
- -p, --properties Print dataset filters, storage layout and fill value
- -f D, --filedriver=D Specify which driver to open the file with
-g P, --group=P Print the specified group and all members
-l P, --soft-link=P Print the value(s) of the specified soft link
- -o F, --output=F Output raw data into file F
- -b B, --binary=B Binary file output, of form B
-t P, --datatype=P Print the specified named datatype
- -w N, --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.
- -m T, --format=T Set the floating point output format
- -q Q, --sort_by=Q Sort groups and attributes by index Q
- -z Z, --sort_order=Z Sort groups and attributes by order Z
+ -A, --onlyattr Print the header and value of attributes
+ Optional value 0 suppresses printing attributes.
+--------------- Object Property Options ---------------
+ -i, --object-ids Print the object ids
+ -p, --properties Print dataset filters, storage layout and fill value
-M L, --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,
@@ -37,19 +33,29 @@ usage: h5dump [OPTIONS] files
the data value and length is the number of bits of
the mask.
-R, --region Print dataset pointed by region references
+--------------- Formatting Options ---------------
+ -e, --escape Escape non printing characters
+ -r, --string Print 1-byte integer datasets as ASCII
+ -y, --noindex Do not print array indices with the data
+ -m T, --format=T Set the floating point output format
+ -q Q, --sort_by=Q Sort groups and attributes by index Q
+ -z Z, --sort_order=Z Sort groups and attributes by order Z
+ --enable-error-stack Prints messages from the HDF5 error stack as they
+ occur.
+ --no-compact-subset Disable compact form of subsetting and allow the use
+ of "[" in dataset names.
+ -w N, --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.
+--------------- XML Options ---------------
-x, --xml Output in XML using Schema
-u, --use-dtd Output in XML using DTD
-D U, --xml-dtd=U Use the DTD or schema at U
-X S, --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
- --enable-error-stack Prints messages from the HDF5 error stack as they
- occur.
- --no-compact-subset Disable compact form of subsetting and allow the use
- of "[" in dataset names.
- -O F, --ddl=F Output ddl text into file F
- Do not use filename F to suppress ddl display
+--------------- Subsetting Options ---------------
Subsetting is available by using the following options with a dataset
attribute. Subsetting is done by selecting a hyperslab from the data.
Thus, the options mirror those for performing a hyperslab selection.
@@ -65,20 +71,13 @@ usage: h5dump [OPTIONS] files
number of dimensions in the dataspace being queried
(Alternate compact form of subsetting is described in the Reference Manual)
+--------------- Option Argument Conventions ---------------
D - is the file driver to use in opening the file. Acceptable values
are "sec2", "family", "split", "multi", "direct", and "stream". 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.
- These are the letters that are appended to the file name(without .h5) when opening
- names for the split(m,r) and multi(s,b,r,g,l,o) drivers. They are:
- m: All meta data when using the split driver.
- s: The userblock, superblock, and driver info block
- b: B-tree nodes
- r: Dataset raw data
- g: Global heap
- l: local heap (object names)
- o: object headers
+ See examples below for family, split, and multi driver special file name usage.
F - is a filename.
P - is the full path from the root group to the object.
@@ -93,7 +92,7 @@ usage: h5dump [OPTIONS] files
Q - is the sort index type. It can be "creation_order" or "name" (default)
Z - is the sort order type. It can be "descending" or "ascending" (default)
- Examples:
+--------------- Examples ---------------
1) Attribute foo of the group /bar_none in file quux.h5
@@ -124,4 +123,12 @@ usage: h5dump [OPTIONS] files
h5dump -d /foo -f split splitfile
+ 7) 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 -d /foo -f multi mf
+
+ 8) Dataset foo in family files fam00000.h5 fam00001.h5 and fam00002.h5
+
+ h5dump -d /foo -f family fam-574932464.h5
+
h5dump error: Bad mask list(0,2,2,1,0,2,2,)
diff --git a/tools/testfiles/tpbitsLengthExceeded.ddl b/tools/testfiles/tpbitsLengthExceeded.ddl
index ffd9910..12f2f2a 100644
--- a/tools/testfiles/tpbitsLengthExceeded.ddl
+++ b/tools/testfiles/tpbitsLengthExceeded.ddl
@@ -1,35 +1,31 @@
usage: h5dump [OPTIONS] files
OPTIONS
-h, --help Print a usage message and exit
+ -V, --version Print version number and exit
+--------------- File Options ---------------
-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
- Optional value 0 suppresses printing attributes.
- -i, --object-ids Print the object ids
- -r, --string Print 1-byte integer datasets as ASCII
- -e, --escape Escape non printing characters
- -V, --version Print version number and exit
+ -f D, --filedriver=D Specify which driver to open the file with
+ -o F, --output=F Output raw data into file F
+ -b B, --binary=B Binary file output, of form B
+ -O F, --ddl=F Output ddl text into file F
+ Do not use filename F to suppress ddl display
+--------------- Object Options ---------------
-a P, --attribute=P Print the specified attribute
If an attribute name contains a slash (/), escape the
slash with a preceding backslash (\).
(See example section below.)
-d P, --dataset=P Print the specified dataset
- -y, --noindex Do not print array indices with the data
- -p, --properties Print dataset filters, storage layout and fill value
- -f D, --filedriver=D Specify which driver to open the file with
-g P, --group=P Print the specified group and all members
-l P, --soft-link=P Print the value(s) of the specified soft link
- -o F, --output=F Output raw data into file F
- -b B, --binary=B Binary file output, of form B
-t P, --datatype=P Print the specified named datatype
- -w N, --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.
- -m T, --format=T Set the floating point output format
- -q Q, --sort_by=Q Sort groups and attributes by index Q
- -z Z, --sort_order=Z Sort groups and attributes by order Z
+ -A, --onlyattr Print the header and value of attributes
+ Optional value 0 suppresses printing attributes.
+--------------- Object Property Options ---------------
+ -i, --object-ids Print the object ids
+ -p, --properties Print dataset filters, storage layout and fill value
-M L, --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,
@@ -37,19 +33,29 @@ usage: h5dump [OPTIONS] files
the data value and length is the number of bits of
the mask.
-R, --region Print dataset pointed by region references
+--------------- Formatting Options ---------------
+ -e, --escape Escape non printing characters
+ -r, --string Print 1-byte integer datasets as ASCII
+ -y, --noindex Do not print array indices with the data
+ -m T, --format=T Set the floating point output format
+ -q Q, --sort_by=Q Sort groups and attributes by index Q
+ -z Z, --sort_order=Z Sort groups and attributes by order Z
+ --enable-error-stack Prints messages from the HDF5 error stack as they
+ occur.
+ --no-compact-subset Disable compact form of subsetting and allow the use
+ of "[" in dataset names.
+ -w N, --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.
+--------------- XML Options ---------------
-x, --xml Output in XML using Schema
-u, --use-dtd Output in XML using DTD
-D U, --xml-dtd=U Use the DTD or schema at U
-X S, --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
- --enable-error-stack Prints messages from the HDF5 error stack as they
- occur.
- --no-compact-subset Disable compact form of subsetting and allow the use
- of "[" in dataset names.
- -O F, --ddl=F Output ddl text into file F
- Do not use filename F to suppress ddl display
+--------------- Subsetting Options ---------------
Subsetting is available by using the following options with a dataset
attribute. Subsetting is done by selecting a hyperslab from the data.
Thus, the options mirror those for performing a hyperslab selection.
@@ -65,20 +71,13 @@ usage: h5dump [OPTIONS] files
number of dimensions in the dataspace being queried
(Alternate compact form of subsetting is described in the Reference Manual)
+--------------- Option Argument Conventions ---------------
D - is the file driver to use in opening the file. Acceptable values
are "sec2", "family", "split", "multi", "direct", and "stream". 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.
- These are the letters that are appended to the file name(without .h5) when opening
- names for the split(m,r) and multi(s,b,r,g,l,o) drivers. They are:
- m: All meta data when using the split driver.
- s: The userblock, superblock, and driver info block
- b: B-tree nodes
- r: Dataset raw data
- g: Global heap
- l: local heap (object names)
- o: object headers
+ See examples below for family, split, and multi driver special file name usage.
F - is a filename.
P - is the full path from the root group to the object.
@@ -93,7 +92,7 @@ usage: h5dump [OPTIONS] files
Q - is the sort index type. It can be "creation_order" or "name" (default)
Z - is the sort order type. It can be "descending" or "ascending" (default)
- Examples:
+--------------- Examples ---------------
1) Attribute foo of the group /bar_none in file quux.h5
@@ -124,4 +123,12 @@ usage: h5dump [OPTIONS] files
h5dump -d /foo -f split splitfile
+ 7) 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 -d /foo -f multi mf
+
+ 8) Dataset foo in family files fam00000.h5 fam00001.h5 and fam00002.h5
+
+ h5dump -d /foo -f family fam-574932464.h5
+
h5dump error: Packed Bit offset+length value(65) too large. Max is 64
diff --git a/tools/testfiles/tpbitsLengthPositive.ddl b/tools/testfiles/tpbitsLengthPositive.ddl
index a54812b..c98ce67 100644
--- a/tools/testfiles/tpbitsLengthPositive.ddl
+++ b/tools/testfiles/tpbitsLengthPositive.ddl
@@ -1,35 +1,31 @@
usage: h5dump [OPTIONS] files
OPTIONS
-h, --help Print a usage message and exit
+ -V, --version Print version number and exit
+--------------- File Options ---------------
-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
- Optional value 0 suppresses printing attributes.
- -i, --object-ids Print the object ids
- -r, --string Print 1-byte integer datasets as ASCII
- -e, --escape Escape non printing characters
- -V, --version Print version number and exit
+ -f D, --filedriver=D Specify which driver to open the file with
+ -o F, --output=F Output raw data into file F
+ -b B, --binary=B Binary file output, of form B
+ -O F, --ddl=F Output ddl text into file F
+ Do not use filename F to suppress ddl display
+--------------- Object Options ---------------
-a P, --attribute=P Print the specified attribute
If an attribute name contains a slash (/), escape the
slash with a preceding backslash (\).
(See example section below.)
-d P, --dataset=P Print the specified dataset
- -y, --noindex Do not print array indices with the data
- -p, --properties Print dataset filters, storage layout and fill value
- -f D, --filedriver=D Specify which driver to open the file with
-g P, --group=P Print the specified group and all members
-l P, --soft-link=P Print the value(s) of the specified soft link
- -o F, --output=F Output raw data into file F
- -b B, --binary=B Binary file output, of form B
-t P, --datatype=P Print the specified named datatype
- -w N, --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.
- -m T, --format=T Set the floating point output format
- -q Q, --sort_by=Q Sort groups and attributes by index Q
- -z Z, --sort_order=Z Sort groups and attributes by order Z
+ -A, --onlyattr Print the header and value of attributes
+ Optional value 0 suppresses printing attributes.
+--------------- Object Property Options ---------------
+ -i, --object-ids Print the object ids
+ -p, --properties Print dataset filters, storage layout and fill value
-M L, --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,
@@ -37,19 +33,29 @@ usage: h5dump [OPTIONS] files
the data value and length is the number of bits of
the mask.
-R, --region Print dataset pointed by region references
+--------------- Formatting Options ---------------
+ -e, --escape Escape non printing characters
+ -r, --string Print 1-byte integer datasets as ASCII
+ -y, --noindex Do not print array indices with the data
+ -m T, --format=T Set the floating point output format
+ -q Q, --sort_by=Q Sort groups and attributes by index Q
+ -z Z, --sort_order=Z Sort groups and attributes by order Z
+ --enable-error-stack Prints messages from the HDF5 error stack as they
+ occur.
+ --no-compact-subset Disable compact form of subsetting and allow the use
+ of "[" in dataset names.
+ -w N, --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.
+--------------- XML Options ---------------
-x, --xml Output in XML using Schema
-u, --use-dtd Output in XML using DTD
-D U, --xml-dtd=U Use the DTD or schema at U
-X S, --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
- --enable-error-stack Prints messages from the HDF5 error stack as they
- occur.
- --no-compact-subset Disable compact form of subsetting and allow the use
- of "[" in dataset names.
- -O F, --ddl=F Output ddl text into file F
- Do not use filename F to suppress ddl display
+--------------- Subsetting Options ---------------
Subsetting is available by using the following options with a dataset
attribute. Subsetting is done by selecting a hyperslab from the data.
Thus, the options mirror those for performing a hyperslab selection.
@@ -65,20 +71,13 @@ usage: h5dump [OPTIONS] files
number of dimensions in the dataspace being queried
(Alternate compact form of subsetting is described in the Reference Manual)
+--------------- Option Argument Conventions ---------------
D - is the file driver to use in opening the file. Acceptable values
are "sec2", "family", "split", "multi", "direct", and "stream". 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.
- These are the letters that are appended to the file name(without .h5) when opening
- names for the split(m,r) and multi(s,b,r,g,l,o) drivers. They are:
- m: All meta data when using the split driver.
- s: The userblock, superblock, and driver info block
- b: B-tree nodes
- r: Dataset raw data
- g: Global heap
- l: local heap (object names)
- o: object headers
+ See examples below for family, split, and multi driver special file name usage.
F - is a filename.
P - is the full path from the root group to the object.
@@ -93,7 +92,7 @@ usage: h5dump [OPTIONS] files
Q - is the sort index type. It can be "creation_order" or "name" (default)
Z - is the sort order type. It can be "descending" or "ascending" (default)
- Examples:
+--------------- Examples ---------------
1) Attribute foo of the group /bar_none in file quux.h5
@@ -124,4 +123,12 @@ usage: h5dump [OPTIONS] files
h5dump -d /foo -f split splitfile
+ 7) 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 -d /foo -f multi mf
+
+ 8) Dataset foo in family files fam00000.h5 fam00001.h5 and fam00002.h5
+
+ h5dump -d /foo -f family fam-574932464.h5
+
h5dump error: Packed Bit length value(0) must be positive.
diff --git a/tools/testfiles/tpbitsMaxExceeded.ddl b/tools/testfiles/tpbitsMaxExceeded.ddl
index 1a8dd11..46319d1 100644
--- a/tools/testfiles/tpbitsMaxExceeded.ddl
+++ b/tools/testfiles/tpbitsMaxExceeded.ddl
@@ -1,35 +1,31 @@
usage: h5dump [OPTIONS] files
OPTIONS
-h, --help Print a usage message and exit
+ -V, --version Print version number and exit
+--------------- File Options ---------------
-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
- Optional value 0 suppresses printing attributes.
- -i, --object-ids Print the object ids
- -r, --string Print 1-byte integer datasets as ASCII
- -e, --escape Escape non printing characters
- -V, --version Print version number and exit
+ -f D, --filedriver=D Specify which driver to open the file with
+ -o F, --output=F Output raw data into file F
+ -b B, --binary=B Binary file output, of form B
+ -O F, --ddl=F Output ddl text into file F
+ Do not use filename F to suppress ddl display
+--------------- Object Options ---------------
-a P, --attribute=P Print the specified attribute
If an attribute name contains a slash (/), escape the
slash with a preceding backslash (\).
(See example section below.)
-d P, --dataset=P Print the specified dataset
- -y, --noindex Do not print array indices with the data
- -p, --properties Print dataset filters, storage layout and fill value
- -f D, --filedriver=D Specify which driver to open the file with
-g P, --group=P Print the specified group and all members
-l P, --soft-link=P Print the value(s) of the specified soft link
- -o F, --output=F Output raw data into file F
- -b B, --binary=B Binary file output, of form B
-t P, --datatype=P Print the specified named datatype
- -w N, --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.
- -m T, --format=T Set the floating point output format
- -q Q, --sort_by=Q Sort groups and attributes by index Q
- -z Z, --sort_order=Z Sort groups and attributes by order Z
+ -A, --onlyattr Print the header and value of attributes
+ Optional value 0 suppresses printing attributes.
+--------------- Object Property Options ---------------
+ -i, --object-ids Print the object ids
+ -p, --properties Print dataset filters, storage layout and fill value
-M L, --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,
@@ -37,19 +33,29 @@ usage: h5dump [OPTIONS] files
the data value and length is the number of bits of
the mask.
-R, --region Print dataset pointed by region references
+--------------- Formatting Options ---------------
+ -e, --escape Escape non printing characters
+ -r, --string Print 1-byte integer datasets as ASCII
+ -y, --noindex Do not print array indices with the data
+ -m T, --format=T Set the floating point output format
+ -q Q, --sort_by=Q Sort groups and attributes by index Q
+ -z Z, --sort_order=Z Sort groups and attributes by order Z
+ --enable-error-stack Prints messages from the HDF5 error stack as they
+ occur.
+ --no-compact-subset Disable compact form of subsetting and allow the use
+ of "[" in dataset names.
+ -w N, --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.
+--------------- XML Options ---------------
-x, --xml Output in XML using Schema
-u, --use-dtd Output in XML using DTD
-D U, --xml-dtd=U Use the DTD or schema at U
-X S, --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
- --enable-error-stack Prints messages from the HDF5 error stack as they
- occur.
- --no-compact-subset Disable compact form of subsetting and allow the use
- of "[" in dataset names.
- -O F, --ddl=F Output ddl text into file F
- Do not use filename F to suppress ddl display
+--------------- Subsetting Options ---------------
Subsetting is available by using the following options with a dataset
attribute. Subsetting is done by selecting a hyperslab from the data.
Thus, the options mirror those for performing a hyperslab selection.
@@ -65,20 +71,13 @@ usage: h5dump [OPTIONS] files
number of dimensions in the dataspace being queried
(Alternate compact form of subsetting is described in the Reference Manual)
+--------------- Option Argument Conventions ---------------
D - is the file driver to use in opening the file. Acceptable values
are "sec2", "family", "split", "multi", "direct", and "stream". 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.
- These are the letters that are appended to the file name(without .h5) when opening
- names for the split(m,r) and multi(s,b,r,g,l,o) drivers. They are:
- m: All meta data when using the split driver.
- s: The userblock, superblock, and driver info block
- b: B-tree nodes
- r: Dataset raw data
- g: Global heap
- l: local heap (object names)
- o: object headers
+ See examples below for family, split, and multi driver special file name usage.
F - is a filename.
P - is the full path from the root group to the object.
@@ -93,7 +92,7 @@ usage: h5dump [OPTIONS] files
Q - is the sort index type. It can be "creation_order" or "name" (default)
Z - is the sort order type. It can be "descending" or "ascending" (default)
- Examples:
+--------------- Examples ---------------
1) Attribute foo of the group /bar_none in file quux.h5
@@ -124,4 +123,12 @@ usage: h5dump [OPTIONS] files
h5dump -d /foo -f split splitfile
+ 7) 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 -d /foo -f multi mf
+
+ 8) Dataset foo in family files fam00000.h5 fam00001.h5 and fam00002.h5
+
+ h5dump -d /foo -f family fam-574932464.h5
+
h5dump error: Too many masks requested (max. 8). Mask list(0,1,0,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1)
diff --git a/tools/testfiles/tpbitsOffsetExceeded.ddl b/tools/testfiles/tpbitsOffsetExceeded.ddl
index 7527131..8f240c5 100644
--- a/tools/testfiles/tpbitsOffsetExceeded.ddl
+++ b/tools/testfiles/tpbitsOffsetExceeded.ddl
@@ -1,35 +1,31 @@
usage: h5dump [OPTIONS] files
OPTIONS
-h, --help Print a usage message and exit
+ -V, --version Print version number and exit
+--------------- File Options ---------------
-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
- Optional value 0 suppresses printing attributes.
- -i, --object-ids Print the object ids
- -r, --string Print 1-byte integer datasets as ASCII
- -e, --escape Escape non printing characters
- -V, --version Print version number and exit
+ -f D, --filedriver=D Specify which driver to open the file with
+ -o F, --output=F Output raw data into file F
+ -b B, --binary=B Binary file output, of form B
+ -O F, --ddl=F Output ddl text into file F
+ Do not use filename F to suppress ddl display
+--------------- Object Options ---------------
-a P, --attribute=P Print the specified attribute
If an attribute name contains a slash (/), escape the
slash with a preceding backslash (\).
(See example section below.)
-d P, --dataset=P Print the specified dataset
- -y, --noindex Do not print array indices with the data
- -p, --properties Print dataset filters, storage layout and fill value
- -f D, --filedriver=D Specify which driver to open the file with
-g P, --group=P Print the specified group and all members
-l P, --soft-link=P Print the value(s) of the specified soft link
- -o F, --output=F Output raw data into file F
- -b B, --binary=B Binary file output, of form B
-t P, --datatype=P Print the specified named datatype
- -w N, --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.
- -m T, --format=T Set the floating point output format
- -q Q, --sort_by=Q Sort groups and attributes by index Q
- -z Z, --sort_order=Z Sort groups and attributes by order Z
+ -A, --onlyattr Print the header and value of attributes
+ Optional value 0 suppresses printing attributes.
+--------------- Object Property Options ---------------
+ -i, --object-ids Print the object ids
+ -p, --properties Print dataset filters, storage layout and fill value
-M L, --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,
@@ -37,19 +33,29 @@ usage: h5dump [OPTIONS] files
the data value and length is the number of bits of
the mask.
-R, --region Print dataset pointed by region references
+--------------- Formatting Options ---------------
+ -e, --escape Escape non printing characters
+ -r, --string Print 1-byte integer datasets as ASCII
+ -y, --noindex Do not print array indices with the data
+ -m T, --format=T Set the floating point output format
+ -q Q, --sort_by=Q Sort groups and attributes by index Q
+ -z Z, --sort_order=Z Sort groups and attributes by order Z
+ --enable-error-stack Prints messages from the HDF5 error stack as they
+ occur.
+ --no-compact-subset Disable compact form of subsetting and allow the use
+ of "[" in dataset names.
+ -w N, --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.
+--------------- XML Options ---------------
-x, --xml Output in XML using Schema
-u, --use-dtd Output in XML using DTD
-D U, --xml-dtd=U Use the DTD or schema at U
-X S, --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
- --enable-error-stack Prints messages from the HDF5 error stack as they
- occur.
- --no-compact-subset Disable compact form of subsetting and allow the use
- of "[" in dataset names.
- -O F, --ddl=F Output ddl text into file F
- Do not use filename F to suppress ddl display
+--------------- Subsetting Options ---------------
Subsetting is available by using the following options with a dataset
attribute. Subsetting is done by selecting a hyperslab from the data.
Thus, the options mirror those for performing a hyperslab selection.
@@ -65,20 +71,13 @@ usage: h5dump [OPTIONS] files
number of dimensions in the dataspace being queried
(Alternate compact form of subsetting is described in the Reference Manual)
+--------------- Option Argument Conventions ---------------
D - is the file driver to use in opening the file. Acceptable values
are "sec2", "family", "split", "multi", "direct", and "stream". 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.
- These are the letters that are appended to the file name(without .h5) when opening
- names for the split(m,r) and multi(s,b,r,g,l,o) drivers. They are:
- m: All meta data when using the split driver.
- s: The userblock, superblock, and driver info block
- b: B-tree nodes
- r: Dataset raw data
- g: Global heap
- l: local heap (object names)
- o: object headers
+ See examples below for family, split, and multi driver special file name usage.
F - is a filename.
P - is the full path from the root group to the object.
@@ -93,7 +92,7 @@ usage: h5dump [OPTIONS] files
Q - is the sort index type. It can be "creation_order" or "name" (default)
Z - is the sort order type. It can be "descending" or "ascending" (default)
- Examples:
+--------------- Examples ---------------
1) Attribute foo of the group /bar_none in file quux.h5
@@ -124,4 +123,12 @@ usage: h5dump [OPTIONS] files
h5dump -d /foo -f split splitfile
+ 7) 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 -d /foo -f multi mf
+
+ 8) Dataset foo in family files fam00000.h5 fam00001.h5 and fam00002.h5
+
+ h5dump -d /foo -f family fam-574932464.h5
+
h5dump error: Packed Bit offset value(64) must be between 0 and 63
diff --git a/tools/testfiles/tpbitsOffsetNegative.ddl b/tools/testfiles/tpbitsOffsetNegative.ddl
index 21b573d..593d980 100644
--- a/tools/testfiles/tpbitsOffsetNegative.ddl
+++ b/tools/testfiles/tpbitsOffsetNegative.ddl
@@ -1,35 +1,31 @@
usage: h5dump [OPTIONS] files
OPTIONS
-h, --help Print a usage message and exit
+ -V, --version Print version number and exit
+--------------- File Options ---------------
-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
- Optional value 0 suppresses printing attributes.
- -i, --object-ids Print the object ids
- -r, --string Print 1-byte integer datasets as ASCII
- -e, --escape Escape non printing characters
- -V, --version Print version number and exit
+ -f D, --filedriver=D Specify which driver to open the file with
+ -o F, --output=F Output raw data into file F
+ -b B, --binary=B Binary file output, of form B
+ -O F, --ddl=F Output ddl text into file F
+ Do not use filename F to suppress ddl display
+--------------- Object Options ---------------
-a P, --attribute=P Print the specified attribute
If an attribute name contains a slash (/), escape the
slash with a preceding backslash (\).
(See example section below.)
-d P, --dataset=P Print the specified dataset
- -y, --noindex Do not print array indices with the data
- -p, --properties Print dataset filters, storage layout and fill value
- -f D, --filedriver=D Specify which driver to open the file with
-g P, --group=P Print the specified group and all members
-l P, --soft-link=P Print the value(s) of the specified soft link
- -o F, --output=F Output raw data into file F
- -b B, --binary=B Binary file output, of form B
-t P, --datatype=P Print the specified named datatype
- -w N, --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.
- -m T, --format=T Set the floating point output format
- -q Q, --sort_by=Q Sort groups and attributes by index Q
- -z Z, --sort_order=Z Sort groups and attributes by order Z
+ -A, --onlyattr Print the header and value of attributes
+ Optional value 0 suppresses printing attributes.
+--------------- Object Property Options ---------------
+ -i, --object-ids Print the object ids
+ -p, --properties Print dataset filters, storage layout and fill value
-M L, --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,
@@ -37,19 +33,29 @@ usage: h5dump [OPTIONS] files
the data value and length is the number of bits of
the mask.
-R, --region Print dataset pointed by region references
+--------------- Formatting Options ---------------
+ -e, --escape Escape non printing characters
+ -r, --string Print 1-byte integer datasets as ASCII
+ -y, --noindex Do not print array indices with the data
+ -m T, --format=T Set the floating point output format
+ -q Q, --sort_by=Q Sort groups and attributes by index Q
+ -z Z, --sort_order=Z Sort groups and attributes by order Z
+ --enable-error-stack Prints messages from the HDF5 error stack as they
+ occur.
+ --no-compact-subset Disable compact form of subsetting and allow the use
+ of "[" in dataset names.
+ -w N, --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.
+--------------- XML Options ---------------
-x, --xml Output in XML using Schema
-u, --use-dtd Output in XML using DTD
-D U, --xml-dtd=U Use the DTD or schema at U
-X S, --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
- --enable-error-stack Prints messages from the HDF5 error stack as they
- occur.
- --no-compact-subset Disable compact form of subsetting and allow the use
- of "[" in dataset names.
- -O F, --ddl=F Output ddl text into file F
- Do not use filename F to suppress ddl display
+--------------- Subsetting Options ---------------
Subsetting is available by using the following options with a dataset
attribute. Subsetting is done by selecting a hyperslab from the data.
Thus, the options mirror those for performing a hyperslab selection.
@@ -65,20 +71,13 @@ usage: h5dump [OPTIONS] files
number of dimensions in the dataspace being queried
(Alternate compact form of subsetting is described in the Reference Manual)
+--------------- Option Argument Conventions ---------------
D - is the file driver to use in opening the file. Acceptable values
are "sec2", "family", "split", "multi", "direct", and "stream". 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.
- These are the letters that are appended to the file name(without .h5) when opening
- names for the split(m,r) and multi(s,b,r,g,l,o) drivers. They are:
- m: All meta data when using the split driver.
- s: The userblock, superblock, and driver info block
- b: B-tree nodes
- r: Dataset raw data
- g: Global heap
- l: local heap (object names)
- o: object headers
+ See examples below for family, split, and multi driver special file name usage.
F - is a filename.
P - is the full path from the root group to the object.
@@ -93,7 +92,7 @@ usage: h5dump [OPTIONS] files
Q - is the sort index type. It can be "creation_order" or "name" (default)
Z - is the sort order type. It can be "descending" or "ascending" (default)
- Examples:
+--------------- Examples ---------------
1) Attribute foo of the group /bar_none in file quux.h5
@@ -124,4 +123,12 @@ usage: h5dump [OPTIONS] files
h5dump -d /foo -f split splitfile
+ 7) 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 -d /foo -f multi mf
+
+ 8) Dataset foo in family files fam00000.h5 fam00001.h5 and fam00002.h5
+
+ h5dump -d /foo -f family fam-574932464.h5
+
h5dump error: Bad mask list(-1,1)