summaryrefslogtreecommitdiffstats
path: root/ini/ini_config_priv.h
blob: 1880c3ff4caa91e7ed3a37e445a20294e76d8037 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
/*
    INI LIBRARY

    Header for the internal structures used by INI interface.

    Copyright (C) Dmitri Pal <dpal@redhat.com> 2010

    INI Library is free software: you can redistribute it and/or modify
    it under the terms of the GNU Lesser General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    INI Library is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU Lesser General Public License for more details.

    You should have received a copy of the GNU Lesser General Public License
    along with INI Library.  If not, see <http://www.gnu.org/licenses/>.
*/

#ifndef INI_CONFIG_PRIV_H
#define INI_CONFIG_PRIV_H

#include "collection.h"

/* Configuration object */
struct ini_cfgobj {
    /* For now just a collection */
    struct collection_item *cfg;
    /* Boundary */
    uint32_t boundary;
    /*...         */
    /* Statistics? Timestamps? When created? Modified? - TBD */
    /*...         */
};


/* Configuration file object */
struct ini_cfgfile {
    /***********************************/
    /* Externally controlled variables */
    /***********************************/
    /* File name for the configuration file */
    char *filename;
    /* File stream */
    FILE *file;
    /* File descriptor that is passed in */
    int fd;
    /* Error level */
    int error_level;
    /* Collision flags - define how to merge things */
    uint32_t collision_flags;
    /* Collision flags - define how to merge things */
    uint32_t metadata_flags;
    /**********************/
    /* Internal variables */
    /**********************/
    /* Collection of errors detected during parsing */
    struct collection_item *error_list;
    /* Metadata about the file */
    struct collection_item *metadata;
    /* Count of error lines */
    unsigned count;
};

/* Parsing error */
struct ini_parse_error {
    unsigned line;
    int error;
};

/* Internal cleanup callback */
void ini_cleanup_cb(const char *property,
                    int property_len,
                    int type,
                    void *data,
                    int length,
                    void *custom_data);

/* Get parsing error */
const char *ini_get_error_str(int parsing_error, int family);

#endif