[#38851] [soap4r] xmlのcharsetの変更の仕方 — "NAKAMURA, Hiroshi" <nakahiro@...>
なひです。
2 messages
2003/12/02
[#38853] ruby-dev summary 22012-22103 — Minero Aoki <aamine@...>
青木です。
5 messages
2003/12/02
[#38863] Module.included — Tomoyuki Kosimizu <greentea@...2.so-net.ne.jp>
こしみずです。
4 messages
2003/12/04
[#38869] WebUnit — takumi-ruby@...
こんにちは。
7 messages
2003/12/06
[#38881] ruby-dev summary 22012-22195 — Kazuo Saito <ksaito@...>
斉藤です。
4 messages
2003/12/09
[#38883] [cgi.rb] read_multipart でエラー — Kazuhiko <kazuhiko@...>
かずひこです。
11 messages
2003/12/10
[#38884] Re: [cgi.rb] read_multipart でエラー
— nobu.nakada@...
2003/12/10
なかだです。
[#38885] Re: [cgi.rb] read_multipart でエラー
— matz@... (Yukihiro Matsumoto)
2003/12/10
まつもと ゆきひろです
[#38893] Re: [cgi.rb] read_multipart でエラー
— nobu.nakada@...
2003/12/11
なかだです。
[#38894] Re: [cgi.rb] read_multipart でエラー
— matz@... (Yukihiro Matsumoto)
2003/12/11
まつもと ゆきひろです
[#38900] rdtoolのインストール — Ryutaro Amano <wn9r-amn@...>
天野と申します。
9 messages
2003/12/15
[#38919] Ruby 1.8.1 preview4 — matz@... (Yukihiro Matsumoto)
Hi,
44 messages
2003/12/22
[#38921] Re: Ruby 1.8.1 preview4
— "NAKAMURA, Hiroshi" <nakahiro@...>
2003/12/22
Hi, all,
[#38936] Re: Ruby 1.8.1 preview4
— "NAKAMURA, Hiroshi" <nakahiro@...>
2003/12/23
なひです。
[#38947] BCCWIN32&XPにて、rubyrun.rbの結果 — 竹花 文士 <ruby.mito@...>
はじめまして。
8 messages
2003/12/23
[#38993] RubyEB が ruby-1.8.1 で SEGV — Kazuhiko <kazuhiko@...>
かずひこです。
12 messages
2003/12/25
[#38994] Re: RubyEB が ruby-1.8.1 で SEGV
— Kazuhiko <kazuhiko@...>
2003/12/25
かずひこです。
[#38996] Re: RubyEB が ruby-1.8.1 で SEGV
— matz@... (Yukihiro Matsumoto)
2003/12/25
まつもと ゆきひろです
[#38997] Re: RubyEB が ruby-1.8.1 で SEGV
— Kazuhiko <kazuhiko@...>
2003/12/26
かずひこです。
[ruby-list:38884] Re: [cgi.rb] read_multipart でエラー
From:
nobu.nakada@...
Date:
2003-12-10 03:23:45 UTC
List:
ruby-list #38884
なかだです。
At Wed, 10 Dec 2003 11:03:50 +0900,
Kazuhiko wrote:
> Premature end of script headers: attach.cgi, referer: http://www.example.com/hiki/?c=edit;p=FrontPage
> /usr/lib/ruby/1.8/cgi.rb:1039:in `read_multipart': uninitialized constant CGI::QueryExtension::StringIO (NameError), referer: http://www.example.com/hiki/?c=edit;p=FrontPage
> from /usr/lib/ruby/1.8/cgi.rb:987:in `loop', referer: http://www.example.com/hiki/?c=edit;p=FrontPage
> from /usr/lib/ruby/1.8/cgi.rb:1076:in `read_multipart', referer: http://www.example.com/hiki/?c=edit;p=FrontPage
> from /usr/lib/ruby/1.8/cgi.rb:1116:in `initialize_query', referer: http://www.example.com/hiki/?c=edit;p=FrontPage
> from /usr/lib/ruby/1.8/cgi.rb:2299:in `initialize', referer: http://www.example.com/hiki/?c=edit;p=FrontPage
> from /home/hiki/public_html/private/attach.cgi:10:in `new', referer: http://www.example.com/hiki/?c=edit;p=FrontPage
> from /home/hiki/public_html/private/attach.cgi:10:in `attach_image', referer: http://www.example.com/hiki/?c=edit;p=FrontPage
> from /home/hiki/public_html/private/attach.cgi:83, referer: http://www.example.com/hiki/?c=edit;p=FrontPage
>
> (1.8.1-preview3 と CVS HEAD で cgi.rb は変化なさそう)
>
> とりあえず以下のような修正で動くようになりました。
stringioは常にrequireされてるわけではないからですね。そもそも
local_pathはpathのaliasでいいんじゃないかという気がするのですが。
Index: lib/cgi.rb
===================================================================
RCS file: /cvs/ruby/src/ruby/lib/cgi.rb,v
retrieving revision 1.66
diff -u -2 -p -d -r1.66 cgi.rb
--- lib/cgi.rb 22 Nov 2003 03:59:53 -0000 1.66
+++ lib/cgi.rb 24 Nov 2003 12:37:45 -0000
@@ -922,13 +922,11 @@ class CGI
module QueryExtension
- for env in %w[ CONTENT_LENGTH SERVER_PORT ]
- eval( <<-END )
- def #{env.sub(/^HTTP_/n, '').downcase}
- env_table["#{env}"] && Integer(env_table["#{env}"])
- end
- END
+ %w[ CONTENT_LENGTH SERVER_PORT ].each do |env|
+ define_method(env.sub(/^HTTP_/n, '').downcase) do
+ val = env_table[env] && Integer(val)
+ end
end
- for env in %w[ AUTH_TYPE CONTENT_TYPE GATEWAY_INTERFACE PATH_INFO
+ %w[ AUTH_TYPE CONTENT_TYPE GATEWAY_INTERFACE PATH_INFO
PATH_TRANSLATED QUERY_STRING REMOTE_ADDR REMOTE_HOST
REMOTE_IDENT REMOTE_USER REQUEST_METHOD SCRIPT_NAME
@@ -937,10 +935,8 @@ class CGI
HTTP_ACCEPT HTTP_ACCEPT_CHARSET HTTP_ACCEPT_ENCODING
HTTP_ACCEPT_LANGUAGE HTTP_CACHE_CONTROL HTTP_FROM HTTP_HOST
- HTTP_NEGOTIATE HTTP_PRAGMA HTTP_REFERER HTTP_USER_AGENT ]
- eval( <<-END )
- def #{env.sub(/^HTTP_/n, '').downcase}
- env_table["#{env}"]
- end
- END
+ HTTP_NEGOTIATE HTTP_PRAGMA HTTP_REFERER HTTP_USER_AGENT ].each do |env|
+ define_method(env.sub(/^HTTP_/n, '').downcase) do
+ env_table[env]
+ end
end
@@ -1035,32 +1031,20 @@ class CGI
body.rewind
- eval <<-END
- def body.local_path
- #{(body.class == StringIO)? "" : body.path.dump}
- end
- END
-
/Content-Disposition:.* filename="?([^\";]*)"?/ni.match(head)
- eval <<-END
- def body.original_filename
- #{
- filename = ($1 or "").dup
- if /Mac/ni.match(env_table['HTTP_USER_AGENT']) and
- /Mozilla/ni.match(env_table['HTTP_USER_AGENT']) and
- (not /MSIE/ni.match(env_table['HTTP_USER_AGENT']))
- CGI::unescape(filename)
- else
- filename
- end.dump.untaint
- }.taint
- end
- END
-
+ filename = ($1 or "")
+ if /Mac/ni.match(env_table['HTTP_USER_AGENT']) and
+ /Mozilla/ni.match(env_table['HTTP_USER_AGENT']) and
+ (not /MSIE/ni.match(env_table['HTTP_USER_AGENT']))
+ filename = CGI::unescape(filename)
+ end
+
/Content-Type: (.*)/ni.match(head)
- eval <<-END
- def body.content_type
- #{($1 or "").dump.untaint}.taint
- end
- END
+ content_type = ($1 or "")
+
+ (class << body; self; end).class_eval do
+ alias local_path path
+ define_method(:original_filename) {filename.dup.taint}
+ define_method(:content_type) {content_type.dup.taint}
+ end
/Content-Disposition:.* name="?([^\";]*)"?/ni.match(head)
@@ -2298,6 +2282,10 @@ class CGI
else
initialize_query() # set @params, @cookies
- eval "CGI_PARAMS = @params.nil? ? nil : @params.dup"
- eval "CGI_COOKIES = @cookies.nil? ? nil : @cookies.dup"
+ params = @params.nil? ? nil : @params.dup
+ cooikies = @cookies.nil? ? nil : @cookies.dup
+ (class << self; self; end).class_eval do
+ const_set(:CGI_PARAMS, params)
+ const_set(:CGI_COOKIES, cookies)
+ end
if defined?(MOD_RUBY) and (RUBY_VERSION < "1.4.3")
raise "Please, use ruby1.4.3 or later."
@@ -2305,6 +2293,8 @@ class CGI
at_exit() do
if defined?(CGI_PARAMS)
- CGI.class_eval("remove_const(:CGI_PARAMS)")
- CGI.class_eval("remove_const(:CGI_COOKIES)")
+ CGI.class_eval do
+ remove_const(:CGI_PARAMS)
+ remove_const(:CGI_COOKIES)
+ end
end
end
--
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
中田 伸悦