From: schwarze@mdocml.bsd.lv
To: source@mdocml.bsd.lv
Subject: mdocml: Sync print_mdoc_head to print_man_head; this
Date: Tue, 20 Sep 2011 05:02:23 -0400 (EDT) [thread overview]
Message-ID: <201109200902.p8K92Nc9029689@krisdoz.my.domain> (raw)
Log Message:
-----------
Sync print_mdoc_head to print_man_head;
this was forgotten after man_term.c rev. 1.25 on March 2, 2010.
The benefit is a sane page header line when .Dt is very long.
Reminded by Thomas Klausner <wiz at NetBSD>, thanks.
Modified Files:
--------------
mdocml:
man_term.c
mdoc_term.c
Revision Data
-------------
Index: man_term.c
===================================================================
RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/man_term.c,v
retrieving revision 1.117
retrieving revision 1.118
diff -Lman_term.c -Lman_term.c -u -p -r1.117 -r1.118
--- man_term.c
+++ man_term.c
@@ -1007,9 +1007,9 @@ print_man_head(struct termp *p, const vo
* point we did so here.
*/
+ p->offset = 0;
p->rmargin = p->maxrmargin;
- p->offset = 0;
buf[0] = title[0] = '\0';
if (m->vol)
@@ -1019,12 +1019,12 @@ print_man_head(struct termp *p, const vo
snprintf(title, BUFSIZ, "%s(%s)", m->title, m->msec);
titlen = term_strlen(p, title);
+ p->flags |= TERMP_NOBREAK | TERMP_NOSPACE;
p->offset = 0;
p->rmargin = 2 * (titlen+1) + buflen < p->maxrmargin ?
(p->maxrmargin -
term_strlen(p, buf) + term_len(p, 1)) / 2 :
p->maxrmargin - buflen;
- p->flags |= TERMP_NOBREAK | TERMP_NOSPACE;
term_word(p, title);
term_flushln(p);
@@ -1046,9 +1046,9 @@ print_man_head(struct termp *p, const vo
term_flushln(p);
}
- p->rmargin = p->maxrmargin;
- p->offset = 0;
p->flags &= ~TERMP_NOSPACE;
+ p->offset = 0;
+ p->rmargin = p->maxrmargin;
/*
* Groff likes to have some leading spaces before content. Well
Index: mdoc_term.c
===================================================================
RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/mdoc_term.c,v
retrieving revision 1.234
retrieving revision 1.235
diff -Lmdoc_term.c -Lmdoc_term.c -u -p -r1.234 -r1.235
--- mdoc_term.c
+++ mdoc_term.c
@@ -458,13 +458,11 @@ static void
print_mdoc_head(struct termp *p, const void *arg)
{
char buf[BUFSIZ], title[BUFSIZ];
+ size_t buflen, titlen;
const struct mdoc_meta *m;
m = (const struct mdoc_meta *)arg;
- p->rmargin = p->maxrmargin;
- p->offset = 0;
-
/*
* The header is strange. It has three components, which are
* really two with the first duplicated. It goes like this:
@@ -478,8 +476,12 @@ print_mdoc_head(struct termp *p, const v
* switches on the manual section.
*/
+ p->offset = 0;
+ p->rmargin = p->maxrmargin;
+
assert(m->vol);
strlcpy(buf, m->vol, BUFSIZ);
+ buflen = term_strlen(p, buf);
if (m->arch) {
strlcat(buf, " (", BUFSIZ);
@@ -488,33 +490,38 @@ print_mdoc_head(struct termp *p, const v
}
snprintf(title, BUFSIZ, "%s(%s)", m->title, m->msec);
+ titlen = term_strlen(p, title);
- p->offset = 0;
- p->rmargin = (p->maxrmargin -
- term_strlen(p, buf) + term_len(p, 1)) / 2;
p->flags |= TERMP_NOBREAK | TERMP_NOSPACE;
+ p->offset = 0;
+ p->rmargin = 2 * (titlen+1) + buflen < p->maxrmargin ?
+ (p->maxrmargin -
+ term_strlen(p, buf) + term_len(p, 1)) / 2 :
+ p->maxrmargin - buflen;
term_word(p, title);
term_flushln(p);
- p->offset = p->rmargin;
- p->rmargin = p->maxrmargin - term_strlen(p, title);
p->flags |= TERMP_NOSPACE;
+ p->offset = p->rmargin;
+ p->rmargin = p->offset + buflen + titlen < p->maxrmargin ?
+ p->maxrmargin - titlen : p->maxrmargin;
term_word(p, buf);
term_flushln(p);
- p->offset = p->rmargin;
- p->rmargin = p->maxrmargin;
p->flags &= ~TERMP_NOBREAK;
- p->flags |= TERMP_NOSPACE;
-
- term_word(p, title);
- term_flushln(p);
+ if (p->rmargin + titlen <= p->maxrmargin) {
+ p->flags |= TERMP_NOSPACE;
+ p->offset = p->rmargin;
+ p->rmargin = p->maxrmargin;
+ term_word(p, title);
+ term_flushln(p);
+ }
+ p->flags &= ~TERMP_NOSPACE;
p->offset = 0;
p->rmargin = p->maxrmargin;
- p->flags &= ~TERMP_NOSPACE;
}
--
To unsubscribe send an email to source+unsubscribe@mdocml.bsd.lv
next reply other threads:[~2011-09-20 9:02 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-09-20 9:02 schwarze [this message]
2011-09-20 11:06 ` mdocml: Sync print_mdoc_head to print_man_head; Kristaps Dzonsons
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=201109200902.p8K92Nc9029689@krisdoz.my.domain \
--to=schwarze@mdocml.bsd.lv \
--cc=source@mdocml.bsd.lv \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).