[45861] trunk/dports/devel/expect

markd at macports.org markd at macports.org
Fri Jan 23 11:16:23 PST 2009


Revision: 45861
          http://trac.macports.org/changeset/45861
Author:   markd at macports.org
Date:     2009-01-23 11:16:23 -0800 (Fri, 23 Jan 2009)
Log Message:
-----------
Add a patch for Tcl 8.5.

Modified Paths:
--------------
    trunk/dports/devel/expect/Portfile

Added Paths:
-----------
    trunk/dports/devel/expect/files/
    trunk/dports/devel/expect/files/expect-5.43.0-tcl_8.5.5_fix-1.diff

Modified: trunk/dports/devel/expect/Portfile
===================================================================
--- trunk/dports/devel/expect/Portfile	2009-01-23 18:52:52 UTC (rev 45860)
+++ trunk/dports/devel/expect/Portfile	2009-01-23 19:16:23 UTC (rev 45861)
@@ -5,7 +5,7 @@
 name			expect
 version			5.43.0
 set shortversion	5.43
-revision		3
+revision		4
 platforms		darwin
 categories		devel
 maintainers		markd
@@ -33,6 +33,7 @@
 depends_build		port:tcl
 
 worksrcdir		${name}-${shortversion}
+patchfiles		expect-5.43.0-tcl_8.5.5_fix-1.diff
 
 configure.args		--disable-shared \
 			--mandir=${prefix}/share/man \

Added: trunk/dports/devel/expect/files/expect-5.43.0-tcl_8.5.5_fix-1.diff
===================================================================
--- trunk/dports/devel/expect/files/expect-5.43.0-tcl_8.5.5_fix-1.diff	                        (rev 0)
+++ trunk/dports/devel/expect/files/expect-5.43.0-tcl_8.5.5_fix-1.diff	2009-01-23 19:16:23 UTC (rev 45861)
@@ -0,0 +1,116 @@
+diff -Naur Dbg.c.orig Dbg.c
+--- Dbg.c.orig	2002-03-22 22:11:54.000000000 -0600
++++ Dbg.c	2008-08-24 01:30:15.000000000 -0500
+@@ -9,7 +9,7 @@
+ */
+ 
+ #include <stdio.h>
+-
++#include "expect_cf.h"
+ #include "tcldbgcf.h"
+ #if 0
+ /* tclInt.h drags in stdlib.  By claiming no-stdlib, force it to drag in */
+diff -Naur exp_inter.c.orig exp_inter.c
+--- exp_inter.c.orig	2004-08-17 21:03:00.000000000 -0500
++++ exp_inter.c	2008-08-24 01:28:59.000000000 -0500
+@@ -36,6 +36,7 @@
+ #include <ctype.h>
+ 
+ #include "tcl.h"
++#include "tclInt.h"
+ #include "string.h"
+ 
+ #include "exp_tty_in.h"
+diff -Naur exp_command.c.orig exp_command.c
+--- exp_command.c.orig	2004-08-20 13:18:01.000000000 -0400
++++ exp_command.c	2008-01-12 11:42:45.000000000 -0500
+@@ -2265,6 +2265,8 @@
+ 	/*NOTREACHED*/
+ }
+ 
++static struct exp_cmd_data cmd_data[];
++
+ /*ARGSUSED*/
+ static int
+ Exp_CloseObjCmd(clientData, interp, objc, objv)
+@@ -2311,12 +2313,23 @@
+ 	/* Historical note: we used "close"  long before there was a */
+ 	/* Tcl builtin by the same name. */
+ 
++	/* The code that registered this function as the handler for */
++	/* the "close" command stored away the old handler in the */
++	/* exp_cmd_data for the "close" command. */
++
++	struct exp_cmd_data *cmd_ptr;
+ 	Tcl_CmdInfo info;
++
++	for(cmd_ptr = &cmd_data[0]; cmd_ptr->name; cmd_ptr++) {
++	    if(strncmp(cmd_ptr->name, "close", 5) == 0)
++		break;
++	}
++
+ 	Tcl_ResetResult(interp);
+ 	if (0 == Tcl_GetCommandInfo(interp,"close",&info)) {
+ 	    info.clientData = 0;
+ 	}
+-	return(Tcl_CloseObjCmd(info.clientData,interp,objc_orig,objv_orig));
++	return(cmd_ptr->old_objProc(info.clientData,interp,objc_orig,objv_orig));
+     }
+ 
+     if (chanName) {
+@@ -2961,7 +2974,10 @@
+     /* if successful (i.e., TCL_RETURN is returned) */
+     /* modify the result, so that we will handle it specially */
+ 
+-    int result = Tcl_ReturnObjCmd(clientData,interp,objc,objv);
++    Tcl_CmdInfo info;
++    Tcl_GetCommandInfo(interp, "return", &info);
++
++    int result = info.objProc(clientData,interp,objc,objv);
+     if (result == TCL_RETURN)
+         result = EXP_TCL_RETURN;
+     return result;
+@@ -3062,8 +3078,7 @@
+ 
+ 	for (;c->name;c++) {
+ 		/* if already defined, don't redefine */
+-		if ((c->flags & EXP_REDEFINE) ||
+-		    !(Tcl_FindHashEntry(&globalNsPtr->cmdTable,c->name) ||
++		if (!(Tcl_FindHashEntry(&globalNsPtr->cmdTable,c->name) ||
+ 		      Tcl_FindHashEntry(&currNsPtr->cmdTable,c->name))) {
+ 			if (c->objproc)
+ 				Tcl_CreateObjCommand(interp,c->name,
+@@ -3072,6 +3087,21 @@
+ 				Tcl_CreateCommand(interp,c->name,c->proc,
+ 						  c->data,exp_deleteProc);
+ 		}
++		else if (c->flags & EXP_REDEFINE) { /* unless the REDEFINE flag is present */
++			Tcl_CmdInfo info;
++
++			if (Tcl_GetCommandInfo(interp, c->name, &info)) {
++				c->old_proc	= info.proc;
++				c->old_objProc	= info.objProc;
++			}
++
++			if (c->objproc)
++				Tcl_CreateObjCommand(interp,c->name,
++						     c->objproc,c->data,exp_deleteObjProc);
++			else
++				Tcl_CreateCommand(interp,c->name,c->proc,
++						  c->data,exp_deleteProc);
++		}
+ 		if (!(c->name[0] == 'e' &&
+ 		      c->name[1] == 'x' &&
+ 		      c->name[2] == 'p')
+diff -Naur exp_command.h.orig exp_command.h
+--- exp_command.h.orig	2008-01-12 11:44:11.000000000 -0500
++++ exp_command.h	2008-01-12 11:26:05.000000000 -0500
+@@ -297,6 +297,8 @@
+ 	Tcl_CmdProc	*proc;
+ 	ClientData	data;
+ 	int 		flags;
++	Tcl_CmdProc	*old_proc;     /* these store the procedure for the old command, */
++	Tcl_ObjCmdProc	*old_objProc;  /* if any */
+ };
+ 
+ EXTERN void		exp_create_commands _ANSI_ARGS_((Tcl_Interp *,
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macports-changes/attachments/20090123/2247c588/attachment-0001.html>


More information about the macports-changes mailing list