summaryrefslogtreecommitdiffstats
path: root/win
diff options
context:
space:
mode:
authorstanton <stanton>1999-02-10 23:31:10 (GMT)
committerstanton <stanton>1999-02-10 23:31:10 (GMT)
commitbcc73119d3301482376ec5d7876b49b28e615e75 (patch)
treed13f4f917b1cc9bcb348bfb160c43812ede3fcc1 /win
parent346e62b0d3e9ae361bfab66add2936891f6f299e (diff)
downloadtcl-bcc73119d3301482376ec5d7876b49b28e615e75.zip
tcl-bcc73119d3301482376ec5d7876b49b28e615e75.tar.gz
tcl-bcc73119d3301482376ec5d7876b49b28e615e75.tar.bz2
* unix/mkLinks:
* doc/SetVar.3: * generic/tcl.h: * generic/tclVar.c: Restored Tcl_ObjGetVar2 and Tcl_ObjSetVar2 from 8.0. Renamed Tcl_Get/SetObjVar2 to Tcl_GetVar2Ex and Tcl_SetVar2Ex. * Merged 8.0.5b2 patches
Diffstat (limited to 'win')
-rw-r--r--win/README.binary67
-rw-r--r--win/makefile.vc94
-rw-r--r--win/tclAppInit.c13
-rw-r--r--win/tclWinInit.c7
-rw-r--r--win/tclWinReg.c6
-rw-r--r--win/tclWinSock.c24
-rw-r--r--win/winDumpExts.c16
7 files changed, 119 insertions, 108 deletions
diff --git a/win/README.binary b/win/README.binary
index ab1a51a..38b185f 100644
--- a/win/README.binary
+++ b/win/README.binary
@@ -1,6 +1,6 @@
Tcl/Tk 8.1b1 for Windows, Binary Distribution
-RCS: @(#) $Id: README.binary,v 1.2.2.3 1998/12/11 19:33:59 stanton Exp $
+RCS: @(#) $Id: README.binary,v 1.2.2.4 1999/02/10 23:31:27 stanton Exp $
1. Introduction
---------------
@@ -91,31 +91,29 @@ See Encoding.3 for procedures that create new encodings and
translate between encodings. See ToUpper.3 for procedures
that perform case conversions on UTF-8 strings.
-Binary data. Binary data is handled differently in
-Tcl 8.1 than in Tcl 8.0. Tcl 8.1 uses the UTF-8 facilities to represent
-binary data: the character value zero is represented with a multi-byte
-sequence, so that (once again) strings in Tcl 8.1 never contain null bytes.
-This means that binary data is now accepted everywhere in Tcl and Tk (in
-Tcl 8.0 the support for binary data was incomplete).
-If you have C code that needs to manipulate the bytes of binary data (as
-opposed to just passing the data through) you should use a new object
-type called "byte array". See the manual entry ByteArrObj.3
-for information about procedures such as
-Tcl_GetByteArrayFromObj.
-New regular expressions. Tcl 8.1 contains a brand new
-implementation of regular expressions from Henry Spencer. This new version
-supports almost all of the Perl extensions and it also handles UTF-8 and
-binary data.
-Multi-Threading.
-Tcl 8.1 is multi-thread safe.
-Each thread can contain several Tcl interpreters, but a given interpreter
-can not be accessed from more than one thread.
-Each thread runs its own event loop, and you can post events
-to other threads. There is not yet support for tcl level use of threading
-except for a test command. (Compile tcltest and try testthread.)
-Tk 8.1 is not yet
-multi-thread safe, and may never be due to limitations
-of Xlib.
+Binary data. Binary data is handled differently in Tcl 8.1 than in
+Tcl 8.0. Tcl 8.1 uses the UTF-8 facilities to represent binary data:
+the character value zero is represented with a multi-byte sequence, so
+that (once again) strings in Tcl 8.1 never contain null bytes. This
+means that binary data is now accepted everywhere in Tcl and Tk (in
+Tcl 8.0 the support for binary data was incomplete). If you have C
+code that needs to manipulate the bytes of binary data (as opposed to
+just passing the data through) you should use a new object type called
+"byte array". See the manual entry ByteArrObj.3 for information about
+procedures such as Tcl_GetByteArrayFromObj.
+
+New regular expressions. Tcl 8.1 contains a brand new implementation
+of regular expressions from Henry Spencer. This new version supports
+almost all of the Perl extensions and it also handles UTF-8 and binary
+data.
+
+Multi-Threading. Tcl 8.1 is multi-thread safe. Each thread can
+contain several Tcl interpreters, but a given interpreter can not be
+accessed from more than one thread. Each thread runs its own event
+loop, and you can post events to other threads. There is not yet
+support for tcl level use of threading except for a test
+command. (Compile tcltest and try testthread.) Tk 8.1 is not yet
+multi-thread safe, and may never be due to limitations of Xlib.
What's new in Tk 8.1
@@ -141,18 +139,14 @@ It is implemented using DDE and there is a new dde command that allows
Tk applications to use DDE to communicate with other Windows
applications. send still doesn't work on the Macintosh.
-3. Embedding. Application embedding now works on the Macintosh, as
-long as both the container and embedded application are in the same
-process.
-
-4. Configuration options. There is a new library of C procedures for
+3. Configuration options. There is a new library of C procedures for
manipulating widget configuration options using Tcl_Objs instead of
strings. This should eventually make Tk much more efficient. Label,
button, checkbutton, radiobutton, and menu widgets have been modified
to use the new library. See SetOptions.3 for information on the new C
APIs.
-5. More Tcl_Obj support. Several additional C library procedures have
+4. More Tcl_Obj support. Several additional C library procedures have
been added to support Tcl_Objs. See the manual entries 3DBorder.3,
GetAnchor.3, GetBitmap.3, GetColor.3, GetCursor.3, GetFont.3,
GetJustify.3, and GetPixels.3.
@@ -211,15 +205,6 @@ syntax changes in order to support all the new features:
When greedy and non-greedy quantifiers are mixed, it's complicated and
difficult to explain.
-- The procedure Tcl_EvalObj has a new argument flags, and the
- procedure Tcl_GlobalEvalObj has been removed (Tcl_EvalObj now
- provides all of its functionality).
-
-- The procedures Tcl_ObjSetVar2 and Tcl_ObjGetVar2 have been renamed
- Tcl_SetObjVar2 and Tcl_GetObjVar2 for consistency with other C APIs;
- the name arguments have been changed from objects to strings.
-
-
Known Problems With These Releases
Both the internationalization support and the new regular expression
diff --git a/win/makefile.vc b/win/makefile.vc
index 7327475..86dc1c7 100644
--- a/win/makefile.vc
+++ b/win/makefile.vc
@@ -4,7 +4,9 @@
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
#
# Copyright (c) 1995-1996 Sun Microsystems, Inc.
-# RCS: @(#) $Id: makefile.vc,v 1.1.2.13 1999/01/29 00:20:49 stanton Exp $
+# Copyright (c) 1998-1999 by Scriptics Corporation.
+#
+# RCS: @(#) $Id: makefile.vc,v 1.1.2.14 1999/02/10 23:31:28 stanton Exp $
# Does not depend on the presence of any environment variables in
# order to compile tcl; all needed information is derived from
@@ -13,9 +15,7 @@
#
# Project directories
#
-# ROOT = top of source tree
-#
-# TMPDIR = location where .obj files should be stored during build
+# ROOT = top of source tree
#
# TOOLS32 = location of VC++ 32-bit development tools. Note that the
# VC++ 2.0 header files are broken, so you need to use the
@@ -27,7 +27,7 @@
# is not available, then the 16-bit code will not be built.
# Tcl will still run without the 16-bit code, but...
# A. Under Windows 3.X any calls to the exec command
-# will return an error.
+# will return an error.
# B. A 16-bit program to test the behavior of the exec
# command under NT and 95 will not be built.
# INSTALLDIR = where the install- targets should copy the binaries and
@@ -35,11 +35,11 @@
#
ROOT = ..
-TOOLS32 = c:\progra~1\devstudio\vc
-TOOLS32_rc = c:\progra~1\devstudio\sharedide
+TOOLS32 = c:\program files\devstudio\vc
+TOOLS32_rc = c:\program files\devstudio\sharedide
TOOLS16 = c:\msvc
-INSTALLDIR = c:\progra~1\Tcl
+INSTALLDIR = c:\program files\Tcl
# Set this to the appropriate value of /MACHINE: for your platform
MACHINE = IX86
@@ -191,17 +191,17 @@ TCLOBJS = \
$(TMPDIR)\tclWinThrd.obj \
$(TMPDIR)\tclWinTime.obj
-cc32 = $(TOOLS32)\bin\cl.exe
-link32 = $(TOOLS32)\bin\link.exe
-rc32 = $(TOOLS32_rc)\bin\rc.exe
-include32 = -I$(TOOLS32)\include
+cc32 = "$(TOOLS32)\bin\cl.exe"
+link32 = "$(TOOLS32)\bin\link.exe"
+rc32 = "$(TOOLS32_rc)\bin\rc.exe"
+include32 = -I"$(TOOLS32)\include"
-cc16 = $(TOOLS16)\bin\cl.exe
-link16 = $(TOOLS16)\bin\link.exe
-rc16 = $(TOOLS16)\bin\rc.exe
-include16 = -I$(TOOLS16)\include
+cc16 = "$(TOOLS16)\bin\cl.exe"
+link16 = "$(TOOLS16)\bin\link.exe"
+rc16 = "$(TOOLS16)\bin\rc.exe"
+include16 = -I"$(TOOLS16)\include"
-WINDIR = $(ROOT)\win
+WINDIR = $(ROOT)\win
GENERICDIR = $(ROOT)\generic
TCL_INCLUDES = -I$(WINDIR) -I$(GENERICDIR)
@@ -229,9 +229,9 @@ lcommon = /NODEFAULTLIB /RELEASE /NOLOGO
# declarations for use on Intel i386, i486, and Pentium systems
!IF "$(MACHINE)" == "IX86"
DLLENTRY = @12
-lflags = $(lcommon) /MACHINE:$(MACHINE)
+lflags = $(lcommon) /MACHINE:$(MACHINE)
!ELSE
-lflags = $(lcommon) /MACHINE:$(MACHINE)
+lflags = $(lcommon) /MACHINE:$(MACHINE)
!ENDIF
conlflags = $(lflags) -subsystem:console -entry:mainCRTStartup
@@ -247,7 +247,7 @@ libcdll = msvcrt$(DBGX).lib oldnames.lib
!ENDIF
baselibs = kernel32.lib $(optlibs) advapi32.lib user32.lib
-winlibs = $(baselibs) gdi32.lib comdlg32.lib winspool.lib
+winlibs = $(baselibs) gdi32.lib comdlg32.lib winspool.lib
guilibs = $(libc) $(winlibs)
conlibs = $(libc) $(baselibs)
@@ -259,14 +259,8 @@ conlibsdll = $(libcdll) $(baselibs)
######################################################################
!IF "$(NODEBUG)" == "1"
-!IF "$(MACHINE)" == "ALPHA"
-# MSVC on Alpha doesn't understand -Ot
-cdebug = -O2i -Gs -GD
-!ELSE
-#cdebug = -Oti -Gs -GD
# This cranks the optimization level to maximize speed
cdebug = -O2 -Gs -GD
-!ENDIF
!ELSE
cdebug = -Z7 -Od -WX
!ENDIF
@@ -290,8 +284,8 @@ cflags = $(ccommon) -D_ALPHA_=1
!ENDIF
!ENDIF
-cvars = -DWIN32 -D_WIN32
-cvarsmt = $(cvars) -D_MT
+cvars = -DWIN32 -D_WIN32
+cvarsmt = $(cvars) -D_MT
cvarsdll = $(cvarsmt) -D_DLL
!IF "$(NODEBUG)" == "1"
@@ -313,7 +307,8 @@ install: install-binaries install-libraries
test: setup $(TCLTEST) dlls $(CAT16) $(CAT32)
copy $(WINDIR)\pkgIndex.tcl $(OUTDIR)
set TCL_LIBRARY=$(ROOT)/library
- $(TCLTEST) <<
+ $(TCLTEST) << "$(TCLREGDLL)"
+ load [lindex $$argv 0] registry
cd ../tests
source all
<<
@@ -324,14 +319,14 @@ setup:
$(DUMPEXTS): $(WINDIR)\winDumpExts.c
$(cc32) $(CON_CFLAGS) -Fo$(TMPDIR)\ $?
- set LIB=$(TOOLS32)\lib
+ set LIB="$(TOOLS32)\lib"
$(link32) $(ldebug) $(conlflags) $(guilibs) -out:$@ \
$(TMPDIR)\winDumpExts.obj
$(TCLLIB): $(TCLDLL)
$(TCLDLL): $(TCLOBJS) $(TMPDIR)\tcl.def $(TMPDIR)\tcl.res
- set LIB=$(TOOLS32)\lib
+ set LIB="$(TOOLS32)\lib"
$(link32) $(ldebug) $(dlllflags) -def:$(TMPDIR)\tcl.def \
-out:$@ $(TMPDIR)\tcl.res $(guilibsdll) @<<
$(TCLOBJS)
@@ -340,14 +335,14 @@ $(TCLOBJS)
$(TCLPLUGINLIB): $(TCLPLUGINDLL)
$(TCLPLUGINDLL): $(TCLOBJS) $(TMPDIR)\plugin.def $(TMPDIR)\tcl.res
- set LIB=$(TOOLS32)\lib
+ set LIB="$(TOOLS32)\lib"
$(link32) $(ldebug) $(dlllflags) -def:$(TMPDIR)\plugin.def \
-out:$@ $(TMPDIR)\tcl.res $(guilibsdll) @<<
$(TCLOBJS)
<<
$(TCLSH): $(TCLSHOBJS) $(TCLLIB) $(TMPDIR)\tclsh.res
- set LIB=$(TOOLS32)\lib
+ set LIB="$(TOOLS32)\lib"
$(link32) $(ldebug) $(conlflags) $(TMPDIR)\tclsh.res -stack:2300000 \
-out:$@ $(conlibsdll) $(TCLLIB) $(TCLSHOBJS)
@@ -357,14 +352,14 @@ $(TCLSHP): $(TCLSHOBJS) $(TCLPLUGINLIB) $(TMPDIR)\tclsh.res
-out:$@ $(conlibsdll) $(TCLPLUGINLIB) $(TCLSHOBJS)
$(TCLTEST): $(TCLTESTOBJS) $(TCLLIB) $(TMPDIR)\tclsh.res
- set LIB=$(TOOLS32)\lib
+ set LIB="$(TOOLS32)\lib"
$(link32) $(ldebug) $(conlflags) $(TMPDIR)\tclsh.res -stack:2300000 \
-out:$@ $(conlibsdll) $(TCLLIB) $(TCLTESTOBJS)
$(TCL16DLL): $(WINDIR)\tcl16.rc $(WINDIR)\tclWin16.c
if exist $(cc16) $(cc16) @<<
$(DLL16_CFLAGS) -Fo$(TMPDIR)\ $(WINDIR)\tclWin16.c
-<<
+<<
@copy << $(TMPDIR)\tclWin16.def > nul
LIBRARY $(@B);dll
EXETYPE WINDOWS
@@ -386,17 +381,17 @@ $(TMPDIR)\tclWin16.def
$(TCLPIPEDLL): $(WINDIR)\stub16.c
$(cc32) $(CON_CFLAGS) -Fo$(TMPDIR)\ $(WINDIR)\stub16.c
- set LIB=$(TOOLS32)\lib
+ set LIB="$(TOOLS32)\lib"
$(link32) $(ldebug) $(conlflags) -out:$@ $(TMPDIR)\stub16.obj $(guilibs)
$(TCLREGDLL): $(TMPDIR)\tclWinReg.obj
- set LIB=$(TOOLS32)\lib
+ set LIB="$(TOOLS32)\lib"
$(link32) $(ldebug) $(dlllflags) -out:$@ $(TMPDIR)\tclWinReg.obj \
$(conlibsdll) $(TCLLIB)
$(CAT32): $(WINDIR)\cat.c
$(cc32) $(CON_CFLAGS) -Fo$(TMPDIR)\ $?
- set LIB=$(TOOLS32)\lib
+ set LIB="$(TOOLS32)\lib"
$(link32) $(conlflags) -out:$@ -stack:16384 $(TMPDIR)\cat.obj $(conlibs)
$(CAT16): $(WINDIR)\cat.c
@@ -420,14 +415,22 @@ install-binaries: $(TCLSH)
@mkd $(LIB_INSTALL_DIR)
@echo installing $(TCLDLLNAME)
@copy $(TCLDLL) $(BIN_INSTALL_DIR)
+ @copy $(TCLLIB) $(LIB_INSTALL_DIR)
@echo installing $(TCLSH)
@copy $(TCLSH) $(BIN_INSTALL_DIR)
+ @echo installing $(TCLPIPEDLLNAME)
+ @copy $(TCLPIPEDLL) $(BIN_INSTALL_DIR)
+ @echo installing $(TCLREGDLLNAME)
+ @copy $(TCLREGDLL) $(LIB_INSTALL_DIR)
install-libraries:
-@mkd $(LIB_INSTALL_DIR)
-@mkd $(INCLUDE_INSTALL_DIR)
-@mkd $(SCRIPT_INSTALL_DIR)
-@mkd $(SCRIPT_INSTALL_DIR)\http1.0
+ @copy << "$(SCRIPT_INSTALL_DIR)\pkgIndex.tcl"
+package ifneeded registry 1.0 "load [list [file join $$dir .. $(TCLREGDLLNAME)]] registry"
+<<
-@copy $(ROOT)\library\http1.0\http.tcl $(SCRIPT_INSTALL_DIR)\http1.0
-@copy $(ROOT)\library\http1.0\pkgIndex.tcl $(SCRIPT_INSTALL_DIR)\http1.0
-@mkd $(SCRIPT_INSTALL_DIR)\http2.0
@@ -455,8 +458,7 @@ $(TMPDIR)\tclWinInit.obj: $(WINDIR)\tclWinInit.c
-Fo$(TMPDIR)\ $?
$(TMPDIR)\testMain.obj: $(WINDIR)\tclAppInit.c
- $(cc32) $(TCL_CFLAGS) -DSTATIC_BUILD -DTCL_TEST \
- -Fo$(TMPDIR)\testMain.obj $?
+ $(cc32) $(TCL_CFLAGS)-DTCL_TEST -Fo$(TMPDIR)\testMain.obj $?
$(TMPDIR)\tclTest.obj: $(GENERICDIR)\tclTest.c
$(cc32) $(TCL_CFLAGS) -Fo$@ $?
@@ -468,7 +470,7 @@ $(TMPDIR)\tclWinTest.obj: $(WINDIR)\tclWinTest.c
$(cc32) $(TCL_CFLAGS) -Fo$@ $?
$(TMPDIR)\tclAppInit.obj : $(WINDIR)\tclAppInit.c
- $(cc32) $(TCL_CFLAGS) -DSTATIC_BUILD -Fo$@ $?
+ $(cc32) $(TCL_CFLAGS) -Fo$@ $?
# Dedependency rules
@@ -509,15 +511,15 @@ $(GENERICDIR)\regguts.h: $(GENERICDIR)\regcustom.h
$(TCL_DEFINES) $<
clean:
- -@del $(OUTDIR)\*.exp
+ -@del $(OUTDIR)\*.exp
-@del $(OUTDIR)\*.lib
-@del $(OUTDIR)\*.dll
-@del $(OUTDIR)\*.exe
-@del $(OUTDIR)\*.pdb
-@del $(TMPDIR)\*.pch
- -@del $(TMPDIR)\*.obj
- -@del $(TMPDIR)\*.res
- -@del $(TMPDIR)\*.def
- -@del $(TMPDIR)\*.exe
+ -@del $(TMPDIR)\*.obj
+ -@del $(TMPDIR)\*.res
+ -@del $(TMPDIR)\*.def
+ -@del $(TMPDIR)\*.exe
-@rmd $(OUTDIR)
-@rmd $(TMPDIR)
diff --git a/win/tclAppInit.c b/win/tclAppInit.c
index c648b20..236001a 100644
--- a/win/tclAppInit.c
+++ b/win/tclAppInit.c
@@ -6,11 +6,12 @@
* program must be built in Win32 console mode to work properly.
*
* Copyright (c) 1996-1997 by Sun Microsystems, Inc.
+ * Copyright (c) 1998-1999 by Scriptics Corporation.
*
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tclAppInit.c,v 1.1.2.3 1998/10/06 02:59:07 stanton Exp $
+ * RCS: @(#) $Id: tclAppInit.c,v 1.1.2.4 1999/02/10 23:31:28 stanton Exp $
*/
#include "tcl.h"
@@ -18,12 +19,12 @@
#include <locale.h>
#ifdef TCL_TEST
-EXTERN int Procbodytest_Init _ANSI_ARGS_((Tcl_Interp *interp));
-EXTERN int Procbodytest_SafeInit _ANSI_ARGS_((Tcl_Interp *interp));
-EXTERN int Tcltest_Init _ANSI_ARGS_((Tcl_Interp *interp));
-EXTERN int TclObjTest_Init _ANSI_ARGS_((Tcl_Interp *interp));
+extern int Procbodytest_Init _ANSI_ARGS_((Tcl_Interp *interp));
+extern int Procbodytest_SafeInit _ANSI_ARGS_((Tcl_Interp *interp));
+extern int Tcltest_Init _ANSI_ARGS_((Tcl_Interp *interp));
+extern int TclObjTest_Init _ANSI_ARGS_((Tcl_Interp *interp));
#ifdef TCL_THREADS
-EXTERN int TclThread_Init _ANSI_ARGS_((Tcl_Interp *interp));
+extern int TclThread_Init _ANSI_ARGS_((Tcl_Interp *interp));
#endif
#endif /* TCL_TEST */
diff --git a/win/tclWinInit.c b/win/tclWinInit.c
index 0a4c73b..64bcc58 100644
--- a/win/tclWinInit.c
+++ b/win/tclWinInit.c
@@ -4,11 +4,12 @@
* Contains the Windows-specific interpreter initialization functions.
*
* Copyright (c) 1994-1997 Sun Microsystems, Inc.
+ * Copyright (c) 1998-1999 by Scriptics Corporation.
*
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tclWinInit.c,v 1.1.2.4 1998/11/11 04:08:39 stanton Exp $
+ * RCS: @(#) $Id: tclWinInit.c,v 1.1.2.5 1999/02/10 23:31:28 stanton Exp $
*/
#include "tclWinInt.h"
@@ -525,7 +526,7 @@ TclpSetVariables(interp)
*/
Tcl_SetVar2(interp, "tcl_platform", "debug", "1",
- TCL_GLOBAL_ONLY);
+ TCL_GLOBAL_ONLY);
#endif
/*
@@ -585,7 +586,7 @@ Tcl_Init(interp)
if (pathPtr == NULL) {
pathPtr = Tcl_NewObj();
}
- Tcl_SetObjVar2(interp, "tcl_libPath", NULL, pathPtr, TCL_GLOBAL_ONLY);
+ Tcl_SetVar2Ex(interp, "tcl_libPath", NULL, pathPtr, TCL_GLOBAL_ONLY);
return Tcl_Eval(interp, initScript);
}
diff --git a/win/tclWinReg.c b/win/tclWinReg.c
index 2fae2b2..9c487b2 100644
--- a/win/tclWinReg.c
+++ b/win/tclWinReg.c
@@ -6,11 +6,12 @@
* loadable extension in a separate DLL.
*
* Copyright (c) 1997 by Sun Microsystems, Inc.
+ * Copyright (c) 1998-1999 by Scriptics Corporation.
*
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tclWinReg.c,v 1.1.2.2 1998/09/24 23:59:53 stanton Exp $
+ * RCS: @(#) $Id: tclWinReg.c,v 1.1.2.3 1999/02/10 23:31:28 stanton Exp $
*/
#include <tcl.h>
@@ -61,7 +62,8 @@
static char *rootKeyNames[] = {
"HKEY_LOCAL_MACHINE", "HKEY_USERS", "HKEY_CLASSES_ROOT",
- "HKEY_CURRENT_USER", "HKEY_CURRENT_CONFIG", NULL
+ "HKEY_CURRENT_USER", "HKEY_CURRENT_CONFIG",
+ "HKEY_PERFORMANCE_DATA", "HKEY_DYN_DATA", NULL
};
static HKEY rootKeys[] = {
diff --git a/win/tclWinSock.c b/win/tclWinSock.c
index 303dcb2..9a205a3 100644
--- a/win/tclWinSock.c
+++ b/win/tclWinSock.c
@@ -8,7 +8,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tclWinSock.c,v 1.1.2.4 1998/12/12 01:37:06 lfb Exp $
+ * RCS: @(#) $Id: tclWinSock.c,v 1.1.2.5 1999/02/10 23:31:29 stanton Exp $
*/
#include "tclWinInt.h"
@@ -781,7 +781,7 @@ SocketEventProc(evPtr, flags)
infoPtr->readyEvents &= ~(FD_READ);
}
}
- if (events & FD_WRITE) {
+ if (events & (FD_WRITE | FD_CONNECT)) {
mask |= TCL_WRITABLE;
}
@@ -1829,6 +1829,24 @@ TcpGetOptionProc(instanceData, interp, optionName, dsPtr)
len = strlen(optionName);
}
+ if ((len > 1) && (optionName[1] == 'e') &&
+ (strncmp(optionName, "-error", len) == 0)) {
+ int optlen;
+ int err, ret;
+
+ optlen = sizeof(int);
+ ret = TclWinGetSockOpt(sock, SOL_SOCKET, SO_ERROR,
+ (char *)&err, &optlen);
+ if (ret == SOCKET_ERROR) {
+ err = (*winSock.WSAGetLastError)();
+ }
+ if (err) {
+ TclWinConvertWSAError(err);
+ Tcl_DStringAppend(dsPtr, Tcl_ErrnoMsg(Tcl_GetErrno()), -1);
+ }
+ return TCL_OK;
+ }
+
if ((len == 0) ||
((len > 1) && (optionName[1] == 'p') &&
(strncmp(optionName, "-peername", len) == 0))) {
@@ -1956,7 +1974,7 @@ TcpWatchProc(instanceData, mask)
infoPtr->watchEvents |= (FD_READ|FD_CLOSE|FD_ACCEPT);
}
if (mask & TCL_WRITABLE) {
- infoPtr->watchEvents |= (FD_WRITE);
+ infoPtr->watchEvents |= (FD_WRITE|FD_CONNECT);
}
/*
diff --git a/win/winDumpExts.c b/win/winDumpExts.c
index 36b03c3..cbf5eeb 100644
--- a/win/winDumpExts.c
+++ b/win/winDumpExts.c
@@ -19,7 +19,7 @@
* compiler other than Visual C++.
*----------------------------------------------------------------------
*
- * RCS: @(#) $Id: winDumpExts.c,v 1.1.2.1 1998/09/24 23:59:54 stanton Exp $
+ * RCS: @(#) $Id: winDumpExts.c,v 1.1.2.2 1999/02/10 23:31:29 stanton Exp $
*/
#include <windows.h>
@@ -236,8 +236,14 @@ DumpExternals(PIMAGE_SYMBOL pSymbolTable, FILE *fout, unsigned cSymbols)
strcpy(symbol, s);
}
s = symbol;
- f = strchr(s, '@');
- if (f) {
+
+ /*
+ * Skip to the last @ and ensure it is followed by digits,
+ * otherwise it is probably part of a C++ mangled name.
+ */
+
+ f = strrchr(s, '@');
+ if (f && f[1] >= '0' && f[1] <= '9') {
*f = 0;
}
#if defined(_MSC_VER) && defined(_X86_)
@@ -468,10 +474,6 @@ main(int argc, char **argv)
if (arg == argc) {
goto Usage;
}
- fprintf(fout, "LIBRARY %s\n", dllname);
- fprintf(fout, "EXETYPE WINDOWS\n");
- fprintf(fout, "CODE PRELOAD MOVEABLE DISCARDABLE\n");
- fprintf(fout, "DATA PRELOAD MOVEABLE MULTIPLE\n\n");
fprintf(fout, "EXPORTS\n");
}