From a05ba261e9c40c9ef95b286d7a8abff519551295 Mon Sep 17 00:00:00 2001 From: Greg McGary Date: Mon, 12 Apr 1999 07:56:55 +0000 Subject: * lib/strsep.c: Add file. * lib/strtok.c: Remove file. * configure.in: Check for strsep instead of strtok. * libidu/idfile.c (locate_id_file_name): Use strsep instead of strtok. * libidu/scanners.c (language_save_arg, language_save_arg, tokenize_args_string): Ditto. * libidu/walker.c (append_strings_to_vector, vectorize_string): Ditto. --- libidu/walker.c | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) (limited to 'libidu/walker.c') diff --git a/libidu/walker.c b/libidu/walker.c index 9a7372e..6584179 100644 --- a/libidu/walker.c +++ b/libidu/walker.c @@ -498,10 +498,10 @@ append_strings_to_vector (char **vector_0, char *string, char const *delimiter_c else vector = vector_0 = MALLOC (char *, 2 + strlen (string) / 2); - *vector = strtok (string, delimiter_class); - while (*vector) - *++vector = strtok (0, delimiter_class); - return REALLOC (vector_0, char *, ++vector - vector_0); + do + *vector = strsep (&string, delimiter_class); + while (*vector++); + return REALLOC (vector_0, char *, vector - vector_0); } int @@ -673,10 +673,17 @@ vectorize_string (char *string, char const *delimiter_class) char **vector_0 = MALLOC (char *, 2 + strlen (string) / 2); char **vector = vector_0; - *vector = strtok (string, delimiter_class); - while (*vector) - *++vector = strtok (0, delimiter_class); - return REALLOC (vector_0, char *, ++vector - vector_0); + *vector++ = strsep (&string, delimiter_class); + if (vector[-1]) + { + /* Toss first field if empty */ + if (vector[-1][0] == '\0') + vector--; + do + *vector = strsep (&string, delimiter_class); + while (*vector++); + } + return REALLOC (vector_0, char *, vector - vector_0); } void -- cgit v1.2.3