]> diplodocus.org Git - nmh/commitdiff
More conversion to argsplit().
authorKen Hornstein <kenh@pobox.com>
Thu, 7 Feb 2013 19:34:12 +0000 (14:34 -0500)
committerKen Hornstein <kenh@pobox.com>
Thu, 7 Feb 2013 19:34:12 +0000 (14:34 -0500)
h/prototypes.h
uip/send.c
uip/sendsbr.c
uip/viamail.c
uip/whatnowsbr.c

index 376968ab1bd522516897e6088eec1ef472918282..3f2caee8253cc4a4c472cf5bdff9e6c56f5c48ba 100644 (file)
@@ -172,7 +172,7 @@ int sc_length(void);
 int sc_width(void);
 int build_form (char *, char *, int *, char *, char *, char *, char *,
                char *, char *);
 int sc_width(void);
 int build_form (char *, char *, int *, char *, char *, char *, char *,
                char *, char *);
-int sendsbr (char **, int, char *, struct stat *, int, char *, int);
+int sendsbr (char **, int, char *, char *, struct stat *, int, char *, int);
 int SOprintf (char *, ...);
 int what_now (char *, int, int, char *, char *,
        int, struct msgs *, char *, int, char *, int);
 int SOprintf (char *, ...);
 int what_now (char *, int, int, char *, char *,
        int, struct msgs *, char *, int, char *, int);
