libini_config  0.4.0
 All Functions Enumerations Enumerator Groups Pages
ini_configobj.h
1 /*
2  INI LIBRARY
3 
4  Header file for the ini configuration interface.
5  THIS IS THE PREFERRED INTERFACE TO USE.
6 
7  Copyright (C) Dmitri Pal <dpal@redhat.com> 2010 - 2012
8 
9  INI Library is free software: you can redistribute it and/or modify
10  it under the terms of the GNU Lesser General Public License as published by
11  the Free Software Foundation, either version 3 of the License, or
12  (at your option) any later version.
13 
14  INI Library is distributed in the hope that it will be useful,
15  but WITHOUT ANY WARRANTY; without even the implied warranty of
16  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17  GNU Lesser General Public License for more details.
18 
19  You should have received a copy of the GNU Lesser General Public License
20  along with INI Library. If not, see <http://www.gnu.org/licenses/>.
21 */
22 
23 
24 #ifndef INI_CONFIGOBJ_H
25 #define INI_CONFIGOBJ_H
26 
27 #include <sys/types.h>
28 #include <sys/stat.h>
29 #include <unistd.h>
30 #include <limits.h>
31 #include <stdio.h>
32 #include "simplebuffer.h"
33 #include "ini_valueobj.h"
34 
141 enum ERR_LEVEL {
145 };
146 
159 enum ERR_PARSE {
180 };
181 
195 #define INI_META_NONE 0
196 
197 #define INI_META_STATS 1
198 
216 #define INI_ACCESS_CHECK_MODE 0x00000001
217 
224 #define INI_ACCESS_CHECK_UID 0x00000002
225 
232 #define INI_ACCESS_CHECK_GID 0x00000004
233 
256 #define INI_MV1S_OVERWRITE 0x0000
257 
258 #define INI_MV1S_ERROR 0x0001
259 
260 #define INI_MV1S_PRESERVE 0x0002
261 
262 #define INI_MV1S_ALLOW 0x0003
263 
264 #define INI_MV1S_DETECT 0x0004
265 
283 #define INI_MV2S_OVERWRITE 0x0000
284 
285 #define INI_MV2S_ERROR 0x0010
286 
287 #define INI_MV2S_PRESERVE 0x0020
288 
289 #define INI_MV2S_ALLOW 0x0030
290 
291 #define INI_MV2S_DETECT 0x0040
292 
309 #define INI_MS_MERGE 0x0000
310 
311 #define INI_MS_ERROR 0x0100
312 
313 #define INI_MS_OVERWRITE 0x0200
314 
315 #define INI_MS_PRESERVE 0x0300
316 
317 #define INI_MS_DETECT 0x0400
318 
336 #define INI_PARSE_NOWRAP 0x0001
337 
338 #define INI_PARSE_NOSPACE 0x0002
339 
340 #define INI_PARSE_NOTAB 0x0004
341 
342 #define INI_PARSE_NO_C_COMMENTS 0x0008
343 
367 enum INI_GET {
371 };
372 
383 #define INI_DEFAULT_SECTION "default"
384 
391 struct ini_cfgobj;
392 struct ini_cfgfile;
393 
397 struct ini_parse_error;
398 
399 
433 int ini_config_create(struct ini_cfgobj **ini_config);
434 
443 void ini_config_destroy(struct ini_cfgobj *ini_config);
444 
454 void ini_config_clean_state(struct ini_cfgobj *ini_config);
455 
481 int ini_config_file_open(const char *filename,
482  uint32_t metadata_flags,
483  struct ini_cfgfile **file_ctx);
484 
506 int ini_config_file_from_mem(void *data_buf,
507  uint32_t data_len,
508  struct ini_cfgfile **file_ctx);
509 
519 void ini_config_file_close(struct ini_cfgfile *file_ctx);
520 
521 
536 int ini_config_file_reopen(struct ini_cfgfile *file_ctx_in,
537  struct ini_cfgfile **file_ctx_out);
538 
539 
548 void ini_config_file_destroy(struct ini_cfgfile *file_ctx);
549 
561 unsigned ini_config_error_count(struct ini_cfgobj *ini_config);
562 
579 int ini_config_get_errors(struct ini_cfgobj *ini_config,
580  char ***errors);
581 
591 void ini_config_free_errors(char **errors);
592 
604 void ini_config_print_errors(FILE *file, char **error_list);
605 
616 const char *ini_config_get_filename(struct ini_cfgfile *file_ctx);
617 
629 const struct stat *ini_config_get_stat(struct ini_cfgfile *file_ctx);
630 
631 
632 
641 void ini_config_file_print(struct ini_cfgfile *file_ctx);
642 
667 int ini_config_access_check(struct ini_cfgfile *file_ctx,
668  uint32_t flags,
669  uid_t uid,
670  gid_t gid,
671  mode_t mode,
672  mode_t mask);
673 
705 int ini_config_changed(struct ini_cfgfile *file_ctx1,
706  struct ini_cfgfile *file_ctx2,
707  int *changed);
708 
731 int ini_config_parse(struct ini_cfgfile *file_ctx,
732  int error_level,
733  uint32_t collision_flags,
734  uint32_t parse_flags,
735  struct ini_cfgobj *ini_config);
736 
750 int ini_config_copy(struct ini_cfgobj *ini_config,
751  struct ini_cfgobj **ini_new);
752 
778 int ini_config_merge(struct ini_cfgobj *first,
779  struct ini_cfgobj *second,
780  uint32_t collision_flags,
781  struct ini_cfgobj **result);
782 
796 int ini_config_set_wrap(struct ini_cfgobj *ini_config,
797  uint32_t boundary);
798 
813 int ini_config_serialize(struct ini_cfgobj *ini_config,
814  struct simplebuffer *sbobj);
815 
816 
817 /* TODO: Functions that add, modify or delete sections and values in
818  * the configuration object.
819  */
820 
857 char **ini_get_section_list(struct ini_cfgobj *ini_config,
858  int *size,
859  int *error);
860 
870 void ini_free_section_list(char **section_list);
871 
892 char **ini_get_attribute_list(struct ini_cfgobj *ini_config,
893  const char *section,
894  int *size,
895  int *error);
896 
906 void ini_free_attribute_list(char **attr_list);
907 
949 int ini_get_config_valueobj(const char *section,
950  const char *name,
951  struct ini_cfgobj *ini_config,
952  int mode,
953  struct value_obj **vo);
954 
955 
956 
997 int ini_get_int_config_value(struct value_obj *vo,
998  int strict,
999  int def,
1000  int *error);
1001 
1043 unsigned ini_get_unsigned_config_value(struct value_obj *vo,
1044  int strict,
1045  unsigned def,
1046  int *error);
1047 
1089 long ini_get_long_config_value(struct value_obj *vo,
1090  int strict,
1091  long def,
1092  int *error);
1093 
1135 unsigned long ini_get_ulong_config_value(struct value_obj *vo,
1136  int strict,
1137  unsigned long def,
1138  int *error);
1139 
1140 
1181 int32_t ini_get_int32_config_value(struct value_obj *vo,
1182  int strict,
1183  int32_t def,
1184  int *error);
1185 
1226 uint32_t ini_get_uint32_config_value(struct value_obj *vo,
1227  int strict,
1228  uint32_t def,
1229  int *error);
1230 
1271 int64_t ini_get_int64_config_value(struct value_obj *vo,
1272  int strict,
1273  int64_t def,
1274  int *error);
1275 
1316 uint64_t ini_get_uint64_config_value(struct value_obj *vo,
1317  int strict,
1318  uint64_t def,
1319  int *error);
1320 
1359 double ini_get_double_config_value(struct value_obj *vo,
1360  int strict,
1361  double def,
1362  int *error);
1363 
1397 unsigned char ini_get_bool_config_value(struct value_obj *vo,
1398  unsigned char def,
1399  int *error);
1400 
1425 char *ini_get_string_config_value(struct value_obj *vo,
1426  int *error);
1449 const char *ini_get_const_string_config_value(struct value_obj *vo,
1450  int *error);
1451 
1501 char *ini_get_bin_config_value(struct value_obj *vo,
1502  int *length,
1503  int *error);
1504 
1513 void ini_free_bin_config_value(char *bin);
1514 
1569 char **ini_get_string_config_array(struct value_obj *vo,
1570  const char *sep,
1571  int *size,
1572  int *error);
1573 
1628 char **ini_get_raw_string_config_array(struct value_obj *vo,
1629  const char *sep,
1630  int *size,
1631  int *error);
1632 
1675 long *ini_get_long_config_array(struct value_obj *vo,
1676  int *size,
1677  int *error);
1678 
1720 double *ini_get_double_config_array(struct value_obj *vo,
1721  int *size,
1722  int *error);
1723 
1733 void ini_free_string_config_array(char **str_config);
1734 
1743 void ini_free_long_config_array(long *array);
1752 void ini_free_double_config_array(double *array);
1753 
1758 #endif
Definition: ini_configobj.h:160
Definition: ini_configobj.h:176
int ini_get_config_valueobj(const char *section, const char *name, struct ini_cfgobj *ini_config, int mode, struct value_obj **vo)
Retrieve a value object form the configuration.
void ini_free_long_config_array(long *array)
Free array of long values.
void ini_config_file_print(struct ini_cfgfile *file_ctx)
Print file context.
Definition: ini_configobj.h:169
void ini_free_attribute_list(char **attr_list)
Free list of attributes.
ERR_LEVEL
Definition: ini_configobj.h:141
void ini_config_free_errors(char **errors)
Free array of parsing errors.
char ** ini_get_string_config_array(struct value_obj *vo, const char *sep, int *size, int *error)
Convert value to an array of strings.
Definition: ini_configobj.h:171
Definition: ini_configobj.h:144
INI_GET
Definition: ini_configobj.h:367
Definition: ini_configobj.h:167
const char * ini_config_get_filename(struct ini_cfgfile *file_ctx)
Get the fully resolved file name.
Definition: ini_configobj.h:369
void ini_free_section_list(char **section_list)
Free list of sections.
uint32_t ini_get_uint32_config_value(struct value_obj *vo, int strict, uint32_t def, int *error)
Convert value to uint32_t number.
unsigned ini_config_error_count(struct ini_cfgobj *ini_config)
Check parsing errors count.
void ini_config_destroy(struct ini_cfgobj *ini_config)
Destroy a configuration object.
Definition: ini_configobj.h:175
int ini_config_changed(struct ini_cfgfile *file_ctx1, struct ini_cfgfile *file_ctx2, int *changed)
Check if file has changed.
Definition: ini_configobj.h:370
Definition: ini_configobj.h:161
long * ini_get_long_config_array(struct value_obj *vo, int *size, int *error)
Convert value to an array of long values.
int ini_config_file_reopen(struct ini_cfgfile *file_ctx_in, struct ini_cfgfile **file_ctx_out)
Reopen the configuration file.
long ini_get_long_config_value(struct value_obj *vo, int strict, long def, int *error)
Convert value to long number.
Definition: ini_configobj.h:164
unsigned ini_get_unsigned_config_value(struct value_obj *vo, int strict, unsigned def, int *error)
Convert value object to a unsigned number.
char ** ini_get_raw_string_config_array(struct value_obj *vo, const char *sep, int *size, int *error)
Convert value to an array of strings.
void ini_free_bin_config_value(char *bin)
Free binary buffer.
int ini_config_get_errors(struct ini_cfgobj *ini_config, char ***errors)
Get array of parsing errors.
void ini_config_clean_state(struct ini_cfgobj *ini_config)
Flush cached search data.
Definition: ini_configobj.h:368
char * ini_get_string_config_value(struct value_obj *vo, int *error)
Get the copy of string stored in the configuration value.
Definition: ini_configobj.h:142
uint64_t ini_get_uint64_config_value(struct value_obj *vo, int strict, uint64_t def, int *error)
Convert value to integer number.
int ini_config_merge(struct ini_cfgobj *first, struct ini_cfgobj *second, uint32_t collision_flags, struct ini_cfgobj **result)
Merge two configuration objects.
Definition: ini_configobj.h:168
int ini_config_set_wrap(struct ini_cfgobj *ini_config, uint32_t boundary)
Set the folding boundary.
Definition: ini_configobj.h:172
double * ini_get_double_config_array(struct value_obj *vo, int *size, int *error)
Convert value to an array of floating point values.
Definition: ini_configobj.h:166
Definition: ini_configobj.h:165
int ini_get_int_config_value(struct value_obj *vo, int strict, int def, int *error)
Convert value to integer number.
Definition: ini_configobj.h:178
void ini_config_file_close(struct ini_cfgfile *file_ctx)
Close configuration file after parsing.
void ini_config_print_errors(FILE *file, char **error_list)
Print errors to a file.
unsigned char ini_get_bool_config_value(struct value_obj *vo, unsigned char def, int *error)
Convert value into a logical value.
char ** ini_get_section_list(struct ini_cfgobj *ini_config, int *size, int *error)
Get list of sections.
const char * ini_get_const_string_config_value(struct value_obj *vo, int *error)
Get the string stored in the configuration value.
ERR_PARSE
Definition: ini_configobj.h:159
void ini_free_double_config_array(double *array)
Free array of floating pointer values.
struct stat * ini_config_get_stat(struct ini_cfgfile *file_ctx)
Get pointer to collected stat data.
int ini_config_copy(struct ini_cfgobj *ini_config, struct ini_cfgobj **ini_new)
Create a copy of the configuration object.
Definition: ini_configobj.h:174
int ini_config_access_check(struct ini_cfgfile *file_ctx, uint32_t flags, uid_t uid, gid_t gid, mode_t mode, mode_t mask)
Check file properties.
void ini_config_file_destroy(struct ini_cfgfile *file_ctx)
Close configuration file and free all data.
Definition: ini_configobj.h:179
char ** ini_get_attribute_list(struct ini_cfgobj *ini_config, const char *section, int *size, int *error)
Get list of attributes.
Definition: ini_configobj.h:163
int32_t ini_get_int32_config_value(struct value_obj *vo, int strict, int32_t def, int *error)
Convert value to int32_t number.
char * ini_get_bin_config_value(struct value_obj *vo, int *length, int *error)
Convert value into a binary sequence.
int ini_config_create(struct ini_cfgobj **ini_config)
Create a configuration object.
int ini_config_file_open(const char *filename, uint32_t metadata_flags, struct ini_cfgfile **file_ctx)
Create a configuration file object.
int ini_config_serialize(struct ini_cfgobj *ini_config, struct simplebuffer *sbobj)
Serialize configuration object.
int64_t ini_get_int64_config_value(struct value_obj *vo, int strict, int64_t def, int *error)
Convert value to integer number.
Definition: ini_configobj.h:143
double ini_get_double_config_value(struct value_obj *vo, int strict, double def, int *error)
Convert value to floating point number.
int ini_config_parse(struct ini_cfgfile *file_ctx, int error_level, uint32_t collision_flags, uint32_t parse_flags, struct ini_cfgobj *ini_config)
Parse the file and populate a configuration object.
int ini_config_file_from_mem(void *data_buf, uint32_t data_len, struct ini_cfgfile **file_ctx)
Create a configuration file object using memory buffer.
unsigned long ini_get_ulong_config_value(struct value_obj *vo, int strict, unsigned long def, int *error)
Convert value to unsigned long number.
void ini_free_string_config_array(char **str_config)
Free array of string values.