From 24f7909acb5d395756ce1912ab426090e369eb84 Mon Sep 17 00:00:00 2001 From: Peter Andersson Date: Wed, 2 Jun 2010 13:18:45 +0200 Subject: Add -erl_args flag to run_test program With -erl_args it's possible to divide the start options on the command line and this way specify explicitly which options are meant for Common Test, and which are meant for other OTP applications (or ERTS). --- erts/etc/common/run_test.c | 88 ++++++++++++++++++++++++++++------------------ 1 file changed, 53 insertions(+), 35 deletions(-) (limited to 'erts/etc/common') diff --git a/erts/etc/common/run_test.c b/erts/etc/common/run_test.c index 027d10acf8..d585d79230 100644 --- a/erts/etc/common/run_test.c +++ b/erts/etc/common/run_test.c @@ -128,6 +128,7 @@ main(int argc, char** argv) int ct_mode; int dist_mode; int cnt; + int erl_args; char** argv0 = argv; emulator = get_default_emulator(argv[0]); @@ -151,42 +152,50 @@ main(int argc, char** argv) dist_mode = SHORT_NAME; browser[0] = '\0'; ct_mode = NORMAL_MODE; - cnt = argc; + erl_args = argc; + cnt = 1; /* * Check various flags before building command line */ - while (cnt > 1) { - if (strcmp(argv[1], "-vts") == 0) { - ct_mode = VTS_MODE; - } - else if (strcmp(argv[1], "-browser") == 0) { - strcpy(browser, argv[2]); - cnt--, argv++; - } - else if (strcmp(argv[1], "-shell") == 0) { - ct_mode = CT_SHELL_MODE; - } - else if (strcmp(argv[1], "-ctmaster") == 0) { - strcpy(nodename, "ct_master"); - ct_mode = MASTER_MODE; - } - else if (strcmp(argv[1], "-ctname") == 0) { - strcpy(nodename, argv[2]); - ct_mode = ERL_SHELL_MODE; - cnt--, argv++; + while (cnt < argc) { + if (strcmp(argv[1], "-erl_args") == 0) { + erl_args = cnt; } else if (strcmp(argv[1], "-sname") == 0) { strcpy(nodename, argv[2]); - cnt--, argv++; + cnt++, argv++; } else if (strcmp(argv[1], "-name") == 0) { strcpy(nodename, argv[2]); dist_mode = FULL_NAME; - cnt--, argv++; + cnt++, argv++; + } + else { + if (cnt < erl_args) { + if (strcmp(argv[1], "-vts") == 0) { + ct_mode = VTS_MODE; + } + else if (strcmp(argv[1], "-browser") == 0) { + strcpy(browser, argv[2]); + cnt++, argv++; + } + else if (strcmp(argv[1], "-shell") == 0) { + ct_mode = CT_SHELL_MODE; + } + else if (strcmp(argv[1], "-ctmaster") == 0) { + strcpy(nodename, "ct_master"); + ct_mode = MASTER_MODE; + } + else if (strcmp(argv[1], "-ctname") == 0) { + strcpy(nodename, argv[2]); + ct_mode = ERL_SHELL_MODE; + cnt++, argv++; + } + } } - cnt--, argv++; + cnt++, argv++; } argv = argv0; @@ -219,19 +228,28 @@ main(int argc, char** argv) PUSH3("-s", "erlang", "halt"); } - while (argc > 1) { - if (strcmp(argv[1], "-config") == 0) - PUSH("-ct_config"); - else if (strcmp(argv[1], "-decrypt_key") == 0) - PUSH("-ct_decrypt_key"); - else if (strcmp(argv[1], "-decrypt_file") == 0) - PUSH("-ct_decrypt_file"); - else if ((strcmp(argv[1], "-sname") == 0) || (strcmp(argv[1], "-name") == 0)) - argc--, argv++; - else + cnt = 1; + while (cnt < argc) { + if (strcmp(argv[1], "-erl_args") == 0) { + PUSH("-ct_erl_args"); + } + else if ((strcmp(argv[1], "-sname") == 0) || (strcmp(argv[1], "-name") == 0)) { + cnt++, argv++; + } + else if (cnt < erl_args) { + if (strcmp(argv[1], "-config") == 0) + PUSH("-ct_config"); + else if (strcmp(argv[1], "-decrypt_key") == 0) + PUSH("-ct_decrypt_key"); + else if (strcmp(argv[1], "-decrypt_file") == 0) + PUSH("-ct_decrypt_file"); + else + PUSH(argv[1]); + } + else { PUSH(argv[1]); - - argc--, argv++; + } + cnt++, argv++; } /* -- cgit v1.2.3