chiark / gitweb /
Improved execution arrangements, bugfixes.
authorijackson <ijackson>
Mon, 21 Jun 1999 19:35:26 +0000 (19:35 +0000)
committerijackson <ijackson>
Mon, 21 Jun 1999 19:35:26 +0000 (19:35 +0000)
bcp5-registry.pl
config.pl
database.pl
run-from-lynx [new file with mode: 0755]

index 309b9cbebded642daae33ea95bd8d70f538dd631..8d0a0b1c9a6a68e74320a8a40b05c9fb350c7246 100755 (executable)
@@ -1,19 +1,42 @@
 #!/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);
@@ -40,6 +63,7 @@ $notfound= 0;
 $id= '';
 $name= '';
 $email= '';
+$net= '';
 $emailhidechecked= '';
 $hiddenemail= 0;
 
index 1e723a238b128e593ac68bd8ab20ee96d12bbb72..a167a8b360ecd50ead1c6eb7c333ea8d8b1ebed8 100644 (file)
--- a/config.pl
+++ b/config.pl
@@ -2,5 +2,4 @@ $whose= "Cambridge Geeks'";
 $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';
index 1d7b1f02ecf40fdc036a60aa734021c4e41ea31a..a9c8295d89fedbc7b47405f0fc797102852ae298 100644 (file)
@@ -22,10 +22,12 @@ print DEBUG "reading\n";
     $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";
@@ -40,8 +42,8 @@ print DEBUG "writing\n";
 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 $!;
 }
diff --git a/run-from-lynx b/run-from-lynx
new file mode 100755 (executable)
index 0000000..8446672
--- /dev/null
@@ -0,0 +1,3 @@
+#!/bin/sh
+set -e
+exec lynx -cfg=/dev/null "$@" lynxcgi:./bcp5-registry.pl