case SYS_sendto: return sys_sendto(a,b,c,d,e,f);
case SYS_recvfrom: return sys_recvfrom(a,b,c,d,e,f);
case SYS_select: return sys_select(a,b,c,d,e);
-
+ case SYS_access: return sys_access(a,b);
+ case SYS_realpath: return sys_realpath(a,b);
+ case SYS_chown: return sys_chown(a,b,c);
+ case SYS_lchown: return sys_chown(a,b,c);
+ case SYS_fchown: return sys_fchown(a,b,c);
+ case SYS_chmod: return sys_chmod(a,b,c);
+ case SYS_fchmod: return sys_fchmod(a,b,c);
+
default: return super._syscall(syscall,a,b,c,d,e,f);
}
}
private int sys_getppid() {
return parent == null ? 1 : parent.pid;
}
+
+ private int sys_chown(int fileAddr, int uid, int gid) {
+ return 0;
+ }
+ private int sys_lchown(int fileAddr, int uid, int gid) {
+ return 0;
+ }
+ private int sys_fchown(int fd, int uid, int gid) {
+ return 0;
+ }
+ private int sys_chmod(int fileAddr, int uid, int gid) {
+ return 0;
+ }
+ private int sys_fchmod(int fd, int uid, int gid) {
+ return 0;
+ }
+
+
+ private int sys_access(int cstring, int mode) throws ErrnoException, ReadFaultException {
+ // FEATURE: sys_access
+ return gs.stat(this,cstring(cstring)) == null ? -ENOENT : 0;
+ }
+
+ private int sys_realpath(int inAddr, int outAddr) throws FaultException {
+ String s = normalizePath(cstring(inAddr));
+ byte[] b = getNullTerminatedBytes(s);
+ if(b.length > PATH_MAX) return -ERANGE;
+ copyout(b,outAddr,b.length);
+ return 0;
+ }
// FEATURE: Signal handling
// check flag only on backwards jumps to basic blocks without compulsatory checks
private static File getParentFile(File f) {
String p = f.getParent();
- return p == null ? null : new File(f,p);
+ return p == null ? null : new File(p);
}
public class HostDirFD extends DirFD {