winedos / Add some long filename functions
Jukka Heinonen
jhei at iki.fi
Mon May 19 23:29:30 CDT 2003
This patch makes 4dos dir command show file stamps.
Changelog:
Added some long filename functions.
Index: dlls/winedos/int21.c
===================================================================
RCS file: /home/wine/wine/dlls/winedos/int21.c,v
retrieving revision 1.34
diff -u -r1.34 int21.c
--- dlls/winedos/int21.c 19 May 2003 21:40:05 -0000 1.34
+++ dlls/winedos/int21.c 20 May 2003 04:26:29 -0000
@@ -1730,7 +1730,7 @@
switch (AL_reg(context))
{
case 0x0d: /* RESET DRIVE */
- INT_Int21Handler( context );
+ INT_BARF( context, 0x21 );
break;
case 0x39: /* LONG FILENAME - MAKE DIRECTORY */
@@ -1790,14 +1790,73 @@
case 0x6c: /* LONG FILENAME - CREATE OR OPEN FILE */
case 0xa0: /* LONG FILENAME - GET VOLUME INFORMATION */
case 0xa1: /* LONG FILENAME - "FindClose" - TERMINATE DIRECTORY SEARCH */
+ INT_Int21Handler( context );
+ break;
+
case 0xa6: /* LONG FILENAME - GET FILE INFO BY HANDLE */
+ {
+ HANDLE handle = DosFileHandleToWin32Handle(BX_reg(context));
+ BY_HANDLE_FILE_INFORMATION *info =
+ CTX_SEG_OFF_TO_LIN(context, context->SegDs, context->Edx);
+
+ TRACE( "LONG FILENAME - GET FILE INFO BY HANDLE\n" );
+
+ if (!GetFileInformationByHandle(handle, info))
+ bSetDOSExtendedError = TRUE;
+ }
+ break;
+
case 0xa7: /* LONG FILENAME - CONVERT TIME */
+ switch (BL_reg(context))
+ {
+ case 0x00: /* FILE TIME TO DOS TIME */
+ {
+ WORD date, time;
+ FILETIME *filetime = CTX_SEG_OFF_TO_LIN(context,
+ context->SegDs,
+ context->Esi);
+
+ TRACE( "LONG FILENAME - FILE TIME TO DOS TIME\n" );
+
+ FileTimeToDosDateTime( filetime, &date, &time );
+
+ SET_DX( context, date );
+ SET_CX( context, time );
+
+ /*
+ * FIXME: BH has number of 10-millisecond units
+ * past time in CX.
+ */
+ SET_BH( context, 0 );
+ }
+ break;
+
+ case 0x01: /* DOS TIME TO FILE TIME */
+ {
+ FILETIME *filetime = CTX_SEG_OFF_TO_LIN(context,
+ context->SegEs,
+ context->Edi);
+
+ TRACE( "LONG FILENAME - DOS TIME TO FILE TIME\n" );
+
+ /*
+ * FIXME: BH has number of 10-millisecond units
+ * past time in CX.
+ */
+ DosDateTimeToFileTime( DX_reg(context), CX_reg(context),
+ filetime );
+ }
+ break;
+
+ default:
+ INT_BARF( context, 0x21 );
+ break;
+ }
+ break;
+
case 0xa8: /* LONG FILENAME - GENERATE SHORT FILENAME */
case 0xa9: /* LONG FILENAME - SERVER CREATE OR OPEN FILE */
case 0xaa: /* LONG FILENAME - SUBST */
- INT_Int21Handler( context );
- break;
-
default:
INT_BARF( context, 0x21 );
}
--
Jukka Heinonen <http://www.iki.fi/jhei/>
More information about the wine-patches
mailing list