Index: /trunk/src/gmake/kmkbuiltin/strmode.c
===================================================================
--- /trunk/src/gmake/kmkbuiltin/strmode.c	(revision 617)
+++ /trunk/src/gmake/kmkbuiltin/strmode.c	(revision 618)
@@ -30,5 +30,5 @@
  */
 
-#include <sys/cdefs.h>
+/*#include <sys/cdefs.h>*/
 #if defined(LIBC_SCCS) && !defined(lint)
 #if 0
@@ -39,10 +39,18 @@
 #endif /* LIBC_SCCS and not lint */
 
-#include "namespace.h"
+/*#include "namespace.h"*/
 #include <sys/types.h>
 #include <sys/stat.h>
 
 #include <assert.h>
+#ifndef _MSC_VER
 #include <unistd.h>
+#else
+#include "mscfakes.h"
+#endif 
+
+#ifndef _DIAGASSERT
+#define _DIAGASSERT assert
+#endif 
 
 void
@@ -62,7 +70,9 @@
 		*p++ = 'c';
 		break;
+#ifdef S_IFBLK
 	case S_IFBLK:			/* block special */
 		*p++ = 'b';
 		break;
+#endif 
 	case S_IFREG:			/* regular */
 #ifdef S_ARCH2
@@ -78,7 +88,9 @@
 #endif
 		break;
+#ifdef S_IFLNK
 	case S_IFLNK:			/* symbolic link */
 		*p++ = 'l';
 		break;
+#endif
 #ifdef S_IFSOCK
 	case S_IFSOCK:			/* socket */
@@ -160,5 +172,9 @@
 	else
 		*p++ = '-';
+#ifdef S_ISVTX
 	switch (mode & (S_IXOTH | S_ISVTX)) {
+#else
+	switch (mode & (S_IXOTH)) {
+#endif 
 	case 0:
 		*p++ = '-';
@@ -167,4 +183,5 @@
 		*p++ = 'x';
 		break;
+#ifdef S_ISVTX
 	case S_ISVTX:
 		*p++ = 'T';
@@ -173,4 +190,5 @@
 		*p++ = 't';
 		break;
+#endif
 	}
 	*p++ = ' ';		/* will be a '+' if ACL's implemented */
