src/mess/tools/messtest/core.c
| r986 | r987 | |
| 487 | 487 | int messtest(const struct messtest_options *opts, int *test_count, int *failure_count) |
| 488 | 488 | { |
| 489 | 489 | char saved_directory[1024]; |
| 490 | | FILE *file; |
| 490 | file_error filerr; |
| 491 | core_file *file; |
| 491 | 492 | int result = -1; |
| 492 | 493 | char *script_directory; |
| 493 | 494 | xml_parse_options parse_options; |
| 494 | 495 | xml_parse_error parse_error; |
| 495 | | xml_data_node *root_node; |
| 496 | xml_data_node *root_node = NULL; |
| 496 | 497 | xml_data_node *tests_node; |
| 497 | | mess_pile pile; |
| 498 | | const char *xml; |
| 499 | | size_t sz; |
| 500 | | char buf[256]; |
| 501 | 498 | |
| 502 | 499 | *test_count = 0; |
| 503 | 500 | *failure_count = 0; |
| 504 | 501 | |
| 505 | | pile_init(&pile); |
| 506 | | |
| 507 | 502 | /* open the script file */ |
| 508 | | file = fopen(opts->script_filename, "r"); |
| 509 | | if (!file) |
| 503 | filerr = core_fopen(opts->script_filename, OPEN_FLAG_READ, &file); |
| 504 | if (filerr != FILERR_NONE) |
| 510 | 505 | { |
| 511 | 506 | fprintf(stderr, "%s: Cannot open file\n", opts->script_filename); |
| 512 | 507 | goto done; |
| 513 | 508 | } |
| 514 | 509 | |
| 515 | | /* read the file */ |
| 516 | | while(!feof(file)) |
| 517 | | { |
| 518 | | sz = fread(buf, 1, sizeof(buf), file); |
| 519 | | pile_write(&pile, buf, sz); |
| 520 | | } |
| 521 | | pile_writebyte(&pile, '\0', 1); |
| 522 | | xml = (const char *) pile_getptr(&pile); |
| 523 | | |
| 524 | 510 | /* save the current working directory, and change to the test directory */ |
| 525 | 511 | saved_directory[0] = '\0'; |
| 526 | 512 | if (!opts->preserve_directory) |
| r986 | r987 | |
| 541 | 527 | parse_options.error = &parse_error; |
| 542 | 528 | |
| 543 | 529 | /* do the parse */ |
| 544 | | root_node = xml_string_read(xml, &parse_options); |
| 530 | root_node = xml_file_read(file, &parse_options); |
| 545 | 531 | if (!root_node) |
| 546 | 532 | { |
| 547 | 533 | fprintf(stderr, "%s:%d:%d: %s\n", |
| r986 | r987 | |
| 564 | 550 | /* restore the directory */ |
| 565 | 551 | if (saved_directory[0]) |
| 566 | 552 | osd_setcurdir(saved_directory); |
| 567 | | pile_delete(&pile); |
| 568 | | if( file != NULL ) |
| 569 | | fclose(file); |
| 553 | if (file != NULL) |
| 554 | core_fclose(file); |
| 555 | if (root_node != NULL) |
| 556 | xml_file_free(root_node); |
| 570 | 557 | return result; |
| 571 | 558 | } |
| 572 | 559 | |