.IR +folder ]
.RB [ \-form
.IR formfile ]
-.RB [ \-length
-.IR lines ]
.RB [ \-width
.IR columns ]
.RB [ \-moreproc
switch.
.PP
The
-.B \-length
-.I length
-and
.B \-width
.I width
-switches set the screen
-length and width, respectively. These default to the values indicated by
+switch sets the screen width. This defaults to the value indicated by
.BR $TERMCAP ,
-if appropriate, otherwise they default to 40 and 80, respectively.
+if appropriate, otherwise it defaults to 80.
.PP
The default format file used by
.B mhl
For example, the line:
.PP
.RS 5
-width=80,length=40,overflowtext="***",overflowoffset=5
+width=80,overflowtext="***",overflowoffset=5
.RE
.PP
defines the screen size to be 80 columns by 40 rows, specifies that the
affect is global. Since the whole format is parsed before any output
processing, the last global switch setting for a variable applies to
the whole message if that variable is used in a global context (i.e.,
-width, length).
+width).
.PP
.RS 5
.nf
.ta \w'xxxxxxxxxxxxx 'u +\w'integer/G 'u
.I variable type semantics
width integer screen width or component width
-length integer screen length or component length
+length integer component length
offset integer positions to indent \*(lqcomponent: \*(rq
overflowtext string text to use at the beginning of an
overflow line
.SH DEFAULTS
.nf
-.RB ` \-length 40 '
.RB ` \-width 80 '
.fi
{ "form formfile", 0 },
#define PROGSW 2
{ "moreproc program", 0 },
-#define LENSW 3
- { "length lines", 0 },
-#define WIDTHSW 4
+#define WIDTHSW 3
{ "width columns", 0 },
-#define SLEEPSW 5
+#define SLEEPSW 4
{ "sleep seconds", 0 },
-#define VERSIONSW 6
+#define VERSIONSW 5
{ "version", 0 },
-#define HELPSW 7
+#define HELPSW 6
{ "help", 0 },
-#define FORW1SW 8
+#define FORW1SW 7
{ "forward", -7 },
-#define FORW2SW 9
+#define FORW2SW 8
{ "forwall", -7 },
-#define DGSTSW 10
+#define DGSTSW 9
{ "digest list", -6 },
-#define VOLUMSW 11
+#define VOLUMSW 10
{ "volume number", -6 },
-#define ISSUESW 12
+#define ISSUESW 11
{ "issue number", -5 },
-#define NBODYSW 13
+#define NBODYSW 12
{ "nobody", -6 },
{ NULL, 0 }
};
int c_ovoff; /* overflow indentation */
int c_width; /* width of field */
int c_cwidth; /* width of component */
- int c_length; /* length in lines */
long c_flags;
struct mcomp *c_next;
};
static struct mcomp *fmttl = NULL;
static struct mcomp global = {
- NULL, NULL, "", NULL, NULL, 0, -1, 80, -1, 40, 0, 0
+ NULL, NULL, "", NULL, NULL, 0, -1, 80, -1, 0, 0
};
static struct mcomp holder = {
- NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 0, NOCOMPONENT, 0
+ NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, NOCOMPONENT, 0
};
struct pair {
#define NOTTY 0
static int ontty = NOTTY;
-static int row;
static int column;
static int lm;
-static int llim;
static int ovoff;
static int term;
static int wid;
/*
** prototypes
*/
-static void mhl_format(char *, int, int);
+static void mhl_format(char *, int);
static int evalvar(struct mcomp *);
static int ptoi(char *, int *);
static int ptos(char *, char **);
int SOprintf(char *, ...); /* from termsbr.c */
int sc_width(void); /* from termsbr.c */
-int sc_length(void); /* from termsbr.c */
int
main(int argc, char **argv)
{
- int length = 0;
int i, width = 0, vecp = 0;
char *cp, *folder = NULL, *form = NULL;
char buf[BUFSIZ], *files[MAXARGS];
argp[-2]);
continue;
- case LENSW:
- if (!(cp = *argp++) || *cp == '-')
- adios(NULL, "missing argument to %s",
- argp[-2]);
- if ((length = atoi(cp)) < 1)
- adios(NULL, "bad argument %s %s",
- argp[-2], cp);
- continue;
case WIDTHSW:
if (!(cp = *argp++) || *cp == '-')
adios(NULL, "missing argument to %s",
ontty = NOTTY;
}
- mhl_format(form ? form : mhlformat, length, width);
+ mhl_format(form ? form : mhlformat, width);
if (vecp == 0) {
process(folder, NULL, 1, vecp = 1);
static void
-mhl_format(char *file, int length, int width)
+mhl_format(char *file, int width)
{
int i;
char *bp, *cp, **ip;
if ((i = sc_width()) > 5)
global.c_width = i;
global.c_cwidth = -1;
- if ((i = sc_length()) > 5)
- global.c_length = i - 1;
global.c_flags = 0;
*(ip = ignores) = NULL;
for (c1 = fmthd; c1; c1 = c1->c_next) {
fprintf(stderr, "c1: name=\"%s\" text=\"%s\" ovtxt=\"%s\"\n", c1->c_name, c1->c_text, c1->c_ovtxt);
fprintf(stderr, "\tnfs=0x%x fmt=0x%x\n", (unsigned int)(unsigned long) c1->c_nfs, (unsigned int)(unsigned long) c1->c_fmt);
- fprintf(stderr, "\toffset=%d ovoff=%d width=%d cwidth=%d length=%d\n", c1->c_offset, c1->c_ovoff, c1->c_width, c1->c_cwidth, c1->c_length);
+ fprintf(stderr, "\toffset=%d ovoff=%d width=%d cwidth=%d\n", c1->c_offset, c1->c_ovoff, c1->c_width, c1->c_cwidth);
fprintf (stderr, "\tflags=%s\n", snprintb(buffer, sizeof(buffer), (unsigned) c1->c_flags, LBITS));
}
}
out:
- if (length)
- global.c_length = length;
if (width)
global.c_width = width;
- if (global.c_length < 5)
- global.c_length = 10000;
if (global.c_width < 5)
global.c_width = 10000;
}
return ptoi(name, &c1->c_width);
if (!mh_strcasecmp(name, "compwidth"))
return ptoi(name, &c1->c_cwidth);
- if (!mh_strcasecmp(name, "length"))
- return ptoi(name, &c1->c_length);
for (ap = triples; ap->t_name; ap++)
if (!mh_strcasecmp(ap->t_name, name)) {
case BODY:
case FILEEOF:
- row = column = 0;
+ column = 0;
for (c1 = fmthd; c1; c1 = c1->c_next) {
if (c1->c_flags & CLEARTEXT) {
putcomp(c1, c1, ONECOMP);
c1->c_ovtxt = getcpy(global.c_ovtxt);
c1->c_offset = global.c_offset;
c1->c_ovoff = global. c_ovoff;
- c1->c_width = c1->c_length = 0;
+ c1->c_width = 0;
c1->c_cwidth = global.c_cwidth;
c1->c_flags |= global.c_flags & GFLAGS;
}
cchdr = 0;
lm = 0;
- llim = c1->c_length ? c1->c_length : -1;
wid = c1->c_width ? c1->c_width : global.c_width;
ovoff = (c1->c_ovoff >= 0 ? c1->c_ovoff : global.c_ovoff)
+ c1->c_offset;
static void
putch(char ch)
{
- char buf[BUFSIZ];
-
- if (llim == 0)
- return;
-
switch (ch) {
- case '\n':
- if (llim > 0)
- llim--;
- column = 0;
- row++;
- if (row != global.c_length)
- break;
- fflush(stdout);
- buf[0] = 0;
- read(fileno(stdout), buf, sizeof(buf));
- if (strchr(buf, '\n')) {
- row = 0;
- } else {
- putchar('\n');
- row = global.c_length / 3;
- }
- return;
-
case '\t':
column |= 07;
column++;
column--;
break;
+ case '\n':
case '\r':
column = 0;
break;