--- libelwix/src/str.c 2014/01/29 14:16:54 1.4 +++ libelwix/src/str.c 2014/02/21 13:30:19 1.5 @@ -3,7 +3,7 @@ * by Michael Pounov * * $Author: misho $ -* $Id: str.c,v 1.4 2014/01/29 14:16:54 misho Exp $ +* $Id: str.c,v 1.5 2014/02/21 13:30:19 misho Exp $ * ************************************************************************** The ELWIX and AITNET software is distributed under the following @@ -429,4 +429,33 @@ str_Lower(char * __restrict psLine) } return cx; +} + +/* + * str_getString() - Get string from data buffer + * + * @data = Data buffer + * @dlen = Data length + * @next = Return next position after string if !=NULL + * return: -1 error or size of string + */ +int +str_getString(const u_char * __restrict data, int dlen, char ** __restrict next) +{ + const u_char *pos; + + if (!data || !dlen) + return -1; + + for (pos = data; pos < data + dlen; pos++) + if (!*pos) + break; + if (*pos) { + elwix_SetErr(ENOEXEC, "Not found null-terminated string"); + return -1; + } + + if (next) + *next = (char*) pos + 1; + return pos - data + 1; }