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);
|