26 #include <sys/types.h>
31 #include "collection.h"
128 #define INI_DEFAULT_SECTION "default"
153 #define COL_CLASS_INI_BASE 20000
165 #define COL_CLASS_INI_CONFIG COL_CLASS_INI_BASE + 0
170 #define COL_CLASS_INI_SECTION COL_CLASS_INI_BASE + 1
176 #define COL_CLASS_INI_PERROR COL_CLASS_INI_BASE + 2
185 #define COL_CLASS_INI_PESET COL_CLASS_INI_BASE + 3
192 #define COL_CLASS_INI_META COL_CLASS_INI_BASE + 4
206 #define INI_STOP_ON_ANY 0
208 #define INI_STOP_ON_NONE 1
210 #define INI_STOP_ON_ERROR 2
222 #define ERR_LONGDATA 1
224 #define ERR_NOCLOSESEC 2
226 #define ERR_NOSECTION 3
228 #define ERR_SECTIONLONG 4
230 #define ERR_NOEQUAL 5
234 #define ERR_LONGKEY 7
237 #define ERR_MAXPARSE ERR_LONGKEY
250 #define ERR_MAXGRAMMAR 0
262 #define ERR_MAXVALID 0
282 #define INI_ACCESS_CHECK_MODE 0x00000001
290 #define INI_ACCESS_CHECK_UID 0x00000002
298 #define INI_ACCESS_CHECK_GID 0x00000004
377 #define INI_META_ACTION_NOPARSE 0x10000000
389 #define INI_META_SEC_ACCESS "ACCESS"
395 #define INI_META_SEC_ACCESS_FLAG 0x00000001
409 #define INI_META_KEY_UID "uid"
415 #define INI_META_KEY_GID "gid"
421 #define INI_META_KEY_PERM "perm"
427 #define INI_META_KEY_DEV "dev"
433 #define INI_META_KEY_INODE "inode"
439 #define INI_META_KEY_MODIFIED "modified"
445 #define INI_META_KEY_NAME "name"
454 #define INI_META_SEC_ERROR "ERROR"
460 #define INI_META_SEC_ERROR_FLAG 0x00000002
476 #define INI_META_KEY_READ_ERROR "read_error"
532 const char *config_filename,
533 struct collection_item **ini_config,
535 struct collection_item **error_list);
565 const char *config_source,
566 struct collection_item **ini_config,
568 struct collection_item **error_list);
617 const char *application,
618 const char *config_filename,
619 struct collection_item **ini_config,
621 struct collection_item **error_list,
623 struct collection_item **metadata);
671 const char *application,
673 const char *config_source,
674 struct collection_item **ini_config,
676 struct collection_item **error_list,
678 struct collection_item **metadata);
710 const char *config_file,
711 const char *config_dir,
712 struct collection_item **ini_config,
714 struct collection_item **error_set);
766 const char *application,
767 const char *config_file,
768 const char *config_dir,
769 struct collection_item **ini_config,
771 struct collection_item **error_set,
773 struct collection_item **meta_default,
774 struct collection_item **meta_appini);
842 struct collection_item *saved_metadata,
879 struct collection_item *error_list);
893 struct collection_item *error_set);
991 struct collection_item *ini_config,
992 struct collection_item **item);
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