Merge 13543:13754 from trunk.
Modified: branches/cache_manager_rewrite/reactos/Makefile
Modified: branches/cache_manager_rewrite/reactos/boot/freeldr/freeldr/multiboot.c
Modified: branches/cache_manager_rewrite/reactos/bootdata/hivesys.inf
Modified: branches/cache_manager_rewrite/reactos/bootdata/packages/reactos.dff
Modified: branches/cache_manager_rewrite/reactos/bootdata/txtsetup.sif
Modified: branches/cache_manager_rewrite/reactos/doc/README.WINE
Modified: branches/cache_manager_rewrite/reactos/drivers/fs/cdfs/fcb.c
Modified: branches/cache_manager_rewrite/reactos/drivers/fs/ntfs/fcb.c
Modified: branches/cache_manager_rewrite/reactos/drivers/fs/vfat/blockdev.c
Modified: branches/cache_manager_rewrite/reactos/drivers/fs/vfat/create.c
Modified: branches/cache_manager_rewrite/reactos/drivers/fs/vfat/dir.c
Modified: branches/cache_manager_rewrite/reactos/drivers/fs/vfat/dirwr.c
Modified: branches/cache_manager_rewrite/reactos/drivers/fs/vfat/fcb.c
Modified: branches/cache_manager_rewrite/reactos/drivers/fs/vfat/fsctl.c
Modified: branches/cache_manager_rewrite/reactos/drivers/fs/vfat/rw.c
Modified: branches/cache_manager_rewrite/reactos/drivers/fs/vfat/shutdown.c
Modified: branches/cache_manager_rewrite/reactos/drivers/fs/vfat/vfat.h
Modified: branches/cache_manager_rewrite/reactos/drivers/fs/vfat/volume.c
Modified: branches/cache_manager_rewrite/reactos/drivers/lib/ip/transport/tcp/event.c
Modified: branches/cache_manager_rewrite/reactos/drivers/lib/oskittcp/oskittcp/interface.c
Modified: branches/cache_manager_rewrite/reactos/drivers/net/afd/afd/read.c
Modified: branches/cache_manager_rewrite/reactos/drivers/net/afd/include/afd.h
Modified: branches/cache_manager_rewrite/reactos/drivers/net/ndis/ndis/miniport.c
Modified: branches/cache_manager_rewrite/reactos/drivers/net/tcpip/tcpip/fileobjs.c
Modified: branches/cache_manager_rewrite/reactos/drivers/storage/atapi/atapi.c
Modified: branches/cache_manager_rewrite/reactos/drivers/usb/Makefile
Modified: branches/cache_manager_rewrite/reactos/drivers/usb/cromwell/core/hcd-pci.c
Modified: branches/cache_manager_rewrite/reactos/drivers/usb/cromwell/core/hcd.h
Modified: branches/cache_manager_rewrite/reactos/drivers/usb/cromwell/core/hub.c
Modified: branches/cache_manager_rewrite/reactos/drivers/usb/cromwell/core/makefile
Modified: branches/cache_manager_rewrite/reactos/drivers/usb/cromwell/core/message.c
Modified: branches/cache_manager_rewrite/reactos/drivers/usb/cromwell/core/usb.c
Modified: branches/cache_manager_rewrite/reactos/drivers/usb/cromwell/core/usbcore.c
Modified: branches/cache_manager_rewrite/reactos/drivers/usb/cromwell/core/usbcore.def
Modified: branches/cache_manager_rewrite/reactos/drivers/usb/cromwell/host/makefile
Modified: branches/cache_manager_rewrite/reactos/drivers/usb/cromwell/host/ohci-hcd.c
Modified: branches/cache_manager_rewrite/reactos/drivers/usb/cromwell/host/ohci-pci.c
Modified: branches/cache_manager_rewrite/reactos/drivers/usb/cromwell/host/ohci.h
Modified: branches/cache_manager_rewrite/reactos/drivers/usb/cromwell/host/ohci_main.c
Added: branches/cache_manager_rewrite/reactos/drivers/usb/cromwell/host/ohci_main.h
Modified: branches/cache_manager_rewrite/reactos/drivers/usb/cromwell/linux/linux_wrapper.h
Modified: branches/cache_manager_rewrite/reactos/drivers/usb/cromwell/linux/pci_hal.c
Modified: branches/cache_manager_rewrite/reactos/drivers/usb/cromwell/linux/pci_ids.h
Modified: branches/cache_manager_rewrite/reactos/drivers/usb/cromwell/sys/linuxwrapper.c
Modified: branches/cache_manager_rewrite/reactos/drivers/usb/cromwell/usb_wrapper.h
Modified: branches/cache_manager_rewrite/reactos/hal/hal/hal.c
Modified: branches/cache_manager_rewrite/reactos/hal/halx86/generic/timer.c
Modified: branches/cache_manager_rewrite/reactos/include/base.h
Modified: branches/cache_manager_rewrite/reactos/include/ddk/csq.h
Modified: branches/cache_manager_rewrite/reactos/include/ddk/extypes.h
Modified: branches/cache_manager_rewrite/reactos/include/ddk/psfuncs.h
Modified: branches/cache_manager_rewrite/reactos/include/ddk/types.h
Added: branches/cache_manager_rewrite/reactos/include/expat/
Added: branches/cache_manager_rewrite/reactos/include/lsass/lsasrv.h
Deleted: branches/cache_manager_rewrite/reactos/include/msvcrt/alloc.h
Deleted: branches/cache_manager_rewrite/reactos/include/msvcrt/assert.h
Deleted: branches/cache_manager_rewrite/reactos/include/msvcrt/conio.h
Deleted: branches/cache_manager_rewrite/reactos/include/msvcrt/ctype.h
Deleted: branches/cache_manager_rewrite/reactos/include/msvcrt/dir.h
Deleted: branches/cache_manager_rewrite/reactos/include/msvcrt/direct.h
Deleted: branches/cache_manager_rewrite/reactos/include/msvcrt/errno.h
Deleted: branches/cache_manager_rewrite/reactos/include/msvcrt/fcntl.h
Deleted: branches/cache_manager_rewrite/reactos/include/msvcrt/float.h
Deleted: branches/cache_manager_rewrite/reactos/include/msvcrt/internal/
Deleted: branches/cache_manager_rewrite/reactos/include/msvcrt/io.h
Deleted: branches/cache_manager_rewrite/reactos/include/msvcrt/locale.h
Deleted: branches/cache_manager_rewrite/reactos/include/msvcrt/malloc.h
Deleted: branches/cache_manager_rewrite/reactos/include/msvcrt/math.h
Deleted: branches/cache_manager_rewrite/reactos/include/msvcrt/mbctype.h
Deleted: branches/cache_manager_rewrite/reactos/include/msvcrt/mbstring.h
Deleted: branches/cache_manager_rewrite/reactos/include/msvcrt/msvcrtdbg.h
Deleted: branches/cache_manager_rewrite/reactos/include/msvcrt/process.h
Deleted: branches/cache_manager_rewrite/reactos/include/msvcrt/search.h
Deleted: branches/cache_manager_rewrite/reactos/include/msvcrt/share.h
Deleted: branches/cache_manager_rewrite/reactos/include/msvcrt/signal.h
Deleted: branches/cache_manager_rewrite/reactos/include/msvcrt/stdarg.h
Deleted: branches/cache_manager_rewrite/reactos/include/msvcrt/stddef.h
Deleted: branches/cache_manager_rewrite/reactos/include/msvcrt/stdio.h
Deleted: branches/cache_manager_rewrite/reactos/include/msvcrt/stdlib.h
Deleted: branches/cache_manager_rewrite/reactos/include/msvcrt/string.h
Deleted: branches/cache_manager_rewrite/reactos/include/msvcrt/sys/
Deleted: branches/cache_manager_rewrite/reactos/include/msvcrt/time.h
Deleted: branches/cache_manager_rewrite/reactos/include/msvcrt/wchar.h
Deleted: branches/cache_manager_rewrite/reactos/include/msvcrt/wine/
Modified: branches/cache_manager_rewrite/reactos/include/napi/teb.h
Modified: branches/cache_manager_rewrite/reactos/include/ntdll/ntdll.h
Modified: branches/cache_manager_rewrite/reactos/include/ntdll/rtl.h
Modified: branches/cache_manager_rewrite/reactos/include/ntos/zw.h
Modified: branches/cache_manager_rewrite/reactos/include/sm/api.h
Modified: branches/cache_manager_rewrite/reactos/include/sm/helper.h
Modified: branches/cache_manager_rewrite/reactos/include/tchar.h
Modified: branches/cache_manager_rewrite/reactos/include/win32k/gdiobj.h
Modified: branches/cache_manager_rewrite/reactos/include/win32k/ntuser.h
Added: branches/cache_manager_rewrite/reactos/include/wine/cfgmgr32.h
Modified: branches/cache_manager_rewrite/reactos/include/wine/mmsystem.h
Modified: branches/cache_manager_rewrite/reactos/include/wine/rpcfc.h
Modified: branches/cache_manager_rewrite/reactos/include/wine/unicode.h
Modified: branches/cache_manager_rewrite/reactos/lib/comdlg32/Makefile.ros-template
Added: branches/cache_manager_rewrite/reactos/lib/cpl/desk/de.rc
Modified: branches/cache_manager_rewrite/reactos/lib/cpl/desk/desk.rc
[truncated at 100 lines; 717 more skipped]
Modified: branches/cache_manager_rewrite/reactos/Makefile
--- branches/cache_manager_rewrite/reactos/Makefile	2005-02-26 17:11:06 UTC (rev 13755)
+++ branches/cache_manager_rewrite/reactos/Makefile	2005-02-26 17:47:14 UTC (rev 13756)
@@ -41,6 +41,9 @@
 # vfatlib
 LIB_FSLIB = vfatlib
 
