From 943765e7ac5693ae177fd8d2b5a2440e53ce816e Mon Sep 17 00:00:00 2001 From: markus schnalke Date: Fri, 10 Feb 2012 16:43:55 +0100 Subject: [PATCH] Removed the -clear switch from mhl. This stuff is the task of the pager, not the one of the formater mhl. --- man/mh-chart.man1 | 1 - man/mh-profile.man5 | 3 +- man/mhl.man1 | 72 ++++------------------------------- uip/mhl.c | 104 +++++++++++++-------------------------------------- uip/repl.c | 2 +- uip/termsbr.c | 19 ---------- 6 files changed, 37 insertions(+), 164 deletions(-) diff --git a/man/mh-chart.man1 b/man/mh-chart.man1 index 1dbf20f..ba2ab36 100644 --- a/man/mh-chart.man1 +++ b/man/mh-chart.man1 @@ -254,7 +254,6 @@ is equivalent to .HP 5 .B mhl -.RB [ \-clear " | " \-noclear ] .RB [ \-folder .IR +folder ] .RB [ \-form diff --git a/man/mh-profile.man5 b/man/mh-profile.man5 index 57e27cb..28fae32 100644 --- a/man/mh-profile.man5 +++ b/man/mh-profile.man5 @@ -684,8 +684,7 @@ these tell .B scan and .B mhl -how to clear your terminal, and how -many columns wide your terminal is. They also tell +how many columns wide your terminal is. They also tell .B mhl how many lines long your terminal screen is. diff --git a/man/mhl.man1 b/man/mhl.man1 index de44448..9f84170 100644 --- a/man/mhl.man1 +++ b/man/mhl.man1 @@ -8,7 +8,6 @@ mhl \- produce formatted listings of nmh messages .HP 5 .na .B mhl -.RB [ \-clear " | " \-noclear ] .RB [ \-folder .IR +folder ] .RB [ \-form @@ -34,32 +33,7 @@ messages. It is the default method of displaying text messages for (it is the default .IR showproc ). .PP -As with -.BR more , -each of the messages specified as arguments (or -the standard input) will be output. If more than one message file is -specified, the user will be prompted prior to each one, and a -or will begin the output, with clearing the screen (if -appropriate), and (usually CTRL\-D) suppressing the screen clear. -An (usually CTRL\-C) will abort the current message output, -prompting for the next message (if there is one), and a (usually -CTRL-\\) will terminate the program (without core dump). -.PP -The -.B \-clear -option tells -.B mhl -to clear the -screen at the end of each page (or output a formfeed after each message). -This switches (and its inverse counterpart) take effect only -if the profile entry -.I moreproc -is defined but empty, and -.B mhl -is outputting to a terminal. If the -.I moreproc -entry is defined and -non-empty, and +If .B mhl is outputting to a terminal, then .B mhl @@ -67,38 +41,14 @@ will cause the .I moreproc to be placed between the terminal and -.B mhl -and the switches are ignored. Furthermore, if the -.B \-clear -switch is -used and \fImhl's\fR output is directed to a terminal, then -.B mhl -will consult the -.B $TERM -and -.B $TERMCAP -environment variables -to determine the user's terminal type in order to find out how to clear -the screen. If the -.B \-clear -switch is used and -.BR mhl 's -output is -not directed to a terminal (e.g., a pipe or a file), then -.B mhl -will -send a formfeed after each message. +.BR mhl . .PP To override the default .I moreproc and the profile entry, use the .B \-moreproc .I program -switch. Note that -.B mhl -will never start a -.I moreproc -if invoked on a hardcopy terminal. +switch. .PP The .B \-length @@ -156,7 +106,7 @@ of the format is produced as a structured list. In phase 2, this list is walked for each message, outputting message information under the format constraints from the format file. .PP -The format file can contain information controlling screen clearing, +The format file can contain information controlling screen size, wrap\-around control, transparent text, component ordering, and component formatting. Also, a list of components to ignore may be specified, and a couple of \*(lqspecial\*(rq components are defined @@ -189,11 +139,11 @@ Remaining lines define the global environment. For example, the line: .PP .RS 5 -width=80,length=40,clearscreen,overflowtext="***",overflowoffset=5 +width=80,length=40,overflowtext="***",overflowoffset=5 .RE .PP defines the screen size to be 80 columns by 40 rows, specifies that the -screen should be cleared prior to each page, that the overflow indentation +overflow indentation is 5, and that overflow text should be flagged with \*(lq***\*(rq. .PP Following are all of the current variables and their arguments. If they @@ -201,11 +151,11 @@ follow a component, they apply only to that component, otherwise, their 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., -clearscreen, width, length). +width, length). .PP .RS 5 .nf -.ta \w'noclearscreen 'u +\w'integer/G 'u +.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 @@ -218,8 +168,6 @@ compwidth integer positions to indent component text uppercase flag output text of this component in all upper case nouppercase flag don't uppercase -clearscreen flag/G clear the screen prior to each page -noclearscreen flag/G don't clearscreen component string/L name to use instead of \*(lqcomponent\*(rq for this component nocomponent flag don't output \*(lqcomponent: \*(rq for this @@ -333,7 +281,6 @@ show(1), ap(8), dp(8) .SH DEFAULTS .nf -.RB ` \-noclear ' .RB ` \-length 40 ' .RB ` \-width 80 ' .fi @@ -349,8 +296,5 @@ tool, the switch does only take file names, but no format strings with a prepended equal sign `='. .PP -There should be some way to pass `clear' information to the -front\-end. -.PP The \*(lqnonewline\*(rq option interacts badly with \*(lqcompress\*(rq and \*(lqsplit\*(rq. diff --git a/uip/mhl.c b/uip/mhl.c index ef5f860..e778fc3 100644 --- a/uip/mhl.c +++ b/uip/mhl.c @@ -41,37 +41,33 @@ #define QUOTE '\\' static struct swit mhlswitches[] = { -#define CLRSW 0 - { "clear", 0 }, -#define NCLRSW 1 - { "noclear", 0 }, -#define FOLDSW 2 +#define FOLDSW 0 { "folder +folder", 0 }, -#define FORMSW 3 +#define FORMSW 1 { "form formfile", 0 }, -#define PROGSW 4 +#define PROGSW 2 { "moreproc program", 0 }, -#define LENSW 5 +#define LENSW 3 { "length lines", 0 }, -#define WIDTHSW 6 +#define WIDTHSW 4 { "width columns", 0 }, -#define SLEEPSW 7 +#define SLEEPSW 5 { "sleep seconds", 0 }, -#define VERSIONSW 8 +#define VERSIONSW 6 { "version", 0 }, -#define HELPSW 9 +#define HELPSW 7 { "help", 0 }, -#define FORW1SW 10 +#define FORW1SW 8 { "forward", -7 }, -#define FORW2SW 11 +#define FORW2SW 9 { "forwall", -7 }, -#define DGSTSW 12 +#define DGSTSW 10 { "digest list", -6 }, -#define VOLUMSW 13 +#define VOLUMSW 11 { "volume number", -6 }, -#define ISSUESW 14 +#define ISSUESW 12 { "issue number", -5 }, -#define NBODYSW 15 +#define NBODYSW 13 { "nobody", -6 }, { NULL, 0 } }; @@ -82,16 +78,15 @@ static struct swit mhlswitches[] = { #define CLEARTEXT 0x000008 /* cleartext */ #define EXTRA 0x000010 /* an "extra" component */ #define HDROUTPUT 0x000020 /* already output */ -#define CLEARSCR 0x000040 /* clear screen */ -#define LEFTADJUST 0x000080 /* left justify multiple lines */ -#define COMPRESS 0x000100 /* compress text */ -#define ADDRFMT 0x000200 /* contains addresses */ -#define DATEFMT 0x000400 /* contains dates */ -#define FORMAT 0x000800 /* parse address/date/RFC-2047 field */ -#define INIT 0x001000 /* initialize component */ -#define SPLIT 0x002000 /* split headers (don't concatenate) */ -#define NONEWLINE 0x004000 /* don't write trailing newline */ -#define LBITS "\020\01NOCOMPONENT\02UPPERCASE\03CENTER\04CLEARTEXT\05EXTRA\06HDROUTPUT\07CLEARSCR\010LEFTADJUST\011COMPRESS\012ADDRFMT\013DATEFMT\014FORMAT\015INIT\016SPLIT\017NONEWLINE" +#define LEFTADJUST 0x000040 /* left justify multiple lines */ +#define COMPRESS 0x000080 /* compress text */ +#define ADDRFMT 0x000100 /* contains addresses */ +#define DATEFMT 0x000200 /* contains dates */ +#define FORMAT 0x000400 /* parse address/date/RFC-2047 field */ +#define INIT 0x000800 /* initialize component */ +#define SPLIT 0x001000 /* split headers (don't concatenate) */ +#define NONEWLINE 0x002000 /* don't write trailing newline */ +#define LBITS "\020\01NOCOMPONENT\02UPPERCASE\03CENTER\04CLEARTEXT\05EXTRA\06HDROUTPUT\07LEFTADJUST\010COMPRESS\011ADDRFMT\012DATEFMT\013FORMAT\014INIT\015SPLIT\016NONEWLINE" #define GFLAGS (NOCOMPONENT | UPPERCASE | CENTER | LEFTADJUST | COMPRESS | SPLIT) struct mcomp { @@ -157,9 +152,6 @@ static struct triple triples[] = { { "nouppercase", 0, UPPERCASE }, { "center", CENTER, 0 }, { "nocenter", 0, CENTER }, - { "clearscreen", CLEARSCR, 0 }, - { "noclearscreen", 0, CLEARSCR }, - { "noclear", 0, CLEARSCR }, { "leftadjust", LEFTADJUST, 0 }, { "noleftadjust", 0, LEFTADJUST }, { "compress", COMPRESS, 0 }, @@ -174,7 +166,6 @@ static struct triple triples[] = { }; -static int clearflg = 0; static int dobody = 1; static int forwflg = 0; static int forwall = 0; @@ -256,7 +247,6 @@ static void m_popen(char *); void m_pclose(void); -void clear_screen(void); /* from termsbr.c */ int SOprintf(char *, ...); /* from termsbr.c */ int sc_width(void); /* from termsbr.c */ int sc_length(void); /* from termsbr.c */ @@ -304,13 +294,6 @@ main(int argc, char **argv) print_version(invo_name); done(1); - case CLRSW: - clearflg = 1; - continue; - case NCLRSW: - clearflg = -1; - continue; - case FOLDSW: if (!(folder = *argp++) || *folder == '-') adios(NULL, "missing argument to %s", @@ -379,7 +362,6 @@ main(int argc, char **argv) forwall++; /* fall */ case FORW1SW: forwflg++; - clearflg = -1;/* XXX */ continue; case NBODYSW: @@ -439,9 +421,6 @@ main(int argc, char **argv) adios("output", "error writing"); } - if (clearflg > 0 && ontty == NOTTY) - clear_screen(); - if (ontty == PITTY) m_pclose(); @@ -582,13 +561,6 @@ mhl_format(char *file, int length, int width) } out: - if (clearflg == 1) { - global.c_flags |= CLEARSCR; - } else { - if (clearflg == -1) - global.c_flags &= ~CLEARSCR; - } - if (length) global.c_length = length; if (width) @@ -796,31 +768,11 @@ mhlfile(FILE *fp, char *mname, int ofilen, int ofilec) printf(" Message %d", ofilen); printf("\n\n"); } - } else { - switch (ontty) { - case PITTY: - if (ofilec > 1) { - if (ofilen > 1) { - if ((global.c_flags & CLEARSCR)) - clear_screen(); - else - printf("\n\n\n"); - } - printf(">>> %s\n\n", mname); - } - break; - - default: - if (ofilec > 1) { - if (ofilen > 1) { - printf("\n\n\n"); - if (clearflg > 0) - clear_screen(); - } - printf(">>> %s\n\n", mname); - } - break; + } else if (ofilec > 1) { + if (ofilen > 1) { + printf("\n\n\n"); } + printf(">>> %s\n\n", mname); } for (state = FLD;;) { @@ -1285,8 +1237,6 @@ putch(char ch) buf[0] = 0; read(fileno(stdout), buf, sizeof(buf)); if (strchr(buf, '\n')) { - if (global.c_flags & CLEARSCR) - clear_screen(); row = 0; } else { putchar('\n'); diff --git a/uip/repl.c b/uip/repl.c index efc2b54..469bdd9 100644 --- a/uip/repl.c +++ b/uip/repl.c @@ -787,7 +787,7 @@ replfilter(FILE *in, FILE *out, char *filter) dup2(fileno(out), fileno(stdout)); closefds(3); - execlp(mhlproc, mhl, "-form", filter, "-noclear", NULL); + execlp(mhlproc, mhl, "-form", filter, NULL); errstr = strerror(errno); write(2, "unable to exec ", 15); write(2, mhlproc, strlen(mhlproc)); diff --git a/uip/termsbr.c b/uip/termsbr.c index e7ba35a..a4b5074 100644 --- a/uip/termsbr.c +++ b/uip/termsbr.c @@ -62,7 +62,6 @@ static int initCO = 0; static int LI = 40; /* number of lines */ static int CO = 80; /* number of colums */ -static char *CL = NULL; /* termcap string to clear screen */ static char *SE = NULL; /* termcap string to end standout mode */ static char *SO = NULL; /* termcap string to begin standout mode */ @@ -126,7 +125,6 @@ read_termcap(void) LI = 24; cp = termcap; - CL = tgetstr("cl", &cp); if ((bp = tgetstr("pc", &cp))) PC = *bp; if (tgetnum("sg") <= 0) { @@ -172,23 +170,6 @@ sc_length(void) } -void -clear_screen(void) -{ - read_termcap(); - - if (CL && speedcode) - tputs(CL, LI, putchar); - else { - printf("\f"); - if (speedcode) - printf("\200"); - } - - fflush(stdout); -} - - /* ** print in standout mode */ -- 1.7.10.4