summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--doc/InitSubSyst.341
-rw-r--r--generic/tcl.h6
-rw-r--r--generic/tclEncoding.c25
-rw-r--r--[-rwxr-xr-x]library/clock.tcl0
-rw-r--r--[-rwxr-xr-x]win/tclWinFile.c0
5 files changed, 68 insertions, 4 deletions
diff --git a/doc/InitSubSyst.3 b/doc/InitSubSyst.3
new file mode 100644
index 0000000..3abdba3
--- /dev/null
+++ b/doc/InitSubSyst.3
@@ -0,0 +1,41 @@
+'\"
+'\" Copyright (c) 2013 Tcl Core Team
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\"
+.so man.macros
+.TH Tcl_InitSubsystems 3 8.6.1 Tcl "Tcl Library Procedures"
+.BS
+.SH NAME
+Tcl_InitSubsystems \- initialize the Tcl library.
+.SH SYNOPSIS
+.nf
+\fB#include <tcl.h>\fR
+.sp
+const char *
+\fBTcl_InitSubsystems\fR(\fIpanicProc\fR)
+.SH ARGUMENTS
+.SH ARGUMENTS
+.AS Tcl_PanicProc *panicProc
+.AP Tcl_PanicProc *panicProc in
+Desired panic function, for error reporting. If NULL, the default
+panicProc is used, which normally writes the message to stderr.
+.BE
+
+.SH DESCRIPTION
+.PP
+The \fBTcl_InitSubsystems\fR procedure initializes the Tcl
+library. This procedure is typically invoked as the very
+first thing in the application's main program.
+.PP
+\fBTcl_InitSubsystems\fR is very similar in use to
+\fBTcl_FindExecutable\fR. It can be used when Tcl is
+used as utility library, no other encodings than utf8,
+iso8859-1 or unicode are used, and no interest exists in the
+value of \fBinfo nameofexecutable\fR. The system encoding will not
+be extracted from the environment, but falls back to iso8859-1.
+.PP
+The return value is the Tcl version.
+.SH KEYWORDS
+binary, executable file
diff --git a/generic/tcl.h b/generic/tcl.h
index a08edde..7b75414 100644
--- a/generic/tcl.h
+++ b/generic/tcl.h
@@ -2424,6 +2424,12 @@ const char * TclTomMathInitializeStubs(Tcl_Interp *interp,
* TODO - tommath stubs export goes here!
*/
+/* Tcl_InitSubsystems, see TIP #414 */
+
+#ifndef USE_TCL_STUBS
+ EXTERN const char *Tcl_InitSubsystems(TCL_NORETURN1 Tcl_PanicProc *panicProc);
+#endif
+
/*
* Public functions that are not accessible via the stubs table.
* Tcl_GetMemoryInfo is needed for AOLserver. [Bug 1868171]
diff --git a/generic/tclEncoding.c b/generic/tclEncoding.c
index 4ae017d..88f4d3a 100644
--- a/generic/tclEncoding.c
+++ b/generic/tclEncoding.c
@@ -1440,20 +1440,37 @@ Tcl_UtfToExternal(
/*
*---------------------------------------------------------------------------
*
- * Tcl_FindExecutable --
+ * Tcl_InitSubsystems/Tcl_FindExecutable --
*
- * This function computes the absolute path name of the current
- * application, given its argv[0] value.
+ * This function initializes everything needed for the Tcl library
+ * to be able to operate.
*
* Results:
* None.
*
* Side effects:
* The absolute pathname for the application is computed and stored to be
- * returned later be [info nameofexecutable].
+ * returned later by [info nameofexecutable].
*
*---------------------------------------------------------------------------
*/
+MODULE_SCOPE const TclStubs tclStubs;
+
+static const struct {
+ const TclStubs *stubs;
+ const char version[12];
+} stubInfo = {
+ &tclStubs, TCL_PATCH_LEVEL
+};
+
+const char *
+Tcl_InitSubsystems(TCL_NORETURN1 Tcl_PanicProc *panicProc)
+{
+ Tcl_SetPanicProc(panicProc);
+ TclInitSubsystems();
+ return stubInfo.version;
+}
+
#undef Tcl_FindExecutable
void
Tcl_FindExecutable(
diff --git a/library/clock.tcl b/library/clock.tcl
index bfdf832..bfdf832 100755..100644
--- a/library/clock.tcl
+++ b/library/clock.tcl
diff --git a/win/tclWinFile.c b/win/tclWinFile.c
index f6e3a4b..f6e3a4b 100755..100644
--- a/win/tclWinFile.c
+++ b/win/tclWinFile.c