Hi GCC WORLD,

My name is Anil and i am doing B.TECH in IT from BITS  and i am
interested in doing project  web development for GCC .
I will be doing the following works:-

->Move extra pages corresponding to technical news items into a
directory of their own. Add an index for these.
For these a particular directory(say tech)will be created and the task
will be completed and index will also be kept.

->to improve the navigation,every page will added with buttons to
navigate . And the buttons will be provided for
the index also.

->system to automatically checks the mirrors list.
to perform this i already downloaded the  script by d...@redhat.com and
trying to improve it.I am sending the copy of script as attachment.

This is my first time in GSOC, so assist me masters.

Waiting for your valuable suggestion.
With regards Anil
SCRIPT BY d...@redhat.com
This assumes there's a file "mirror.ts" at the top of each mirror's
directory tree.  I run my copy of this nightly.  The output are the
files getting.inc and getting.dat.

#!/usr/bin/perl
# -*- perl -*-

$| = 1;

chdir "/home/web/djgpp" || die;

$found = 0;
$notfound = 0;

use GDBM_File;
tie %GC, 'GDBM_File', "/tmp/djgpp-mirror-cache", &GDBM_WRCREAT, 0640;

if ( -f "mirrors.txt") {
   open(S, "mirrors.txt");
   while (<S>) {
       ($url, $junk, $name) = m@((ftp|http|rsync)://\S+)\s+(.*\S)\s*@;
       next unless $url =~ /(ftp|http|rsync):/;
       $url .= "/" unless $url =~ m@/$@;
       push(@urls, $url);
       push(@names, $name);
   }
   close(S);
} else {
   print "No file mirrors.txt?\n";
}

$now = time();
$cutoff = $now - 3 * 24 * 60 * 60;

for ($i=0; $i<=$#urls; $i++) {
   $name = $names[$i];
   $url = $urls[$i];

   $last_try = $when = $ts = 0;
   if ($GC{$url}) {
       ($last_try, $when, $ts, $type) = split(' ', $GC{$url});
   }
   if ($when < $now - 24*60*60) {
       $type = "";
       ($newts,$type) = split(' ', &urlget("${url}mirror.ts"));
       $newts += 0;
       if ($newts > 0) {
           $when = $now;
           $ts = $newts;
       }
   }
   $GC{$url} = "$now $when $ts $type";

   if ($last_try - $when > 3*24*60*60) {
       printf("DEAD %s  %s\n", &age($when), $url);
       $notfound ++;
       $inc .= "<!-- dead: $url -->\n";
   } elsif ($ts < $cutoff) {
       printf("BAD  %s  %s\n", &age($ts), $url);
       $notfound ++;
       $inc .= "<!-- failed: $url -->\n";
   } else {
       printf("OK   %s  %s  $type\n", &age($ts), $url);
       if ($type eq "full") {
           $typestring = " (Full)";
           $datstring = "full";
       } elsif ($type eq "current") {
           $typestring = " (Current)";
           $datstring = "current";
       } else {
           $typestring = "";
           $datstring = "current";
       }
       $inc .= sprintf "<tr><td><a 
href=\"%s\">%s</a></td><td>%s$typestring</td></tr>\n", $url, $url, $name;
       $dat .= "$url\t$datstring\t$name\n";
       $found ++;
   }
}

sub age {
   my ($ts) = @_;
   my ($hours, $days, $rv);
   return "never" if $ts == 0;
   $hours = $now - $ts;
   $hours = int ($hours / 3600 + 0.5);
   $days = int($hours / 24);
   $hours -= $days * 24;
   if ($days > 0) {
       $rv = "$days+$hours";
   } else {
       $rv = $hours;
   }
   return sprintf("%5s", $rv);
}

print "$found ok, $notfound bad.\n";
if ($found > 3 && $found > 0.4 * ($found+$notfound)) {
   print "Results saved\n";
   open(INC, ">getting.inc");
   print INC $inc;
   close(INC);
   open(INC, ">getting.dat");
   print INC $dat;
   close(INC);
} else {
   print "Not doing the Update.\n";
}

untie %GC;

#-----------------------------------------------------------------------------

sub urlget {
   my ($url,$cache) = @_;
   my $rv = '';

   if ($url =~ m@rsync://([^/]+)/(.*)@) {
       ($host, $path) = ($1, $2);
       unlink "/tmp/cm.rs.tmp.$$";
       system "rsync ${host}::$path /tmp/cm.rs.tmp.$$ > /dev/null 2>&1";
       open (CM, "/tmp/cm.rs.tmp.$$");
       $rv = join('', <CM>);
       close (CM);
       unlink "/tmp/cm.rs.tmp.$$";
       return $rv;
   }

   if ( -f $cache && -M $cache < 0.1) {
       open(S, $cache);
       $rv = join('', <S>);
       close(S);
       return $rv;
   }

   if (1) {
       open(WGET, "wget --passive-ftp -U djgpp-verifier -q -O - $url |");
       while (<WGET>) {
           $rv .= $_;
       }
       close(WGET);
       $rv =~ s/[\r\n]+$//;
   } else {
       $rv = '';
   }

   if ($cache && $rv) {
       open(S, "> $cache");
       print S $rv;
       close(S);
   }
   return $rv;
}

Reply via email to