diff options
Diffstat (limited to 'include/os.h')
| -rw-r--r-- | include/os.h | 58 | 
1 files changed, 58 insertions, 0 deletions
| diff --git a/include/os.h b/include/os.h index 699682a40..038aba9e4 100644 --- a/include/os.h +++ b/include/os.h @@ -40,6 +40,16 @@ struct sandbox_state;  ssize_t os_read(int fd, void *buf, size_t count);  /** + * Access to the OS read() system call with non-blocking access + * + * \param fd	File descriptor as returned by os_open() + * \param buf	Buffer to place data + * \param count	Number of bytes to read + * \return number of bytes read, or -1 on error + */ +ssize_t os_read_no_block(int fd, void *buf, size_t count); + +/**   * Access to the OS write() system call   *   * \param fd	File descriptor as returned by os_open() @@ -136,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 |