--- libaitio/src/Attic/array.c 2012/05/23 14:06:08 1.9.6.2 +++ libaitio/src/Attic/array.c 2012/07/30 09:26:56 1.10.6.1 @@ -3,7 +3,7 @@ * by Michael Pounov * * $Author: misho $ -* $Id: array.c,v 1.9.6.2 2012/05/23 14:06:08 misho Exp $ +* $Id: array.c,v 1.10.6.1 2012/07/30 09:26:56 misho Exp $ * ************************************************************************** The ELWIX and AITNET software is distributed under the following @@ -571,3 +571,39 @@ io_MakeAV(const char * __restrict csArgs, const char * return ret; } +/* + * io_MakeAV2() Parse and make attribute/value pair over input string + * + * @csArgs = Input argument line, will be modified! + * @csDelim = Delimiter for separate + * @psAttr = Output Attribute + * @psValue = Output Value, if ==NULL this element not present value or not wanted for return + * return: 0 error format; -1 error:: can`t read; >0 ok, number of readed items +*/ +int +io_MakeAV2(char ** __restrict psArgs, const char *csDelim, + char * __restrict psAttr, char * __restrict psValue) +{ + register int ret = 0; + char *pos; + + if (!psArgs || !*psArgs || !csDelim) + return -1; + + pos = strpbrk(*psArgs, csDelim); + if (pos) + *pos++ = 0; + ret++; + if (psAttr) + psAttr = *psArgs; + + if (psValue) { + if (pos && *pos) { + ret++; + psValue = pos; + } else + psValue = NULL; + } + + return ret; +}