[PATCH] fio: replace home grown argument parsing with getopt()
authorJens Axboe <axboe@suse.de>
Fri, 2 Dec 2005 07:56:15 +0000 (08:56 +0100)
committerJens Axboe <axboe@suse.de>
Fri, 2 Dec 2005 07:56:15 +0000 (08:56 +0100)
fio-ini.c

index 9817b2132ac419705336c1ea6e44389ba5d5c344..fdeea52d4746486b7e16e3fe45cb62443e71c83c 100644 (file)
--- a/fio-ini.c
+++ b/fio-ini.c
@@ -725,23 +725,15 @@ static int fill_def_thread(void)
 
 static void parse_cmd_line(int argc, char *argv[])
 {
-       int i;
+       int c;
 
-       for (i = 1; i < argc; i++) {
-               char *parm = argv[i];
-
-               if (parm[0] != '-')
-                       break;
-
-               parm++;
-               switch (*parm) {
+       while ((c = getopt(argc, argv, "s:b:t:r:R:o:f:lw")) != EOF) {
+               switch (c) {
                        case 's':
-                               parm++;
-                               def_thread.sequential = !!atoi(parm);
+                               def_thread.sequential = !!atoi(optarg);
                                break;
                        case 'b':
-                               parm++;
-                               def_thread.bs = atoi(parm);
+                               def_thread.bs = atoi(optarg);
                                def_thread.bs <<= 10;
                                if (!def_thread.bs) {
                                        printf("bad block size\n");
@@ -749,28 +741,19 @@ static void parse_cmd_line(int argc, char *argv[])
                                }
                                break;
                        case 't':
-                               parm++;
-                               def_thread.timeout = atoi(parm);
+                               def_thread.timeout = atoi(optarg);
                                break;
                        case 'r':
-                               parm++;
-                               repeatable = !!atoi(parm);
+                               repeatable = !!atoi(optarg);
                                break;
                        case 'R':
-                               parm++;
-                               rate_quit = !!atoi(parm);
+                               rate_quit = !!atoi(optarg);
                                break;
                        case 'o':
-                               parm++;
-                               def_thread.odirect = !!atoi(parm);
+                               def_thread.odirect = !!atoi(optarg);
                                break;
                        case 'f':
-                               if (i + 1 >= argc) {
-                                       printf("-f needs file as arg\n");
-                                       break;
-                               }
-                               ini_file = strdup(argv[i+1]);
-                               i++;
+                               ini_file = strdup(optarg);
                                break;
                        case 'l':
                                write_lat_log = 1;
@@ -778,9 +761,6 @@ static void parse_cmd_line(int argc, char *argv[])
                        case 'w':
                                write_bw_log = 1;
                                break;
-                       default:
-                               printf("bad option %s\n", argv[i]);
-                               break;
                }
        }
 }