Previous 15994 Revisions Next

r987 Sunday 16th September, 2007 at 20:43:54 UTC by Nathan Woods
[Messtest] Changed to read the XML using core_files; and fixed a memory leak
[src/mess/tools/messtest]core.c

src/mess/tools/messtest/core.c
r986r987
487487int messtest(const struct messtest_options *opts, int *test_count, int *failure_count)
488488{
489489   char saved_directory[1024];
490   FILE *file;
490   file_error filerr;
491   core_file *file;
491492   int result = -1;
492493   char *script_directory;
493494   xml_parse_options parse_options;
494495   xml_parse_error parse_error;
495   xml_data_node *root_node;
496   xml_data_node *root_node = NULL;
496497   xml_data_node *tests_node;
497   mess_pile pile;
498   const char *xml;
499   size_t sz;
500   char buf[256];
501498
502499   *test_count = 0;
503500   *failure_count = 0;
504501
505   pile_init(&pile);
506
507502   /* 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)
510505   {
511506      fprintf(stderr, "%s: Cannot open file\n", opts->script_filename);
512507      goto done;
513508   }
514509
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
524510   /* save the current working directory, and change to the test directory */
525511   saved_directory[0] = '\0';
526512   if (!opts->preserve_directory)
r986r987
541527   parse_options.error = &parse_error;
542528
543529   /* do the parse */
544   root_node = xml_string_read(xml, &parse_options);
530   root_node = xml_file_read(file, &parse_options);
545531   if (!root_node)
546532   {
547533      fprintf(stderr, "%s:%d:%d: %s\n",
r986r987
564550   /* restore the directory */
565551   if (saved_directory[0])
566552      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);
570557   return result;
571558}
572559

Previous 15994 Revisions Next


© 1998-2018 The MESS Team