diff options
author | Stefan Jahn <stefan@lkcc.org> | 2003-05-29 14:39:13 +0000 |
---|---|---|
committer | Stefan Jahn <stefan@lkcc.org> | 2003-05-29 14:39:13 +0000 |
commit | 2e945bccca0209965dbbb1aea858f9bb7576641a (patch) | |
tree | 93140104c679a4cbbe2747f98422cefce95853c5 /libguile/load.c | |
parent | 42ad901d04a32e9ec7033a5ba520b3be1908f2bf (diff) | |
download | guile-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.c | 26 |
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"), |