355b4669e025ff377602b6fc7caaf30dbc218371jacobs/* $OpenBSD$ */
355b4669e025ff377602b6fc7caaf30dbc218371jacobs * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
355b4669e025ff377602b6fc7caaf30dbc218371jacobs * Copyright (c) 2010, 2012-2016 Ingo Schwarze <schwarze@openbsd.org>
355b4669e025ff377602b6fc7caaf30dbc218371jacobs * Permission to use, copy, modify, and distribute this software for any
355b4669e025ff377602b6fc7caaf30dbc218371jacobs * purpose with or without fee is hereby granted, provided that the above
355b4669e025ff377602b6fc7caaf30dbc218371jacobs * copyright notice and this permission notice appear in all copies.
355b4669e025ff377602b6fc7caaf30dbc218371jacobs * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHORS DISCLAIM ALL WARRANTIES
355b4669e025ff377602b6fc7caaf30dbc218371jacobs * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
355b4669e025ff377602b6fc7caaf30dbc218371jacobs * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR
355b4669e025ff377602b6fc7caaf30dbc218371jacobs * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
355b4669e025ff377602b6fc7caaf30dbc218371jacobs * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
355b4669e025ff377602b6fc7caaf30dbc218371jacobs * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
355b4669e025ff377602b6fc7caaf30dbc218371jacobs * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
37acf26adb79d43bb16f72774829c6f4655d0cc4"Nagaraj Yedathore - Sun Microsystems - Bangalore India"#include <ctype.h>
355b4669e025ff377602b6fc7caaf30dbc218371jacobs#define CHKARGS struct roff_man *man, struct roff_node *n
37acf26adb79d43bb16f72774829c6f4655d0cc4"Nagaraj Yedathore - Sun Microsystems - Bangalore India"static void post_vs(CHKARGS);
37acf26adb79d43bb16f72774829c6f4655d0cc4"Nagaraj Yedathore - Sun Microsystems - Bangalore India"static void post_ft(CHKARGS);
37acf26adb79d43bb16f72774829c6f4655d0cc4"Nagaraj Yedathore - Sun Microsystems - Bangalore India" while (man->last != NULL) {
37acf26adb79d43bb16f72774829c6f4655d0cc4"Nagaraj Yedathore - Sun Microsystems - Bangalore India" man->last = man->last->child;
37acf26adb79d43bb16f72774829c6f4655d0cc4"Nagaraj Yedathore - Sun Microsystems - Bangalore India" else
355b4669e025ff377602b6fc7caaf30dbc218371jacobs switch (n->type) {
37acf26adb79d43bb16f72774829c6f4655d0cc4"Nagaraj Yedathore - Sun Microsystems - Bangalore India" break;
3ac6dcfa0bf841831d4cfde190aa15173622957csonam gupta - Sun Microsystems - Bangalore India cp = man_valids + n->tok;
3ac6dcfa0bf841831d4cfde190aa15173622957csonam gupta - Sun Microsystems - Bangalore India (*cp)(man, n);
3ac6dcfa0bf841831d4cfde190aa15173622957csonam gupta - Sun Microsystems - Bangalore India if (man->last == n)
3ac6dcfa0bf841831d4cfde190aa15173622957csonam gupta - Sun Microsystems - Bangalore India man_state(man, n);
3ac6dcfa0bf841831d4cfde190aa15173622957csonam gupta - Sun Microsystems - Bangalore Indiacheck_root(CHKARGS)
3ac6dcfa0bf841831d4cfde190aa15173622957csonam gupta - Sun Microsystems - Bangalore India assert((man->flags & (MAN_BLINE | MAN_ELINE)) == 0);
3ac6dcfa0bf841831d4cfde190aa15173622957csonam gupta - Sun Microsystems - Bangalore India if (NULL == man->first->child)
3ac6dcfa0bf841831d4cfde190aa15173622957csonam gupta - Sun Microsystems - Bangalore India mandoc_msg(MANDOCERR_DOC_EMPTY, man->parse,
3ac6dcfa0bf841831d4cfde190aa15173622957csonam gupta - Sun Microsystems - Bangalore India n->line, n->pos, NULL);
3ac6dcfa0bf841831d4cfde190aa15173622957csonam gupta - Sun Microsystems - Bangalore India man->meta.hasbody = 1;
3ac6dcfa0bf841831d4cfde190aa15173622957csonam gupta - Sun Microsystems - Bangalore India if (NULL == man->meta.title) {
3ac6dcfa0bf841831d4cfde190aa15173622957csonam gupta - Sun Microsystems - Bangalore India mandoc_msg(MANDOCERR_TH_NOTITLE, man->parse,
3ac6dcfa0bf841831d4cfde190aa15173622957csonam gupta - Sun Microsystems - Bangalore India n->line, n->pos, NULL);
3ac6dcfa0bf841831d4cfde190aa15173622957csonam gupta - Sun Microsystems - Bangalore India * If a title hasn't been set, do so now (by
3ac6dcfa0bf841831d4cfde190aa15173622957csonam gupta - Sun Microsystems - Bangalore India * implication, date and section also aren't set).
3ac6dcfa0bf841831d4cfde190aa15173622957csonam gupta - Sun Microsystems - Bangalore India man->meta.title = mandoc_strdup("");
3ac6dcfa0bf841831d4cfde190aa15173622957csonam gupta - Sun Microsystems - Bangalore India man->meta.msec = mandoc_strdup("");
3ac6dcfa0bf841831d4cfde190aa15173622957csonam gupta - Sun Microsystems - Bangalore India man->meta.date = man->quick ? mandoc_strdup("") :
3ac6dcfa0bf841831d4cfde190aa15173622957csonam gupta - Sun Microsystems - Bangalore India mandoc_normdate(man->parse, NULL, n->line, n->pos);
3ac6dcfa0bf841831d4cfde190aa15173622957csonam gupta - Sun Microsystems - Bangalore Indiacheck_text(CHKARGS)
3ac6dcfa0bf841831d4cfde190aa15173622957csonam gupta - Sun Microsystems - Bangalore India char *cp, *p;
3ac6dcfa0bf841831d4cfde190aa15173622957csonam gupta - Sun Microsystems - Bangalore India if (MAN_LITERAL & man->flags)
3ac6dcfa0bf841831d4cfde190aa15173622957csonam gupta - Sun Microsystems - Bangalore India cp = n->string;
3ac6dcfa0bf841831d4cfde190aa15173622957csonam gupta - Sun Microsystems - Bangalore India for (p = cp; NULL != (p = strchr(p, '\t')); p++)
3ac6dcfa0bf841831d4cfde190aa15173622957csonam gupta - Sun Microsystems - Bangalore India mandoc_msg(MANDOCERR_FI_TAB, man->parse,
3ac6dcfa0bf841831d4cfde190aa15173622957csonam gupta - Sun Microsystems - Bangalore India n->line, n->pos + (p - cp), NULL);
3ac6dcfa0bf841831d4cfde190aa15173622957csonam gupta - Sun Microsystems - Bangalore India if (n->child == NULL)
3ac6dcfa0bf841831d4cfde190aa15173622957csonam gupta - Sun Microsystems - Bangalore India mandoc_msg(MANDOCERR_OP_EMPTY, man->parse,
3ac6dcfa0bf841831d4cfde190aa15173622957csonam gupta - Sun Microsystems - Bangalore India n->line, n->pos, "OP");
3ac6dcfa0bf841831d4cfde190aa15173622957csonam gupta - Sun Microsystems - Bangalore India else if (n->child->next != NULL && n->child->next->next != NULL) {
3ac6dcfa0bf841831d4cfde190aa15173622957csonam gupta - Sun Microsystems - Bangalore India n = n->child->next->next;
3ac6dcfa0bf841831d4cfde190aa15173622957csonam gupta - Sun Microsystems - Bangalore India mandoc_vmsg(MANDOCERR_ARG_EXCESS, man->parse,
3ac6dcfa0bf841831d4cfde190aa15173622957csonam gupta - Sun Microsystems - Bangalore India n->line, n->pos, "OP ... %s", n->string);
3ac6dcfa0bf841831d4cfde190aa15173622957csonam gupta - Sun Microsystems - Bangalore Indiapost_UR(CHKARGS)
3ac6dcfa0bf841831d4cfde190aa15173622957csonam gupta - Sun Microsystems - Bangalore India if (n->type == ROFFT_HEAD && n->child == NULL)
3ac6dcfa0bf841831d4cfde190aa15173622957csonam gupta - Sun Microsystems - Bangalore India mandoc_vmsg(MANDOCERR_UR_NOHEAD, man->parse,
ok = 0;
switch (*cp) {
if (0 == ok) {
switch (n->type) {
case ROFFT_BLOCK:
case ROFFT_BODY:
case ROFFT_HEAD:
switch (n->type) {
case ROFFT_BLOCK:
case ROFFT_BODY:
nb = n;
n = n->child;
if (n && n->string) {
if (isalpha((unsigned char)*p) &&
! isupper((unsigned char)*p)) {
n = n->next;
if (n && n->string)
n = n->next;
if (n && (n = n->next))
if (n && (n = n->next))
n = n->child;
p = bsd_versions[0];
s = n->string;
p = bsd_versions[0];
p = bsd_versions[0];
n = n->child;
p = unix_versions[0];
s = n->string;
p = unix_versions[0];
p = unix_versions[0];
case MAN_SH:
case MAN_SS:
case TOKEN_NONE: