]> andersk Git - libyaml.git/blobdiff - tests/run-scanner.c
Fix some leaks, segfaults and warnings.
[libyaml.git] / tests / run-scanner.c
index e3a67f29cecbab0c2cc89308658f816fec39cf56..2c8d33e5b68aade683b58aeeccad1f7c031c0586 100644 (file)
@@ -7,39 +7,52 @@
 int
 main(int argc, char *argv[])
 {
-    FILE *file;
-    yaml_parser_t parser;
-    yaml_token_t token;
-    int done = 0;
-    int count = 0;
-
-    if (argc != 2) {
-        printf("Usage: %s file.yaml\n", argv[0]);
+    int number;
+
+    if (argc < 2) {
+        printf("Usage: %s file1.yaml ...\n", argv[0]);
         return 0;
     }
-    file = fopen(argv[1], "rb");
-    assert(file);
 
-    assert(yaml_parser_initialize(&parser));
+    for (number = 1; number < argc; number ++)
+    {
+        FILE *file;
+        yaml_parser_t parser;
+        yaml_token_t token;
+        int done = 0;
+        int count = 0;
+        int error = 0;
 
-    yaml_parser_set_input_file(&parser, file);
+        printf("[%d] Scanning '%s': ", number, argv[number]);
+        fflush(stdout);
 
-    while (!done)
-    {
-        assert(yaml_parser_scan(&parser, &token));
+        file = fopen(argv[number], "rb");
+        assert(file);
 
-        done = (token.type == YAML_STREAM_END_TOKEN);
+        assert(yaml_parser_initialize(&parser));
 
-        yaml_token_delete(&token);
+        yaml_parser_set_input_file(&parser, file);
 
-        count ++;
-    }
+        while (!done)
+        {
+            if (!yaml_parser_scan(&parser, &token)) {
+                error = 1;
+                break;
+            }
 
-    yaml_parser_delete(&parser);
+            done = (token.type == YAML_STREAM_END_TOKEN);
 
-    fclose(file);
+            yaml_token_delete(&token);
 
-    printf("Parsing the file '%s': %d tokens\n", argv[1], count);
+            count ++;
+        }
+
+        yaml_parser_delete(&parser);
+
+        assert(!fclose(file));
+
+        printf("%s (%d tokens)\n", (error ? "FAILURE" : "SUCCESS"), count);
+    }
 
     return 0;
 }
This page took 0.140498 seconds and 4 git commands to generate.