ben 98/05/18 13:41:33
Modified: src/include alloc.h buff.h
src/main alloc.c http_log.c
src/modules/standard mod_include.c
Log:
Fix spawning stuff for Unix.
Revision Changes Path
1.58 +7 -4 apache-1.3/src/include/alloc.h
Index: alloc.h
===================================================================
RCS file: /export/home/cvs/apache-1.3/src/include/alloc.h,v
retrieving revision 1.57
retrieving revision 1.58
diff -u -r1.57 -r1.58
--- alloc.h 1998/05/16 16:34:46 1.57
+++ alloc.h 1998/05/18 20:41:30 1.58
@@ -301,10 +301,13 @@
kill_only_once /* send SIGTERM and then wait */
};
-API_EXPORT(void) ap_note_subprocess(pool *a, int pid, enum kill_conditions
how);
-API_EXPORT(int) ap_spawn_child_err(pool *, int (*)(void *), void *,
- enum kill_conditions, FILE **pipe_in, FILE **pipe_out,
- FILE **pipe_err);
+typedef struct child_info child_info;
+API_EXPORT(void) ap_note_subprocess(pool *a, int pid,
+ enum kill_conditions how);
+API_EXPORT(int) ap_spawn_child_err(pool *, int (*)(void *, child_info *),
+ void *, enum kill_conditions,
+ FILE **pipe_in, FILE **pipe_out,
+ FILE **pipe_err);
#define spawn_child(p,f,v,k,in,out) ap_spawn_child_err(p,f,v,k,in,out,NULL)
/* magic numbers --- min free bytes to consider a free pool block useable,
1.41 +2 -2 apache-1.3/src/include/buff.h
Index: buff.h
===================================================================
RCS file: /export/home/cvs/apache-1.3/src/include/buff.h,v
retrieving revision 1.40
retrieving revision 1.41
diff -u -r1.40 -r1.41
--- buff.h 1998/05/16 16:34:46 1.40
+++ buff.h 1998/05/18 20:41:30 1.41
@@ -197,7 +197,7 @@
?os_toascii[(unsigned char)c]:(c), 0))
#endif /*CHARSET_EBCDIC*/
-typedef struct {
+struct _child_info {
#ifdef WIN32
/*
* These handles are used by ap_call_exec to call
@@ -207,7 +207,7 @@
HANDLE hPipeOutputWrite;
HANDLE hPipeErrorWrite;
#endif
-} child_info;
+};
API_EXPORT(int) ap_spawn_child_err_buff(pool *, int (*)(void *, child_info
*), void *,
enum kill_conditions, BUFF **pipe_in,
BUFF **pipe_out,
BUFF **pipe_err);
1.93 +8 -7 apache-1.3/src/main/alloc.c
Index: alloc.c
===================================================================
RCS file: /export/home/cvs/apache-1.3/src/main/alloc.c,v
retrieving revision 1.92
retrieving revision 1.93
diff -u -r1.92 -r1.93
--- alloc.c 1998/05/16 16:34:47 1.92
+++ alloc.c 1998/05/18 20:41:31 1.93
@@ -1806,8 +1806,8 @@
#define BINMODE
#endif
-static int spawn_child_err_core(pool *p, int (*func) (void *), void *data,
- enum kill_conditions kill_how,
+static int spawn_child_err_core(pool *p, int (*func) (void *, child_info *),
+ void *data,enum kill_conditions kill_how,
int *pipe_in, int *pipe_out, int *pipe_err)
{
int pid;
@@ -1876,7 +1876,7 @@
close(err_fds[1]);
}
- pid = (*func) (data);
+ pid = (*func) (data, NULL);
if (pid == -1) pid = 0; /* map Win32 error code onto Unix default
*/
if (!pid) {
@@ -1965,7 +1965,7 @@
/* HP-UX SIGCHLD fix goes here, if someone will remind me what it is...
*/
signal(SIGCHLD, SIG_DFL); /* Was that it? */
- func(data);
+ func(data, NULL);
exit(1); /* Should only get here if the exec in func()
failed */
}
@@ -1993,9 +1993,10 @@
}
-API_EXPORT(int) ap_spawn_child_err(pool *p, int (*func) (void *), void *data,
- enum kill_conditions kill_how,
- FILE **pipe_in, FILE **pipe_out, FILE **pipe_err)
+API_EXPORT(int) ap_spawn_child_err(pool *p, int (*func) (void *, child_info
*),
+ void *data, enum kill_conditions kill_how,
+ FILE **pipe_in, FILE **pipe_out,
+ FILE **pipe_err)
{
int fd_in, fd_out, fd_err;
int pid, save_errno;
1.58 +1 -1 apache-1.3/src/main/http_log.c
Index: http_log.c
===================================================================
RCS file: /export/home/cvs/apache-1.3/src/main/http_log.c,v
retrieving revision 1.57
retrieving revision 1.58
diff -u -r1.57 -r1.58
--- http_log.c 1998/05/16 16:34:48 1.57
+++ http_log.c 1998/05/18 20:41:32 1.58
@@ -154,7 +154,7 @@
{NULL, -1},
};
-static int error_log_child (void *cmd)
+static int error_log_child (void *cmd, child_info *pinfo)
{
/* Child process code for 'ErrorLog "|..."';
* may want a common framework for this, since I expect it will
1.87 +4 -3 apache-1.3/src/modules/standard/mod_include.c
Index: mod_include.c
===================================================================
RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_include.c,v
retrieving revision 1.86
retrieving revision 1.87
diff -u -r1.86 -r1.87
--- mod_include.c 1998/05/16 16:34:50 1.86
+++ mod_include.c 1998/05/18 20:41:33 1.87
@@ -1,4 +1,4 @@
-/* ====================================================================
+ /* ====================================================================
* Copyright (c) 1995-1998 The Apache Group. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -735,7 +735,7 @@
char *s;
} include_cmd_arg;
-static int include_cmd_child(void *arg)
+static int include_cmd_child(void *arg, child_info *pinfo)
{
request_rec *r = ((include_cmd_arg *) arg)->r;
char *s = ((include_cmd_arg *) arg)->s;
@@ -786,7 +786,8 @@
#endif
ap_cleanup_for_exec();
/* set shellcmd flag to pass arg to SHELL_PATH */
- child_pid = ap_call_exec(r, s, ap_create_environment(r->pool, env), 1);
+ child_pid = ap_call_exec(r, NULL, s, ap_create_environment(r->pool, env),
+ 1);
#ifdef WIN32
return (child_pid);
#else