[Apt-listbugs-commits] [apt-listbugs] 01/01: drop HtmlTempfile, use standard Tempfile instead

Francesco Poli frx-guest at alioth.debian.org
Thu Aug 8 12:41:28 UTC 2013


This is an automated email from the git hooks/post-receive script.

frx-guest pushed a commit to branch master
in repository apt-listbugs.

commit 3adfaa8a912158820552a5e1e1dc0ff78d6fc8b7
Author: Francesco Poli (wintermute) <invernomuto at paranoici.org>
Date:   Thu Aug 8 14:16:19 2013 +0200

    drop HtmlTempfile, use standard Tempfile instead
---
 apt-listbugs              |    8 --
 debian/changelog          |    2 +
 lib/apt-listbugs/logic.rb |    3 +-
 lib/debian/mytempfile.rb  |  187 ---------------------------------------------
 4 files changed, 4 insertions(+), 196 deletions(-)

diff --git a/apt-listbugs b/apt-listbugs
index 2525420..251b5dd 100755
--- a/apt-listbugs
+++ b/apt-listbugs
@@ -278,14 +278,6 @@ include GetText
 
 GetText::bindtextdomain("apt-listbugs")
 
-# ad-hoc
-require 'debian/mytempfile'
-class HtmlTempfile < MyTempfile
-  def _tmpname(basename,tmpdir,n)
-    sprintf('%s/%s%d.%d.html', tmpdir, basename, $$, n)
-  end
-end
-
 ## main from here
 
 # Drop out as early as possible if this env var is set.
diff --git a/debian/changelog b/debian/changelog
index 6fa3d9a..83a6e32 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -14,6 +14,8 @@ apt-listbugs (0.1.10) UNRELEASED; urgency=low
   * fixed a typo in the comment included in the initial version of
     /etc/apt/listbugs/ignore_bugs
   * adopted UTF-8 arrows, when charset is UTF-8
+  * adopted standard Ruby library Tempfile for HTML bug lists too, thus
+    dropping the ad-hoc HtmlTempfile
 
  -- Francesco Poli (wintermute) <invernomuto at paranoici.org>  Sat, 29 Jun 2013 17:18:26 +0200
 
diff --git a/lib/apt-listbugs/logic.rb b/lib/apt-listbugs/logic.rb
index 14d185b..66dec3c 100644
--- a/lib/apt-listbugs/logic.rb
+++ b/lib/apt-listbugs/logic.rb
@@ -632,7 +632,8 @@ class Viewer
       bug_exist_for_pkg = 0
       bug_exist = 0
 
-      tmp = HtmlTempfile.new("apt-listbugs")
+      tmp = Tempfile.new(["apt-listbugs", ".html"])
+      tmp.chmod(0644)
       tmp.puts "<?xml version=\"1.0\" encoding=\"#{Locale.charset}\"?>"
       tmp.puts "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\""
       tmp.puts "    \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">"
