Package: libdpkg-ruby1.8 Version: 0.3.1 Severity: important The Packages and Sources classes have trouble with package names that contain '+' characters.
/usr/lib/ruby/1.8/debian.rb:900:in `initialize': nested *?+ in regexp:
/Package:\s(libsigc++-1.2-5c102) (RegexpError)
/ from /usr/lib/ruby/1.8/debian.rb:900:in `initialize'
from /usr/lib/ruby/1.8/debian.rb:1031:in `initialize'
from /usr/lib/ruby/1.8/debian.rb:59:in `listfiles'
from ./dpkg-test:26
from ./dpkg-test:25
The attached patch fixes it for me, but I'm new to Ruby so I'm sure
there is a more elegant solution.
-- System Information:
Debian Release: testing/unstable
APT prefers unstable
APT policy: (900, 'unstable'), (500, 'testing'), (400, 'stable')
Architecture: i386 (i686)
Shell: /bin/sh linked to /bin/bash
Kernel: Linux 2.6.15-1-686
Locale: LANG=C, LC_CTYPE=C (charmap=ANSI_X3.4-1968)
Versions of packages libdpkg-ruby1.8 depends on:
ii libruby1.8 1.8.4-2 Libraries necessary to run Ruby 1.
libdpkg-ruby1.8 recommends no packages.
-- no debconf information
--
Eric Evans
[EMAIL PROTECTED]
--- /usr/lib/ruby/1.8/debian.rb 2006-05-05 22:14:12.000000000 -0500
+++ /usr/lib/ruby/1.8/debian.rb 2006-05-05 22:38:36.000000000 -0500
@@ -879,7 +879,8 @@
class Sources < Archives
def initialize(file = "", pkgs = [], fields = [])
unless pkgs.empty?
- pkgre = Regexp.new("(Package|Source):\\s(#{pkgs.join('|')})\n")
+ joined = pkgs.join('|').gsub(/[+]/, "\\\\+")
+ pkgre = Regexp.new("(Package|Source):\\s(#{joined})\n")
end
@lists = Archives.parseArchiveFile(file) {|info|
if !pkgre || pkgre =~ info
@@ -897,7 +898,8 @@
class Packages < Archives
def initialize(file = "", pkgs = [], fields = [])
unless pkgs.empty?
- pkgre = Regexp.new("Package:\\s(#{pkgs.join('|')})\n")
+ joined = pkgs.join('|').gsub(/[+]/, "\\\\+")
+ pkgre = Regexp.new("Package:\\s(#{joined})\n")
end
@provides = {}
@file = [file]
signature.asc
Description: Digital signature

