summaryrefslogtreecommitdiff
path: root/libguile/load.c
diff options
context:
space:
mode:
authorStefan Jahn <stefan@lkcc.org>2003-05-29 14:39:13 +0000
committerStefan Jahn <stefan@lkcc.org>2003-05-29 14:39:13 +0000
commit2e945bccca0209965dbbb1aea858f9bb7576641a (patch)
tree93140104c679a4cbbe2747f98422cefce95853c5 /libguile/load.c
parent42ad901d04a32e9ec7033a5ba520b3be1908f2bf (diff)
downloadguile-2e945bccca0209965dbbb1aea858f9bb7576641a.tar.gz
2003-05-29 Stefan Jahn <stefan@lkcc.org>
* configure.in: Removed -lm check and added a cached check for __libc_stack_end to get it building for mingw32 hosts. 2003-05-29 Stefan Jahn <stefan@lkcc.org> * win32-dirent.c: Use malloc() instead of scm_malloc(). * stime.c (s_scm_strftime): Add a type cast to avoid compiler warning. * posix.c (s_scm_putenv): Disable use of unsetenv() for the mingw32 build. * modules.c (s_scm_module_import_interface): Renamed local variable interface to _interface. Seems like 'interface' is a special compiler directive for the mingw32 compiler. * mkstemp.c: Provide prototype to avoid compiler warning. * load.c (s_scm_search_path): Fixed absolute and relative path detections for native Windows platforms. * gc.h, threads.h: Export some more symbols using SCM_API (necessary to build on mingw32). * gc-freelist.c ("s_scm_map_free_list", "s_scm_gc_set_debug_check_freelist_x"): Fixed use of FUNC_NAME. * fports.c (fport_fill_input): Disable use of fport_wait_for_input() on Win32 platforms. * filesys.c (s_scm_basename): Fixed __MINGW32__ code. * Makefile.am: Modified some rules for cross compiling. 2003-05-29 Stefan Jahn <stefan@lkcc.org> * raw-ltdl.c: Some more modifications for mingw32 platforms. 2003-05-29 Stefan Jahn <stefan@lkcc.org> * Makefile.am (libguile_srfi_srfi_1_la_LDFLAGS, libguile_srfi_srfi_4_la_LDFLAGS, libguile_srfi_srfi_13_14__la_LDFLAGS): Added the -no-undefined option for the mingw32 build. 2003-05-29 Stefan Jahn <stefan@lkcc.org> * standalone/Makefile.am: Setup to build on mingw32.
Diffstat (limited to 'libguile/load.c')
-rw-r--r--libguile/load.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/libguile/load.c b/libguile/load.c
index b5a7757d0..71715263b 100644
--- a/libguile/load.c
+++ b/libguile/load.c
@@ -188,7 +188,11 @@ scm_internal_parse_path (char *path, SCM tail)
do {
/* Scan back to the beginning of the current element. */
do scan--;
+#ifdef __MINGW32__
+ while (scan >= path && *scan != ';');
+#else
while (scan >= path && *scan != ':');
+#endif
tail = scm_cons (scm_mem2string (scan + 1, elt_end - (scan + 1)),
tail);
elt_end = scan;
@@ -273,7 +277,16 @@ SCM_DEFINE (scm_search_path, "search-path", 2, 1, 0,
filename_len = SCM_STRING_LENGTH (filename);
/* If FILENAME is absolute, return it unchanged. */
+#ifdef __MINGW32__
+ if (((filename_len >= 1) &&
+ (filename_chars[0] == '/' || filename_chars[0] == '\\')) ||
+ ((filename_len >= 3) && filename_chars[1] == ':' &&
+ ((filename_chars[0] >= 'a' && filename_chars[0] <= 'z') ||
+ (filename_chars[0] >= 'A' && filename_chars[0] <= 'Z')) &&
+ (filename_chars[2] == '/' || filename_chars[2] == '\\')))
+#else
if (filename_len >= 1 && filename_chars[0] == '/')
+#endif
return filename;
/* Find the length of the longest element of path. */
@@ -306,7 +319,11 @@ SCM_DEFINE (scm_search_path, "search-path", 2, 1, 0,
extensions = SCM_EOL;
break;
}
+#ifdef __MINGW32__
+ else if (*endp == '/' || *endp == '\\')
+#else
else if (*endp == '/')
+#endif
/* This filename has no extension, so keep the current list
of extensions. */
break;
@@ -351,7 +368,11 @@ SCM_DEFINE (scm_search_path, "search-path", 2, 1, 0,
/* Concatenate the path name and the filename. */
len = SCM_STRING_LENGTH (dir);
memcpy (buf, SCM_STRING_CHARS (dir), len);
+#ifdef __MINGW32__
+ if (len >= 1 && buf[len - 1] != '/' && buf[len - 1] != '\\')
+#else
if (len >= 1 && buf[len - 1] != '/')
+#endif
buf[len++] = '/';
memcpy (buf + len, filename_chars, filename_len);
len += filename_len;
@@ -433,7 +454,12 @@ SCM_DEFINE (scm_primitive_load_path, "primitive-load-path", 1, 0, 0,
if (SCM_FALSEP (full_filename))
{
int absolute = (SCM_STRING_LENGTH (filename) >= 1
+#ifdef __MINGW32__
+ && (SCM_STRING_CHARS (filename)[0] == '/' ||
+ SCM_STRING_CHARS (filename)[0] == '\\'));
+#else
&& SCM_STRING_CHARS (filename)[0] == '/');
+#endif
SCM_MISC_ERROR ((absolute
? "Unable to load file ~S"
: "Unable to find file ~S in load path"),