+ push @mirrors, "ftp://ftp.gnu.org/gnu/$1";
+ push @mirrors, "ftp://ftp.belnet.be/mirror/ftp.gnu.org/gnu/$1";
+ push @mirrors, "ftp://ftp.mirror.nl/pub/mirror/gnu/$1";
+ push @mirrors, "http://mirror.switch.ch/ftp/mirror/gnu/$1";
+ push @mirrors, "ftp://ftp.uu.net/archive/systems/gnu/$1";
+ push @mirrors, "ftp://ftp.eu.uu.net/pub/gnu/$1";
+ push @mirrors, "ftp://ftp.leo.org/pub/comp/os/unix/gnu/$1";
+ push @mirrors, "ftp://ftp.digex.net/pub/gnu/$1";
+ } elsif ($mirror =~ /^\@KERNEL\/(.+)$/) {
+ my @extra = ( $1 );
+ if ($filename =~ /linux-\d+\.\d+(?:\.\d+)?-rc/) {
+ push @extra, "$extra[0]/testing";
+ } elsif ($filename =~ /linux-(\d+\.\d+(?:\.\d+)?)/) {
+ push @extra, "$extra[0]/longterm/v$1";
+ }
+ foreach my $dir (@extra) {
+ push @mirrors, "ftp://ftp.geo.kernel.org/pub/$dir";
+ push @mirrors, "http://ftp.geo.kernel.org/pub/$dir";
+ push @mirrors, "ftp://ftp.all.kernel.org/pub/$dir";
+ push @mirrors, "http://ftp.all.kernel.org/pub/$dir";
+ push @mirrors, "ftp://ftp.de.kernel.org/pub/$dir";
+ push @mirrors, "http://ftp.de.kernel.org/pub/$dir";
+ push @mirrors, "ftp://ftp.fr.kernel.org/pub/$dir";
+ push @mirrors, "http://ftp.fr.kernel.org/pub/$dir";
+ }
+ } elsif ($mirror =~ /^\@GNOME\/(.+)$/) {
+ push @mirrors, "http://ftp.gnome.org/pub/GNOME/sources/$1";
+ push @mirrors, "http://ftp.unina.it/pub/linux/GNOME/sources/$1";
+ push @mirrors, "http://fr2.rpmfind.net/linux/gnome.org/sources/$1";
+ push @mirrors, "ftp://ftp.dit.upm.es/pub/GNOME/sources/$1";
+ push @mirrors, "ftp://ftp.no.gnome.org/pub/GNOME/sources/$1";
+ push @mirrors, "http://ftp.acc.umu.se/pub/GNOME/sources/$1";
+ push @mirrors, "http://ftp.belnet.be/mirror/ftp.gnome.org/sources/$1";
+ push @mirrors, "http://linorg.usp.br/gnome/sources/$1";
+ push @mirrors, "http://mirror.aarnet.edu.au/pub/GNOME/sources/$1";
+ push @mirrors, "http://mirrors.ibiblio.org/pub/mirrors/gnome/sources/$1";
+ push @mirrors, "ftp://ftp.cse.buffalo.edu/pub/Gnome/sources/$1";
+ push @mirrors, "ftp://ftp.nara.wide.ad.jp/pub/X11/GNOME/sources/$1";
+ }
+ else {