[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