summaryrefslogtreecommitdiff
path: root/src/irmd/configfile.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/irmd/configfile.c')
-rw-r--r--src/irmd/configfile.c20
1 files changed, 11 insertions, 9 deletions
diff --git a/src/irmd/configfile.c b/src/irmd/configfile.c
index af2a37c8..61e828d8 100644
--- a/src/irmd/configfile.c
+++ b/src/irmd/configfile.c
@@ -579,9 +579,9 @@ static int args_to_argv(const char * args,
str = (char *) args;
- tok = strtok(str, " ");
- while (tok != NULL) {
- tok = strtok(NULL, " ");
+ tok = str;
+ while (*(tok += strspn(tok, " ")) != '\0') {
+ tok += strcspn(tok, " ");
argc++;
}
@@ -590,14 +590,16 @@ static int args_to_argv(const char * args,
goto fail_malloc;
argc = 0;
- tok = strtok(str, " ");
- while (tok != NULL) {
- (*argv)[argc] = malloc((strlen(tok) + 1) * sizeof(***argv));
- if (*argv[argc] == NULL)
+ tok = str;
+ while (*(tok += strspn(tok, " ")) != '\0') {
+ size_t toklen = strcspn(tok, " ");
+ (*argv)[argc] = malloc((toklen + 1) * sizeof(***argv));
+ if ((*argv)[argc] == NULL)
goto fail_malloc2;
- strcpy((*argv)[argc++], tok);
- tok = strtok(NULL, " ");
+ strncpy((*argv)[argc], tok, toklen);
+ (*argv)[argc++][toklen] = '\0';
+ tok += toklen;
}
(*argv)[argc] = NULL;