From e1161d8a3fbeac9d7533b7553a92850ee8c3e809 Mon Sep 17 00:00:00 2001 From: Kristaps Dzonsons Date: Mon, 28 Mar 2011 23:52:13 +0000 Subject: Have libman and libmdoc use mandoc_getcontrol() to determine whether a macro has been invoked. libroff is next. --- mandoc.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'mandoc.c') diff --git a/mandoc.c b/mandoc.c index 52ec4017..3d1d0f99 100644 --- a/mandoc.c +++ b/mandoc.c @@ -506,3 +506,28 @@ mandoc_hyph(const char *start, const char *c) return(1); } +/* + * Find out whether a line is a macro line or not. If it is, adjust the + * current position and return one; if it isn't, return zero and don't + * change the current position. + */ +int +mandoc_getcontrol(const char *cp, int *ppos) +{ + int pos; + + pos = *ppos; + + if ('\\' == cp[pos] && '.' == cp[pos + 1]) + pos += 2; + else if ('.' == cp[pos] || '\'' == cp[pos]) + pos++; + else + return(0); + + while (' ' == cp[pos] || '\t' == cp[pos]) + pos++; + + *ppos = pos; + return(1); +} -- cgit