Esempio n. 1
0
logres_parse_status_t
logres_parse_ini(logres_t *r, const char *ini, uint32_t *err_pos)
{
 const char *section_pos;
 char *num_end;
 unsigned long index;
 const char *k_s, *k_e, *v_s, *v_e;
 logres_parse_status_t st;

 section_pos = ini;
 while(1) {
  section_pos = find_next_section(section_pos);
  if(section_pos == NULL) return LOGRES_PARSE_OK;
  v_e = section_pos;
  while(1) {
   st = get_next_token_value(&k_s, &k_e, &v_s, &v_e);
   if(st != LOGRES_PARSE_OK) {
    if(err_pos != NULL) *err_pos = v_e-ini;
    return st;
   }
   if(v_e == NULL) break;
   if(cmp_key(k_s, k_e, "INDEX")) break;
  }
  if(v_e == NULL) {
   if(err_pos != NULL) *err_pos = section_pos-ini;
   return LOGRES_PARSE_NO_INDEX;
  }
  index = strtoul(v_s, &num_end, 16);
  if(num_end != v_e) {
   if(err_pos != NULL) *err_pos = num_end-ini;
   return LOGRES_PARSE_BAD_NUMBER;
  }
  v_e = section_pos;
  while(1) {
   st = get_next_token_value(&k_s, &k_e, &v_s, &v_e);
   if(st != LOGRES_PARSE_OK) {
    if(err_pos != NULL) *err_pos = v_e-ini;
    return st;
   }
   if(v_e == NULL) break;
   if(cmp_key(k_s, k_e, "INDEX")) continue;
   st = add_res_string(r, index, k_s, k_e, v_s, v_e);
   if(st != LOGRES_PARSE_OK) {
    if(err_pos != NULL) *err_pos = v_e-ini;
    return st;
   }
  }
 }
}
Esempio n. 2
0
static inline int
cmp_order(const struct top *a, const struct top *b)
{
	if (a->count > b->count)
		return (-1);
	else if (a->count < b->count)
		return (1);
	return (cmp_key(a, b));
}