+# libunicode, must be empty!
+LIBUNICODE = 
+
 # Static libraries
 LIB_STATIC = string rosrtl epsapi uuid libwine zlib rtl tgetopt pseh adns dxguid strmiids crt rossym wdmguid
 
@@ -59,8 +62,8 @@
 	gdi32 gdiplus glu32 hid imagehlp imm32 iphlpapi kernel32 lzexpand mesa32 midimap mmdrv mpr msacm msafd \
 	msgina msi msimg32 msvcrt20 msvideo mswsock netapi32 ntdll ole32 oleaut32 oledlg olepro32 opengl32 \
 	packet psapi riched20 richedit rpcrt4 samlib secur32 setupapi shell32 shlwapi smdll snmpapi syssetup \
-	twain unicode user32 userenv version wininet winmm winspool ws2help ws2_32 wsock32 wshirda dnsapi \
-	urlmon shdocvw dinput dinput8 dxdiagn devenum dsound $(DLLS_KBD) $(DLLS_CPL) $(DLLS_SHELLEXT)
+	twain user32 userenv version wininet winmm winspool ws2help ws2_32 wsock32 wshirda dnsapi \
+	urlmon shdocvw dinput dinput8 dxdiagn devenum dsound lsasrv $(DLLS_KBD) $(DLLS_CPL) $(DLLS_SHELLEXT)
 
 SUBSYS = smss win32k csrss ntvdm
 
@@ -102,7 +105,7 @@
 # autochk cmd format services setup usetup welcome winlogon msiexec 
 SYS_APPS = autochk calc cmd explorer expand format ibrowser msiexec regedt32 regsvr32 \
   reporterror services setup taskmgr userinit usetup welcome vmwinst \
-  winlogon regedit winefile notepad reactos
+  winlogon regedit winefile notepad reactos lsass
 
 # System services
 SYS_SVC = rpcss eventlog umpnpmgr
@@ -980,8 +983,6 @@
 	$(RM) $(INSTALL_DIR)/system32/config/*.*
 	$(HALFVERBOSEECHO) [RM]      $(INSTALL_DIR)/system32/*.*
 	$(RM) $(INSTALL_DIR)/system32/*.*
-	$(HALFVERBOSEECHO) [RM]      $(INSTALL_DIR)/symbols/*.*
-	$(RM) $(INSTALL_DIR)/symbols/*.*
 	$(HALFVERBOSEECHO) [RM]      $(INSTALL_DIR)/media/fonts/*.*
 	$(RM) $(INSTALL_DIR)/media/fonts/*.*
 	$(HALFVERBOSEECHO) [RM]      $(INSTALL_DIR)/media/*.*
@@ -996,8 +997,6 @@
 	$(RMDIR) $(INSTALL_DIR)/system32/config
 	$(HALFVERBOSEECHO) [RMDIR]   $(INSTALL_DIR)/system32
 	$(RMDIR) $(INSTALL_DIR)/system32
-	$(HALFVERBOSEECHO) [RMDIR]   $(INSTALL_DIR)/symbols
-	$(RMDIR) $(INSTALL_DIR)/symbols
 	$(HALFVERBOSEECHO) [RMDIR]   $(INSTALL_DIR)/media/fonts
 	$(RMDIR) $(INSTALL_DIR)/media/fonts
 	$(HALFVERBOSEECHO) [RMDIR]   $(INSTALL_DIR)/media
@@ -1020,8 +1019,6 @@
 	$(RMKDIR) $(INSTALL_DIR)/media
 	$(HALFVERBOSEECHO) [RMKDIR]  $(INSTALL_DIR)/media/fonts
 	$(RMKDIR) $(INSTALL_DIR)/media/fonts
-	$(HALFVERBOSEECHO) [RMKDIR]  $(INSTALL_DIR)/symbols
-	$(RMKDIR) $(INSTALL_DIR)/symbols
 	$(HALFVERBOSEECHO) [RMKDIR]  $(INSTALL_DIR)/system32
 	$(RMKDIR) $(INSTALL_DIR)/system32
 	$(HALFVERBOSEECHO) [RMKDIR]  $(INSTALL_DIR)/system32/config

Modified: branches/cache_manager_rewrite/reactos/boot/freeldr/freeldr/multiboot.c
--- branches/cache_manager_rewrite/reactos/boot/freeldr/freeldr/multiboot.c	2005-02-26 17:11:06 UTC (rev 13755)
+++ branches/cache_manager_rewrite/reactos/boot/freeldr/freeldr/multiboot.c	2005-02-26 17:47:14 UTC (rev 13756)
@@ -4,7 +4,7 @@
  * FILE:            boot/freeldr/freeldr/multiboot.c
  * PURPOSE:         ReactOS Loader
  * PROGRAMMERS:     Alex Ionescu (alex@relsoft.net)
- *                  Hartmutt Birr - SMP/PAE Code
+ *                  Hartmut Birr - SMP/PAE Code
  */
 
 #include <freeldr.h>
@@ -54,7 +54,7 @@
 #define ApicPageTableIndexPae       (APIC_BASE >> 21)
 
 
-#define KernelEntryPoint            (KernelEntry - KERNEL_BASE_PHYS) +  KernelBase
+#define KernelEntryPoint            (KernelEntry - KERNEL_BASE_PHYS) + KernelBase
 
 /* Load Address of Next Module */
 ULONG_PTR NextModuleBase = 0;
@@ -217,7 +217,7 @@
     /* Jump to Kernel */
     PagedJump = (ASMCODE)KernelEntryPoint;
     PagedJump(Magic, &LoaderBlock);
- }
+}
 
 /*++
  * FrLdrGetKernelBase 
@@ -239,27 +239,24 @@
 FASTCALL
 FrLdrGetKernelBase(VOID)
 {
-    PCHAR p1;
-    PCHAR p2;
+    PCHAR p;
      
     /* Read Command Line */
