summaryrefslogtreecommitdiff
path: root/source3/rpc_client/cli_winreg.c
diff options
context:
space:
mode:
authorAndreas Schneider <asn@samba.org>2011-01-28 10:43:49 +0100
committerGünther Deschner <gd@samba.org>2011-02-07 12:31:59 +0100
commit8ed91d602774155859b9d9acaa5909a1a0a68079 (patch)
tree22daaf714df015ae36c786b7b8abca045f00b1d6 /source3/rpc_client/cli_winreg.c
parent8c119e47578e5dadaad32330a77a0cab8557a4a0 (diff)
downloadsamba-8ed91d602774155859b9d9acaa5909a1a0a68079.tar.gz
samba-8ed91d602774155859b9d9acaa5909a1a0a68079.tar.bz2
samba-8ed91d602774155859b9d9acaa5909a1a0a68079.zip
s3-rpc_client: Added a winreg add multi sz helper.
Signed-off-by: Günther Deschner <gd@samba.org>
Diffstat (limited to 'source3/rpc_client/cli_winreg.c')
-rw-r--r--source3/rpc_client/cli_winreg.c42
1 files changed, 42 insertions, 0 deletions
diff --git a/source3/rpc_client/cli_winreg.c b/source3/rpc_client/cli_winreg.c
index 32f892fdcb..41be96985b 100644
--- a/source3/rpc_client/cli_winreg.c
+++ b/source3/rpc_client/cli_winreg.c
@@ -403,4 +403,46 @@ NTSTATUS dcerpc_winreg_set_multi_sz(TALLOC_CTX *mem_ctx,
return status;
}
+NTSTATUS dcerpc_winreg_add_multi_sz(TALLOC_CTX *mem_ctx,
+ struct dcerpc_binding_handle *h,
+ struct policy_handle *key_handle,
+ const char *value,
+ const char *data,
+ WERROR *pwerr)
+{
+ const char **a = NULL;
+ const char **p;
+ uint32_t i;
+ WERROR result = WERR_OK;
+ NTSTATUS status;
+
+ status = dcerpc_winreg_query_multi_sz(mem_ctx,
+ h,
+ key_handle,
+ value,
+ &a,
+ &result);
+
+ /* count the elements */
+ for (p = a, i = 0; p && *p; p++, i++);
+
+ p = TALLOC_REALLOC_ARRAY(mem_ctx, a, const char *, i + 2);
+ if (p == NULL) {
+ *pwerr = WERR_NOMEM;
+ return NT_STATUS_OK;
+ }
+
+ p[i] = data;
+ p[i + 1] = NULL;
+
+ status = dcerpc_winreg_set_multi_sz(mem_ctx,
+ h,
+ key_handle,
+ value,
+ p,
+ pwerr);
+
+ return status;
+}
+
/* vim: set ts=8 sw=8 noet cindent syntax=c.doxygen: */