Database updated.
[redirector-ad.git] / redirector
1 #! /usr/bin/perl
2 #
3 # $Id$
4
5 use strict;
6 use warnings;
7
8 use re 'eval';
9
10 use constant DIR_AD => "/usr/local/squid/etc/ad";
11
12
13 chdir DIR_AD or die "chdir ".DIR_AD.": $!";
14 select STDOUT;
15 $|=1;
16 my @got;
17
18 RELOAD: {
19         my $patt="";
20         open(M4,"-|","m4 --prefix-builtins --synclines main") or die "m4 run: $!";
21         my %files;
22         while (<M4>) {
23                 chomp;
24                 next if !$_;
25                 do { $files{$1}=undef; next; } if /^#\s*line\s+\d+\s+"(.*)"$/;
26                 $patt.="|" if $patt;
27                 $patt.=$_."(?{ '";
28                 s/'/'."'".'/g;
29                 $patt.="$_'; })";
30                 }
31         close M4;
32         $patt=qr @^http://($patt).*\n$@;
33
34         while ($_=shift @got || <>) {
35                 while (my($file,$old)=each %files) {
36                         my $new=(stat $file)[9];
37                         $files{$file}=$new;
38                         next if !defined $old || $old==$new;
39                         push @got,$_;
40                         redo RELOAD;
41                         }
42                 s@$patt@http://localhost/cgi-bin/redirector-ad.cgi?$^R\n@;
43                 print;
44                 }
45         } # RELOAD