diff options
author | Pedro Vicente Nunes <pvn@hdfgroup.org> | 2004-03-25 20:27:47 (GMT) |
---|---|---|
committer | Pedro Vicente Nunes <pvn@hdfgroup.org> | 2004-03-25 20:27:47 (GMT) |
commit | 1b008c03aaa5f04ec440675bfdac437eda42d446 (patch) | |
tree | b4c1fe06204ad99f1e42457e198149b06dd588fb | |
parent | 9c79ce84eec25571e012d03ba8e731afa1dcabe3 (diff) | |
download | hdf5-1b008c03aaa5f04ec440675bfdac437eda42d446.zip hdf5-1b008c03aaa5f04ec440675bfdac437eda42d446.tar.gz hdf5-1b008c03aaa5f04ec440675bfdac437eda42d446.tar.bz2 |
[svn-r8282] Purpose:
bug fix
Description:
the -p option was not parsing correctly if the input was in the exponential format
Solution:
add a new parse test for floating point numbers
Platforms tested:
linux
Misc. update:
-rw-r--r-- | tools/h5diff/h5diff_main.c | 40 | ||||
-rw-r--r-- | tools/testfiles/h5diff_603.txt | 2 | ||||
-rw-r--r-- | tools/testfiles/h5diff_606.txt | 44 | ||||
-rw-r--r-- | tools/testfiles/h5diff_612.txt | 2 | ||||
-rw-r--r-- | tools/testfiles/h5diff_615.txt | 36 | ||||
-rw-r--r-- | tools/testfiles/h5diff_621.txt | 2 |
6 files changed, 27 insertions, 99 deletions
diff --git a/tools/h5diff/h5diff_main.c b/tools/h5diff/h5diff_main.c index cbc0248..17c9d22 100644 --- a/tools/h5diff/h5diff_main.c +++ b/tools/h5diff/h5diff_main.c @@ -29,7 +29,7 @@ static int check_f_input( const char* ); /*------------------------------------------------------------------------- * Function: main * - * Purpose: H5diff main program + * Purpose: h5diff main program * * Return: An exit status of 0 means no differences were found, 1 means some * differences were found. @@ -73,14 +73,11 @@ int main(int argc, const char *argv[]) * file names are first *------------------------------------------------------------------------- */ - if ( argc>=3 ) { fname1 = argv[1]; fname2 = argv[2]; } - - /*------------------------------------------------------------------------- * parse command line options *------------------------------------------------------------------------- @@ -121,7 +118,7 @@ int main(int argc, const char *argv[]) } else { - printf("<-d %s> is not a valid option\n", argv[i+1] ); + printf("Not a valid -d option\n"); usage(); } break; @@ -137,6 +134,11 @@ int main(int argc, const char *argv[]) options.percent = atof(argv[i+1]); i++; /* go to next */ } + else + { + printf("Not a valid -p option\n"); + usage(); + } break; case 'n': if ( i<argc-1 && '-' !=argv[i+1][0] ) @@ -150,6 +152,11 @@ int main(int argc, const char *argv[]) options.count = atoi(argv[i+1]); i++; /* go to next */ } + else + { + printf("Not a valid -n option\n"); + usage(); + } break; } /*switch*/ } /*for*/ @@ -182,7 +189,6 @@ int main(int argc, const char *argv[]) }/*for*/ - /*------------------------------------------------------------------------- * print the command line options *------------------------------------------------------------------------- @@ -198,8 +204,6 @@ int main(int argc, const char *argv[]) printf("\n"); } - - nfound = h5diff(fname1,fname2,objname1,objname2,&options); if (options.verbose) printf("\n"); ret= (nfound==0 ? 0 : 1 ); @@ -207,7 +211,6 @@ int main(int argc, const char *argv[]) } - /*------------------------------------------------------------------------- * Function: check_n_input * @@ -266,26 +269,15 @@ int check_n_input( const char *str ) static int check_f_input( const char *str ) { - unsigned i; - char c; - - /* '0' values not allowed */ - if ( strlen(str)==1 && str[0]=='0' ) + double x; + + x=atof(str); + if (x==0) return -1; - for ( i = 0; i < strlen(str); i++) - { - c = str[i]; - if ( c < 48 || c > 57 ) /* ascii values between 0 and 9 */ - if ( c!= 46) /* . */ - return -1; - } return 1; } - - - /*------------------------------------------------------------------------- * Function: usage * diff --git a/tools/testfiles/h5diff_603.txt b/tools/testfiles/h5diff_603.txt index 6719ebd..5630fd6 100644 --- a/tools/testfiles/h5diff_603.txt +++ b/tools/testfiles/h5diff_603.txt @@ -1,7 +1,7 @@ ############################# Expected output for 'h5diff file1.h5 file2.h5 -d -4 g1/dset3 g1/dset4' ############################# -<-d -4> is not a valid option +Not a valid -d option Usage: h5diff file1 file2 [OPTIONS] [obj1[obj2]] file1 File name of the first HDF5 file diff --git a/tools/testfiles/h5diff_606.txt b/tools/testfiles/h5diff_606.txt index fe5308c..d20f2a9 100644 --- a/tools/testfiles/h5diff_606.txt +++ b/tools/testfiles/h5diff_606.txt @@ -1,39 +1,11 @@ ############################# Expected output for 'h5diff file1.h5 file2.h5 -d 0x1 g1/dset3 g1/dset4' ############################# -<-d 0x1> is not a valid option -Usage: h5diff file1 file2 [OPTIONS] [obj1[obj2]] - -file1 File name of the first HDF5 file -file2 File name of the second HDF5 file -[obj1] Name of an HDF5 object, in absolute path -[obj2] Name of an HDF5 object, in absolute path -[OPTIONS] are: -[-h] Print out this information -[-v] Verbose mode -[-r] Print only what objects differ, not the differences -[-n count] Print difference up to count number -[-d delta] Print difference when it is greater than limit delta -[-p relative] Print difference when it is greater than a relative limit - -Items in [] are optional -[obj1] and [obj2] are HDF5 objects (datasets, groups or datatypes) -The 'count' value must be a positive integer -The 'delta' and 'relative' values must be positive numbers -The -d compare criteria is |a - b| > delta -The -p compare criteria is |1 - b/a| > relative - -Examples: - -1) h5diff file1 file2 /a/b /a/c - - Compares object '/a/b' in file1 with '/a/c' in file2 - -2) h5diff file1 file2 /a/b - - Compares object '/a/b' in both files - -3) h5diff file1 file2 - - Compares all objects in both files - +position dset3 dset4 difference +------------------------------------------------------------ +[ 0 0 ] 100.000000 110.000000 10.000000 +[ 0 1 ] 110.000000 100.000000 10.000000 +[ 1 0 ] 100.000000 90.000000 10.000000 +[ 1 1 ] 100.000000 80.000000 20.000000 +[ 2 0 ] 100.000000 140.000000 40.000000 +[ 2 1 ] 100.000000 200.000000 100.000000 diff --git a/tools/testfiles/h5diff_612.txt b/tools/testfiles/h5diff_612.txt index 98a6183..803b64e 100644 --- a/tools/testfiles/h5diff_612.txt +++ b/tools/testfiles/h5diff_612.txt @@ -1,7 +1,7 @@ ############################# Expected output for 'h5diff file1.h5 file2.h5 -p -4 g1/dset3 g1/dset4' ############################# --4 is an invalid option +Not a valid -p option Usage: h5diff file1 file2 [OPTIONS] [obj1[obj2]] file1 File name of the first HDF5 file diff --git a/tools/testfiles/h5diff_615.txt b/tools/testfiles/h5diff_615.txt index 2f19008..0519153 100644 --- a/tools/testfiles/h5diff_615.txt +++ b/tools/testfiles/h5diff_615.txt @@ -1,39 +1,3 @@ ############################# Expected output for 'h5diff file1.h5 file2.h5 -p 0x1 g1/dset3 g1/dset4' ############################# -<-p 0x1> is not a valid option -Usage: h5diff file1 file2 [OPTIONS] [obj1[obj2]] - -file1 File name of the first HDF5 file -file2 File name of the second HDF5 file -[obj1] Name of an HDF5 object, in absolute path -[obj2] Name of an HDF5 object, in absolute path -[OPTIONS] are: -[-h] Print out this information -[-v] Verbose mode -[-r] Print only what objects differ, not the differences -[-n count] Print difference up to count number -[-d delta] Print difference when it is greater than limit delta -[-p relative] Print difference when it is greater than a relative limit - -Items in [] are optional -[obj1] and [obj2] are HDF5 objects (datasets, groups or datatypes) -The 'count' value must be a positive integer -The 'delta' and 'relative' values must be positive numbers -The -d compare criteria is |a - b| > delta -The -p compare criteria is |1 - b/a| > relative - -Examples: - -1) h5diff file1 file2 /a/b /a/c - - Compares object '/a/b' in file1 with '/a/c' in file2 - -2) h5diff file1 file2 /a/b - - Compares object '/a/b' in both files - -3) h5diff file1 file2 - - Compares all objects in both files - diff --git a/tools/testfiles/h5diff_621.txt b/tools/testfiles/h5diff_621.txt index d6b2024..11a3e16 100644 --- a/tools/testfiles/h5diff_621.txt +++ b/tools/testfiles/h5diff_621.txt @@ -1,7 +1,7 @@ ############################# Expected output for 'h5diff file1.h5 file2.h5 -n -4 g1/dset3 g1/dset4' ############################# --4 is an invalid option +Not a valid -n option Usage: h5diff file1 file2 [OPTIONS] [obj1[obj2]] file1 File name of the first HDF5 file |