#!/usr/local/bin/perl
# Locker database interface
# Copyright Matthew Gray September 1994

$lockerdb = "/var/local/www/data/locker.db";
require 'parseform.pl';
$query=$ENV{'QUERY_STRING'};
$pinfo=$ENV{'PATH_INFO'};
print("Content-Type: text/html\n\n");

if($pinfo){
	if($pinfo eq "/add"){
		if($query){
			$query =~ s/\+/ /g;
			%addthis = &parseform($query);
			$addthis{'description'} =~ s/\n/ /g;
			open(LDB, $lockerdb);
			$/ = "\n\n";
			while(<LDB>){
				($lockerinfo, @programs) = split("\n", $_);
				($lockername, @ldesc) = split(" ", $lockerinfo);
				for $p (@programs){
					$lockers{$lockername} .= $p."\n";
					$ldesc{$lockername} = join(' ', @ldesc);
				}
			}
			$*=1;
			if($lockers{$addthis{'locker'}} =~ /^$addthis{'program'} /){
#				print("<h1>Sorry, already on <a href=/cgi/locker>the list</a></h1>\n");
#				exit;
				$lockers{$addthis{'locker'}} =~
				s/^$addthis{'program'} .+/$addthis{'program'} $addthis{'description'}/;
			}
			else{
			$lockers{$addthis{'locker'}} .= 
			$addthis{'program'}." ".$addthis{'description'}."\n"
			if $addthis{'program'};
			}
			print("<HTML>\n");
			print("<HEAD>\n");
			print("<TITLE>Add a Locker</TITLE>\n");
			print("</HEAD>\n");
			print("<BODY>\n");
			print("<H1>Adding...</H1>\n");
			print("<H2>$addthis{'locker'}</H2>\n");
			print("<DL><DT>$addthis{'program'}\n<DD>$addthis{'description'}\n</DL>\n");
			print("<A HREF=\"/cgi/locker\">List everything</A><BR>");
			print("<A HREF=\"/cgi/locker/add\">Add another</A><BR>");
			print("<FORM ACTION=\"/cgi/locker\">");
			print("Search for: <INPUT NAME=isindex>\n");
			print("</FORM>\n");
			print("</BODY>\n");
			print("</HTML>\n");
			unlink($lockerdb);
			open(LDB, ">$lockerdb") || print "Can't open ldb";
			if($addthis{'program'} eq ''){
				$ldesc{$addthis{'locker'}} = $addthis{'description'};
			}
			for $l (keys %lockers){
				print(LDB "$l $ldesc{$l}\n".$lockers{$l}."\n");
			}
			close(LDB);
		}
		else{
			print <<EndOfForm;
<HTML>
<HEAD>
<TITLE>Add a program to the locker/program database</TITLE>
</HEAD>
<BODY>
<H1>Add a program to the locker/program database</H1>
<FORM>
Locker name: <INPUT NAME="locker"><P>
Program name: <INPUT NAME="program"><P>
Description:<P>
<TEXTAREA COLS=40 ROWS=6 NAME="description"></TEXTAREA>
<P><INPUT TYPE="submit" VALUE="Add">
</FORM>
</BODY>
</HTML>
EndOfForm
		}
	}
	exit;
}
print("<HTML>\n");
print("<HEAD>\n");
print("<TITLE>Lockers and Software</TITLE>\n") if !$query;
print("<TITLE>Locker Software Search</TITLE>\n") if $query;
print("</HEAD>\n");
print("<BODY>\n");
print("<H1>Locker search for \`\`$query\'\'</H1>\n") if $query;
print("<H1>Lockers and software</H1>\n") if !$query;
$query =~ s/ / \+/g;
$query = '.' unless $query;

print("\n<FORM>Search for: <INPUT NAME=isindex></FORM>\n");
print("<A HREF=\"/cgi/locker/add\">Add something</A><HR>\n");

open(LDB, $lockerdb);
$/ = "\n\n";
while(<LDB>){
	next unless /$query/i;
	($lockerinfo, @programs) = split("\n", $_);
	($lockername, @lockerdesc) = split(" ", $lockerinfo);
	print("<H2>$lockername</H2>\n<EM>@lockerdesc</EM>");
	print("<DL>\n");
	for $p (@programs){
		($program, @desc) = split(" ", $p);
		print("<DT>$program\n<dd>@desc\n") if $p=~/$query/i;
	}
	print("</DL>\n");
}
close(LDB);
print("</BODY>\n");
print("</HTML>\n");