diff --git a/lib/debian/mytempfile.rb b/lib/debian/mytempfile.rb
deleted file mode 100644
index 92f5c9a..0000000
--- a/lib/debian/mytempfile.rb
+++ /dev/null
@@ -1,187 +0,0 @@
-#
-# tempfile - manipulates temporary files
-# used only in generating HTML for browsing.
-#
-
-require 'delegate'
-require 'tmpdir'
-
-# A class for managing temporary files.  This library is written to be
-# thread safe.
-class MyTempfile < DelegateClass(File)
-  MAX_TRY = 10
-  @@cleanlist = []
-
-  # 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.
-  #
-  # 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
-  # /tmp. (Note that ENV values are tainted by default)
-  def initialize(basename, tmpdir=Dir::tmpdir)
-    if $SAFE > 0 and tmpdir.tainted?
-      tmpdir = '/tmp'
-    end
-
-    lock = nil
-    n = failure = 0
-
-    begin
-      Thread.critical = true
-
-      begin
-        tmpname = _tmpname(basename,tmpdir,n)
-        lock = tmpname + '.lock'
-        n += 1
-      end while @@cleanlist.include?(tmpname) or
-        File.exist?(lock) or File.exist?(tmpname)
-
-      Dir.mkdir(lock)
-    rescue
-      failure += 1
-      retry if failure < MAX_TRY
-      raise "cannot generate tempfile `%s'" % tmpname
-    ensure
-      Thread.critical = false
-    end
-
-    @data = [tmpname]
-    @clean_proc = MyTempfile.callback(@data)
-    ObjectSpace.define_finalizer(self, @clean_proc)
-
-    @tmpfile = File.open(tmpname, File::RDWR|File::CREAT|File::EXCL, 0644)
-    @tmpname = tmpname
-    @@cleanlist << @tmpname
-    @data[1] = @tmpfile
-    @data[2] = @@cleanlist
-
-    super(@tmpfile)
-
-    # Now we have all the File/IO methods defined, you must not
-    # carelessly put bare puts(), etc. after this.
-
-    Dir.rmdir(lock)
-  end
-
-  # Creates a temporary filename candidate
-  def _tmpname(basename,tmpdir,n)
-    sprintf('%s/%s%d.%d', tmpdir, basename, $$, n)
-  end
-  protected :_tmpname
-
-  # Opens or reopens the file with mode "r+".
-  def open
-    @tmpfile.close if @tmpfile
-    @tmpfile = File.open(@tmpname, 'r+')
-    @data[1] = @tmpfile
-    __setobj__(@tmpfile)
-  end
-
-  def _close    # :nodoc:
-    @tmpfile.close if @tmpfile
-    @data[1] = @tmpfile = nil
-  end
-  protected :_close
-
-  # Closes the file.  If the optional flag is true, unlinks the file
-  # after closing.
-  #
-  # If you don't explicitly unlink the temporary file, the removal
-  # will be delayed until the object is finalized.
-  def close(unlink_now=false)
-    if unlink_now
-      close!
-    else
-      _close
-    end
-  end
-
-  # Closes and unlinks the file.
-  def close!
-    _close
-    @clean_proc.call
-    ObjectSpace.undefine_finalizer(self)
-  end
-
-  # Unlinks the file.  On UNIX-like systems, it is often a good idea
-  # to unlink a temporary file immediately after creating and opening
-  # it, because it leaves other programs zero chance to access the
-  # file.
-  def unlink
-    # keep this order for thread safeness
-    File.unlink(@tmpname) if File.exist?(@tmpname)
-    @@cleanlist.delete(@tmpname) if @@cleanlist
-  end
-  alias delete unlink
-
-  # Returns the full path name of the temporary file.
-  def path
-    @tmpname
-  end
-
-  # Returns the size of the temporary file.  As a side effect, the IO
-  # buffer is flushed before determining the size.
-  def size
-    if @tmpfile
-      @tmpfile.flush
-      @tmpfile.stat.size
-    else
-      0
-    end
-  end
-  alias length size
-
-  class << self
-    def callback(data)  # :nodoc:
-      pid = $$
-      lambda{
-        if pid == $$
-          path, tmpfile, cleanlist = *data
-
-          print "removing ", path, "..." if $DEBUG
-
-          tmpfile.close if tmpfile
-
-          # keep this order for thread safeness
-          File.unlink(path) if File.exist?(path)
-          cleanlist.delete(path) if cleanlist
-
-          print "done\n" if $DEBUG
-        end
-      }
-    end
-
-    # If no block is given, this is a synonym for new().
-    #
-    # If a block is given, it will be passed tempfile as an argument,
-    # and the tempfile will automatically be closed when the block
-    # terminates.  In this case, open() returns nil.
-    def open(*args)
-      tempfile = new(*args)
-
-      if block_given?
-        begin
-          yield(tempfile)
-        ensure
-          tempfile.close
-        end
-
-        nil
-      else
-        tempfile
-      end
-    end
-  end
-end
-
-if __FILE__ == $0
-#  $DEBUG = true
-  f = MyTempfile.new("foo")
-  f.print("foo\n")
-  f.close
-  f.open
-  p f.gets # => "foo\n"
-  f.close!
-end

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/apt-listbugs/apt-listbugs.git



More information about the Apt-listbugs-commits mailing list