Index: trunk/src/crtdll/crtdll.cpp
===================================================================
--- trunk/src/crtdll/crtdll.cpp	(revision 5471)
+++ trunk/src/crtdll/crtdll.cpp	(revision 5472)
@@ -1,4 +1,2 @@
-/* $Id: crtdll.cpp,v 1.28 2000-11-22 00:49:54 phaller Exp $ */
-
 /*
  * The C RunTime DLL
@@ -57,4 +55,5 @@
 #include <sys\stat.h>
 #include "signal.h"
+#include <time.h>
 
 #include <crtdll.h>
@@ -66,5 +65,5 @@
 ODINDEBUGCHANNEL(CRTDLL)
 
-
+#undef dprintf2
 #define dprintf2 dprintf
 
Index: trunk/src/ddraw/OS2CLIPPER.CPP
===================================================================
--- trunk/src/ddraw/OS2CLIPPER.CPP	(revision 5471)
+++ trunk/src/ddraw/OS2CLIPPER.CPP	(revision 5472)
@@ -1,3 +1,3 @@
-/* $Id: OS2CLIPPER.CPP,v 1.10 2000-09-02 08:27:05 sandervl Exp $ */
+/* $Id: OS2CLIPPER.CPP,v 1.11 2001-04-04 09:02:14 sandervl Exp $ */
 
 /*
@@ -11,4 +11,5 @@
  */
 
+#include <odin.h>
 #include <memory.h>
 
Index: trunk/src/ddraw/OS2DDRAW.CPP
===================================================================
--- trunk/src/ddraw/OS2DDRAW.CPP	(revision 5471)
+++ trunk/src/ddraw/OS2DDRAW.CPP	(revision 5472)
@@ -1,3 +1,3 @@
-/* $Id: OS2DDRAW.CPP,v 1.27 2001-03-28 16:21:06 sandervl Exp $ */
+/* $Id: OS2DDRAW.CPP,v 1.28 2001-04-04 09:02:14 sandervl Exp $ */
 
 /*
@@ -13,4 +13,5 @@
  */
 
+#include <odin.h>
 #include <stdlib.h>
 #include <string.h>
Index: trunk/src/ddraw/OS2SURFACE.CPP
===================================================================
--- trunk/src/ddraw/OS2SURFACE.CPP	(revision 5471)
+++ trunk/src/ddraw/OS2SURFACE.CPP	(revision 5472)
@@ -1,3 +1,3 @@
-/* $Id: OS2SURFACE.CPP,v 1.31 2001-04-02 18:21:10 sandervl Exp $ */
+/* $Id: OS2SURFACE.CPP,v 1.32 2001-04-04 09:02:14 sandervl Exp $ */
 
 /*
@@ -11,4 +11,5 @@
  */
 
+#include <odin.h>
 #include <stdlib.h>
 #include <string.h>
Index: trunk/src/ddraw/bltFunc.cpp
===================================================================
--- trunk/src/ddraw/bltFunc.cpp	(revision 5471)
+++ trunk/src/ddraw/bltFunc.cpp	(revision 5472)
@@ -1,3 +1,3 @@
-/* $Id: bltFunc.cpp,v 1.3 2001-03-18 21:44:44 mike Exp $ */
+/* $Id: bltFunc.cpp,v 1.4 2001-04-04 09:02:14 sandervl Exp $ */
 
 /*
@@ -10,4 +10,7 @@
  */
 
+#define INCL_BASE
+#include <os2wrap.h>
+#include <win32type.h>
 #include <memory.h>
 #include <misc.h>
Index: trunk/src/ddraw/colorconv.cpp
===================================================================
--- trunk/src/ddraw/colorconv.cpp	(revision 5471)
+++ trunk/src/ddraw/colorconv.cpp	(revision 5472)
@@ -1,3 +1,3 @@
-/* $Id: colorconv.cpp,v 1.5 2001-03-18 21:44:44 mike Exp $ */
+/* $Id: colorconv.cpp,v 1.6 2001-04-04 09:02:14 sandervl Exp $ */
 
 /*
@@ -10,4 +10,7 @@
  */
 
+#define INCL_BASE
+#include <os2wrap.h>
+#include <win32type.h>
 #include <memory.h>
 #include <misc.h>
