git://scm.lunaixsky.com
/
lunaix-os.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fix dangling pointer issues in ext2dr
[lunaix-os.git]
/
lunaix-os
/
kernel
/
fs
/
defaults.c
diff --git
a/lunaix-os/kernel/fs/defaults.c
b/lunaix-os/kernel/fs/defaults.c
index 145d9ca4c630ea5f9ac639c2f0f71c22bc465e75..55b9dcd233fcc84b0142195eb137c11c9260385a 100644
(file)
--- a/
lunaix-os/kernel/fs/defaults.c
+++ b/
lunaix-os/kernel/fs/defaults.c
@@
-1,4
+1,4
@@
-#include <lunaix/fs.h>
+#include <lunaix/fs
/api
.h>
int
default_file_close(struct v_file* file)
int
default_file_close(struct v_file* file)
@@
-7,8
+7,9
@@
default_file_close(struct v_file* file)
}
int
}
int
-default_file_seek(struct v_
inode* inod
e, size_t offset)
+default_file_seek(struct v_
file* fil
e, size_t offset)
{
{
+ file->f_pos = offset;
return 0;
}
return 0;
}
@@
-30,20
+31,39
@@
default_file_write(struct v_inode* inode, void* buffer, size_t len, size_t fpos)
return ENOTSUP;
}
return ENOTSUP;
}
+int
+default_file_read_page(struct v_inode* inode, void* buffer, size_t fpos)
+{
+ return ENOTSUP;
+}
+
+int
+default_file_write_page(struct v_inode* inode, void* buffer, size_t fpos)
+{
+ return ENOTSUP;
+}
+
int
default_file_readdir(struct v_file* file, struct dir_context* dctx)
{
int
default_file_readdir(struct v_file* file, struct dir_context* dctx)
{
- int i = 0;
+
unsigned
int i = 0;
struct v_dnode *pos, *n;
struct v_dnode *pos, *n;
+
+ if (fsapi_handle_pseudo_dirent(file, dctx)) {
+ return 1;
+ }
+
llist_for_each(pos, n, &file->dnode->children, siblings)
{
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);
i++;
continue;
}
dctx->read_complete_callback(dctx, pos->name.value, pos->name.len, 0);
-
break
;
+
return 1
;
}
}
+
+ return 0;
}
int
}
int