From 86fcbc2e37c7ce462902083265822b79401cecf7 Mon Sep 17 00:00:00 2001 From: Kristaps Dzonsons Date: Thu, 13 Aug 2009 12:15:58 +0000 Subject: Added full `HP' libman macro support. --- man_term.c | 39 ++++++++++++++++++++++++++++++++++++--- 1 file changed, 36 insertions(+), 3 deletions(-) (limited to 'man_term.c') diff --git a/man_term.c b/man_term.c index 63528761..4d411f24 100644 --- a/man_term.c +++ b/man_term.c @@ -1,4 +1,4 @@ -/* $Id: man_term.c,v 1.19 2009/08/13 11:45:29 kristaps Exp $ */ +/* $Id: man_term.c,v 1.20 2009/08/13 12:15:58 kristaps Exp $ */ /* * Copyright (c) 2008, 2009 Kristaps Dzonsons * @@ -66,6 +66,7 @@ static int pre_sp(DECL_ARGS); static void post_B(DECL_ARGS); static void post_I(DECL_ARGS); +static void post_HP(DECL_ARGS); static void post_SH(DECL_ARGS); static void post_SS(DECL_ARGS); static void post_i(DECL_ARGS); @@ -80,7 +81,7 @@ static const struct termact termacts[MAN_MAX] = { { pre_PP, NULL }, /* PP */ { pre_PP, NULL }, /* P */ { pre_IP, NULL }, /* IP */ - { pre_HP, NULL }, /* HP */ + { pre_HP, post_HP }, /* HP */ { NULL, NULL }, /* SM */ { pre_B, post_B }, /* SB */ { pre_BI, NULL }, /* BI */ @@ -407,11 +408,43 @@ static int pre_HP(DECL_ARGS) { - /* TODO */ + switch (n->type) { + case (MAN_BLOCK): + fmt_block_vspace(p, n); + break; + case (MAN_BODY): + p->flags |= TERMP_NOBREAK; + p->flags |= TERMP_TWOSPACE; + p->offset = INDENT; + p->rmargin = INDENT * 2; + break; + default: + return(0); + } + return(1); } +/* ARGSUSED */ +static void +post_HP(DECL_ARGS) +{ + + switch (n->type) { + case (MAN_BODY): + term_flushln(p); + p->flags &= ~TERMP_NOBREAK; + p->flags &= ~TERMP_TWOSPACE; + p->offset = INDENT; + p->rmargin = p->maxrmargin; + break; + default: + break; + } +} + + /* ARGSUSED */ static int pre_PP(DECL_ARGS) -- cgit v1.2.3