diff options
Diffstat (limited to 'src/base/fs/read.c')
-rw-r--r-- | src/base/fs/read.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/base/fs/read.c b/src/base/fs/read.c new file mode 100644 index 0000000..7e60823 --- /dev/null +++ b/src/base/fs/read.c @@ -0,0 +1,25 @@ +#include <u.h> +#include <base.h> +#include <sys.h> + +int +fs·read(fs·Directory *dir, fs·DirEntry **ent) +{ + int err; + uintptr n; + + fs·DirEntry *de; + if(dir->pos >= dir->end){ + if((err=sys·direntry(dir->fd, arrlen(dir->buf), dir->buf, &n))) + return err; + dir->pos = 0; + dir->end = n; + } + + de = (fs·DirEntry *)(dir->buf + dir->pos); + dir->pos += de->len; + dir->off = de->off; + + *ent = de; + return 0; +} |