diff options
author | eban <eban@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2000-11-20 01:24:28 +0000 |
---|---|---|
committer | eban <eban@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2000-11-20 01:24:28 +0000 |
commit | 3634fde44d3e3cedf2278f03b7c3b28b93a729c4 (patch) | |
tree | 2deb76f2fdcf895512edccb00a33ac02f3e7dabe | |
parent | 15b9494baa5be28a827a5169f27a5f884cb4518d (diff) |
eban
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@1047 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | dir.c | 29 | ||||
-rw-r--r-- | ruby.h | 1 | ||||
-rw-r--r-- | win32/win32.c | 2 |
4 files changed, 30 insertions, 6 deletions
@@ -1,3 +1,7 @@ +Mon Nov 20 10:20:21 2000 WATANABE Hirofumi <eban@ruby-lang.org> + + * dir.c, win32/win32.c, ruby.h: add rb_iglob(). + Sat Nov 18 14:07:20 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp> * lib/net/http.rb: Socket#readline() reads until "\n", not "\r\n" @@ -558,8 +558,9 @@ extract_elem(path) #endif void -rb_glob(path, func, arg) +rb_glob_helper(path, flag, func, arg) char *path; + int flag; void (*func)(); VALUE arg; { @@ -597,7 +598,7 @@ rb_glob(path, func, arg) recursive = 1; buf = ALLOC_N(char, strlen(base)+strlen(m)+3); sprintf(buf, "%s%s%s", base, (*base)?"":".", m); - rb_glob(buf, func, arg); + rb_glob_helper(buf, flag, func, arg); free(buf); } dirp = opendir(dir); @@ -613,11 +614,11 @@ rb_glob(path, func, arg) continue; buf = ALLOC_N(char, strlen(base)+NAMLEN(dp)+strlen(m)+6); sprintf(buf, "%s%s%s/**%s", base, (BASE)?"/":"", dp->d_name, m); - rb_glob(buf, func, arg); + rb_glob_helper(buf, flag, func, arg); free(buf); continue; } - if (fnmatch(magic, dp->d_name, FNM_PERIOD|FNM_PATHNAME) == 0) { + if (fnmatch(magic, dp->d_name, flag) == 0) { buf = ALLOC_N(char, strlen(base)+NAMLEN(dp)+2); sprintf(buf, "%s%s%s", base, (BASE)?"/":"", dp->d_name); if (!m) { @@ -642,7 +643,7 @@ rb_glob(path, func, arg) char *t = ALLOC_N(char, len+mlen+1); sprintf(t, "%s%s", link->path, m); - rb_glob(t, func, arg); + rb_glob_helper(t, flag, func, arg); free(t); } tmp = link; @@ -655,6 +656,24 @@ rb_glob(path, func, arg) } } +void +rb_glob(path, func, arg) + char *path; + void (*func)(); + VALUE arg; +{ + rb_glob_helper(path, FNM_PERIOD|FNM_PATHNAME, func, arg); +} + +void +rb_iglob(path, func, arg) + char *path; + void (*func)(); + VALUE arg; +{ + rb_glob_helper(path, FNM_PERIOD|FNM_PATHNAME|FNM_NOCASE, func, arg); +} + static void push_pattern(path, ary) char *path; @@ -397,6 +397,7 @@ void xfree _((void*)); #define MEMCMP(p1,p2,type,n) memcmp((p1), (p2), sizeof(type)*(n)) void rb_glob _((char*,void(*)(),VALUE)); +void rb_iglob _((char*,void(*)(),VALUE)); VALUE rb_define_class _((const char*,VALUE)); VALUE rb_define_module _((const char*)); diff --git a/win32/win32.c b/win32/win32.c index 9e2eb2f555..e2799eee23 100644 --- a/win32/win32.c +++ b/win32/win32.c @@ -961,7 +961,7 @@ NtCmdGlob (NtCmdLineElement *patt) for (p = buf; *p; p = CharNext(p)) if (*p == '\\') *p = '/'; - rb_glob(buf, insert, (VALUE)&listinfo); + rb_iglob(buf, insert, (VALUE)&listinfo); if (buf != buffer) free(buf); |