diff options
author | Ingo Schwarze <schwarze@cvs.openbsd.org> | 2014-09-17 20:17:56 +0000 |
---|---|---|
committer | Ingo Schwarze <schwarze@cvs.openbsd.org> | 2014-09-17 20:17:56 +0000 |
commit | ba8b3f3e32dcd258742a04aeb1b32c1a6510c4e6 (patch) | |
tree | 0eb78b619b28c976df1c80cdcb093b351439c194 /usr.bin | |
parent | 1aeb187d757e8043d33978235f67dcb0a2afccbb (diff) |
simplify handling of .An -[no]split for terminal output:
delete one static function, one flag #define, and 25 lines of code;
no functional change
Diffstat (limited to 'usr.bin')
-rw-r--r-- | usr.bin/mandoc/mdoc_term.c | 62 | ||||
-rw-r--r-- | usr.bin/mandoc/term.h | 7 |
2 files changed, 20 insertions, 49 deletions
diff --git a/usr.bin/mandoc/mdoc_term.c b/usr.bin/mandoc/mdoc_term.c index 4169f402fe5..6652ff5b31f 100644 --- a/usr.bin/mandoc/mdoc_term.c +++ b/usr.bin/mandoc/mdoc_term.c @@ -1,4 +1,4 @@ -/* $OpenBSD: mdoc_term.c,v 1.180 2014/09/03 05:17:08 schwarze Exp $ */ +/* $OpenBSD: mdoc_term.c,v 1.181 2014/09/17 20:17:55 schwarze Exp $ */ /* * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv> * Copyright (c) 2010, 2012, 2013, 2014 Ingo Schwarze <schwarze@openbsd.org> @@ -63,7 +63,6 @@ static void synopsis_pre(struct termp *, static void termp____post(DECL_ARGS); static void termp__t_post(DECL_ARGS); -static void termp_an_post(DECL_ARGS); static void termp_bd_post(DECL_ARGS); static void termp_bk_post(DECL_ARGS); static void termp_bl_post(DECL_ARGS); @@ -136,7 +135,7 @@ static const struct termact termacts[MDOC_MAX] = { { NULL, NULL }, /* El */ { termp_it_pre, termp_it_post }, /* It */ { termp_under_pre, NULL }, /* Ad */ - { termp_an_pre, termp_an_post }, /* An */ + { termp_an_pre, NULL }, /* An */ { termp_under_pre, NULL }, /* Ar */ { termp_cd_pre, NULL }, /* Cd */ { termp_bold_pre, NULL }, /* Cm */ @@ -1104,54 +1103,27 @@ static int termp_an_pre(DECL_ARGS) { - if (NULL == n->child) - return(1); - - /* - * If not in the AUTHORS section, `An -split' will cause - * newlines to occur before the author name. If in the AUTHORS - * section, by default, the first `An' invocation is nosplit, - * then all subsequent ones, regardless of whether interspersed - * with other macros/text, are split. -split, in this case, - * will override the condition of the implied first -nosplit. - */ - - if (n->sec == SEC_AUTHORS) { - if ( ! (TERMP_ANPREC & p->flags)) { - if (TERMP_SPLIT & p->flags) - term_newln(p); - return(1); - } - if (TERMP_NOSPLIT & p->flags) - return(1); - term_newln(p); - return(1); - } - - if (TERMP_SPLIT & p->flags) - term_newln(p); - - return(1); -} - -static void -termp_an_post(DECL_ARGS) -{ - - if (n->child) { - if (SEC_AUTHORS == n->sec) - p->flags |= TERMP_ANPREC; - return; - } - - if (AUTH_split == n->norm->An.auth) { + if (n->norm->An.auth == AUTH_split) { p->flags &= ~TERMP_NOSPLIT; p->flags |= TERMP_SPLIT; - } else if (AUTH_nosplit == n->norm->An.auth) { + return(0); + } + if (n->norm->An.auth == AUTH_nosplit) { p->flags &= ~TERMP_SPLIT; p->flags |= TERMP_NOSPLIT; + return(0); } + if (n->child == NULL) + return(0); + + if (p->flags & TERMP_SPLIT) + term_newln(p); + + if (n->sec == SEC_AUTHORS && ! (p->flags & TERMP_NOSPLIT)) + p->flags |= TERMP_SPLIT; + + return(1); } static int diff --git a/usr.bin/mandoc/term.h b/usr.bin/mandoc/term.h index 40783cd992e..e79926f0f73 100644 --- a/usr.bin/mandoc/term.h +++ b/usr.bin/mandoc/term.h @@ -1,4 +1,4 @@ -/* $OpenBSD: term.h,v 1.46 2014/09/03 05:17:08 schwarze Exp $ */ +/* $OpenBSD: term.h,v 1.47 2014/09/17 20:17:55 schwarze Exp $ */ /* * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv> * Copyright (c) 2011, 2012, 2013, 2014 Ingo Schwarze <schwarze@openbsd.org> @@ -81,9 +81,8 @@ struct termp { #define TERMP_BRIND (1 << 9) /* See term_flushln(). */ #define TERMP_DANGLE (1 << 10) /* See term_flushln(). */ #define TERMP_HANG (1 << 11) /* See term_flushln(). */ -#define TERMP_NOSPLIT (1 << 12) /* See termp_an_pre/post(). */ -#define TERMP_SPLIT (1 << 13) /* See termp_an_pre/post(). */ -#define TERMP_ANPREC (1 << 14) /* See termp_an_pre(). */ +#define TERMP_NOSPLIT (1 << 12) /* Do not break line before .An. */ +#define TERMP_SPLIT (1 << 13) /* Break line before .An. */ int *buf; /* Output buffer. */ enum termenc enc; /* Type of encoding. */ struct mchars *symtab; /* Encoded-symbol table. */ |