[OpenAFS-devel] Getting Windows Build to work

James Peterson james@abrakus.com
Thu, 10 Apr 2003 12:44:58 -0700


This is a multi-part message in MIME format.

------=_NextPart_000_0006_01C2FF5E.FE9BD770
Content-Type: text/plain;
	charset="us-ascii"
Content-Transfer-Encoding: 7bit

Here are the necessary changes to get Windows to build.

I do not know if the current level of changes, made from the Unix side, have
done damage to the Windows version.

James Peterson
"Integrity is the Base of Excellence"

------=_NextPart_000_0006_01C2FF5E.FE9BD770
Content-Type: text/plain;
	name="openafs-snap-2003-04-08-rc1.txt"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment;
	filename="openafs-snap-2003-04-08-rc1.txt"

diff -NurEB --exclude-from=3Dexclude bas/src/NTMakefile =
upd/src/NTMakefile
--- bas/src/NTMakefile	2003-04-10 12:16:06.000000000 -0700
+++ upd/src/NTMakefile	2003-04-08 16:20:12.000000000 -0700
@@ -34,8 +34,8 @@
 NTMAKE_OBJS =3D nmake /nologo /f ntmakefile install_objs
 MKDIR =3D mkdir
=20
-#debug statement support jumping to last know error
-DOCD=3Dsrc\DOLASTCMP.BAT
+#debug statement support jumping to subfolder where last known error
+DOCD=3D$(AFSROOT)\DOLASTCMP.BAT
=20
 config:
      echo ***** $@
@@ -574,6 +574,7 @@
 mkdir:
 	-xcopy /q /t /e $(SRC)\*.* $(AFS_OBJDIR)\checked\=20
 	-xcopy /q /t /e $(SRC)\*.* $(AFS_OBJDIR)\free\=20
+	-@copy $(SRC)\DOLASTCMP.BAT $(AFSROOT)\DOLASTCMP.BAT
     -mkdir $(DESTDIR)\checked
 	-mkdir $(DESTDIR)\free
     -mkdir $(DESTDIR)\checked\bin
diff -NurEB --exclude-from=3Dexclude =
bas/src/WINNT/afs_setup_utils/afs_setup_utils.cpp =
upd/src/WINNT/afs_setup_utils/afs_setup_utils.cpp
--- bas/src/WINNT/afs_setup_utils/afs_setup_utils.cpp	2003-04-10 =
12:16:29.000000000 -0700
+++ upd/src/WINNT/afs_setup_utils/afs_setup_utils.cpp	2003-04-08 =
16:20:12.000000000 -0700
@@ -31,7 +31,7 @@
 #include <WINNT/afsreg.h>
 #include <WINNT/afssw.h>
 #include <WINNT/talocale.h>
-#include <winnt/osi_malloc.h>
+#include <afs/afs_malloc.h>
=20
 #include "resource.h"
 #include "progress_dlg.h"
diff -NurEB --exclude-from=3Dexclude =
bas/src/WINNT/afsapplib/hashlist.cpp =
upd/src/WINNT/afsapplib/hashlist.cpp
--- bas/src/WINNT/afsapplib/hashlist.cpp	2003-04-10 12:16:26.000000000 =
-0700
+++ upd/src/WINNT/afsapplib/hashlist.cpp	2003-04-08 16:20:12.000000000 =
-0700
@@ -13,7 +13,7 @@
 }
=20
 #include <WINNT/TaLocale.h>
-#include <winnt/osi_malloc.h>
+#include <afs/afs_malloc.h>
=20
=20
 /*
diff -NurEB --exclude-from=3Dexclude =
bas/src/WINNT/afsapplib/subclass.cpp =
upd/src/WINNT/afsapplib/subclass.cpp
--- bas/src/WINNT/afsapplib/subclass.cpp	2003-04-10 12:16:26.000000000 =
-0700
+++ upd/src/WINNT/afsapplib/subclass.cpp	2003-04-08 16:20:12.000000000 =
-0700
@@ -14,7 +14,7 @@
=20
 #include <windows.h>
 #include <WINNT/subclass.h>
-#include <winnt/osi_malloc.h>
+#include <afs/afs_malloc.h>
=20
=20
 /*
diff -NurEB --exclude-from=3Dexclude bas/src/WINNT/afsd/NTMakefile =
upd/src/WINNT/afsd/NTMakefile
--- bas/src/WINNT/afsd/NTMakefile	2003-04-10 12:16:27.000000000 -0700
+++ upd/src/WINNT/afsd/NTMakefile	2003-04-08 16:20:12.000000000 -0700
@@ -17,6 +17,7 @@
 INCFILEDIR =3D $(DESTDIR)\include\afs  # header file install directory
=20
 INCFILES =3D\
+	$(INCFILEDIR)\afs_malloc.h \
 	$(INCFILEDIR)\afsd.h \
 	$(INCFILEDIR)\cm.h \
 	$(INCFILEDIR)\cm_buf.h \
@@ -40,11 +41,9 @@
 	$(INCFILEDIR)\afsmsg95.h \
 	$(INCFILEDIR)\afsrpc.h \
 	$(INCFILEDIR)\cm_dns.h \
-!IFDEF OSICRASH
-	$(INCFILEDIR)\afsdcrash.h \
-!ENDIF
 	$(INCFILEDIR)\cm_dns_private.h
=20
+
 IDLFILES =3D\
 	afsrpc.h $(OJT)\afsrpc_c.c
=20
@@ -86,9 +85,6 @@
 	$(OJT)\cm_dnlc.obj \
 	$(OJT)\cm_rpc.obj \
 	$(OJT)\afsrpc_s.obj \
-!IFDEF OSICRASH
-	$(OJT)\afsdcrash.obj \
-!ENDIF
      $(OJT)\cm_freelance.obj
=20
 $(OJT)\cm_conn.obj: cm_conn.c
@@ -181,7 +177,7 @@
      $(COPY) $(OJT)\cm_dns.obj $(DESTDIR)\lib
      $(COPY) $(OJT)\cm_config.obj $(DESTDIR)\lib
=20
-install_headers: $(IDLFILES) $(INCFILES)
+install_headers: $(IDLFILES) $(INCFILES) $(INCWINNTFILES)
=20
 install: install_headers $(CONF_DLLFILE) \
 	$(EXEDIR)\klog.exe \
@@ -259,6 +255,7 @@
 	$(DESTDIR)\lib\afsrpc.lib \
 	$(DESTDIR)\lib\afsauthent.lib \
 	$(DESTDIR)\lib\afs\mtafsvldb.lib \
+	$(DESTDIR)\lib\afs\afsutil.lib \
 	$(DESTDIR)\lib\afs\mtafsint.lib \
 	$(DESTDIR)\lib\libafsconf.lib \
 	$(DESTDIR)\lib\afs\afsreg.lib \
diff -NurEB --exclude-from=3Dexclude bas/src/WINNT/afsd/afsd.c =
upd/src/WINNT/afsd/afsd.c
--- bas/src/WINNT/afsd/afsd.c	2003-04-10 12:16:27.000000000 -0700
+++ upd/src/WINNT/afsd/afsd.c	2003-04-08 16:20:12.000000000 -0700
@@ -20,7 +20,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <winsock2.h>
-#include <winnt/osi_malloc.h>
+#include <afs/afs_malloc.h>
=20
=20
 HANDLE main_inst;
diff -NurEB --exclude-from=3Dexclude bas/src/WINNT/afsd/afsd_service.c =
upd/src/WINNT/afsd/afsd_service.c
--- bas/src/WINNT/afsd/afsd_service.c	2003-04-10 12:16:27.000000000 =
-0700
+++ upd/src/WINNT/afsd/afsd_service.c	2003-04-08 16:20:12.000000000 =
-0700
@@ -18,7 +18,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <winsock2.h>
-#include <winnt/osi_malloc.h>
+#include <afs/afs_malloc.h>
=20
 #include <osi.h>
=20
diff -NurEB --exclude-from=3Dexclude bas/src/WINNT/afsd/afslogon.c =
upd/src/WINNT/afsd/afslogon.c
--- bas/src/WINNT/afsd/afslogon.c	2003-04-10 12:16:27.000000000 -0700
+++ upd/src/WINNT/afsd/afslogon.c	2003-04-08 16:20:12.000000000 -0700
@@ -23,7 +23,7 @@
 #include <sys/stat.h>
 #include <sys/types.h>
 #include <fcntl.h>
-#include <winnt/osi_malloc.h>
+#include <afs/afs_malloc.h>
=20
 DWORD LogonOption,TraceOption;
=20
diff -NurEB --exclude-from=3Dexclude bas/src/WINNT/afsd/cm_buf.c =
upd/src/WINNT/afsd/cm_buf.c
--- bas/src/WINNT/afsd/cm_buf.c	2003-04-10 12:16:27.000000000 -0700
+++ upd/src/WINNT/afsd/cm_buf.c	2003-04-08 16:20:12.000000000 -0700
@@ -19,7 +19,7 @@
 #include <malloc.h>
 #include <stdio.h>
 #include <assert.h>
-#include <winnt/osi_malloc.h>
+#include <afs/afs_malloc.h>
=20
 #include "afsd.h"
=20
diff -NurEB --exclude-from=3Dexclude bas/src/WINNT/afsd/cm_callback.c =
upd/src/WINNT/afsd/cm_callback.c
--- bas/src/WINNT/afsd/cm_callback.c	2003-04-10 12:16:27.000000000 -0700
+++ upd/src/WINNT/afsd/cm_callback.c	2003-04-08 16:20:14.000000000 -0700
@@ -866,10 +866,55 @@
     return RXGEN_OPCODE;
 }
=20
-/* debug interface: not implemented */
-int SRXAFSCB_GetCellByNum(struct rx_call *a_call, afs_int32 a_cellnum,
-                          char **a_name, serverList *a_hosts)
+
+int afs_cb_inited =3D 0;
+struct interfaceAddr afs_cb_interface;
+
+
+static int init_afs_cb() {
+    int count;
+
+    afs_uuid_create(&afs_cb_interface.uuid);
+    count =3D rx_getAllAddr(&afs_cb_interface.addr_in, =
AFS_MAX_INTERFACE_ADDR);
+    if ( count <=3D 0 )
+	afs_cb_interface.numberOfInterfaces =3D 0;
+    else
+	afs_cb_interface.numberOfInterfaces =3D count;
+    afs_cb_inited =3D 1;
+    return 0;
+}
+
+
+afs_int32 SRXAFSCB_TellMeAboutYourself(struct rx_call *rxcall,
+                                       struct interfaceAddr *addr,
+                                       Capabilities *capabilities)
 {
-    /* XXXX */
-    return RXGEN_OPCODE;
+    int i;
+    int code =3D 0;
+    int         count;
+
+#if FSPROBE_CALLBACK_VERBOSE
+    static char rn[] =3D "SRXAFSCB_TellMeAboutYourself";  /*Routine =
name*/
+    char hostName[256];                                 /*Host name =
buffer*/
+    char *hostNameResult;                               /*Ptr to =
static*/
+
+    if (rxcall !=3D (struct rx_call *)0) {
+      hostNameResult =3D
+          =
hostutil_GetNameByINet((afs_int32)(rxcall->conn->peer->host));
+      strcpy(hostName, hostNameResult);
+      fprintf(stderr, "[%s:%s] Called from host %s, port %d\n",
+              mn, rn, hostName, rxcall->conn->peer->port);
+    } /*Valid rxcall param*/
+#endif /* FSPROBE_CALLBACK_VERBOSE */
+
+    if ( rxcall && addr )
+    {
+        if (!afs_cb_inited) init_afs_cb();
+        *addr =3D afs_cb_interface;
+    }
+
+    /*
+     * Return successfully.
+     */
+    return(0);
 }