Index: trunk/src/ddraw/ddraw.CPP
===================================================================
--- trunk/src/ddraw/ddraw.CPP	(revision 5471)
+++ trunk/src/ddraw/ddraw.CPP	(revision 5472)
@@ -1,3 +1,3 @@
-/* $Id: ddraw.CPP,v 1.18 2001-03-20 23:18:55 mike Exp $ */
+/* $Id: ddraw.CPP,v 1.19 2001-04-04 09:02:15 sandervl Exp $ */
 
 /*
@@ -14,4 +14,5 @@
  */
 
+#include <odin.h>
 #include <memory.h>
 #include <stdio.h>
Index: trunk/src/ddraw/fillfunc.cpp
===================================================================
--- trunk/src/ddraw/fillfunc.cpp	(revision 5471)
+++ trunk/src/ddraw/fillfunc.cpp	(revision 5472)
@@ -1,3 +1,3 @@
-/* $Id: fillfunc.cpp,v 1.3 2001-03-18 21:44:44 mike Exp $ */
+/* $Id: fillfunc.cpp,v 1.4 2001-04-04 09:02:15 sandervl Exp $ */
 
 /*
@@ -10,4 +10,7 @@
  */
 
+#define INCL_BASE
+#include <os2wrap.h>
+#include <win32type.h>
 #include <memory.h>
 #include <misc.h>
