Moved most kernel string functions to dlls/kernel.
diff --git a/dlls/kernel/string.c b/dlls/kernel/string.c
index a7791ac..f2fe97e 100644
--- a/dlls/kernel/string.c
+++ b/dlls/kernel/string.c
@@ -1,6 +1,8 @@
/*
* Kernel string functions
*
+ * Copyright 1993 Yngvi Sigurjonsson
+ * Copyright 1996 Alexandre Julliard
* Copyright 2001 Dmitry Timoshkov for CodeWeavers
*
* This library is free software; you can redistribute it and/or
@@ -24,12 +26,24 @@
#include "windef.h"
#include "winbase.h"
+#include "excpt.h"
#include "wine/winbase16.h"
+#include "wine/unicode.h"
+#include "wine/exception.h"
static INT (WINAPI *pLoadStringA)(HINSTANCE, UINT, LPSTR, INT);
static INT (WINAPI *pwvsprintfA)(LPSTR, LPCSTR, va_list);
+/* filter for page-fault exceptions */
+static WINE_EXCEPTION_FILTER(page_fault)
+{
+ if (GetExceptionCode() == EXCEPTION_ACCESS_VIOLATION)
+ return EXCEPTION_EXECUTE_HANDLER;
+ return EXCEPTION_CONTINUE_SEARCH;
+}
+
+
/***********************************************************************
* Helper for k32 family functions
*/
@@ -131,6 +145,200 @@
}
+/***********************************************************************
+ * hmemcpy (KERNEL.348)
+ */
+void WINAPI hmemcpy16( LPVOID dst, LPCVOID src, LONG count )
+{
+ memcpy( dst, src, count );
+}
+
+
+/***********************************************************************
+ * lstrcat (KERNEL.89)
+ */
+SEGPTR WINAPI lstrcat16( SEGPTR dst, LPCSTR src )
+{
+ /* Windows does not check for NULL pointers here, so we don't either */
+ strcat( MapSL(dst), src );
+ return dst;
+}
+
+
+/***********************************************************************
+ * lstrcat (KERNEL32.@)
+ * lstrcatA (KERNEL32.@)
+ */
+LPSTR WINAPI lstrcatA( LPSTR dst, LPCSTR src )
+{
+ __TRY
+ {
+ strcat( dst, src );
+ }
+ __EXCEPT(page_fault)
+ {
+ SetLastError( ERROR_INVALID_PARAMETER );
+ return NULL;
+ }
+ __ENDTRY
+ return dst;
+}
+
+
+/***********************************************************************
+ * lstrcatW (KERNEL32.@)
+ */
+LPWSTR WINAPI lstrcatW( LPWSTR dst, LPCWSTR src )
+{
+ __TRY
+ {
+ strcatW( dst, src );
+ }
+ __EXCEPT(page_fault)
+ {
+ SetLastError( ERROR_INVALID_PARAMETER );
+ return NULL;
+ }
+ __ENDTRY
+ return dst;
+}
+
+
+/***********************************************************************
+ * lstrcatn (KERNEL.352)
+ */
+SEGPTR WINAPI lstrcatn16( SEGPTR dst, LPCSTR src, INT16 n )
+{
+ LPSTR p = MapSL(dst);
+ LPSTR start = p;
+
+ while (*p) p++;
+ if ((n -= (p - start)) <= 0) return dst;
+ lstrcpynA( p, src, n );
+ return dst;
+}
+
+
+/***********************************************************************
+ * lstrcpy (KERNEL.88)
+ */
+SEGPTR WINAPI lstrcpy16( SEGPTR dst, LPCSTR src )
+{
+ if (!lstrcpyA( MapSL(dst), src )) dst = 0;
+ return dst;
+}
+
+
+/***********************************************************************
+ * lstrcpy (KERNEL32.@)
+ * lstrcpyA (KERNEL32.@)
+ */
+LPSTR WINAPI lstrcpyA( LPSTR dst, LPCSTR src )
+{
+ __TRY
+ {
+ /* this is how Windows does it */
+ memmove( dst, src, strlen(src)+1 );
+ }
+ __EXCEPT(page_fault)
+ {
+ SetLastError( ERROR_INVALID_PARAMETER );
+ return NULL;
+ }
+ __ENDTRY
+ return dst;
+}
+
+
+/***********************************************************************
+ * lstrcpyW (KERNEL32.@)
+ */
+LPWSTR WINAPI lstrcpyW( LPWSTR dst, LPCWSTR src )
+{
+ __TRY
+ {
+ strcpyW( dst, src );
+ }
+ __EXCEPT(page_fault)
+ {
+ SetLastError( ERROR_INVALID_PARAMETER );
+ return NULL;
+ }
+ __ENDTRY
+ return dst;
+}
+
+
+/***********************************************************************
+ * lstrcpyn (KERNEL.353)
+ */
+SEGPTR WINAPI lstrcpyn16( SEGPTR dst, LPCSTR src, INT16 n )
+{
+ lstrcpynA( MapSL(dst), src, n );
+ return dst;
+}
+
+
+/***********************************************************************
+ * lstrlen (KERNEL.90)
+ */
+INT16 WINAPI lstrlen16( LPCSTR str )
+{
+ return (INT16)lstrlenA( str );
+}
+
+
+/***********************************************************************
+ * lstrlen (KERNEL32.@)
+ * lstrlenA (KERNEL32.@)
+ */
+INT WINAPI lstrlenA( LPCSTR str )
+{
+ INT ret;
+ __TRY
+ {
+ ret = strlen(str);
+ }
+ __EXCEPT(page_fault)
+ {
+ SetLastError( ERROR_INVALID_PARAMETER );
+ return 0;
+ }
+ __ENDTRY
+ return ret;
+}
+
+
+/***********************************************************************
+ * lstrlenW (KERNEL32.@)
+ */
+INT WINAPI lstrlenW( LPCWSTR str )
+{
+ INT ret;
+ __TRY
+ {
+ ret = strlenW(str);
+ }
+ __EXCEPT(page_fault)
+ {
+ SetLastError( ERROR_INVALID_PARAMETER );
+ return 0;
+ }
+ __ENDTRY
+ return ret;
+}
+
+
+/***********************************************************************
+ * UnicodeToAnsi (KERNEL.434)
+ */
+INT16 WINAPI UnicodeToAnsi16( LPCWSTR src, LPSTR dst, INT16 codepage )
+{
+ if ( codepage == -1 ) codepage = CP_ACP;
+ return WideCharToMultiByte( codepage, 0, src, -1, dst, 0x7fffffff, NULL, NULL );
+}
+
+
/***************************************************************************
*
* Win 2.x string functions now moved to USER
diff --git a/dlls/ntdll/path.c b/dlls/ntdll/path.c
index 3a98581..2b92180 100644
--- a/dlls/ntdll/path.c
+++ b/dlls/ntdll/path.c
@@ -231,7 +231,7 @@
ntpath->Length = strlenW(ntpath->Buffer) * sizeof(WCHAR);
if (file_part && *file_part)
- *file_part = ntpath->Buffer + ntpath->Length / sizeof(WCHAR) - lstrlenW(*file_part);
+ *file_part = ntpath->Buffer + ntpath->Length / sizeof(WCHAR) - strlenW(*file_part);
/* FIXME: cd filling */
diff --git a/files/dos_fs.c b/files/dos_fs.c
index d7788df..df91ec5 100644
--- a/files/dos_fs.c
+++ b/files/dos_fs.c
@@ -2415,7 +2415,7 @@
for(i=0; (i< (sizeof(devices)/sizeof(devices[0]))); i++) {
DWORD len = strlenW(devices[i]);
if(target && (bufsize >= ret + len + 2)) {
- lstrcpyW(target+ret, devices[i]);
+ strcpyW(target+ret, devices[i]);
ret += len + 1;
} else {
/* in this case WinXP returns 0 */
@@ -2474,9 +2474,9 @@
ret = strlenW(pDev) + strlenW(pName) + numsiz + 2;
if (ret > bufsize) ret = 0;
if (target && ret) {
- lstrcpyW(target,pDev);
- lstrcatW(target,pName);
- if (pNum) lstrcatW(target,pNum);
+ strcpyW(target,pDev);
+ strcatW(target,pName);
+ if (pNum) strcatW(target,pNum);
target[ret-1] = 0;
}
return ret;
diff --git a/memory/string.c b/memory/string.c
index 57df2e8..7102e60 100644
--- a/memory/string.c
+++ b/memory/string.c
@@ -36,150 +36,6 @@
WINE_DEFAULT_DEBUG_CHANNEL(string);
-/* filter for page-fault exceptions */
-static WINE_EXCEPTION_FILTER(page_fault)
-{
- if (GetExceptionCode() == EXCEPTION_ACCESS_VIOLATION)
- return EXCEPTION_EXECUTE_HANDLER;
- return EXCEPTION_CONTINUE_SEARCH;
-}
-
-
-/***********************************************************************
- * hmemcpy (KERNEL.348)
- */
-void WINAPI hmemcpy16( LPVOID dst, LPCVOID src, LONG count )
-{
- memcpy( dst, src, count );
-}
-
-
-/***********************************************************************
- * lstrcat (KERNEL.89)
- */
-SEGPTR WINAPI lstrcat16( SEGPTR dst, LPCSTR src )
-{
- /* Windows does not check for NULL pointers here, so we don't either */
- strcat( MapSL(dst), src );
- return dst;
-}
-
-
-/***********************************************************************
- * lstrcat (KERNEL32.@)
- * lstrcatA (KERNEL32.@)
- */
-LPSTR WINAPI lstrcatA( LPSTR dst, LPCSTR src )
-{
- __TRY
- {
- strcat( dst, src );
- }
- __EXCEPT(page_fault)
- {
- SetLastError( ERROR_INVALID_PARAMETER );
- return NULL;
- }
- __ENDTRY
- return dst;
-}
-
-
-/***********************************************************************
- * lstrcatW (KERNEL32.@)
- */
-LPWSTR WINAPI lstrcatW( LPWSTR dst, LPCWSTR src )
-{
- __TRY
- {
- strcatW( dst, src );
- }
- __EXCEPT(page_fault)
- {
- SetLastError( ERROR_INVALID_PARAMETER );
- return NULL;
- }
- __ENDTRY
- return dst;
-}
-
-
-/***********************************************************************
- * lstrcatn (KERNEL.352)
- */
-SEGPTR WINAPI lstrcatn16( SEGPTR dst, LPCSTR src, INT16 n )
-{
- LPSTR p = MapSL(dst);
- LPSTR start = p;
-
- while (*p) p++;
- if ((n -= (p - start)) <= 0) return dst;
- lstrcpynA( p, src, n );
- return dst;
-}
-
-
-/***********************************************************************
- * lstrcpy (KERNEL.88)
- */
-SEGPTR WINAPI lstrcpy16( SEGPTR dst, LPCSTR src )
-{
- if (!lstrcpyA( MapSL(dst), src )) dst = 0;
- return dst;
-}
-
-
-/***********************************************************************
- * lstrcpy (KERNEL32.@)
- * lstrcpyA (KERNEL32.@)
- */
-LPSTR WINAPI lstrcpyA( LPSTR dst, LPCSTR src )
-{
- __TRY
- {
- /* this is how Windows does it */
- memmove( dst, src, strlen(src)+1 );
- }
- __EXCEPT(page_fault)
- {
- ERR("(%p, %p): page fault occurred ! Caused by bug ?\n", dst, src);
- SetLastError( ERROR_INVALID_PARAMETER );
- return NULL;
- }
- __ENDTRY
- return dst;
-}
-
-
-/***********************************************************************
- * lstrcpyW (KERNEL32.@)
- */
-LPWSTR WINAPI lstrcpyW( LPWSTR dst, LPCWSTR src )
-{
- __TRY
- {
- strcpyW( dst, src );
- }
- __EXCEPT(page_fault)
- {
- SetLastError( ERROR_INVALID_PARAMETER );
- return NULL;
- }
- __ENDTRY
- return dst;
-}
-
-
-/***********************************************************************
- * lstrcpyn (KERNEL.353)
- */
-SEGPTR WINAPI lstrcpyn16( SEGPTR dst, LPCSTR src, INT16 n )
-{
- lstrcpynA( MapSL(dst), src, n );
- return dst;
-}
-
-
/***********************************************************************
* lstrcpyn (KERNEL32.@)
* lstrcpynA (KERNEL32.@)
@@ -247,65 +103,3 @@
if (count) *p = 0;
return dst;
}
-
-
-/***********************************************************************
- * lstrlen (KERNEL.90)
- */
-INT16 WINAPI lstrlen16( LPCSTR str )
-{
- return (INT16)lstrlenA( str );
-}
-
-
-/***********************************************************************
- * lstrlen (KERNEL32.@)
- * lstrlenA (KERNEL32.@)
- */
-INT WINAPI lstrlenA( LPCSTR str )
-{
- INT ret;
- __TRY
- {
- ret = strlen(str);
- }
- __EXCEPT(page_fault)
- {
- SetLastError( ERROR_INVALID_PARAMETER );
- return 0;
- }
- __ENDTRY
- return ret;
-}
-
-
-/***********************************************************************
- * lstrlenW (KERNEL32.@)
- */
-INT WINAPI lstrlenW( LPCWSTR str )
-{
- INT ret;
- __TRY
- {
- ret = strlenW(str);
- }
- __EXCEPT(page_fault)
- {
- SetLastError( ERROR_INVALID_PARAMETER );
- return 0;
- }
- __ENDTRY
- return ret;
-}
-
-
-/***********************************************************************
- * UnicodeToAnsi (KERNEL.434)
- */
-INT16 WINAPI UnicodeToAnsi16( LPCWSTR src, LPSTR dst, INT16 codepage )
-{
- if ( codepage == -1 )
- codepage = CP_ACP;
-
- return WideCharToMultiByte( codepage, 0, src, -1, dst, 0x7fffffff, NULL, NULL );
-}