diff -NurEB --exclude-from=3Dexclude bas/src/WINNT/afsd/fs_utils.h =
upd/src/WINNT/afsd/fs_utils.h
--- bas/src/WINNT/afsd/fs_utils.h	2003-04-10 12:16:27.000000000 -0700
+++ upd/src/WINNT/afsd/fs_utils.h	2003-04-08 16:20:14.000000000 -0700
@@ -25,7 +25,7 @@
 /* Fake error code since NT errno.h doesn't define it */
 #include <afs/errmap_nt.h>
=20
-//extern char *hostutil_GetNameByINet(long addr);
+extern char *hostutil_GetNameByINet(long addr);
=20
 #ifndef hostutil_GetHostByName
 extern struct hostent *hostutil_GetHostByName(char *namep);
diff -NurEB --exclude-from=3Dexclude bas/src/WINNT/afsd/smb.c =
upd/src/WINNT/afsd/smb.c
--- bas/src/WINNT/afsd/smb.c	2003-04-10 12:16:27.000000000 -0700
+++ upd/src/WINNT/afsd/smb.c	2003-04-08 16:20:14.000000000 -0700
@@ -32,7 +32,7 @@
 #include "afsd.h"
=20
 #include "smb.h"
-#include <winnt/osi_malloc.h>
+#include <afs/afs_malloc.h>
=20
 /* These characters are illegal in Windows filenames */
 static char *illegalChars =3D "\\/:*?\"<>|";
diff -NurEB --exclude-from=3Dexclude bas/src/WINNT/afsreg/NTMakefile =
upd/src/WINNT/afsreg/NTMakefile
--- bas/src/WINNT/afsreg/NTMakefile	2003-04-10 12:16:27.000000000 -0700
+++ upd/src/WINNT/afsreg/NTMakefile	2003-04-08 16:20:14.000000000 -0700
@@ -11,7 +11,6 @@
 	$(DESTDIR)\include\WINNT\afsreg.h \
 	$(DESTDIR)\include\WINNT\syscfg.h \
 	$(DESTDIR)\include\WINNT\afssw.h \
-	$(DESTDIR)\include\WINNT\osi_malloc.h \
 	$(DESTDIR)\include\WINNT\vptab.h
=20
=20
diff -NurEB --exclude-from=3Dexclude =
bas/src/WINNT/client_config/drivemap.cpp =
upd/src/WINNT/client_config/drivemap.cpp
--- bas/src/WINNT/client_config/drivemap.cpp	2003-04-10 =
12:16:29.000000000 -0700
+++ upd/src/WINNT/client_config/drivemap.cpp	2003-04-08 =
16:20:14.000000000 -0700
@@ -20,7 +20,7 @@
 #include <time.h>
 #include <adssts.h>
 #include <osilog.h>
-#include <winnt/osi_malloc.h>
+#include <afs/afs_malloc.h>
=20
 /*
  * REGISTRY =
___________________________________________________________________
diff -NurEB --exclude-from=3Dexclude bas/src/WINNT/client_exp/gui2fs.cpp =
upd/src/WINNT/client_exp/gui2fs.cpp
--- bas/src/WINNT/client_exp/gui2fs.cpp	2003-04-10 12:16:29.000000000 =
-0700
+++ upd/src/WINNT/client_exp/gui2fs.cpp	2003-04-08 16:20:14.000000000 =
-0700
@@ -24,6 +24,8 @@
 #include "hourglass.h"
 #include "down_servers_dlg.h"
=20
+#include <afs/afs_malloc.h>
+
 extern "C" {
 #include <afs/param.h>
 #include <osi.h>
@@ -1219,45 +1221,6 @@
 	blob.out_size =3D MAXSIZE;
 	blob.out =3D space;
 	memset(space, 0, MAXSIZE);
-	code =3D pioctl(parent_dir, VIOC_LISTSYMLINK, &blob, 1);
-	return (code=3D=3D0);
-}
-
-BOOL IsSymlink(const char * true_name)
-{
-    char parent_dir[MAXSIZE];		/*Parent directory of true name*/
-	char strip_name[MAXSIZE];
-    struct ViceIoctl blob;
-	char *last_component;
-    int code;
-	last_component =3D (char *) strrchr(true_name, '\\');
-	if (!last_component)
-	    last_component =3D (char *) strrchr(true_name, '/');
-	if (last_component) {
-	    /*
-	     * Found it.  Designate everything before it as the parent =
directory,
-	     * everything after it as the final component.
-	     */
-	    strncpy(parent_dir, true_name, last_component - true_name + 1);
-	    parent_dir[last_component - true_name + 1] =3D 0;
-	    last_component++;   /*Skip the slash*/
-	}
-	else {
-	    /*
-	     * No slash appears in the given file name.  Set parent_dir to the =
current
-	     * directory, and the last component as the given name.
-	     */
-	    fs_ExtractDriveLetter(true_name, parent_dir);
-	    strcat(parent_dir, ".");
-	    last_component =3D strip_name;
-        fs_StripDriveLetter(true_name, strip_name, sizeof(strip_name));
-	}
-
-	blob.in =3D last_component;
-	blob.in_size =3D strlen(last_component)+1;
-	blob.out_size =3D MAXSIZE;
-	blob.out =3D space;
-	memset(space, 0, MAXSIZE);
 	code =3D pioctl(parent_dir, VIOC_ISSYMLINK, &blob, 1);
 	return (code=3D=3D0);
 }
