X-Git-Url: http://git.ozlabs.org/?p=petitboot;a=blobdiff_plain;f=test%2Fparser%2Futils.c;h=33efda80536f8354ebc4e10e6b64fe1299755831;hp=d1ced73a6365fff837902fd027811a1d0db500e4;hb=9fbd73a208c9465b4bf9e2c80c7290b72e62ead1;hpb=b86a7a0533c4d723ea940ac2071f845f165f832c diff --git a/test/parser/utils.c b/test/parser/utils.c index d1ced73..33efda8 100644 --- a/test/parser/utils.c +++ b/test/parser/utils.c @@ -186,6 +186,36 @@ int parser_request_file(struct discover_context *ctx, return -1; } +int parser_replace_file(struct discover_context *ctx, + struct discover_device *dev, const char *filename, + char *buf, int len) +{ + struct parser_test *test = ctx->test_data; + struct test_file *f, *file; + + list_for_each_entry(&test->files, f, list) { + if (f->dev != dev) + continue; + if (strcmp(f->name, filename)) + continue; + + file = f; + break; + } + + if (!file) { + file = talloc_zero(test, struct test_file); + file->dev = dev; + file->name = filename; + list_add(&test->files, &file->list); + } else { + talloc_free(file->data); + } + + file->data = talloc_memdup(test, buf, len); + file->size = len; + return 0; +} int test_run_parser(struct parser_test *test, const char *parser_name) { struct p_item* i;