Scan listings shall not contain body content. Hence, removed this feature.
authormarkus schnalke <meillo@marmaro.de>
Mon, 30 Jan 2012 15:16:26 +0000 (16:16 +0100)
committermarkus schnalke <meillo@marmaro.de>
Mon, 30 Jan 2012 15:16:26 +0000 (16:16 +0100)
Scan listings shall operator on message headers and non-message information
only. Displaying the beginning of the body complicates everything too much.
That's no surprise, because it's something completely different. If you
want to examine the body, then use show(1)/mhshow(1).
Changed the default scan formats accordingly.

12 files changed:
etc/scan.MMDDYY
etc/scan.YYYYMMDD
etc/scan.nmh
etc/scan.nomime
etc/scan.size
etc/scan.time
etc/scan.timely
etc/scan.unseen
man/mh-format.man5
man/scan.man1
uip/rcvtty.c
uip/scansbr.c

index dd20b29..942ddcc 100644 (file)
@@ -7,4 +7,4 @@
 %02(mon{date})/%02(mday{date})/%(void(year{date}))%02(modulo 100)%<{date} %|*%>\
 %<(mymbox{from})%<{to}To:%14(decode(friendly{to}))%>%>\
 %<(zero)%17(decode(friendly{from}))%>  \
-%(decode{subject})%<{body}<<%{body}>>%>
+%(decode{subject})
index 741681d..e91bcb1 100644 (file)
@@ -7,4 +7,4 @@
 %4(year{date})-%02(mon{date})-%02(mday{date})%<{date} %|*%>\
 %<(mymbox{from})%<{to}To:%14(decode(friendly{to}))%>%>\
 %<(zero)%17(decode(friendly{from}))%>  \
-%(decode{subject})%<{body}<<%{body}>>%>
+%(decode{subject})
index a59116c..b15a281 100644 (file)
@@ -6,4 +6,4 @@
 %02(mon{date})/%02(mday{date})%<{date} %|*%>\
 %<(mymbox{from})%<{to}To:%14(decode(friendly{to}))%>%>\
 %<(zero)%17(decode(friendly{from}))%>  \
-%(decode{subject})%<{body}<<%{body}>>%>
+%(decode{subject})
index 8e2cedf..145e73f 100644 (file)
@@ -7,4 +7,4 @@
 %4(msg)%<(cur)+%| %>%<{replied}-%?{encrypted}E%| %>\
 %02(mon{date})/%02(mday{date})%<{date} %|*%>\
 %<(mymbox{from})%<{to}To:%14(friendly{to})%>%>%<(zero)%17(friendly{from})%>  \
-%{subject}%<{body}<<%{body}>>%>
+%{subject}
index a6b6698..5f35b36 100644 (file)
@@ -3,4 +3,4 @@
 %5(size) \
 %<(mymbox{from})%<{to}To:%14(decode(friendly{to}))%>%>\
 %<(zero)%17(decode(friendly{from}))%>  \
-%(decode{subject})%<{body}<<%{body}%>
+%(decode{subject})
index ee54a52..4c58133 100644 (file)
@@ -4,4 +4,4 @@
 %<{date} %|*%>\
 %<(mymbox{from})%<{to}To:%14(decode(friendly{to}))%>%>\
 %<(zero)%17(decode(friendly{from}))%>  \
-%(decode{subject})%<{body}<<%{body}%>
+%(decode{subject})
index 06c068c..54f6d0a 100644 (file)
@@ -7,4 +7,4 @@
 %<{date} %|*%>\
 %<(mymbox{from})%<{to}To:%14(decode(friendly{to}))%>%>\
 %<(zero)%17(decode(friendly{from}))%>  \
-%(decode{subject})%<{body}<<%{body}%>
+%(decode{subject})
index d1cd195..2cd0b82 100644 (file)
@@ -2,4 +2,4 @@
 %02(mon{date})/%02(mday{date})%<{date} %|*%>\
 %<(mymbox{from})%<{to}To:%14(decode(friendly{to}))%>%>\
 %<(zero)%17(decode(friendly{from}))%>  \
