summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlbert Cheng <acheng@hdfgroup.org>1999-12-09 23:53:21 (GMT)
committerAlbert Cheng <acheng@hdfgroup.org>1999-12-09 23:53:21 (GMT)
commite83cdf402f1c0f111acf0e79dcbea60871c0fb4a (patch)
tree57f787908b04724e7201fd3ccf3c50477da9fd33
parent767ac8d994f8c4711989cd8a9c6b8c5090139e83 (diff)
downloadhdf5-e83cdf402f1c0f111acf0e79dcbea60871c0fb4a.zip
hdf5-e83cdf402f1c0f111acf0e79dcbea60871c0fb4a.tar.gz
hdf5-e83cdf402f1c0f111acf0e79dcbea60871c0fb4a.tar.bz2
[svn-r1862] The old way of testing **argv against NULL would cause coredump in
some machines. Changed it to use argc to control the looping. Still need to clean some more.
-rw-r--r--tools/h5toh4.c42
1 files changed, 23 insertions, 19 deletions
diff --git a/tools/h5toh4.c b/tools/h5toh4.c
index ab7616e..19974d9 100644
--- a/tools/h5toh4.c
+++ b/tools/h5toh4.c
@@ -17,7 +17,7 @@
#include <fcntl.h>
#include <h5toh4.h>
-extern int PrintOptions_h5toh4(void);
+extern void PrintOptions_h5toh4(void);
extern char *BuildFilename(char *h5_filename, char *h4_extension);
extern int test_file(char *filename, int oflag, mode_t mode);
extern int test_dir(char *);
@@ -62,15 +62,15 @@ typedef herr_t (*H5G_operator_t)(hid_t, const char*, void*);
*****************************************************************************/
int
-main(int argc, char **argv)
+main(int argc, char *argv[])
{
- char **fargv;
char *h5_filename=NULL;
char *h4_filename=NULL;
char *h4_extension;
int status = 0;
int status2 = 0;
+
argc--;
argv++;
@@ -80,19 +80,20 @@ main(int argc, char **argv)
return -1;
}
- fargv = argv;
- while ( *fargv != NULL ) {
- if ( HDstrcmp(*fargv,"-h") == 0 ) {
+ /* take care -h (help) option first */
+ { int i;
+ for (i=0; i < argc; i++)
+ if ( HDstrcmp(argv[i],"-h") == 0 ) {
PrintOptions_h5toh4();
- return -1;
+ return 0;
}
- fargv++;
}
- fargv = argv;
+ /*fargv = argv; */
- if (argc == 2 && HDstrcmp(*fargv,"-m") == 0) {
- fargv++;
+ /* Change -m with 1 filename to as 1 filename case */
+ if (argc == 2 && HDstrcmp(argv[0],"-m") == 0) {
+ argv++;
argc--;
}
@@ -104,7 +105,7 @@ main(int argc, char **argv)
break;
case 1: /* h5toh4 file1 */
- h5_filename = *fargv;
+ h5_filename = argv[0];
if (HDstrcmp(h5_filename,"-m") == 0) {
fprintf(stderr,"\nError: Invalid Arguments\n");
@@ -150,8 +151,8 @@ main(int argc, char **argv)
break;
case 2: /* h5toh4 file_in file_out */
- h5_filename = *fargv++;
- h4_filename = *fargv++;
+ h5_filename = argv[0];
+ h4_filename = argv[1];
if (HDstrcmp(h4_filename,"-m") == 0) {
fprintf(stderr,"\nError: Invalid Arguments\n");
@@ -189,14 +190,19 @@ main(int argc, char **argv)
break;
default: /* h5toh4 -m file1 file2 file3 ... */
- if (HDstrcmp(*fargv++,"-m") != 0) {
+ if (HDstrcmp(argv[0],"-m") != 0) {
fprintf(stderr,"\nError: Invalid Arguments\n");
PrintOptions_h5toh4();
status = -1;
break;
}
+ argv++;
+ argc--;
- while ( (h5_filename = *fargv++) != NULL ) {
+ while ( argc > 0 ) {
+ h5_filename = argv[0];
+ argv++;
+ argc--;
if (HDstrcmp(h5_filename,"-m") == 0) {
fprintf(stderr,"\nError: Invalid Arguments\n");
@@ -249,7 +255,6 @@ main(int argc, char **argv)
return status;
}
-
/*****************************************************************************
@@ -263,13 +268,12 @@ main(int argc, char **argv)
*****************************************************************************/
-int PrintOptions_h5toh4(void)
+void PrintOptions_h5toh4(void)
{
fprintf(stderr,"\nh5toh4 -h (gives this print-out)\n");
fprintf(stderr,"h5toh4 file.h5 file.hdf\n");
fprintf(stderr,"h5toh4 file.h5\n");
fprintf(stderr,"h5toh4 -m file1.h5 file2.h5 ...\n\n");
- return (SUCCEED);
}