diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2004-05-20 04:34:14 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2004-05-20 04:34:14 +0000 |
commit | a6a8847190d9075b742e6247a769c2b8c6ab5f0c (patch) | |
tree | 10dc48fe45c7714540858394da15340b021d9bf4 /lib | |
parent | 5345d52ff66b5970c488719749154d53eacc4eb0 (diff) | |
download | ruby-a6a8847190d9075b742e6247a769c2b8c6ab5f0c.tar.gz |
* numeric.c (flo_eq): alway check if operands are NaN.
[ruby-list:39685]
* lib/cgi/session.rb: use LOCK_SH to read, and a few other
improvements. [ruby-core:02328]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6372 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib')
-rw-r--r-- | lib/cgi/session.rb | 49 | ||||
-rw-r--r-- | lib/mkmf.rb | 2 |
2 files changed, 25 insertions, 26 deletions
diff --git a/lib/cgi/session.rb b/lib/cgi/session.rb index 7115cae7d2..cd6ce95f4d 100644 --- a/lib/cgi/session.rb +++ b/lib/cgi/session.rb @@ -364,16 +364,11 @@ class CGI unless check_id(id) raise ArgumentError, "session_id `%s' is invalid" % id end - path = dir+"/"+prefix+id - path.untaint - unless File::exist? path + @path = dir+"/"+prefix+id + @path.untaint + unless File::exist? @path @hash = {} end - begin - @f = open(path, "r+") - rescue Errno::ENOENT - @f = open(path, "w+") - end end # Restore session state from the session's FileStore file. @@ -382,13 +377,17 @@ class CGI def restore unless @hash @hash = {} - @f.flock File::LOCK_EX - @f.rewind - for line in @f - line.chomp! - k, v = line.split('=',2) - @hash[CGI::unescape(k)] = CGI::unescape(v) - end + begin + f = File.open(@path, 'r') + f.flock File::LOCK_SH + for line in f + line.chomp! + k, v = line.split('=',2) + @hash[CGI::unescape(k)] = CGI::unescape(v) + end + ensure + f.close unless f.nil? + end end @hash end @@ -396,25 +395,25 @@ class CGI # Save session state to the session's FileStore file. def update return unless @hash - @f.rewind - for k,v in @hash - @f.printf "%s=%s\n", CGI::escape(k), CGI::escape(String(v)) - end - @f.truncate @f.tell + begin + f = File.open(@path, 'w') + f.flock File::LOCK_EX + for k,v in @hash + f.printf "%s=%s\n", CGI::escape(k), CGI::escape(String(v)) + end + ensure + f.close unless f.nil? + end end # Update and close the session's FileStore file. def close - return if @f.closed? update - @f.close end # Close and delete the session's FileStore file. def delete - path = @f.path - @f.close - File::unlink path + File::unlink @path end end diff --git a/lib/mkmf.rb b/lib/mkmf.rb index c8e98fb4ed..a95fb7e326 100644 --- a/lib/mkmf.rb +++ b/lib/mkmf.rb @@ -603,7 +603,7 @@ def check_sizeof(type, header = nil, &b) end message(a = size ? "#{size}\n" : "failed\n") Logging::message "-------------------- %s\n", a - r + size end def find_executable0(bin, path = nil) |