Example 5-1 shows you how to use icSigNumTag and icSigListTag.
#include <kcms/kcs.h> KcsAttributeValue attrValue, *attrPtr; int i; char *tmp; /* Set the value of countSupplied */ attrValue.base.countSupplied = 1; attrValue.base.type = KcsULong; /* Get the number of attributes in the profile */ status = KcsGetAttribute(profile, icSigNumTag, &attrValue); if (status != KCS_SUCCESS) { KcsFreeProfile(profile); exit(1); } /* Make space to get a list of all tags */ size = sizeof(KcsAttributeBase) + sizeof(long)*attrValue.val.uLongVal[0]; if ((attrPtr = (KcsAttributeValue *)malloc(size)) == NULL) { perror("malloc failed : "); KcsFreeProfile(profile); exit(1); } /* Get the list of tags */ attrPtr->base.type = KcsULong; attrPtr->base.sizeOfType = sizeof(long); attrPtr->base.countSupplied = attrValue.val.uLongVal[0]; status = KcsGetAttribute(profile, icSigListTag, attrPtr); if (status != KCS_SUCCESS) { KcsFreeProfile(profile); free (attrPtr); exit(1); } /* Print the list */ printf("Number of tags = %d\n", attrPtr->base.countSupplied); for (i=0; i<attrPtr->base.countSupplied; i++) { tmp = (char *)&attrPtr->val.uLongVal[i]; printf("Tag # = %d, Tag Hex = 0x%x, Tag Ascii = %c%c%c%c\n", i, attrPtr->val.uLongVal[i]; *tmp, *(tmp+1), *(tmp+2), *(tmp+3)); } KcsFreeProfile(profile); free (attrPtr); |