コード例 #1
0
ファイル: mdoc_term.c プロジェクト: gokzy/netbsd-src
static int
termp_sp_pre(DECL_ARGS)
{
	struct roffsu	 su;
	int		 i, len;

	switch (n->tok) {
	case MDOC_sp:
		if (n->child) {
			if ( ! a2roffsu(n->child->string, &su, SCALE_VS))
				su.scale = 1.0;
			len = term_vspan(p, &su);
		} else
			len = 1;
		break;
	case MDOC_br:
		len = 0;
		break;
	default:
		len = 1;
		fn_prio = 0;
		break;
	}

	if (0 == len)
		term_newln(p);
	else if (len < 0)
		p->skipvsp -= len;
	else
		for (i = 0; i < len; i++)
			term_vspace(p);

	return 0;
}
コード例 #2
0
static size_t
a2height(const struct termp *p, const char *cp)
{
	struct roffsu	 su;

	if ( ! a2roffsu(cp, &su, SCALE_VS))
		SCALE_VS_INIT(&su, atoi(cp));

	return(term_vspan(p, &su));
}
コード例 #3
0
static size_t
a2height(const struct termp *p, const char *v)
{
	struct roffsu	 su;

	assert(v);
	if ( ! a2roffsu(v, &su, SCALE_VS))
		SCALE_VS_INIT(&su, term_len(p, 1));

	return(term_vspan(p, &su));
}
コード例 #4
0
ファイル: man_term.c プロジェクト: ajinkya93/OpenBSD
static int
pre_sp(DECL_ARGS)
{
	struct roffsu	 su;
	int		 i, len;

	if ((NULL == n->prev && n->parent)) {
		switch (n->parent->tok) {
		case MAN_SH:
		case MAN_SS:
		case MAN_PP:
		case MAN_LP:
		case MAN_P:
			return 0;
		default:
			break;
		}
	}

	if (n->tok == MAN_br)
		len = 0;
	else if (n->child == NULL)
		len = 1;
	else {
		if ( ! a2roffsu(n->child->string, &su, SCALE_VS))
			su.scale = 1.0;
		len = term_vspan(p, &su);
	}

	if (len == 0)
		term_newln(p);
	else if (len < 0)
		p->skipvsp -= len;
	else
		for (i = 0; i < len; i++)
			term_vspace(p);

	/*
	 * Handle an explicit break request in the same way
	 * as an overflowing line.
	 */

	if (p->flags & TERMP_BRIND) {
		p->offset = p->rmargin;
		p->rmargin = p->maxrmargin;
		p->flags &= ~(TERMP_NOBREAK | TERMP_BRIND);
	}

	return 0;
}
コード例 #5
0
ファイル: man_term.c プロジェクト: ajinkya93/OpenBSD
static int
pre_PD(DECL_ARGS)
{
	struct roffsu	 su;

	n = n->child;
	if (n == NULL) {
		mt->pardist = 1;
		return 0;
	}
	assert(n->type == ROFFT_TEXT);
	if (a2roffsu(n->string, &su, SCALE_VS))
		mt->pardist = term_vspan(p, &su);
	return 0;
}
コード例 #6
0
ファイル: man_term.c プロジェクト: ajinkya93/netbsd-src
static int
pre_sp(DECL_ARGS)
{
	struct roffsu	 su;
	int		 i, len;

	if ((NULL == n->prev && n->parent)) {
		switch (n->parent->tok) {
		case MAN_SH:
			/* FALLTHROUGH */
		case MAN_SS:
			/* FALLTHROUGH */
		case MAN_PP:
			/* FALLTHROUGH */
		case MAN_LP:
			/* FALLTHROUGH */
		case MAN_P:
			/* FALLTHROUGH */
			return(0);
		default:
			break;
		}
	}

	if (n->tok == MAN_br)
		len = 0;
	else if (n->child == NULL)
		len = 1;
	else {
		if ( ! a2roffsu(n->child->string, &su, SCALE_VS))
			su.scale = 1.0;
		len = term_vspan(p, &su);
	}

	if (len == 0)
		term_newln(p);
	else if (len < 0)
		p->skipvsp -= len;
	else
		for (i = 0; i < len; i++)
			term_vspace(p);

	return(0);
}
コード例 #7
0
ファイル: roff_term.c プロジェクト: jaredmcneill/netbsd-src
static void
roff_term_pre_sp(ROFF_TERM_ARGS)
{
	struct roffsu	 su;
	int		 len;

	if (n->child != NULL) {
		if (a2roffsu(n->child->string, &su, SCALE_VS) == NULL)
			su.scale = 1.0;
		len = term_vspan(p, &su);
	} else
		len = 1;

	if (len < 0)
		p->skipvsp -= len;
	else
		while (len--)
			term_vspace(p);

	roff_term_pre_br(p, n);
}