diff options
author | Nicholas Noll <nbnoll@eml.cc> | 2021-12-05 15:17:44 -0800 |
---|---|---|
committer | Nicholas Noll <nbnoll@eml.cc> | 2021-12-05 15:17:44 -0800 |
commit | b48327d357e0818d1a6ae2a064cfa7d1567e1242 (patch) | |
tree | 4677f228a9846937a7ec71c72a1ab63ab69d68ab /src/base/fs/read.c | |
parent | c200dd832789afa298ba45e0b9efdec96c0e92cc (diff) |
feat(huge): huge refactor (in progress).
Commented out libc includes to uncover all explicit dependencies.
A large fraction has now been ported over (no testing).
I did not port over the command line tools, such as the rc shell.
These will be done independently - as of now I just want the library to
stand independent.
Compilation currently fails due to the lack of math functions.
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; +} |