summaryrefslogtreecommitdiffstats
path: root/dir.c
diff options
context:
space:
mode:
authoreban <eban@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2001-03-13 07:58:07 +0000
committereban <eban@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2001-03-13 07:58:07 +0000
commit7b85e0ea9e23f0f55b4f518002571c1fdeaaa38b (patch)
tree7a475fb0b272289a221e164aaae14989292afb3d /dir.c
parentb89555ded8465fb4f0e509155020b106be5bbaaf (diff)
downloadruby-7b85e0ea9e23f0f55b4f518002571c1fdeaaa38b.tar.gz
ruby-7b85e0ea9e23f0f55b4f518002571c1fdeaaa38b.tar.xz
ruby-7b85e0ea9e23f0f55b4f518002571c1fdeaaa38b.zip
* dir.c (rb_glob_helper): fix drive letter handling on DOSISH.
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@1249 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'dir.c')
-rw-r--r--dir.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/dir.c b/dir.c
index fb0a6f7a6..87cc64d17 100644
--- a/dir.c
+++ b/dir.c
@@ -534,7 +534,11 @@ extract_path(p, pend)
len = pend - p;
alloc = ALLOC_N(char, len+1);
memcpy(alloc, p, len);
- if (len > 1 && pend[-1] == '/') {
+ if (len > 1 && pend[-1] == '/'
+#if defined DOSISH
+ && len > 2 && pend[-2] != ':'
+#endif
+ ) {
alloc[len-1] = 0;
}
else {
@@ -646,7 +650,11 @@ rb_glob_helper(path, flag, func, arg)
break;
}
+#if defined DOSISH
+#define BASE (*base && !((isdirsep(*base) && !base[1]) || (base[1] == ':' && isdirsep(base[2]) && !base[3])))
+#else
#define BASE (*base && !(*base == '/' && !base[1]))
+#endif
for (dp = readdir(dirp); dp != NULL; dp = readdir(dirp)) {
if (recursive) {