source: libyaml/trunk/tests/run-scanner.c @ 264

Revision 264, 1.4 KB checked in by xi, 6 years ago (diff)

Another round of API update.

Line 
1#include <yaml.h>
2
3#include <stdlib.h>
4#include <stdio.h>
5
6#ifdef NDEBUG
7#undef NDEBUG
8#endif
9#include <assert.h>
10
11int
12main(int argc, char *argv[])
13{
14    int number;
15
16    if (argc < 2) {
17        printf("Usage: %s file1.yaml ...\n", argv[0]);
18        return 0;
19    }
20
21    for (number = 1; number < argc; number ++)
22    {
23        FILE *file;
24        yaml_parser_t *parser;
25        yaml_token_t token;
26        yaml_error_t error;
27        char error_buffer[256];
28        int done = 0;
29        int count = 0;
30        int failed = 0;
31
32        printf("[%d] Scanning '%s': ", number, argv[number]);
33        fflush(stdout);
34
35        file = fopen(argv[number], "rb");
36        assert(file);
37
38        assert((parser = yaml_parser_new()));
39
40        yaml_parser_set_file_reader(parser, file);
41
42        while (!done)
43        {
44            if (!yaml_parser_parse_token(parser, &token)) {
45                failed = 1;
46                break;
47            }
48
49            done = (token.type == YAML_STREAM_END_TOKEN);
50
51            yaml_token_destroy(&token);
52
53            count ++;
54        }
55
56        yaml_parser_get_error(parser, &error);
57
58        yaml_parser_delete(parser);
59
60        assert(!fclose(file));
61
62        yaml_error_message(&error, error_buffer, 256);
63
64        printf("%s (%d tokens) -> %s\n",
65                (failed ? "FAILURE" : "SUCCESS"),
66                count, error_buffer);
67    }
68
69    return 0;
70}
71
Note: See TracBrowser for help on using the repository browser.