|
@@ -146,4 +146,52 @@ u64 os_get_nsec(void);
|
|
*/
|
|
*/
|
|
int os_parse_args(struct sandbox_state *state, int argc, char *argv[]);
|
|
int os_parse_args(struct sandbox_state *state, int argc, char *argv[]);
|
|
|
|
|
|
|
|
+/*
|
|
|
|
+ * Types of directory entry that we support. See also os_dirent_typename in
|
|
|
|
+ * the C file.
|
|
|
|
+ */
|
|
|
|
+enum os_dirent_t {
|
|
|
|
+ OS_FILET_REG, /* Regular file */
|
|
|
|
+ OS_FILET_LNK, /* Symbolic link */
|
|
|
|
+ OS_FILET_DIR, /* Directory */
|
|
|
|
+ OS_FILET_UNKNOWN, /* Something else */
|
|
|
|
+
|
|
|
|
+ OS_FILET_COUNT,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+/** A directory entry node, containing information about a single dirent */
|
|
|
|
+struct os_dirent_node {
|
|
|
|
+ struct os_dirent_node *next; /* Pointer to next node, or NULL */
|
|
|
|
+ ulong size; /* Size of file in bytes */
|
|
|
|
+ enum os_dirent_t type; /* Type of entry */
|
|
|
|
+ char name[0]; /* Name of entry */
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * Get a directionry listing
|
|
|
|
+ *
|
|
|
|
+ * This allocates and returns a linked list containing the directory listing.
|
|
|
|
+ *
|
|
|
|
+ * @param dirname Directory to examine
|
|
|
|
+ * @param headp Returns pointer to head of linked list, or NULL if none
|
|
|
|
+ * @return 0 if ok, -ve on error
|
|
|
|
+ */
|
|
|
|
+int os_dirent_ls(const char *dirname, struct os_dirent_node **headp);
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * Get the name of a directory entry type
|
|
|
|
+ *
|
|
|
|
+ * @param type Type to cehck
|
|
|
|
+ * @return string containing the name of that type, or "???" if none/invalid
|
|
|
|
+ */
|
|
|
|
+const char *os_dirent_get_typename(enum os_dirent_t type);
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * Get the size of a file
|
|
|
|
+ *
|
|
|
|
+ * @param fname Filename to check
|
|
|
|
+ * @return size of file, or -1 if an error ocurred
|
|
|
|
+ */
|
|
|
|
+ssize_t os_get_filesize(const char *fname);
|
|
|
|
+
|
|
#endif
|
|
#endif
|