2 * Unix SMB/CIFS implementation.
4 * Registry helper routines
6 * Copyright (C) Gregor Beck 2010
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; either version 3 of the License, or
11 * (at your option) any later version.
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
18 * You should have received a copy of the GNU General Public License
19 * along with this program. If not, see <http://www.gnu.org/licenses/>.
23 * @brief Some stuff used by reg_parse and reg_format.
24 * It might be usefull elsewehre but need some review of the interfaces.
25 * @file reg_parse_internal.h
26 * @author Gregor Beck <gb@sernet.de>
29 #ifndef __REG_PARSE_INTERNAL_H
30 #define __REG_PARSE_INTERNAL_H
33 #include "system/iconv.h"
37 #define USE_NATIVE_ICONV
38 #if defined USE_NATIVE_ICONV && defined HAVE_NATIVE_ICONV
39 # define smb_iconv_t iconv_t
40 # define smb_iconv(CD, IPTR, ILEN, OPTR, OLEN) \
41 iconv(CD, (char**)(IPTR), ILEN, OPTR, OLEN)
42 # define smb_iconv_open iconv_open
43 # define smb_iconv_close iconv_close
46 size_t iconvert_talloc(const void* ctx
,
48 const char* src
, size_t srclen
,
53 const char* short_name
;
54 size_t short_name_len
;
55 const char* long_name
;
59 extern const struct hive_info HIVE_INFO_HKLM
;
60 extern const struct hive_info HIVE_INFO_HKCU
;
61 extern const struct hive_info HIVE_INFO_HKCR
;
62 extern const struct hive_info HIVE_INFO_HKU
;
63 extern const struct hive_info HIVE_INFO_HKCC
;
64 extern const struct hive_info HIVE_INFO_HKDD
;
65 extern const struct hive_info HIVE_INFO_HKPD
;
66 extern const struct hive_info HIVE_INFO_HKPT
;
67 extern const struct hive_info HIVE_INFO_HKPN
;
69 extern const struct hive_info
* HIVE_INFO
[];
71 const struct hive_info
* hive_info(const char* name
);
72 bool srprs_hive(const char** ptr
, const struct hive_info
** result
);
76 const char* get_charset(const char* c
);
78 bool set_iconv(smb_iconv_t
* t
, const char* to
, const char* from
);
82 * @param[in,out] ptr parse position
83 * @param[in] mem_ctx talloc context
84 * @param[out] name ptr 2 value
85 * @param[out] value ptr 2 value
86 * @return true on success
88 bool srprs_option(const char** ptr
, const void* mem_ctx
, char** name
, char** value
);
91 * Write Byte Order Mark for \p charset to file.
92 * If \c charset==NULL write BOM for \p ctype.
94 * @param[in] file file to write to
98 * @return number of bytes written, -1 on error
101 int write_bom(FILE* file
, const char* charset
, charset_t ctype
);
104 * Parse Byte Order Mark.
106 * @param[in,out] ptr parse position
107 * @param[out] name name of characterset
108 * @param[out] ctype charset_t
110 * @return true if found
113 bool srprs_bom(const char** ptr
, const char** name
, charset_t
* ctype
);
121 int cbuf_puts_case(struct cbuf
* s
, const char* str
, size_t len
, enum fmt_case fmt
);
123 #endif /* __REG_PARSE_INTERNAL_H */