diff --git a/src/sbbs3/nopen.c b/src/sbbs3/nopen.c
index 6bcfecbcd5b435db68ce4643ca7abdbb3af136fa..a570b236750cc77e8e15f810fdba75641ade8e4a 100644
--- a/src/sbbs3/nopen.c
+++ b/src/sbbs3/nopen.c
@@ -69,11 +69,12 @@ FILE* DLLCALL fnopen(int *fd, char *str, int access)
 	char	mode[128];
 	int		file;
 	FILE *	stream;
-
+#if 0
 	if(access&O_CREAT && access&O_WRONLY) {	/* not compatible with fdopen */
 		access&=~O_WRONLY;
 		access|=O_RDWR;
 	}
+#endif
     if((file=nopen(str,access))==-1)
         return(NULL);
 
@@ -81,17 +82,17 @@ FILE* DLLCALL fnopen(int *fd, char *str, int access)
         *fd=file;
 
     if(access&O_APPEND) {
-        if(access&O_RDONLY)
+        if(access&O_RDWR)
             strcpy(mode,"a+");
         else
             strcpy(mode,"a"); 
-	} else if(access&O_CREAT) {
-		if(access&O_TRUNC)
-			strcpy(mode,"w");
-		else
+	} else if(access&O_TRUNC) {
+		if(access&O_RDWR)
 			strcpy(mode,"w+");
+		else
+			strcpy(mode,"w");
 	} else {
-        if(access&O_WRONLY || (access&O_RDWR)==O_RDWR)
+        if(access&(O_RDWR|O_WRONLY))
             strcpy(mode,"r+");
         else
             strcpy(mode,"r");