+ my $man = 0;
+ my $restrname = "";
+ my $restrinst = "";
+ my $restrcand = "";
+ my $debver = 0;
+ for my $p ( split("\n",$apt) ) {
+ if ( !$debver ) { # first line
+ $debver = 1;
+ $p =~ s/(5[0-9.]+)/$1 LENNY !!!/;
+ $p =~ s/(6[0-9.]+)/$1 squeeze/;
+ $p =~ s/(7[0-9.]+)/$1 wheezy/;
+ $p = " Debian $p";
+ $debversions{$H} = $p;
+ print "Deb version for $H is $p\n" if ($debug>1);
+ next;
+ }
+ # parse apt-cache output
+ $restrname = $1 if $p =~ /^(\S+):$/;
+ $restrinst = $1 if $p =~ /^\s+Installed:\s+(\S+)$/;
+ $restrcand = $1 if $p =~ /^\s+Candidate:\s+(\S+)$/;
+ if ( $p =~ /^\s+Version table:/ ) { # have all for that package
+ my $bver = $restrpkgs{$restrname};
+ if ( ( $restrinst eq $restrcand ) &&
+ ( $restrinst ne $bver ) ) {
+ # if different, it is a regular apt upgrade, and will be seen
+ # later. AND we want to have a different version in our repo
+ `dpkg --compare-versions "$bver" lt "$restrinst" 2>/dev/null`;
+ if ( $? ) { # It was not a downgrade
+ # manual packages may be ahead of the repo!
+ $mantot++;
+ $man++;
+ $pkgs++;
+ $manhosts{$H} = 1;
+ $manpkgs{$restrname} = 1;
+ $det .= "<tr>";
+ $det .= "<td> $restrname <b>(M)</b></td>";
+ $det .= "<td>". strdiff($bver,$restrinst)."</td>";
+ $det .= "<td>". strdiff($restrinst,$bver)."</td>";
+ my $datekey = "$H:$restrname";
+ if ( $olddates{$datekey} ) {
+ $newdates{$datekey} = $olddates{$datekey};
+ } else {
+ $newdates{$datekey} = $thisdate;
+ }
+ $det .= "<td>" . $newdates{$datekey} . "</td>";
+ $det .= "</tr>\n";
+ my $key = "$restrname";
+ if ( !$summary{$key} ) {
+ $summary{$key} = "";
+ }
+ $summary{$key} .= "$H ";
+ }
+ }
+ $restrname = ""; # clear for next round
+ $restrinst = "";
+ $restrcand = "";
+ }