diff options
author | Jelmer Vernooij <jelmer@samba.org> | 2007-12-13 22:46:47 +0100 |
---|---|---|
committer | Stefan Metzmacher <metze@samba.org> | 2007-12-21 05:50:07 +0100 |
commit | 5e00673a4063c9a51580a36ba1f824bd8ea0de66 (patch) | |
tree | 6b5547cc28b05a97062df284d04db41135bf573d /source4/lib/tdr/tdr.c | |
parent | e8f46760e0134c45cd2b6b27aef60622c4bf58fa (diff) | |
download | samba-5e00673a4063c9a51580a36ba1f824bd8ea0de66.tar.gz samba-5e00673a4063c9a51580a36ba1f824bd8ea0de66.tar.bz2 samba-5e00673a4063c9a51580a36ba1f824bd8ea0de66.zip |
r26438: Store iconv convenience in tdr push contexts.
(This used to be commit dffef3162778aebe2f8d77e2da60b22adb7d60ef)
Diffstat (limited to 'source4/lib/tdr/tdr.c')
-rw-r--r-- | source4/lib/tdr/tdr.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/source4/lib/tdr/tdr.c b/source4/lib/tdr/tdr.c index 80e1d9ae24..1a52f10569 100644 --- a/source4/lib/tdr/tdr.c +++ b/source4/lib/tdr/tdr.c @@ -176,7 +176,7 @@ NTSTATUS tdr_push_charset(struct tdr_push *tdr, const char **v, uint32_t length, required = el_size * length; TDR_PUSH_NEED_BYTES(tdr, required); - ret = convert_string(lp_iconv_convenience(global_loadparm), CH_UNIX, chset, *v, strlen(*v), tdr->data.data+tdr->data.length, required); + ret = convert_string(tdr->iconv_convenience, CH_UNIX, chset, *v, strlen(*v), tdr->data.data+tdr->data.length, required); if (ret == -1) { return NT_STATUS_INVALID_PARAMETER; @@ -372,11 +372,23 @@ NTSTATUS tdr_pull_DATA_BLOB(struct tdr_pull *tdr, TALLOC_CTX *ctx, DATA_BLOB *bl return NT_STATUS_OK; } -NTSTATUS tdr_push_to_fd(int fd, tdr_push_fn_t push_fn, const void *p) +struct tdr_push *tdr_push_init(TALLOC_CTX *mem_ctx, struct smb_iconv_convenience *ic) { struct tdr_push *push = talloc_zero(NULL, struct tdr_push); if (push == NULL) + return NULL; + + push->iconv_convenience = talloc_reference(push, ic); + + return push; +} + +NTSTATUS tdr_push_to_fd(int fd, struct smb_iconv_convenience *iconv_convenience, tdr_push_fn_t push_fn, const void *p) +{ + struct tdr_push *push = tdr_push_init(NULL, iconv_convenience); + + if (push == NULL) return NT_STATUS_NO_MEMORY; if (NT_STATUS_IS_ERR(push_fn(push, p))) { |