aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/term.h
diff options
context:
space:
mode:
authorKristaps Dzonsons <kristaps@bsd.lv>2010-06-09 08:07:13 +0000
committerKristaps Dzonsons <kristaps@bsd.lv>2010-06-09 08:07:13 +0000
commitdbcb21471c73a93f9436d4a342a5cc07d74fbf47 (patch)
treeaf1d82c5a84624d1e711a284999c60edd3fff340 /term.h
parent08669f3b61bca274d2da8109ff9079c3c9d33a6c (diff)
downloadmandoc-dbcb21471c73a93f9436d4a342a5cc07d74fbf47.tar.gz
mandoc-dbcb21471c73a93f9436d4a342a5cc07d74fbf47.tar.zst
mandoc-dbcb21471c73a93f9436d4a342a5cc07d74fbf47.zip
Have the standard manpage header and footer print on every page of -Tps
output. This is more tricky than you may think: we can't just call the header function out-of-state (i.e., before a flushln has occured) because we'd clobber our current state. Thus, we call at the beginning and dump the output into an auxiliary buffer. For the record, I don't think there's any other clean way to do this. The only other Way That Works is to copy-aside *all* termp state, zero it, and do the necessary headf/footf. This is just as complex, as memory needs to be alloc'd and free'd per margin. Unfortunately, this prohibits page numbering (the margin is only printed once), so I'll probably end up re-writing this down the line.
Diffstat (limited to 'term.h')
-rw-r--r--term.h17
1 files changed, 10 insertions, 7 deletions
diff --git a/term.h b/term.h
index 427610f4..ace4b9ba 100644
--- a/term.h
+++ b/term.h
@@ -1,4 +1,4 @@
-/* $Id: term.h,v 1.60 2010/06/08 15:00:17 kristaps Exp $ */
+/* $Id: term.h,v 1.61 2010/06/09 08:07:13 kristaps Exp $ */
/*
* Copyright (c) 2008, 2009 Kristaps Dzonsons <kristaps@kth.se>
*
@@ -41,12 +41,15 @@ enum termfont {
typedef void (*term_margin)(struct termp *, const void *);
struct termp_ps {
- int psstate; /* -Tps: state of ps output */
-#define PS_INLINE (1 << 0)
-#define PS_MARGINS (1 << 1)
- size_t pscol; /* -Tps: visible column */
- size_t psrow; /* -Tps: visible row */
- size_t pspage; /* -Tps: current page */
+ int psstate; /* state of ps output */
+#define PS_INLINE (1 << 0) /* we're in a word */
+#define PS_MARGINS (1 << 1) /* we're in the margins */
+ size_t pscol; /* visible column */
+ size_t psrow; /* visible row */
+ char *psmarg; /* margin buf */
+ size_t psmargsz; /* margin buf size */
+ size_t psmargcur; /* current pos in margin buf */
+ size_t pspage; /* current page */
};
struct termp {