From 3634fde44d3e3cedf2278f03b7c3b28b93a729c4 Mon Sep 17 00:00:00 2001 From: eban Date: Mon, 20 Nov 2000 01:24:28 +0000 Subject: [PATCH] eban git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@1047 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 4 ++++ dir.c | 29 ++++++++++++++++++++++++----- ruby.h | 1 + win32/win32.c | 2 +- 4 files changed, 30 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index e6810d64cf..9ac66a28f1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +Mon Nov 20 10:20:21 2000 WATANABE Hirofumi + + * dir.c, win32/win32.c, ruby.h: add rb_iglob(). + Sat Nov 18 14:07:20 2000 Minero Aoki * lib/net/http.rb: Socket#readline() reads until "\n", not "\r\n" diff --git a/dir.c b/dir.c index efb28e6848..37cf332cb5 100644 --- a/dir.c +++ b/dir.c @@ -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; diff --git a/ruby.h b/ruby.h index a043ce5bbb..8dd280148d 100644 --- a/ruby.h +++ b/ruby.h @@ -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);