From: mdw Date: Wed, 26 May 1999 20:52:57 +0000 (+0000) Subject: Add new `rest' argument for `str_split'. X-Git-Tag: 2.0.4~295 X-Git-Url: https://git.distorted.org.uk/~mdw/mLib/commitdiff_plain/f3a542e864d3ae7ab34005ca968373a32249785e?hp=5feb52afba684ae49cc96f66fd62fc190c251b92 Add new `rest' argument for `str_split'. --- diff --git a/str.c b/str.c index 51a9805..b6e4813 100644 --- a/str.c +++ b/str.c @@ -1,6 +1,6 @@ /* -*-c-*- * - * $Id: str.c,v 1.1 1999/05/17 20:37:01 mdw Exp $ + * $Id: str.c,v 1.2 1999/05/26 20:52:57 mdw Exp $ * * Functions for hacking with strings * @@ -30,6 +30,9 @@ /*----- Revision history --------------------------------------------------* * * $Log: str.c,v $ + * Revision 1.2 1999/05/26 20:52:57 mdw + * Add new `rest' argument for `str_split'. + * * Revision 1.1 1999/05/17 20:37:01 mdw * Some trivial string hacks. * @@ -83,6 +86,7 @@ char *str_getword(char **pp) * Arguments: @char *p@ = pointer to string * @char *v[]@ = pointer to array to fill in * @size_t c@ = count of strings to fill in + * @char **rest@ = where to store the remainder of the string * * Returns: Number of strings filled in. * @@ -92,10 +96,12 @@ char *str_getword(char **pp) * and trailing space stripped off. No more than @c@ words * are read; the actual number is returned as the value of the * function. Unused slots in the array are populated with - * null bytes. + * null bytes. If there's any string left, the address of the + * remainder is stored in @rest@ (if it's non-null); otherwise + * @rest@ is set to a null pointer. */ -size_t str_split(char *p, char *v[], size_t c) +size_t str_split(char *p, char *v[], size_t c, char **rest) { size_t n = 0; char *q; @@ -110,6 +116,19 @@ size_t str_split(char *p, char *v[], size_t c) *v++ = 0; c--; } + + if (rest) { + if (!p) + *rest = 0; + else { + while (isspace((unsigned char)*p)) + p++; + if (*p) + *rest = p; + else + *rest = 0; + } + } return (n); } diff --git a/str.h b/str.h index ee33d11..9854a1b 100644 --- a/str.h +++ b/str.h @@ -1,6 +1,6 @@ /* -*-c-*- * - * $Id: str.h,v 1.1 1999/05/17 20:37:01 mdw Exp $ + * $Id: str.h,v 1.2 1999/05/26 20:52:57 mdw Exp $ * * Functions for hacking with strings * @@ -30,6 +30,9 @@ /*----- Revision history --------------------------------------------------* * * $Log: str.h,v $ + * Revision 1.2 1999/05/26 20:52:57 mdw + * Add new `rest' argument for `str_split'. + * * Revision 1.1 1999/05/17 20:37:01 mdw * Some trivial string hacks. * @@ -65,6 +68,7 @@ extern char *str_getword(char **/*pp*/); * Arguments: @char *p@ = pointer to string * @char *v[]@ = pointer to array to fill in * @size_t c@ = count of strings to fill in + * @char **rest@ = where to store the remainder of the string * * Returns: Number of strings filled in. * @@ -74,10 +78,13 @@ extern char *str_getword(char **/*pp*/); * and trailing space stripped off. No more than @c@ words * are read; the actual number is returned as the value of the * function. Unused slots in the array are populated with - * null bytes. + * null bytes. If there's any string left, the address of the + * remainder is stored in @rest@ (if it's non-null); otherwise + * @rest@ is set to a null pointer. */ -extern size_t str_split(char */*p*/, char */*v*/[], size_t /*c*/); +extern size_t str_split(char */*p*/, char */*v*/[], + size_t /*c*/, char **/*rest*/); /* --- @str_sanitize@ --- * *