Index: trunk/src/NTDLL/crt.cpp
===================================================================
--- trunk/src/NTDLL/crt.cpp	(revision 1442)
+++ trunk/src/NTDLL/crt.cpp	(revision 1443)
@@ -1,3 +1,3 @@
-/* $Id: crt.cpp,v 1.9 1999-09-13 19:45:33 phaller Exp $ */
+/* $Id: crt.cpp,v 1.10 1999-10-25 19:24:13 phaller Exp $ */
 
 /*
@@ -1314,9 +1314,9 @@
  *****************************************************************************/
 
-LONG CDECL NTDLL__CIpow(void)
-{
-  dprintf(("NTDLL: _CIpow not implemented.\n"));
-
-  return 0;
+LONG CDECL NTDLL__CIpow(double x, double y)
+{
+  dprintf(("NTDLL: _CIpow\n"));
+  dprintf(("should be register function\n"));
+  return pow(x, y);
 }
 
@@ -1380,6 +1380,6 @@
 	LPCSTR s1,	/* [in] first string */
 	LPCSTR s2,	/* [in] second string */
-	DWORD len	/* [in] length to compare */ ) 
-{ 
+	DWORD len	/* [in] length to compare */ )
+{
 	dprintf(("NTDLL: memicmp(%08xh, %08xh, %08xh)\n",s1,s2,len));
 	int	i;
@@ -1453,13 +1453,42 @@
  *****************************************************************************/
 
-void CDECL NTDLL__splitpath( const char *path, char *drive,
-	    		     char *dir, char *fname, char *ext )
-{
-  dprintf(("NTDLL: _splitpath(%08xh, %08xh, %08xh, %08xh, %08xh) not implemented\n",
-           path,
-           drive,
-           dir,
-           fname,
-           ext));
+void CDECL NTDLL__splitpath( const char *path, char *drive, char *dir, char *fname, char *ext )
+{
+	dprintf(("NTDLL: _splitpath"));
+
+	char *tmp_drive;
+	char *tmp_dir;
+	char *tmp_ext;
+
+	tmp_drive = (char *)strchr(path,':');
+	if ( tmp_drive != (char *)NULL ) {
+		strncpy(drive,tmp_drive-1,1);
+		*(drive+1) = 0;
+	}
+	else {
+		*drive = 0;
+		tmp_drive = (char *)path;
+	}
+
+	tmp_dir = (char *)strrchr(path,'\\');
+	if( tmp_dir != NULL && tmp_dir != tmp_drive + 1 ) {
+		strncpy(dir,tmp_drive+1,tmp_dir - tmp_drive);
+		*(dir + (tmp_dir - tmp_drive)) = 0;
+	}
+	else 	
+		*dir =0;
+
+	tmp_ext = ( char *)strrchr(path,'.');
+	if ( tmp_ext != NULL ) {
+		strcpy(ext,tmp_ext);
+	}
+	else
+		*ext = 0;
+    if ( tmp_dir != NULL ) {
+		strncpy(fname,tmp_dir+1,tmp_ext - tmp_dir - 1);
+		*(fname + (tmp_ext - tmp_dir -1)) = 0;
+	}
+	else
+		strncpy(fname,path,tmp_ext - path);
 
 }
@@ -1503,5 +1532,5 @@
 {
   char *y =x;
-  
+
   dprintf(("NTDLL: _strlwr got %s\n", x));
   while (*y) {
@@ -1511,5 +1540,5 @@
   }
   dprintf(("   returned %s\n", x));
-		 
+		
   return x;
 }
@@ -1530,10 +1559,23 @@
 int  CDECL NTDLL__strnicmp( LPCSTR s1, LPCSTR s2, INT n )
 {
-  dprintf(("NTDLL: _strnicmp(%08xh, %08xh, %08xh) not implemented\n",
+  dprintf(("NTDLL: _strnicmp (%s,%s,%d)\n",
            s1,
            s2,
            n));
 
+  // @@@PH: sure it's not a UNICODE API?
+  return (lstrncmpiA(s1,s2,n));
+
+/*
+  if (n == 0)
+    return 0;
+  do {
+    if (toupper(*s1) != toupper(*s2++))
+      return toupper(*(unsigned const char *)s1) - toupper(*(unsigned const char *)--s2);
+    if (*s1++ == 0)
+      break;
+  } while (--n != 0);
   return 0;
+*/
 }
 
@@ -1553,12 +1595,13 @@
 LPSTR CDECL NTDLL__strupr(LPSTR x)
 {
-  dprintf(("NTDLL: _strupr(%08xh)\n",
+  dprintf(("NTDLL: _strupr(%s)\n",
            x));
 
-  LPSTR	y=x;
-
-  while (*y) {
-	*y=toupper(*y);
-	y++;
+  LPSTR y=x;
+
+  while (*y)
+  {
+    *y=toupper(*y);
+    y++;
   }
   return x;
@@ -1839,5 +1882,5 @@
 			int (*compar)( const void *s1, const void *s2 ))
 {
-    dprintf(("NTDLL: qsort(%08xh, %08xh, %08xh, %08xh)\n",
+    dprintf(("NTDLL: qsort(%08xh, %08xh, %08xh, %08xh) not implemented.\n",
 		base, nmemb, size, compar));
 }
Index: trunk/src/NTDLL/ntdll.def
===================================================================
--- trunk/src/NTDLL/ntdll.def	(revision 1442)
+++ trunk/src/NTDLL/ntdll.def	(revision 1443)
@@ -1,3 +1,3 @@
-; $Id: ntdll.def,v 1.18 1999-09-13 19:45:34 phaller Exp $
+; $Id: ntdll.def,v 1.19 1999-10-25 19:24:13 phaller Exp $
 
 ;Created by BLAST for IBM's compiler
@@ -8,5 +8,5 @@
 IMPORTS
     fwd_RtlUnwind                    =  KERNEL32.RtlUnwind
-    fwd_memmove                      =  KERNEL32.memmove	     
+    fwd_memmove                      =  KERNEL32.memmove	
     fwd_RtlFillMemory                =  KERNEL32.RtlFillMemory
     fwd_RtlMoveMemory                =  KERNEL32.RtlMoveMemory
@@ -16,7 +16,12 @@
     fwd_RtlEnterCriticalSection      =  KERNEL32.EnterCriticalSection
     fwd_RtlDeleteCriticalSection     =  KERNEL32.DeleteCriticalSection
+
     _lstrncmpW@12                    =  KERNEL32.lstrncmpW
+    _lstrncmpiA@12                   =  KERNEL32.lstrncmpiA
+    _lstrncmpiW@12                   =  KERNEL32.lstrncmpiW
     HEAP_strdupW                     =  KERNEL32.HEAP_strdupW
     HEAP_strdupWtoA                  =  KERNEL32.HEAP_strdupWtoA
+
+
 
 EXPORTS
