diff options
Diffstat (limited to 'kernel/syscalls/lseek.c')
-rw-r--r-- | kernel/syscalls/lseek.c | 34 |
1 files changed, 0 insertions, 34 deletions
diff --git a/kernel/syscalls/lseek.c b/kernel/syscalls/lseek.c deleted file mode 100644 index e85d4c1..0000000 --- a/kernel/syscalls/lseek.c +++ /dev/null @@ -1,34 +0,0 @@ -#include <assert.h> -#include <errno.h> -#include <fs/vfs.h> - -// FIXME: These should be in a shared header file with libc -#define SEEK_SET 0 -#define SEEK_CUR 1 -#define SEEK_END 2 - -int syscall_lseek(int fd, int offset, int whence) { - vfs_fd_t *fd_ptr = get_vfs_fd(fd, NULL); - if (!fd_ptr) { - return -EBADF; - } - - off_t ret_offset = fd_ptr->offset; - switch (whence) { - case SEEK_SET: - ret_offset = offset; - break; - case SEEK_CUR: - ret_offset += offset; - break; - case SEEK_END: - assert(fd_ptr->inode); - ret_offset = fd_ptr->inode->file_size + offset; - break; - default: - return -EINVAL; - break; - } - fd_ptr->offset = ret_offset; - return ret_offset; -} |