ruby-changes:10642
From: shyouhei <ko1@a...>
Date: Tue, 10 Feb 2009 19:40:40 +0900 (JST)
Subject: [ruby-changes:10642] Ruby:r22199 (ruby_1_8_6): merge revision(s) 20214:
shyouhei 2009-02-10 19:40:28 +0900 (Tue, 10 Feb 2009) New Revision: 22199 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=22199 Log: merge revision(s) 20214: * eval.c (rb_feature_p): returns found feature name if loading. [ruby-core:19798] * eval.c (search_required): ditto. Modified files: branches/ruby_1_8_6/ChangeLog branches/ruby_1_8_6/eval.c branches/ruby_1_8_6/version.h Index: ruby_1_8_6/ChangeLog =================================================================== --- ruby_1_8_6/ChangeLog (revision 22198) +++ ruby_1_8_6/ChangeLog (revision 22199) @@ -1,3 +1,10 @@ +Tue Feb 10 19:13:08 2009 Nobuyoshi Nakada <nobu@r...> + + * eval.c (rb_feature_p): returns found feature name if loading. + [ruby-core:19798] + + * eval.c (search_required): ditto. + Mon Feb 9 17:34:55 2009 NAKAMURA Usaku <usa@r...> * win32/win32.c (rb_w32_accept): secure fd before accept because if Index: ruby_1_8_6/version.h =================================================================== --- ruby_1_8_6/version.h (revision 22198) +++ ruby_1_8_6/version.h (revision 22199) @@ -1,15 +1,15 @@ #define RUBY_VERSION "1.8.6" -#define RUBY_RELEASE_DATE "2009-02-09" +#define RUBY_RELEASE_DATE "2009-02-10" #define RUBY_VERSION_CODE 186 -#define RUBY_RELEASE_CODE 20090209 -#define RUBY_PATCHLEVEL 325 +#define RUBY_RELEASE_CODE 20090210 +#define RUBY_PATCHLEVEL 326 #define RUBY_VERSION_MAJOR 1 #define RUBY_VERSION_MINOR 8 #define RUBY_VERSION_TEENY 6 #define RUBY_RELEASE_YEAR 2009 #define RUBY_RELEASE_MONTH 2 -#define RUBY_RELEASE_DAY 9 +#define RUBY_RELEASE_DAY 10 #ifdef RUBY_EXTERN RUBY_EXTERN const char ruby_version[]; Index: ruby_1_8_6/eval.c =================================================================== --- ruby_1_8_6/eval.c (revision 22198) +++ ruby_1_8_6/eval.c (revision 22199) @@ -7003,16 +7003,16 @@ 0 }; -static int rb_feature_p _((const char *, const char *, int)); +static int rb_feature_p _((const char **, const char *, int)); static int search_required _((VALUE, VALUE *, VALUE *)); static int -rb_feature_p(feature, ext, rb) - const char *feature, *ext; +rb_feature_p(ftptr, ext, rb) + const char **ftptr, *ext; int rb; { VALUE v; - const char *f, *e; + const char *f, *e, *feature = *ftptr; long i, len, elen; if (ext) { @@ -7030,18 +7030,21 @@ continue; if (!*(e = f + len)) { if (ext) continue; + *ftptr = 0; return 'u'; } if (*e != '.') continue; if ((!rb || !ext) && (IS_SOEXT(e) || IS_DLEXT(e))) { + *ftptr = 0; return 's'; } if ((rb || !ext) && (strcmp(e, ".rb") == 0)) { + *ftptr = 0; return 'r'; } } if (loading_tbl) { - if (st_lookup(loading_tbl, (st_data_t)feature, 0)) { + if (st_lookup(loading_tbl, (st_data_t)feature, (st_data_t *)ftptr)) { if (!ext) return 'u'; return strcmp(ext, ".rb") ? 's' : 'r'; } @@ -7053,7 +7056,7 @@ MEMCPY(buf, feature, char, len); for (i = 0; (e = loadable_ext[i]) != 0; i++) { strncpy(buf + len, e, DLEXT_MAXLEN + 1); - if (st_lookup(loading_tbl, (st_data_t)buf, 0)) { + if (st_lookup(loading_tbl, (st_data_t)buf, (st_data_t *)ftptr)) { return i ? 's' : 'r'; } } @@ -7061,6 +7064,7 @@ } return 0; } +#define rb_feature_p(feature, ext, rb) rb_feature_p(&feature, ext, rb) int rb_provided(feature) @@ -7169,7 +7173,7 @@ VALUE fname, *featurep, *path; { VALUE tmp; - char *ext, *ftptr; + const char *ext, *ftptr; int type; *featurep = fname; @@ -7177,12 +7181,18 @@ ext = strrchr(ftptr = RSTRING_PTR(fname), '.'); if (ext && !strchr(ext, '/')) { if (strcmp(".rb", ext) == 0) { - if (rb_feature_p(ftptr, ext, Qtrue)) return 'r'; + if (rb_feature_p(ftptr, ext, Qtrue)) { + if (ftptr) *path = rb_str_new2(ftptr); + return 'r'; + } if ((*path = rb_find_file(fname)) != 0) return 'r'; return 0; } else if (IS_SOEXT(ext)) { - if (rb_feature_p(ftptr, ext, Qfalse)) return 's'; + if (rb_feature_p(ftptr, ext, Qfalse)) { + if (ftptr) *path = rb_str_new2(ftptr); + return 's'; + } tmp = rb_str_new(RSTRING_PTR(fname), ext-RSTRING_PTR(fname)); *featurep = tmp; #ifdef DLEXT2 @@ -7201,7 +7211,10 @@ #endif } else if (IS_DLEXT(ext)) { - if (rb_feature_p(ftptr, ext, Qfalse)) return 's'; + if (rb_feature_p(ftptr, ext, Qfalse)) { + if (ftptr) *path = rb_str_new2(ftptr); + return 's'; + } if ((*path = rb_find_file(fname)) != 0) return 's'; } } @@ -7210,13 +7223,16 @@ *featurep = tmp; switch (type) { case 0: - ftptr = RSTRING_PTR(tmp); - return rb_feature_p(ftptr, 0, Qfalse); + type = rb_feature_p(ftptr, 0, Qfalse); + if (type && ftptr) *path = rb_str_new2(ftptr); + return type; default: ext = strrchr(ftptr = RSTRING(tmp)->ptr, '.'); - if (rb_feature_p(ftptr, ext, !--type)) break; - *path = rb_find_file(tmp); + if (!rb_feature_p(ftptr, ext, !--type)) + *path = rb_find_file(tmp); + else if (ftptr) + *path = rb_str_new2(ftptr); } return type ? 's' : 'r'; } -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/