summaryrefslogtreecommitdiff
path: root/libgpo/gpo_ini.c
diff options
context:
space:
mode:
authorGünther Deschner <gd@samba.org>2016-09-11 12:48:14 +0200
committerAndreas Schneider <asn@cryptomilk.org>2017-01-06 12:28:18 +0100
commit5c16dfe32532e06c7fe9fad6524ebef7d7378b76 (patch)
tree7a5de5c78256739c2dc5bad75cdd840e2284881a /libgpo/gpo_ini.c
parent90deb9f04c5ac1b2ef3ced35d927abb139d3e789 (diff)
downloadsamba-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.c53
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
****************************************************************/