NAME
NextTagItem -- iterate through a tag list. (V36)
SYNOPSIS
tag = NextTagItem(tagItemPtr);
D0 A0
struct tagitem *nexttagitem(struct tagitem **);
FUNCTION
Iterates through a tag list, skipping and chaining as dictated by
system tags. TAG_SKIP will cause it to skip the entry and a number
of following tags as specified in ti_Data. TAG_IGNORE ignores that
single entry, and TAG_MORE has a pointer to another array of tags (and
terminates the current array!). TAG_DONE also terminates the current
array. Each call returns either the next tagitem you should examine,
or NULL when the end of the list has been reached.
INPUTS
tagItemPtr - doubly-indirect reference to a tagitem structure.
The pointer will be changed to keep track of the
iteration.
RESULTS
nextTag - each tagitem in the array or chain of arrays that should be
processed according to system tag values defined in
<utility/tagitem.h>) is returned in turn with successive
calls.
EXAMPLE
Iterate(struct tagitem *tags);
{
struct tagitem *tstate;
struct tagitem *tag;
tstate = tags;
while (tag = NextTagItem(&tstate))
{
switch (tag->ti_Tag)
{
case TAG1: ...
break;
case TAG2: ...
break;
...
}
}
}
WARNING
Do NOT use the value of *tagItemPtr, but rather use the pointer
returned by NextTagItem().
SEE ALSO
<utility/tagitem.h>, gettagdata(), packbooltags(), findtagitem()