--- libaitio/src/Attic/vars.c 2012/09/03 09:26:34 1.13.2.1 +++ libaitio/src/Attic/vars.c 2012/09/10 12:03:56 1.13.2.2 @@ -3,7 +3,7 @@ * by Michael Pounov * * $Author: misho $ -* $Id: vars.c,v 1.13.2.1 2012/09/03 09:26:34 misho Exp $ +* $Id: vars.c,v 1.13.2.2 2012/09/10 12:03:56 misho Exp $ * ************************************************************************** The ELWIX and AITNET software is distributed under the following @@ -777,4 +777,42 @@ io_sprintfVar(ait_val_t * __restrict v, const char *fm if (str) free(str); return ret; +} + +/* + * io_setlikeVar() - Set variable like ... + * + * @v = variable + * @t = type of data + * @l = length of data + * @... = data + * return: -1 error or 0 ok + */ +inline int +io_setlikeVar(ait_val_t * __restrict v, ait_type_t t, u_int l, ...) +{ + va_list lst; + + if (!v) + return -1; + + AIT_FREE_VAL(v); + AIT_INIT_VAL2(v, t); + AIT_LEN(v) = l; + AIT_IN(v) = 1; + + va_start(lst, l); + switch (AIT_TYPE(v)) { + case ptr: + case buffer: + case string: + AIT_ADDR(v) = va_arg(lst, void*); + break; + default: + AIT_RAW(v) = va_arg(lst, uint64_t); + break; + } + va_end(lst); + + return 0; }