diff options
author | Greg McGary <greg@mcgary.org> | 1999-04-12 07:56:55 +0000 |
---|---|---|
committer | Greg McGary <greg@mcgary.org> | 1999-04-12 07:56:55 +0000 |
commit | a05ba261e9c40c9ef95b286d7a8abff519551295 (patch) | |
tree | a6ba2a8343cfcc9838e52b5ef4a75c238c8598b7 /libidu/walker.c | |
parent | 258a961c23341294b12a317ad6534b30ad02d987 (diff) | |
download | idutils-a05ba261e9c40c9ef95b286d7a8abff519551295.tar.gz idutils-a05ba261e9c40c9ef95b286d7a8abff519551295.tar.bz2 idutils-a05ba261e9c40c9ef95b286d7a8abff519551295.zip |
* 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.
Diffstat (limited to 'libidu/walker.c')
-rw-r--r-- | libidu/walker.c | 23 |
1 files changed, 15 insertions, 8 deletions
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 |