@@ -1530,82 +1493,6 @@
 //	tokenInfo.Add("");
 //	return TRUE;
=20
-BOOL RemoveSymlink(const char * linkName)
-{
-	BOOL error =3D FALSE;
-    INT code=3D0;
-    struct ViceIoctl blob;
-    char tbuffer[1024];
-    char lsbuffer[1024];
-	char tpbuffer[1024];
-    char *tp;
-   =20
-	tp =3D (char *) strrchr(linkName, '\\');
-	if (!tp)
-	    tp =3D (char *) strrchr(linkName, '/');
-	if (tp) {
-	    strncpy(tbuffer, linkName, code=3Dtp-linkName+1);  /* the dir name =
*/
-            tbuffer[code] =3D 0;
-	    tp++;   /* skip the slash */
-	}
-	else {
-	    fs_ExtractDriveLetter(linkName, tbuffer);
-	    strcat(tbuffer, ".");
-         fs_StripDriveLetter(tp, tpbuffer, 0);
-		 tp=3Dtpbuffer;
-	}
-	blob.in =3D tp;
-	blob.in_size =3D strlen(tp)+1;
-	blob.out =3D lsbuffer;
-	blob.out_size =3D sizeof(lsbuffer);
-	code =3D pioctl(tbuffer, VIOC_LISTSYMLINK, &blob, 0);
-	if (code)
-		return FALSE;
-	blob.out_size =3D 0;
-	blob.in =3D tp;
-	blob.in_size =3D strlen(tp)+1;
-	return (pioctl(tbuffer, VIOC_DELSYMLINK, &blob, 0)=3D=3D0);
-}
-
-BOOL IsSymlink(const char * true_name)
-{
-    char parent_dir[MAXSIZE];		/*Parent directory of true name*/
-	char strip_name[MAXSIZE];
-    struct ViceIoctl blob;
-	char *last_component;
-    int code;
-	last_component =3D (char *) strrchr(true_name, '\\');
-	if (!last_component)
-	    last_component =3D (char *) strrchr(true_name, '/');
-	if (last_component) {
-	    /*
-	     * Found it.  Designate everything before it as the parent =
directory,
-	     * everything after it as the final component.
-	     */
-	    strncpy(parent_dir, true_name, last_component - true_name + 1);
-	    parent_dir[last_component - true_name + 1] =3D 0;
-	    last_component++;   /*Skip the slash*/
-	}
-	else {
-	    /*
-	     * No slash appears in the given file name.  Set parent_dir to the =
current
-	     * directory, and the last component as the given name.
-	     */
-	    fs_ExtractDriveLetter(true_name, parent_dir);
-	    strcat(parent_dir, ".");
-	    last_component =3D strip_name;
-        fs_StripDriveLetter(true_name, strip_name, sizeof(strip_name));
-	}
-
-	blob.in =3D last_component;
-	blob.in_size =3D strlen(last_component)+1;
-	blob.out_size =3D MAXSIZE;
-	blob.out =3D space;
-	memset(space, 0, MAXSIZE);
-	code =3D pioctl(parent_dir, VIOC_LISTSYMLINK, &blob, 1);
-	return (code=3D=3D0);
-}
-
=20
 	HOURGLASS hourglass;
=20
@@ -1701,3 +1588,69 @@
     return TRUE;
 }
=20
+UINT MakeSymbolicLink(const char *strName ,const char *strDir)
+{
+    struct ViceIoctl blob;
+	char space[MAXSIZE];
+	UINT code;
+	/*lets confirm its a good symlink*/
+	if (!IsPathInAfs(strDir))
+		return 1;
+	LPTSTR lpsz =3D new TCHAR[strlen(strDir)+1];
+	_tcscpy(lpsz, strName);
+    strcpy(space, strDir);
+    blob.out_size =3D 0;
+    blob.in_size =3D 1 + strlen(space);
+    blob.in =3D space;
+    blob.out =3D NULL;
+    if ((code=3Dpioctl(lpsz, VIOC_SYMLINK, &blob, 0))!=3D0)
+		return code;
+	return 0;
+}
+
+void ListSymbolicLinkPath(const char *strName,char *strPath,UINT =
nlenPath)
+{
+	ASSERT(nlenPath<MAX_PATH);
+    struct ViceIoctl blob;
+    char orig_name[MAX_PATH+1];		/*Original name, may be modified*/
+    char true_name[MAX_PATH+1];		/*``True'' dirname (e.g., symlink =
target)*/
+    char parent_dir[MAX_PATH+1];		/*Parent directory of true name*/
+    char *last_component;	/*Last component of true name*/
+	UINT code;   =20
+	strcpy(orig_name, strName);
+	strcpy(true_name, orig_name);
+	/*
+	 * Find rightmost slash, if any.
+	 */
+	last_component =3D (char *) strrchr(true_name, '\\');
+	if (!last_component)
+	    last_component =3D (char *) strrchr(true_name, '/');
+	if (last_component) {
+	    /*
+	     * Found it.  Designate everything before it as the parent =
directory,
+	     * everything after it as the final component.
+	     */
+	    strncpy(parent_dir, true_name, last_component - true_name + 1);
+	    parent_dir[last_component - true_name + 1] =3D 0;
+	    last_component++;   /*Skip the slash*/
+	}
+	else {
+	    /*
+	     * No slash appears in the given file name.  Set parent_dir to the =
current
+	     * directory, and the last component as the given name.
+	     */
+	    fs_ExtractDriveLetter(true_name, parent_dir);
+	    strcat(parent_dir, ".");
+	    last_component =3D true_name;
+            fs_StripDriveLetter(true_name, true_name, =
sizeof(true_name));
+	}
+	blob.in =3D last_component;
+	blob.in_size =3D strlen(last_component)+1;
+	blob.out_size =3D MAXSIZE;
+	blob.out =3D space;
+	memset(space, 0, MAXSIZE);
+	if ((code =3D pioctl(parent_dir, VIOC_LISTSYMLINK, &blob, 1)))
+		strcpy(space,"???");
+	ASSERT(strlen(space)<MAX_PATH);
+	strncpy(strPath,space,nlenPath);
+}
diff -NurEB --exclude-from=3Dexclude bas/src/WINNT/client_osi/NTMakefile =
upd/src/WINNT/client_osi/NTMakefile
--- bas/src/WINNT/client_osi/NTMakefile	2003-04-10 12:16:30.000000000 =
-0700
+++ upd/src/WINNT/client_osi/NTMakefile	2003-04-08 16:20:14.000000000 =
-0700
@@ -75,12 +75,12 @@
         rpcns4.lib \
 	largeint.lib
=20
+#DLLGUILINK =3D $(link) /OUT:$@  $(ldebug) $(dlllflags) $(afslflags) =
$(guilibsdll)  $**
+
 $(DLLFILE): $(DLLOBJS)=20
 	$(DLLGUILINK) $(DLLLIBS) -def:libosi.def
 	$(DLLPREP)
-	$(COPY) $*.lib $(ILIBDIR)
-	$(DEL) $*.lib $*.exp
-
+	$(COPY) $*.lib $(ILIBDIR)=20
=20
 =
#########################################################################=
###
 # build osievent.dll
@@ -90,12 +90,10 @@
 	mc $*.mc
=20
 $(OJT)\osievent.res: osievent.rc
+	rc -r -fo $@ $(*F)
=20
-$(OJT)\osievent.dll: $(OJT)\osievent.res
-	link -dll -noentry -out:$*.dll $*.res
-
-$(OSIEVENTDLL): $(OJT)\osievent.dll
-	$(COPY) osievent.dll $(DESTDIR)\root.client\usr\vice\etc\.
+$(OSIEVENTDLL): $(OJT)\osievent.res
+	link -dll -noentry -out:$@ /PDB:$*.pdb $**
=20
 =
