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