diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2000-09-22 18:15:52 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2000-09-22 18:15:52 +0000 |
commit | e4fae8da4beeb7b61a9c3b58d66a4e594f0e73fa (patch) | |
tree | 90792cf8ee88dfaff3722e990e900d422f8f875f /eval.c | |
parent | 77f8b0db8d6b95fde7ca8b7a9dcd0f42f0f97af5 (diff) |
matz
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@964 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'eval.c')
-rw-r--r-- | eval.c | 18 |
1 files changed, 14 insertions, 4 deletions
@@ -5025,8 +5025,9 @@ static VALUE rb_features; static st_table *loading_tbl; static int -rb_provided(feature) +rb_feature_p(feature, wait) const char *feature; + int wait; { VALUE *p, *pend; char *f; @@ -5045,7 +5046,8 @@ rb_provided(feature) return Qtrue; } if (strcmp(f+len, ".rb") == 0) { - goto load_wait; + if (wait) goto load_wait; + return Qtrue; } } p++; @@ -5070,6 +5072,13 @@ rb_provided(feature) return Qtrue; } +int +rb_provided(feature) + const char *feature; +{ + return rb_feature_p(feature, Qfalse); +} + void rb_provide(feature) const char *feature; @@ -5088,7 +5097,7 @@ rb_provide(feature) strcpy(ext, ".so"); feature = buf; } - if (rb_provided(feature)) return; + if (rb_feature_p(feature, Qtrue)) return; rb_ary_push(rb_features, rb_str_new2(feature)); } @@ -5102,7 +5111,8 @@ rb_f_require(obj, fname) volatile int safe = ruby_safe_level; Check_SafeStr(fname); - if (rb_provided(RSTRING(fname)->ptr)) return Qfalse; + if (rb_feature_p(RSTRING(fname)->ptr, Qtrue)) + return Qfalse; ext = strrchr(RSTRING(fname)->ptr, '.'); if (ext) { feature = file = RSTRING(fname)->ptr; |