Implemented old Win 2.x string functions.
diff --git a/dlls/kernel/kernel_main.c b/dlls/kernel/kernel_main.c
index caa214f..09d3aaf 100644
--- a/dlls/kernel/kernel_main.c
+++ b/dlls/kernel/kernel_main.c
@@ -3,6 +3,7 @@
*/
#include <assert.h>
+#include <ctype.h>
#include "winbase.h"
#include "wine/winbase16.h"
@@ -111,3 +112,50 @@
* Entry point for kernel functions that do nothing.
*/
LONG WINAPI KERNEL_nop(void) { return 0; }
+
+
+/***************************************************************************
+ *
+ * Win 2.x string functions now moved to USER
+ *
+ * We rather want to implement them here instead of doing Callouts
+ */
+SEGPTR WINAPI KERNEL_AnsiNext16(SEGPTR current)
+{
+ return (*(char *)PTR_SEG_TO_LIN(current)) ? current + 1 : current;
+}
+
+SEGPTR WINAPI KERNEL_AnsiPrev16( SEGPTR start, SEGPTR current )
+{
+ return (current==start)?start:current-1;
+}
+
+SEGPTR WINAPI KERNEL_AnsiUpper16( SEGPTR strOrChar )
+{
+ /* uppercase only one char if strOrChar < 0x10000 */
+ if (HIWORD(strOrChar))
+ {
+ char *s = PTR_SEG_TO_LIN(strOrChar);
+ while (*s) {
+ *s = toupper(*s);
+ s++;
+ }
+ return strOrChar;
+ }
+ else return toupper((char)strOrChar);
+}
+
+SEGPTR WINAPI KERNEL_AnsiLower16( SEGPTR strOrChar )
+{
+ /* lowercase only one char if strOrChar < 0x10000 */
+ if (HIWORD(strOrChar))
+ {
+ char *s = PTR_SEG_TO_LIN(strOrChar);
+ while (*s) {
+ *s = tolower(*s);
+ s++;
+ }
+ return strOrChar;
+ }
+ else return tolower((char)strOrChar);
+}