summaryrefslogtreecommitdiffstats
path: root/libidu
diff options
context:
space:
mode:
Diffstat (limited to 'libidu')
-rw-r--r--libidu/idfile.c4
-rw-r--r--libidu/scanners.c8
-rw-r--r--libidu/walker.c23
3 files changed, 21 insertions, 14 deletions
diff --git a/libidu/idfile.c b/libidu/idfile.c
index d27c4b3..1b46ab7 100644
--- a/libidu/idfile.c
+++ b/libidu/idfile.c
@@ -1,5 +1,5 @@
/* idfile.c -- read & write mkid database file header
- Copyright (C) 1986, 1995, 1996 Free Software Foundation, Inc.
+ Copyright (C) 1986, 1995, 1996, 1999 Free Software Foundation, Inc.
Written by Greg McGary <gkm@gnu.ai.mit.edu>
This program is free software; you can redistribute it and/or modify
@@ -54,7 +54,7 @@ locate_id_file_name (char const *arg)
if (id_path)
{
id_path = strdup (id_path);
- arg = strtok (id_path, ":");
+ arg = strsep (&id_path, ":");
/* FIXME: handle multiple ID file names */
}
}
diff --git a/libidu/scanners.c b/libidu/scanners.c
index 0db6bcd..261837a 100644
--- a/libidu/scanners.c
+++ b/libidu/scanners.c
@@ -87,7 +87,7 @@ void
language_save_arg (char *arg)
{
static char horizontal_space[] = " \t";
- char *lang_name = strtok (arg, ":");
+ char *lang_name = strsep (&arg, ":");
struct language *lang = get_language (lang_name);
if (lang == 0)
@@ -97,7 +97,7 @@ language_save_arg (char *arg)
}
if (lang->lg_argc == 0)
lang->lg_argv[lang->lg_argc++] = program_name;
- lang->lg_argv[lang->lg_argc++] = strtok (0, horizontal_space);
+ lang->lg_argv[lang->lg_argc++] = strsep (&arg, horizontal_space);
}
void
@@ -287,11 +287,11 @@ tokenize_args_string (char *args_string, int *argcp, char ***argvp)
char *arg;
*argv++ = program_name;
- arg = strtok (args_string, horizontal_space);
+ arg = strsep (&args_string, horizontal_space);
while (arg)
{
*argv++ = arg;
- arg = strtok (0, horizontal_space);
+ arg = strsep (&args_string, horizontal_space);
}
*argcp = argv - argv_0;
*argvp = REALLOC (argv_0, char *, *argcp);
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