index 1bfd0608cf0ea920d4260789f6f4f25697b64502..7c0827856e65b43e1fabcfdba3bc478a1a452433 100644 (file)
@@ -114,12 +114,12 @@ extern char *distfile;
 int
 main (int argc, char **argv)
 {
 int
 main (int argc, char **argv)
 {
-    int msgp = 0, distsw = 0, vecp = 1;
+    int msgp = 0, distsw = 0, vecp;
     int isdf = 0, mime = 0;
     int msgnum, status;
     char *cp, *dfolder = NULL, *maildir = NULL;
     int isdf = 0, mime = 0;
     int msgnum, status;
     char *cp, *dfolder = NULL, *maildir = NULL;
-    char buf[BUFSIZ], **ap, **argp, **arguments;
-    char *msgs[MAXARGS], *vec[MAXARGS];
+    char buf[BUFSIZ], **ap, **argp, **arguments, *program;
+    char *msgs[MAXARGS], **vec;
     struct msgs *mp;
     struct stat st;
     char *attach = NMH_ATTACH_HEADER;  /* header field name for attachments */
     struct msgs *mp;
     struct stat st;
     char *attach = NMH_ATTACH_HEADER;  /* header field name for attachments */
@@ -136,6 +136,8 @@ main (int argc, char **argv)
     arguments = getarguments (invo_name, argc, argv, 1);
     argp = arguments;
 
     arguments = getarguments (invo_name, argc, argv, 1);
     argp = arguments;
 
+    vec = argsplit(postproc, &program, &vecp);
+
     vec[vecp++] = "-library";
     vec[vecp++] = getcpy (m_maildir (""));
 
     vec[vecp++] = "-library";
     vec[vecp++] = getcpy (m_maildir (""));
 
@@ -443,11 +445,10 @@ go_to_it:
        push ();
 
     status = 0;
        push ();
 
     status = 0;
-    vec[0] = r1bindex (postproc, '/');
     closefds (3);
 
     for (msgnum = 0; msgnum < msgp; msgnum++) {
     closefds (3);
 
     for (msgnum = 0; msgnum < msgp; msgnum++) {
-       switch (sendsbr (vec, vecp, msgs[msgnum], &st, 1, attach,
+       switch (sendsbr (vec, vecp, program, msgs[msgnum], &st, 1, attach,
                         attachformat)) {
            case DONE: 
                done (++status);
                         attachformat)) {
            case DONE: 
                done (++status);
index 3bc3df15531c88da2069b67da8a17ec1d264d532..e3a8195f01ed10a189b384fefed794a73f98d173 100644 (file)
@@ -46,7 +46,7 @@ static        FILE    *composition_file;                      /* composition file pointer */
 /*
  * external prototypes
  */
 /*
  * external prototypes
  */
-int sendsbr (char **, int, char *, struct stat *, int, char *, int);
+int sendsbr (char **, int, char *, char *, struct stat *, int, char *, int);
 char *getusername (void);
 
 /*
 char *getusername (void);
 
 /*
@@ -57,8 +57,8 @@ static void alert (char *, int);
 static int tmp_fd (void);
 static void anno (int, struct stat *);
 static void annoaux (int);
 static int tmp_fd (void);
 static void anno (int, struct stat *);
 static void annoaux (int);
-static int splitmsg (char **, int, char *, struct stat *, int);
-static int sendaux (char **, int, char *, struct stat *);
+static int splitmsg (char **, int, char *, char *, struct stat *, int);
+static int sendaux (char **, int, char *, char *, struct stat *);
 
 static int     attach(char *, char *, int);
 static void    clean_up_temporary_files(void);
 
 static int     attach(char *, char *, int);
 static void    clean_up_temporary_files(void);
@@ -71,7 +71,8 @@ static        void    make_mime_composition_file_entry(char *, int, char *);
  */
 
 int
  */
 
 int
-sendsbr (char **vec, int vecp, char *drft, struct stat *st, int rename_drft, char *attachment_header_field_name, int attachformat)
+sendsbr (char **vec, int vecp, char *program, char *drft, struct stat *st,
+         int rename_drft, char *attachment_header_field_name, int attachformat)
 {
     int status;
     char buffer[BUFSIZ], file[BUFSIZ];
 {
     int status;
     char buffer[BUFSIZ], file[BUFSIZ];
@@ -132,9 +133,9 @@ sendsbr (char **vec, int vecp, char *drft, struct stat *st, int rename_drft, cha
         */
        if (splitsw >= 0 && !distfile && stat (drft, &sts) != NOTOK
                && sts.st_size >= CPERMSG) {
         */
        if (splitsw >= 0 && !distfile && stat (drft, &sts) != NOTOK
                && sts.st_size >= CPERMSG) {
-           status = splitmsg (vec, vecp, drft, st, splitsw) ? NOTOK : OK;
+           status = splitmsg (vec, vecp, program, drft, st, splitsw) ? NOTOK : OK;
        } else {
        } else {
-           status = sendaux (vec, vecp, drft, st) ? NOTOK : OK;
+           status = sendaux (vec, vecp, program, drft, st) ? NOTOK : OK;
        }
 
        /* rename the original draft */
        }
 
        /* rename the original draft */
@@ -582,7 +583,8 @@ make_mime_composition_file_entry(char *file_name, int attachformat,
  */
 
 static int
  */
 
 static int
-splitmsg (char **vec, int vecp, char *drft, struct stat *st, int delay)
+splitmsg (char **vec, int vecp, char *program, char *drft,
+         struct stat *st, int delay)
 {
     int        compnum, nparts, partno, state, status;
     long pos, start;
 {
     int        compnum, nparts, partno, state, status;
     long pos, start;
@@ -698,7 +700,7 @@ splitmsg (char **vec, int vecp, char *drft, struct stat *st, int delay)
            free (dp);
 
        fclose (in);
            free (dp);
 
        fclose (in);
-       return sendaux (vec, vecp, drft, st);
+       return sendaux (vec, vecp, program, drft, st);
     }
 
     if (!pushsw) {
     }
 
     if (!pushsw) {
@@ -788,7 +790,7 @@ splitmsg (char **vec, int vecp, char *drft, struct stat *st, int delay)
        }
 
        snprintf (partnum, sizeof(partnum), "%d", partno);
        }
 
        snprintf (partnum, sizeof(partnum), "%d", partno);
-       status = sendaux (vec, vecp, tmpdrf, st);
+       status = sendaux (vec, vecp, program, tmpdrf, st);
        unlink (tmpdrf);
        if (status != OK)
            break;
        unlink (tmpdrf);
        if (status != OK)
            break;
@@ -811,11 +813,11 @@ splitmsg (char **vec, int vecp, char *drft, struct stat *st, int delay)
 
 /*
  * Annotate original message, and
 
 /*
  * Annotate original message, and
- * call `postproc' to send message.
+ * call `postproc' (which is passed down in "program") to send message.
  */
 
 static int
  */
 
 static int
-sendaux (char **vec, int vecp, char *drft, struct stat *st)
+sendaux (char **vec, int vecp, char *program, char *drft, struct stat *st)
 {
     pid_t child_id;
     int i, status, fd, fd2;
 {
     pid_t child_id;
     int i, status, fd, fd2;
@@ -859,7 +861,7 @@ sendaux (char **vec, int vecp, char *drft, struct stat *st)
            dup2 (fd, fileno (stderr));
            close (fd);
        }
            dup2 (fd, fileno (stderr));
            close (fd);
        }
-       execvp (postproc, vec);
+       execvp (program, vec);
        fprintf (stderr, "unable to exec ");
        perror (postproc);
        _exit (-1);
        fprintf (stderr, "unable to exec ");
        perror (postproc);
        _exit (-1);
index 82c7db583386c23fef8ebeba4528bd18ab904556..37514d5af39125025c8fa78fbeea7a9e8217d6fe 100644 (file)
@@ -183,9 +183,9 @@ static int
 via_mail (char *mailsw, char *subjsw, char *parmsw, char *descsw,
           char *cmntsw, int delay, char *fromsw)
 {
 via_mail (char *mailsw, char *subjsw, char *parmsw, char *descsw,
           char *cmntsw, int delay, char *fromsw)
 {
-    int        status, vecp = 1;
-    char tmpfil[BUFSIZ];
-    char *vec[MAXARGS];
+    int        status, vecp;
+    char tmpfil[BUFSIZ], *program;
+    char **vec;
     struct stat st;
     FILE *fp;
     char *tfile = NULL;
     struct stat st;
     FILE *fp;
     char *tfile = NULL;
@@ -240,11 +240,12 @@ via_mail (char *mailsw, char *subjsw, char *parmsw, char *descsw,
        splitsw = delay;
 
     status = 0;
        splitsw = delay;
 
     status = 0;
-    vec[0] = r1bindex (postproc, '/');
+
+    vec = argsplit(postproc, &program, &vecp);
     if (verbsw)
        vec[vecp++] = "-verbose";
 
     if (verbsw)
        vec[vecp++] = "-verbose";
 
-    switch (sendsbr (vec, vecp, tmpfil, &st, 0, (char *)0, 0)) {
+    switch (sendsbr (vec, vecp, program, tmpfil, &st, 0, (char *)0, 0)) {
        case DONE:
        case NOTOK:
            status++;
        case DONE:
        case NOTOK:
            status++;
index 90a2cf2e26cf3b1c3b7f2f22e573cd9d2ce10a35..712ea7bb15631e0c6123bf9bcb38abf2249697b2 100644 (file)
@@ -1063,8 +1063,8 @@ static void
 sendit (char *sp, char **arg, char *file, int pushed)
 {
     int        vecp, n = 1;
 sendit (char *sp, char **arg, char *file, int pushed)
 {
     int        vecp, n = 1;
-    char *cp, buf[BUFSIZ], **argp;
-    char **arguments, *vec[MAXARGS];
+    char *cp, buf[BUFSIZ], **argp, *program;
+    char **arguments, *savearg[MAXARGS], **vec;
     struct stat st;
     char       *attach = NMH_ATTACH_HEADER;/* attachment header field name */
     int                attachformat = 1;       /* mhbuild format specifier for
     struct stat st;
     char       *attach = NMH_ATTACH_HEADER;/* attachment header field name */
     int                attachformat = 1;       /* mhbuild format specifier for
@@ -1076,17 +1076,17 @@ sendit (char *sp, char **arg, char *file, int pushed)
 
     /*
      * Make sure these are defined.  In particular, we need
 
     /*
      * Make sure these are defined.  In particular, we need
-     * vec[1] to be NULL, in case "arg" is NULL below.  It
-     * doesn't matter what is the value of vec[0], but we
+     * savearg[1] to be NULL, in case "arg" is NULL below.  It
+     * doesn't matter what is the value of savearg[0], but we
      * set it to NULL, to help catch "off-by-one" errors.
      */
      * set it to NULL, to help catch "off-by-one" errors.
      */
-    vec[0] = NULL;
-    vec[1] = NULL;
+    savearg[0] = NULL;
+    savearg[1] = NULL;
 
     /*
 
     /*
-     * Temporarily copy arg to vec, since the brkstring() call in
+     * Temporarily copy arg to savearg, since the brkstring() call in
      * getarguments() will wipe it out before it is merged in.
      * getarguments() will wipe it out before it is merged in.
-     * Also, we skip the first element of vec, since getarguments()
+     * Also, we skip the first element of savearg, since getarguments()
      * skips it.  Then we count the number of arguments
      * copied.  The value of "n" will be one greater than
      * this in order to simulate the standard argc/argv.
      * skips it.  Then we count the number of arguments
      * copied.  The value of "n" will be one greater than
      * this in order to simulate the standard argc/argv.
@@ -1094,17 +1094,17 @@ sendit (char *sp, char **arg, char *file, int pushed)
     if (arg) {
        char **bp;
 
     if (arg) {
        char **bp;
 
-       copyip (arg, vec+1, MAXARGS-1);
-       bp = vec+1;
+       copyip (arg, savearg+1, MAXARGS-1);
+       bp = savearg+1;
        while (*bp++)
            n++;
     }
 
     /*
        while (*bp++)
            n++;
     }
 
     /*
-     * Merge any arguments from command line (now in vec)
+     * Merge any arguments from command line (now in savearg)
      * and arguments from profile.
      */
      * and arguments from profile.
      */
-    arguments = getarguments (sp, n, vec, 1);
+    arguments = getarguments (sp, n, savearg, 1);
     argp = arguments;
 
     debugsw = 0;
     argp = arguments;
 
     debugsw = 0;
@@ -1116,7 +1116,12 @@ sendit (char *sp, char **arg, char *file, int pushed)
     annotext = NULL;
     distfile = NULL;
 
     annotext = NULL;
     distfile = NULL;
 
-    vecp = 1;                  /* we'll get the zero'th element later */
+    /*
+     * Get our initial arguments for postproc now
+     */
+
+    vec = argsplit(postproc, &program, &vecp);
+
     vec[vecp++] = "-library";
     vec[vecp++] = getcpy (m_maildir (""));
 
     vec[vecp++] = "-library";
     vec[vecp++] = getcpy (m_maildir (""));
 
@@ -1312,10 +1317,9 @@ sendit (char *sp, char **arg, char *file, int pushed)
     if ((pushsw = pushed))
        push ();
 
     if ((pushsw = pushed))
        push ();
 
-    vec[0] = r1bindex (postproc, '/');
     closefds (3);
 
     closefds (3);
 
-    if (sendsbr (vec, vecp, file, &st, 1, attach, attachformat) == OK)
+    if (sendsbr (vec, vecp, program, file, &st, 1, attach, attachformat) == OK)
        done (0);
 }
 
        done (0);
 }