Copyright clean-up (part 1):
[AROS.git] / arch / ppc-sam440 / kernel / tags.c
bloba6c1f9889a160b6f4e2a59b51388e59aefe98220
1 /*
2 Copyright © 1995-2014, The AROS Development Team. All rights reserved.
3 $Id$
4 */
6 #include <inttypes.h>
7 #include <utility/tagitem.h>
9 #include "kernel_intern.h"
11 struct TagItem *krnNextTagItem(struct TagItem **tagListPtr)
13 if (!(*tagListPtr)) return 0;
15 while(1)
17 switch((*tagListPtr)->ti_Tag)
19 case TAG_MORE:
20 if (!((*tagListPtr) = (struct TagItem *)(*tagListPtr)->ti_Data))
21 return NULL;
22 continue;
23 case TAG_IGNORE:
24 break;
26 case TAG_END:
27 (*tagListPtr) = 0;
28 return NULL;
30 case TAG_SKIP:
31 (*tagListPtr) += (*tagListPtr)->ti_Data + 1;
32 continue;
34 default:
35 return (struct TagItem *)(*tagListPtr)++;
38 (*tagListPtr)++;
42 struct TagItem *krnFindTagItem(Tag tagValue, struct TagItem *tagList)
44 struct TagItem *tag;
45 struct TagItem *tagptr = tagList;
47 while((tag = krnNextTagItem(&tagptr)))
49 if (tag->ti_Tag == tagValue)
50 return tag;
53 return 0;
56 intptr_t krnGetTagData(Tag tagValue, intptr_t defaultVal, struct TagItem *tagList)
58 struct TagItem *ti = 0;
60 if (tagList && (ti = krnFindTagItem(tagValue, tagList)))
61 return ti->ti_Data;
63 return defaultVal;