]> git.sur5r.net Git - cc65/blobdiff - src/sim65/paravirt.c
Allow "mode" argument to open() to be passed from 6502 code.
[cc65] / src / sim65 / paravirt.c
index f210efd57e28c202832f4c367ad2d2c0f60ba5e1..0c634dc0d2a3f580a76273974f778dc84a01f252 100644 (file)
@@ -169,7 +169,7 @@ static void PVOpen (CPURegs* Regs)
 {
     char Path[1024];
     int OFlag = O_INITIAL;
-    unsigned RetVal, I = 0;
+    unsigned RetVal, I = 0, OMode = 0;
 
     unsigned Mode  = PopParam (Regs->YR - 4);
     unsigned Flags = PopParam (2);
@@ -206,10 +206,14 @@ static void PVOpen (CPURegs* Regs)
         OFlag |= O_EXCL;
     }
 
-    /* Avoid gcc warning */
-    (void) Mode;
+    if (Mode & 0400) {
+        OMode |= S_IREAD;
+    }
+    if (Mode & 0200) {
+        OMode |= S_IWRITE;
+    }
 
-    RetVal = open (Path, OFlag, (mode_t) 0666);
+    RetVal = open (Path, OFlag, OMode);
 
     SetAX (Regs, RetVal);
 }