s3: VFS: Add a synchronous smb_vfs_fsync_sync() call, built from async primitives.
[samba.git] / libgpo / gpo_ini.h
1 /*
2  *  Unix SMB/CIFS implementation.
3  *  Group Policy Support
4  *  Copyright (C) Guenther Deschner 2007
5  *
6  *  This program is free software; you can redistribute it and/or modify
7  *  it under the terms of the GNU General Public License as published by
8  *  the Free Software Foundation; either version 3 of the License, or
9  *  (at your option) any later version.
10  *
11  *  This program is distributed in the hope that it will be useful,
12  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  *  GNU General Public License for more details.
15  *
16  *  You should have received a copy of the GNU General Public License
17  *  along with this program; if not, see <http://www.gnu.org/licenses/>.
18  */
19
20 struct keyval_pair {
21         const char *key;
22         const char *val;
23 };
24
25 struct gp_inifile_context {
26         TALLOC_CTX *mem_ctx;
27         uint32_t keyval_count;
28         struct keyval_pair **data;
29         char *current_section;
30         const char *generated_filename;
31 };
32
33 /* prototypes */
34
35 NTSTATUS gp_inifile_init_context(TALLOC_CTX *mem_ctx, uint32_t flags,
36                                  const char *unix_path, const char *suffix,
37                                  struct gp_inifile_context **ctx_ret);
38 NTSTATUS gp_inifile_init_context_direct(TALLOC_CTX *mem_ctx,
39                                         const char *unix_path,
40                                         struct gp_inifile_context **ctx_ret);
41 NTSTATUS parse_gpt_ini(TALLOC_CTX *ctx,
42                        const char *filename,
43                        uint32_t *version,
44                        char **display_name);
45 NTSTATUS gp_inifile_getstring(struct gp_inifile_context *ctx, const char *key, const char **ret);
46 NTSTATUS gp_inifile_getint(struct gp_inifile_context *ctx, const char *key, int *ret);
47 NTSTATUS gp_inifile_getbool(struct gp_inifile_context *ctx, const char *key, bool *ret);
48
49 NTSTATUS gp_inifile_enum_section(struct gp_inifile_context *ctx,
50                                  const char *section,
51                                  size_t *num_ini_keys,
52                                  const char ***ini_keys,
53                                  const char ***ini_values);