home *** CD-ROM | disk | FTP | other *** search
- /* $Header: /nfs/unmvax/faculty/crowley/x/pt/RCS/tcl.c,v 1.1 1991/10/10 23:46:27 crowley Exp $ */
-
- #include <stdio.h>
- #include "pt.h"
-
- Tcl_Interp * interp = NULL;
-
- char *
- ExecTclCommand( command )
- char * command;
- {
- extern Tcl_Interp * interp;
-
- int result = Tcl_Eval( interp, command, 0, (char **)NULL );
-
- if( *interp->result != 0 && result != TCL_OK )
- printf("%s\n", interp->result);
- return interp->result;
- }
-
- /*ARGSUSED*/
- int
- doPtCommand( clientData, interp, argc, argv )
- ClientData clientData;
- Tcl_Interp * interp;
- int argc;
- char *argv[];
- {
- extern struct window *activeWindow;
- extern int debug;
-
- int i;
- char *args[6];
-
- for( i = 1; i < argc; ++i )
- args[i-1] = argv[i];
- for( ; i <= 6; ++i )
- args[i-1] = "";
- (void)command( (int)clientData, args[0], args[1], args[2], args[3],
- args[4], args[5] );
- return TCL_OK;
- }
-
- /*ARGSUSED*/
- void
- ptTcl(w, event, args, nargs)
- int w;
- XButtonEvent *event;
- String *args;
- Cardinal *nargs;
- {
- extern char msgBuffer[];
- extern Tcl_Interp * interp;
-
- int i;
- char ch, *to, *from, *limit;
-
- to = msgBuffer;
- limit = msgBuffer + MSGBUFFERSIZE - 1;
- *to = '\0'; /* make it empty to begin with */
- for( i = 0; i < *nargs; ++i ) {
- *to++ = ' ';
- from = args[i];
- while( 1 ) {
- if( to >= limit ) {
- sprintf( msgBuffer,
- "Tcl command over %d bytes was ignored.",
- MSGBUFFERSIZE );
- msg( msgBuffer, 1 );
- to = limit - 1;
- break;
- }
- ch = *to++ = *from++;
- if( ch == '\0' ) {
- --to; /* back up over '\0' */
- break;
- }
- }
- }
- (void)ExecTclCommand( msgBuffer );
- }
-
-