From ae7885711f504f1442335f09088cbe149a7e00f9 Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Mon, 19 Nov 2007 18:56:22 -0800 Subject: Remove more pstring. Unify talloc_sub functions to make them a better match for replacing string_sub. Remove more unused code. Jeremy. --- source/lib/util_str.c | 130 ++++++++++++++++---------------------------------- 1 file changed, 41 insertions(+), 89 deletions(-) (limited to 'source/lib/util_str.c') diff --git a/source/lib/util_str.c b/source/lib/util_str.c index 68b06a6d901..f5a50b360e5 100644 --- a/source/lib/util_str.c +++ b/source/lib/util_str.c @@ -1274,11 +1274,15 @@ char *realloc_string_sub(char *string, /* * Internal guts of talloc_string_sub and talloc_all_string_sub. - * 'filter' differentiates between them. + * talloc version of string_sub2. */ -static char *talloc_string_sub_internal(TALLOC_CTX *mem_ctx, const char *src, - const char *pattern, const char *insert, bool filter) +char *talloc_string_sub2(TALLOC_CTX *mem_ctx, const char *src, + const char *pattern, + const char *insert, + bool remove_unsafe_characters, + bool replace_once, + bool allow_trailing_dollar) { char *p, *in; char *s; @@ -1291,7 +1295,7 @@ static char *talloc_string_sub_internal(TALLOC_CTX *mem_ctx, const char *src, string = talloc_strdup(mem_ctx, src); if (string == NULL) { - DEBUG(0, ("talloc_string_sub_internal: " + DEBUG(0, ("talloc_string_sub2: " "talloc_strdup failed\n")); return NULL; } @@ -1300,7 +1304,7 @@ static char *talloc_string_sub_internal(TALLOC_CTX *mem_ctx, const char *src, in = SMB_STRDUP(insert); if (!in) { - DEBUG(0, ("talloc_string_sub_internal: ENOMEM\n")); + DEBUG(0, ("talloc_string_sub2: ENOMEM\n")); return NULL; } ls = (ssize_t)strlen(s); @@ -1308,22 +1312,28 @@ static char *talloc_string_sub_internal(TALLOC_CTX *mem_ctx, const char *src, li = (ssize_t)strlen(insert); ld = li - lp; - if (filter) { - for (i=0;i lp) { - const smb_ucs2_t *st = s; - int ld = li - lp; - while ((sp = strstr_w(st, pattern))) { - st = sp + lp; - lt += ld; - } - } - - r = rp = SMB_MALLOC_ARRAY(smb_ucs2_t, lt + 1); - if (!r) { - DEBUG(0, ("all_string_sub_w: out of memory!\n")); - return NULL; - } - - while ((sp = strstr_w(s, pattern))) { - memcpy(rp, s, (sp - s)); - rp += ((sp - s) / sizeof(smb_ucs2_t)); - memcpy(rp, insert, (li * sizeof(smb_ucs2_t))); - s = sp + lp; - rp += li; - } - lr = ((rp - r) / sizeof(smb_ucs2_t)); - if (lr < lt) { - memcpy(rp, s, ((lt - lr) * sizeof(smb_ucs2_t))); - rp += (lt - lr); - } - *rp = 0; - - return r; -} - -smb_ucs2_t *all_string_sub_wa(smb_ucs2_t *s, const char *pattern, - const char *insert) -{ - wpstring p, i; - - if (!insert || !pattern || !s) - return NULL; - push_ucs2(NULL, p, pattern, sizeof(wpstring) - 1, STR_TERMINATE); - push_ucs2(NULL, i, insert, sizeof(wpstring) - 1, STR_TERMINATE); - return all_string_sub_w(s, p, i); + return talloc_string_sub2(ctx, src, pattern, insert, + false, false, false); } #if 0 -- cgit