1#include "check_confuse.h"
2#include <string.h>
3
4int main(void)
5{
6    cfg_opt_t section_opts[] = {
7        CFG_STR("prop", 0, CFGF_NONE),
8        CFG_END()
9    };
10
11    cfg_opt_t opts[] = {
12        CFG_SEC("section", section_opts, CFGF_TITLE | CFGF_MULTI),
13        CFG_END()
14    };
15
16    cfg_opt_t opts_no_dupes[] = {
17        CFG_SEC("section", section_opts,
18	    CFGF_TITLE | CFGF_MULTI | CFGF_NO_TITLE_DUPES),
19        CFG_END()
20    };
21
22    const char *config_data =
23        "section title_one { prop = 'value_one' }\n"
24        "section title_two { prop = 'value_two' }\n"
25        "section title_one { prop = 'value_one' }\n";
26
27    int rc;
28    cfg_t *cfg = cfg_init(opts, CFGF_NONE);
29    fail_unless(cfg);
30
31    rc = cfg_parse_buf(cfg, config_data);
32
33    fail_unless(rc == CFG_SUCCESS);
34
35    fail_unless(cfg_size(cfg, "section") == 2);
36
37    fail_unless(
38	strcmp(cfg_title(cfg_getnsec(cfg, "section", 0)), "title_one") == 0);
39    fail_unless(
40	strcmp(cfg_title(cfg_getnsec(cfg, "section", 1)), "title_two") == 0);
41
42    cfg_free(cfg);
43
44    cfg = cfg_init(opts_no_dupes, CFGF_NONE);
45    fail_unless(cfg);
46
47    rc = cfg_parse_buf(cfg, config_data);
48    fail_unless(rc == CFG_PARSE_ERROR);
49
50    cfg_free(cfg);
51
52    return 0;
53}
54
55