X-Git-Url: http://git.ozlabs.org/?p=petitboot;a=blobdiff_plain;f=discover%2Fparser.h;h=e7d52fe5d2ae671e96e78c6ec6270396e4bb82a3;hp=fc165c5aeda494a9051b368a86f633d83dd4c0d8;hb=f110c98b582be12c9d4ac4a13a7bf5aff2b7dd57;hpb=939660528bf1568c55b6dcf982cc9020c1dbcdd2 diff --git a/discover/parser.h b/discover/parser.h index fc165c5..e7d52fe 100644 --- a/discover/parser.h +++ b/discover/parser.h @@ -5,6 +5,7 @@ #include #include #include +#include #include "device-handler.h" @@ -44,6 +45,12 @@ enum generic_icon_type { ICON_TYPE_UNKNOWN }; +struct parser_found_file { + const char *filename; + unsigned ino; + struct list_item list; +}; + #define streq(a,b) (!strcasecmp((a),(b))) void parser_init(void); @@ -76,5 +83,20 @@ int parser_request_url(struct discover_context *ctx, struct pb_url *url, int parser_stat_path(struct discover_context *ctx, struct discover_device *dev, const char *path, struct stat *statbuf); +/* Function used to list the files on a directory. The dirname should + * be relative to the discover context device mount path. It returns + * the number of files returned in files or a negative value on error. + */ +int parser_scandir(struct discover_context *ctx, const char *dirname, + struct dirent ***files, int (*filter)(const struct dirent *), + int (*comp)(const struct dirent **, const struct dirent **)); + +/* parser_is_unique - Test a file against a list of known files. + * If the file @filename exists and the file is not in @found_list add the + * file to @found_list and return true. Use when searching case-insensitive + * filesystems. + */ +bool parser_is_unique(struct discover_context *ctx, struct discover_device *dev, const char *filename, + struct list *found_list); #endif /* _PARSER_H */