version 1.88, 2014/08/10 23:54:41 |
version 1.90, 2014/11/03 23:18:39 |
|
|
/* $Id$ */ |
/* $Id$ */ |
/* |
/* |
* Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv> |
* Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv> |
* Copyright (c) 2012, 2013 Ingo Schwarze <schwarze@openbsd.org> |
* Copyright (c) 2012, 2013, 2014 Ingo Schwarze <schwarze@openbsd.org> |
* Copyright (c) 2013 Franco Fichtner <franco@lastsummer.de> |
* Copyright (c) 2013 Franco Fichtner <franco@lastsummer.de> |
* |
* |
* Permission to use, copy, modify, and distribute this software for any |
* Permission to use, copy, modify, and distribute this software for any |
Line 61 const struct man_macro __man_macros[MAN_MAX] = { |
|
Line 61 const struct man_macro __man_macros[MAN_MAX] = { |
|
{ blk_imp, MAN_BSCOPE }, /* P */ |
{ blk_imp, MAN_BSCOPE }, /* P */ |
{ blk_imp, MAN_BSCOPE }, /* IP */ |
{ blk_imp, MAN_BSCOPE }, /* IP */ |
{ blk_imp, MAN_BSCOPE }, /* HP */ |
{ blk_imp, MAN_BSCOPE }, /* HP */ |
{ in_line_eoln, MAN_SCOPED }, /* SM */ |
{ in_line_eoln, MAN_SCOPED | MAN_JOIN }, /* SM */ |
{ in_line_eoln, MAN_SCOPED }, /* SB */ |
{ in_line_eoln, MAN_SCOPED | MAN_JOIN }, /* SB */ |
{ in_line_eoln, 0 }, /* BI */ |
{ in_line_eoln, 0 }, /* BI */ |
{ in_line_eoln, 0 }, /* IB */ |
{ in_line_eoln, 0 }, /* IB */ |
{ in_line_eoln, 0 }, /* BR */ |
{ in_line_eoln, 0 }, /* BR */ |
{ in_line_eoln, 0 }, /* RB */ |
{ in_line_eoln, 0 }, /* RB */ |
{ in_line_eoln, MAN_SCOPED }, /* R */ |
{ in_line_eoln, MAN_SCOPED | MAN_JOIN }, /* R */ |
{ in_line_eoln, MAN_SCOPED }, /* B */ |
{ in_line_eoln, MAN_SCOPED | MAN_JOIN }, /* B */ |
{ in_line_eoln, MAN_SCOPED }, /* I */ |
{ in_line_eoln, MAN_SCOPED | MAN_JOIN }, /* I */ |
{ in_line_eoln, 0 }, /* IR */ |
{ in_line_eoln, 0 }, /* IR */ |
{ in_line_eoln, 0 }, /* RI */ |
{ in_line_eoln, 0 }, /* RI */ |
{ in_line_eoln, MAN_NSCOPED }, /* na */ |
{ in_line_eoln, MAN_NSCOPED }, /* na */ |
Line 100 man_unscope(struct man *man, const struct man_node *to |
|
Line 100 man_unscope(struct man *man, const struct man_node *to |
|
{ |
{ |
struct man_node *n; |
struct man_node *n; |
|
|
man->next = MAN_NEXT_SIBLING; |
|
to = to->parent; |
to = to->parent; |
n = man->last; |
n = man->last; |
while (n != to) { |
while (n != to) { |
Line 139 man_unscope(struct man *man, const struct man_node *to |
|
Line 138 man_unscope(struct man *man, const struct man_node *to |
|
* Save a pointer to the parent such that |
* Save a pointer to the parent such that |
* we know where to continue the iteration. |
* we know where to continue the iteration. |
*/ |
*/ |
|
|
man->last = n; |
man->last = n; |
n = n->parent; |
n = n->parent; |
if ( ! man_valid_post(man)) |
if ( ! man_valid_post(man)) |
return(0); |
return(0); |
} |
} |
|
|
|
/* |
|
* If we ended up at the parent of the node we were |
|
* supposed to rewind to, that means the target node |
|
* got deleted, so add the next node we parse as a child |
|
* of the parent instead of as a sibling of the target. |
|
*/ |
|
|
|
man->next = (man->last == to) ? |
|
MAN_NEXT_CHILD : MAN_NEXT_SIBLING; |
|
|
return(1); |
return(1); |
} |
} |
|
|
Line 412 in_line_eoln(MACRO_PROT_ARGS) |
|
Line 423 in_line_eoln(MACRO_PROT_ARGS) |
|
la = *pos; |
la = *pos; |
if ( ! man_args(man, line, pos, buf, &p)) |
if ( ! man_args(man, line, pos, buf, &p)) |
break; |
break; |
if ( ! man_word_alloc(man, line, la, p)) |
if (man_macros[tok].flags & MAN_JOIN && |
|
man->last->type == MAN_TEXT) |
|
man_word_append(man, p); |
|
else if ( ! man_word_alloc(man, line, la, p)) |
return(0); |
return(0); |
} |
} |
|
|