NAME¶
Tk_Init, Tk_SafeInit - add Tk to an interpreter and make a new Tk application.
SYNOPSIS¶
#include <tk.h>
int
Tk_Init(interp)
int
Tk_SafeInit(interp)
ARGUMENTS¶
- Tcl_Interp *interp (in)
- Interpreter in which to load Tk. Tk should not already be
loaded in this interpreter.
DESCRIPTION¶
Tk_Init is the package initialization procedure for Tk. It is normally
invoked by the
Tcl_AppInit procedure for an application or by the
load command.
Tk_Init adds all of Tk's commands to
interp
and creates a new Tk application, including its main window. If the
initialization is successful
Tk_Init returns
TCL_OK; if there is
an error it returns
TCL_ERROR.
Tk_Init also leaves a result or
error message in
interp->result.
If there is a variable
argv in
interp,
Tk_Init treats the
contents of this variable as a list of options for the new Tk application. The
options may have any of the forms documented for the
wish application
(in fact,
wish uses Tk_Init to process its command-line arguments).
Tk_SafeInit is identical to
Tk_Init except that it removes all Tk
commands that are considered unsafe. Those commands and the reasons for their
exclusion are:
- bell
- Continuous ringing of the bell is a nuisance.
- clipboard
- A malicious script could replace the contents of the
clipboard with the string “ rm -r *” and lead to
surprises when the contents of the clipboard are pasted.
- grab
- Grab can be used to block the user from using any other
applications.
- menu
- Menus can be used to cover the entire screen and to steal
input from the user.
- selection
- See clipboard.
- send
- Send can be used to cause unsafe interpreters to execute
commands.
- tk
- The tk command recreates the send command, which is
unsafe.
- tkwait
- Tkwait can block the containing process forever
- toplevel
- Toplevels can be used to cover the entire screen and to
steal input from the user.
- wm
- If toplevels are ever allowed, wm can be used to remove
decorations, move windows around, etc.
KEYWORDS¶
safe, application, initialization, load, main window