projects
/
sbcl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
0.9.0.28:
[sbcl.git]
/
src
/
runtime
/
runtime.c
diff --git
a/src/runtime/runtime.c
b/src/runtime/runtime.c
index
545fb35
..
a457dd8
100644
(file)
--- a/
src/runtime/runtime.c
+++ b/
src/runtime/runtime.c
@@
-28,6
+28,7
@@
#include <signal.h>
#include <sched.h>
#include <errno.h>
#include <signal.h>
#include <sched.h>
#include <errno.h>
+#include <locale.h>
#if defined(SVR4) || defined(__linux__)
#include <time.h>
#if defined(SVR4) || defined(__linux__)
#include <time.h>
@@
-182,6
+183,7
@@
main(int argc, char *argv[], char *envp[])
/* 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;
/* 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;
/* other command line options */
boolean noinform = 0;
@@
-189,6
+191,8
@@
main(int argc, char *argv[], char *envp[])
lispobj initial_function;
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 */
/* 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 */
@@
-245,6
+249,10
@@
main(int argc, char *argv[], char *envp[])
{
char *argi0 = argv[argi];
int argj = 1;
{
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
while (argi < argc) {
char *arg = argv[argi++];
/* If we encounter --end-runtime-options for the first
@@
-256,10
+264,9
@@
main(int argc, char *argv[], char *envp[])
0 == strcmp(arg, "--end-runtime-options")) {
lose("bad runtime option \"%s\"", argi0);
}
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;
}
}
}
}
@@
-327,7
+334,8
@@
main(int argc, char *argv[], char *envp[])
/* Convert remaining argv values to something that Lisp can grok. */
SHOW("setting POSIX-ARGV symbol value");
/* 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. */
/* Install a handler to pick off SIGINT until the Lisp system gets
* far enough along to install its own handler. */
@@
-336,5
+344,6
@@
main(int argc, char *argv[], char *envp[])
FSHOW((stderr, "/funcalling initial_function=0x%lx\n", initial_function));
create_initial_thread(initial_function);
lose("CATS. CATS ARE NICE.");
FSHOW((stderr, "/funcalling initial_function=0x%lx\n", initial_function));
create_initial_thread(initial_function);
lose("CATS. CATS ARE NICE.");
+ return 0;
}
}