static void print_oid (struct ilo_oid_list *oid_list) { int oid_num = 0; while (oid_list != NULL) { switch (oid_list->type) { case ASN_INTEGER: printf("%d\n", oid_list->integer); break; case ASN_OCTET_STR: if (is_hex_str(oid_list->string, oid_list->value_len) == TRUE) print_hex_str(oid_list->string, oid_list->value_len); else printf("%s\n", oid_list->string); break; case ASN_IPADDRESS: printf("%s\n", oid_list->string); break; default: printf("[%s] no such type: %d\n", __func__, oid_list->type); } oid_list = oid_list->next; } }
int hex_str_to_rgb888(const char *str, struct rgb888 *rgb) { unsigned long int num; unsigned long start_pos = 0; char *start_str; char *endptr = NULL; assert(str); assert(strlen(str) > 0); assert(rgb); /* Ingore '#'. */ start_str = strstr(str, "#"); if(start_str) start_pos = start_str - str + 1; else start_pos = 0; if(start_pos > 1) return -1; if(strlen(&str[start_pos]) == 0) return -1; /* Check hex string. */ if(!is_hex_str(&str[start_pos])) return -1; /* Convert. */ num = strtoul(&str[start_pos], &endptr, 16); if(endptr == &str[strlen(str)]){ rgb->r = num >> 16; rgb->g = num >> 8; rgb->b = num >> 0; return 0; }