From: Greg Ames Date: Wed, 26 Dec 2001 17:14:06 +0000 (+0000) Subject: get rotatelogs to function properly on TPF X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=15babb8f17522b2523c40ed76f9b41b952a4602f;p=thirdparty%2Fapache%2Fhttpd.git get rotatelogs to function properly on TPF Submitted by: David McCreedy Reviewed by: Greg Ames git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/1.3.x@92608 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/src/os/tpf/os.c b/src/os/tpf/os.c index 79db90b79c9..c951aa6b9f6 100644 --- a/src/os/tpf/os.c +++ b/src/os/tpf/os.c @@ -203,7 +203,10 @@ int ap_tpf_spawn_child(pool *p, int (*func) (void *, child_info *), array_header *env_arr = ap_table_elts ((array_header *) cld->subprocess_env); table_entry *elts = (table_entry *) env_arr->elts; #ifdef TPF_FORK_EXTENDED - char *args[2]; +#define WHITE " \t\n" +#define MAXARGC 49 + char *arguments; + char *args[MAXARGC + 1]; char **envp = NULL; pool *subpool = NULL; @@ -267,8 +270,15 @@ int ap_tpf_spawn_child(pool *p, int (*func) (void *, child_info *), fork_input.parm_data = NULL; #ifdef TPF_FORK_EXTENDED - args[0] = cld->filename; - args[1] = NULL; + /* use a copy of cld->filename because strtok is destructive */ + arguments = ap_pstrdup(p, cld->filename); + args[0] = strtok(arguments, WHITE); + args[MAXARGC + 1] = NULL; + + for (i = 0; i < MAXARGC && args[i] ; i++) { + args[i + 1] = strtok(NULL, WHITE); + } + if ((pid = tpf_fork(&fork_input, (const char **)args, (const char **)envp)) < 0) { diff --git a/src/support/rotatelogs.c b/src/support/rotatelogs.c index ba74585a828..944d14d7a5e 100644 --- a/src/support/rotatelogs.c +++ b/src/support/rotatelogs.c @@ -28,6 +28,12 @@ int main (int argc, char **argv) time_t now; char *szLogRoot; +#ifdef TPF + /* set up signal handling to avoid default OPR-I007777 dump */ + signal(SIGPIPE, exit); + signal(SIGTERM, exit); +#endif + if (argc < 3) { fprintf(stderr, "Usage: %s "