[PATCH] Correct command line parsing
[fio.git] / init.c
diff --git a/init.c b/init.c
index 85f0e3e317b6d7a3b9e45e45b15c6f03b68c83dd..c1e26d3f7c2831f2aaae2a6ec21677c38b52086f 100644 (file)
--- a/init.c
+++ b/init.c
@@ -49,7 +49,7 @@
 
 static int def_timeout = DEF_TIMEOUT;
 
-static char fio_version_string[] = "fio 1.4";
+static char fio_version_string[] = "fio 1.5";
 
 static char **ini_file;
 static int max_jobs = MAX_JOBS;
@@ -625,7 +625,7 @@ static int str_ioengine_cb(struct thread_data *td, char *str)
 /*
  * This is our [ini] type file parser.
  */
-int parse_jobs_ini(char *file)
+int parse_jobs_ini(char *file, int stonewall_flag)
 {
        unsigned int prioclass, prio, cpu, global, il;
        unsigned long long ull;
@@ -635,7 +635,7 @@ int parse_jobs_ini(char *file)
        fpos_t off;
        FILE *f;
        char *p;
-       int ret = 0, stonewall = 1;
+       int ret = 0, stonewall;
 
        f = fopen(file, "r");
        if (!f) {
@@ -647,6 +647,7 @@ int parse_jobs_ini(char *file)
        name = malloc(256);
        tmpbuf = malloc(4096);
 
+       stonewall = stonewall_flag;
        while ((p = fgets(string, 4096, f)) != NULL) {
                if (ret)
                        break;
@@ -749,7 +750,7 @@ int parse_jobs_ini(char *file)
                                continue;
                        }
                        if (!check_str_time(p, "timeout", &ull)) {
-                               td->timeout = ul1;
+                               td->timeout = ull;
                                fgetpos(f, &off);
                                continue;
                        }
@@ -1024,7 +1025,6 @@ static void usage(char *name)
        printf("\t-l Generate per-job latency logs\n");
        printf("\t-w Generate per-job bandwidth logs\n");
        printf("\t-m Minimal (terse) output\n");
-       printf("\t-f Job file (Required)\n");
        printf("\t-v Print version info and exit\n");
 }
 
@@ -1032,25 +1032,19 @@ static int parse_cmd_line(int argc, char *argv[])
 {
        int c, idx = 1, ini_idx = 0;
 
-       while ((c = getopt(argc, argv, "t:o:f:lwvhm")) != EOF) {
+       while ((c = getopt(argc, argv, "t:o:lwvhm")) != EOF) {
                switch (c) {
                        case 't':
                                def_timeout = atoi(optarg);
-                               idx++;
-                               break;
-                       case 'f':
-                               ini_idx++;
-                               ini_file = realloc(ini_file, ini_idx * sizeof(char *));
-                               ini_file[ini_idx - 1] = strdup(optarg);
-                               idx++;
+                               idx = optind;
                                break;
                        case 'l':
                                write_lat_log = 1;
-                               idx++;
+                               idx = optind;
                                break;
                        case 'w':
                                write_bw_log = 1;
-                               idx++;
+                               idx = optind;
                                break;
                        case 'o':
                                f_out = fopen(optarg, "w+");
@@ -1059,11 +1053,11 @@ static int parse_cmd_line(int argc, char *argv[])
                                        exit(1);
                                }
                                f_err = f_out;
-                               idx++;
+                               idx = optind;
                                break;
                        case 'm':
                                terse_output = 1;
-                               idx++;
+                               idx = optind;
                                break;
                        case 'h':
                                usage(argv[0]);
@@ -1080,7 +1074,7 @@ static int parse_cmd_line(int argc, char *argv[])
                ini_file[ini_idx - 1] = strdup(argv[idx]);
                idx++;
        }
-               
+
        if (!f_out) {
                f_out = stdout;
                f_err = stderr;
@@ -1157,7 +1151,7 @@ int parse_options(int argc, char *argv[])
        for (i = 0; i < job_files; i++) {
                if (fill_def_thread())
                        return 1;
-               if (parse_jobs_ini(ini_file[i]))
+               if (parse_jobs_ini(ini_file[i], i))
                        return 1;
                free(ini_file[i]);
        }