[pacman-dev] [PATCH 1/7] pacman/util: remove strsplit

Andrew Gregory andrew.gregory.8 at gmail.com
Sat Oct 12 13:32:04 EDT 2013


strsplit was used in only one place and did the same thing as strtok.

Signed-off-by: Andrew Gregory <andrew.gregory.8 at gmail.com>
---
 src/pacman/pacman.c | 10 +++++-----
 src/pacman/util.c   | 34 ----------------------------------
 src/pacman/util.h   |  1 -
 3 files changed, 5 insertions(+), 40 deletions(-)

diff --git a/src/pacman/pacman.c b/src/pacman/pacman.c
index 24fd57f..d2114e6 100644
--- a/src/pacman/pacman.c
+++ b/src/pacman/pacman.c
@@ -325,14 +325,14 @@ static void handler(int signum)
 
 static int parsearg_util_addlist(alpm_list_t **list)
 {
-	alpm_list_t *split, *item;
+	char *i, *save;
 
 	check_optarg();
-	split = strsplit(optarg, ',');
-	for(item = split; item; item = alpm_list_next(item)) {
-		*list = alpm_list_add(*list, item->data);
+
+	for(i = strtok_r(optarg, ",", &save); i; i = strtok_r(NULL, ",", &save)) {
+		*list = alpm_list_add(*list, strdup(i));
 	}
-	alpm_list_free(split);
+
 	return 0;
 }
 
diff --git a/src/pacman/util.c b/src/pacman/util.c
index 6da1cd4..0e9a420 100644
--- a/src/pacman/util.c
+++ b/src/pacman/util.c
@@ -378,40 +378,6 @@ char *strreplace(const char *str, const char *needle, const char *replace)
 	return newstr;
 }
 
-/** Splits a string into a list of strings using the chosen character as
- * a delimiter.
- *
- * @param str the string to split
- * @param splitchar the character to split at
- *
- * @return a list containing the duplicated strings
- */
-alpm_list_t *strsplit(const char *str, const char splitchar)
-{
-	alpm_list_t *list = NULL;
-	const char *prev = str;
-	char *dup = NULL;
-
-	while((str = strchr(str, splitchar))) {
-		dup = strndup(prev, (size_t)(str - prev));
-		if(dup == NULL) {
-			return NULL;
-		}
-		list = alpm_list_add(list, dup);
-
-		str++;
-		prev = str;
-	}
-
-	dup = strdup(prev);
-	if(dup == NULL) {
-		return NULL;
-	}
-	list = alpm_list_add(list, dup);
-
-	return list;
-}
-
 static size_t string_length(const char *s)
 {
 	int len;
diff --git a/src/pacman/util.h b/src/pacman/util.h
index 0a2a6f7..e2297f8 100644
--- a/src/pacman/util.h
+++ b/src/pacman/util.h
@@ -54,7 +54,6 @@ int rmrf(const char *path);
 void indentprint(const char *str, unsigned short indent, unsigned short cols);
 size_t strtrim(char *str);
 char *strreplace(const char *str, const char *needle, const char *replace);
-alpm_list_t *strsplit(const char *str, const char splitchar);
 void string_display(const char *title, const char *string, unsigned short cols);
 double humanize_size(off_t bytes, const char target_unit, int precision,
 		const char **label);
-- 
1.8.4



More information about the pacman-dev mailing list