summaryrefslogtreecommitdiff
path: root/libguile/filesys.c
diff options
context:
space:
mode:
authorEli Zaretskii <eliz@gnu.org>2014-07-03 20:58:19 +0300
committerEli Zaretskii <eliz@gnu.org>2014-07-03 20:58:19 +0300
commit9235f805fa0bacc02a6ddaeceb9867cb37d01d85 (patch)
tree9a8a3333ad25ec7e302e511ffb6747fee119a95d /libguile/filesys.c
parent9dc3fc4dd474ce4da6a45dcf197e1f99a9a7047a (diff)
downloadguile-9235f805fa0bacc02a6ddaeceb9867cb37d01d85.tar.gz
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.
Diffstat (limited to 'libguile/filesys.c')
-rw-r--r--libguile/filesys.c4
1 files changed, 4 insertions, 0 deletions
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;