mirror of
https://github.com/u-boot/u-boot.git
synced 2025-05-09 03:21:51 +00:00
sandbox: Add a way of obtaining directory listings
This implementation uses opendir()/readdir() to access the directory information and then puts it in a linked list for the caller's use. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Tom Rini <trini@ti.com>
This commit is contained in:
parent
e6d5241534
commit
62584db191
2 changed files with 149 additions and 0 deletions
48
include/os.h
48
include/os.h
|
@ -146,4 +146,52 @@ u64 os_get_nsec(void);
|
|||
*/
|
||||
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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue