Extract a substring of a delimited string
int SLextract_list_element (dlist, nth, delim, buf, buflen)
char *dlist;
unsigned int nth;
char delim;
char *buf;
unsigned int buflen;
SLextract_list_element may be used to obtain the nth
element of a list of strings, dlist, that are delimited by the
character delim. The routine copies the nth element of
dlist to the buffer buf whose size is buflen
characters. It returns zero upon success, or -1 if dlist
does not contain an nth element.
A delimited list of strings may be turned into an array of strings as follows. For conciseness, all malloc error checking has been omitted.
int list_to_array (char *list, char delim, char ***ap)
{
unsigned int nth;
char **a;
char buf[1024];
/* Determine the size of the array */
nth = 0;
while (0 == SLextract_list_element (list, nth, delim, buf, sizeof(buf)))
nth++;
ap = (char **) SLmalloc ((nth + 1) * sizeof (char **));
nth = 0;
while (0 == SLextract_list_element (list, nth, delim, buf, sizeof(buf)))
{
a[nth] = SLmake_string (buf);
nth++;
}
a[nth] = NULL;
*ap = a;
return 0;
}
SLmalloc, SLmake_string