#########################################################################=
###
 # build osidebug too
@@ -122,11 +120,7 @@
=20
 install_headers: $(INCFILES)
=20
-!IFDEF OSIEVENT
 install: $(OSIEVENTDLL) install_headers $(DLLFILE)
-!ELSE
-install: install_headers $(DLLFILE)
-!ENDIF
=20
 install_debug: $(OJT)\osidebug.res $(EXEFILE)
=20
diff -NurEB --exclude-from=3Dexclude =
bas/src/WINNT/talocale/tal_alloc.cpp =
upd/src/WINNT/talocale/tal_alloc.cpp
--- bas/src/WINNT/talocale/tal_alloc.cpp	2003-04-10 12:16:32.000000000 =
-0700
+++ upd/src/WINNT/talocale/tal_alloc.cpp	2003-04-08 16:20:14.000000000 =
-0700
@@ -17,7 +17,7 @@
 #include <windows.h>
 #include <commctrl.h>
 #include <WINNT/tal_alloc.h>
-#include <winnt/osi_malloc.h>
+#include <afs/afs_malloc.h>
=20
=20
 /*
diff -NurEB --exclude-from=3Dexclude bas/src/bucoord/NTMakefile =
upd/src/bucoord/NTMakefile
--- bas/src/bucoord/NTMakefile	2003-04-10 12:16:14.000000000 -0700
+++ upd/src/bucoord/NTMakefile	2003-04-08 16:20:14.000000000 -0700
@@ -19,16 +19,13 @@
 LIBFILE =3D $(DESTDIR)\lib\afs\afsbxdb.lib
=20
 LIBOBJS =3D\
-	$(OJT)dsstub.obj \
-	$(OJT)ubik_db_if.obj \
-	$(OJT)status.obj \
-	$(OJT)dlq.obj \
-	$(OJT)bucoord_errs.obj \
-	$(OJT)volstub.obj \
-	$(OJT)AFS_component_version_number.obj
-
-$(LIBOBJS):$$(@B).c
-	$(C2OBJ) $**
+	$(OJT)\dsstub.obj \
+	$(OJT)\ubik_db_if.obj \
+	$(OJT)\status.obj \
+	$(OJT)\dlq.obj \
+	$(OJT)\bucoord_errs.obj \
+	$(OJT)\volstub.obj \
+	$(OJT)\AFS_component_version_number.obj
=20
 $(LIBFILE): $(LIBOBJS)
 	$(LIBARCH)
@@ -40,34 +37,25 @@
 EXEFILE =3D $(DESTDIR)\etc\backup.exe
=20
 EXEOBJS =3D\
-	$(OJT)main.obj \
-	$(OJT)config.obj \
-	$(OJT)dsstub.obj \
-	$(OJT)volstub.obj \
-	$(OJT)commands.obj \
-	$(OJT)regex.obj \
-	$(OJT)server.obj \
-	$(OJT)dsvs.obj \
-	$(OJT)dump.obj \
-	$(OJT)restore.obj \
-	$(OJT)ubik_db_if.obj \
-	$(OJT)dump_sched.obj \
-	$(OJT)vol_sets.obj \
-	$(OJT)tape_hosts.obj \
-	$(OJT)bucoord_errs.obj \
-	$(OJT)bc_status.obj \
-	$(OJT)status.obj \
-	$(OJT)dlq.obj=20
-
-$(EXEOBJS):$$(@B).c
-	$(C2OBJ) $**
-
-$(OJT)backup.res:AFS_component_version_number.h
-
-	$(RC) backup.rc
-
-$(EXEOBJS):$$(@B).c
-	$(C2OBJ) $**
+	$(OJT)\main.obj \
+	$(OJT)\config.obj \
+	$(OJT)\dsstub.obj \
+	$(OJT)\volstub.obj \
+	$(OJT)\commands.obj \
+	$(OJT)\regex.obj \
+	$(OJT)\server.obj \
+	$(OJT)\dsvs.obj \
+	$(OJT)\dump.obj \
+	$(OJT)\restore.obj \
+	$(OJT)\ubik_db_if.obj \
+	$(OJT)\dump_sched.obj \
+	$(OJT)\vol_sets.obj \
+	$(OJT)\tape_hosts.obj \
+	$(OJT)\bucoord_errs.obj \
+	$(OJT)\bc_status.obj \
+	$(OJT)\status.obj \
+	$(OJT)\dlq.obj \
+	$(OJT)\backup.res
=20
 EXELIBS =3D\
 	$(DESTDIR)\lib\afs\afsbudb.lib \
@@ -110,7 +98,7 @@
 =
#########################################################################=
###
 # Definitions for generating versioninfo resources
=20
-$(OJT)backup.res: AFS_component_version_number.h
+$(OJT)\backup.res: AFS_component_version_number.h
=20
 =
#########################################################################=
###
 # Install=20
@@ -126,4 +114,4 @@
=20
=20
 mkdir:
-
+=09
diff -NurEB --exclude-from=3Dexclude bas/src/config/NTMakefile =
upd/src/config/NTMakefile
--- bas/src/config/NTMakefile	2003-04-10 12:16:16.000000000 -0700
+++ upd/src/config/NTMakefile	2003-04-08 16:20:14.000000000 -0700
@@ -14,14 +14,12 @@
=20
 INCFILES =3D\
 	$(INCFILEDIR)\debug.h \
-	$(INCFILEDIR)\afsconfig.h \
 	$(INCFILEDIR)\stds.h \
 	$(INCFILEDIR)\param.h \
 	$(INCFILEDIR)\afs_sysnames.h \
 	$(INCFILEDIR)\afs_args.h \
 	$(INCFILEDIR)\debug.h \
 	$(INCFILEDIR)\param.h \
-	$(INCFILEDIR)\afsconfig.h \
 	$(INCFILEDIR)\afs_sysnames.h \
 	$(INCFILEDIR)\stds.h \
 	$(INCFILEDIR)\icl.h=20
@@ -165,6 +163,6 @@
 	$(DEL) $(DESTDIR)\LIB\*.DLL
 	$(DEL) $(DESTDIR)\bin\mkver.exe
 	$(DEL) $(DESTDIR)\bin\touch.exe
-	$(DEL) util_cr.exe
 	$(DEL) mkver.exe
 	$(DEL) touch.exe
+	$(DEL) util_cr.exe
diff -NurEB --exclude-from=3Dexclude bas/src/config/NTMakefile.i386_nt40 =
upd/src/config/NTMakefile.i386_nt40
--- bas/src/config/NTMakefile.i386_nt40	2003-04-10 12:16:16.000000000 =
-0700
+++ upd/src/config/NTMakefile.i386_nt40	2003-04-08 16:20:14.000000000 =
-0700
@@ -308,12 +308,6 @@
=20
 !ELSE	#CHECKED BUILD
=20
-ldebug =3D /NODEFAULTLIB:LIBC=20
-
-#!IF ("AFSVER_CL"=3D=3D"1200")
-#ldebug =3D $(ldebug) -debugtype:cv=20
-#!ENDIF
-
 !IFDEF VADUMP
 ldebug =3D $(ldebug) -debugtype:both
 ldebug =3D $(ldebug:-debugtype:cv=3D)
diff -NurEB --exclude-from=3Dexclude =
bas/src/config/NTMakefile.i386_win95 =
upd/src/config/NTMakefile.i386_win95
--- bas/src/config/NTMakefile.i386_win95	2003-04-10 12:16:16.000000000 =
-0700
+++ upd/src/config/NTMakefile.i386_win95	2003-04-08 16:20:14.000000000 =
-0700
@@ -9,8 +9,8 @@
 #
 # Required definitions:
 #     AFSDEV_BUILDTYPE =3D [ CHECKED | FREE ]
-#     AFSDEV_INCLUDE =3D <default include directories>
-#     AFSDEV_LIB =3D <default library directories>
+#	  LIB - library paths
+#     INCLUDE - include paths
 #
 # Optional definitions:
 #     AFSDEV_DESTDIR =3D <top-level install directory>  (default is =
$(AFSROOT)\DEST)
@@ -18,7 +18,8 @@
 #     AFSDEV_AUXCDEFINES =3D <auxiliary C preprocessor defs> (default =
is null)
 #     AFSDEV_AUXRCFLAGS =3D <auxiliary resource compiler flags> =
(default is null)
 #     AFSDEV_TEXTMODE =3D <text mode is default if defined>  (default =
is null)
-#     AFSDEV_CRTDEBUG =3D <utilize debug C runtime if define> (default =
is null)
+#     DEBUG_VERBOSE =3D optional debug statements for testing
+#     _CRTDBG_MAP_ALLOC =3D <utilize crt debug C runtime if define> =
(default is null)
 #
 =
#########################################################################=
###
=20
@@ -31,20 +32,13 @@
 # Define default target-type macros required by WIN32.MAK.
 # Allow them to be overriden in an NTMakefile or via an environment =
variable.
=20
-!IFNDEF APPVER
-APPVER =3D 4.0
-!ENDIF
=20
 #define used in Win9x installation and program version display
-AFSPRODUCT_VERSION=3D1.2.2 b
+AFSPRODUCT_VERSION=3D1.2.8 b
 CELLNAME_DEFAULT=3DYour Cell Name
 CELLSERVDB_INSTALL=3DCellServDB.GrandCentral
 CELLSERVDB_WEB=3Dhttp://grand.central.org/dl/cellservdb/CellServDB
-
-!IFNDEF TARGETOS
-TARGETOS =3D WIN95
-#TARGETOS =3D WINNT
-!ENDIF
+#_CRTDBG_MAP_ALLOC=3D1
=20
 !IF "$(OS)" =3D=3D "Windows_NT"
 NULL=3D
@@ -52,10 +46,6 @@
 NULL=3Dnul
 !ENDIF=20
=20
-!IFNDEF _WIN32_IE
-_WIN32_IE =3D 0x0300
-!ENDIF
-
 # Check that build type is correctly specified.
=20
 !IF (DEFINED(PROFILE) || DEFINED(TUNE))
@@ -70,52 +60,53 @@
=20
 !ENDIF
=20
-# Limit default include and library directories to those specified for =
build.
-
-!IFNDEF AFSDEV_INCLUDE
-!ERROR Must define AFSDEV_INCLUDE to be the default include =
directories.
+# Standard install directory.
+!IFDEF AFSDEV_DESTDIR
+DESTDIR =3D $(AFSDEV_DESTDIR)
+!ELSE
+DESTDIR =3D $(AFSROOT)\DEST
 !ENDIF
=20
-!IF ((!DEFINED(INCLUDE)) && ([set INCLUDE=3D$(AFSDEV_INCLUDE)] !=3D 0))
-#    If env. var. INCLUDE not defined then macro assignment won't set =
it.
-!ERROR Failed setting environment variable INCLUDE.
+#CHECK which VERSION of the complier we are using
+!IF ("$(AFSVER)"=3D=3D"")
+!IF EXISTS("$(DESTDIR)\bin\util_cr.exe")
+!IF	(([$(DESTDIR)\bin\util_cr.exe __])>=3D1300)=20
+AFSVER_CL=3D1300
+!ELSE
+AFSVER_CL=3D1200
+!ENDIF
+!ELSE
+!MESSAGE WARNING-Complier version not available
 !ENDIF
-INCLUDE =3D $(AFSDEV_INCLUDE)
-
-
-!IFNDEF AFSDEV_LIB
-!ERROR Must define AFSDEV_LIB to be the default library directories.
 !ENDIF
=20
-!IF ((!DEFINED(LIB)) && ([set LIB=3D$(AFSDEV_LIB)] !=3D 0))
-#    If env. var. LIB not defined then macro assignment won't set it.
-!ERROR Failed setting environment variable LIB.
+!IF ("$(AFSVER)"=3D=3D"1300")
+afslflags =3D\
+	/FIXED:NO /VERBOSE:LIB /DEBUG
+!ELSE
+afslflags =3D\
+	/FIXED:NO /VERBOSE:LIB
 !ENDIF
-LIB =3D $(AFSDEV_LIB)
=20
 # Undefine WIN32.MAK NODEBUG macro.
 # Always generate full debug info, unless profiling or tuning (see =
below).
=20
 !UNDEF NODEBUG
-
-# Include WIN32.MAK nmake file
+TARGETOS =3D WIN95
+!IF ("$(APPVER)"=3D=3D"")
+APPVER =3D 5.0		#MFC stuff, must =3D4.0 for console apps
+!ENDIF
+!IFNDEF _WIN32_IE
+_WIN32_IE =3D 0x0400
+!ENDIF
=20
 !INCLUDE <WIN32.MAK>
=20
 # Extend and/or supplement definitions in WIN32.MAK.
=20
-# Standard install directory.
-!IFDEF AFSDEV_DESTDIR
-DESTDIR =3D $(AFSDEV_DESTDIR)
-!ELSE
-DESTDIR =3D $(AFSROOT)\DEST
-!ENDIF
-
 # Command macros.
 COPY =3D copy
-#DEL =3D del
-#DEL =3D rm -f       # to delete multiple files on one command line
-DEL =3D $(DESTDIR)\BIN\rmbat 	   # win 98 must use batch file
+DEL =3D $(DESTDIR)\BIN\util_cr _del 	   # win 98 must use=20
 MKDIR =3D mkdir
 REN =3D ren
 ECHO =3D echo
@@ -153,7 +144,7 @@
      -DAFS_AFSDB_ENV \
      -DAFS_FREELANCE_CLIENT
=20
-!	IF ((EXIST($(MSSDK)\include)) && (("$(SYS_NAME)"=3D=3D"i386_win95" ) =
|| ("$(SYS_NAME)"=3D=3D"I386_WIN95" )))
+!	IF (EXIST($(MSSDK)\include))
 afscdefs=3D$(afscdefs) -I$(MSSDK)\include $(afscppdefs) \
 !	ENDIF
=20
@@ -185,14 +176,18 @@
=20
 !IF ("$(AFSDEV_BUILDTYPE)" =3D=3D "FREE")
 #    Apply full optimization; generate full debug info in obj.
-afscflags =3D $(afscflags) /Ox /Z7
-ldebug =3D $(ldebug) -debugtype:both
+afscflags =3D $(afscflags) /Ox /Zi
+ldebug =3D $(ldebug)
 cdebug =3D $(cdebug:-Od=3D)  # avoid annoying override warning (D4025)
-
+cvarsdll =3D $(cvarsdll:-MDd=3D-MD)
 !ELSEIF ("$(AFSDEV_BUILDTYPE)" =3D=3D "CHECKED")
 #    Disable optimization; generate full debug info in obj.
-afscflags =3D $(afscflags) /Od /Z7
+afscflags =3D $(afscflags) /Od /Zi
+cdebug =3D $(cdebug:-Z7=3D-Zi)  # avoid annoying override warning =
(D4025)
+!IF ("AFSVER_CL"=3D=3D"1200")
 ldebug =3D $(ldebug) -debugtype:both
+!ELSE	#CHECKED & V1300
+!ENDIF
 !ENDIF
=20
 # Set compiler warning level
@@ -213,27 +208,24 @@
=20
=20
 # Linker switches
-#
-# /FIXED:NO   generates a relocation section in the executable
-
+# Compiler version differences
+!IF ("$(AFSVER)"=3D=3D"1300")
 afslflags =3D\
-	/FIXED:NO
-
-
+	/FIXED:NO /VERBOSE:LIB /DEBUG
+!ELSE
+afslflags =3D\
+	/FIXED:NO /VERBOSE:LIB
+!ENDIF
=20
 # For checked builds, define DEBUG (but not the MS control flag =
_DEBUG).
=20
-!IF ("$(AFSDEV_BUILDTYPE)" =3D=3D "CHECKED")
+!IF (("$(AFSDEV_BUILDTYPE)" =3D=3D "CHECKED") && =
("$(AFSVER_CL)"=3D=3D"1200"))
 afscdefs =3D $(afscdefs) -DDEBUG
 !ENDIF
=20
 # Utilize the debug version of the MSVC runtime, if requested.
=20
-!IFDEF AFSDEV_CRTDEBUG
 afscdefs =3D $(afscdefs) -D_DEBUG
-conlibsdll =3D $(conlibsdll:msvcrt.lib=3Dmsvcrtd.lib)
-guilibsdll =3D $(guilibsdll:msvcrt.lib=3Dmsvcrtd.lib)
-!ENDIF
=20
 # Link with binmode.obj; files will be opened in binary mode by =
default.
=20
@@ -254,17 +246,37 @@
 mfcdlllflags =3D $(mfcdlllflags:/NODEFAULTLIB=3D)
=20
 mfclibsdll =3D $(guilibsdll)
-mfclibsdll =3D $(mfclibsdll:msvcrtd.lib=3D)
-mfclibsdll =3D $(mfclibsdll:msvcrt.lib=3D)
=20
-!IFNDEF AFSDEV_CRTDEBUG
+!IFNDEF _CRTDBG_MAP_ALLOC
+!IF ("$(AFSVER)"=3D=3D"1300")
+mfclflags =3D $(mfclflags) /NODEFAULTLIB:msvcrtd.lib
+mfcdlllflags =3D $(mfcdlllflags) /NODEFAULTLIB:msvcrtd.lib
+!ELSE
+# v6.0 compiler
+
+#mfclibsdll =3D $(mfclibsdll:msvcrtd.lib=3D)
+#mfclflags =3D $(mfclflags) /NODEFAULTLIB:msvcrtd.lib
+#mfcdlllflags =3D $(mfcdlllflags) /NODEFAULTLIB:msvcrtd.lib
+
+!IF ("$(AFSDEV_BUILDTYPE)" =3D=3D "FREE")
+mfclibsdll =3D $(mfclibsdll:msvcrtd.lib=3D)
 mfclflags =3D $(mfclflags) /NODEFAULTLIB:msvcrtd.lib
 mfcdlllflags =3D $(mfcdlllflags) /NODEFAULTLIB:msvcrtd.lib
 !ELSE
+mfclibsdll =3D $(mfclibsdll:msvcrt.lib=3D)
 mfclflags =3D $(mfclflags) /NODEFAULTLIB:msvcrt.lib
 mfcdlllflags =3D $(mfcdlllflags) /NODEFAULTLIB:msvcrt.lib
 !ENDIF
-
+!ENDIF
+!ELSE
+#_CRTDBG_MAP_ALLOC defined
+afscdefs =3D $(afscdefs) -D_DEBUG
+mfclflags =3D $(mfclflags) /NODEFAULTLIB:msvcrt.lib
+mfcdlllflags =3D $(mfcdlllflags) /NODEFAULTLIB:msvcrt.lib
+conlibsdll =3D $(conlibsdll:msvcrt.lib=3Dmsvcrtd.lib)
+guilibsdll =3D $(guilibsdll:msvcrt.lib=3Dmsvcrtd.lib)
+!ENDIF
+conlflags =3D $(conlflags::console,5.0=3D:console,4.0)
=20
 # Macros for creating/modifying binary targets
=20
@@ -281,14 +293,18 @@
 DLLCONLINK =3D $(link) /OUT:$@ $(ldebug) $(dlllflags) $(afslflags) =
$(conlibsdll) $**
=20
 # DLL link macro for GUI applications
+
+!IF ("$(AFSDEV_BUILDTYPE)" =3D=3D "CHECKED")
+DLLGUILINK =3D $(link) /OUT:$@ /NODEFAULTLIB:LIBC $(ldebug) =
$(dlllflags) $(afslflags) $(guilibsdll)  $**
+!ELSE
 DLLGUILINK =3D $(link) /OUT:$@ $(ldebug) $(dlllflags) $(afslflags) =
$(guilibsdll) $**
+!ENDIF
=20
 # DLL link macro for MFC applications
 DLLMFCLINK =3D $(link) /OUT:$@ $(ldebug) $(mfcdlllflags) $(afslflags) =
$(mfclibsdll) $**
=20
 # DLL link macro for resource-only DLLs
-# DLLRESLINK =3D $(link) /OUT:$@ =
$(dlllflags:-entry:_DllMainCRTStartup@12=3D-noentry) $(afslflags) $**
-DLLRESLINK =3D $(link) /OUT:$@ -noentry $(afslflags) $**
+DLLRESLINK =3D $(link) /OUT:$@ =
$(dlllflags:-entry:_DllMainCRTStartup@12=3D-noentry) $(afslflags) $**
=20
 # Library archive macro
 LIBARCH =3D $(implib) /NOLOGO /OUT:$@ $**
@@ -308,9 +324,12 @@
 !ENDIF
=20
 # C/C++ compilation macros
-
+!IFDEF _CRTDBG_MAP_ALLOC
+C2OBJ =3D $(cc) $(cflags) $(cdebug) $(cvarsdll) $(afscflags) =
$(afscdefs) -D_CRTDBG_MAP_ALLOC /c
+!ELSE
 C2OBJ =3D $(cc) $(cflags) $(cdebug) $(cvarsdll) $(afscflags) =
$(afscdefs) /c
-CPP2OBJ =3D $(cc) $(cflags) $(cdebug) $(cvarsdll) $(afscflags) =
$(afscdefs) $(afscppdefs) /c
+!ENDIF
+CPP2OBJ =3D $(cc) $(cflags) $(cdebug) $(cvarsdll) $(afscflags) =
$(afscdefs) /c
=20
 # Resource compiler macro
 RC =3D $(rc) $(rcvars) $(rcflags) $(AFSDEV_AUXRCFLAGS) /d =
"AFSPRODUCT_VERSION=3D\"$(AFSPRODUCT_VERSION)\""
diff -NurEB --exclude-from=3Dexclude bas/src/config/util_cr.c =
upd/src/config/util_cr.c
--- bas/src/config/util_cr.c	2003-04-10 12:16:17.000000000 -0700
+++ upd/src/config/util_cr.c	2003-04-08 16:20:16.000000000 -0700
@@ -232,6 +232,7 @@
 	char *p,*po;
 	FILE *f;
 	BOOL isObjAbs,isSrcAbs;	/* two flags to determine if either string is =
not relative*/
+	__try {
 	strcpy(bld,val+1);	/*it better be checked or free*/
 	strcpy(src,strchr(bld,'!')+1);
 	strcpy(obj,strchr(src,'!')+1);
@@ -305,11 +306,14 @@
 	__finally {
 		fclose(f);
 	}  =20
+	}
+	__except(EXCEPTION_EXECUTE_HANDLER ){
+		exit(0xc000);
+	}
 }
