X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=uip%2Fdistsbr.c;h=1ad8e42fb2a9b4b5335c165473edf5752c62b443;hp=396aca8dc7b841f1d856b42481bf07666b43855f;hb=e0422dfed4d6d236e5298cea579587870b83384a;hpb=33b33a0ac8a3f8f05c9bb0195c100306c00cce35;ds=sidebyside diff --git a/uip/distsbr.c b/uip/distsbr.c index 396aca8..1ad8e42 100644 --- a/uip/distsbr.c +++ b/uip/distsbr.c @@ -13,11 +13,6 @@ static int hdrfd = NOTOK; static int txtfd = NOTOK; -#define BADHDR "please re-edit %s to remove the ``%s'' header!" -#define BADTXT "please re-edit %s to consist of headers only!" -#define BADMSG "please re-edit %s to include a ``Resent-To:''!" -#define BADRFT "please re-edit %s and fix that header!" - /* ** static prototypes */ @@ -32,37 +27,37 @@ distout(char *drft, char *msgnam, char *backup) char name[NAMESZ], buffer[BUFSIZ]; register FILE *ifp, *ofp; - if (rename(drft, strcpy(backup, m_backup(drft))) == NOTOK) + if (rename(drft, strcpy(backup, m_backup(drft))) == NOTOK) { adios(backup, "unable to rename %s to",drft); - if ((ifp = fopen(backup, "r")) == NULL) + } + if (!(ifp = fopen(backup, "r"))) { adios(backup, "unable to read"); + } - if ((ofp = fopen(drft, "w")) == NULL) + if (!(ofp = fopen(drft, "w"))) { adios(drft, "unable to create temporary file"); + } chmod(drft, m_gmprot()); ready_msg(msgnam); lseek(hdrfd, (off_t) 0, SEEK_SET); /* msgnam not accurate */ cpydata(hdrfd, fileno(ofp), msgnam, drft); - for (state = FLD, resent = NULL;;) - switch (state = m_getfld (state, name, buffer, - sizeof buffer, ifp)) { + state = FLD; + resent = NULL; + while (1) { + 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); + advise(NULL, "Please re-edit draft to remove the ``%s'' header.", name); goto leave_bad; } - if (state == FLD) + if (state == FLD) { resent = add(":", add(name, resent)); + } resent = add(buffer, resent); fprintf(ofp, "%s: %s", name, buffer); while (state == FLDPLUS) { @@ -71,51 +66,57 @@ distout(char *drft, char *msgnam, char *backup) resent = add(buffer, resent); fputs(buffer, ofp); } - if (state == FLDEOF) + if (state == FLDEOF) { goto process; + } break; case BODY: case BODYEOF: - for (dp = buffer; *dp; dp++) + for (dp = buffer; *dp; dp++) { if (!isspace(*dp)) { - advise(NULL, BADTXT, "draft"); + advise(NULL, "Please re-edit draft to consist of headers only."); goto leave_bad; } + } case FILEEOF: goto process; case LENERR: case FMTERR: - advise(NULL, BADRFT, "draft"); + advise(NULL, "Please re-edit draft and fix that header."); leave_bad: ; fclose(ifp); fclose(ofp); unlink(drft); - if (rename(backup, drft) == NOTOK) + 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); fflush(ofp); if (!resent) { - advise(NULL, BADMSG, "draft"); + advise(NULL, "Please re-edit draft to include a ``Resent-To:'' header."); fclose(ofp); unlink(drft); - if (rename(backup, drft) == NOTOK) + if (rename(backup, drft) == NOTOK) { adios(drft, "unable to rename %s to", backup); + } return NOTOK; } free(resent); if (txtfd != NOTOK) { - lseek(txtfd, (off_t) 0, SEEK_SET); /* msgnam not accurate */ + lseek(txtfd, (off_t) 0, SEEK_SET); /* msgnam not accurate */ cpydata(txtfd, fileno(ofp), msgnam, drft); } @@ -133,41 +134,48 @@ ready_msg(char *msgnam) register FILE *ifp, *ofp; char *cp = NULL; - if (hdrfd != NOTOK) - close(hdrfd), hdrfd = NOTOK; - if (txtfd != NOTOK) - close(txtfd), txtfd = NOTOK; - - if ((ifp = fopen(msgnam, "r")) == NULL) + if (hdrfd != NOTOK) { + close(hdrfd); + hdrfd = NOTOK; + } + if (txtfd != NOTOK) { + close(txtfd); + txtfd = NOTOK; + } + if (!(ifp = fopen(msgnam, "r"))) { adios(msgnam, "unable to open message"); + } cp = m_mktemp2(NULL, "dist", &hdrfd, NULL); - if (cp == NULL) { + if (!cp) { adios("distsbr", "unable to create temporary file"); } fchmod(hdrfd, 0600); strncpy(tmpfil, cp, sizeof(tmpfil)); - if ((out = dup(hdrfd)) == NOTOK - || (ofp = fdopen(out, "w")) == NULL) + if ((out = dup(hdrfd)) == NOTOK || !(ofp = fdopen(out, "w"))) { adios(NULL, "no file descriptors -- you lose big"); + } unlink(tmpfil); - for (state = FLD;;) { + state = FLD; + while (1) { state = m_getfld(state, name, buffer, sizeof buffer, ifp); switch (state) { case FLD: case FLDPLUS: case FLDEOF: - if (uprf(name, "resent")) + 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) + if (state == FLDEOF) { goto process; + } break; case BODY: @@ -175,14 +183,15 @@ ready_msg(char *msgnam) fclose(ofp); cp = m_mktemp2(NULL, "dist", &txtfd, NULL); - if (cp == NULL) { - adios("distsbr", "unable to create temporary file"); + if (!cp) { + adios("distsbr", "unable to create temp 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"); + if ((out = dup(txtfd)) == NOTOK || + !(ofp = fdopen(out, "w"))) { + adios(NULL, "no file descriptors -- you lose"); + } unlink(tmpfil); fprintf(ofp, "\n%s", buffer); while (state == BODY) {