69 # ifndef HAVE_ITCLDECLS_H
70 # define RESOURCE_INCLUDED
89 Tcl_Namespace * nsPtr,
char *
pattern,
90 int allowOverwrite ) );
93 #ifndef Tcl_GetGlobalNamespace_TCL_DECLARE
94 EXTERN Tcl_Namespace * Tcl_GetGlobalNamespace
_ANSI_ARGS_( (
109 #if !defined ( _WIN32 )
110 extern char * strrchr
_ANSI_ARGS_( ( CONST
char *
string,
int c ) );
113 #define isatty( a ) 0
135 static const char *
name = NULL;
140 {
"-file", TK_ARGV_STRING, (
char *) NULL, (
char *) &
fileName,
141 "File from which to read commands" },
142 {
"-e", TK_ARGV_STRING, (
char *) NULL, (
char *) &
script,
143 "Script to execute on startup" },
144 {
"-geometry", TK_ARGV_STRING, (
char *) NULL, (
char *) &
geometry,
145 "Initial geometry for window" },
146 {
"-display", TK_ARGV_STRING, (
char *) NULL, (
char *) &
display,
148 {
"-name", TK_ARGV_STRING, (
char *) NULL, (
char *) &
name,
149 "Name to use for application" },
150 {
"-sync", TK_ARGV_CONSTANT, (
char *) 1, (
char *) &
synchronize,
151 "Use synchronous mode for display server" },
152 { (
char *) NULL, TK_ARGV_END, (
char *) NULL, (
char *) NULL,
192 #ifdef PL_HAVE_PTHREAD
196 Tcl_FindExecutable(
argv[0] );
197 interp = Tcl_CreateInterp();
210 fprintf( stderr,
"%s\n", Tcl_GetStringResult(
interp ) );
224 name = strrchr( p,
'/' );
243 Tcl_SetVar2(
interp,
"env",
"DISPLAY",
display, TCL_GLOBAL_ONLY );
255 Tcl_SetVar(
interp,
"argv0",
name, TCL_GLOBAL_ONLY );
257 if ( Tcl_Init(
interp ) == TCL_ERROR )
259 fprintf( stderr,
"Tcl initialisation failed: %s\n", Tcl_GetStringResult(
interp ) );
262 if ( Tk_Init(
interp ) == TCL_ERROR )
264 fprintf( stderr,
"Tk initialisation failed: %s\n", Tcl_GetStringResult(
interp ) );
268 if ( Itcl_Init(
interp ) == TCL_ERROR )
270 fprintf( stderr,
"Itcl initialisation failed: %s\n", Tcl_GetStringResult(
interp ) );
275 if ( Itk_Init(
interp ) == TCL_ERROR )
277 fprintf( stderr,
"Itk initialisation failed: %s\n", Tcl_GetStringResult(
interp ) );
290 if ( Tcl_Import(
interp, Tcl_GetGlobalNamespace(
interp ),
291 "::itk::*", 1 ) != TCL_OK )
293 fprintf( stderr,
"Itk initialisation failed: %s\n", Tcl_GetStringResult(
interp ) );
297 if ( Tcl_Import(
interp, Tcl_GetGlobalNamespace(
interp ),
298 "::itcl::*", 1 ) != TCL_OK )
300 fprintf( stderr,
"Itk initialisation failed: %s\n", Tcl_GetStringResult(
interp ) );
304 if ( Tcl_Eval(
interp,
"auto_mkindex_parser::slavehook { _%@namespace import -force ::itcl::* ::itk::* }" ) != TCL_OK )
306 fprintf( stderr,
"Itk initialisation failed: %s\n", Tcl_GetStringResult(
interp ) );
318 args = Tcl_Merge(
argc - 1, ( CONST
char * CONST * )
argv + 1 );
319 Tcl_SetVar(
interp,
"argv", args, TCL_GLOBAL_ONLY );
321 sprintf(
buf,
"%d",
argc - 1 );
322 Tcl_SetVar(
interp,
"argc",
buf, TCL_GLOBAL_ONLY );
335 Tcl_SetVar(
interp,
"tcl_interactive",
336 ( (
fileName == NULL ) &&
tty ) ?
"1" :
"0", TCL_GLOBAL_ONLY );
350 fprintf( stderr,
"(*AppInit) failed: %s\n", Tcl_GetStringResult(
interp ) );
360 code = Tcl_VarEval(
interp,
"wm geometry . ",
geometry, (
char *) NULL );
361 if ( code != TCL_OK )
363 fprintf( stderr,
"%s\n", Tcl_GetStringResult(
interp ) );
375 if ( code != TCL_OK )
389 code = Tcl_VarEval(
interp,
"source \"",
fileName,
"\"", (
char *) NULL );
390 if ( code != TCL_OK )
406 if ( RcFileName != NULL )
412 fullName = Tcl_TildeSubst(
interp, RcFileName, &
buffer );
413 if ( fullName == NULL )
415 fprintf( stderr,
"%s\n", Tcl_GetStringResult(
interp ) );
419 f = fopen( fullName,
"r" );
422 code = Tcl_EvalFile(
interp, fullName );
423 if ( code != TCL_OK )
425 fprintf( stderr,
"%s\n", Tcl_GetStringResult(
interp ) );
430 Tcl_DStringFree( &
buffer );
433 #if !defined ( MAC_TCL ) && !defined ( _WIN32 )
434 Tk_CreateFileHandler( 0, TK_READABLE,
StdinProc, (ClientData) 0 );
458 Tcl_Eval(
interp,
"exit" );
462 msg = Tcl_GetVar(
interp,
"errorInfo", TCL_GLOBAL_ONLY );
465 msg = Tcl_GetStringResult(
interp );
467 fprintf( stderr,
"%s\n", msg );
496 #define BUFFER_SIZE 4000
498 static int gotPartial = 0;
503 #if !defined ( _WIN32 )
504 count = (int) read( fileno( stdin ), input,
BUFFER_SIZE );
506 count = fread( input,
BUFFER_SIZE,
sizeof (
char ), stdin );
514 Tcl_Eval(
interp,
"exit" );
519 #if !defined ( MAC_TCL ) && !defined ( _WIN32 )
520 Tk_DeleteFileHandler( 0 );
530 cmd = Tcl_DStringAppend( &
command, input, count );
533 if ( ( input[count - 1] !=
'\n' ) && ( input[count - 1] !=
';' ) )
538 if ( !Tcl_CommandComplete( cmd ) )
553 #if !defined ( MAC_TCL ) && !defined ( _WIN32 )
554 Tk_CreateFileHandler( 0, 0,
StdinProc, (ClientData) 0 );
556 code = Tcl_RecordAndEval(
interp, cmd, 0 );
557 #if !defined ( MAC_TCL ) && !defined ( _WIN32 )
558 Tk_CreateFileHandler( 0, TK_READABLE,
StdinProc, (ClientData) 0 );
561 res = Tcl_GetStringResult(
interp );
564 if ( ( code != TCL_OK ) || (
tty ) )
566 printf(
"%s\n", res );
601 Tcl_Interp * interploc;
606 const char *promptCmd;
609 promptCmd = Tcl_GetVar( interploc,
610 partial ?
"tcl_prompt2" :
"tcl_prompt1", TCL_GLOBAL_ONLY );
611 if ( promptCmd == NULL )
616 fputs(
"% ", stdout );
621 code = Tcl_Eval( interploc, promptCmd );
622 if ( code != TCL_OK )
624 Tcl_AddErrorInfo( interploc,
625 "\n (script that generates prompt)" );
626 fprintf( stderr,
"%s\n", Tcl_GetStringResult( interploc ) );