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