--- dpkg-scansources.orig Thu Nov 23 19:09:54 2000 +++ dpkg-scansources Thu Nov 23 19:45:58 2000 @@ -492,6 +492,9 @@ push @ARGV, undef if @ARGV < 2; push @ARGV, '' if @ARGV < 3; my ($dir, $override, $prefix) = @ARGV; + my (%source_found); + my ($vers); + my ($pivot); load_override $override if defined $override; load_src_override $Src_override, $override; @@ -503,9 +506,35 @@ s-^\./+--; my ($source, $out) = process_dsc $prefix, $_ or next; if ($No_sort) { + # Beware, dupes will be printed. print $out; } else { + # A crude hack to avoid dupes + if (exists $source_found{$source}) { + print STDERR "! Package $source is repeat!\n"; + # Somebody said this could be done in _one_ line? How? + # ($vers = $out) =~ s/Version: (.*)\n/$1/; + $out =~ /Version: (.*)\n/; + $vers = $1; + if ($vers ge $source_found{$source}) { + printf STDERR " %s is newer than %s, exchanging.\n", $vers, $source_found{$source}; + my $pivot=0; while ($pivot <= $#out && $out[$pivot]->[0] ne $source) { + $pivot++; + } + if ($out[$pivot]->[0] eq $source) { + splice (@out, $pivot, 1); + } # else ignore + } + else { + printf STDERR " %s is older than %s, ignoring.\n", $vers, $source_found{$source}; + next; + } + } + else { + $out =~ /Version: (.*)\n/; + $source_found{$source} = $1; + } push @out, [$source, $out]; } }