From 3b0ccbe74f88c5ad428f2d500a39e710bfc17f52 Mon Sep 17 00:00:00 2001 From: ijackson Date: Mon, 21 Jun 1999 19:35:26 +0000 Subject: [PATCH] Improved execution arrangements, bugfixes. --- bcp5-registry.pl | 40 ++++++++++++++++++++++++++++++++-------- config.pl | 3 +-- database.pl | 8 +++++--- run-from-lynx | 3 +++ 4 files changed, 41 insertions(+), 13 deletions(-) create mode 100755 run-from-lynx diff --git a/bcp5-registry.pl b/bcp5-registry.pl index 309b9cb..8d0a0b1 100755 --- a/bcp5-registry.pl +++ b/bcp5-registry.pl @@ -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; diff --git a/config.pl b/config.pl index 1e723a2..a167a8b 100644 --- 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'; diff --git a/database.pl b/database.pl index 1d7b1f0..a9c8295 100644 --- a/database.pl +++ b/database.pl @@ -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 index 0000000..8446672 --- /dev/null +++ b/run-from-lynx @@ -0,0 +1,3 @@ +#!/bin/sh +set -e +exec lynx -cfg=/dev/null "$@" lynxcgi:./bcp5-registry.pl -- 2.30.2