libini_config  0.1.3
 All Data Structures Functions Groups Pages
ini_config.h
1 /*
2  INI LIBRARY
3 
4  Header file for reading configuration from INI file
5  and storing as a collection.
6 
7  Copyright (C) Dmitri Pal <dpal@redhat.com> 2009
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 #ifndef INI_CONFIG_H
24 #define INI_CONFIG_H
25 
26 #include <sys/types.h>
27 #include <sys/stat.h>
28 #include <unistd.h>
29 #include <limits.h>
30 #include <stdio.h>
31 #include "collection.h"
32 
128 #define INI_DEFAULT_SECTION "default"
129 
153 #define COL_CLASS_INI_BASE 20000
154 
165 #define COL_CLASS_INI_CONFIG COL_CLASS_INI_BASE + 0
166 
170 #define COL_CLASS_INI_SECTION COL_CLASS_INI_BASE + 1
171 
176 #define COL_CLASS_INI_PERROR COL_CLASS_INI_BASE + 2
177 
185 #define COL_CLASS_INI_PESET COL_CLASS_INI_BASE + 3
186 
192 #define COL_CLASS_INI_META COL_CLASS_INI_BASE + 4
193 
206 #define INI_STOP_ON_ANY 0
207 
208 #define INI_STOP_ON_NONE 1
209 
210 #define INI_STOP_ON_ERROR 2
211 
222 #define ERR_LONGDATA 1
223 
224 #define ERR_NOCLOSESEC 2
225 
226 #define ERR_NOSECTION 3
227 
228 #define ERR_SECTIONLONG 4
229 
230 #define ERR_NOEQUAL 5
231 
232 #define ERR_NOKEY 6
233 
234 #define ERR_LONGKEY 7
235 
237 #define ERR_MAXPARSE ERR_LONGKEY
238 
250 #define ERR_MAXGRAMMAR 0
251 
262 #define ERR_MAXVALID 0
263 
264 
282 #define INI_ACCESS_CHECK_MODE 0x00000001
283 
290 #define INI_ACCESS_CHECK_UID 0x00000002
291 
298 #define INI_ACCESS_CHECK_GID 0x00000004
299 
317 struct parse_error {
318  unsigned line;
319  int error;
320 };
321 
322 
377 #define INI_META_ACTION_NOPARSE 0x10000000
378 
389 #define INI_META_SEC_ACCESS "ACCESS"
390 
395 #define INI_META_SEC_ACCESS_FLAG 0x00000001
396 
397 
409 #define INI_META_KEY_UID "uid"
410 
415 #define INI_META_KEY_GID "gid"
416 
421 #define INI_META_KEY_PERM "perm"
422 
427 #define INI_META_KEY_DEV "dev"
428 
433 #define INI_META_KEY_INODE "inode"
434 
439 #define INI_META_KEY_MODIFIED "modified"
440 
445 #define INI_META_KEY_NAME "name"
446 
454 #define INI_META_SEC_ERROR "ERROR"
455 
460 #define INI_META_SEC_ERROR_FLAG 0x00000002
461 
462 
476 #define INI_META_KEY_READ_ERROR "read_error"
477 
478 
503 const char *parsing_error_str(int parsing_error);
504 
505 
531 int config_from_file(const char *application,
532  const char *config_filename,
533  struct collection_item **ini_config,
534  int error_level,
535  struct collection_item **error_list);
536 
563 int config_from_fd(const char *application,
564  int fd,
565  const char *config_source,
566  struct collection_item **ini_config,
567  int error_level,
568  struct collection_item **error_list);
569 
570 
571 
617  const char *application,
618  const char *config_filename,
619  struct collection_item **ini_config,
620  int error_level,
621  struct collection_item **error_list,
622  uint32_t metaflags,
623  struct collection_item **metadata);
624 
625 
671  const char *application,
672  int fd,
673  const char *config_source,
674  struct collection_item **ini_config,
675  int error_level,
676  struct collection_item **error_list,
677  uint32_t metaflags,
678  struct collection_item **metadata);
679 
680 
709 int config_for_app(const char *application,
710  const char *config_file,
711  const char *config_dir,
712  struct collection_item **ini_config,
713  int error_level,
714  struct collection_item **error_set);
715 
766  const char *application,
767  const char *config_file,
768  const char *config_dir,
769  struct collection_item **ini_config,
770  int error_level,
771  struct collection_item **error_set,
772  uint32_t metaflags,
773  struct collection_item **meta_default,
774  struct collection_item **meta_appini);
775 
776 
807 int config_access_check(struct collection_item *metadata,
808  uint32_t flags,
809  uid_t uid,
810  gid_t gid,
811  mode_t mode,
812  mode_t mask);
813 
814 
841 int config_changed(struct collection_item *metadata,
842  struct collection_item *saved_metadata,
843  int *changed);
844 
851 void free_ini_config(struct collection_item *ini_config);
852 
859 void free_ini_config_errors(struct collection_item *error_set);
860 
861 
868 void free_ini_config_metadata(struct collection_item *metadata);
869 
870 
878 void print_file_parsing_errors(FILE *file,
879  struct collection_item *error_list);
880 
881 
892 void print_config_parsing_errors(FILE *file,
893  struct collection_item *error_set);
894 
915 char **get_section_list(struct collection_item *ini_config,
916  int *size,
917  int *error);
918 
928 void free_section_list(char **section_list);
929 
950 char **get_attribute_list(struct collection_item *ini_config,
951  const char *section,
952  int *size,
953  int *error);
954 
964 void free_attribute_list(char **attr_list);
965 
989 int get_config_item(const char *section,
990  const char *name,
991  struct collection_item *ini_config,
992  struct collection_item **item);
993 
1034 int get_int_config_value(struct collection_item *item,
1035  int strict,
1036  int def,
1037  int *error);
1038 
1079 long get_long_config_value(struct collection_item *item,
1080  int strict,
1081  long def,
1082  int *error);
1083 
1124 unsigned get_unsigned_config_value(struct collection_item *item,
1125  int strict,
1126  unsigned def,
1127  int *error);
1128 
1169 unsigned long get_ulong_config_value(struct collection_item *item,
1170  int strict,
1171  unsigned long def,
1172  int *error);
1173 
1214 int32_t get_int32_config_value(struct collection_item *item,
1215  int strict,
1216  int32_t def,
1217  int *error);
1218 
1259 uint32_t get_uint32_config_value(struct collection_item *item,
1260  int strict,
1261  uint32_t def,
1262  int *error);
1263 
1304 int64_t get_int64_config_value(struct collection_item *item,
1305  int strict,
1306  int64_t def,
1307  int *error);
1308 
1349 uint64_t get_uint64_config_value(struct collection_item *item,
1350  int strict,
1351  uint64_t def,
1352  int *error);
1353 
1392 double get_double_config_value(struct collection_item *item,
1393  int strict,
1394  double def,
1395  int *error);
1396 
1430 unsigned char get_bool_config_value(struct collection_item *item,
1431  unsigned char def,
1432  int *error);
1433 
1457 char *get_string_config_value(struct collection_item *item,
1458  int *error);
1481 const char *get_const_string_config_value(struct collection_item *item,
1482  int *error);
1483 
1533 char *get_bin_config_value(struct collection_item *item,
1534  int *length,
1535  int *error);
1536 
1545 void free_bin_config_value(char *bin);
1546 
1601 char **get_string_config_array(struct collection_item *item,
1602  const char *sep,
1603  int *size,
1604  int *error);
1605 
1660 char **get_raw_string_config_array(struct collection_item *item,
1661  const char *sep,
1662  int *size,
1663  int *error);
1664 
1707 long *get_long_config_array(struct collection_item *item,
1708  int *size,
1709  int *error);
1710 
1752 double *get_double_config_array(struct collection_item *item,
1753  int *size,
1754  int *error);
1755 
1765 void free_string_config_array(char **str_config);
1766 
1775 void free_long_config_array(long *array);
1784 void free_double_config_array(double *array);
1785 
1786 
1791 #endif
unsigned char get_bool_config_value(struct collection_item *item, unsigned char def, int *error)
Convert item value into a logical value.
Definition: ini_get_value.c:406
int config_from_file_with_metadata(const char *application, const char *config_filename, struct collection_item **ini_config, int error_level, struct collection_item **error_list, uint32_t metaflags, struct collection_item **metadata)
Read configuration information from a file with additional meta data.
Definition: ini_config.c:582
char ** get_section_list(struct collection_item *ini_config, int *size, int *error)
Get list of sections.
Definition: ini_list.c:66
double * get_double_config_array(struct collection_item *item, int *size, int *error)
Convert value to an array of floating point values.
Definition: ini_get_array.c:274
void free_double_config_array(double *array)
Free array of floating pointer values.
Definition: ini_get_array.c:353
char * get_bin_config_value(struct collection_item *item, int *length, int *error)
Convert item value into a binary sequence.
Definition: ini_get_value.c:502
unsigned long get_ulong_config_value(struct collection_item *item, int strict, unsigned long def, int *error)
Convert item value to unsigned long number.
Definition: ini_get_value.c:269
const char * get_const_string_config_value(struct collection_item *item, int *error)
Function returns the string stored in the item.
Definition: ini_get_value.c:474
char ** get_attribute_list(struct collection_item *ini_config, const char *section, int *size, int *error)
Get list of attributes.
Definition: ini_list.c:90
Structure that holds error number and line number for the encountered error.
Definition: ini_config.h:317
void free_ini_config(struct collection_item *ini_config)
Function to free configuration object.
Definition: ini_config.c:299
long * get_long_config_array(struct collection_item *item, int *size, int *error)
Convert value to an array of long values.
Definition: ini_get_array.c:204
int32_t get_int32_config_value(struct collection_item *item, int strict, int32_t def, int *error)
Convert item value to integer number.
Definition: ini_get_value.c:295
uint32_t get_uint32_config_value(struct collection_item *item, int strict, uint32_t def, int *error)
Convert item value to integer number.
Definition: ini_get_value.c:311
void print_file_parsing_errors(FILE *file, struct collection_item *error_list)
Print errors and warnings that were detected while parsing one file.
Definition: ini_print.c:250
int config_changed(struct collection_item *metadata, struct collection_item *saved_metadata, int *changed)
Function compares two meta data objects.
Definition: ini_metadata.c:465
int config_access_check(struct collection_item *metadata, uint32_t flags, uid_t uid, gid_t gid, mode_t mode, mode_t mask)
Function to check ownership and permissions.
Definition: ini_metadata.c:318
char * get_string_config_value(struct collection_item *item, int *error)
Get string configuration value.
Definition: ini_get_value.c:445
int config_for_app(const char *application, const char *config_file, const char *config_dir, struct collection_item **ini_config, int error_level, struct collection_item **error_set)
Read default configuration file and then overwrite it with a specific one from the directory...
Definition: ini_config.c:824
int64_t get_int64_config_value(struct collection_item *item, int strict, int64_t def, int *error)
Convert item value to integer number.
Definition: ini_get_value.c:327
void free_section_list(char **section_list)
Free list of sections.
Definition: ini_list.c:43
int config_for_app_with_metadata(const char *application, const char *config_file, const char *config_dir, struct collection_item **ini_config, int error_level, struct collection_item **error_set, uint32_t metaflags, struct collection_item **meta_default, struct collection_item **meta_appini)
Read default configuration file and then overwrite it with a specific one from the directory...
Definition: ini_config.c:609
int config_from_file(const char *application, const char *config_filename, struct collection_item **ini_config, int error_level, struct collection_item **error_list)
Read configuration information from a file.
Definition: ini_config.c:342
double get_double_config_value(struct collection_item *item, int strict, double def, int *error)
Convert item value to floating point number.
Definition: ini_get_value.c:362
void free_attribute_list(char **attr_list)
Free list of attributes.
Definition: ini_list.c:53
const char * parsing_error_str(int parsing_error)
Function to return a parsing error as a string.
Definition: ini_print.c:69
void free_string_config_array(char **str_config)
Free array of string values.
Definition: ini_get_array.c:187
void free_ini_config_metadata(struct collection_item *metadata)
Function to free metadata.
Definition: ini_metadata.c:264
int config_from_fd(const char *application, int fd, const char *config_source, struct collection_item **ini_config, int error_level, struct collection_item **error_list)
Read configuration information from a file descriptor.
Definition: ini_config.c:363
void print_config_parsing_errors(FILE *file, struct collection_item *error_set)
Print errors and warnings that were detected parsing configuration as a whole.
Definition: ini_print.c:324
int get_int_config_value(struct collection_item *item, int strict, int def, int *error)
Convert item value to integer number.
Definition: ini_get_value.c:192
uint64_t get_uint64_config_value(struct collection_item *item, int strict, uint64_t def, int *error)
Convert item value to integer number.
Definition: ini_get_value.c:343
unsigned get_unsigned_config_value(struct collection_item *item, int strict, unsigned def, int *error)
Convert item value to unsigned integer number.
Definition: ini_get_value.c:217
void free_bin_config_value(char *bin)
Free binary buffer.
Definition: ini_get_value.c:586
void free_long_config_array(long *array)
Free array of long values.
Definition: ini_get_array.c:347
void free_ini_config_errors(struct collection_item *error_set)
Function to free configuration errors.
Definition: ini_config.c:307
long get_long_config_value(struct collection_item *item, int strict, long def, int *error)
Convert item value to long number.
Definition: ini_get_value.c:243
char ** get_string_config_array(struct collection_item *item, const char *sep, int *size, int *error)
Convert value to an array of strings.
Definition: ini_get_array.c:172
int get_config_item(const char *section, const char *name, struct collection_item *ini_config, struct collection_item **item)
Get a configuration item form the configuration.
Definition: ini_get_value.c:37
int config_from_fd_with_metadata(const char *application, int ext_fd, const char *config_filename, struct collection_item **ini_config, int error_level, struct collection_item **error_list, uint32_t metaflags, struct collection_item **metadata)
Read configuration information from a file descriptor with additional meta data.
Definition: ini_config.c:467
char ** get_raw_string_config_array(struct collection_item *item, const char *sep, int *size, int *error)
Convert value to an array of strings.
Definition: ini_get_array.c:179