#!/usr/bin/perl
# Adapted from perl_form by Stephen Bloch, 12/96
# Adapted from ostgardr.form.cgi by Stephen Bloch, 2/97.

print "Content-type: text/html\n\n";

&ReadParse;

print <<END_HEADER;
<head>
<title>Thanks, $in{'name'}</title>
</head>
<body bgcolor="#e4e4e4">
<h1 align=center>Thanks, $in{'name'}</h1>

Your answers have been recorded and sent to the professor.
</body>
END_HEADER

open (DB, ">> /usr/users/sbloch/html/class/171/survey.results");
# print MAIL "Here are all the data of interest:\n\n";

print DB "(";

foreach $key ('name','address','courses','athome','prevcourses','wp','db','spreadsheet','drawpaint','macintosh','windows','unix','email','irc','bbs','browser','author','html','language','languages','hopes') {
    print DB "($key \"$in{$key}\")";
}
print DB ")\n";



# Adapted from cgi-lib.pl by S.E.Brenner@bioc.cam.ac.uk
# Copyright 1994 Steven E. Brenner
sub ReadParse {
  local (*in) = @_ if @_;
  local ($i, $key, $val);

  if ( $ENV{'REQUEST_METHOD'} eq "GET" ) {
    $in = $ENV{'QUERY_STRING'};
  } elsif ($ENV{'REQUEST_METHOD'} eq "POST") {
    read(STDIN,$in,$ENV{'CONTENT_LENGTH'});
  } else {
        # Added for command line debugging
        # Supply name/value form data as a command line argument
        # Format: name1=value1\&name2=value2\&...
        # (need to escape & for shell)
        # Find the first argument that's not a switch (-)
        $in = ( grep( !/^-/, @ARGV )) [0];
        $in =~ s/\\&/&/g;
  }

  @in = split(/&/,$in);

  foreach $i (0 .. $#in) {
    # Convert plus's to spaces
    $in[$i] =~ s/\+/ /g;

    # Split into key and value.
    ($key, $val) = split(/=/,$in[$i],2); # splits on the first =.

    # Convert %XX from hex numbers to alphanumeric
    $key =~ s/%(..)/pack("c",hex($1))/ge;
    $val =~ s/%(..)/pack("c",hex($1))/ge;

    # Associate key and value. \0 is the multiple separator
    $in{$key} .= "\0" if (defined($in{$key}));
    $in{$key} .= $val;
  }
  return length($in);
}
