[#18974] Perl/Python/Ruby common backend (Perl6) — ptkwt@...1.aracnet.com (Phil Tomson)

There is a thread about using .NET's CLR as a backend for Ruby, but how

17 messages 2001/08/01

[#19064] ANN: Code Amelioration Contest (presented by Ruby Conference 2001) — David Alan Black <dblack@...>

17 messages 2001/08/03
[#19184] Re: ANN: Code Amelioration Contest (presented by Ruby Conference 2001) — John Carter <john.carter@...> 2001/08/06

On Fri, 3 Aug 2001, David Alan Black wrote:

[#19185] Re: ANN: Code Amelioration Contest (presented by Ruby Conference 2001) — David Alan Black <dblack@...> 2001/08/06

Hello --

[#19186] Re: ANN: Code Amelioration Contest (presented by Ruby Conference 2001) — John Carter <john.carter@...> 2001/08/06

On Mon, 6 Aug 2001, David Alan Black wrote:

[#19125] My 1st look @ ruby: No prototypes and problem with String#gsub — stesch@... (Stefan Scholl)

My first ruby program:

23 messages 2001/08/04

[#19192] Some remarks from a nembie in Ruby — Renaud HEBERT <renaud.hebert@...>

After having read the book "Programming Ruby: The Pragmatic Programmer's

38 messages 2001/08/06

[#19269] Re: Perl/Python/Ruby common backend (Parrot, can Ruby play too?) — ptkwt@...1.aracnet.com (Phil Tomson)

In article <72X97.12093$9i1.972452@e420r-atl1.usenetserver.com>,

50 messages 2001/08/07
[#19349] Re: Perl/Python/Ruby common backend (Parrot, can Ruby play too?) — Mathieu Bouchard <matju@...> 2001/08/08

[#19456] Re: Perl/Python/Ruby common backend (Parrot, can Ruby play too?) — Harry Ohlsen <harryo@...> 2001/08/09

Ned Konz wrote:

[#19451] Re: Help! I'm still confused about threadin g in the ML — "Morris, Chris" <chris.morris@...>

> Is there an Outlook option to turn on In-Reply-To or References

14 messages 2001/08/09
[#19453] Re: Help! I'm still confused about threadin g in the ML — Dave Thomas <Dave@...> 2001/08/09

"Morris, Chris" <chris.morris@snelling.com> writes:

[#19506] the way class variables work — David Alan Black <dblack@...>

Hello --

51 messages 2001/08/10
[#19511] Re: the way class variables work — Chris Uzdavinis <chris@...> 2001/08/11

David Alan Black <dblack@candle.superlink.net> writes:

[#19524] order and freedom in Ruby (was: Re: Re: the way class variables work) — David Alan Black <dblack@...> 2001/08/11

Hello --

[#19517] Why not?: Assigning to self — furufuru@... (Ryo Furue)

Hi there,

55 messages 2001/08/11
[#19689] Re: Why not?: Assigning to self — Ron Jeffries <ronjeffries@...> 2001/08/14

On 13 Aug 2001 20:59:54 -0700, furufuru@ccsr.u-tokyo.ac.jp (Ryo Furue)

[#19694] Re: Why not?: Assigning to self — Ned Konz <ned@...> 2001/08/14

On Tuesday 14 August 2001 05:09 am, Ron Jeffries wrote:

[#19695] Re: Why not?: Assigning to self — ts <decoux@...> 2001/08/14

>>>>> "N" == Ned Konz <ned@bike-nomad.com> writes:

[#19696] Re: Why not?: Assigning to self — Ned Konz <ned@...> 2001/08/14

On Tuesday 14 August 2001 07:51 am, you wrote:

[#19697] Re: Why not?: Assigning to self — ts <decoux@...> 2001/08/14

>>>>> "N" == Ned Konz <ned@bike-nomad.com> writes:

[#19700] Re: Why not?: Assigning to self — Ned Konz <ned@...> 2001/08/14

On Tuesday 14 August 2001 08:27 am, you wrote:

[#19701] Re: Why not?: Assigning to self — ts <decoux@...> 2001/08/14

>>>>> "N" == Ned Konz <ned@bike-nomad.com> writes:

[#19703] Re: Why not?: Assigning to self — Ned Konz <ned@...> 2001/08/14

On Tuesday 14 August 2001 09:05 am, Guy Decoux wrote:

[#19704] Re: Why not?: Assigning to self — ts <decoux@...> 2001/08/14

>>>>> "N" == Ned Konz <ned@bike-nomad.com> writes:

[#19708] Re: Why not?: Assigning to self — Ned Konz <ned@...> 2001/08/14

On Tuesday 14 August 2001 09:27 am, you wrote:

[#19709] Re: Why not?: Assigning to self — ts <decoux@...> 2001/08/14

>>>>> "N" == Ned Konz <ned@bike-nomad.com> writes:

[#19713] Re: Why not?: Assigning to self — Ned Konz <ned@...> 2001/08/14

On Tuesday 14 August 2001 09:45 am, you wrote:

[#19750] Re: Why not?: Assigning to self — matz@... (Yukihiro Matsumoto) 2001/08/15

Hi,

[#19819] Re: Why not?: Assigning to self — Ned Konz <ned@...> 2001/08/15

On Tuesday 14 August 2001 08:14 pm, matz wrote:

[#19852] Re: Why not?: Assigning to self — matz@... (Yukihiro Matsumoto) 2001/08/16

Hi,

[#19857] Re: Why not?: Assigning to self — "Florian G. Pflug" <fgp@...> 2001/08/16

On Thu, Aug 16, 2001 at 11:05:59AM +0900, Yukihiro Matsumoto wrote:

[#19858] Re: Why not?: Assigning to self — matz@... (Yukihiro Matsumoto) 2001/08/16

Hi,

[#19867] Re: Why not?: Assigning to self — "Pit Capitain" <pit@...> 2001/08/16

Just a followup at (my) current end of the thread:

[#19550] Forced garbage collection — Lars Christensen <larsch@...>

14 messages 2001/08/11
[#19562] Re: Forced garbage collection — "Nat Pryce" <nat.pryce@...13media.com> 2001/08/12

From: "Lars Christensen" <larsch@cs.auc.dk>

[#19551] /.ed again — Tobias Reif <tobiasreif@...>

Ruy gets slasdotted again ;)

19 messages 2001/08/11

[#19650] Ruby Newbie mailing list — Michael Pence <mikepence@...>

Hello all.

14 messages 2001/08/13
[#19656] RE: Ruby Newbie mailing list — "Louis Brothers" <lcb134@...> 2001/08/13

We had a similar discussion on the OmniWeb Objective-C mailing list not to

[#19659] Re: Ruby Newbie mailing list — Michael Pence <mikepence@...> 2001/08/13

I appreciate your references to Objectionable-C ;-)

[#19685] Compiling Ruby with cygwin and Tk support — Manuel Zabelt <ng@...>

Hello!

13 messages 2001/08/14

[#19718] General (GUI/license) questions — Ryan Tarpine <rtarpine@...>

First: Kero commented in the description of his new Ruby Agenda program

18 messages 2001/08/14

[#19755] "new" returning nil: how to report the failure of object creation — furufuru@... (Ryo Furue)

Hi there,

14 messages 2001/08/15

[#19758] The GUI poll is in, and the results are surprising — Dave Thomas <Dave@...>

40 messages 2001/08/15
[#19774] Re: The GUI poll is in, and the results are surprising — Lars Christensen <larsch@...> 2001/08/15

On Wed, 15 Aug 2001, Dave Thomas wrote:

[#19784] Re: The GUI poll is in, and the results aresurprising — "Lyle Johnson" <ljohnson@...> 2001/08/15

> Please don't forget what Ruby is all about in this discussion! I think

[#19824] Ruby GUI — "Hal E. Fulton" <hal9000@...>

The concept of a new GUI is somewhat appealing,

16 messages 2001/08/15

[#20033] Ruby Article — Joshua Drake <jd.nospam@...>

Hello,

38 messages 2001/08/20

[#20127] Another Possible RCR - Wrappers via Mixins — Stephen White <spwhite@...>

The main difference between mix-ins and multiple inheritence is (to my understanding) that parent classes do not call child code, but mix-ins do.

15 messages 2001/08/22

[#20135] Bruce Eckel's criticism of Ruby — Ned Konz <ned@...>

Python.org links to http://www.mindview.net/Etc/notes.html#Ruby , saying

24 messages 2001/08/22

[#20183] ++ Operator — kamphausen@... (SKa)

Dear Community,

35 messages 2001/08/23
[#20234] Re: ++ Operator — Dave Thomas <Dave@...> 2001/08/24

matz@ruby-lang.org (Yukihiro Matsumoto) writes:

[#20236] Re: ++ Operator — matz@... (Yukihiro Matsumoto) 2001/08/24

Hi,

[#20209] In Ruby 0 is true but nil is false.. or how to shoot yourself?.. — Guillaume Cottenceau <gc@...>

I have a simple Audio-CD database (using CSV format). I was writing a

11 messages 2001/08/23

[#20254] File.readline(s) — Michael Husmann <michael.husmann@...>

I am reading a 55MB ASCII file by using File.readline(s) which takes on

14 messages 2001/08/24

[#20303] New Windows InstallShield version of Ruby — Andrew Hunt <andy@...>

19 messages 2001/08/24

[#20307] Backwards language — "Sean Middleditch" <elanthis@...>

Greetings,

30 messages 2001/08/24

[ruby-talk:19664] No more temp files for each non_empty_file_field in multipart/form-dad forms

From: domingo@... (Domingo Alvarez Duarte)
Date: 2001-08-13 22:27:24 UTC
List: ruby-talk #19664
I'm working with ruby recently and want adopt it as my favority
development language and using the cgi module I've noted that when it
process a "multipart/form-data" it creates a tmp file for each of the
form fields and in my system (suse linux 7.1 apache 1.3.20 mod_ruby)
the temp files remain after template processing, and in "cgi/session"
the files used for the session aren't unlocked and I've got some
headaches with that (frozen browser requests), I did some work on that
modules and create a patch against it.
 
with this modifications only if a file is sent it stores a tmp file
object in the cgi.params if not it stores a string, so no more need to
use cgi['some_non_empty_file_field'][0].read.
 
cut here ---------------------- 
Index: lib/cgi.rb 
=================================================================== 
RCS file: /src/ruby/lib/cgi.rb,v 
retrieving revision 1.29 
diff -u -r1.29 cgi.rb 
--- lib/cgi.rb	2001/04/17 19:43:27	1.29 
+++ lib/cgi.rb	2001/08/13 21:54:58 
@@ -189,7 +189,7 @@ 
   RELEASE_DATE = '2001-04-18' 
   VERSION_CODE = 214 
   RELEASE_CODE = 20010418 
-  REVISION = '$Id: cgi.rb,v 1.29 2001/04/17 19:43:27 wakou Exp $' 
+  REVISION = '$Id: cgi.rb,v 1.23.2.5 2001/04/17 19:41:49 wakou Exp $'
  
   NEEDS_BINMODE = true if /WIN/ni.match(RUBY_PLATFORM) 
   PATH_SEPARATOR = {'UNIX'=>'/', 'WINDOWS'=>'\\', 'MACINTOSH'=>':'} 
@@ -241,9 +241,10 @@ 
   url_encoded_string = CGI::escape("string") 
 =end 
   def CGI::escape(string) 
-    string.gsub(/([^ a-zA-Z0-9_.-]+)/n) do 
-      '%' + $1.unpack('H2' * $1.size).join('%').upcase 
-    end.tr(' ', '+') 
+    string.gsub(/[^a-zA-Z0-9_\-.]/n){ sprintf("%%%02X",
$&.unpack("C")[0]) }
+#    string.gsub(/([^ a-zA-Z0-9_.-]+)/n) do 
+#      '%' + $1.unpack('H2' * $1.size).join('%').upcase 
+#    end.tr(' ', '+') 
   end 
  
  
@@ -252,9 +253,10 @@ 
   string = CGI::unescape("url encoded string") 
 =end 
   def CGI::unescape(string) 
-    string.tr('+', ' ').gsub(/((?:%[0-9a-fA-F]{2})+)/n) do 
-      [$1.delete('%')].pack('H*') 
-    end 
+    string.gsub(/\+/, ' ').gsub(/%([0-9a-fA-F]{2})/){
[$1.hex].pack("c") }
+#    string.tr('+', ' ').gsub(/((?:%[0-9a-fA-F]{2})+)/n) do 
+#      [$1.delete('%')].pack('H*') 
+#    end 
   end 
  
  
@@ -803,8 +805,8 @@ 
  
       until -1 == content_length 
         head = nil 
-        body = Tempfile.new("CGI") 
-        body.binmode 
+	bodyvar = '' 
+	isFile = false 
  
         until head and /#{boundary}(?:#{EOL}|--)/n.match(buf) 
  
@@ -817,7 +819,7 @@ 
           end 
  
           if head and ( (EOL + boundary + EOL).size < buf.size ) 
-            body.print buf[0 ... (buf.size - (EOL + boundary +
EOL).size)]
+	    bodyvar += buf[0 ... (buf.size - (EOL + boundary + EOL).size)] 
             buf[0 ... (buf.size - (EOL + boundary + EOL).size)] = "" 
           end 
  
@@ -832,51 +834,59 @@ 
         end 
  
         buf = buf.sub(/\A((?:.|\n)*?)(?:#{EOL})?#{boundary}(#{EOL}|--)/n)
do
-          body.print $1 
+	  bodyvar += $1 
           if "--" == $2 
             content_length = -1 
           end 
           "" 
         end 
  
-        body.rewind 
- 
-        eval <<-END 
-          def body.local_path 
-            #{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 
- 
-        /Content-Type: (.*)/ni.match(head) 
-        eval <<-END 
-          def body.content_type 
-            #{($1 or "").dump.untaint}.taint 
-          end 
-        END 
+	if $1 && (bodyvar.size > 0) # Only create a temp file if necessary 
+		isFile = true 
+		body = Tempfile.new("CGI") 
+		body.binmode 
+		body.print bodyvar 
+		 
+		body.rewind 
+	 
+		eval <<-END 
+		  def body.local_path 
+		    #{body.path.dump} 
+		  end 
+		END 
+	 
+		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 
+	 
+		/Content-Type: (.*)/ni.match(head) 
+		eval <<-END 
+		  def body.content_type 
+		    #{($1 or "").dump.untaint}.taint 
+		  end 
+		END 
+	end 
  
-        /Content-Disposition:.* name="?([^\";]*)"?/ni.match(head) 
+	/Content-Disposition:.* name="?([^\";]*)"?/ni.match(head) 
         name = $1.dup 
  
         if paramscvs server: Diffing lib/cgi 
..has_key?(name) 
-          params[name].push(body) 
+          isFile ? params[name].push(body) :
params[name].push(bodyvar)
         else 
-          params[name] = [body] 
+          isFile ? params[name] = [body] : params[name] = [bodyvar] 
         end 
  
       end 
Index: lib/cgi/session.rb 
===================================================================
RCS file: /src/ruby/lib/cgi/session.rb,v
retrieving revision 1.13
diff -u -r1.13 session.rb
--- lib/cgi/session.rb	2001/08/06 03:05:21	1.13
+++ lib/cgi/session.rb	2001/08/13 21:54:58
@@ -147,11 +147,13 @@
       def close
 	return if @f.closed?
 	update
+	@f.flock File::LOCK_UN
 	@f.close
       end
 
       def delete
 	path = @f.path
+	@f.flock File::LOCK_UN
 	@f.close
 	File::unlink path
       end

In This Thread

Prev Next