-    for(p1 = (PCHAR)&LoaderBlock.CommandLine; *p1 && (p2 = strchr(p1, '/')); p2++) {
+    p = (PCHAR)LoaderBlock.CommandLine;
+    while ((p = strchr(p, '/')) != NULL) {
         
         /* Find "/3GB" */
-        if (!strnicmp(p2, "3GB", 3)) {
+        if (!strnicmp(p + 1, "3GB", 3)) {
             
             /* Make sure there's nothing following it */
-            if (p2[3] == ' ' || p2[3] == 0) {
+            if (p[4] == ' ' || p[4] == 0) {
                 
                 /* Use 3GB */
                 KernelBase = 0xC0000000;
-                
-            } else {
-            
-                /* Use 2GB */
-                KernelBase = 0x80000000;
             }
         }
+
+        p++;
     }
           
     /* Set KernelBase */

Modified: branches/cache_manager_rewrite/reactos/bootdata/hivesys.inf
--- branches/cache_manager_rewrite/reactos/bootdata/hivesys.inf	2005-02-26 17:11:06 UTC (rev 13755)
+++ branches/cache_manager_rewrite/reactos/bootdata/hivesys.inf	2005-02-26 17:47:14 UTC (rev 13756)
@@ -254,6 +254,15 @@
 HKLM,"SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management","PagingFiles",0x00010000, \
  "C:\reactos\pagefile.sys"
 
+; Subsystems
+HKLM,"SYSTEM\CurrentControlSet\Control\Session Manager\Subsystems","Debug",0x00020000,""
+HKLM,"SYSTEM\CurrentControlSet\Control\Session Manager\Subsystems","Kmode",0x00020000,"%SystemRoot%\system32\win32k.sys"
+HKLM,"SYSTEM\CurrentControlSet\Control\Session Manager\Subsystems","Optional",0x00070000,"Posix Os2"
+HKLM,"SYSTEM\CurrentControlSet\Control\Session Manager\Subsystems","Os2",0x00020000,"%SystemRoot%\system32\os2ss.exe"
+HKLM,"SYSTEM\CurrentControlSet\Control\Session Manager\Subsystems","Posix",0x00020000,"%SystemRoot%\system32\psxss.exe"
+HKLM,"SYSTEM\CurrentControlSet\Control\Session Manager\Subsystems","Required",0x00070000,"Debug Windows"
+HKLM,"SYSTEM\CurrentControlSet\Control\Session Manager\Subsystems","Windows",0x00020000,"%SystemRoot%\system32\csrss.exe"
+
 ; 3Com 3c905 Driver
 HKLM,"SYSTEM\CurrentControlSet\Services\3c90x","ErrorControl",0x00010001,0x00000000
 HKLM,"SYSTEM\CurrentControlSet\Services\3c90x","Group",0x00000000,"NDIS"

Modified: branches/cache_manager_rewrite/reactos/bootdata/packages/reactos.dff
--- branches/cache_manager_rewrite/reactos/bootdata/packages/reactos.dff	2005-02-26 17:11:06 UTC (rev 13755)
+++ branches/cache_manager_rewrite/reactos/bootdata/packages/reactos.dff	2005-02-26 17:47:14 UTC (rev 13756)
@@ -74,7 +74,6 @@
 lib\dinput8\dinput8.dll                 1
 lib\dsound\dsound.dll                   1
 lib\dxdiagn\dxdiagn.dll                 1
-lib\expat\expat.dll                     1
 lib\fmifs\fmifs.dll                     1
 lib\freetype\freetype.dll               1
 lib\gdi32\gdi32.dll                     1
@@ -97,6 +96,7 @@
 lib\midimap\midimap.dll                 1
 lib\mmdrv\mmdrv.dll                     1
 lib\mpr\mpr.dll                         1
+lib\msacm\msacm32.dll                   1
 lib\msafd\msafd.dll                     1
 lib\msgina\msgina.dll                   1
 lib\msimg32\msimg32.dll                 1
@@ -120,7 +120,6 @@
 lib\syssetup\syssetup.dll               1
 lib\twain\twain_32.dll                  1
 lib\urlmon\urlmon.dll                   1
-lib\unicode\wine_unicode.dll            1
 lib\user32\user32.dll                   1
 lib\userenv\userenv.dll                 1
 lib\version\version.dll                 1

Modified: branches/cache_manager_rewrite/reactos/bootdata/txtsetup.sif
--- branches/cache_manager_rewrite/reactos/bootdata/txtsetup.sif	2005-02-26 17:11:06 UTC (rev 13755)
+++ branches/cache_manager_rewrite/reactos/bootdata/txtsetup.sif	2005-02-26 17:47:14 UTC (rev 13756)
@@ -22,7 +22,6 @@
 class2.sys    = 3
 disk.sys      = 3
 floppy.sys    = 3
-hal.dll       = 2
 keyboard.sys  = 3
 l_intl.nls    = 2
 ntfs.sys      = 3
@@ -48,7 +47,16 @@
 
 [Computer]
 pci_up = "Standard-PC"
+pci_mp = "Standard-PC Multiprocessor"
 
+[Files.pci_up]
+; <filename> = <directory_id>,<new name>
+hal.dll      = 2
+
+[Files.pci_mp]
+; <filename> = <directory_id>,<new name>
+halmp.dll    = 2,hal.dll
+
 [Display]
 ;<id> = <user friendly name>,<spare>,<service key name>
 vga = "VGA Display",,Vga

Modified: branches/cache_manager_rewrite/reactos/doc/README.WINE
--- branches/cache_manager_rewrite/reactos/doc/README.WINE	2005-02-26 17:11:06 UTC (rev 13755)
+++ branches/cache_manager_rewrite/reactos/doc/README.WINE	2005-02-26 17:47:14 UTC (rev 13756)
@@ -10,8 +10,8 @@
 If you find that a function in ReactOS that is not implemented properly
 and is based on WINE sources, check the latest Winehq CVS and see if
 it has been fixed there. If so, please submit a patch to 
-ros-kernel@reactos.com. Otherwise please send a patch to both 
-wine-patches@winehq.com and ros-kernel@reactos.com
+ros-dev@reactos.com. Otherwise please send a patch to both 
+wine-patches@winehq.com and ros-dev@reactos.com
 
 When porting a dll from WINE to ReactOS please take a look at how
 comctl32 has been imported. We start by creating a makefile that has
@@ -26,51 +26,52 @@
 work to import a new dll.
 
 The following build tools are derived from Wine.
-reactos/tools/makedep		# fast dependancy tool
 reactos/tools/bin2res		# Resource to binary converter
-reactos/tools/winebuild		# Wine Build tool for Creating *.def files
+reactos/tools/winebuild		# Synced to Wine-20050211
 reactos/tools/wmc		# Wine Message Compiler
+reactos/tools/wrc		# Synced to Wine-20050211
 
-
 The following shared libraries are a 100% port from Winehq sources.
 
-reactos/lib/cabinet             # Synced to Wine-20050111
-reactos/lib/comctl32            # Synced to Wine-20050111
-reactos/lib/comdlg32		# Synced to Wine-20050111
-reactos/lib/dinput		# Synced to Wine-20050111
-reactos/lib/dinput8		# Synced to Wine-20050111
-reactos/lib/icmp		# Synced to Wine-20050111
+reactos/lib/cabinet             # Synced to Wine-20050211
+reactos/lib/comctl32            # Synced to Wine-20050211
+reactos/lib/comdlg32		# Synced to Wine-20050211
+reactos/lib/dinput		# Synced to Wine-20050211
+reactos/lib/dinput8		# Synced to Wine-20050211
+reactos/lib/icmp		# Synced to Wine-20050211
 reactos/lib/iphlpapi		# Out of sync
 reactos/lib/imagehlp		# Patches for BindImage need review and submission to winehq.
 reactos/lib/msvcrt20		# Out of sync
-reactos/lib/mpr                 # Synced to Wine-20050111
+reactos/lib/mpr                 # Synced to Wine-20050211
 reactos/lib/msacm		# Out of sync
-reactos/lib/msi			# Synced to Wine-20050111
+reactos/lib/msimg32		# Synced to Wine-20050211
+reactos/lib/msi			# Synced to Wine-20050211
 reactos/lib/msvideo		# Out of sync
 reactos/lib/netapi32		# Out of sync
 reactos/lib/odbc32		# In sync. Depends on port of Linux ODBC.
-reactos/lib/ole32               # Synced to Wine-20050111
-reactos/lib/oleaut32		# Synced to Wine-20050111
-reactos/lib/oledlg              # Synced to Wine-20050111
-reactos/lib/olepro32		# Synced to Wine-20050111
-reactos/lib/richedit		# Synced to Wine-20050111
-reactos/lib/rpcrt4		# Synced to Wine-20050111
+reactos/lib/ole32               # Synced to Wine-20050211
+reactos/lib/oleaut32		# Synced to Wine-20050211
+reactos/lib/oledlg              # Synced to Wine-20050211
+reactos/lib/olepro32		# Synced to Wine-20050211
+reactos/lib/richedit		# Synced to Wine-20050211
+reactos/lib/rpcrt4		# Synced to Wine-20050211
 reactos/lib/setupapi		# Synced to Wine-20050125 # CVS
-reactos/lib/shell32             # Synced to Wine-20050111
-reactos/lib/shdocvw             # Synced to Wine-20050111
-reactos/lib/shlwapi             # Synced to Wine-20050111
+reactos/lib/shell32             # Synced to Wine-20050211
+reactos/lib/shdocvw             # Synced to Wine-20050211
+reactos/lib/shlwapi             # Synced to Wine-20050211
 reactos/lib/twain		# Out of sync
-reactos/lib/unicode		# Dependancy on this lib needs to be removed. Synced to Wine-20050111
-reactos/lib/urlmon		# Synced to Wine-20050111
+reactos/lib/unicode		# Dependancy on this lib needs to be removed. Synced to Wine-20050211
+reactos/lib/urlmon		# Synced to Wine-20050211
 reactos/lib/version		# Out of sync
 reactos/lib/wininet		# Out of sync
-reactos/lib/winmm		# Synced to Wine-20050111
-reactos/lib/winmm/midimap       # Synced to Wine-20050111
-reactos/lib/winmm/wavemap       # Synced to Wine-20050111
+reactos/lib/winmm		# Synced to Wine-20050211
+reactos/lib/winmm/midimap       # Synced to Wine-20050211
+reactos/lib/winmm/wavemap       # Synced to Wine-20050211
 
 ReactOS shares the following programs with Winehq.
 reactos/subsys/system/regedit	# Out of sync
 reactos/subsys/system/expand	# Out of sync
+reactos/subsys/system/msiexec	# Synced to Wine-20050211
 
 In addition the following libs, dlls and source files are mostly based on code ported
 from Winehq CVS. If you are looking to update something in these files
@@ -80,7 +81,7 @@
 reactos/lib/uuid		#
 
 advapi32 -
-  reactos/lib/advapi32/crypyto/*.c	# Synced to Wine-20041201
+  reactos/lib/advapi32/crypt/*.c	# ekohl says we're not sharing this
 
 gdi32 -
   reactos/lib/gdi32/objects/linedda.c	# Out of sync
@@ -100,3 +101,31 @@
   reactos/lib/user32/misc/wsprintf.c	# Out of sync
   reactos/lib/user32/windows/mdi.c	# Out of sync
 
+- Cd to the parent directory of your top-level "reactos" directory
+- Check out the Wine release: "cvs -d :pserver:cvs@cvs.winehq.com:2401/home/wine co wine -r Wine-20050211"
+- Create "vendor" directory (as a sibling of your top-level "reactos" directory)
+- Cd to the vendor dir and check out the current vendor drop:
+  "svn co svn://svn.reactos.com/vendor/wine".
+- For each component shared with Wine (e.g. cabinet):
+  "del vendor\wine\dlls\cabinet\current\*"
+  "copy wine\dlls\cabinet vendor\wine\dlls\cabinet\current"
+  "del vendor\wine\dlls\cabinet\current\.cvsignore"
+  Check svn status, svn add/delete files as needed
+  Tag new Wine release "svn copy vendor\wine\dlls\cabinet\current vendor\wine\dlls\cabinet\Wine-20050211"
+- Commit the vendor drop: svn commit vendor\wine -m "Wine-20050211 vendor drop"
+- Determine the revision number of the last Wine tag by looking at http://svn.reactos.com/viewcvs/tags/
+  and finding the last Wine-yyyymmdd-sync tag, e.g. Wine-20050111-sync had rev 13007
+- For each component shared with Wine (e.g. cabinet):
+- "cd reactos\lib\cabinet"
+- Check for changes in the ReactOS tree: "svn diff -r 13007" (13007 is the revno of the previous sync).
+  If any changes are found, see if they're present in the Wine code. If not, submit to WineHQ
+  if apropriate.
+- Merge in Wine changes:
+  "svn merge svn://svn.reactos.com/vendor/wine/dlls/cabinet/Wine-20050111
+   svn://svn.reactos.com/vendor/wine/dlls/cabinet/current"
+- Fix any merge conflicts
+- Build and test (building will sometimes require adjusting header files)
+- Check which files were changed: "svn status"
+- For each of the changed files, get the WineHQ CVS log. Copy author and CVS commit message into a
+  commit log
+- Commit changed files "svn commit" using generated commit log as commit message

Modified: branches/cache_manager_rewrite/reactos/drivers/fs/cdfs/fcb.c
--- branches/cache_manager_rewrite/reactos/drivers/fs/cdfs/fcb.c	2005-02-26 17:11:06 UTC (rev 13755)
+++ branches/cache_manager_rewrite/reactos/drivers/fs/cdfs/fcb.c	2005-02-26 17:47:14 UTC (rev 13756)
@@ -250,6 +250,7 @@
       KEBUGCHECK(0);
     }
 #else
+  Status = STATUS_SUCCESS;
   CcInitializeCacheMap(FileObject,
                        (PCC_FILE_SIZES)(&Fcb->RFCB.AllocationSize),
 		       FALSE,

Modified: branches/cache_manager_rewrite/reactos/drivers/fs/ntfs/fcb.c
--- branches/cache_manager_rewrite/reactos/drivers/fs/ntfs/fcb.c	2005-02-26 17:11:06 UTC (rev 13755)
+++ branches/cache_manager_rewrite/reactos/drivers/fs/ntfs/fcb.c	2005-02-26 17:47:14 UTC (rev 13756)
@@ -254,6 +254,7 @@
       KEBUGCHECK(0);
     }
 #else
+  Status = STATUS_SUCCESS;
   CcInitializeCacheMap(FileObject,
                        (PCC_FILE_SIZES)(&Fcb->RFCB.AllocationSize),
                        FALSE,

Modified: branches/cache_manager_rewrite/reactos/drivers/fs/vfat/blockdev.c
--- branches/cache_manager_rewrite/reactos/drivers/fs/vfat/blockdev.c	2005-02-26 17:11:06 UTC (rev 13755)
+++ branches/cache_manager_rewrite/reactos/drivers/fs/vfat/blockdev.c	2005-02-26 17:47:14 UTC (rev 13756)
@@ -15,7 +15,7 @@
 
 /* FUNCTIONS ***************************************************************/
 
-NTSTATUS STDCALL
+static NTSTATUS STDCALL
 VfatReadWritePartialCompletion (IN PDEVICE_OBJECT DeviceObject,
 				IN PIRP Irp,
 				IN PVOID Context)
@@ -272,9 +272,9 @@
 NTSTATUS
 VfatBlockDeviceIoControl (IN PDEVICE_OBJECT DeviceObject,
 			  IN ULONG CtlCode,
-			  IN PVOID InputBuffer,
+			  IN PVOID InputBuffer OPTIONAL,
 			  IN ULONG InputBufferSize,
-			  IN OUT PVOID OutputBuffer,
+			  IN OUT PVOID OutputBuffer OPTIONAL,
 			  IN OUT PULONG OutputBufferSize,
 			  IN BOOLEAN Override)
 {

Modified: branches/cache_manager_rewrite/reactos/drivers/fs/vfat/create.c
--- branches/cache_manager_rewrite/reactos/drivers/fs/vfat/create.c	2005-02-26 17:11:06 UTC (rev 13755)
+++ branches/cache_manager_rewrite/reactos/drivers/fs/vfat/create.c	2005-02-26 17:47:14 UTC (rev 13756)
@@ -186,7 +186,7 @@
  */
 {
   PWCHAR PathNameBuffer;
-  ULONG PathNameBufferLength;
+  USHORT PathNameBufferLength;
   NTSTATUS Status;
   PVOID Context = NULL;
   PVOID Page;

Modified: branches/cache_manager_rewrite/reactos/drivers/fs/vfat/dir.c
--- branches/cache_manager_rewrite/reactos/drivers/fs/vfat/dir.c	2005-02-26 17:11:06 UTC (rev 13755)
+++ branches/cache_manager_rewrite/reactos/drivers/fs/vfat/dir.c	2005-02-26 17:47:14 UTC (rev 13756)
@@ -33,7 +33,7 @@
 
   TimeFields.Day = pddate->Day;
   TimeFields.Month = pddate->Month;
-  TimeFields.Year = DeviceExt->BaseDateYear + pddate->Year;
+  TimeFields.Year = (CSHORT)(DeviceExt->BaseDateYear + pddate->Year);
 
   RtlTimeFieldsToTime (&TimeFields, &LocalTime);
   ExLocalTimeToSystemTime(&LocalTime, SystemTime);
@@ -261,7 +261,7 @@
     pInfo->NextEntryOffset = 
       ULONG_ROUND_UP (sizeof (FILE_BOTH_DIR_INFORMATION) + DirContext->LongNameU.Length);
     RtlCopyMemory(pInfo->ShortName, DirContext->ShortNameU.Buffer, DirContext->ShortNameU.Length);
-    pInfo->ShortNameLength = DirContext->ShortNameU.Length;
+    pInfo->ShortNameLength = (CCHAR)DirContext->ShortNameU.Length;
     RtlCopyMemory (pInfo->FileName, DirContext->LongNameU.Buffer, DirContext->LongNameU.Length);
   //      pInfo->FileIndex=;
     FsdDosDateTimeToSystemTime (DeviceExt, DirContext->DirEntry.Fat.CreationDate,

Modified: branches/cache_manager_rewrite/reactos/drivers/fs/vfat/dirwr.c
--- branches/cache_manager_rewrite/reactos/drivers/fs/vfat/dirwr.c	2005-02-26 17:11:06 UTC (rev 13755)
+++ branches/cache_manager_rewrite/reactos/drivers/fs/vfat/dirwr.c	2005-02-26 17:47:14 UTC (rev 13756)
@@ -45,7 +45,7 @@
       return STATUS_SUCCESS;
     }
 
-  ASSERT (pFcb->parrentFcb);
+  ASSERT (pFcb->parentFcb);
   
   Offset.u.HighPart = 0;
   Offset.u.LowPart = dirIndex * SizeDirEntry;

Modified: branches/cache_manager_rewrite/reactos/drivers/fs/vfat/fcb.c
--- branches/cache_manager_rewrite/reactos/drivers/fs/vfat/fcb.c	2005-02-26 17:11:06 UTC (rev 13755)
+++ branches/cache_manager_rewrite/reactos/drivers/fs/vfat/fcb.c	2005-02-26 17:47:14 UTC (rev 13756)
@@ -72,7 +72,7 @@
 VOID
 vfatInitFcb(PVFATFCB Fcb, PUNICODE_STRING NameU)
 {
-  ULONG PathNameBufferLength;
+  USHORT PathNameBufferLength;
   
   if (NameU)
     PathNameBufferLength = NameU->Length + sizeof(WCHAR);
@@ -460,7 +460,7 @@
 {
   PVFATFCB  rcFCB;
   PWCHAR PathNameBuffer;
-  ULONG PathNameLength;
+  USHORT PathNameLength;
   ULONG Size;
   ULONG hash;
   
@@ -583,7 +583,7 @@
   fileObject->SectionObjectPointer = &fcb->SectionObjectPointers;
   fileObject->FsContext = fcb;
   fileObject->FsContext2 = newCCB;
-  DPRINT ("file open: fcb:%x PathName:%wZ file size: %d\n", fcb, &fcb->PathNameU, fcb->entry.FileSize);
+  DPRINT ("file open: fcb:%x PathName:%wZ\n", fcb, &fcb->PathNameU);
 
   return  STATUS_SUCCESS;
 }

Modified: branches/cache_manager_rewrite/reactos/drivers/fs/vfat/fsctl.c
--- branches/cache_manager_rewrite/reactos/drivers/fs/vfat/fsctl.c	2005-02-26 17:11:06 UTC (rev 13755)
+++ branches/cache_manager_rewrite/reactos/drivers/fs/vfat/fsctl.c	2005-02-26 17:47:14 UTC (rev 13756)
@@ -109,8 +109,8 @@
       }
       else if (DiskGeometry.MediaType == RemovableMedia &&
                PartitionInfo.PartitionNumber > 0 &&
-               PartitionInfo.StartingOffset.QuadPart == 0LL &&
-               PartitionInfo.PartitionLength.QuadPart > 0LL)
+               PartitionInfo.StartingOffset.QuadPart == 0 &&
+               PartitionInfo.PartitionLength.QuadPart > 0)
       {
          /* This is possible a removable media formated as super floppy */
          *RecognizedFS = TRUE;
@@ -298,7 +298,7 @@
             FatInfo.SectorsPerCluster = BootFatX->SectorsPerCluster;
             FatInfo.rootDirectorySectors = BootFatX->SectorsPerCluster;
             FatInfo.BytesPerCluster = BootFatX->SectorsPerCluster * DiskGeometry.BytesPerSector;
-	    FatInfo.Sectors = PartitionInfo.PartitionLength.QuadPart / DiskGeometry.BytesPerSector;
+            FatInfo.Sectors = (ULONG)(PartitionInfo.PartitionLength.QuadPart / DiskGeometry.BytesPerSector);
             if (FatInfo.Sectors / FatInfo.SectorsPerCluster < 65525)
             {
                DPRINT("FATX16\n");

Modified: branches/cache_manager_rewrite/reactos/drivers/fs/vfat/rw.c
--- branches/cache_manager_rewrite/reactos/drivers/fs/vfat/rw.c	2005-02-26 17:11:06 UTC (rev 13755)
+++ branches/cache_manager_rewrite/reactos/drivers/fs/vfat/rw.c	2005-02-26 17:47:14 UTC (rev 13756)
@@ -12,13 +12,7 @@
 
 /* INCLUDES *****************************************************************/
 
-#include <ddk/ntddk.h>
-#include <wchar.h>
-#include <ntos/minmax.h>
-
 #define NDEBUG
-#include <debug.h>
-
 #include "vfat.h"
 
 /*
@@ -728,7 +722,7 @@
       {
          DPRINT("VfatReadFile returned STATUS_VERIFY_REQUIRED\n");
          DeviceToVerify = IoGetDeviceToVerify(PsGetCurrentThread());
-         IoSetDeviceToVerify(PsGetCurrentThread(), NULL);
+         IoSetDeviceToVerify(PsGetCurrentThread(), DeviceToVerify);
          Status = IoVerifyVolume (DeviceToVerify, FALSE);
 
          if (NT_SUCCESS(Status))

Modified: branches/cache_manager_rewrite/reactos/drivers/fs/vfat/shutdown.c
--- branches/cache_manager_rewrite/reactos/drivers/fs/vfat/shutdown.c	2005-02-26 17:11:06 UTC (rev 13755)
+++ branches/cache_manager_rewrite/reactos/drivers/fs/vfat/shutdown.c	2005-02-26 17:47:14 UTC (rev 13756)
@@ -14,6 +14,34 @@
 
 /* FUNCTIONS ****************************************************************/
 
+NTSTATUS
+VfatDiskShutDown(PVCB Vcb)
+{
+   PIRP Irp;
+   KEVENT Event;
+   NTSTATUS Status;
+   IO_STATUS_BLOCK IoStatus;
+
+   KeInitializeEvent(&Event, NotificationEvent, FALSE);
+   Irp = IoBuildSynchronousFsdRequest(IRP_MJ_SHUTDOWN, Vcb->StorageDevice,
+                                      NULL, 0, NULL, &Event, &IoStatus);
+   if (Irp)
+   {
+      Status = IoCallDriver(Vcb->StorageDevice, Irp);
+      if (Status == STATUS_PENDING)
+      {
+         KeWaitForSingleObject(&Event, Executive, KernelMode, FALSE, NULL);
+         Status = IoStatus.Status;
+      }
+   }
+   else
+   {
+      Status = IoStatus.Status;
+   }
+
+   return Status;
+}
+
 NTSTATUS STDCALL
 VfatShutdown(PDEVICE_OBJECT DeviceObject, PIRP Irp)
 {
@@ -37,15 +65,24 @@
 
 	 ExAcquireResourceExclusiveLite(&DeviceExt->DirResource, TRUE);
          Status = VfatFlushVolume(DeviceExt, DeviceExt->VolumeFcb);
-         ExReleaseResourceLite(&DeviceExt->DirResource);
-	 if (!NT_SUCCESS(Status))
-	 {
+         if (NT_SUCCESS(Status))
+         {
+            Status = VfatDiskShutDown(DeviceExt);
+            if (!NT_SUCCESS(Status))
+	       DPRINT1("VfatDiskShutDown failed, status = %x\n", Status);
+         }
+         else
+         {
 	    DPRINT1("VfatFlushVolume failed, status = %x\n", Status);
-	    Irp->IoStatus.Status = Status;
 	 }
+         ExReleaseResourceLite(&DeviceExt->DirResource);
+
          /* FIXME: Unmount the logical volume */
+
+         if (!NT_SUCCESS(Status))
+            Irp->IoStatus.Status = Status;
       }
-	 ExReleaseResourceLite(&VfatGlobalData->VolumeListLock);
+      ExReleaseResourceLite(&VfatGlobalData->VolumeListLock);
       
       /* FIXME: Free all global acquired resources */
 
@@ -53,13 +90,13 @@
    }
    else
    {
+      Irp->IoStatus.Status = STATUS_INVALID_DEVICE_REQUEST;
       Status = STATUS_INVALID_DEVICE_REQUEST;
    }
 
-   Irp->IoStatus.Status = Status;
    Irp->IoStatus.Information = 0;
+   IoCompleteRequest(Irp, IO_NO_INCREMENT);
 
-   IoCompleteRequest(Irp, IO_NO_INCREMENT);
    return(Status);
 }
 

Modified: branches/cache_manager_rewrite/reactos/drivers/fs/vfat/vfat.h
--- branches/cache_manager_rewrite/reactos/drivers/fs/vfat/vfat.h	2005-02-26 17:11:06 UTC (rev 13755)
+++ branches/cache_manager_rewrite/reactos/drivers/fs/vfat/vfat.h	2005-02-26 17:47:14 UTC (rev 13756)
@@ -36,6 +36,7 @@
 #define ROUND_UP(N, S) ((((N) + (S) - 1) / (S)) * (S))
 #define ROUND_DOWN(N, S) ((N) - ((N) % (S)))
 
+#include <pshpack1.h>
 struct _BootSector
 {
   unsigned char  magic0, res0, magic1;
@@ -53,7 +54,7 @@
   unsigned char  VolumeLabel[11], SysType[8];
   unsigned char  Res2[448];
   unsigned short Signatur1;
-} __attribute__((packed));
+};
 
 struct _BootSector32
 {
@@ -81,7 +82,7 @@
   unsigned char  VolumeLabel[11], SysType[8];		// 71
   unsigned char  Res2[420];				// 90
   unsigned short Signature1;				// 510
-} __attribute__((packed));
+};
 
 struct _BootSectorFatX
 {
@@ -91,7 +92,7 @@
    unsigned short FATCount;         // 12
    unsigned long Unknown;           // 14
    unsigned char Unused[4078];      // 18
-} __attribute__((packed));
+};
 
 struct _FsInfoSector
 {
@@ -102,35 +103,17 @@
   unsigned long  NextCluster;				// 492
   unsigned char  Res7[12];				// 496
   unsigned long  Signatur2;				// 508
-} __attribute__((packed));
+};
 
 typedef struct _BootSector BootSector;
 
-#define VFAT_CASE_LOWER_BASE	8  		// base is lower case
-#define VFAT_CASE_LOWER_EXT 	16 		// extension is lower case
-
-#define LONGNAME_MAX_LENGTH 	256		// max length for a long filename
-
-#define ENTRY_DELETED(DeviceExt, DirEntry) ((DeviceExt)->Flags & VCB_IS_FATX ? FATX_ENTRY_DELETED(&((DirEntry)->FatX)) : FAT_ENTRY_DELETED(&((DirEntry)->Fat)))
-#define ENTRY_VOLUME(DeviceExt, DirEntry)  ((DeviceExt)->Flags & VCB_IS_FATX ? FATX_ENTRY_VOLUME(&((DirEntry)->FatX)) : FAT_ENTRY_VOLUME(&((DirEntry)->Fat)))
-#define ENTRY_END(DeviceExt, DirEntry)     ((DeviceExt)->Flags & VCB_IS_FATX ? FATX_ENTRY_END(&((DirEntry)->FatX)) : FAT_ENTRY_END(&((DirEntry)->Fat)))
-
-#define FAT_ENTRY_DELETED(DirEntry)  ((DirEntry)->Filename[0] == 0xe5)
-#define FAT_ENTRY_END(DirEntry)      ((DirEntry)->Filename[0] == 0)
-#define FAT_ENTRY_LONG(DirEntry)     (((DirEntry)->Attrib & 0x3f) == 0x0f)
-#define FAT_ENTRY_VOLUME(DirEntry)   (((DirEntry)->Attrib & 0x1f) == 0x08)
-
-#define FATX_ENTRY_DELETED(DirEntry) ((DirEntry)->FilenameLength == 0xe5)
-#define FATX_ENTRY_END(DirEntry)     ((DirEntry)->FilenameLength == 0xff)
-#define FATX_ENTRY_LONG(DirEntry)    (FALSE)
-#define FATX_ENTRY_VOLUME(DirEntry)  (((DirEntry)->Attrib & 0x1f) == 0x08)
-
-#define FAT_ENTRIES_PER_PAGE   (PAGE_SIZE / sizeof (FAT_DIR_ENTRY))
-#define FATX_ENTRIES_PER_PAGE  (PAGE_SIZE / sizeof (FATX_DIR_ENTRY))
-
 struct _FATDirEntry
 {
-  unsigned char  Filename[8], Ext[3];
+  union
+  {
+     struct { unsigned char Filename[8], Ext[3]; };
+     unsigned char ShortName[11];
+  };
   unsigned char  Attrib;
   unsigned char  lCase;
   unsigned char  CreationTimeMs;
@@ -140,7 +123,7 @@
   unsigned short UpdateDate;                            //date create/update
   unsigned short FirstCluster;
   unsigned long  FileSize;
-} __attribute__((packed));
+};
 
 typedef struct _FATDirEntry FAT_DIR_ENTRY, *PFAT_DIR_ENTRY;
 
