9os

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

commit 0765cb8f789b030e8a14f03f3d28b65db494438b
parent 453d223557956eceffe11d44d214fcd7b90051a9
Author: Dimitris Papastamos <dimitris.papastamos@arm.com>
Date:   Mon, 18 Feb 2019 15:17:55 +0000

Add p9 dir handling code

This was missed in an earlier patch.

Change-Id: I74f7a183f4cd1a6b4498e06ac649eab589cbe302
Signed-off-by: Dimitris Papastamos <dimitris.papastamos@arm.com>

Diffstat:
Asrc/lib9p/p9closedir.c | 8++++++++
Asrc/lib9p/p9opendir.c | 20++++++++++++++++++++
Asrc/lib9p/p9readdir.c | 21+++++++++++++++++++++
3 files changed, 49 insertions(+), 0 deletions(-)

diff --git a/src/lib9p/p9closedir.c b/src/lib9p/p9closedir.c @@ -0,0 +1,8 @@ +#include <rcode/9p.h> +#include <rcode/rcode.h> + +int +p9closedir(DIR *dir) +{ + return close(dir->fd); +} diff --git a/src/lib9p/p9opendir.c b/src/lib9p/p9opendir.c @@ -0,0 +1,20 @@ +#include <errno.h> + +#include <rcode/9p.h> +#include <rcode/rcode.h> + +DIR * +p9opendir(DIR *dir, const char *name) +{ + int fd; + + if ((fd = open(name, O_READ)) < 0) { + errno = ENOENT; + return NULL; + } + dir->fd = fd; + + /* TODO: check that it is actually a directory */ + + return dir; +} diff --git a/src/lib9p/p9readdir.c b/src/lib9p/p9readdir.c @@ -0,0 +1,21 @@ +#include <string.h> + +#include <rcode/9p.h> +#include <rcode/rcode.h> + +struct dirent * +p9readdir(DIR *dir) +{ + int n; + Dir dentry; + + if ((n = read(dir->fd, dir->buf, sizeof(dir->buf))) < 0) + return NULL; + + if (p9todir(&dentry, dir->buf, n) < 0) + return NULL; + + strcpy(dir->ent.d_name, dentry.name); + + return &dir->ent; +}