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
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);
++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;
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;
}