mirror of
https://github.com/HDFGroup/hdf5.git
synced 2024-11-27 02:10:55 +08:00
[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:
This commit is contained in:
parent
9c79ce84ee
commit
1b008c03aa
@ -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
|
||||
*
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user