From 08eaeb9a935b2b1afc043509ecc78230e68d826b Mon Sep 17 00:00:00 2001 From: mgoffioul Date: Wed, 6 Sep 2006 13:26:43 +0000 Subject: [PATCH] [Win32] DIRECTORY now lists root directory correctly (M. Goffioul) --- src/CHANGELOG | 2 ++ src/c/unixfsys.d | 14 ++++++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/CHANGELOG b/src/CHANGELOG index 786e0f8dd..c9799672d 100644 --- a/src/CHANGELOG +++ b/src/CHANGELOG @@ -33,6 +33,8 @@ ECL 1.0: - [Win32] Processes are now correctly listed with MP:ALL-PROCESSES (M. Goffioul) + - [Win32] DIRECTORY now lists root directory correctly (M. Goffioul) + ;;; Local Variables: *** ;;; mode:text *** ;;; fill-column:79 *** diff --git a/src/c/unixfsys.d b/src/c/unixfsys.d index d69d20dc1..ebb9a6552 100644 --- a/src/c/unixfsys.d +++ b/src/c/unixfsys.d @@ -72,6 +72,9 @@ static cl_object current_dir(void) { cl_object output; const char *ok; +#ifdef _MSC_VER + char *c; +#endif cl_index size = 128; do { @@ -86,8 +89,15 @@ current_dir(void) { strcpy(other->base_string.self, output->base_string.self); output = other; } - output->base_string.self[size++] = '/'; - output->base_string.self[size] = 0; +#ifdef _MSC_VER + for (c=output->base_string.self; *c; c++) + if (*c == '\\') + *c = '/'; +#endif + if (output->base_string.self[size-1] != '/') { + output->base_string.self[size++] = '/'; + output->base_string.self[size] = 0; + } output->base_string.fillp = size; return output; }