static sixtp* gnc_pricedb_parser_new(void) { sixtp *top_level; sixtp *price_parser; top_level = sixtp_set_any(sixtp_new(), TRUE, SIXTP_START_HANDLER_ID, pricedb_start_handler, SIXTP_AFTER_CHILD_HANDLER_ID, pricedb_after_child_handler, SIXTP_CHARACTERS_HANDLER_ID, allow_and_ignore_only_whitespace, SIXTP_RESULT_FAIL_ID, pricedb_cleanup_result_handler, SIXTP_CLEANUP_RESULT_ID, pricedb_cleanup_result_handler, SIXTP_NO_MORE_HANDLERS); if (!top_level) return NULL; price_parser = gnc_price_parser_new(); if (!price_parser) { sixtp_destroy(top_level); return NULL; } sixtp_add_sub_parser(top_level, "price", price_parser); return top_level; }
static void parse_file(char *filename, sixtp* parser) { printf("STARTING: %s\n", filename); sixtp_parse_file(parser, filename, NULL, (gpointer)stdout, NULL); printf("\nENDING: %s\n", filename); sixtp_destroy(parser); }
void test_files_in_dir(int argc, char **argv, gxpf_callback cb, sixtp *parser, const char *parser_tag, QofBook *book) { int count; sixtp *main_parser; sixtp *top_parser; top_parser = sixtp_new(); main_parser = sixtp_new(); if (!sixtp_add_some_sub_parsers(top_parser, TRUE, "gnc-v2", main_parser, NULL, NULL)) return; if (!sixtp_add_some_sub_parsers(main_parser, TRUE, parser_tag, parser, NULL, NULL)) return; for (count = 1; count < argc; count++) { struct stat file_info; const char *to_open = argv[count]; if (g_stat(to_open, &file_info) != 0) { printf("cannot stat %s.\n", to_open); failure("unable to stat file"); } else { if (!S_ISDIR(file_info.st_mode)) { #ifdef __DEBUG printf( "testing load of file \"%s\":\n", argv[count] ); #endif test_load_file(to_open, cb, top_parser, book); } } } sixtp_destroy(top_parser); }