summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2000-07-19 08:04:52 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2000-07-19 08:04:52 +0000
commit8053b7f3b10d686dd5296f1f5093b635bef652a6 (patch)
treef8db2f445a65ee69d9fca2a5e4ceb5492112555c
parentec4e83ed5623edf8602dce45358c34d245314906 (diff)
matz
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@841 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog4
-rw-r--r--bignum.c2
-rw-r--r--eval.c8
-rw-r--r--lib/cgi-lib.rb16
4 files changed, 18 insertions, 12 deletions
diff --git a/ChangeLog b/ChangeLog
index 35a1bea350..d1fb0f7d57 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+Wed Jul 19 15:14:04 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * bignum.c (bigdivrem): should use rb_int2big(), not rb_uint2big().
+
Tue Jul 18 14:58:30 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
* eval.c (ruby_options): should treat SystemExit etc. properly.
diff --git a/bignum.c b/bignum.c
index 9d58e69f9e..cf9128d0b3 100644
--- a/bignum.c
+++ b/bignum.c
@@ -804,7 +804,7 @@ bigdivrem(x, y, divp, modp)
}
RBIGNUM(z)->sign = RBIGNUM(x)->sign==RBIGNUM(y)->sign;
if (!RBIGNUM(x)->sign) t2 = -(long)t2;
- if (modp) *modp = rb_uint2big(t2);
+ if (modp) *modp = rb_int2big((long)t2);
if (divp) *divp = z;
return;
}
diff --git a/eval.c b/eval.c
index 24a7298387..b9043f3502 100644
--- a/eval.c
+++ b/eval.c
@@ -92,9 +92,9 @@ static int scope_vmode;
int ruby_safe_level = 0;
/* safe-level:
0 - strings from streams/environment/ARGV are tainted (default)
- 1 - no dangerous operation by tainted string
+ 1 - no dangerous operation by tainted value
2 - process/file operations prohibited
- 3 - all genetated strings are tainted
+ 3 - all genetated objects are tainted
4 - no global (non-tainted) variable modification/no direct output
*/
@@ -5223,6 +5223,10 @@ rb_mod_modfunc(argc, argv, module)
ID id;
NODE *body;
+ if (TYPE(module) != T_MODULE) {
+ rb_raise(rb_eTypeError, "module_function must be called for modules");
+ }
+
if (argc == 0) {
SCOPE_SET(SCOPE_MODFUNC);
return module;
diff --git a/lib/cgi-lib.rb b/lib/cgi-lib.rb
index bf04601238..ffe3fcf367 100644
--- a/lib/cgi-lib.rb
+++ b/lib/cgi-lib.rb
@@ -121,7 +121,7 @@ class CGI < SimpleDelegator
RFC822_MONTHS = %w[ Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec ]
# make rfc1123 date string
- def rfc1123_date(time)
+ def CGI::rfc1123_date(time)
t = time.clone.gmtime
return format("%s, %.2d %s %d %.2d:%.2d:%.2d GMT",
RFC822_DAYS[t.wday], t.day, RFC822_MONTHS[t.month-1], t.year,
@@ -129,22 +129,20 @@ class CGI < SimpleDelegator
end
# escape url encode
- def escape(str)
+ def CGI::escape(str)
str.gsub(/[^a-zA-Z0-9_\-.]/n){ sprintf("%%%02X", $&.unpack("C")[0]) }
end
# unescape url encoded
- def unescape(str)
+ def CGI::unescape(str)
str.gsub(/\+/, ' ').gsub(/%([0-9a-fA-F]{2})/){ [$1.hex].pack("c") }
end
# escape HTML
- def escapeHTML(str)
+ def CGI::escapeHTML(str)
str.gsub(/&/, "&amp;").gsub(/\"/, "&quot;").gsub(/>/, "&gt;").gsub(/</, "&lt;")
end
- module_function :escape, :unescape, :escapeHTML, :rfc1123_date
-
# offline mode. read name=value pairs on standard input.
def read_from_cmdline
require "shellwords.rb"
@@ -172,7 +170,7 @@ class CGI < SimpleDelegator
else
read_from_cmdline
end.split(/[&;]/).each do |x|
- key, val = x.split(/=/,2).collect{|x|unescape(x)}
+ key, val = x.split(/=/,2).collect{|x|CGI::unescape(x)}
if @inputs.include?(key)
@inputs[key] += "\0" + (val or "")
else
@@ -185,8 +183,8 @@ class CGI < SimpleDelegator
if ENV.has_key?('HTTP_COOKIE') or ENV.has_key?('COOKIE')
(ENV['HTTP_COOKIE'] or ENV['COOKIE']).split("; ").each do |x|
key, val = x.split(/=/,2)
- key = unescape(key)
- val = val.split(/&/).collect{|x|unescape(x)}.join("\0")
+ key = CGI::unescape(key)
+ val = val.split(/&/).collect{|x|CGI::unescape(x)}.join("\0")
if @cookie.include?(key)
@cookie[key] += "\0" + val
else