X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=uip%2Fdistsbr.c;h=396aca8dc7b841f1d856b42481bf07666b43855f;hp=319e496adf15582d60195651d3decbab77153ae6;hb=5b792c4424571f05bc2008e3109797d18d7d00d1;hpb=714b5c530ece27ea2835a313013f5b770163403c diff --git a/uip/distsbr.c b/uip/distsbr.c index 319e496..396aca8 100644 --- a/uip/distsbr.c +++ b/uip/distsbr.c @@ -48,58 +48,57 @@ distout(char *drft, char *msgnam, char *backup) for (state = FLD, resent = NULL;;) switch (state = m_getfld (state, name, buffer, sizeof buffer, ifp)) { - case FLD: - case FLDPLUS: - case FLDEOF: - if (uprf(name, "distribute-")) - snprintf(name, sizeof(name), "%s%s", - "Resent", &name[10]); - if (uprf(name, "distribution-")) - snprintf(name, sizeof(name), "%s%s", - "Resent", &name[12]); - if (!uprf(name, "resent")) { - advise(NULL, BADHDR, "draft", name); - goto leave_bad; - } - if (state == FLD) - resent = add(":", add(name, resent)); + case FLD: + case FLDPLUS: + case FLDEOF: + if (uprf(name, "distribute-")) + snprintf(name, sizeof(name), "%s%s", + "Resent", &name[10]); + if (uprf(name, "distribution-")) + snprintf(name, sizeof(name), "%s%s", + "Resent", &name[12]); + if (!uprf(name, "resent")) { + advise(NULL, BADHDR, "draft", name); + goto leave_bad; + } + if (state == FLD) + resent = add(":", add(name, resent)); + resent = add(buffer, resent); + fprintf(ofp, "%s: %s", name, buffer); + while (state == FLDPLUS) { + state = m_getfld(state, name, buffer, + sizeof buffer, ifp); resent = add(buffer, resent); - fprintf(ofp, "%s: %s", name, buffer); - while (state == FLDPLUS) { - state = m_getfld(state, name, buffer, - sizeof buffer, ifp); - resent = add(buffer, resent); - fputs(buffer, ofp); - } - if (state == FLDEOF) - goto process; - break; - - case BODY: - case BODYEOF: - for (dp = buffer; *dp; dp++) - if (!isspace(*dp)) { - advise(NULL, BADTXT, "draft"); - goto leave_bad; - } - - case FILEEOF: + fputs(buffer, ofp); + } + if (state == FLDEOF) goto process; + break; - case LENERR: - case FMTERR: - advise(NULL, BADRFT, "draft"); - leave_bad: ; - fclose(ifp); - fclose(ofp); - unlink(drft); - if (rename(backup, drft) == NOTOK) - adios(drft, "unable to rename %s to", - backup); - return NOTOK; - - default: - adios(NULL, "getfld() returned %d", state); + case BODY: + case BODYEOF: + for (dp = buffer; *dp; dp++) + if (!isspace(*dp)) { + advise(NULL, BADTXT, "draft"); + goto leave_bad; + } + + case FILEEOF: + goto process; + + case LENERR: + case FMTERR: + advise(NULL, BADRFT, "draft"); +leave_bad: ; + fclose(ifp); + fclose(ofp); + unlink(drft); + if (rename(backup, drft) == NOTOK) + adios(drft, "unable to rename %s to", backup); + return NOTOK; + + default: + adios(NULL, "getfld() returned %d", state); } process: ; fclose(ifp); @@ -153,56 +152,55 @@ ready_msg(char *msgnam) adios(NULL, "no file descriptors -- you lose big"); unlink(tmpfil); - for (state = FLD;;) - switch (state = m_getfld (state, name, buffer, sizeof buffer, - ifp)) { - case FLD: - case FLDPLUS: - case FLDEOF: - if (uprf(name, "resent")) - fprintf(ofp, "Prev-"); - fprintf(ofp, "%s: %s", name, buffer); - while (state == FLDPLUS) { - state = m_getfld(state, name, buffer, - sizeof buffer, ifp); - fputs(buffer, ofp); - } - if (state == FLDEOF) - goto process; - break; - - case BODY: - case BODYEOF: - fclose(ofp); - - cp = m_mktemp2(NULL, "dist", &txtfd, NULL); - if (cp == NULL) { - adios("distsbr", "unable to create temporary file"); - } - fchmod(txtfd, 0600); - strncpy(tmpfil, cp, sizeof(tmpfil)); - if ((out = dup(txtfd)) == NOTOK - || (ofp = fdopen(out, "w")) - == NULL) - adios(NULL, "no file descriptors -- you lose big"); - unlink(tmpfil); - fprintf(ofp, "\n%s", buffer); - while (state == BODY) { - state = m_getfld(state, name, buffer, - sizeof buffer, ifp); - fputs(buffer, ofp); - } - case FILEEOF: + for (state = FLD;;) { + state = m_getfld(state, name, buffer, sizeof buffer, ifp); + switch (state) { + case FLD: + case FLDPLUS: + case FLDEOF: + if (uprf(name, "resent")) + fprintf(ofp, "Prev-"); + fprintf(ofp, "%s: %s", name, buffer); + while (state == FLDPLUS) { + state = m_getfld(state, name, buffer, + sizeof buffer, ifp); + fputs(buffer, ofp); + } + if (state == FLDEOF) goto process; - - case LENERR: - case FMTERR: - adios(NULL, "format error in message %s", - msgnam); - - default: - adios(NULL, "getfld() returned %d", state); + break; + + case BODY: + case BODYEOF: + fclose(ofp); + + cp = m_mktemp2(NULL, "dist", &txtfd, NULL); + if (cp == NULL) { + adios("distsbr", "unable to create temporary file"); + } + fchmod(txtfd, 0600); + strncpy(tmpfil, cp, sizeof(tmpfil)); + if ((out = dup(txtfd)) == NOTOK + || (ofp = fdopen(out, "w")) == NULL) + adios(NULL, "no file descriptors -- you lose big"); + unlink(tmpfil); + fprintf(ofp, "\n%s", buffer); + while (state == BODY) { + state = m_getfld(state, name, buffer, + sizeof buffer, ifp); + fputs(buffer, ofp); + } + case FILEEOF: + goto process; + + case LENERR: + case FMTERR: + adios(NULL, "format error in message %s", msgnam); + + default: + adios(NULL, "getfld() returned %d", state); } + } process: ; fclose(ifp); fclose(ofp);