diff options
| author | Simon Glass <sjg@chromium.org> | 2012-12-26 09:53:34 +0000 | 
|---|---|---|
| committer | Tom Rini <trini@ti.com> | 2013-03-04 14:19:56 -0500 | 
| commit | 62584db191013f13133be0f6702d0c935a7c85a6 (patch) | |
| tree | a8a688c79900497e511269216623fd54105efd10 /include | |
| parent | e6d5241534486effa116bf685f7707041492ec7b (diff) | |
| download | olio-uboot-2014.01-62584db191013f13133be0f6702d0c935a7c85a6.tar.xz olio-uboot-2014.01-62584db191013f13133be0f6702d0c935a7c85a6.zip | |
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>
Diffstat (limited to 'include')
| -rw-r--r-- | include/os.h | 48 | 
1 files changed, 48 insertions, 0 deletions
| diff --git a/include/os.h b/include/os.h index c452d1b56..038aba9e4 100644 --- a/include/os.h +++ b/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 |