diff options
| author | Miguel <m.i@gmx.at> | 2018-09-15 12:25:13 +0200 |
|---|---|---|
| committer | Miguel <m.i@gmx.at> | 2018-09-15 12:25:13 +0200 |
| commit | 0b010d22dbf845ad030e2e7320f9c5935b2604a4 (patch) | |
| tree | 6683b09a89b9e19630ef197343a8ace53a765c82 /kernel | |
| parent | fe7d0332267ef1e62153b685d2b5574ce624a4bc (diff) | |
brainfuck interpreter works!
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/syscalls.c | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/kernel/syscalls.c b/kernel/syscalls.c index 57ebc54..5205bf1 100644 --- a/kernel/syscalls.c +++ b/kernel/syscalls.c @@ -109,7 +109,25 @@ int syscall_gettimeofday(struct timeval *tv, struct timezone *tz) int syscall_lseek(int file,int ptr,int dir) { - kpanic("unhandled syscall: lseek"); + +#ifndef SEEK_SET +#define SEEK_SET 0 /* set file offset to offset */ +#endif +#ifndef SEEK_CUR +#define SEEK_CUR 1 /* set file offset to current plus offset */ +#endif +#ifndef SEEK_END +#define SEEK_END 2 /* set file offset to EOF plus offset */ +#endif + + if(dir==SEEK_CUR) + { + uint32_t *dat=fds[file].data; + dat[1]+=ptr; + return dat[1]; + } + + kpanic("not fully handled lseek! dir=%d",dir); return 0; } @@ -312,8 +330,8 @@ int syscall_open(char *name, int flags, int mode) } else { - fds[next_fd]=fd_from_path(name); + if(*(uint32_t *)fds[next_fd].data==0)return -1; } next_fd++; |
