X-Git-Url: http://git.ozlabs.org/?p=petitboot;a=blobdiff_plain;f=test%2Fparser%2Futils.c;h=2891969791c882da1df1fe6742eb5f1bf0cfcece;hp=8a6314b442673751eb2dc329d691713b4dd98435;hb=939660528bf1568c55b6dcf982cc9020c1dbcdd2;hpb=c14b12980885edd035322cd3bc87efff444c39b1
diff --git a/test/parser/utils.c b/test/parser/utils.c
index 8a6314b..2891969 100644
--- a/test/parser/utils.c
+++ b/test/parser/utils.c
@@ -193,6 +193,9 @@ void test_add_dir(struct parser_test *test, struct discover_device *dev,
file->type = TEST_DIR;
file->dev = dev;
file->name = dirname;
+ /* Pick a non-zero size for directories so that "[ -s
]" sees that the file has non-zero size. */
+ file->size = 1;
list_add(&test->files, &file->list);
}
@@ -207,6 +210,11 @@ void test_set_event_param(struct event *event, const char *name,
event_set_param(event, name, value);
}
+void test_set_event_device(struct event *event, const char *dev)
+{
+ event->device = talloc_strdup(event, dev);
+}
+
int parser_request_file(struct discover_context *ctx,
struct discover_device *dev, const char *filename,
char **buf, int *len)
@@ -236,20 +244,34 @@ int parser_request_file(struct discover_context *ctx,
return -1;
}
-int parser_check_dir(struct discover_context *ctx,
- struct discover_device *dev, const char *dirname)
+int parser_stat_path(struct discover_context *ctx,
+ struct discover_device *dev, const char *path,
+ struct stat *statbuf)
{
struct parser_test *test = ctx->test_data;
struct test_file *file;
- printf("%s: %s\n", __func__, dirname);
-
list_for_each_entry(&test->files, file, list) {
if (file->dev != dev)
continue;
- if (strcmp(file->name, dirname))
+ if (strcmp(file->name, path))
continue;
- return file->type == TEST_DIR ? 0 : -1;
+
+ statbuf->st_size = (off_t)file->size;
+ switch (file->type) {
+ case TEST_FILE:
+ statbuf->st_mode = S_IFREG;
+ break;
+ case TEST_DIR:
+ statbuf->st_mode = S_IFDIR;
+ break;
+ default:
+ fprintf(stderr, "%s: bad test file mode %d!", __func__,
+ file->type);
+ exit(EXIT_FAILURE);
+ }
+
+ return 0;
}
return -1;