=20
 int isequal(char *msg1,char *msg2,char *disp)
 {
-	int x;
 	strlwr(msg1);
 	strlwr(msg2);
 	if (strcmp(msg1,msg2)!=3D0)
@@ -320,7 +324,6 @@
=20
 int SetSysEnv(int argc,char * argv[])
 {
-	long ret;
 	DWORD dwResult;
 	printf("assignment %s %s\n",argv[2],argv[3]);
 	=
Addkey("HKEY_LOCAL_MACHINE","System\\CurrentControlSet\\Control\\Session =
Manager\\Environment"
@@ -351,7 +354,9 @@
=20
 	}
 	if (strnicmp(argv[1],"_dir",4)=3D=3D0){ /*get current directory =
routine*/
-		gencurdir(argv[1]);
+		if (argc<3)
+			usuage();
+		gencurdir(argv[2]);
 		return 0;
 	}
 	if (strnicmp(argv[1],"_isequal",4)=3D=3D0){ /*get current directory =
routine*/
diff -NurEB --exclude-from=3Dexclude bas/src/des/NTMakefile =
upd/src/des/NTMakefile
--- bas/src/des/NTMakefile	2003-04-10 12:16:17.000000000 -0700
+++ upd/src/des/NTMakefile	2003-04-08 18:11:20.000000000 -0700
@@ -75,7 +75,7 @@
 	s_table.h \
 	odd.h \
 	p.c \
-	s.c \
+#	s.c \
 	fp.c \
 	ip.c
=20
@@ -97,8 +97,8 @@
 p.c: $(OJT)\make_p.exe
 	$(MAKETARG)
=20
-s.c: $(OJT)\make_s.exe
-	$(MAKETARG)
+#s.c: $(OJT)\make_s.exe
+#	$(MAKETARG)
=20
 fp.c: $(OJT)\make_fp.exe
 	$(MAKETARG)
@@ -124,8 +124,8 @@
 $(OJT)\make_p.exe: $(OJT)\make_p.obj $(OJT)\misc.obj $(OJT)\main.obj
 	$(EXECONLINK)
=20
-$(OJT)\make_s.exe: $(OJT)\make_s.obj $(OJT)\misc.obj $(OJT)\main.obj
-	$(EXECONLINK)
+#$(OJT)\make_s.exe: $(OJT)\make_s.obj $(OJT)\misc.obj $(OJT)\main.obj
+#	$(EXECONLINK)
=20
 $(OJT)\make_fp.exe: $(OJT)\make_fp.obj $(OJT)\misc.obj $(OJT)\main.obj
 	$(EXECONLINK)
diff -NurEB --exclude-from=3Dexclude =
bas/src/libadmin/adminutil/NTMakefile =
upd/src/libadmin/adminutil/NTMakefile
--- bas/src/libadmin/adminutil/NTMakefile	2003-04-10 12:16:20.000000000 =
-0700
+++ upd/src/libadmin/adminutil/NTMakefile	2003-04-10 11:53:48.000000000 =
-0700
@@ -30,7 +30,6 @@
 	$(INCFILEDIR)\afs_AdminMiscErrors.h \
 	$(INCFILEDIR)\afs_AdminPtsErrors.h \
 	$(INCFILEDIR)\afs_AdminUtilErrors.h \
-	$(INCFILEDIR)\afsconfig.h \
  	$(INCFILEDIR)\afs_AdminVosErrors.h
=20
 $(INCFILES):$$(@F)
diff -NurEB --exclude-from=3Dexclude bas/src/rx/NTMakefile =
upd/src/rx/NTMakefile
--- bas/src/rx/NTMakefile	2003-04-10 12:16:23.000000000 -0700
+++ upd/src/rx/NTMakefile	2003-04-08 16:20:16.000000000 -0700
@@ -91,7 +91,8 @@
 install9x: $(LIBFILE) $(INCFILES)
=20
 clean::
-	$(DEL) $(LIBFILE) $(INCFILES)
+	$(DEL) $(LIBFILE)
+	$(DEL) $(INCFILES)
=20
 mkdir:
 =09
diff -NurEB --exclude-from=3Dexclude bas/src/rxstat/rxstat.c =
upd/src/rxstat/rxstat.c
--- bas/src/rxstat/rxstat.c	2003-04-10 12:16:24.000000000 -0700
+++ upd/src/rxstat/rxstat.c	2003-04-10 12:16:44.000000000 -0700
@@ -19,11 +19,11 @@
 #ifdef UKERNEL
 #include "afs/sysincludes.h"
 #include "afsincludes.h"
-#include <rx/rxstat.h>
+#include "rx/rxstat.h"
 #else /* UKERNEL */
 #include <afs/stds.h>
 #include <rx/rx.h>
-#include <rx/rxstat.h>
+#include <rxstat.h>
 #ifdef KERNEL
 #include "sys/errno.h"
 #else /* KERNEL */
diff -NurEB --exclude-from=3Dexclude bas/src/sys/afssyscalls.h =
upd/src/sys/afssyscalls.h
--- bas/src/sys/afssyscalls.h	2003-04-10 12:16:24.000000000 -0700
+++ upd/src/sys/afssyscalls.h	2003-04-08 16:20:16.000000000 -0700
@@ -131,7 +131,8 @@
=20
=20
 #endif /* AFS_NAMEI_ENV */
-
+#else /* AFS_NT40_ENV */
+typedef __int64 Inode;
 #endif /* AFS_NT40_ENV */
=20
 #endif /* AFS_AFSSYSCALLS_H */
diff -NurEB --exclude-from=3Dexclude bas/src/util/NTMakefile =
upd/src/util/NTMakefile
--- bas/src/util/NTMakefile	2003-04-10 12:16:25.000000000 -0700
+++ upd/src/util/NTMakefile	2003-04-08 16:20:16.000000000 -0700
@@ -27,10 +27,13 @@
 	$(INCFILEDIR)\afsutil_prototypes.h \
 	$(INCFILEDIR)\secutil_nt.h
=20
-$(DESTDIR)\include\afs\dirent.h: dirent_nt.h
+$(INCFILEDIR)\dirent.h: dirent_nt.h
 	$(COPY) $** $@
=20
-$(DESTDIR)\include\afs\dirpath.h: dirpath_nt.h
+$(INCFILEDIR)\afsconfig.h: ..\libadmin\adminutil\afsconfig.h
+	$(COPY) $** $@
+
+$(INCFILEDIR)\dirpath.h: dirpath_nt.h
 	$(COPY) $** $@
=20
 LIBFILE =3D $(DESTDIR)\lib\afs\afsutil.lib
@@ -53,8 +56,12 @@
 	$(OJT)\errmap_nt.obj \
 	$(OJT)\dirpath.obj \
 	$(OJT)\fileutil.obj \
+	$(OJT)\flipbase64.obj \
 	$(OJT)\secutil_nt.obj
=20
+$(LIBOBJS): $$(@B).c
+	$(C2OBJ) -I..\libadmin\adminutil $**
+
 $(LIBFILE): $(LIBOBJS)
 	$(LIBARCH)
=20
@@ -64,6 +71,3 @@
=20
 clean::
 	$(DEL) $(LIBFILE)
-
-mkdir:
-=09
diff -NurEB --exclude-from=3Dexclude bas/src/util/afsutil.h =
upd/src/util/afsutil.h
--- bas/src/util/afsutil.h	2003-04-10 12:16:25.000000000 -0700
+++ upd/src/util/afsutil.h	2003-04-10 12:16:44.000000000 -0700
@@ -97,6 +97,12 @@
 #ifndef UKERNEL
 #include "afs/ktime.h"
 #endif
-#include "afsutil_prototypes.h"
+/*#include "afsutil_prototypes.h"*/
+
+#if defined(AFS_NT40_ENV)
+typedef __int64 int64_t;
+typedef unsigned __int64 u_int64_t;
+/*typedef char lb64_string_t[12];*/
+#endif
=20
 #endif /* _AFSUTIL_H_ */
diff -NurEB --exclude-from=3Dexclude bas/src/viced/afsfileprocs.c =
upd/src/viced/afsfileprocs.c
--- bas/src/viced/afsfileprocs.c	2003-04-10 12:16:25.000000000 -0700
+++ upd/src/viced/afsfileprocs.c	2003-04-08 16:54:04.000000000 -0700
@@ -109,7 +109,9 @@
 #include "viced_prototypes.h"
 #include "viced.h"
 #include "host.h"
+#if !defined(AFS_NT40_ENV)
 #include <afs/unified_afs.h>
+#endif
 #include <afs/audit.h>
 #include <afs/afsutil.h>
=20
@@ -7020,8 +7022,10 @@
=20
 static int sys2et[512];
=20
+
 void init_sys_error_to_et(void) {
     memset(&sys2et, 0, sizeof(sys2et));
+#if !defined(AFS_NT40_ENV)
     sys2et[EPERM] =3D UAEPERM;
     sys2et[ENOENT] =3D UAENOENT;
     sys2et[ESRCH] =3D UAESRCH;
@@ -7146,6 +7150,7 @@
     sys2et[EDQUOT] =3D UAEDQUOT;
     sys2et[ENOMEDIUM] =3D UAENOMEDIUM;
     sys2et[EMEDIUMTYPE] =3D UAEMEDIUMTYPE;
+#endif
 }
=20
 afs_int32 sys_error_to_et(afs_int32 in) {
diff -NurEB --exclude-from=3Dexclude bas/src/vol/ihandle.h =
upd/src/vol/ihandle.h
--- bas/src/vol/ihandle.h	2003-04-10 12:16:26.000000000 -0700
+++ upd/src/vol/ihandle.h	2003-04-08 16:20:16.000000000 -0700
@@ -128,11 +128,7 @@
=20
 #endif /* DLL_INIT_LIST */
=20
-#ifdef AFS_NT40_ENV
-typedef __int64 Inode;
-#else
 #include <afs/afssyscalls.h>
-#endif
=20
 /* The dir package's page hashing function is dependent upon the layout =
of
  * IHandle_t as well as the containing DirHandle in viced/viced.h. Make
diff -NurEB --exclude-from=3Dexclude bas/src/vol/namei_ops.c =
upd/src/vol/namei_ops.c
--- bas/src/vol/namei_ops.c	2003-04-10 12:16:26.000000000 -0700
+++ upd/src/vol/namei_ops.c	2003-04-08 16:54:04.000000000 -0700
@@ -23,8 +23,26 @@
 #include <dirent.h>
 #include <afs/assert.h>
 #include <string.h>
+#if defined(AFS_NT40_ENV) =20
+#define bzero(D,C)   memset((D), 0, (C))
+#define int32_to_flipbase64(S, A) int64_to_flipbase64(S, =
(u_int64_t)(A))
+#define S_ISDIR(m)      (((m)&(S_IFMT)) =3D=3D (S_IFDIR))
+#define LOCK_EX 2
+#define LOCK_UN 8
+#include <afs/afsutil.h>
+#include <voldefs.h>
+#include <fcntl.h>
+#include <winsock2.h>
+#include <afs/afssyscalls.h>
+#include <afs/afsint.h>
+#include <afs/nfs.h>
+#include <afs/viceinode.h>
+#include <ihandle.h>
+#include <namei_ops.h>
+#else
 #include <sys/file.h>
 #include <sys/param.h>
+#endif
 #include <lock.h>
 #ifdef AFS_AIX_ENV
 #include <sys/lockf.h>
@@ -443,6 +461,7 @@
 }
=20
 int big_vno =3D 0; /* Just in case we ever do 64 bit vnodes. */
+#if !defined(AFS_NT40_ENV)
=20
 /* Derive the name and create it O_EXCL. If that fails we have an =
error.
  * Get the tag from a free column in the link table.
@@ -565,6 +584,7 @@
     fd =3D open(name.n_path, O_RDWR, 0666);
     return fd;
 }
+#endif /*AFS_NT40_ENV*/
=20
 /* Need to detect vol special file and just unlink. In those cases, the
  * handle passed in _is_ for the inode. We only check p1 for the =
special
@@ -1035,6 +1055,7 @@
  *
  * If the resultFile is NULL, then don't call the write routine.
  */
+#if !defined(AFS_NT40_ENV) =20
 int ListViceInodes(char *devname, char *mountedOn, char *resultFile,
 		   int (*judgeInode)(struct ViceInodeInfo *info, int vid),
 		   int singleVolumeNumber, int *forcep,
@@ -1097,7 +1118,7 @@
     }
     return 0;
 }
-
+#endif /*#if defined(AFS_NT40_ENV)  */
=20
 /* namei_ListAFSFiles
  *
@@ -1574,6 +1595,7 @@
  *
  * returns a static string used to print either 32 or 64 bit inode =
numbers.
  */
+#if !defined(AFS_NT40_ENV) =20
 char * PrintInode(char *s, Inode ino)
 {
     static afs_ino_str_t result;=20
@@ -1585,6 +1607,7 @@
     return (char*)s;
 }
=20
+#endif /*#if !defined(AFS_NT40_ENV)  */
=20
 #ifdef DELETE_ZLC
 /* Routines to facilitate removing zero link count files. */
diff -NurEB --exclude-from=3Dexclude bas/src/vol/ntops.c =
upd/src/vol/ntops.c
--- bas/src/vol/ntops.c	2003-04-10 12:16:26.000000000 -0700
+++ upd/src/vol/ntops.c	2003-04-10 11:32:18.000000000 -0700
@@ -28,9 +28,12 @@
 #include <winbase.h>
 #include <lock.h>
 #include <afs/afsutil.h>
+#include <afs/afsutil_prototypes.h>
 #include "nfs.h"
 #include <afs/afsint.h>
+#include <afs/afssyscalls.h>
 #include "ihandle.h"
+#include "viceinode.h"
 #include "vnode.h"
 #include "volume.h"
 #include "viceinode.h"
diff -NurEB --exclude-from=3Dexclude bas/src/vol/voldefs.h =
upd/src/vol/voldefs.h
--- bas/src/vol/voldefs.h	2003-04-10 12:16:26.000000000 -0700
+++ upd/src/vol/voldefs.h	2003-04-08 16:20:16.000000000 -0700
@@ -37,7 +37,7 @@
 #define VMAXPATHLEN 64		/* Maximum length (including null) of a volume
 				   external path name */
=20
-#if defined(AFS_NAMEI_ENV) && !defined(AFS_NT40_ENV)
+#if defined(AFS_NAMEI_ENV) /*&& !defined(AFS_NT40_ENV)*/
 /* INODEDIR holds all the inodes. Since it's name does not begin with =
"V"
  * and it's created when the first volume is created, linear directory
  * searches will find the directory early. If only I had needed this =
before
diff -NurEB --exclude-from=3Dexclude bas/src/volser/NTMakefile =
upd/src/volser/NTMakefile
--- bas/src/volser/NTMakefile	2003-04-10 12:16:26.000000000 -0700
+++ upd/src/volser/NTMakefile	2003-04-08 16:20:16.000000000 -0700
@@ -72,6 +72,14 @@
 =
#########################################################################=
###
 # Build volserver
=20
+VOLOBJS =3D \
+	$(OJT)\namei_ops.obj
+
+VOL =3D ..\vol
+
+$(VOLOBJS): $(VOL)\$$(@B).c
+	$(C2OBJ) -I$(VOL) $**
+
 VOLSERVER_EXEFILE =3D $(DESTDIR)\root.server\usr\afs\bin\volserver.exe
=20
 VOLSERVER_EXEOBJS =3D \
@@ -92,6 +100,7 @@
 	$(DESTDIR)\lib\afs\afsdir.lib \
 	$(DESTDIR)\lib\afs\afsprocmgmt.lib
=20
+#$(VOLSERVER_EXEFILE): $(VOLSERVER_EXEOBJS) $(VOLOBJS) =
$(VOLSERVER_EXELIBS) $(EXEC_LIBS)
 $(VOLSERVER_EXEFILE): $(VOLSERVER_EXEOBJS) $(VOLSERVER_EXELIBS) =
$(EXEC_LIBS)
 	$(EXECONLINK)
 	$(EXEPREP)=20
diff -NurEB --exclude-from=3Dexclude bas/src/volser/volprocs.c =
upd/src/volser/volprocs.c
--- bas/src/volser/volprocs.c	2003-04-10 12:16:26.000000000 -0700
+++ upd/src/volser/volprocs.c	2003-04-08 16:54:04.000000000 -0700
@@ -18,6 +18,10 @@
 #ifdef AFS_NT40_ENV
 #include <fcntl.h>
 #include <winsock2.h>
+#include <afs/afssyscalls.h>
+#include <afs/afsint.h>
+#include <afs/nfs.h>
+#include <afs/viceinode.h>
 #else
 #include <sys/file.h>
 #include <netinet/in.h>
diff -NurEB --exclude-from=3Dexclude bas/src/WINNT/afsd/afs_malloc.h =
upd/src/WINNT/afsd/afs_malloc.h=0A=
--- bas/src/WINNT/afsd/afs_malloc.h	1969-12-31 16:00:00.000000000 -0800=0A=
+++ upd/src/WINNT/afsd/afs_malloc.h	2003-03-10 15:20:10.000000000 -0800=0A=
@@ -0,0 +1,13 @@=0A=
+#ifndef _OSI_ALLOC_123=0A=
+#define _OSI_ALLOC_123=0A=
+#include <malloc.h>=0A=
+/* AFS_NT40_ENV IS ALSO defined for win9x*/=0A=
+#if defined (_DEBUG) && defined (_CRTDBG_MAP_ALLOC)	&& =
defined(AFS_NT40_ENV)=0A=
+#include <crtdbg.h>=0A=
+#define GlobalAlloc(f,s) ((f=3D=3DGMEM_FIXED) ? malloc(s):calloc(1,s))=0A=
+#define GlobalFree(s) free(s)=0A=
+#else=0A=
+#define GlobalAlloc(f,s)  =
HeapAlloc(GetProcessHeap(),((f=3D=3DGMEM_FIXED)?0:HEAP_ZERO_MEMORY),s)=0A=
+#define GlobalFree(s)     HeapFree(GetProcessHeap(),0,s)=0A=
+#endif=0A=
+#endif=0A=

------=_NextPart_000_0006_01C2FF5E.FE9BD770
Content-Type: application/x-zip-compressed;
	name="openafs-snap-2003-04-08-rc1.zip"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
	filename="openafs-snap-2003-04-08-rc1.zip"

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

------=_NextPart_000_0006_01C2FF5E.FE9BD770--