You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by be...@hyperreal.org on 1998/09/19 21:15:45 UTC

cvs commit: apache-2.0/apache-nspr/modules/standard mod_cgi.c

ben         98/09/19 12:15:45

  Modified:    apache-nspr Configuration.ben HOWTOBUILD
               apache-nspr/include util_script.h
               apache-nspr/main util.c util_script.c
               apache-nspr/modules/standard mod_cgi.c
  Log:
  Use new NSPR chdir API. Revive ap_chdir_file().
  
  Revision  Changes    Path
  1.2       +8 -2      apache-2.0/apache-nspr/Configuration.ben
  
  Index: Configuration.ben
  ===================================================================
  RCS file: /export/home/cvs/apache-2.0/apache-nspr/Configuration.ben,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Configuration.ben	1998/09/05 16:18:55	1.1
  +++ Configuration.ben	1998/09/19 19:15:42	1.2
  @@ -1,7 +1,13 @@
  +# WTF? Those crazy Mozilla guys seem to have hardwired it? Why?
  +#NSPR=/home/ben/work/mozilla/dist/FreeBSD2.2.7_DBG.OBJ
  +#NSPR=/home/ben/work/apache-2.0/dist/FreeBSD2.2.7_DBG.OBJ
  +
   EXTRA_CFLAGS=-Wall -Wshadow -Wmissing-prototypes -pipe -fno-common -DNSPR
  -EXTRA_LDFLAGS=-g -L/home/ben/work/apache-2.0/dist/FreeBSD2.2.7_DBG.OBJ/lib
  +EXTRA_LDFLAGS=-g -L/home/ben/work/mozilla/dist/FreeBSD2.2.7_DBG.OBJ/lib -R/home/ben/work/mozilla/dist/FreeBSD2.2.7_DBG.OBJ/lib
  +#EXTRA_LDFLAGS=-g -L/home/ben/work/apache-2.0/dist/FreeBSD2.2.7_DBG.OBJ/lib
   EXTRA_LIBS=-lnspr21
  -EXTRA_INCLUDES=-I/home/ben/work/apache-2.0/dist/FreeBSD2.2.7_DBG.OBJ/include
  +EXTRA_INCLUDES=-I/home/ben/work/mozilla/dist/FreeBSD2.2.7_DBG.OBJ/include
  +#EXTRA_INCLUDES=-I/home/ben/work/apache-2.0/dist/FreeBSD2.2.7_DBG.OBJ/include
   CC=gcc
   OPTIM=-O2 -g
   #RANLIB=
  
  
  
  1.2       +10 -3     apache-2.0/apache-nspr/HOWTOBUILD
  
  Index: HOWTOBUILD
  ===================================================================
  RCS file: /export/home/cvs/apache-2.0/apache-nspr/HOWTOBUILD,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- HOWTOBUILD	1998/09/05 16:18:56	1.1
  +++ HOWTOBUILD	1998/09/19 19:15:42	1.2
  @@ -1,11 +1,18 @@
   This is a temporary note for developers during the 2.0 development process.
   
  +N.B.: The version of NSPR included in Apache 2.0 is no longer sufficient. Use
  +the latest version from Mozilla.
  +
   First, build nspr:
  +
  +cvs -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot co mozilla/nsprpub
  +
  +(I've forgotten the password - see http://www.mozilla.org).
   
  -cd .../apache-2.0/pubnspr
  -make (or gmake)
  +cd mozilla/nsprpub
  +make (or gmake) (use -DBUILD_OPT=1 to build optimised)
   
  -This produces a directory .../apache-2.0/dist/<platform>_DBG.OBJ, containing
  +This produces a directory .../mozilla/dist/<platform>_DBG.OBJ, containing
   include and lib. Tweak .../apache-2.0/apache-nspr/Configuration to reflect this
   path (use full pathnames). Note that Configuration.tmpl is currently bullshit -
   use one of Configuration.ben or Configuration.dean as a basis (note that Dean
  
  
  
  1.3       +1 -0      apache-2.0/apache-nspr/include/util_script.h
  
  Index: util_script.h
  ===================================================================
  RCS file: /export/home/cvs/apache-2.0/apache-nspr/include/util_script.h,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- util_script.h	1998/06/30 08:57:06	1.2
  +++ util_script.h	1998/09/19 19:15:43	1.3
  @@ -80,6 +80,7 @@
   API_EXPORT(void) ap_send_size(size_t size, request_rec *r);
   API_EXPORT(PRProcess *) ap_spawn_cgi(request_rec *r, char *argv0, char **env,
                             int shellcmd, const PRProcessAttr *);
  +API_EXPORT(int) ap_chdir_file_attr(PRProcessAttr *attr, const char *file);
   
   #ifdef __cplusplus
   }
  
  
  
  1.3       +1 -3      apache-2.0/apache-nspr/main/util.c
  
  Index: util.c
  ===================================================================
  RCS file: /export/home/cvs/apache-2.0/apache-nspr/main/util.c,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- util.c	1998/06/30 08:57:08	1.2
  +++ util.c	1998/09/19 19:15:44	1.3
  @@ -72,6 +72,7 @@
   #include "http_conf_globals.h"	/* for user_id & group_id */
   #include "http_log.h"
   
  +#include <unistd.h>
   #include <prsystem.h>
   
   /* A bunch of functions in util.c scan strings looking for certain characters.
  @@ -461,8 +462,6 @@
   
   API_EXPORT(void) ap_chdir_file(const char *file)
   {
  -    /* XXX: ap_chdir_file needs to be rethought for NSPR */
  -#if 0
       const char *x;
       char buf[HUGE_STRING_LEN];
   
  @@ -477,7 +476,6 @@
       }
       /* XXX: well, this is a silly function, no method of reporting an
        * error... ah well. */
  -#endif
   }
   
   API_EXPORT(char *) ap_getword_nc(pool *atrans, char **line, char stop)
  
  
  
  1.3       +17 -0     apache-2.0/apache-nspr/main/util_script.c
  
  Index: util_script.c
  ===================================================================
  RCS file: /export/home/cvs/apache-2.0/apache-nspr/main/util_script.c,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- util_script.c	1998/06/30 08:57:08	1.2
  +++ util_script.c	1998/09/19 19:15:44	1.3
  @@ -627,3 +627,20 @@
       }
       return (pid);
   }
  +
  +API_EXPORT(int) ap_chdir_file_attr(PRProcessAttr *attr, const char *file)
  +{
  +    const char *x;
  +    char buf[HUGE_STRING_LEN];
  +
  +    x = strrchr(file, '/');
  +    if (x == NULL) {
  +	PR_ProcessAttrSetCurrentDirectory(attr, file);
  +    }
  +    else if (x - file < sizeof(buf) - 1) {
  +	memcpy(buf, file, x - file);
  +	buf[x - file] = '\0';
  +	PR_ProcessAttrSetCurrentDirectory(attr, buf);
  +    }
  +    return 1;  /* success */
  +}
  
  
  
  1.3       +5 -4      apache-2.0/apache-nspr/modules/standard/mod_cgi.c
  
  Index: mod_cgi.c
  ===================================================================
  RCS file: /export/home/cvs/apache-2.0/apache-nspr/modules/standard/mod_cgi.c,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- mod_cgi.c	1998/06/30 08:57:09	1.2
  +++ mod_cgi.c	1998/09/19 19:15:45	1.3
  @@ -362,10 +362,11 @@
       }
   
       attr = PR_NewProcessAttr();
  -    PR_SetStdioRedirect(attr, PR_StandardInput, child_in);
  -    PR_SetStdioRedirect(attr, PR_StandardOutput, child_out);
  -    PR_SetStdioRedirect(attr, PR_StandardError, r->server->error_log);
  -    /* XXX: this is where we would tell NSPR to do a chdir() in the child */
  +    PR_ProcessAttrSetStdioRedirect(attr, PR_StandardInput, child_in);
  +    PR_ProcessAttrSetStdioRedirect(attr, PR_StandardOutput, child_out);
  +    PR_ProcessAttrSetStdioRedirect(attr, PR_StandardError,
  +				   r->server->error_log);
  +    ap_chdir_file_attr(attr, r->filename);
   
       pid = ap_spawn_cgi(r, argv0, env, 0, attr);
       if (pid == NULL) {