diff options
author | Jelmer Vernooij <jelmer@samba.org> | 2005-09-26 18:16:23 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 13:38:59 -0500 |
commit | 01319b8462aa8ebf3b5be4598e7317aa08f40350 (patch) | |
tree | 8cbd411e39a0dedabdf12d942da4e014c2b0dab4 /source4 | |
parent | bb9c9ec69c58c9707381e37a7d984e1fab32548f (diff) | |
download | samba-01319b8462aa8ebf3b5be4598e7317aa08f40350.tar.gz samba-01319b8462aa8ebf3b5be4598e7317aa08f40350.tar.bz2 samba-01319b8462aa8ebf3b5be4598e7317aa08f40350.zip |
r10516: Add seperator argument to str_list_{make,join}_shell()
(This used to be commit 0a5c9197f28e5451406d422e0a8ff84c1b20faae)
Diffstat (limited to 'source4')
-rw-r--r-- | source4/lib/util_strlist.c | 15 | ||||
-rw-r--r-- | source4/torture/local/util_strlist.c | 6 |
2 files changed, 12 insertions, 9 deletions
diff --git a/source4/lib/util_strlist.c b/source4/lib/util_strlist.c index 7aff027d66..ec6c58162f 100644 --- a/source4/lib/util_strlist.c +++ b/source4/lib/util_strlist.c @@ -75,7 +75,7 @@ const char **str_list_make(TALLOC_CTX *mem_ctx, const char *string, const char * Entries are seperated by spaces and can be enclosed by quotes. Does NOT support escaping */ -const char **str_list_make_shell(TALLOC_CTX *mem_ctx, const char *string) +const char **str_list_make_shell(TALLOC_CTX *mem_ctx, const char *string, const char *sep) { int num_elements = 0; const char **ret = NULL; @@ -85,13 +85,16 @@ const char **str_list_make_shell(TALLOC_CTX *mem_ctx, const char *string) return NULL; } + if (sep == NULL) + sep = " \t\n\r"; + while (string && *string) { - size_t len = strcspn(string, " "); + size_t len = strcspn(string, sep); char *element; const char **ret2; if (len == 0) { - string += strspn(string, " "); + string += strspn(string, sep); continue; } @@ -148,7 +151,7 @@ char *str_list_join(TALLOC_CTX *mem_ctx, const char **list, char seperator) /* join a list back to one (shell-like) string; entries * seperated by spaces, using quotes where necessary */ -char *str_list_join_shell(TALLOC_CTX *mem_ctx, const char **list) +char *str_list_join_shell(TALLOC_CTX *mem_ctx, const char **list, char sep) { char *ret = NULL; int i; @@ -163,9 +166,9 @@ char *str_list_join_shell(TALLOC_CTX *mem_ctx, const char **list) for (i = 1; list[i]; i++) { if (strchr(list[i], ' ') || strlen(list[i]) == 0) - ret = talloc_asprintf_append(ret, " \"%s\"", list[i]); + ret = talloc_asprintf_append(ret, "%c\"%s\"", sep, list[i]); else - ret = talloc_asprintf_append(ret, " %s", list[i]); + ret = talloc_asprintf_append(ret, "%c%s", sep, list[i]); } return ret; diff --git a/source4/torture/local/util_strlist.c b/source4/torture/local/util_strlist.c index 8c8d8dfcdb..eb1de2b7c1 100644 --- a/source4/torture/local/util_strlist.c +++ b/source4/torture/local/util_strlist.c @@ -38,9 +38,9 @@ static BOOL test_lists_shell(TALLOC_CTX *mem_ctx) const char **ret1, **ret2, *tmp; BOOL match = True; - ret1 = str_list_make_shell(mem_ctx, test_lists_shell_strings[i]); - tmp = str_list_join_shell(mem_ctx, ret1); - ret2 = str_list_make_shell(mem_ctx, tmp); + ret1 = str_list_make_shell(mem_ctx, test_lists_shell_strings[i], " "); + tmp = str_list_join_shell(mem_ctx, ret1, ' '); + ret2 = str_list_make_shell(mem_ctx, tmp, " "); if ((ret1 == NULL || ret2 == NULL) && ret2 != ret1) { match = False; |