Index: trunk/src/gdi32/metafile.cpp
===================================================================
--- trunk/src/gdi32/metafile.cpp	(revision 5471)
+++ trunk/src/gdi32/metafile.cpp	(revision 5472)
@@ -1,3 +1,3 @@
-/* $Id: metafile.cpp,v 1.4 2001-02-01 18:01:52 sandervl Exp $ */
+/* $Id: metafile.cpp,v 1.5 2001-04-04 09:02:15 sandervl Exp $ */
 
 /*
@@ -14,5 +14,6 @@
 #include <stdarg.h>
 #include <string.h>
-#include "misc.h"
+#include <misc.h>
+#include <unicode.h>
 
 #define DBG_LOCALLOG	DBG_metafile
Index: trunk/src/gdi32/objhandle.cpp
===================================================================
--- trunk/src/gdi32/objhandle.cpp	(revision 5471)
+++ trunk/src/gdi32/objhandle.cpp	(revision 5472)
@@ -1,3 +1,3 @@
-/* $Id: objhandle.cpp,v 1.12 2001-03-27 20:47:53 sandervl Exp $ */
+/* $Id: objhandle.cpp,v 1.13 2001-04-04 09:02:15 sandervl Exp $ */
 /*
  * Win32 Handle Management Code for OS/2
@@ -24,4 +24,5 @@
 #include "dibsect.h"
 #include "region.h"
+#include <unicode.h>
 
 #define DBG_LOCALLOG    DBG_objhandle
Index: trunk/src/gdi32/text.cpp
===================================================================
--- trunk/src/gdi32/text.cpp	(revision 5471)
+++ trunk/src/gdi32/text.cpp	(revision 5472)
@@ -1,3 +1,3 @@
-/* $Id: text.cpp,v 1.14 2000-11-16 16:34:49 sandervl Exp $ */
+/* $Id: text.cpp,v 1.15 2001-04-04 09:02:15 sandervl Exp $ */
 
 /*
@@ -19,4 +19,5 @@
 #include "oslibgpi.h"
 #include <dcdata.h>
+#include <unicode.h>
 
 #define DBG_LOCALLOG    DBG_text
@@ -450,6 +451,15 @@
 INT SYSTEM EXPORT InternalDrawTextExW(HDC hdc,LPCWSTR lpchText,INT cchText,LPRECT lprc,UINT dwDTFormat,LPDRAWTEXTPARAMS lpDTParams,BOOL isDrawTextEx)
 {
-  char *astring = (cchText == -1) ? UnicodeToAsciiString((LPWSTR)lpchText):UnicodeToAsciiStringN((LPWSTR)lpchText,cchText);
+  char *astring;
   INT  rc;
+
+  if(cchText == -1) {
+     UnicodeToAsciiString((LPWSTR)lpchText);
+  }
+  else {
+     astring = (char *)HEAP_malloc(cchText+1);
+     UnicodeToAscii((LPWSTR)lpchText, astring);
+     astring[cchText] = 0;
+  }
 
   dprintf(("InternalDrawTextExW %x %s %d %x", hdc, astring, cchText, dwDTFormat));
@@ -508,6 +518,15 @@
 DWORD SYSTEM EXPORT InternalGetTabbedTextExtentW(HDC hDC,LPCWSTR lpString,INT nCount,INT nTabPositions,LPINT lpnTabStopPositions)
 {
-  char *astring = (nCount == -1) ? UnicodeToAsciiString((LPWSTR)lpString):UnicodeToAsciiStringN((LPWSTR)lpString,nCount);
+  char *astring;
   DWORD rc;
+
+  if(nCount == -1) {
+     UnicodeToAsciiString((LPWSTR)lpString);
+  }
+  else {
+     astring = (char *)HEAP_malloc(nCount+1);
+     UnicodeToAscii((LPWSTR)lpString, astring);
+     astring[nCount] = 0;
+  }
 
   rc = InternalGetTabbedTextExtentA(hDC,astring,nCount,nTabPositions,lpnTabStopPositions);
@@ -587,6 +606,15 @@
 LONG SYSTEM EXPORT InternalTabbedTextOutW(HDC hdc,INT x,INT y,LPCWSTR lpString,INT nCount,INT nTabPositions,LPINT lpnTabStopPositions,INT nTabOrigin)
 {
-  char *astring = (nCount == -1) ? UnicodeToAsciiString((LPWSTR)lpString):UnicodeToAsciiStringN((LPWSTR)lpString,nCount);
+  char *astring;
   LONG rc;
+
+  if(nCount == -1) {
+     UnicodeToAsciiString((LPWSTR)lpString);
+  }
+  else {
+     astring = (char *)HEAP_malloc(nCount+1);
+     UnicodeToAscii((LPWSTR)lpString, astring);
+     astring[nCount] = 0;
+  }
 
   rc = InternalTabbedTextOutA(hdc,x,y,astring,nCount,nTabPositions,lpnTabStopPositions,nTabOrigin);
@@ -749,7 +777,15 @@
 BOOL InternalTextOutW(HDC hdc,int X,int Y,UINT fuOptions,CONST RECT *lprc,LPCWSTR lpszString,INT cbCount,CONST INT *lpDx,BOOL IsExtTextOut)
 {
-  char *astring = (cbCount == -1) ? UnicodeToAsciiString((LPWSTR)lpszString):UnicodeToAsciiStringN((LPWSTR)lpszString,cbCount);
+  char *astring;
   BOOL  rc;
 
+  if(cbCount == -1) {
+     UnicodeToAsciiString((LPWSTR)lpszString);
+  }
+  else {
+     astring = (char *)HEAP_malloc(cbCount+1);
+     UnicodeToAscii((LPWSTR)lpszString, astring);
+     astring[cbCount] = 0;
+  }
   rc = InternalTextOutA(hdc,X,Y,fuOptions,lprc,(LPCSTR)astring,cbCount,lpDx,IsExtTextOut);
   FreeAsciiString(astring);
Index: trunk/src/odincrt/initterm.cpp
===================================================================
--- trunk/src/odincrt/initterm.cpp	(revision 5471)
+++ trunk/src/odincrt/initterm.cpp	(revision 5472)
@@ -25,4 +25,5 @@
 #define  INCL_DOSMODULEMGR
 #define  INCL_DOSPROCESS
+#define  INCL_DOSERRORS
 #include <os2wrap.h>    //Odin32 OS/2 api wrappers
 #include <stdlib.h>
Index: trunk/src/ole32/ole32.h
===================================================================
--- trunk/src/ole32/ole32.h	(revision 5471)
+++ trunk/src/ole32/ole32.h	(revision 5472)
@@ -1,3 +1,3 @@
-/* $Id: ole32.h,v 1.14 2001-01-25 20:17:23 sandervl Exp $ */
+/* $Id: ole32.h,v 1.15 2001-04-04 09:02:15 sandervl Exp $ */
 /*
  *
@@ -52,4 +52,5 @@
 
 #include "debugtools.h"
+#include <unicode.h>
 
 #endif
Index: trunk/src/oleaut32/oleaut32.h
===================================================================
--- trunk/src/oleaut32/oleaut32.h	(revision 5471)
+++ trunk/src/oleaut32/oleaut32.h	(revision 5472)
@@ -1,3 +1,3 @@
-/* $Id: oleaut32.h,v 1.9 2000-12-24 14:39:54 sandervl Exp $ */
+/* $Id: oleaut32.h,v 1.10 2001-04-04 09:02:15 sandervl Exp $ */
 /*
  * Win32 OLE stubs for OS/2
@@ -51,4 +51,5 @@
 #include <heapstring.h>
 #include <misc.h>
+#include <unicode.h>
 
 extern int 	loadNr;
Index: trunk/src/rpcrt4/rpcrt4.h
===================================================================
--- trunk/src/rpcrt4/rpcrt4.h	(revision 5471)
+++ trunk/src/rpcrt4/rpcrt4.h	(revision 5472)
@@ -1,3 +1,3 @@
-/* $Id: rpcrt4.h,v 1.1 2000-04-02 22:02:56 davidr Exp $ */
+/* $Id: rpcrt4.h,v 1.2 2001-04-04 09:02:15 sandervl Exp $ */
 /* Definitions for the OLE RPCRT4
  *
@@ -37,6 +37,7 @@
 #include "wine/obj_cache.h"
 
-
 #include <rpcdce.h>
 
+#include <unicode.h>
+
 #endif /* __ODIN_RPCRT4_H */