-%(decode{subject})%<{body}<<%{body}>>%>
+%(decode{subject})
index 9629de5..ee59f71 100644 (file)
@@ -453,11 +453,11 @@ And finally,
 .PP
 .RS 5
 .nf
-%(decode{subject})%<{body}<<%{body}>>%>
+%(decode{subject})
 .fi
 .RE
 .PP
-the mime-decoded subject and initial body (if any) are printed.
+the mime-decoded subject is printed.
 .PP
 For a more complicated example, next consider
 a possible
index ba59b45..1732895 100644 (file)
@@ -28,14 +28,14 @@ produces a one\-line\-per\-message listing of the specified
 folder or messages.  Each
 .B scan
 line contains the message number
-(name), the date, the \*(lqFrom:\*(rq field, the \*(lqSubject\*(rq field,
-and, if room allows, some of the body of the message.  For example:
+(name), the date, the \*(lqFrom:\*(rq field and the \*(lqSubject\*(rq field.
+For example:
 .PP
 .RS 5
 .nf
 .ta \w'15+- 'u +\w'07/\|05x 'u +\w'Dcrocker  'u
-15+    10/\|05 crocker nned\0\0<<Last week I asked some of
-16\-   10/\|05 crocker message id format\0\0\<<I recommend
+15+    10/\|05 crocker nned
+16\-   10/\|05 crocker message id format
 18     10/\|06 brien   Re: Exit status from mkdir
 19     10/\|07*brien   \*(lqscan\*(rq listing format in nmh
 .fi
@@ -54,11 +54,6 @@ command).
 The `*' on message 19 indicates that no \*(lqDate:\*(rq header was
 present.  The time of last modification of the message is given instead.
 .PP
-If there is sufficient room left on the
-.B scan
-line after the
-subject, the line will be filled with text from the body, preceded by
-\*(lq<<\*(rq, and terminated by \*(lq>>\*(rq if the body is sufficiently short.
 .B Scan
 actually reads each of the specified messages and parses them to extract
 the desired fields.  During parsing, appropriate error messages will be
@@ -152,7 +147,6 @@ escapes:
 .nf
 .ta \w'Dtimenow  'u +\w'Returns  'u
 .I Escape      Returns Description
-body   string  the (compressed) first part of the body
 dtimenow       date    the current date
 folder string  the name of the current folder
 .fi
index e1f5e94..a62d091 100644 (file)
@@ -35,7 +35,7 @@
 #define SCANFMT \
 "%2(hour{dtimenow}):%02(min{dtimenow}): %<(size)%5(size) %>%<{encrypted}E%>\
 %<(mymbox{from})%<{to}To:%14(friendly{to})%>%>%<(zero)%17(friendly{from})%>  \
-%{subject}%<{body}<<%{body}>>%>"
+%{subject}"
 
 static struct swit switches[] = {
 #define BIFFSW  0
index a43044c..9617237 100644 (file)
 /*
 ** 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.
+** calls on m_getfld.
 */
 #define SBUFSIZ 512
 
 static struct format *fmt;
 
 static struct comp *datecomp;  /* pntr to "date" comp */
-static struct comp *bodycomp;  /* pntr to "body" pseudo-comp (if referenced) */
 static int ncomps = 0;  /* # of interesting components */
 static char **compbuffers = 0;  /* buffers for component text */
 static struct comp **used_buf = 0;  /* stack for comp that use buffers */
@@ -74,13 +71,12 @@ scan(FILE *inb, int innum, int outnum, char *nfs, int width, int curflg,
        int i, compnum, encrypted, state;
        unsigned char *cp, *tmpbuf;
        char **nxtbuf;
-       char *saved_c_text = NULL;
        struct comp *cptr;
        struct comp **savecomp;
        char *scnmsg = NULL;
        FILE *scnout = NULL;
        char name[NAMESZ];
-       static int rlwidth, slwidth;
+       static int slwidth;
 
 #ifdef RPATHS
        char returnpath[BUFSIZ];
@@ -104,7 +100,6 @@ scan(FILE *inb, int innum, int outnum, char *nfs, int width, int curflg,
                /* Compile format string */
                ncomps = fmt_compile(nfs, &fmt) + 1;
 
-               FINDCOMP(bodycomp, "body");
                FINDCOMP(datecomp, "date");
                FINDCOMP(cptr, "folder");
                if (cptr && folder)
@@ -113,7 +108,7 @@ scan(FILE *inb, int innum, int outnum, char *nfs, int width, int curflg,
                if (!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++;
                }
@@ -129,9 +124,8 @@ scan(FILE *inb, int innum, int outnum, char *nfs, int width, int curflg,
                if (used_buf == NULL)
                        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--; )
-                       *nxtbuf++ = mh_xmalloc(rlwidth);
+                       *nxtbuf++ = mh_xmalloc(SBUFSIZ);
        }
 
        /*
@@ -148,7 +142,7 @@ scan(FILE *inb, int innum, int outnum, char *nfs, int width, int curflg,
        ** 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 ((state = m_getfld(FLD, name, tmpbuf, SBUFSIZ, inb)) == FILEEOF) {
                if (ferror(inb)) {
                        advise("read", "unable to"); /* "read error" */
                        return SCNFAT;
@@ -184,7 +178,7 @@ scan(FILE *inb, int innum, int outnum, char *nfs, int width, int curflg,
 
        /* scan - main loop */
        for (compnum = 1; ;
-                       state = m_getfld(state, name, tmpbuf, rlwidth, inb)) {
+                       state = m_getfld(state, name, tmpbuf, SBUFSIZ, inb)) {
                switch (state) {
                case FLD:
                case FLDPLUS:
@@ -221,7 +215,7 @@ scan(FILE *inb, int innum, int outnum, char *nfs, int width, int curflg,
                        }
 
                        while (state == FLDPLUS) {
-                               state = m_getfld(state, name, tmpbuf, rlwidth,
+                               state = m_getfld(state, name, tmpbuf, SBUFSIZ,
                                                inb);
                                if (outnum)
                                        FPUTS(tmpbuf);
@@ -229,49 +223,7 @@ scan(FILE *inb, int innum, int outnum, char *nfs, int width, int curflg,
                        break;
 
                case BODY:
-                       compnum = -1;
-                       if (! outnum) {
-                               state = FILEEOF; /* stop now if scan cmd */
-                               goto finished;
-                       }
-                       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".
-                       */
-body:;
-                       while (state == BODY) {
-#ifdef LINUX_STDIO
-                               if (scnout->_IO_write_ptr == scnout->_IO_write_end) {
-#elif defined(__DragonFly__)
-                               if (((struct __FILE_public *)scnout)->_w <= 0) {
-#else
-                               if (scnout->_cnt <= 0) {
-#endif
-                                       if (fflush(scnout) == EOF)
-                                               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);
-                               ((struct __FILE_public *)scnout)->_w -= msg_count;
-                               ((struct __FILE_public *)scnout)->_p += msg_count;
-#else
-                               state = m_getfld( state, name, scnout->_ptr, -(scnout->_cnt), inb);
-                               scnout->_cnt -= msg_count;
-                               scnout->_ptr += msg_count;
-#endif
-                       }
+                       state = FILEEOF;
                        goto finished;
 
                case LENERR:
@@ -284,8 +236,6 @@ body:;
                                FPUTS(name);
                                if (putc('\n', scnout) == EOF)
                                        DIEWRERR();
-                               state = BODY;
-                               goto body;
                        }
                        /* fall through */
 
@@ -306,12 +256,6 @@ finished:
                return SCNFAT;
        }
 
-       /* Save and restore buffer so we don't trash our dynamic pool! */
-       if (bodycomp) {
-               saved_c_text = bodycomp->c_text;
-               bodycomp->c_text = tmpbuf;
-       }
-
        if (size)
                dat[2] = size;
        else if (outnum > 0) {
@@ -342,9 +286,6 @@ finished:
 
        fmt_scan(fmt, scanl, slwidth, dat);
 
-       if (bodycomp)
-               bodycomp->c_text = saved_c_text;
-
        if (noisy)
                fputs(scanl, stdout);