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;
}
示例#2
0
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);
}
示例#3
0
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);
}