From 9235f805fa0bacc02a6ddaeceb9867cb37d01d85 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Thu, 3 Jul 2014 20:58:19 +0300 Subject: Fix problems with Windows file names that use backslashes. * libguile/load.c (scm_i_mirror_backslashes): New function. (scm_init_load_path): Call it to produce MS-Windows file names with forward slashes. (FILE_NAME_SEPARATOR_STRING): Define as "/" on all platforms. * libguile/load.h (scm_i_mirror_backslashes): Add prototype. * libguile/init.c (scm_boot_guile): Call scm_i_mirror_backslashes on argv[0]. * libguile/filesys.c (scm_getcwd): Call scm_i_mirror_backslashes on the directory name returned by getcwd. * test-suite/tests/ports.test ("file name separators"): New test. --- libguile/filesys.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'libguile/filesys.c') diff --git a/libguile/filesys.c b/libguile/filesys.c index 09f6cf9a5..301040a7d 100644 --- a/libguile/filesys.c +++ b/libguile/filesys.c @@ -51,6 +51,7 @@ #include "libguile/validate.h" #include "libguile/filesys.h" +#include "libguile/load.h" /* for scm_i_mirror_backslashes */ #ifdef HAVE_IO_H @@ -1235,6 +1236,9 @@ SCM_DEFINE (scm_getcwd, "getcwd", 0, 0, 0, errno = save_errno; SCM_SYSERROR; } + /* On Windows, convert backslashes in current directory to forward + slashes. */ + scm_i_mirror_backslashes (wd); result = scm_from_locale_stringn (wd, strlen (wd)); free (wd); return result; -- cgit v1.2.3