Return-Path: Delivered-To: apmail-httpd-dev-archive@httpd.apache.org Received: (qmail 14711 invoked by uid 500); 21 Dec 2001 17:28:01 -0000 Mailing-List: contact dev-help@httpd.apache.org; run by ezmlm Precedence: bulk Reply-To: dev@httpd.apache.org list-help: list-unsubscribe: list-post: Delivered-To: mailing list dev@httpd.apache.org Received: (qmail 14698 invoked from network); 21 Dec 2001 17:28:01 -0000 Message-ID: <3C2370B3.F747488F@us.ibm.com> Date: Fri, 21 Dec 2001 10:26:11 -0700 From: David McCreedy X-Mailer: Mozilla 4.72 [en] (Windows NT 5.0; U) X-Accept-Language: en MIME-Version: 1.0 To: dev@httpd.apache.org Subject: [PATCH] TPF changes for rotatelogs Content-Type: multipart/mixed; boundary="------------B231F23F46CBBAD3140EA9BA" X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N This is a multi-part message in MIME format. --------------B231F23F46CBBAD3140EA9BA Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit These two patches allow rotatelogs to function properly on TPF. They are TPF-specific and will not affect other platforms. The os/tpf/os.c change is required for arguments to be properly passed to rotatelogs (or any other piped log program). The support/rotatlogs.c change is due to a quirk in TPF signal handling. Please let me know if you have any questions or concerns. Thank you, David McCreedy McCreedy@us.ibm.com --------------B231F23F46CBBAD3140EA9BA Content-Type: text/plain; charset=us-ascii; name="diff-rotatelogs" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="diff-rotatelogs" diff -ru3 before/src/os/tpf/os.c after/src/os/tpf/os.c --- before/src/os/tpf/os.c Thu Dec 20 17:05:19 2001 +++ after/src/os/tpf/os.c Thu Dec 20 17:11:41 2001 @@ -203,7 +203,10 @@ 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 @@ 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 -ru3 before/src/support/rotatelogs.c after/src/support/rotatelogs.c --- before/src/support/rotatelogs.c Thu Dec 20 17:05:22 2001 +++ after/src/support/rotatelogs.c Thu Dec 20 17:05:33 2001 @@ -28,6 +28,12 @@ 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 " --------------B231F23F46CBBAD3140EA9BA--