@@ -157,18 +140,8 @@
    unsigned short CreationDate;  // 58
    unsigned short AccessTime;    // 60
    unsigned short AccessDate;    // 62
-} __attribute__((packed));
-
-typedef struct _FATXDirEntry FATX_DIR_ENTRY, *PFATX_DIR_ENTRY;
-
-union _DIR_ENTRY
-{
-   FAT_DIR_ENTRY Fat;
-   FATX_DIR_ENTRY FatX;
 };
 
-typedef union _DIR_ENTRY DIR_ENTRY, *PDIR_ENTRY;
-
 struct _slot
 {
   unsigned char id;               // sequence number for slot
@@ -179,11 +152,44 @@
   WCHAR  name5_10[6];             // 6 more characters in name
   unsigned char start[2];         // starting cluster number
   WCHAR  name11_12[2];            // last 2 characters in name
-} __attribute__((packed));
+};
 
-
 typedef struct _slot slot;
 
+#include <poppack.h>
+
+#define VFAT_CASE_LOWER_BASE	8  		// base is lower case
+#define VFAT_CASE_LOWER_EXT 	16 		// extension is lower case
+
+#define LONGNAME_MAX_LENGTH 	256		// max length for a long filename
+
+#define ENTRY_DELETED(DeviceExt, DirEntry) ((DeviceExt)->Flags & VCB_IS_FATX ? FATX_ENTRY_DELETED(&((DirEntry)->FatX)) : FAT_ENTRY_DELETED(&((DirEntry)->Fat)))
+#define ENTRY_VOLUME(DeviceExt, DirEntry)  ((DeviceExt)->Flags & VCB_IS_FATX ? FATX_ENTRY_VOLUME(&((DirEntry)->FatX)) : FAT_ENTRY_VOLUME(&((DirEntry)->Fat)))
+#define ENTRY_END(DeviceExt, DirEntry)     ((DeviceExt)->Flags & VCB_IS_FATX ? FATX_ENTRY_END(&((DirEntry)->FatX)) : FAT_ENTRY_END(&((DirEntry)->Fat)))
+
+#define FAT_ENTRY_DELETED(DirEntry)  ((DirEntry)->Filename[0] == 0xe5)
+#define FAT_ENTRY_END(DirEntry)      ((DirEntry)->Filename[0] == 0)
+#define FAT_ENTRY_LONG(DirEntry)     (((DirEntry)->Attrib & 0x3f) == 0x0f)
+#define FAT_ENTRY_VOLUME(DirEntry)   (((DirEntry)->Attrib & 0x1f) == 0x08)
+
+#define FATX_ENTRY_DELETED(DirEntry) ((DirEntry)->FilenameLength == 0xe5)
+#define FATX_ENTRY_END(DirEntry)     ((DirEntry)->FilenameLength == 0xff)
+#define FATX_ENTRY_LONG(DirEntry)    (FALSE)
+#define FATX_ENTRY_VOLUME(DirEntry)  (((DirEntry)->Attrib & 0x1f) == 0x08)
+
+#define FAT_ENTRIES_PER_PAGE   (PAGE_SIZE / sizeof (FAT_DIR_ENTRY))
+#define FATX_ENTRIES_PER_PAGE  (PAGE_SIZE / sizeof (FATX_DIR_ENTRY))
+
+typedef struct _FATXDirEntry FATX_DIR_ENTRY, *PFATX_DIR_ENTRY;
+
+union _DIR_ENTRY
+{
+   FAT_DIR_ENTRY Fat;
+   FATX_DIR_ENTRY FatX;
+};
+
+typedef union _DIR_ENTRY DIR_ENTRY, *PDIR_ENTRY;
+
 #define BLOCKSIZE 512
 
 #define FAT16  (1)

