summaryrefslogtreecommitdiffstats
path: root/tools/h5dump
diff options
context:
space:
mode:
authorPedro Vicente Nunes <pvn@hdfgroup.org>2008-10-27 20:06:28 (GMT)
committerPedro Vicente Nunes <pvn@hdfgroup.org>2008-10-27 20:06:28 (GMT)
commitf08f9340a7cfb323f3565e63b1cfe0604e02b4e5 (patch)
tree8ff4202ed3f3dfa379c2f68dfafba220f80268e0 /tools/h5dump
parent64e96385de36e41834c7d7de23083ee8b250a579 (diff)
downloadhdf5-f08f9340a7cfb323f3565e63b1cfe0604e02b4e5.zip
hdf5-f08f9340a7cfb323f3565e63b1cfe0604e02b4e5.tar.gz
hdf5-f08f9340a7cfb323f3565e63b1cfe0604e02b4e5.tar.bz2
[svn-r15969]
Introduced a new feature in the tools library regarding command line parsing In the definition of arguments, an "*" means that the switch can or can not have an optional argument. This "*" is put in the code regarding the letter definition, and it is transparent to the user (e.g b* instead of the previous b: ), where ":" notes a required argument after the letter (and no ":" or "*" notes no argument, mandatory) Used for the h5dump binary option -b It can be now 1) -b (defaults to NATIVE) 2) - b NATIVE 3) - b FILE 4) -b LE 5) -b BE Note: the keyword NATIVE replaces MEMORY This feature (-b with no argument) was tested with the sequence of h5dump to binary (NATIVE) then h5import to generate an HDF5 file from the binary file and h5diff to compare the 2 HDF5 files Tested: windows, linux
Diffstat (limited to 'tools/h5dump')
-rw-r--r--tools/h5dump/h5dump.c50
-rw-r--r--tools/h5dump/testh5dump.sh.in16
2 files changed, 40 insertions, 26 deletions
diff --git a/tools/h5dump/h5dump.c b/tools/h5dump/h5dump.c
index 5caea1c..056a5b2 100644
--- a/tools/h5dump/h5dump.c
+++ b/tools/h5dump/h5dump.c
@@ -386,7 +386,7 @@ struct handler_t {
* parameters. The long-named ones can be partially spelled. When
* adding more, make sure that they don't clash with each other.
*/
-static const char *s_opts = "hnpeyBHirVa:c:d:f:g:k:l:t:w:xD:uX:o:b:F:s:S:Aq:z:m:";
+static const char *s_opts = "hnpeyBHirVa:c:d:f:g:k:l:t:w:xD:uX:o:b*F:s:S:Aq:z:m:";
static struct long_options l_opts[] = {
{ "help", no_arg, 'h' },
{ "hel", no_arg, 'h' },
@@ -493,7 +493,7 @@ static struct long_options l_opts[] = {
{ "onlyattr", no_arg, 'A' },
{ "escape", no_arg, 'e' },
{ "noindex", no_arg, 'y' },
- { "binary", require_arg, 'b' },
+ { "binary", optional_arg, 'b' },
{ "form", require_arg, 'F' },
{ "sort_by", require_arg, 'q' },
{ "sort_order", require_arg, 'z' },
@@ -683,10 +683,10 @@ usage(const char *prog)
fprintf(stdout, " number of dimensions in the dataspace being queried\n");
fprintf(stdout, " U - is a URI reference (as defined in [IETF RFC 2396],\n");
fprintf(stdout, " updated by [IETF RFC 2732])\n");
- fprintf(stdout, " B - is the form of binary output: MEMORY for a memory type, FILE for the\n");
+ fprintf(stdout, " B - is the form of binary output: NATIVE for a memory type, FILE for the\n");
fprintf(stdout, " file type, LE or BE for pre-existing little or big endian types.\n");
fprintf(stdout, " Must be used with -o (output file) and it is recommended that\n");
- fprintf(stdout, " -d (dataset) is used\n");
+ fprintf(stdout, " -d (dataset) is used. B is an optional argument, defaults to NATIVE\n");
fprintf(stdout, " Q - is the sort index type. It can be \"creation_order\" or \"name\" (default)\n");
fprintf(stdout, " Z - is the sort order type. It can be \"descending\" or \"ascending\" (default)\n");
fprintf(stdout, "\n");
@@ -3220,7 +3220,7 @@ set_binary_form(const char *form)
{
int bform=-1;
- if (strcmp(form,"MEMORY")==0) /* native form */
+ if (strcmp(form,"NATIVE")==0) /* native form */
bform = 0;
else if (strcmp(form,"FILE")==0) /* file type form */
bform = 1;
@@ -3998,23 +3998,29 @@ parse_start:
case 'b':
- if ( ( bin_form = set_binary_form(opt_arg)) < 0){
- /* failed to set binary form */
- usage(progname);
- leave(EXIT_FAILURE);
- }
- bin_output = TRUE;
- if (outfname!=NULL) {
- if (set_output_file(outfname, 1) < 0){
- /* failed to set output file */
- usage(progname);
- leave(EXIT_FAILURE);
- }
-
- last_was_dset = FALSE;
- }
-
- break;
+ if ( opt_arg != NULL)
+ {
+ if ( ( bin_form = set_binary_form(opt_arg)) < 0)
+ {
+ /* failed to set binary form */
+ usage(progname);
+ leave(EXIT_FAILURE);
+ }
+ }
+ bin_output = TRUE;
+ if (outfname!=NULL)
+ {
+ if (set_output_file(outfname, 1) < 0)
+ {
+ /* failed to set output file */
+ usage(progname);
+ leave(EXIT_FAILURE);
+ }
+
+ last_was_dset = FALSE;
+ }
+
+ break;
case 'q':
diff --git a/tools/h5dump/testh5dump.sh.in b/tools/h5dump/testh5dump.sh.in
index 9c36594..990ef2a 100644
--- a/tools/h5dump/testh5dump.sh.in
+++ b/tools/h5dump/testh5dump.sh.in
@@ -463,22 +463,30 @@ TOOLTEST tvms.ddl tvms.h5
# test for binary output
TOOLTEST1 tbin1.ddl -d integer -o $TESTDIR/out1.bin -b LE tbinary.h5
-TOOLTEST1 tbin2.ddl -d float -o $TESTDIR/out2.bin -b BE tbinary.h5
-# the MEMORY test can be validated with h5import/h5diff
-TOOLTEST1 tbin3.ddl -d integer -o $TESTDIR/out3.bin -b MEMORY tbinary.h5
+# NATIVE default. the NATIVE test can be validated with h5import/h5diff
+TOOLTEST1 tbin1.ddl -d integer -o $TESTDIR/out1.bin -b tbinary.h5
+IMPORTTEST $TESTDIR/out1.bin -c out3.h5import -o $TESTDIR/out1.h5
+DIFFTEST tbinary.h5 $TESTDIR/out1.h5 /integer /integer
+
+TOOLTEST1 tbin2.ddl -b BE -d float -o $TESTDIR/out2.bin tbinary.h5
+
+# the NATIVE test can be validated with h5import/h5diff
+TOOLTEST1 tbin3.ddl -d integer -o $TESTDIR/out3.bin -b NATIVE tbinary.h5
IMPORTTEST $TESTDIR/out3.bin -c out3.h5import -o $TESTDIR/out3.h5
DIFFTEST tbinary.h5 $TESTDIR/out3.h5 /integer /integer
-TOOLTEST1 tbin4.ddl -d double -o $TESTDIR/out4.bin -b FILE tbinary.h5
+TOOLTEST1 tbin4.ddl -d double -b FILE -o $TESTDIR/out4.bin tbinary.h5
# Clean up binary output files
if test -z "$HDF5_NOCLEANUP"; then
rm -f $TESTDIR/out[1-4].bin
+ rm -f $TESTDIR/out1.h5
rm -f $TESTDIR/out3.h5
fi
+
# test for dataset region references
TOOLTEST tdatareg.ddl tdatareg.h5