summaryrefslogtreecommitdiffstats
path: root/win/tclAppInit.c
diff options
context:
space:
mode:
Diffstat (limited to 'win/tclAppInit.c')
-rw-r--r--win/tclAppInit.c142
1 files changed, 1 insertions, 141 deletions
diff --git a/win/tclAppInit.c b/win/tclAppInit.c
index 6b20dce..4156a74 100644
--- a/win/tclAppInit.c
+++ b/win/tclAppInit.c
@@ -11,7 +11,7 @@
* 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.22 2005/07/24 22:56:45 dkf Exp $
+ * RCS: @(#) $Id: tclAppInit.c,v 1.23 2006/01/05 04:50:24 davygrvy Exp $
*/
#include "tcl.h"
@@ -28,13 +28,6 @@ extern Tcl_PackageInitProc TclObjTest_Init;
#if defined(__GNUC__)
static void setargv(int *argcPtr, char ***argvPtr);
#endif /* __GNUC__ */
-static BOOL WINAPI sigHandler(DWORD fdwCtrlType);
-static Tcl_AsyncProc asyncExit;
-static void AppInitExitHandler(ClientData clientData);
-
-static Tcl_AsyncHandler exitToken = NULL;
-static DWORD exitErrorCode = 0;
-
/*
*----------------------------------------------------------------------
@@ -136,20 +129,6 @@ Tcl_AppInit(interp)
return TCL_ERROR;
}
- /*
- * Install a signal handler to the win32 console tclsh is running in.
- */
-
- SetConsoleCtrlHandler(sigHandler, TRUE);
- exitToken = Tcl_AsyncCreate(asyncExit, NULL);
-
- /*
- * This exit handler will be used to free the resources allocated in this
- * file.
- */
-
- Tcl_CreateExitHandler(AppInitExitHandler, NULL);
-
#ifdef TCL_TEST
if (Tcltest_Init(interp) == TCL_ERROR) {
return TCL_ERROR;
@@ -211,38 +190,6 @@ Tcl_AppInit(interp)
}
/*
- *----------------------------------------------------------------------
- *
- * AppInitExitHandler --
- *
- * This function is called to cleanup the app init resources before Tcl
- * is unloaded.
- *
- * Results:
- * None.
- *
- * Side effects:
- * Frees the saved argv and deletes the async exit handler.
- *
- *----------------------------------------------------------------------
- */
-
-static void
-AppInitExitHandler(
- ClientData clientData) /* Not Used. */
-{
- if (exitToken != NULL) {
- /*
- * This should be safe to do even if we are in an async exit right
- * now.
- */
-
- Tcl_AsyncDelete(exitToken);
- exitToken = NULL;
- }
-}
-
-/*
*-------------------------------------------------------------------------
*
* setargv --
@@ -362,93 +309,6 @@ setargv(argcPtr, argvPtr)
#endif /* __GNUC__ */
/*
- *----------------------------------------------------------------------
- *
- * asyncExit --
- *
- * The AsyncProc for the exitToken.
- *
- * Results:
- * doesn't actually return.
- *
- * Side effects:
- * tclsh cleanly exits.
- *
- *----------------------------------------------------------------------
- */
-
-int
-asyncExit(
- ClientData clientData, /* Not Used. */
- Tcl_Interp *interp, /* interp in context, if any. */
- int code) /* result of last command, if any. */
-{
- Tcl_Exit((int)exitErrorCode);
-
- /* NOTREACHED */
- return code;
-}
-
-/*
- *----------------------------------------------------------------------
- *
- * sigHandler --
- *
- * Signal handler for the Win32 OS. Catches Ctrl+C, Ctrl+Break and other
- * exits. This is needed so tclsh can do it's real clean-up and not an
- * unclean crash terminate.
- *
- * Results:
- * TRUE.
- *
- * Side effects:
- * Effects the way the app exits from a signal. This is an operating
- * system supplied thread and unsafe to call ANY Tcl commands except for
- * Tcl_AsyncMark.
- *
- *----------------------------------------------------------------------
- */
-
-BOOL WINAPI
-sigHandler(
- DWORD fdwCtrlType) /* One of the CTRL_*_EVENT constants. */
-{
- HANDLE hStdIn;
-
- if (!exitToken) {
- /*
- * Async token must have been destroyed, punt gracefully.
- */
- return FALSE;
- }
-
- /*
- * If Tcl is currently executing some bytecode or in the eventloop, this
- * will cause Tcl to enter asyncExit at the next command boundry.
- */
-
- exitErrorCode = fdwCtrlType;
- Tcl_AsyncMark(exitToken);
-
- /*
- * This will cause Tcl_Gets in Tcl_Main() to drop-out with an <EOF> should
- * it be blocked on input and our Tcl_AsyncMark didn't grab the attention
- * of the interpreter.
- */
-
- hStdIn = GetStdHandle(STD_INPUT_HANDLE);
- if (hStdIn) {
- CloseHandle(hStdIn);
- }
-
- /*
- * Indicate to the OS not to call the default terminator.
- */
-
- return TRUE;
-}
-
-/*
* Local Variables:
* mode: c
* c-basic-offset: 4