Modified: branches/cache_manager_rewrite/reactos/drivers/fs/vfat/volume.c
--- branches/cache_manager_rewrite/reactos/drivers/fs/vfat/volume.c	2005-02-26 17:11:06 UTC (rev 13755)
+++ branches/cache_manager_rewrite/reactos/drivers/fs/vfat/volume.c	2005-02-26 17:47:14 UTC (rev 13756)
@@ -204,7 +204,7 @@
   LabelLen = FsLabelInfo->VolumeLabelLength / sizeof(WCHAR);
   RtlZeroMemory(&VolumeLabelDirEntry, SizeDirEntry);
   StringW.Buffer = FsLabelInfo->VolumeLabel;
-  StringW.Length = StringW.MaximumLength = FsLabelInfo->VolumeLabelLength;
+  StringW.Length = StringW.MaximumLength = (USHORT)FsLabelInfo->VolumeLabelLength;
   StringO.Buffer = cString;
   StringO.Length = 0;
   StringO.MaximumLength = 42;
@@ -288,7 +288,7 @@
   }
   
   /* Update volume label in memory */
-  DeviceObject->Vpb->VolumeLabelLength = FsLabelInfo->VolumeLabelLength;
+  DeviceObject->Vpb->VolumeLabelLength = (USHORT)FsLabelInfo->VolumeLabelLength;
   RtlCopyMemory(DeviceObject->Vpb->VolumeLabel, FsLabelInfo->VolumeLabel, DeviceObject->Vpb->VolumeLabelLength);
   
   return Status;

