]> git.ipfire.org Git - people/pmueller/ipfire-2.x.git/blobdiff - src/pakfire/lib/functions.pl
pakfire: Change pingtest to use icmp again.
[people/pmueller/ipfire-2.x.git] / src / pakfire / lib / functions.pl
index c47ff39bbdba48cc196b8b703ee8919c5c5e3d78..5aaa5f41fa872220cda201f41ab80bdff5895560 100644 (file)
@@ -116,7 +116,7 @@ sub usage {
 sub pinghost {
        my $host = shift;
        
-       $p = Net::Ping->new();
+       $p = Net::Ping->new("icmp");
   if ($p->ping($host)) {
         logger("PING INFO: $host is alive");
        return 1;
@@ -369,6 +369,51 @@ sub dbgetlist {
                fetchfile("lists/packages_list.db", "");
                move("$Conf::cachedir/packages_list.db", "$Conf::dbdir/lists/packages_list.db");
        }
+
+       # Update the meta database if new packages was in the package list
+       my @meta;
+       my $file;
+       my $line;
+       my $prog;
+       my ($name, $version, $release);
+       my @templine;
+
+       open(FILE, "<$Conf::dbdir/lists/packages_list.db");
+       my @db = <FILE>;
+       close(FILE);
+
+       opendir(DIR,"$Conf::dbdir/meta");
+       my @files = readdir(DIR);
+       closedir(DIR);
+       foreach $file (@files) {
+               next if ( $file eq "." );
+               next if ( $file eq ".." );
+               next if ( $file =~ /^old/ );
+               open(FILE, "<$Conf::dbdir/meta/$file");
+               @meta = <FILE>;
+               close(FILE);
+               foreach $line (@meta) {
+                       @templine = split(/\: /,$line);
+                       if ("$templine[0]" eq "Name") {
+                               $name = $templine[1];
+                               chomp($name);
+                       } elsif ("$templine[0]" eq "ProgVersion") {
+                               $version = $templine[1];
+                               chomp($version);
+                       } elsif ("$templine[0]" eq "Release") {
+                               $release = $templine[1];
+                               chomp($release);
+                       }
+               }
+               foreach $prog (@db) {
+                       @templine = split(/\;/,$prog);
+                       if (("$name" eq "$templine[0]") && ("$release" ne "$templine[2]")) {
+                               move("$Conf::dbdir/meta/meta-$name","$Conf::dbdir/meta/old_meta-$name");
+                               fetchfile("meta/meta-$name", "");
+                               move("$Conf::cachedir/meta-$name", "$Conf::dbdir/meta/meta-$name");
+                       }
+               }
+       }
 }
 
 sub dblist {
@@ -394,11 +439,14 @@ sub dblist {
        close(FILE);
 
        if ("$filter" eq "upgrade") {
-               if ("$forweb" ne "forweb") {getcoredb("noforce");}
+               if ("$forweb" ne "forweb" && "$forweb" ne "notice" ) {getcoredb("noforce");}
                eval(`grep "core_" $Conf::dbdir/lists/core-list.db`);
                if ("$core_release" > "$Conf::core_mine") {
                        if ("$forweb" eq "forweb") {
                                print "<option value=\"core\">Core-Update -- $Conf::version -- Release: $Conf::core_mine -> $core_release</option>\n";
+                       }
+                       elsif ("$forweb" eq "notice") {
+                               print "<br /><br /><br /><a href='pakfire.cgi'>$Lang::tr{'core notice 1'} $Conf::core_mine $Lang::tr{'core notice 2'} $core_release $Lang::tr{'core notice 3'}</a>";
                        } else {
                                my $command = "Core-Update $Conf::version\nRelease: $Conf::core_mine -> $core_release\n";
                                if ("$Pakfire::enable_colors" eq "1") {
@@ -434,7 +482,7 @@ sub dblist {
                        }
                        foreach $prog (@db) {
                                @templine = split(/\;/,$prog);
-                               if (("$name" eq "$templine[0]") && ("$release" < "$templine[2]" )) {
+                               if (("$name" eq "$templine[0]") && ("$release" < "$templine[2]" && "$forweb" ne "notice")) {
                                        push(@updatepaks,$name);
                                        if ("$forweb" eq "forweb") {
                                                print "<option value=\"$name\">Update: $name -- Version: $version -> $templine[1] -- Release: $release -> $templine[2]</option>\n";