Package: dpkg-dev Version: 1.4.0.31 (+later?) Here are a few bugs I noticed in certain of the scripts which probably haven't been fixed yet. I haven't bothered giving diffs, as there are going to be so many changes to so much stuff, by the looks of it, that it won't necessarily be of much help.
I'm looking forward to Ian having the time now to work on it: good luck!! dpkg-parsechangelog =================== Does not accept a -h option; needs the line if (m/^-h$/) { &usageversion; exit(0); } near the end of the main while(@ARGV) loop. parsechangelog/debian ===================== There is a missing + in the regexp for examining the final line of a changelog section; it does not allow a time zone such as (GMT). The line should read: } elsif (m/^ \-\- (.*) <(.*)> ((\w+\,\s*)?\d{1,2}\s+\w+\s+\d{4}\s+\d{1,2}:\d\d:\d\d\s+[-+]\d{4}(\s+\([^\\\(\)]+\))?)$/) { with an extra '+' after the [^\\\(\)]. dpkg-genchanges =============== Typo in section: for $_ (keys %fi) { ... if (s/^C //) { ... elsif (m/^X[BS]+-|... with no '|' before the ^X. controllib.pl ============= There are problems when capit is applied to a field name such as XB-Foobar. I would suggest something like the following replacement (untested): sub capit { if ($_[0] =~ m/^(X[BCS]+)-(.*)/i) { return uc($1) . ( defined($capit{lc($2)}) ? $capit{lc($2)} : ucfirst(lc($2)) ); } else { return ( defined($capit{lc($_[0])}) ? $capit{lc($_[0])} : ucfirst(lc($_[0])) ); } } One could even envisage a function capit which broke the input into hyphen-separated segments and capitalised each one: sub capit { my (@parts,@capit_parts); @parts = split /-/, $_[0]; @capit_parts = map { ucfirst(lc($_)) } @parts; if ($parts[0] =~ /^X[BCS]+/i) { @capit_parts[0] = uc($parts[0]); } return join '-', @capit_parts; } This would make the field names much more consistent in form and do away with the need for the exceptions array (although it could be retained if desired). dpkg-gencontrol =============== There's a problem if there's an _all.deb file created and dpkg-gencontrol is run more than once -- the file ends up being listed multiple times. This is due to the line near the end of the code (and \d could replace 0-9 in the character class): if (open(X,"< $fileslistfile")) { while (<X>) { s/\n$//; # chomp would probably be nicer here, incidentally ;-) next if m/^([-+0-9a-z.]+)_[^_]+_([-\w]+)\.deb / && ($1 eq $oppackage) && ($2 eq $arch); whereas the last line should read something like: && ($1 eq $oppackage) && ($2 eq $arch or $2 eq 'all'); HTH, Julian =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- Julian Gilbey Email: [EMAIL PROTECTED] Dept of Mathematical Sciences, Queen Mary & Westfield College, Mile End Road, London E1 4NS, ENGLAND -*- Finger [EMAIL PROTECTED] for my PGP public key. -*-