--- libaitio/src/Attic/array.c 2012/07/03 08:51:05 1.10 +++ libaitio/src/Attic/array.c 2012/07/30 11:20:07 1.10.6.4 @@ -3,7 +3,7 @@ * by Michael Pounov * * $Author: misho $ -* $Id: array.c,v 1.10 2012/07/03 08:51:05 misho Exp $ +* $Id: array.c,v 1.10.6.4 2012/07/30 11:20:07 misho Exp $ * ************************************************************************** The ELWIX and AITNET software is distributed under the following @@ -571,3 +571,41 @@ 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 || !csDelim) + return -1; + + pos = strpbrk(psArgs, csDelim); + if (pos) { + *pos++ = 0; + ret++; + if (psAttr) + *psAttr = psArgs; + } else + return 0; + + if (psValue) { + if (pos && *pos) { + ret++; + *psValue = pos; + } else + *psValue = NULL; + } + + return ret; +}