From c83d6db61bccd8a32f1ba523a47e60012c439bda Mon Sep 17 00:00:00 2001 From: nobu Date: Thu, 4 Aug 2005 15:09:03 +0000 Subject: [PATCH] * enumerator.c (Init_Enumerator): provided features should have extensions. * eval.c (rb_feature_p): returns type of the feature instead of extension. * eval.c (search_required): ruby library should be prior to statically linked extentions. fixed: [ruby-dev:26711] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@8913 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 15 +++++++++++++-- enumerator.c | 2 +- eval.c | 23 +++++++++++------------ 3 files changed, 25 insertions(+), 15 deletions(-) diff --git a/ChangeLog b/ChangeLog index c0dd1b8926..920fa1e608 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +Fri Aug 5 00:08:44 2005 Nobuyoshi Nakada + + * enumerator.c (Init_Enumerator): provided features should have + extensions. + + * eval.c (rb_feature_p): returns type of the feature instead of + extension. + + * eval.c (search_required): ruby library should be prior to statically + linked extentions. fixed: [ruby-dev:26711] + Thu Aug 4 20:03:18 2005 Tadashi Saito * numeric.c (Init_Numeric): do not share implementation among @@ -11,10 +22,10 @@ Thu Aug 4 18:38:36 2005 Hidetoshi NAGAI * ext/tk/stubs.c: ditto. - * ext/tk/lib/tk.rb: forgot to define TclTkIp.encoding and encoding= + * ext/tk/lib/tk.rb: forgot to define TclTkIp.encoding and encoding= when Tcl is 7.6 or 8.0. - * ext/tk/lib/tk/wm.rb: support to make some methods as options of + * ext/tk/lib/tk/wm.rb: support to make some methods as options of root or toplevel widget. [ruby-talk:150336] * ext/tk/lib/tk/root.rb: ditto. diff --git a/enumerator.c b/enumerator.c index d1cbd76b64..c5bb86dd2f 100644 --- a/enumerator.c +++ b/enumerator.c @@ -426,5 +426,5 @@ Init_Enumerator() sym_each_slice = ID2SYM(rb_intern("each_slice")); sym_each_cons = ID2SYM(rb_intern("each_cons")); - rb_provide("enumerator"); /* for backward compatibility */ + rb_provide("enumerator.so"); /* for backward compatibility */ } diff --git a/eval.c b/eval.c index 03366f650e..058bbc63d7 100644 --- a/eval.c +++ b/eval.c @@ -6850,7 +6850,7 @@ static st_table *loading_tbl; #define IS_DLEXT(e) (strcmp(e, DLEXT) == 0) #endif -static char * +static int rb_feature_p(feature, ext, rb) const char *feature, *ext; int rb; @@ -6873,14 +6873,14 @@ rb_feature_p(feature, ext, rb) if (strncmp(f, feature, len) != 0) continue; if (!*(e = f + len)) { if (ext) continue; - return e; + return 'u'; } if (*e != '.') continue; if ((!rb || !ext) && (IS_SOEXT(e) || IS_DLEXT(e))) { - return e; + return 's'; } if ((rb || !ext) && (strcmp(e, ".rb") == 0)) { - return e; + return 'r'; } } return 0; @@ -6990,7 +6990,7 @@ search_required(fname, path) { VALUE tmp; char *ext, *ftptr; - int type; + int type, ft = 0; *path = 0; ext = strrchr(ftptr = RSTRING(fname)->ptr, '.'); @@ -7041,8 +7041,8 @@ search_required(fname, path) } } } - else if (ext = rb_feature_p(ftptr, 0, Qfalse)) { - return (*ext && (IS_SOEXT(ext) || IS_DLEXT(ext))) ? 's' : 'r'; + else if ((ft = rb_feature_p(ftptr, 0, Qfalse)) == 'r') { + return 'r'; } tmp = fname; type = rb_find_file_ext(&tmp, loadable_ext); @@ -7050,13 +7050,12 @@ search_required(fname, path) switch (type) { case 0: ftptr = RSTRING(tmp)->ptr; - if ((ext = rb_feature_p(ftptr, 0, Qfalse))) { - type = strcmp(".rb", ext); - break; - } - return 0; + if (ft) break; + return rb_feature_p(ftptr, 0, Qfalse); default: + if (ft) break; + case 1: ext = strrchr(ftptr = RSTRING(tmp)->ptr, '.'); if (rb_feature_p(ftptr, ext, !--type)) break; *path = tmp;