[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