httpd-cvs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Brian Behlendorf <br...@hyperreal.com>
Subject cvs commit: apache/src alloc.c alloc.h mod_cgi.c
Date Thu, 08 Aug 1996 07:21:19 GMT
brian       96/08/08 00:21:18

  Modified:    src       alloc.c alloc.h mod_cgi.c
  Log:
  Reviewed by:	Brian Behlendorf
  Submitted by:	Garey Smiley
  
  Removal of more special-cased EMX (OS/2) code, since those sections now work
  fine with OS/2.
  
  Revision  Changes    Path
  1.10      +0 -95     apache/src/alloc.c
  
  Index: alloc.c
  ===================================================================
  RCS file: /export/home/cvs/apache/src/alloc.c,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -C3 -r1.9 -r1.10
  *** alloc.c	1996/08/06 19:31:04	1.9
  --- alloc.c	1996/08/08 07:21:14	1.10
  ***************
  *** 1032,1129 ****
      }
    }
    
  - #ifdef __EMX__
  - int spawn_child_os2 (pool *p, void (*func)(void *), void *data,
  -          enum kill_conditions kill_how,
  -          FILE **pipe_in, FILE **pipe_out, char *buffer, int lenp)
  - {
  -   int pid;
  -   int in_fds[2];
  -   int out_fds[2];
  - 
  -   block_alarms();
  -   
  -   if (pipe_in && pipe (in_fds) < 0)
  -   {
  -       unblock_alarms();
  -       return 0;
  -   }
  -   
  -   if (pipe_out && pipe (out_fds) < 0) {
  -     if (pipe_in) {
  -       close (in_fds[0]); close (in_fds[1]);
  -     }
  -     unblock_alarms();
  -     return 0;
  -   }
  - 
  -   if ((pid = fork()) < 0) {
  -     if (pipe_in) {
  -       close (in_fds[0]); close (in_fds[1]);
  -     }
  -     if (pipe_out) {
  -       close (out_fds[0]); close (out_fds[1]);
  -     }
  -     unblock_alarms();
  -     return 0;
  -   }
  - 
  -   if (!pid) {
  -     int stdinpipe[2];
  -     /* Due to a limitation of EMX, inheriting socket handles is not
  -     allowed so we need to read the input and place it in a pipe and 
  -     then pass that handle instead of the socket. */
  -     
  -     if (lenp > 0) {
  -         pipe(stdinpipe);
  -         write(stdinpipe[1], buffer, lenp);
  -         close(stdinpipe[1]);
  -         in_fds[0] = dup(stdinpipe[0]);
  -         close(stdinpipe[0]);
  -     }
  -                                 
  -     /* Child process */
  -     
  -     if (pipe_out) {
  -       close (out_fds[0]);
  -       dup2 (out_fds[1], STDOUT_FILENO);
  -       close (out_fds[1]);
  -     }
  - 
  -     if (pipe_in) {
  -       close (in_fds[1]);
  -       dup2 (in_fds[0], STDIN_FILENO);
  -       close (in_fds[0]);
  -     }
  - 
  -     /* HP-UX SIGCHLD fix goes here, if someone will remind me what it is... */
  -     signal (SIGCHLD, SIG_DFL);    /* Was that it? */
  -     
  -     func (data);
  -     exit (0);            /* Should never get here... */
  -   }
  - 
  -   /* Parent process */
  - 
  -   note_subprocess (p, pid, kill_how);
  -   
  -   if (pipe_out) {
  -     close (out_fds[1]);
  -     /* Need binary mode set for OS/2. */
  -     *pipe_out = fdopen (out_fds[0], "rb");
  -     
  -     if (*pipe_out) note_cleanups_for_file (p, *pipe_out);
  -   }
  - 
  -   if (pipe_in) {
  -     close (in_fds[0]);
  -     /* Need binary mode set for OS/2. */
  -     *pipe_in = fdopen (in_fds[1], "wb");
  -     
  -     if (*pipe_in) note_cleanups_for_file (p, *pipe_in);
  -   }
  - 
  -   unblock_alarms();
  -   return pid;
  - }
  - #endif
  --- 1032,1034 ----
  
  
  
  1.9       +0 -5      apache/src/alloc.h
  
  Index: alloc.h
  ===================================================================
  RCS file: /export/home/cvs/apache/src/alloc.h,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -C3 -r1.8 -r1.9
  *** alloc.h	1996/08/06 19:31:05	1.8
  --- alloc.h	1996/08/08 07:21:15	1.9
  ***************
  *** 233,243 ****
                     FILE **pipe_err);
    #define spawn_child(p,f,v,k,in,out) spawn_child_err(p,f,v,k,in,out,NULL)
    
  - #ifdef __EMX__
  - int spawn_child_os2 (pool *, void (*)(void *), void *,
  -          enum kill_conditions, FILE **pipe_in, FILE **pipe_out, char *buffer, int lenp);
  - #endif
  - 
    /* magic numbers --- only one so far, min free bytes in a new pool block */
    
    #define BLOCK_MINFREE 8192     
  --- 233,238 ----
  
  
  
  1.14      +6 -26     apache/src/mod_cgi.c
  
  Index: mod_cgi.c
  ===================================================================
  RCS file: /export/home/cvs/apache/src/mod_cgi.c,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -C3 -r1.13 -r1.14
  *** mod_cgi.c	1996/08/06 19:31:06	1.13
  --- mod_cgi.c	1996/08/08 07:21:15	1.14
  ***************
  *** 388,422 ****
        cld.argv0 = argv0; cld.r = r; cld.nph = nph;
        cld.debug = conf->logname ? 1 : 0;
        
    #ifdef __EMX__
  !     if (should_client_block (r)) {
  ! 
  !         read_client_block (r, argsbuffer, HUGE_STRING_LEN);
  ! 
  !         if (!spawn_child_os2 (r->connection->pool, cgi_child, (void *)&cld,
  !                   nph ? just_wait : kill_after_timeout, 
  !                   &script_out, &script_in, argsbuffer, atoi(lenp))) { 
  !             log_reason ("couldn't spawn child process", r->filename, r);
  !             return SERVER_ERROR;
  !         }
  !     } else {
  !         if (!spawn_child (r->connection->pool, cgi_child, (void *)&cld,
  !                   nph ? just_wait : kill_after_timeout,
  !                   &script_out, &script_in)) {
  !             log_reason ("couldn't spawn child process", r->filename, r);
  !             return SERVER_ERROR;
  !         }
  !     }
  !     
    #else
  !     if (!spawn_child_err (r->connection->pool, cgi_child, (void *)&cld,
  ! 			  nph ? just_wait : kill_after_timeout, 
  ! 			  &script_out, nph ? NULL : &script_in,
  ! 			  &script_err)) {
            log_reason ("couldn't spawn child process", r->filename, r);
            return SERVER_ERROR;
        }
  - #endif
    
        /* Transfer any put/post args, CERN style...
         * Note that if a buggy script fails to read everything we throw
  --- 388,404 ----
        cld.argv0 = argv0; cld.r = r; cld.nph = nph;
        cld.debug = conf->logname ? 1 : 0;
        
  +     if (!spawn_child (r->connection->pool, cgi_child, (void *)&cld,
  + 		      nph ? just_wait : kill_after_timeout,
    #ifdef __EMX__
  ! 		      &script_out, &script_in, &script_err)) {
    #else
  !                       &script_out, nph ? NULL : &script_in,
  !                       &script_err)) {
  ! #endif
            log_reason ("couldn't spawn child process", r->filename, r);
            return SERVER_ERROR;
        }
    
        /* Transfer any put/post args, CERN style...
         * Note that if a buggy script fails to read everything we throw
  ***************
  *** 427,433 ****
         * spurious newline).
         */
        
  - #ifndef __EMX__
         if (should_client_block(r)) {
            void (*handler)();
    	int dbsize, len_read;
  --- 409,414 ----
  ***************
  *** 458,464 ****
    	
    	kill_timeout (r);
        }
  - #endif    
        
        pfclose (r->connection->pool, script_out);
        
  --- 439,444 ----
  
  
  

Mime
View raw message