1
0
mirror of https://github.com/samba-team/samba.git synced 2025-03-25 14:50:24 +03:00

move str_list_make_v3 out of s3 code

Signed-off-by: Garming Sam <garming@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
This commit is contained in:
Garming Sam 2014-02-24 17:33:57 +13:00 committed by Jeremy Allison
parent f4d7f12986
commit 98dbc38efa
4 changed files with 74 additions and 69 deletions

View File

@ -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 */

View File

@ -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;
}

View File

@ -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);

View File

@ -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