make jdk 1.1 compliant part 1
[nestedvm.git] / src / org / ibex / nestedvm / Runtime.java
index 4d965e7..64ebd33 100644 (file)
@@ -359,7 +359,8 @@ public abstract class Runtime implements UsermodeConstants,Registers,Cloneable {
                 if(page == null) throw new WriteFaultException(a<<2);
                 int index = a&pageWordMask;
                 int n = min(c,pageWords-index);
-                Arrays.fill(page,index,index+n,fourBytes);
+                /* Arrays.fill(page,index,index+n,fourBytes);*/
+                for(int i=index;i<index+n;i++) page[i] = fourBytes;
                 a += n; c -= n;
             }
             addr = a<<2; count&=3;
@@ -721,8 +722,7 @@ public abstract class Runtime implements UsermodeConstants,Registers,Cloneable {
         
         if((flags & (O_EXCL|O_CREAT)) == (O_EXCL|O_CREAT)) {
             try {
-                // NOTE: createNewFile is a Java2 function
-                if(!f.createNewFile()) throw new ErrnoException(EEXIST);
+                if(Platform.atomicCreateFile(f)) throw new ErrnoException(EEXIST);
             } catch(IOException e) {
                 throw new ErrnoException(EIO);
             }
@@ -754,8 +754,13 @@ public abstract class Runtime implements UsermodeConstants,Registers,Cloneable {
     
     /** The open syscall */
     private int sys_open(int addr, int flags, int mode) throws ErrnoException, FaultException {
+        String name = cstring(addr);
+        
+        // HACK: TeX, or GPC, or something really sucks
+        if(name.length() == 1024 && getClass().getName().equals("tests.TeX")) name = name.trim();
+        
         flags &= ~O_NOCTTY; // this is meaningless under nestedvm
-        FD fd = _open(cstring(addr),flags,mode);
+        FD fd = _open(name,flags,mode);
         if(fd == null) return -ENOENT;
         int fdn = addFD(fd);
         if(fdn == -1) { fd.close(); return -ENFILE; }