Modified: branches/cache_manager_rewrite/reactos/drivers/lib/ip/transport/tcp/event.c
--- branches/cache_manager_rewrite/reactos/drivers/lib/ip/transport/tcp/event.c	2005-02-26 17:11:06 UTC (rev 13755)
+++ branches/cache_manager_rewrite/reactos/drivers/lib/ip/transport/tcp/event.c	2005-02-26 17:47:14 UTC (rev 13756)
@@ -10,8 +10,6 @@
 
 #include "precomp.h"
 
-extern VOID DrainSignals();
-
 int TCPSocketState(void *ClientData,
 		   void *WhichSocket, 
 		   void *WhichConnection,
@@ -32,10 +30,9 @@
     if( !Connection ) {
 	TI_DbgPrint(DEBUG_TCP,("Socket closing.\n"));
 	Connection = FileFindConnectionByContext( WhichSocket );
-	if( !Connection ) {
-	    TcpipRecursiveMutexLeave( &TCPLock );
+	if( !Connection )
 	    return 0;
-	} else 
+	else 
 	    TI_DbgPrint(DEBUG_TCP,("Found socket %x\n", Connection));
     }
 

Modified: branches/cache_manager_rewrite/reactos/drivers/lib/oskittcp/oskittcp/interface.c
--- branches/cache_manager_rewrite/reactos/drivers/lib/oskittcp/oskittcp/interface.c	2005-02-26 17:11:06 UTC (rev 13755)
+++ branches/cache_manager_rewrite/reactos/drivers/lib/oskittcp/oskittcp/interface.c	2005-02-26 17:47:14 UTC (rev 13756)
@@ -120,6 +120,9 @@
 	so->so_connection = context;
 	so->so_state = SS_NBIO;
 	so->so_error = 0;
+        so->so_q = so->so_q0 = NULL;
+        so->so_qlen = 0;
+        so->so_head = NULL;
 	*aso = so;
     }
     return error;
