From 2163ab99e457cfc7a0f009ab79781a767eb53b77 Mon Sep 17 00:00:00 2001 From: "Alfred E. Heggestad" Date: Tue, 29 Nov 2016 21:04:08 +0100 Subject: main: add support for multiple -e commands arguments --- src/main.c | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/main.c b/src/main.c index 910e862..0028465 100644 --- a/src/main.c +++ b/src/main.c @@ -53,7 +53,7 @@ static void usage(void) "\t-6 Prefer IPv6\n" #endif "\t-d Daemon\n" - "\t-e Exec commands\n" + "\t-e Execute commands (repeat)\n" "\t-f Config path\n" "\t-m Pre-load modules (repeat)\n" "\t-p Audio files\n" @@ -69,10 +69,12 @@ int main(int argc, char *argv[]) { bool prefer_ipv6 = false, run_daemon = false, test = false; const char *ua_eprm = NULL; - const char *exec = NULL; + const char *execmdv[16]; const char *audio_path = NULL; const char *modv[16]; + size_t execmdc = 0; size_t modc = 0; + size_t i; int err; (void)re_fprintf(stderr, "baresip v%s" @@ -110,7 +112,13 @@ int main(int argc, char *argv[]) break; case 'e': - exec = optarg; + if (execmdc >= ARRAY_SIZE(execmdv)) { + warning("max %zu commands\n", + ARRAY_SIZE(execmdv)); + err = EINVAL; + goto out; + } + execmdv[execmdc++] = optarg; break; case 'f': @@ -178,7 +186,6 @@ int main(int argc, char *argv[]) /* NOTE: must be done after all arguments are processed */ if (modc) { - size_t i; info("pre-loading modules: %zu\n", modc); @@ -225,8 +232,10 @@ int main(int argc, char *argv[]) info("baresip is ready.\n"); - if (exec) - ui_input_str(exec); + /* Execute any commands from input arguments */ + for (i=0; i