From e10ea2b3cdfd32f810c6058446efb1392eb157ad Mon Sep 17 00:00:00 2001 From: Gregor Beck Date: Mon, 30 Apr 2012 10:27:56 +0200 Subject: s3:registry: add functions to conveniently create registry_values Pair-Programmed-With: Michael Adam --- source3/registry/reg_api_util.c | 61 +++++++++++++++++++++++++++++++++++++++++ source3/registry/reg_api_util.h | 4 +++ 2 files changed, 65 insertions(+) (limited to 'source3/registry') diff --git a/source3/registry/reg_api_util.c b/source3/registry/reg_api_util.c index f2a31833c64..42aaa00c61b 100644 --- a/source3/registry/reg_api_util.c +++ b/source3/registry/reg_api_util.c @@ -26,6 +26,7 @@ #include "registry.h" #include "reg_api.h" #include "reg_api_util.h" +#include "libcli/registry/util_reg.h" /** * Utility function to open a complete registry path including the hive prefix. @@ -176,3 +177,63 @@ WERROR reg_delete_path(const struct security_token *token, TALLOC_FREE(hive); return err; } + +struct registry_value *registry_value_dw(TALLOC_CTX *mem_ctx, uint32_t dw) +{ + struct registry_value *ret; + + ret = talloc_zero(mem_ctx, struct registry_value); + if (ret == NULL) { + return NULL; + } + + ret->data = data_blob_talloc(ret, NULL, sizeof(uint32_t)); + if (ret->data.data == NULL) { + talloc_free(ret); + return NULL; + } + + ret->type = REG_DWORD; + + SIVAL(ret->data.data, 0, dw); + + return ret; +} + +struct registry_value *registry_value_sz(TALLOC_CTX *mem_ctx, const char *str) +{ + struct registry_value *ret; + + ret = talloc_zero(mem_ctx, struct registry_value); + if (ret == NULL) { + return NULL; + } + + if (!push_reg_sz(ret, &ret->data, str)) { + talloc_free(ret); + return NULL; + } + + ret->type = REG_SZ; + + return ret; +} + +struct registry_value *registry_value_multi_sz(TALLOC_CTX *mem_ctx, const char **str) +{ + struct registry_value *ret; + + ret = talloc_zero(mem_ctx, struct registry_value); + if (ret == NULL) { + return NULL; + } + + if (!push_reg_multi_sz(ret, &ret->data, str)) { + talloc_free(ret); + return NULL; + } + + ret->type = REG_MULTI_SZ; + + return ret; +} diff --git a/source3/registry/reg_api_util.h b/source3/registry/reg_api_util.h index a70fa725618..7009794beba 100644 --- a/source3/registry/reg_api_util.h +++ b/source3/registry/reg_api_util.h @@ -40,4 +40,8 @@ WERROR reg_create_path(TALLOC_CTX *mem_ctx, const char *orig_path, WERROR reg_delete_path(const struct security_token *token, const char *orig_path); +struct registry_value *registry_value_dw(TALLOC_CTX *mem_ctx, uint32_t dw); +struct registry_value *registry_value_sz(TALLOC_CTX *mem_ctx, const char *str); +struct registry_value *registry_value_multi_sz(TALLOC_CTX *mem_ctx, const char **str); + #endif /* _REG_API_UTIL_H */ -- cgit v1.2.1