#include <signal.h>
#include <sched.h>
#include <errno.h>
+#include <locale.h>
#if defined(SVR4) || defined(__linux__)
#include <time.h>
{
printf(
"This is SBCL %s, an implementation of ANSI Common Lisp.\n\
-\n\
-More information about SBCL is available at <http://www.sbcl.org/>.\
+More information about SBCL is available at <http://www.sbcl.org/>.\n\
\n\
SBCL is free software, provided as is, with absolutely no warranty.\n\
It is mostly in the public domain; some portions are provided under\n\
/* the name of the core file we're to execute. Note that this is
* a malloc'ed string which should be freed eventually. */
char *core = 0;
+ char **sbcl_argv = 0;
/* other command line options */
boolean noinform = 0;
lispobj initial_function;
+ setlocale(LC_ALL, "");
+
/* KLUDGE: os_vm_page_size is set by os_init(), and on some
* systems (e.g. Alpha) arch_init() needs need os_vm_page_size, so
* it must follow os_init(). -- WHN 2000-01-26 */
{
char *argi0 = argv[argi];
int argj = 1;
+ /* (argc - argi) for the arguments, one for the binary,
+ and one for the terminating NULL. */
+ sbcl_argv = successful_malloc((2 + argc - argi) * sizeof(char *));
+ sbcl_argv[0] = argv[0];
while (argi < argc) {
char *arg = argv[argi++];
/* If we encounter --end-runtime-options for the first
0 == strcmp(arg, "--end-runtime-options")) {
lose("bad runtime option \"%s\"", argi0);
}
- argv[argj++] = arg;
+ sbcl_argv[argj++] = arg;
}
- argv[argj] = 0;
- argc = argj;
+ sbcl_argv[argj] = 0;
}
}
/* Convert remaining argv values to something that Lisp can grok. */
SHOW("setting POSIX-ARGV symbol value");
- SetSymbolValue(POSIX_ARGV, alloc_base_string_list(argv),0);
+ SetSymbolValue(POSIX_ARGV, alloc_base_string_list(sbcl_argv),0);
+ free(sbcl_argv);
/* Install a handler to pick off SIGINT until the Lisp system gets
* far enough along to install its own handler. */
FSHOW((stderr, "/funcalling initial_function=0x%lx\n", initial_function));
create_initial_thread(initial_function);
lose("CATS. CATS ARE NICE.");
+ return 0;
}