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;
    }
}
예제 #2
0
파일: color.c 프로젝트: canmor-lam/libsg
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;
    }