@@ -377,7 +380,6 @@
 	*newso = so;
 	    
 	/*so->so_state &= ~SS_COMP;*/
-	so->so_q = NULL;
 
 	mnam.m_data = &sa;
 	mnam.m_len = sizeof(sa);
@@ -385,6 +387,9 @@
 	(void) soaccept(so, &mnam);
 
 	so->so_state = SS_NBIO | SS_ISCONNECTED;
+        so->so_q = so->so_q0 = NULL;
+        so->so_qlen = 0;
+        so->so_head = 0;
 
 	OS_DbgPrint(OSK_MID_TRACE,("error = %d\n", error));
 	if (name) {

Modified: branches/cache_manager_rewrite/reactos/drivers/net/afd/afd/read.c
--- branches/cache_manager_rewrite/reactos/drivers/net/afd/afd/read.c	2005-02-26 17:11:06 UTC (rev 13755)
+++ branches/cache_manager_rewrite/reactos/drivers/net/afd/afd/read.c	2005-02-26 17:47:14 UTC (rev 13756)
@@ -123,7 +123,7 @@
     PIRP NextIrp;
 
     AFD_DbgPrint(MID_TRACE,("Socket shutdown from remote side\n"));
-    
+
     /* Kill remaining recv irps */
     while( !IsListEmpty( &FCB->PendingIrpList[FUNCTION_RECV] ) ) {
 	NextIrpEntry = 
@@ -138,7 +138,7 @@
     }
     
     /* Handle closing signal */
-    FCB->PollState |= AFD_EVENT_DISCONNECT;
+    FCB->PollState |= AFD_EVENT_DISCONNECT | SOCKET_STATE_EOF_READ;
 
     PollReeval( FCB->DeviceExt, FCB->FileObject );
 }
