X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/2236410f4582ab45ae8c384dd6eeeef5d10aab15..bcc25888b3299758ad36721530cca3b899b7166c:/lunaix-os/kernel/fs/defaults.c?ds=sidebyside diff --git a/lunaix-os/kernel/fs/defaults.c b/lunaix-os/kernel/fs/defaults.c index 8512d8e..55b9dcd 100644 --- a/lunaix-os/kernel/fs/defaults.c +++ b/lunaix-os/kernel/fs/defaults.c @@ -1,4 +1,4 @@ -#include +#include int default_file_close(struct v_file* file) @@ -7,8 +7,9 @@ default_file_close(struct v_file* file) } int -default_file_seek(struct v_inode* inode, size_t offset) +default_file_seek(struct v_file* file, size_t offset) { + file->f_pos = offset; return 0; } @@ -45,19 +46,24 @@ default_file_write_page(struct v_inode* inode, void* buffer, size_t fpos) int default_file_readdir(struct v_file* file, struct dir_context* dctx) { - int i = 0; + unsigned int i = 0; struct v_dnode *pos, *n; + + if (fsapi_handle_pseudo_dirent(file, dctx)) { + return 1; + } + llist_for_each(pos, n, &file->dnode->children, siblings) { - if (i < dctx->index) { + if (i < file->f_pos) { i++; continue; } dctx->read_complete_callback(dctx, pos->name.value, pos->name.len, 0); - break; + return 1; } - return i; + return 0; } int