summaryrefslogtreecommitdiff
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
commit2ed799f834d30e7f89fb92dd4d109ac00d46e7b3 (patch)
tree7978b9f6b44109f1d878ca723d898feaf05da5fc /dir.c
parent619f413b1ce13143759a151df9c5055c9f44034a (diff)
* dir.c (rb_glob_helper): fix drive letter handling on DOSISH.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_6@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 0f5202a2e7..a7945f8fc0 100644
--- a/dir.c
+++ b/dir.c
@@ -535,7 +535,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 {
@@ -621,7 +625,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) {