diff options
author | Günther Deschner <gd@samba.org> | 2016-09-11 12:48:14 +0200 |
---|---|---|
committer | Andreas Schneider <asn@cryptomilk.org> | 2017-01-06 12:28:18 +0100 |
commit | 5c16dfe32532e06c7fe9fad6524ebef7d7378b76 (patch) | |
tree | 7a5de5c78256739c2dc5bad75cdd840e2284881a /libgpo/gpo_ini.c | |
parent | 90deb9f04c5ac1b2ef3ced35d927abb139d3e789 (diff) | |
download | samba-5c16dfe32532e06c7fe9fad6524ebef7d7378b76.tar.gz |
libgpo: add gp_inifile_init_context_direct()
This varient ignores the group policy flags and does not try to find the right
unix path.
Guenther
Signed-off-by: Guenther Deschner <gd@samba.org>
Reviewed-by: Andreas Schneider <asn@samba.org>
Diffstat (limited to 'libgpo/gpo_ini.c')
-rw-r--r-- | libgpo/gpo_ini.c | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/libgpo/gpo_ini.c b/libgpo/gpo_ini.c index c0276122922..3ea8006d1e1 100644 --- a/libgpo/gpo_ini.c +++ b/libgpo/gpo_ini.c @@ -273,6 +273,59 @@ NTSTATUS gp_inifile_init_context(TALLOC_CTX *mem_ctx, } /**************************************************************** +****************************************************************/ + +NTSTATUS gp_inifile_init_context_direct(TALLOC_CTX *mem_ctx, + const char *unix_path, + struct gp_inifile_context **pgp_ctx) +{ + struct gp_inifile_context *gp_ctx = NULL; + NTSTATUS status; + int rv; + char *tmp_filename = NULL; + + if (unix_path == NULL || pgp_ctx == NULL) { + return NT_STATUS_INVALID_PARAMETER; + } + + gp_ctx = talloc_zero(mem_ctx, struct gp_inifile_context); + if (gp_ctx == NULL) { + return NT_STATUS_NO_MEMORY; + } + + status = convert_file_from_ucs2(mem_ctx, unix_path, + &tmp_filename); + if (!NT_STATUS_IS_OK(status)) { + goto failed; + } + + rv = pm_process(tmp_filename, + change_section, + store_keyval_pair, + gp_ctx); + if (rv != 0) { + return NT_STATUS_NO_SUCH_FILE; + } + + gp_ctx->generated_filename = tmp_filename; + gp_ctx->mem_ctx = mem_ctx; + + *pgp_ctx = gp_ctx; + + return NT_STATUS_OK; + + failed: + + DEBUG(1,("gp_inifile_init_context_direct failed: %s\n", + nt_errstr(status))); + + talloc_free(gp_ctx); + + return status; +} + + +/**************************************************************** parse the local gpt.ini file ****************************************************************/ |