196845Smarkm#include <yaml.h>
296845Smarkm
396845Smarkm#include <stdlib.h>
496845Smarkm#include <stdio.h>
596845Smarkm
696845Smarkm#ifdef NDEBUG
796845Smarkm#undef NDEBUG
896845Smarkm#endif
996845Smarkm#include <assert.h>
1096845Smarkm
1196845Smarkmint
1296845Smarkmmain(int argc, char *argv[])
1396845Smarkm{
1496845Smarkm    int number;
1596845Smarkm
1696845Smarkm    if (argc < 2) {
1796845Smarkm        printf("Usage: %s file1.yaml ...\n", argv[0]);
1896845Smarkm        return 0;
1996845Smarkm    }
2096845Smarkm
2196845Smarkm    for (number = 1; number < argc; number ++)
2296845Smarkm    {
2396845Smarkm        FILE *file;
2496845Smarkm        yaml_parser_t parser;
2596845Smarkm        yaml_document_t document;
2696845Smarkm        int done = 0;
2796845Smarkm        int count = 0;
2896845Smarkm        int error = 0;
2996845Smarkm
3096845Smarkm        printf("[%d] Loading '%s': ", number, argv[number]);
3196845Smarkm        fflush(stdout);
3296845Smarkm
3396845Smarkm        file = fopen(argv[number], "rb");
3496845Smarkm        assert(file);
3596845Smarkm
3696845Smarkm        assert(yaml_parser_initialize(&parser));
3796845Smarkm
3896845Smarkm        yaml_parser_set_input_file(&parser, file);
3996845Smarkm
4096845Smarkm        while (!done)
4196845Smarkm        {
4296845Smarkm            if (!yaml_parser_load(&parser, &document)) {
4396845Smarkm                error = 1;
4496845Smarkm                break;
4596845Smarkm            }
4696845Smarkm
4796845Smarkm            done = (!yaml_document_get_root_node(&document));
4896845Smarkm
4996845Smarkm            yaml_document_delete(&document);
5096845Smarkm
5196845Smarkm            if (!done) count ++;
5296845Smarkm        }
5396845Smarkm
5496845Smarkm        yaml_parser_delete(&parser);
5596845Smarkm
5696845Smarkm        assert(!fclose(file));
5796845Smarkm
5896845Smarkm        printf("%s (%d documents)\n", (error ? "FAILURE" : "SUCCESS"), count);
5996845Smarkm    }
6096845Smarkm
6196845Smarkm    return 0;
6296845Smarkm}
6396845Smarkm
6496845Smarkm