[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--