#!/usr/bin/perl
-require "$ARGV[0]/config.pl";
-require 'database.pl';
+use POSIX;
-if ("$ARGV[1]" eq '--cgi') {
- open DEBUG,"/dev/null" or die $!;
- require 'cgi-lib.pl';
- &ReadParse;
-} else {
+$|=1;
+print "Content-Type: text/html\n\n" or die $!;
+$|=0;
+
+if ($ENV{'BCP5REGISTRY_NOCGI'}) {
+ $scriptdir= '.';
+ $invokestyle= 'manual';
open DEBUG,">&STDERR" or die $!;
- foreach $x (@ARGV[1..$#ARGV]) {
+ foreach $x (@ARGV) {
$x =~ m/^(\w+)\=/ or die "$x ?";
$in{$1}= $';
print DEBUG "$1 -> \"$'\"\n";
}
+} else {
+ if ($ENV{'SERVER_SOFTWARE'} =~ m/Lynx/) {
+ $scriptdir= '.';
+ $invokestyle= 'lynxcgi';
+ } else {
+ $scriptdir= $ENV{'SCRIPT_FILENAME'};
+ $scriptdir =~ s,/[^/]+$,,;
+ $invokestyle= 'cgi';
+ }
+ require 'cgi-lib.pl';
+ &ReadParse;
+ open DEBUG,"/dev/null" or die $!;
+}
+
+chdir($scriptdir) or die $!;
+require 'config.pl';
+require 'database.pl';
+
+if ($invokestyle eq 'lynxcgi') {
+ defined($pwd= getcwd) or die $!;
+ $_= $0; s,^.*/,,;
+ $cgi= "lynxcgi:$pwd/$_";
}
@area_networks= qw(0a000000 ac100000 c0a80000);
$id= '';
$name= '';
$email= '';
+$net= '';
$emailhidechecked= '';
$hiddenemail= 0;
$adminemail= 'ijackson+cam-bcp5@chiark.greenend.org.uk';
$nameboxlen= 55;
$emailboxlen= 55;
-$cgi= 'http://www.chiark.greenend.org.uk/ucgi/~ijackson/bcp5-registry';
-chdir("$ARGV[0]");
+$cgi= 'http://www.chiark.greenend.org.uk/ucgi/~ijackson/bcp5-registry.pl';
$db_read= 1;
}
+$db_lock_env= 'BCP5REGISTRY_LOCKED';
+
sub write_database () {
my $k,$v;
print DEBUG "writing\n";
- die unless $ENV{'BCP5_REGISTRY_LOCKED'};
+ die unless $ENV{$db_lock_env};
open DBF, ">list.new" or die $!;
while (($k,$v) = each %db) {
$str= "$k";
sub lock_database () {
print DEBUG "locking\n";
die if $db_read;
- return if $ENV{'BCP5_REGISTRY_LOCKED'};
- $ENV{'BCP5_REGISTRY_LOCKED'}= '1';
+ return if $ENV{$db_lock_env};
+ $ENV{$db_lock_env}= '1';
exec 'with-lock-ex','-w','lockfile',$0,@ARGV;
die $!;
}