summaryrefslogtreecommitdiff
path: root/lib/cgi.rb
diff options
context:
space:
mode:
authorwakou <wakou@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2002-05-30 00:21:05 +0000
committerwakou <wakou@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2002-05-30 00:21:05 +0000
commit21b2953030930e634da9aced44f71f019a599ad9 (patch)
tree606f6377f16fb21c112bf6b1660bb7821a9ddc41 /lib/cgi.rb
parentd7c1784297573be7419861e7f077923e6e911bdd (diff)
* lib/cgi.rb: if StringIO is usable then use it.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2505 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/cgi.rb')
-rw-r--r--lib/cgi.rb18
1 files changed, 13 insertions, 5 deletions
diff --git a/lib/cgi.rb b/lib/cgi.rb
index 13fd5bddfd..836fdf2a4d 100644
--- a/lib/cgi.rb
+++ b/lib/cgi.rb
@@ -70,8 +70,7 @@ cgi.params is a hash.
values[0].original_filename # <== original filename of values[0]
values[0].content_type # <== content_type of values[0]
-and values[0] has Tempfile class methods.
-(Tempfile class object has File class methods)
+and values[0] has StringIO or Tempfile class methods.
=== GET COOKIE VALUES
@@ -792,11 +791,20 @@ convert string charset, and set language to "ja".
raise EOFError, "bad content body"
end
- require "tempfile"
-
until -1 == content_length
head = nil
- body = Tempfile.new("CGI")
+ if 10240 < content_length
+ require "tempfile"
+ body = Tempfile.new("CGI")
+ else
+ begin
+ require "stringio" if not defined? StringIO
+ body = StringIO.new
+ rescue LoadError
+ require "tempfile"
+ body = Tempfile.new("CGI")
+ end
+ end
body.binmode
until head and /#{boundary}(?:#{EOL}|--)/n.match(buf)