version 1.1, 2013/01/17 10:05:35
|
version 1.3, 2013/03/07 23:04:48
|
Line 222 buffer2vars(u_char * __restrict buf, int buflen, int v
|
Line 222 buffer2vars(u_char * __restrict buf, int buflen, int v
|
val->val_type = buffer; |
val->val_type = buffer; |
case buffer: |
case buffer: |
case string: |
case string: |
if (AIT_LEN(val) > buflen - Limit) { |
|
elwix_SetErr(EMSGSIZE, "Short buffer buflen=%d " |
|
"needed min %d", buflen, Limit + AIT_LEN(val)); |
|
if (!zcpy) |
|
array_Free(vars); |
|
array_Destroy(&vars); |
|
return NULL; |
|
} else |
|
Limit += AIT_LEN(val); |
|
|
|
if (!zcpy) { |
if (!zcpy) { |
val->val.buffer = e_malloc(AIT_LEN(val)); |
val->val.buffer = e_malloc(AIT_LEN(val)); |
if (!val->val.buffer) { |
if (!val->val.buffer) { |
Line 587 ait_sortVarsByVal(array_t * __restrict vars, int order
|
Line 577 ait_sortVarsByVal(array_t * __restrict vars, int order
|
return; |
return; |
|
|
if (cmp) |
if (cmp) |
qsort(vars->arr_data, vars->arr_num, sizeof(void*), cmp); | qsort(vars->arr_data, vars->arr_num, sizeof(uintptr_t), cmp); |
else if (order) |
else if (order) |
qsort(vars->arr_data, vars->arr_num, sizeof(void*), _cmp_arr_val_desc); | qsort(vars->arr_data, vars->arr_num, sizeof(uintptr_t), _cmp_arr_val_desc); |
else |
else |
qsort(vars->arr_data, vars->arr_num, sizeof(void*), _cmp_arr_val_asc); | qsort(vars->arr_data, vars->arr_num, sizeof(uintptr_t), _cmp_arr_val_asc); |
} |
} |
|
|
/* |
/* |
Line 608 ait_sortVarsByKey(array_t * __restrict vars, int order
|
Line 598 ait_sortVarsByKey(array_t * __restrict vars, int order
|
return; |
return; |
|
|
if (order) |
if (order) |
qsort(vars->arr_data, vars->arr_num, sizeof(void*), _cmp_arr_key_desc); | qsort(vars->arr_data, vars->arr_num, sizeof(uintptr_t), _cmp_arr_key_desc); |
else |
else |
qsort(vars->arr_data, vars->arr_num, sizeof(void*), _cmp_arr_key_asc); | qsort(vars->arr_data, vars->arr_num, sizeof(uintptr_t), _cmp_arr_key_asc); |
} |
} |
|
|
/* |
/* |
Line 634 ait_findKeyVars(array_t * __restrict vars, u_short key
|
Line 624 ait_findKeyVars(array_t * __restrict vars, u_short key
|
if (array_Copy(&tmp, vars) == -1) |
if (array_Copy(&tmp, vars) == -1) |
return NULL; |
return NULL; |
else |
else |
qsort(tmp->arr_data, tmp->arr_num, sizeof(void*), _cmp_arr_key_asc); | qsort(tmp->arr_data, tmp->arr_num, sizeof(uintptr_t), _cmp_arr_key_asc); |
|
|
/* binary search */ |
/* binary search */ |
for (p = (const u_char*) tmp->arr_data, i = array_Size(tmp); i; i >>= 1) { |
for (p = (const u_char*) tmp->arr_data, i = array_Size(tmp); i; i >>= 1) { |
vv = (ait_val_t**) (p + (i >> 1) * sizeof(void*)); | vv = (ait_val_t**) (p + (i >> 1) * sizeof(uintptr_t)); |
if (!(key - AIT_KEY(*vv))) { /* found! */ |
if (!(key - AIT_KEY(*vv))) { /* found! */ |
v = *vv; |
v = *vv; |
break; |
break; |
} |
} |
if ((key - AIT_KEY(*vv)) > 0) { /* move right key > current */ |
if ((key - AIT_KEY(*vv)) > 0) { /* move right key > current */ |
p = (const u_char*) vv + sizeof(void*); | p = (const u_char*) vv + sizeof(uintptr_t); |
i--; |
i--; |
} /* else move left */ |
} /* else move left */ |
} |
} |
Line 754 ait_findKeyHash(array_t * __restrict vars, const char
|
Line 744 ait_findKeyHash(array_t * __restrict vars, const char
|
* return: -1 error or >0 copied bytes to variable |
* return: -1 error or >0 copied bytes to variable |
*/ |
*/ |
int |
int |
io_sprintfVar(ait_val_t * __restrict v, const char *fmt, ...) | ait_sprintfVar(ait_val_t * __restrict v, const char *fmt, ...) |
{ |
{ |
int ret = 0; |
int ret = 0; |
va_list lst; |
va_list lst; |