]> diplodocus.org Git - nmh/blobdiff - uip/rcvdist.c
lock_file.c: close(2) file descriptor on failure, avoiding leak.
[nmh] / uip / rcvdist.c
index 1ad585d2035cdab965cb8f8329820f417a801f89..a75e21aca73c89cdf6c88c1c99863dc5b5598f4a 100644 (file)
@@ -11,7 +11,7 @@
 #include <h/tws.h>
 #include <h/mts.h>
 #include <h/utils.h>
-#include "../sbr/m_mktemp.h"
+#include "sbr/m_mktemp.h"
 
 #define RCVDIST_SWITCHES \
     X("form formfile", 4, FORMSW) \
@@ -41,7 +41,7 @@ int
 main (int argc, char **argv)
 {
     pid_t child_id;
-    int i, vecp;
+    int vecp;
     char *addrs = NULL, *cp, *form = NULL, buf[BUFSIZ], *program;
     char **argp, **arguments, **vec;
     FILE *fp;
@@ -124,8 +124,7 @@ main (int argc, char **argv)
     vec[vecp++] = drft;
     vec[vecp] = NULL;
 
-    for (i = 0; (child_id = fork()) == NOTOK && i < 5; i++)
-       sleep (5);
+    child_id = fork();
     switch (child_id) {
        case NOTOK: 
            inform("unable to fork, continuing...");
@@ -177,7 +176,7 @@ rcvdistout (FILE *inb, char *form, char *addrs)
     charstring_t scanl;
     struct comp *cptr;
     FILE *out;
-    m_getfld_state_t gstate = 0;
+    m_getfld_state_t gstate;
 
     if (!(out = fopen (drft, "w")))
        adios (drft, "unable to create");
@@ -197,9 +196,10 @@ rcvdistout (FILE *inb, char *form, char *addrs)
     if (cptr)
        cptr->c_text = addrs;
 
+    gstate = m_getfld_state_init(inb);
     for (;;) {
        int msg_count = sizeof tmpbuf;
-       switch (state = m_getfld (&gstate, name, tmpbuf, &msg_count, inb)) {
+       switch (state = m_getfld2(&gstate, name, tmpbuf, &msg_count)) {
            case FLD: 
            case FLDPLUS: 
                i = fmt_addcomptext(name, tmpbuf);
@@ -207,7 +207,7 @@ rcvdistout (FILE *inb, char *form, char *addrs)
                    char_read += msg_count;
                    while (state == FLDPLUS) {
                        msg_count = sizeof tmpbuf;
-                       state = m_getfld (&gstate, name, tmpbuf, &msg_count, inb);
+                       state = m_getfld2(&gstate, name, tmpbuf, &msg_count);
                        fmt_appendcomp(i, name, tmpbuf);
                        char_read += msg_count;
                    }
@@ -215,7 +215,7 @@ rcvdistout (FILE *inb, char *form, char *addrs)
 
                while (state == FLDPLUS) {
                    msg_count = sizeof tmpbuf;
-                   state = m_getfld (&gstate, name, tmpbuf, &msg_count, inb);
+                   state = m_getfld2(&gstate, name, tmpbuf, &msg_count);
                }
                break;
 
@@ -226,7 +226,7 @@ rcvdistout (FILE *inb, char *form, char *addrs)
                goto finished;
 
            default: 
-               adios (NULL, "m_getfld() returned %d", state);
+               adios (NULL, "m_getfld2() returned %d", state);
        }
     }
 finished: ;