version 1.87, 2014/07/30 23:01:39 |
version 1.89, 2014/08/18 16:36:54 |
|
|
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
*/ |
*/ |
#ifdef HAVE_CONFIG_H |
|
#include "config.h" |
#include "config.h" |
#endif |
|
|
|
|
#include <sys/types.h> |
|
|
#include <assert.h> |
#include <assert.h> |
#include <ctype.h> |
#include <ctype.h> |
#include <stdlib.h> |
#include <stdlib.h> |
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); |
} |
} |
|
|