71 # ifndef HAVE_ITCLDECLS_H
72 # define RESOURCE_INCLUDED
91 Tcl_Namespace * nsPtr,
char *
pattern,
92 int allowOverwrite ) );
95 #ifndef Tcl_GetGlobalNamespace_TCL_DECLARE
96 EXTERN Tcl_Namespace * Tcl_GetGlobalNamespace
_ANSI_ARGS_( (
111 #if !defined ( __WIN32__ )
112 extern char * strrchr
_ANSI_ARGS_( ( CONST
char *
string,
int c ) );
115 #define isatty( a ) 0
137 static const char *
name = NULL;
142 {
"-file", TK_ARGV_STRING, (
char *) NULL, (
char *) &
fileName,
143 "File from which to read commands" },
144 {
"-e", TK_ARGV_STRING, (
char *) NULL, (
char *) &
script,
145 "Script to execute on startup" },
146 {
"-geometry", TK_ARGV_STRING, (
char *) NULL, (
char *) &
geometry,
147 "Initial geometry for window" },
148 {
"-display", TK_ARGV_STRING, (
char *) NULL, (
char *) &
display,
150 {
"-name", TK_ARGV_STRING, (
char *) NULL, (
char *) &
name,
151 "Name to use for application" },
152 {
"-sync", TK_ARGV_CONSTANT, (
char *) 1, (
char *) &
synchronize,
153 "Use synchronous mode for display server" },
154 { (
char *) NULL, TK_ARGV_END, (
char *) NULL, (
char *) NULL,
187 int ( *
AppInit )( Tcl_Interp *interp ) )
194 #ifdef PL_HAVE_PTHREAD
198 Tcl_FindExecutable( argv[0] );
199 interp = Tcl_CreateInterp();
201 Tcl_InitMemory( interp );
209 if ( Tk_ParseArgv( interp, (Tk_Window) NULL, &argc, argv, argTable, 0 )
212 fprintf( stderr,
"%s\n", Tcl_GetStringResult( interp ) );
218 if ( fileName != NULL )
226 name = strrchr( p,
'/' );
243 if ( display != NULL )
245 Tcl_SetVar2( interp,
"env",
"DISPLAY", display, TCL_GLOBAL_ONLY );
257 Tcl_SetVar( interp,
"argv0", name, TCL_GLOBAL_ONLY );
259 if ( Tcl_Init( interp ) == TCL_ERROR )
261 fprintf( stderr,
"Tcl initialisation failed: %s\n", Tcl_GetStringResult( interp ) );
264 if ( Tk_Init( interp ) == TCL_ERROR )
266 fprintf( stderr,
"Tk initialisation failed: %s\n", Tcl_GetStringResult( interp ) );
270 if ( Itcl_Init( interp ) == TCL_ERROR )
272 fprintf( stderr,
"Itcl initialisation failed: %s\n", Tcl_GetStringResult( interp ) );
277 if ( Itk_Init( interp ) == TCL_ERROR )
279 fprintf( stderr,
"Itk initialisation failed: %s\n", Tcl_GetStringResult( interp ) );
292 if ( Tcl_Import( interp, Tcl_GetGlobalNamespace( interp ),
293 "::itk::*", 1 ) != TCL_OK )
295 fprintf( stderr,
"Itk initialisation failed: %s\n", Tcl_GetStringResult( interp ) );
299 if ( Tcl_Import( interp, Tcl_GetGlobalNamespace( interp ),
300 "::itcl::*", 1 ) != TCL_OK )
302 fprintf( stderr,
"Itk initialisation failed: %s\n", Tcl_GetStringResult( interp ) );
306 if ( Tcl_Eval( interp,
"auto_mkindex_parser::slavehook { _%@namespace import -force ::itcl::* ::itk::* }" ) != TCL_OK )
308 fprintf( stderr,
"Itk initialisation failed: %s\n", Tcl_GetStringResult( interp ) );
320 args = Tcl_Merge( argc - 1, ( CONST
char * CONST * )argv + 1 );
321 Tcl_SetVar( interp,
"argv", args, TCL_GLOBAL_ONLY );
323 sprintf( buf,
"%d", argc - 1 );
324 Tcl_SetVar( interp,
"argc", buf, TCL_GLOBAL_ONLY );
327 if ( geometry != NULL )
329 Tcl_SetVar( interp,
"geometry", geometry, TCL_GLOBAL_ONLY );
337 Tcl_SetVar( interp,
"tcl_interactive",
338 ( ( fileName == NULL ) && tty ) ?
"1" :
"0", TCL_GLOBAL_ONLY );
350 if ( ( *
AppInit )( interp ) != TCL_OK )
352 fprintf( stderr,
"(*AppInit) failed: %s\n", Tcl_GetStringResult( interp ) );
360 if ( geometry != NULL )
362 code = Tcl_VarEval( interp,
"wm geometry . ", geometry, (
char *) NULL );
363 if ( code != TCL_OK )
365 fprintf( stderr,
"%s\n", Tcl_GetStringResult( interp ) );
374 if ( script != NULL )
376 code = Tcl_VarEval( interp, script, (
char *) NULL );
377 if ( code != TCL_OK )
389 if ( fileName != NULL )
391 code = Tcl_VarEval( interp,
"source ", fileName, (
char *) NULL );
392 if ( code != TCL_OK )
408 if ( RcFileName != NULL )
414 fullName = Tcl_TildeSubst( interp, RcFileName, &buffer );
415 if ( fullName == NULL )
417 fprintf( stderr,
"%s\n", Tcl_GetStringResult( interp ) );
421 f = fopen( fullName,
"r" );
424 code = Tcl_EvalFile( interp, fullName );
425 if ( code != TCL_OK )
427 fprintf( stderr,
"%s\n", Tcl_GetStringResult( interp ) );
432 Tcl_DStringFree( &buffer );
435 #if !defined ( MAC_TCL ) && !defined ( __WIN32__ )
436 Tk_CreateFileHandler( 0, TK_READABLE,
StdinProc, (ClientData) 0 );
444 Tcl_DStringInit( &command );
460 Tcl_Eval( interp,
"exit" );
464 msg = Tcl_GetVar( interp,
"errorInfo", TCL_GLOBAL_ONLY );
467 msg = Tcl_GetStringResult( interp );
469 fprintf( stderr,
"%s\n", msg );
470 Tcl_Eval( interp, errorExitCmd );
498 #define BUFFER_SIZE 4000
500 static int gotPartial = 0;
505 #if !defined ( __WIN32__ )
506 count = (int) read( fileno( stdin ), input,
BUFFER_SIZE );
508 count = fread( input,
BUFFER_SIZE,
sizeof (
char ), stdin );
516 Tcl_Eval( interp,
"exit" );
521 #if !defined ( MAC_TCL ) && !defined ( __WIN32__ )
522 Tk_DeleteFileHandler( 0 );
532 cmd = Tcl_DStringAppend( &command, input, count );
535 if ( ( input[count - 1] !=
'\n' ) && ( input[count - 1] !=
';' ) )
540 if ( !Tcl_CommandComplete( cmd ) )
555 #if !defined ( MAC_TCL ) && !defined ( __WIN32__ )
556 Tk_CreateFileHandler( 0, 0,
StdinProc, (ClientData) 0 );
558 code = Tcl_RecordAndEval( interp, cmd, 0 );
559 #if !defined ( MAC_TCL ) && !defined ( __WIN32__ )
560 Tk_CreateFileHandler( 0, TK_READABLE,
StdinProc, (ClientData) 0 );
562 Tcl_DStringFree( &command );
563 res = Tcl_GetStringResult( interp );
566 if ( ( code != TCL_OK ) || ( tty ) )
568 printf(
"%s\n", res );
579 Prompt( interp, gotPartial );
603 Tcl_Interp * interploc;
608 const char *promptCmd;
611 promptCmd = Tcl_GetVar( interploc,
612 partial ?
"tcl_prompt2" :
"tcl_prompt1", TCL_GLOBAL_ONLY );
613 if ( promptCmd == NULL )
618 fputs(
"% ", stdout );
623 code = Tcl_Eval( interploc, promptCmd );
624 if ( code != TCL_OK )
626 Tcl_AddErrorInfo( interploc,
627 "\n (script that generates prompt)" );
628 fprintf( stderr,
"%s\n", Tcl_GetStringResult( interploc ) );