X-Git-Url: http://git.marmaro.de/?a=blobdiff_plain;f=uip%2Fscansbr.c;h=8a07418ab504b8e7e61a4d3935c670f9eef04807;hb=7e3bc577e84e13a47005a706718bd6ec0e6a0e0a;hp=7c0d1985b56fb85d96e807e1454f00da1c503d0f;hpb=a485ed478abbd599d8c9aab48934e7a26733ecb1;p=mmh diff --git a/uip/scansbr.c b/uip/scansbr.c index 7c0d198..8a07418 100644 --- a/uip/scansbr.c +++ b/uip/scansbr.c @@ -1,10 +1,10 @@ /* - * scansbr.c -- routines to help scan along... - * - * This code is Copyright (c) 2002, by the authors of nmh. See the - * COPYRIGHT file in the root directory of the nmh distribution for - * complete copyright information. - */ +** scansbr.c -- routines to help scan along... +** +** This code is Copyright (c) 2002, by the authors of nmh. See the +** COPYRIGHT file in the root directory of the nmh distribution for +** complete copyright information. +*/ #include #include @@ -28,12 +28,12 @@ #define MAXSCANL 256 /* longest possible scan line */ /* - * Buffer size for content part of header fields. We want this - * to be large enough so that we don't do a lot of extra FLDPLUS - * calls on m_getfld but small enough so that we don't snarf - * the entire message body when we're only going to display 30 - * characters of it. - */ +** Buffer size for content part of header fields. We want this +** to be large enough so that we don't do a lot of extra FLDPLUS +** calls on m_getfld but small enough so that we don't snarf +** the entire message body when we're only going to display 30 +** characters of it. +*/ #define SBUFSIZ 512 static struct format *fmt; @@ -51,7 +51,7 @@ static int dat[5]; /* aux. data for format routine */ char *scanl = 0; /* text of most recent scanline */ -#define DIEWRERR() adios (scnmsg, "write error on") +#define DIEWRERR() adios(scnmsg, "write error on") #define FPUTS(buf) {\ if (mh_fputs(buf,scnout) == EOF)\ @@ -59,9 +59,9 @@ char *scanl = 0; /* text of most recent scanline */ } /* - * prototypes - */ -int sc_width (void); /* from termsbr.c */ +** prototypes +*/ +int sc_width(void); /* from termsbr.c */ static int mh_fputs(char *, FILE *); #ifdef MULTIBYTE_SUPPORT @@ -71,7 +71,7 @@ static int mh_fputs(char *, FILE *); #endif int -scan (FILE *inb, int innum, int outnum, char *nfs, int width, int curflg, +scan(FILE *inb, int innum, int outnum, char *nfs, int width, int curflg, int unseen, char *folder, long size, int noisy) { int i, compnum, encrypted, state; @@ -93,18 +93,19 @@ scan (FILE *inb, int innum, int outnum, char *nfs, int width, int curflg, /* first-time only initialization */ if (!scanl) { if (width == 0) { - if ((width = sc_width ()) < WIDTH/2) + if ((width = sc_width()) < WIDTH/2) width = WIDTH/2; else if (width > MAXSCANL) width = MAXSCANL; } dat[3] = slwidth = width; - scanl = (char *) mh_xmalloc((size_t) SCAN_CHARWIDTH * (slwidth + 2) ); + scanl = (char *) mh_xmalloc((size_t) SCAN_CHARWIDTH * + (slwidth + 2) ); if (outnum) umask(~m_gmprot()); /* Compile format string */ - ncomps = fmt_compile (nfs, &fmt) + 1; + ncomps = fmt_compile(nfs, &fmt) + 1; #ifdef JLR fmt_top = fmt; @@ -116,22 +117,23 @@ scan (FILE *inb, int innum, int outnum, char *nfs, int width, int curflg, cptr->c_text = folder; FINDCOMP(cptr, "encrypted"); if (!cptr) - if ((cptr = (struct comp *) calloc (1, sizeof(*cptr)))) { + if ((cptr = (struct comp *)calloc(1, sizeof(*cptr)))) { cptr->c_name = "encrypted"; - cptr->c_next = wantcomp[i = CHASH (cptr->c_name)]; + cptr->c_next = wantcomp[i = CHASH(cptr->c_name)]; wantcomp[i] = cptr; ncomps++; } - FINDCOMP (cptr, "dtimenow"); + FINDCOMP(cptr, "dtimenow"); if (cptr) - cptr->c_text = getcpy(dtimenow (0)); - nxtbuf = compbuffers = (char **) calloc((size_t) ncomps, sizeof(char *)); + cptr->c_text = getcpy(dtimenow(0)); + nxtbuf = compbuffers = (char **) calloc((size_t) ncomps, + sizeof(char *)); if (nxtbuf == NULL) - adios (NULL, "unable to allocate component buffers"); + adios(NULL, "unable to allocate component buffers"); used_buf = (struct comp **) calloc((size_t) (ncomps+1), sizeof(struct comp *)); if (used_buf == NULL) - adios (NULL, "unable to allocate component buffer stack"); + adios(NULL, "unable to allocate component buffer stack"); used_buf += ncomps+1; *--used_buf = 0; rlwidth = bodycomp && (width > SBUFSIZ) ? width : SBUFSIZ; for (i = ncomps; i--; ) @@ -139,8 +141,8 @@ scan (FILE *inb, int innum, int outnum, char *nfs, int width, int curflg, } /* - * each-message initialization - */ + ** each-message initialization + */ nxtbuf = compbuffers; savecomp = used_buf; tmpbuf = *nxtbuf++; @@ -149,10 +151,10 @@ scan (FILE *inb, int innum, int outnum, char *nfs, int width, int curflg, dat[4] = unseen; /* - * Get the first field. If the message is non-empty - * and we're doing an "inc", open the output file. - */ - if ((state = m_getfld (FLD, name, tmpbuf, rlwidth, inb)) == FILEEOF) { + ** Get the first field. If the message is non-empty + ** and we're doing an "inc", open the output file. + */ + if ((state = m_getfld(FLD, name, tmpbuf, rlwidth, inb)) == FILEEOF) { if (ferror(inb)) { advise("read", "unable to"); /* "read error" */ return SCNFAT; @@ -163,54 +165,58 @@ scan (FILE *inb, int innum, int outnum, char *nfs, int width, int curflg, if (outnum) { if (outnum > 0) { - scnmsg = m_name (outnum); + scnmsg = m_name(outnum); if (*scnmsg == '?') /* msg num out of range */ return SCNNUM; } else { scnmsg = "/dev/null"; } - if ((scnout = fopen (scnmsg, "w")) == NULL) - adios (scnmsg, "unable to write"); + if ((scnout = fopen(scnmsg, "w")) == NULL) + adios(scnmsg, "unable to write"); #ifdef RPATHS /* - * Add the Return-Path and Delivery-Date - * header fields to message. - */ - if (get_returnpath (returnpath, sizeof(returnpath), + ** Add the Return-Path and Delivery-Date + ** header fields to message. + */ + if (get_returnpath(returnpath, sizeof(returnpath), deliverydate, sizeof(deliverydate))) { - FPUTS ("Return-Path: "); - FPUTS (returnpath); - FPUTS ("Delivery-Date: "); - FPUTS (deliverydate); + FPUTS("Return-Path: "); + FPUTS(returnpath); + FPUTS("Delivery-Date: "); + FPUTS(deliverydate); } #endif /* RPATHS */ } /* scan - main loop */ - for (compnum = 1; ; state = m_getfld (state, name, tmpbuf, rlwidth, inb)) { + for (compnum = 1; ; + state = m_getfld(state, name, tmpbuf, rlwidth, inb)) { switch (state) { case FLD: case FLDPLUS: compnum++; if (outnum) { - FPUTS (name); - if ( putc (':', scnout) == EOF) DIEWRERR(); - FPUTS (tmpbuf); + FPUTS(name); + if (putc(':', scnout) == EOF) + DIEWRERR(); + FPUTS(tmpbuf); } /* - * if we're interested in this component, save a pointer - * to the component text, then start using our next free - * buffer as the component temp buffer (buffer switching - * saves an extra copy of the component text). - */ + ** if we're interested in this component, + ** save a pointer to the component text, + ** then start using our next free buffer + ** as the component temp buffer (buffer + ** switching saves an extra copy of the + ** component text). + */ if ((cptr = wantcomp[CHASH(name)])) { do { if (!mh_strcasecmp(name, cptr->c_name)) { if (! cptr->c_text) { cptr->c_text = tmpbuf; - for (cp = tmpbuf + strlen (tmpbuf) - 1; + for (cp = tmpbuf + strlen(tmpbuf) - 1; cp >= tmpbuf; cp--) - if (isspace (*cp)) + if (isspace(*cp)) *cp = 0; else break; @@ -223,9 +229,10 @@ scan (FILE *inb, int innum, int outnum, char *nfs, int width, int curflg, } while (state == FLDPLUS) { - state = m_getfld (state, name, tmpbuf, rlwidth, inb); + state = m_getfld(state, name, tmpbuf, + rlwidth, inb); if (outnum) - FPUTS (tmpbuf); + FPUTS(tmpbuf); } break; @@ -235,19 +242,21 @@ scan (FILE *inb, int innum, int outnum, char *nfs, int width, int curflg, state = FILEEOF; /* stop now if scan cmd */ goto finished; } - if (putc ('\n', scnout) == EOF) DIEWRERR(); - FPUTS (tmpbuf); + if (putc('\n', scnout) == EOF) DIEWRERR(); + FPUTS(tmpbuf); /* - * performance hack: some people like to run "inc" on - * things like net.sources or large digests. We do a - * copy directly into the output buffer rather than - * going through an intermediate buffer. - * - * We need the amount of data m_getfld found & don't - * want to do a strlen on the long buffer so there's - * a hack in m_getfld to save the amount of data it - * returned in the global "msg_count". - */ + ** performance hack: some people like to + ** run "inc" on things like net.sources or + ** large digests. We do a copy directly + ** into the output buffer rather than + ** going through an intermediate buffer. + ** + ** We need the amount of data m_getfld + ** found & don't want to do a strlen on + ** the long buffer so there's a hack in + ** m_getfld to save the amount of data it + ** returned in the global "msg_count". + */ body:; while (state == BODY) { #ifdef LINUX_STDIO @@ -258,14 +267,14 @@ body:; if (scnout->_cnt <= 0) { #endif if (fflush(scnout) == EOF) - DIEWRERR (); + DIEWRERR(); } #ifdef LINUX_STDIO state = m_getfld(state, name, scnout->_IO_write_ptr, (long)scnout->_IO_write_ptr-(long)scnout->_IO_write_end , inb); scnout->_IO_write_ptr += msg_count; #elif defined(__DragonFly__) - state = m_getfld( state, name, ((struct __FILE_public *)scnout)->_p, -(((struct __FILE_public *)scnout)->_w), inb ); + state = m_getfld(state, name, ((struct __FILE_public *)scnout)->_p, -(((struct __FILE_public *)scnout)->_w), inb ); ((struct __FILE_public *)scnout)->_w -= msg_count; ((struct __FILE_public *)scnout)->_p += msg_count; #else @@ -278,16 +287,14 @@ body:; case LENERR: case FMTERR: - fprintf (stderr, - innum ? "??Format error (message %d) in " - : "??Format error in ", - outnum ? outnum : innum); - fprintf (stderr, "component %d\n", compnum); + fprintf(stderr, innum ? "??Format error (message %d) in " : "??Format error in ", outnum ? outnum : innum); + fprintf(stderr, "component %d\n", compnum); if (outnum) { - FPUTS ("\n\nBAD MSG:\n"); - FPUTS (name); - if (putc ('\n', scnout) == EOF) DIEWRERR(); + FPUTS("\n\nBAD MSG:\n"); + FPUTS(name); + if (putc('\n', scnout) == EOF) + DIEWRERR(); state = BODY; goto body; } @@ -297,13 +304,13 @@ body:; goto finished; default: - adios (NULL, "getfld() returned %d", state); + adios(NULL, "getfld() returned %d", state); } } /* - * format and output the scan line. - */ + ** format and output the scan line. + */ finished: if (ferror(inb)) { advise("read", "unable to"); /* "read error" */ @@ -318,26 +325,25 @@ finished: if (size) dat[2] = size; - else if (outnum > 0) - { + else if (outnum > 0) { dat[2] = ftell(scnout); - if (dat[2] == EOF) DIEWRERR(); + if (dat[2] == EOF) + DIEWRERR(); } if ((datecomp && !datecomp->c_text) || (!size && !outnum)) { struct stat st; - fstat (fileno(inb), &st); + fstat(fileno(inb), &st); if (!size && !outnum) dat[2] = st.st_size; if (datecomp) { if (! datecomp->c_text) { if (datecomp->c_tws == NULL) - datecomp->c_tws = (struct tws *) - calloc((size_t) 1, sizeof(*datecomp->c_tws)); + datecomp->c_tws = (struct tws *) calloc((size_t) 1, sizeof(*datecomp->c_tws)); if (datecomp->c_tws == NULL) - adios (NULL, "unable to allocate tws buffer"); - *datecomp->c_tws = *dlocaltime ((time_t *) &st.st_mtime); + adios(NULL, "unable to allocate tws buffer"); + *datecomp->c_tws = *dlocaltime((time_t *) &st.st_mtime); datecomp->c_flags |= CF_DATEFAB|CF_TRUE; } else { datecomp->c_flags &= ~CF_DATEFAB; @@ -345,10 +351,10 @@ finished: } } - fmt_scan (fmt, scanl, slwidth, dat); + fmt_scan(fmt, scanl, slwidth, dat); #if 0 - fmt = fmt_scan (fmt, scanl, slwidth, dat); + fmt = fmt_scan(fmt, scanl, slwidth, dat); if (!fmt) fmt = fmt_top; /* reset for old format files */ #endif @@ -357,9 +363,9 @@ finished: bodycomp->c_text = saved_c_text; if (noisy) - fputs (scanl, stdout); + fputs(scanl, stdout); - FINDCOMP (cptr, "encrypted"); + FINDCOMP(cptr, "encrypted"); encrypted = cptr && cptr->c_text; /* return dynamically allocated buffers to pool */ @@ -369,7 +375,7 @@ finished: } *--nxtbuf = tmpbuf; - if (outnum && (ferror(scnout) || fclose (scnout) == EOF)) + if (outnum && (ferror(scnout) || fclose(scnout) == EOF)) DIEWRERR(); return (state != FILEEOF ? SCNERR : encrypted ? SCNENC : SCNMSG); @@ -381,8 +387,7 @@ mh_fputs(char *s, FILE *stream) char c; while ((c = *s++)) - if (putc (c,stream) == EOF ) + if (putc(c,stream) == EOF ) return(EOF); return (0); } -