summaryrefslogtreecommitdiffstats
path: root/libidu/walker.c
diff options
context:
space:
mode:
authorGreg McGary <greg@mcgary.org>1999-04-12 07:56:55 +0000
committerGreg McGary <greg@mcgary.org>1999-04-12 07:56:55 +0000
commita05ba261e9c40c9ef95b286d7a8abff519551295 (patch)
treea6ba2a8343cfcc9838e52b5ef4a75c238c8598b7 /libidu/walker.c
parent258a961c23341294b12a317ad6534b30ad02d987 (diff)
downloadidutils-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.c23
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