From 98dbc38efa26149442a0b9be238cc34cebfd1857 Mon Sep 17 00:00:00 2001 From: Garming Sam Date: Mon, 24 Feb 2014 17:33:57 +1300 Subject: [PATCH] move str_list_make_v3 out of s3 code Signed-off-by: Garming Sam Reviewed-by: Andrew Bartlett Reviewed-by: Jeremy Allison --- lib/util/samba_util.h | 8 ++++++ lib/util/util_strlist.c | 66 +++++++++++++++++++++++++++++++++++++++++++++++ source3/include/proto.h | 1 - source3/lib/util_str.c | 68 ------------------------------------------------- 4 files changed, 74 insertions(+), 69 deletions(-) diff --git a/lib/util/samba_util.h b/lib/util/samba_util.h index e3fe6a60792..73cab66c351 100644 --- a/lib/util/samba_util.h +++ b/lib/util/samba_util.h @@ -530,6 +530,14 @@ _PUBLIC_ const char **str_list_copy_const(TALLOC_CTX *mem_ctx, */ _PUBLIC_ const char **const_str_list(char **list); +/** + * str_list_make, v3 version. The v4 version does not + * look at quoted strings with embedded blanks, so + * do NOT merge this function please! + */ +char **str_list_make_v3(TALLOC_CTX *mem_ctx, const char *string, + const char *sep); + /* The following definitions come from lib/util/util_file.c */ diff --git a/lib/util/util_strlist.c b/lib/util/util_strlist.c index 8397589d747..d542e6f74f5 100644 --- a/lib/util/util_strlist.c +++ b/lib/util/util_strlist.c @@ -522,3 +522,69 @@ _PUBLIC_ const char **const_str_list(char **list) return discard_const_p(const char *, list); } +/** + * str_list_make, v3 version. The v4 version does not + * look at quoted strings with embedded blanks, so + * do NOT merge this function please! + */ +#define S_LIST_ABS 16 /* List Allocation Block Size */ + +char **str_list_make_v3(TALLOC_CTX *mem_ctx, const char *string, + const char *sep) +{ + char **list; + const char *str; + char *s, *tok; + int num, lsize; + + if (!string || !*string) + return NULL; + + list = talloc_array(mem_ctx, char *, S_LIST_ABS+1); + if (list == NULL) { + return NULL; + } + lsize = S_LIST_ABS; + + s = talloc_strdup(list, string); + if (s == NULL) { + DEBUG(0,("str_list_make: Unable to allocate memory")); + TALLOC_FREE(list); + return NULL; + } + if (!sep) sep = LIST_SEP; + + num = 0; + str = s; + + while (next_token_talloc(list, &str, &tok, sep)) { + + if (num == lsize) { + char **tmp; + + lsize += S_LIST_ABS; + + tmp = talloc_realloc(mem_ctx, list, char *, + lsize + 1); + if (tmp == NULL) { + DEBUG(0,("str_list_make: " + "Unable to allocate memory")); + TALLOC_FREE(list); + return NULL; + } + + list = tmp; + + memset (&list[num], 0, + ((sizeof(char*)) * (S_LIST_ABS +1))); + } + + list[num] = tok; + num += 1; + } + + list[num] = NULL; + + TALLOC_FREE(s); + return list; +} diff --git a/source3/include/proto.h b/source3/include/proto.h index 9cdd0df2c00..356bf91dd89 100644 --- a/source3/include/proto.h +++ b/source3/include/proto.h @@ -725,7 +725,6 @@ bool validate_net_name( const char *name, const char *invalid_chars, int max_len); char *escape_shell_string(const char *src); -char **str_list_make_v3(TALLOC_CTX *mem_ctx, const char *string, const char *sep); ssize_t full_path_tos(const char *dir, const char *name, char *tmpbuf, size_t tmpbuf_len, char **pdst, char **to_free); diff --git a/source3/lib/util_str.c b/source3/lib/util_str.c index 908f23aaa9d..cfc495d6702 100644 --- a/source3/lib/util_str.c +++ b/source3/lib/util_str.c @@ -1227,74 +1227,6 @@ char *escape_shell_string(const char *src) return ret; } -/*************************************************** - str_list_make, v3 version. The v4 version does not - look at quoted strings with embedded blanks, so - do NOT merge this function please! -***************************************************/ - -#define S_LIST_ABS 16 /* List Allocation Block Size */ - -char **str_list_make_v3(TALLOC_CTX *mem_ctx, const char *string, - const char *sep) -{ - char **list; - const char *str; - char *s, *tok; - int num, lsize; - - if (!string || !*string) - return NULL; - - list = talloc_array(mem_ctx, char *, S_LIST_ABS+1); - if (list == NULL) { - return NULL; - } - lsize = S_LIST_ABS; - - s = talloc_strdup(list, string); - if (s == NULL) { - DEBUG(0,("str_list_make: Unable to allocate memory")); - TALLOC_FREE(list); - return NULL; - } - if (!sep) sep = LIST_SEP; - - num = 0; - str = s; - - while (next_token_talloc(list, &str, &tok, sep)) { - - if (num == lsize) { - char **tmp; - - lsize += S_LIST_ABS; - - tmp = talloc_realloc(mem_ctx, list, char *, - lsize + 1); - if (tmp == NULL) { - DEBUG(0,("str_list_make: " - "Unable to allocate memory")); - TALLOC_FREE(list); - return NULL; - } - - list = tmp; - - memset (&list[num], 0, - ((sizeof(char*)) * (S_LIST_ABS +1))); - } - - list[num] = tok; - num += 1; - } - - list[num] = NULL; - - TALLOC_FREE(s); - return list; -} - /* * This routine improves performance for operations temporarily acting on a * full path. It is equivalent to the much more expensive -- 2.11.4.GIT