]> git.ipfire.org Git - thirdparty/apache/httpd.git/commitdiff
get rotatelogs to function properly on TPF
authorGreg Ames <gregames@apache.org>
Wed, 26 Dec 2001 17:14:06 +0000 (17:14 +0000)
committerGreg Ames <gregames@apache.org>
Wed, 26 Dec 2001 17:14:06 +0000 (17:14 +0000)
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

src/os/tpf/os.c
src/support/rotatelogs.c

index 79db90b79c9e57616121f028ebc11098deed1917..c951aa6b9f6aa1c391b0a03ed885245dbfe7a974 100644 (file)
@@ -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) {
index ba74585a828b94fcc59ce7fcf3bba1246b1c23d3..944d14d7a5e62bdcd9271e6b1a3bdbd2e001b015 100644 (file)
@@ -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 <logfile> <rotation time in seconds> "