Index: trunk/src/shell32/misc.cpp
===================================================================
--- trunk/src/shell32/misc.cpp	(revision 5471)
+++ trunk/src/shell32/misc.cpp	(revision 5472)
@@ -1,3 +1,3 @@
-/* $Id: misc.cpp,v 1.10 2000-08-30 13:50:53 sandervl Exp $ */
+/* $Id: misc.cpp,v 1.11 2001-04-04 09:02:15 sandervl Exp $ */
 
 /*
@@ -30,4 +30,5 @@
 #include "wine/undocshell.h"
 #include <misc.h>
+#include <unicode.h>
 //#include <string.h>
 //#include "winbase.h"
Index: trunk/src/shell32/unknown.cpp
===================================================================
--- trunk/src/shell32/unknown.cpp	(revision 5471)
+++ trunk/src/shell32/unknown.cpp	(revision 5472)
@@ -1,3 +1,3 @@
-/* $Id: unknown.cpp,v 1.9 2000-08-02 17:53:34 bird Exp $ */
+/* $Id: unknown.cpp,v 1.10 2001-04-04 09:02:15 sandervl Exp $ */
 
 /*
@@ -16,4 +16,6 @@
 #include <shellapi.h>
 #include <winreg.h>
+#include <unicode.h>
+
 //#include "shell32.h"
 
Index: trunk/src/shlwapi/shlwapi.cpp
===================================================================
--- trunk/src/shlwapi/shlwapi.cpp	(revision 5471)
+++ trunk/src/shlwapi/shlwapi.cpp	(revision 5472)
@@ -1,3 +1,3 @@
-/* $Id: shlwapi.cpp,v 1.9 2000-10-02 13:37:10 sandervl Exp $ */
+/* $Id: shlwapi.cpp,v 1.10 2001-04-04 09:05:50 sandervl Exp $ */
 
 /*
@@ -40,4 +40,5 @@
 #include <heapstring.h>
 #include <misc.h>
+#include <unicode.h>
 #include <win\shell.h>
 #include <win\winerror.h>
Index: trunk/src/user32/clipboard.cpp
===================================================================
--- trunk/src/user32/clipboard.cpp	(revision 5471)
+++ trunk/src/user32/clipboard.cpp	(revision 5472)
@@ -1,3 +1,3 @@
-/* $Id: clipboard.cpp,v 1.9 2000-11-15 20:30:45 sandervl Exp $ */
+/* $Id: clipboard.cpp,v 1.10 2001-04-04 09:01:24 sandervl Exp $ */
 
 /*
@@ -17,4 +17,5 @@
 #include <os2win.h>
 #include "win32wbase.h"
+#include <unicode.h>
 
 #define DBG_LOCALLOG    DBG_clipboard
Index: trunk/src/user32/dde.cpp
===================================================================
--- trunk/src/user32/dde.cpp	(revision 5471)
+++ trunk/src/user32/dde.cpp	(revision 5472)
@@ -1,3 +1,3 @@
-/* $Id: dde.cpp,v 1.11 2001-03-28 16:20:32 sandervl Exp $ */
+/* $Id: dde.cpp,v 1.12 2001-04-04 09:01:24 sandervl Exp $ */
 
 /*
@@ -12,4 +12,6 @@
 #include <os2win.h>
 #include <misc.h>
+#include <unicode.h>
+
 #define DBG_LOCALLOG	DBG_dde
 #include "dbglocal.h"
Index: trunk/src/user32/user32.h
===================================================================
--- trunk/src/user32/user32.h	(revision 5471)
+++ trunk/src/user32/user32.h	(revision 5472)
@@ -1,3 +1,3 @@
-/* $Id: user32.h,v 1.8 2000-01-18 20:08:16 sandervl Exp $ */
+/* $Id: user32.h,v 1.9 2001-04-04 09:01:25 sandervl Exp $ */
 
 /*****************************************************************************
@@ -14,4 +14,5 @@
 #include <stdlib.h>
 #include <string.h>
+#include <unicode.h>
 
 inline void ConvertFontAW(LOGFONTA *fa, LOGFONTW *fw)
Index: trunk/src/user32/win32class.cpp
===================================================================
--- trunk/src/user32/win32class.cpp	(revision 5471)
+++ trunk/src/user32/win32class.cpp	(revision 5472)
@@ -1,3 +1,3 @@
-/* $Id: win32class.cpp,v 1.23 2001-02-22 10:37:30 sandervl Exp $ */
+/* $Id: win32class.cpp,v 1.24 2001-04-04 09:01:25 sandervl Exp $ */
 /*
  * Win32 Window Class Managment Code for OS/2
@@ -24,4 +24,5 @@
 #include <win32wnd.h>
 #include <win\winproc.h>
+#include <unicode.h>
 
 #define DBG_LOCALLOG    DBG_win32class
Index: trunk/src/user32/windowclass.cpp
===================================================================
--- trunk/src/user32/windowclass.cpp	(revision 5471)
+++ trunk/src/user32/windowclass.cpp	(revision 5472)
@@ -1,3 +1,3 @@
-/* $Id: windowclass.cpp,v 1.19 2001-04-01 22:13:28 sandervl Exp $ */
+/* $Id: windowclass.cpp,v 1.20 2001-04-04 09:01:25 sandervl Exp $ */
 /*
  * Win32 Window Class Code for OS/2
@@ -17,4 +17,5 @@
 #include <assert.h>
 #include <misc.h>
+#include <unicode.h>
 #include <win32class.h>
 #include <win32wbase.h>
Index: trunk/src/version/info.c
===================================================================
--- trunk/src/version/info.c	(revision 5471)
+++ trunk/src/version/info.c	(revision 5472)
@@ -1,3 +1,3 @@
-/* $Id: info.c,v 1.2 2000-01-08 14:27:33 sandervl Exp $ */
+/* $Id: info.c,v 1.3 2001-04-04 09:02:15 sandervl Exp $ */
 /* 
  * Implementation of VERSION.DLL - Version Info access (Wine 991212)
@@ -19,4 +19,5 @@
 #include "debugtools.h"
 #include <misc.h>
+#include <unicode.h>
 
 DEFAULT_DEBUG_CHANNEL(ver)
Index: trunk/src/version/version.cpp
===================================================================
--- trunk/src/version/version.cpp	(revision 5471)
+++ trunk/src/version/version.cpp	(revision 5472)
@@ -1,3 +1,3 @@
-/* $Id: version.cpp,v 1.10 2000-08-11 10:56:26 sandervl Exp $ */
+/* $Id: version.cpp,v 1.11 2001-04-04 09:02:16 sandervl Exp $ */
 
 /*
@@ -23,4 +23,5 @@
 #include <version.h>
 #include <versionos2.h>
+#include <unicode.h>
 
 ODINDEBUGCHANNEL(VERSION)
Index: trunk/src/winmm/joy.cpp
===================================================================
--- trunk/src/winmm/joy.cpp	(revision 5471)
+++ trunk/src/winmm/joy.cpp	(revision 5472)
@@ -1,3 +1,3 @@
-/* $Id: joy.cpp,v 1.8 2000-08-02 17:30:05 bird Exp $ */
+/* $Id: joy.cpp,v 1.9 2001-04-04 09:02:16 sandervl Exp $ */
 /*
  * Odin Joystick apis
@@ -145,5 +145,5 @@
       lpCaps->wMid = MM_MICROSOFT;
       lpCaps->wPid = MM_PC_JOYSTICK;
-      AsciiToUnicode("OS/2 Joystick", lpCaps->szPname);
+      lstrcpyW(lpCaps->szPname, (LPWSTR)L"OS/2 Joystick");
       lpCaps->wXmin = 0;
       lpCaps->wXmax = 0xffff;
@@ -166,6 +166,6 @@
       lpCaps->wNumAxes = 2;
       lpCaps->wMaxButtons = 2;
-      AsciiToUnicode("",lpCaps->szRegKey);
-      AsciiToUnicode("",lpCaps->szOEMVxD);
+      lpCaps->szRegKey[0] = 0;
+      lpCaps->szOEMVxD[0] = 0;
       dprintf(("OK!!!\n"));
       return JOYERR_NOERROR;
Index: trunk/src/winmm/mci.cpp
===================================================================
--- trunk/src/winmm/mci.cpp	(revision 5471)
+++ trunk/src/winmm/mci.cpp	(revision 5472)
@@ -1,3 +1,3 @@
-/* $Id: mci.cpp,v 1.6 2000-12-03 22:18:17 sandervl Exp $ */
+/* $Id: mci.cpp,v 1.7 2001-04-04 09:02:16 sandervl Exp $ */
 
 /*
@@ -357,17 +357,4 @@
 #define SET_EIP(ptr) /* nothing */
 #endif  /* __GNUC__ */
