version 1.88, 2014/08/10 23:54:41 |
version 1.89, 2014/08/18 16:36:54 |
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); |
} |
} |
|
|