From f7d468d18f79af1baa6ff6985699844d921912d0 Mon Sep 17 00:00:00 2001 From: simonmar Date: Mon, 13 Aug 2001 12:34:37 +0000 Subject: [PATCH] [project @ 2001-08-13 12:34:37 by simonmar] The '--' argument disables any further +RTS ... -RTS processing on the command line. --- ghc/rts/RtsFlags.c | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/ghc/rts/RtsFlags.c b/ghc/rts/RtsFlags.c index 40221e1..b491661 100644 --- a/ghc/rts/RtsFlags.c +++ b/ghc/rts/RtsFlags.c @@ -1,5 +1,5 @@ /* ----------------------------------------------------------------------------- - * $Id: RtsFlags.c,v 1.47 2001/08/10 15:25:49 simonmar Exp $ + * $Id: RtsFlags.c,v 1.48 2001/08/13 12:34:37 simonmar Exp $ * * (c) The AQUA Project, Glasgow University, 1994-1997 * (c) The GHC Team, 1998-1999 @@ -384,7 +384,7 @@ usage_text[] = { " -k Sets the initial thread stack size (default 1k) Egs: -K4k -K2m", "", " -A Sets the minimum allocation area size (default 256k) Egs: -A1m -A10k", -" -M Sets the maximum heap size (default 64M) Egs: -M256k -M1G", +" -M Sets the maximum heap size (default unlimited) Egs: -M256k -M1G", " -H Sets the minimum heap size (default 0M) Egs: -H24m -H1G", " -m Minimum % of heap which must be available (default 3%)", " -G Number of generations (default: 2)", @@ -535,8 +535,18 @@ setupRtsFlags(int *argc, char *argv[], int *rts_argc, char *rts_argv[]) // Split arguments (argv) into PGM (argv) and RTS (rts_argv) parts // argv[0] must be PGM argument -- leave in argv - for (mode = PGM; arg < total_arg && ! strequal("--RTS", argv[arg]); arg++) { - if (strequal("+RTS", argv[arg])) { + for (mode = PGM; arg < total_arg; arg++) { + // The '--RTS' argument disables all future +RTS ... -RTS processing. + if (strequal("--RTS", argv[arg])) { + arg++; + break; + } + // The '--' argument is passed through to the program, but + // disables all further +RTS ... -RTS processing. + else if (strequal("--", argv[arg])) { + break; + } + else if (strequal("+RTS", argv[arg])) { mode = RTS; } else if (strequal("-RTS", argv[arg])) { @@ -552,11 +562,9 @@ setupRtsFlags(int *argc, char *argv[], int *rts_argc, char *rts_argv[]) barf("too many RTS arguments (max %d)", MAX_RTS_ARGS-1); } } - if (arg < total_arg) { - /* arg must be --RTS; process remaining program arguments */ - while (++arg < total_arg) { - argv[(*argc)++] = argv[arg]; - } + // process remaining program arguments + for (; arg < total_arg; arg++) { + argv[(*argc)++] = argv[arg]; } argv[*argc] = (char *) 0; rts_argv[*rts_argc] = (char *) 0; -- 1.7.10.4