CGI/1.1 draft

rst@ai.mit.edu (Robert S. Thau)
Errors-To: listmaster@www0.cern.ch
Date: Tue, 1 Mar 1994 22:43:57 --100
Message-id: <9403012141.AA09475@volterra>
Errors-To: listmaster@www0.cern.ch
Reply-To: rst@ai.mit.edu
Originator: www-talk@info.cern.ch
Sender: www-talk@www0.cern.ch
Precedence: bulk
From: rst@ai.mit.edu (Robert S. Thau)
To: Multiple recipients of list <www-talk@www0.cern.ch>
Subject: CGI/1.1 draft
X-Listprocessor-Version: 6.0c -- ListProcessor by Anastasios Kotsikonas
Content-Length: 2110
   Date: Tue, 1 Mar 1994 21:55:42 --100
   From: luotonen@ptsun00.cern.ch (Ari Luotonen)


   > I like the idea of a data root directory environment variable.  At 
   > user request I have already implemented this as a non-standard feature
   > in GN. 

   Then what would I do?  cern_httpd doesn't have a single document
   root, and there is no reason why it should.  I would like to see
   DOCUMENT_ROOT as a server-specific feature rather than dictated
   by the spec.

   -- Cheers, Ari --


Hmmm... most of my scripts which manipulate external files store those
files in some known location relative to the script itself (e.g., the
seminar-schedule printer used by several links from

  http://www.ai.mit.edu/events/events-list.html

which works off email archives which are stored in the same directory as
the script).  These scripts would be perfectly happy with a variable which
contained their own (translated) pathname; they could then find the files
they needed relative to that.

In fact, that script presently begins with the lines...

  #! /usr/local/bin/perl

  do '/com/doc/web-support/cgi-hacks.pl'; # Perl CGI assist routines...
  chdir '/com/doc/web/events/seminars';   # Directory containing this script...
  ...

(my DOCUMENT_ROOT being /com/doc/web), which is awkward because I'd have to
change this line if I ever wanted to install the script and its support
files as a package somewhere else.  If a TRANSLATED_SCRIPT_NAME variable
were available, I could do this instead:

  #! /usr/local/bin/perl

  do '/com/doc/web-support/cgi-hacks.pl';
  ($script_dir = $ENV{'TRANSLATED_SCRIPT_NAME'}) =~ s+/[^/]*$++;
  chdir $script_dir;
  ...

(where the gubbish on the second line strips the last path component off of
the TRANSLATED_SCRIPT_NAME to get the enclosing directory); this would work
no matter where the package lived.

This variable would at least have a sensible definition no matter how the
server actually does translations (in particular, whether the notion of a
single DOCUMENT_ROOT makes sense or not).  However, some scripts may need
something more flexible.  Comments?

rst