X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fruntime%2Fruntime.c;h=e49d7d15052c900e11959430b21e8135577d6157;hb=HEAD;hp=3bc18ee8b9f19eb3e6ed37ef4c06b48934ccbdc7;hpb=77acf5b7dce7ecfcc8a66b5f3d527b10cdd74dc1;p=sbcl.git diff --git a/src/runtime/runtime.c b/src/runtime/runtime.c index 3bc18ee..e49d7d1 100644 --- a/src/runtime/runtime.c +++ b/src/runtime/runtime.c @@ -95,7 +95,7 @@ void sigint_init(void) { SHOW("entering sigint_init()"); - install_handler(SIGINT, sigint_handler); + install_handler(SIGINT, sigint_handler, 1); SHOW("leaving sigint_init()"); } @@ -217,7 +217,15 @@ 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\ BSD-style licenses. See the CREDITS and COPYING files in the\n\ distribution for more information.\n\ -", SBCL_VERSION_STRING); +" +#ifdef LISP_FEATURE_WIN32 +"\n\ +WARNING: the Windows port is fragile, particularly for multithreaded\n\ +code. Unfortunately, the development team currently lacks the time\n\ +and resources this platform demands.\n\ +" +#endif +, SBCL_VERSION_STRING); } /* Look for a core file to load, first in the directory named by the @@ -287,6 +295,18 @@ search_for_executable(const char *argv0) return search; } } + /* The above for-loop fails to process the last part of PATH if PATH does + * not end with ':'. We may consider appending an extra ':' to the end of + * SEARCH. -- houjingyi 2013-05-24 */ + if (start != NULL && *start != '\0') { + snprintf(buf, PATH_MAX + 1, "%s/%s", start, argv0); + if (access(buf, F_OK) == 0) { + free(search); + search = copied_realpath(buf); + free(buf); + return search; + } + } free(search); free(buf); @@ -499,14 +519,22 @@ main(int argc, char *argv[], char *envp[]) ++argi; if (argi >= argc) lose("missing argument for --dynamic-space-size"); - dynamic_space_size = parse_size_arg(argv[argi++], "--dynamic-space-size"); + dynamic_space_size = parse_size_arg(argv[argi++], + "--dynamic-space-size"); # ifdef MAX_DYNAMIC_SPACE_END if (!((DYNAMIC_SPACE_START < DYNAMIC_SPACE_START+dynamic_space_size) && (DYNAMIC_SPACE_START+dynamic_space_size <= - MAX_DYNAMIC_SPACE_END))) - lose("--dynamic-space-size argument %s is too large, max %lu", - argv[argi-1], MAX_DYNAMIC_SPACE_END-DYNAMIC_SPACE_START); + MAX_DYNAMIC_SPACE_END))) { + char* suffix = ""; + char* size = argv[argi-1]; + if (!strchr(size, 'B') && !strchr(size, 'b')) { + suffix = " [MB]"; + } + lose("--dynamic-space-size argument %s%s is too large, max %lu KB", + size, suffix, + (MAX_DYNAMIC_SPACE_END-DYNAMIC_SPACE_START) / 1024); + } # endif } else if (0 == strcmp(arg, "--control-stack-size")) { ++argi; @@ -688,14 +716,7 @@ main(int argc, char *argv[], char *envp[]) FSHOW((stderr, "/funcalling initial_function=0x%lx\n", (unsigned long)initial_function)); -#ifdef LISP_FEATURE_WIN32 - fprintf(stderr, "\n\ -This is experimental prerelease support for the Windows platform: use\n\ -at your own risk. \"Your Kitten of Death awaits!\"\n"); - fflush(stdout); - fflush(stderr); -#endif create_initial_thread(initial_function); - lose("CATS. CATS ARE NICE.\n"); + lose("unexpected return from initial thread in main()\n"); return 0; }