]> git.ozlabs.org Git - petitboot/blobdiff - discover/parser.h
Various fixups and checks to make scan-build happy
[petitboot] / discover / parser.h
index fc165c5aeda494a9051b368a86f633d83dd4c0d8..e7d52fe5d2ae671e96e78c6ec6270396e4bb82a3 100644 (file)
@@ -5,6 +5,7 @@
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <unistd.h>
+#include <dirent.h>
 
 #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 */