[前][次][番号順一覧][スレッド一覧]

ruby-changes:1937

From: ko1@a...
Date: 11 Sep 2007 17:28:42 +0900
Subject: [ruby-changes:1937] knu - Ruby:r13428 (trunk): * lib/tempfile.rb (Tempfile::make_tmpname): Allow to specify a

knu	2007-09-11 17:28:29 +0900 (Tue, 11 Sep 2007)

  New Revision: 13428

  Modified files:
    trunk/ChangeLog
    trunk/lib/tempfile.rb

  Log:
    * lib/tempfile.rb (Tempfile::make_tmpname): Allow to specify a
      suffix for a temporary file name.
    
    * lib/tempfile.rb (Tempfile::make_tmpname): Make temporary file
      names less predictable by including a random string.
      [inspired by: akr]


  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/lib/tempfile.rb?r1=13428&r2=13427
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=13428&r2=13427

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 13427)
+++ ChangeLog	(revision 13428)
@@ -1,3 +1,12 @@
+Tue Sep 11 17:28:00 2007  Akinori MUSHA  <knu@i...>
+
+	* lib/tempfile.rb (Tempfile::make_tmpname): Allow to specify a
+	  suffix for a temporary file name.
+
+	* lib/tempfile.rb (Tempfile::make_tmpname): Make temporary file
+	  names less predictable by including a random string.
+	  [inspired by: akr]
+
 Tue Sep 11 17:25:59 2007  Akinori MUSHA  <knu@i...>
 
 	* lib/shellwords.rb: Add shellescape() and shelljoin().
Index: lib/tempfile.rb
===================================================================
--- lib/tempfile.rb	(revision 13427)
+++ lib/tempfile.rb	(revision 13428)
@@ -15,10 +15,16 @@
   @@cleanlist = []
   @@lock = Mutex.new
 
-  # Creates a temporary file of mode 0600 in the temporary directory
-  # whose name is basename.pid.n and opens with mode "w+".  A Tempfile
-  # object works just like a File object.
+  # Creates a temporary file of mode 0600 in the temporary directory,
+  # opens it with mode "w+", and returns a Tempfile object which
+  # represents the created temporary file.  A Tempfile object can be
+  # treated just like a normal File object.
   #
+  # The basename parameter is used to determine the name of a
+  # temporary file.  If an Array is given, the first element is used
+  # as prefix string and the second as suffix string, respectively.
+  # Otherwise it is treated as prefix string.
+  #
   # If tmpdir is omitted, the temporary directory is determined by
   # Dir::tmpdir provided by 'tmpdir.rb'.
   # When $SAFE > 0 and the given tmpdir is tainted, it uses
@@ -65,7 +71,15 @@
   end
 
   def make_tmpname(basename, n)
-    sprintf('%s.%d.%d', basename, $$, n)
+    case basename
+    when Array
+      prefix, suffix = *basename
+    else
+      prefix, suffix = basename, ''
+    end
+ 
+    t = Time.now.strftime("%Y%m%d")
+    path = "#{prefix}#{t}-#{$$}-#{rand(0x100000000).to_s(36)}-#{n}#{suffix}"
   end
   private :make_tmpname
 

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml

[前][次][番号順一覧][スレッド一覧]