diff options
-rw-r--r-- | ChangeLog | 15 | ||||
-rw-r--r-- | enumerator.c | 2 | ||||
-rw-r--r-- | eval.c | 23 |
3 files changed, 25 insertions, 15 deletions
@@ -1,3 +1,14 @@ +Fri Aug 5 00:08:44 2005 Nobuyoshi Nakada <nobu@ruby-lang.org> + + * 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 <shiba@mail2.accsnet.ne.jp> * numeric.c (Init_Numeric): do not share implementation among @@ -11,10 +22,10 @@ Thu Aug 4 18:38:36 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp> * 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 d1cbd76b6..c5bb86dd2 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 */ } @@ -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; |