1247738Sbapt#include <yaml.h>
2247738Sbapt
3247738Sbapt#include <stdlib.h>
4247738Sbapt#include <stdio.h>
5247738Sbapt
6247738Sbapt#ifdef NDEBUG
7247738Sbapt#undef NDEBUG
8247738Sbapt#endif
9247738Sbapt#include <assert.h>
10247738Sbapt
11247738Sbaptint
12247738Sbaptmain(int argc, char *argv[])
13247738Sbapt{
14247738Sbapt    int number;
15247738Sbapt
16247738Sbapt    if (argc < 2) {
17247738Sbapt        printf("Usage: %s file1.yaml ...\n", argv[0]);
18247738Sbapt        return 0;
19247738Sbapt    }
20247738Sbapt
21247738Sbapt    for (number = 1; number < argc; number ++)
22247738Sbapt    {
23247738Sbapt        FILE *file;
24247738Sbapt        yaml_parser_t parser;
25247738Sbapt        yaml_token_t token;
26247738Sbapt        int done = 0;
27247738Sbapt        int count = 0;
28247738Sbapt        int error = 0;
29247738Sbapt
30247738Sbapt        printf("[%d] Scanning '%s': ", number, argv[number]);
31247738Sbapt        fflush(stdout);
32247738Sbapt
33247738Sbapt        file = fopen(argv[number], "rb");
34247738Sbapt        assert(file);
35247738Sbapt
36247738Sbapt        assert(yaml_parser_initialize(&parser));
37247738Sbapt
38247738Sbapt        yaml_parser_set_input_file(&parser, file);
39247738Sbapt
40247738Sbapt        while (!done)
41247738Sbapt        {
42247738Sbapt            if (!yaml_parser_scan(&parser, &token)) {
43247738Sbapt                error = 1;
44247738Sbapt                break;
45247738Sbapt            }
46247738Sbapt
47247738Sbapt            done = (token.type == YAML_STREAM_END_TOKEN);
48247738Sbapt
49247738Sbapt            yaml_token_delete(&token);
50247738Sbapt
51247738Sbapt            count ++;
52247738Sbapt        }
53247738Sbapt
54247738Sbapt        yaml_parser_delete(&parser);
55247738Sbapt
56247738Sbapt        assert(!fclose(file));
57247738Sbapt
58247738Sbapt        printf("%s (%d tokens)\n", (error ? "FAILURE" : "SUCCESS"), count);
59247738Sbapt    }
60247738Sbapt
61247738Sbapt    return 0;
62247738Sbapt}
63247738Sbapt
64