diff options
author | dos-reis <gdr@axiomatics.org> | 2010-11-19 22:58:51 +0000 |
---|---|---|
committer | dos-reis <gdr@axiomatics.org> | 2010-11-19 22:58:51 +0000 |
commit | 5b484d68a91e5867c96ac409253f3503b188aadd (patch) | |
tree | 603edd807121b9440b80202d502426a4b53d7ade /src/driver/utils.c | |
parent | 32a0482710c76733805bca604c2089c231cd733f (diff) | |
download | open-axiom-5b484d68a91e5867c96ac409253f3503b188aadd.tar.gz |
* driver/utils.c (openaxiom_allocate_argv): New.
(openaxiom_build_rts_options): Use it. Tidy. Handle Clozure CL
and CLISP.
Diffstat (limited to 'src/driver/utils.c')
-rw-r--r-- | src/driver/utils.c | 29 |
1 files changed, 23 insertions, 6 deletions
diff --git a/src/driver/utils.c b/src/driver/utils.c index ed85339d..6914c5ac 100644 --- a/src/driver/utils.c +++ b/src/driver/utils.c @@ -113,6 +113,15 @@ openaxiom_make_path_for(const char* prefix, openaxiom_driver driver) return execpath; } +/* Allocate a nul-terminated vector for holding pointers to arguments + for the base Lisp runtime. */ +static void +openaxiom_allocate_argv(openaxiom_command* command, int n) { + command->rt_argc = n; + command->rt_argv = (char**) malloc((n + 1) * sizeof(char*)); + command->rt_argv[n] = 0; +} + /* Build arguments, if any, to be supplied to the runtime system of `driver'. */ void @@ -133,9 +142,7 @@ openaxiom_build_rts_options(openaxiom_command* command, case openaxiom_script_driver: switch (OPENAXIOM_BASE_RTS) { case openaxiom_gcl_runtime: - command->rt_argc = 3; - command->rt_argv = (char **) - malloc(command->rt_argc * sizeof (char*)); + openaxiom_allocate_argv(command, 3); command->rt_argv[0] = (char*) "-batch"; command->rt_argv[1] = (char*) "-eval"; command->rt_argv[2] = @@ -143,14 +150,24 @@ openaxiom_build_rts_options(openaxiom_command* command, break; case openaxiom_sbcl_runtime: - command->rt_argc = 4; - command->rt_argv = (char **) - malloc(command->rt_argc * sizeof (char*)); + openaxiom_allocate_argv(command, 4); command->rt_argv[0] = (char*) "--noinform"; command->rt_argv[1] = (char*) "--end-runtime-options"; command->rt_argv[2] = (char*) "--noprint"; command->rt_argv[3] = (char*) "--end-toplevel-options"; break; + + case openaxiom_clozure_runtime: + openaxiom_allocate_argv(command, 2); + command->rt_argv[0] = (char*) "--quiet"; + command->rt_argv[1] = (char*) "--batch"; + break; + + case openaxiom_clisp_runtime: + openaxiom_allocate_argv(command, 2); + command->rt_argv[0] = (char*) "--quiet"; + command->rt_argv[1] = (char*) "-norc"; + break; default: abort(); |