diff options
author | Albert Cheng <acheng@hdfgroup.org> | 1999-12-09 23:53:21 (GMT) |
---|---|---|
committer | Albert Cheng <acheng@hdfgroup.org> | 1999-12-09 23:53:21 (GMT) |
commit | e83cdf402f1c0f111acf0e79dcbea60871c0fb4a (patch) | |
tree | 57f787908b04724e7201fd3ccf3c50477da9fd33 /tools | |
parent | 767ac8d994f8c4711989cd8a9c6b8c5090139e83 (diff) | |
download | hdf5-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.
Diffstat (limited to 'tools')
-rw-r--r-- | tools/h5toh4.c | 42 |
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); } |