diff --git a/perf-regression/margo-p2p-latency.c b/perf-regression/margo-p2p-latency.c index e8cc2e18473bd8e71a2bc9e26149fb1fce9bc17f..11b6ca07a665c19762efc9d712c992ca9d55336a 100644 --- a/perf-regression/margo-p2p-latency.c +++ b/perf-regression/margo-p2p-latency.c @@ -26,7 +26,7 @@ struct options char* na_transport; }; -static void parse_args(int argc, char **argv, struct options *opts); +static int parse_args(int argc, char **argv, struct options *opts); static void usage(void); static int run_benchmark(int iterations, hg_id_t id, ssg_member_id_t target, ssg_group_id_t gid, margo_instance_id mid, double *measurement_array); @@ -84,7 +84,13 @@ int main(int argc, char **argv) printf("Process %d of %d is on %s\n", rank, nranks, processor_name); - parse_args(argc, argv, &g_opts); + ret = parse_args(argc, argv, &g_opts); + if(ret < 0) + { + if(rank == 0) + usage(); + exit(EXIT_FAILURE); + } /* boilerplate ABT initialization steps */ /****************************************/ @@ -228,7 +234,7 @@ int main(int argc, char **argv) return 0; } -static void parse_args(int argc, char **argv, struct options *opts) +static int parse_args(int argc, char **argv, struct options *opts) { int opt; int ret; @@ -248,46 +254,36 @@ static void parse_args(int argc, char **argv, struct options *opts) if(!opts->diag_file_name) { perror("strdup"); - exit(EXIT_FAILURE); + return(-1); } break; case 'i': ret = sscanf(optarg, "%d", &opts->iterations); if(ret != 1) - { - usage(); - exit(EXIT_FAILURE); - } + return(-1); break; case 't': ret = sscanf(optarg, "%u,%u", &opts->mercury_timeout_client, &opts->mercury_timeout_server); if(ret != 2) - { - usage(); - exit(EXIT_FAILURE); - } + return(-1); break; case 'n': opts->na_transport = strdup(optarg); if(!opts->na_transport) { perror("strdup"); - exit(EXIT_FAILURE); + return(-1); } break; default: - usage(); - exit(EXIT_FAILURE); + return(-1); } } if(opts->iterations < 1 || !opts->na_transport) - { - usage(); - exit(EXIT_FAILURE); - } + return(-1); - return; + return(0); } static void usage(void)