Browse Source

[pk] fixed open syscall parameter being discarded

cs250
Andrew Waterman 16 years ago
parent
commit
37ad02e28a
  1. 4
      file.c
  2. 2
      file.h
  3. 4
      syscall.c

4
file.c

@ -84,13 +84,13 @@ file_t* file_get(int fd)
return fd < 0 || fd >= MAX_FDS ? NULL : fds[fd];
}
sysret_t file_open(const char* fn, size_t len, int mode)
sysret_t file_open(const char* fn, size_t len, int flags, int mode)
{
file_t* f = file_get_free();
if(!f)
return (sysret_t){-1,ENOMEM};
sysret_t ret = frontend_syscall(SYS_open,(long)fn,len,mode,0);
sysret_t ret = frontend_syscall(SYS_open,(long)fn,len,flags,mode);
if(ret.result != -1)
{
f->kfd = ret.result;

2
file.h

@ -14,7 +14,7 @@ typedef struct file
extern file_t *stdin, *stdout, *stderr;
file_t* file_get(int fd);
sysret_t file_open(const char* fn, size_t len, int mode);
sysret_t file_open(const char* fn, size_t len, int flags, int mode);
int file_dup(file_t*);
sysret_t file_write(file_t* f, const void* buf, size_t n);

4
syscall.c

@ -33,9 +33,9 @@ sysret_t sys_write(int fd, const char* buf, size_t n)
return file_write(f,buf,n);
}
sysret_t sys_open(const char* name, size_t len, int mode)
sysret_t sys_open(const char* name, size_t len, int flags, int mode)
{
sysret_t ret = file_open(name, len, mode);
sysret_t ret = file_open(name, len, flags, mode);
if(ret.result == -1)
return ret;

Loading…
Cancel
Save