Add support for client/server connection over unix domain sockets
[fio.git] / init.c
diff --git a/init.c b/init.c
index 00ef5ac1f3484542b7553b6f43ea8917b840c2d0..486b743578873e945b982538e37588ed479c40ca 100644 (file)
--- a/init.c
+++ b/init.c
@@ -188,7 +188,7 @@ static struct option l_opts[FIO_NR_OPTIONS] = {
        },
        {
                .name           = (char *) "server",
-               .has_arg        = no_argument,
+               .has_arg        = optional_argument,
                .val            = 'S',
        },
        {       .name           = (char *) "daemonize",
@@ -1304,14 +1304,16 @@ int parse_cmd_line(int argc, char *argv[])
                        terse_output = 1;
                        break;
                case 'h':
-                       if (!cur_client)
+                       if (!cur_client) {
                                usage(argv[0]);
-                       do_exit++;
+                               do_exit++;
+                       }
                        break;
                case 'c':
-                       if (!cur_client)
+                       if (!cur_client) {
                                fio_show_option_help(optarg);
-                       do_exit++;
+                               do_exit++;
+                       }
                        break;
                case 's':
                        dump_cmdline = 1;
@@ -1320,9 +1322,10 @@ int parse_cmd_line(int argc, char *argv[])
                        read_only = 1;
                        break;
                case 'v':
-                       if (!cur_client)
+                       if (!cur_client) {
                                log_info("fio %s\n", fio_version_string);
-                       do_exit++;
+                               do_exit++;
+                       }
                        break;
                case 'V':
                        terse_version = atoi(optarg);
@@ -1407,6 +1410,8 @@ int parse_cmd_line(int argc, char *argv[])
                                exit_val = 1;
                                break;
                        }
+                       if (optarg)
+                               fio_server_add_arg(optarg);
                        is_backend = 1;
                        backend = 1;
                        break;
@@ -1454,7 +1459,7 @@ int parse_cmd_line(int argc, char *argv[])
                        ret = add_job(td, td->o.name ?: "fio", 0);
        }
 
-       while (optind < argc) {
+       while (!ret && optind < argc) {
                ini_idx++;
                ini_file = realloc(ini_file, ini_idx * sizeof(char *));
                ini_file[ini_idx - 1] = strdup(argv[optind]);