msdos/int21 CREAT special cases

Ferenc Wagner wferi at tba.elte.hu
Mon May 26 06:04:49 CDT 2003


Volume label creation should fail, not create a regular file.
Similarly for file names ending in a slash (this is actually
needed for PKSFX Version 2.04g to unpack directory trees).

                                                Feri.

Index: msdos/int21.c
===================================================================
RCS file: /home/wine/wine/msdos/int21.c,v
retrieving revision 1.93
diff -u -r1.93 int21.c
--- msdos/int21.c	19 May 2003 21:40:05 -0000	1.93
+++ msdos/int21.c	26 May 2003 10:48:21 -0000
@@ -474,8 +474,18 @@
 }
 static BOOL INT21_CreateFile( CONTEXT86 *context )
 {
-    SET_AX( context, _lcreat16( CTX_SEG_OFF_TO_LIN(context, context->SegDs,
-                                                   context->Edx ), CX_reg(context) ) );
+    LPCSTR path=CTX_SEG_OFF_TO_LIN(context, context->SegDs, context->Edx);
+
+    if (CX_reg(context) == 0x0008) {
+        SetLastError( ERROR_ACCESS_DENIED );
+        return TRUE;
+    }
+    if (path[strlen(path)-1] == '/')
+    {
+        SetLastError( ERROR_FILE_NOT_FOUND );
+        return TRUE;
+    }
+    SET_AX( context, _lcreat16( path, CX_reg(context) ) );
     return (AX_reg(context) == (WORD)HFILE_ERROR16);
 }
 



More information about the wine-patches mailing list