summaryrefslogtreecommitdiff
path: root/source3/lib/substitute.c
diff options
context:
space:
mode:
Diffstat (limited to 'source3/lib/substitute.c')
-rw-r--r--source3/lib/substitute.c28
1 files changed, 23 insertions, 5 deletions
diff --git a/source3/lib/substitute.c b/source3/lib/substitute.c
index e5cd0f28804..f3f2e1bc0e1 100644
--- a/source3/lib/substitute.c
+++ b/source3/lib/substitute.c
@@ -790,21 +790,19 @@ char *talloc_sub_specified(TALLOC_CTX *mem_ctx,
/****************************************************************************
****************************************************************************/
-char *talloc_sub_full(TALLOC_CTX *ctx,
+char *talloc_sub_advanced(TALLOC_CTX *ctx,
const char *servicename,
const char *user,
const char *connectpath,
gid_t gid,
- const char *smb_name,
- const char *domain_name,
const char *str)
{
- char *a_string, *ret_string;
+ char *a_string;
char *b, *p, *s;
a_string = talloc_strdup(talloc_tos(), str);
if (a_string == NULL) {
- DBG_ERR("Out of memory!\n");
+ DEBUG(0, ("talloc_sub_advanced_only: Out of memory!\n"));
return NULL;
}
@@ -858,6 +856,26 @@ char *talloc_sub_full(TALLOC_CTX *ctx,
}
}
+ return a_string;
+}
+
+char *talloc_sub_full(TALLOC_CTX *ctx,
+ const char *servicename,
+ const char *user,
+ const char *connectpath,
+ gid_t gid,
+ const char *smb_name,
+ const char *domain_name,
+ const char *str)
+{
+ char *a_string, *ret_string;
+
+ a_string = talloc_sub_advanced(ctx, servicename, user, connectpath,
+ gid, str);
+ if (a_string == NULL) {
+ return NULL;
+ }
+
ret_string = talloc_sub_basic(ctx, smb_name, domain_name, a_string);
TALLOC_FREE(a_string);
return ret_string;