@@ -270,7 +270,8 @@
 
     if( !SocketAcquireStateLock( FCB ) ) return LostSocket( Irp, FALSE );
 
-    if( FCB->State != SOCKET_STATE_CONNECTED ) {
+    if( FCB->State != SOCKET_STATE_CONNECTED &&
+        FCB->State != SOCKET_STATE_CONNECTING ) {
         AFD_DbgPrint(MID_TRACE,("Called recv on wrong kind of socket (s%x)\n",
                                 FCB->State));
         return STATUS_UNSUCCESSFUL;
@@ -307,15 +308,19 @@
 	    Status = STATUS_SUCCESS;
 	}
     } else {
-	AFD_DbgPrint(MID_TRACE,("EOF Happened already\n"));
-	FCB->Recv.Content = 0;
-	FCB->Recv.BytesUsed = 0;
-	Status = STATUS_END_OF_FILE;
+	if( FCB->PollState & SOCKET_STATE_EOF_READ )
+            Status = STATUS_END_OF_FILE;
+        else
+            Status = STATUS_SUCCESS;
+        
+        AFD_DbgPrint(MID_TRACE,("EOF Happened already\n"));
+        FCB->Recv.Content = 0;
+        FCB->Recv.BytesUsed = 0;
 
 	ProcessClose( FCB );
 
         return UnlockAndMaybeComplete
-            ( FCB, STATUS_SUCCESS, Irp, 0, NULL, FALSE);
+            ( FCB, Status, Irp, 0, NULL, FALSE);
     }
 
     if( NT_SUCCESS(Status) ) {

Modified: branches/cache_manager_rewrite/reactos/drivers/net/afd/include/afd.h
--- branches/cache_manager_rewrite/reactos/drivers/net/afd/include/afd.h	2005-02-26 17:11:06 UTC (rev 13755)
+++ branches/cache_manager_rewrite/reactos/drivers/net/afd/include/afd.h	2005-02-26 17:47:14 UTC (rev 13756)
@@ -44,6 +44,7 @@
 #define SOCKET_STATE_CONNECTED          3
 #define SOCKET_STATE_LISTENING          4
 #define SOCKET_STATE_MASK               0x0000ffff
+#define SOCKET_STATE_EOF_READ           0x20000000
 #define SOCKET_STATE_LOCKED             0x40000000
 #define SOCKET_STATE_NEW                0x80000000
 #define SOCKET_STATE_CLOSED             0x00000100

Modified: branches/cache_manager_rewrite/reactos/drivers/net/ndis/ndis/miniport.c
--- branches/cache_manager_rewrite/reactos/drivers/net/ndis/ndis/miniport.c	2005-02-26 17:11:06 UTC (rev 13755)
+++ branches/cache_manager_rewrite/reactos/drivers/net/ndis/ndis/miniport.c	2005-02-26 17:47:14 UTC (rev 13756)
@@ -603,7 +603,7 @@
           Adapter->NdisMiniportBlock.MiniportAdapterContext,
           Oid,
           Adapter->QueryBuffer,
-          Size,
+          Adapter->QueryBufferLength,
           BytesWritten,
           &BytesNeeded);
     }
@@ -1290,14 +1290,14 @@
   NTSTATUS Status;
   UINT SelectedMediumIndex = 0;
   NDIS_OID AddressOID;
-  BOOLEAN Success;
+  BOOLEAN Success = FALSE;
   ULONG ResourceCount;
   ULONG ResourceListSize;
   UNICODE_STRING ParamName;
   PNDIS_CONFIGURATION_PARAMETER ConfigParam;
   NDIS_HANDLE ConfigHandle;
   ULONG Size;
-  KIRQL OldIrql;
+/* FIXME - KIRQL OldIrql; */
 
   /*
    * Prepare wrapper context used by HW and configuration routines.
@@ -1461,7 +1461,7 @@
         /* FIXME: Support other types of media */
         NDIS_DbgPrint(MIN_TRACE, ("error: unsupported media\n"));
         ASSERT(FALSE);
-        KeReleaseSpinLock(&Adapter->NdisMiniportBlock.Lock, OldIrql);
+/* FIXME - KeReleaseSpinLock(&Adapter->NdisMiniportBlock.Lock, OldIrql); */
         return STATUS_UNSUCCESSFUL;
     }
 
@@ -1564,6 +1564,8 @@
         break;
 
       case IRP_MN_STOP_DEVICE:
+        /* FIXME */
+        Status = STATUS_UNSUCCESSFUL;
         break;
         Status = NdisIForwardIrpAndWait(Adapter, Irp);
         if (NT_SUCCESS(Status) && NT_SUCCESS(Irp->IoStatus.Status))
@@ -1576,7 +1578,8 @@
 
       default:
         IoSkipCurrentIrpStackLocation(Irp);
-        return IoCallDriver(Adapter->NdisMiniportBlock.NextDeviceObject, Irp);
+        Status = IoCallDriver(Adapter->NdisMiniportBlock.NextDeviceObject, Irp);
+        break;
     }
 
   return Status;

Modified: branches/cache_manager_rewrite/reactos/drivers/net/tcpip/tcpip/fileobjs.c
--- branches/cache_manager_rewrite/reactos/drivers/net/tcpip/tcpip/fileobjs.c	2005-02-26 17:11:06 UTC (rev 13755)
+++ branches/cache_manager_rewrite/reactos/drivers/net/tcpip/tcpip/fileobjs.c	2005-02-26 17:47:14 UTC (rev 13756)
@@ -471,8 +471,10 @@
 
   Connection = Request->Handle.ConnectionContext;
 
+  TcpipRecursiveMutexEnter( &TCPLock, TRUE );
   TCPClose(Connection);
   DeleteConnectionEndpoint(Connection);
+  TcpipRecursiveMutexLeave( &TCPLock );
 
   TI_DbgPrint(MAX_TRACE, ("Leaving.\n"));
 

Modified: branches/cache_manager_rewrite/reactos/drivers/storage/atapi/atapi.c
--- branches/cache_manager_rewrite/reactos/drivers/storage/atapi/atapi.c	2005-02-26 17:11:06 UTC (rev 13755)
+++ branches/cache_manager_rewrite/reactos/drivers/storage/atapi/atapi.c	2005-02-26 17:47:14 UTC (rev 13756)
@@ -2231,7 +2231,7 @@
   DPRINT("SCSIOP_SYNCRONIZE_CACHE: TargetId: %lu\n",
 	 Srb->TargetId);
 
-  if (!(DeviceExtension->DeviceFlags[Srb->TargetId] & DEVICE_NO_FLUSH))
+  if (DeviceExtension->DeviceFlags[Srb->TargetId] & DEVICE_NO_FLUSH)
     {
       /*
        * NOTE: Don't flush the cache for CD/DVD drives. Although
@@ -2240,9 +2240,16 @@
        * it doesn't make sense to flush cache on devices we don't
        * write to.
        */
-      return STATUS_SUCCESS;
+      return SRB_STATUS_INVALID_REQUEST;
     }
[truncated at 1000 lines; 51148 more skipped]