]> diplodocus.org Git - nmh/commitdiff
More code converted to use argsplit().
authorKen Hornstein <kenh@pobox.com>
Fri, 1 Feb 2013 17:11:59 +0000 (12:11 -0500)
committerKen Hornstein <kenh@pobox.com>
Fri, 1 Feb 2013 17:11:59 +0000 (12:11 -0500)
sbr/ext_hook.c
sbr/refile.c
sbr/showfile.c

index e94083b337f73508fb343c9633ea832d67114e4d..a86e7a3f598ebb31b84513922f5ecd5bf1eadd6a 100644 (file)
@@ -16,7 +16,9 @@ ext_hook(char *hook_name, char *message_file_name_1, char *message_file_name_2)
     char       *hook;                  /* hook program from context */
     pid_t      pid;                    /* ID of child process */
     int                status;                 /* exit or other child process status */
-    char       *vec[4];                /* argument vector for child process */
+    char       **vec;                  /* argument vector for child process */
+    int                vecp;                   /* Vector index */
+    char       *program;               /* Name of program to execute */
 
     static  int        did_message = 0;        /* set if we've already output a message */
 
@@ -30,11 +32,11 @@ ext_hook(char *hook_name, char *message_file_name_1, char *message_file_name_2)
        break;
 
     case 0:
-       vec[0] = r1bindex(hook, '/');
-       vec[1] = message_file_name_1;
-       vec[2] = message_file_name_2;
-       vec[3] = (char *)0;
-       execvp(hook, vec);
+        vec = argsplit(hook, &program, &vecp);
+       vec[vecp++] = message_file_name_1;
+       vec[vecp++] = message_file_name_2;
+       vec[vecp++] = NULL;
+       execvp(program, vec);
        _exit(-1);
        /* NOTREACHED */
 
index fc2793c699dae5ee05836982305ff4f2ed8f1516..f0fc76e58feb0e8b50a88976b3dca6e14e7d0b41 100644 (file)
@@ -15,15 +15,16 @@ int
 refile (char **arg, char *file)
 {
     pid_t pid;
-    register int vecp;
-    char *vec[MAXARGS];
+    int vecp;
+    char **vec;
+    char *program;
 
-    vecp = 0;
-    vec[vecp++] = r1bindex (fileproc, '/');
-    vec[vecp++] = "-nolink";   /* override bad .mh_profile defaults */
-    vec[vecp++] = "-nopreserve";
-    vec[vecp++] = "-file";
-    vec[vecp++] = file;
+    vec = argsplit(fileproc, &program, &vecp);
+
+    vec[vecp++] = getcpy("-nolink");   /* override bad .mh_profile defaults */
+    vec[vecp++] = getcpy("-nopreserve");
+    vec[vecp++] = getcpy("-file");
+    vec[vecp++] = getcpy(file);
 
     if (arg) {
        while (*arg)
@@ -40,12 +41,13 @@ refile (char **arg, char *file)
            return -1;
 
        case 0: 
-           execvp (fileproc, vec);
+           execvp (program, vec);
            fprintf (stderr, "unable to exec ");
            perror (fileproc);
            _exit (-1);
 
        default: 
+           arglist_free(program, vec);
            return (pidwait (pid, -1));
     }
 }
index 59ae7952b2b6f2cc61858b7231d9962492691845..c7223c21398efd1d9020f3dc6d0f9a77ada9efae 100644 (file)
@@ -15,7 +15,7 @@ showfile (char **arg, char *file)
 {
     pid_t pid;
     int isdraft, vecp;
-    char *vec[MAXARGS];
+    char **vec, *program;
 
     context_save();    /* save the context file */
     fflush(stdout);
@@ -36,8 +36,7 @@ showfile (char **arg, char *file)
 
     case 0:
        /* child */
-       vecp = 0;
-       vec[vecp++] = r1bindex (lproc, '/');
+       vec = argsplit(lproc, &program, &vecp);
        isdraft = 1;
        if (arg) {
            while (*arg) {
@@ -53,7 +52,7 @@ showfile (char **arg, char *file)
        }
        vec[vecp] = NULL;
 
-       execvp (lproc, vec);
+       execvp (program, vec);
        fprintf (stderr, "unable to exec ");
        perror (lproc);
        _exit (-1);