-
-/***********************************************************************
- *           HEAP_strdupA
- */
-static LPSTR HEAP_strdupA( HANDLE heap, DWORD flags, LPCSTR str )
-{
-    LPSTR p = (LPSTR) HeapAlloc( heap, flags, strlen(str) + 1 );
-    if(p) {
-      //SET_EIP(p);
-      strcpy( p, str );
-    }
-    return p;
-}
 
 
Index: trunk/src/winmm/waveoutdart.cpp
===================================================================
--- trunk/src/winmm/waveoutdart.cpp	(revision 5471)
+++ trunk/src/winmm/waveoutdart.cpp	(revision 5472)
@@ -1,3 +1,3 @@
-/* $Id: waveoutdart.cpp,v 1.2 2001-04-01 12:31:01 sandervl Exp $ */
+/* $Id: waveoutdart.cpp,v 1.3 2001-04-04 09:02:16 sandervl Exp $ */
 
 /*
@@ -23,7 +23,9 @@
 #define  INCL_BASE
 #define  INCL_OS2MM
+#define  INCL_DOSPROCESS
 #include <os2wrap.h>   //Odin32 OS/2 api wrappers
 #include <os2mewrap.h> //Odin32 OS/2 MMPM/2 api wrappers
 #include <stdlib.h>
+#include <stddef.h>
 #include <string.h>
 #define  OS2_ONLY
Index: trunk/src/winspool/winspool.cpp
===================================================================
--- trunk/src/winspool/winspool.cpp	(revision 5471)
+++ trunk/src/winspool/winspool.cpp	(revision 5472)
@@ -1,3 +1,3 @@
-/* $Id: winspool.cpp,v 1.5 2000-11-15 10:54:24 sandervl Exp $ */
+/* $Id: winspool.cpp,v 1.6 2001-04-04 09:02:16 sandervl Exp $ */
 
 /*
@@ -34,4 +34,5 @@
 #include <stdio.h>
 #include <stdlib.h>
+#include <stddef.h>
 #include <string.h>
 #include <misc.h>
Index: trunk/src/wnetap32/wnetap32.cpp
===================================================================
--- trunk/src/wnetap32/wnetap32.cpp	(revision 5471)
+++ trunk/src/wnetap32/wnetap32.cpp	(revision 5472)
@@ -1,3 +1,3 @@
-/* $Id: wnetap32.cpp,v 1.13 2000-12-12 02:43:26 phaller Exp $ */
+/* $Id: wnetap32.cpp,v 1.14 2001-04-04 09:02:16 sandervl Exp $ */
 
 /*
@@ -33,4 +33,5 @@
 #include <os2win.h>
 #include <misc.h>
+#include <unicode.h>
 #include <heapstring.h>
 #include <string.h>
