[e8e6c4e] | 1 | Submitted By: Bryan Kadzban <bryan@kadzban.is-a-geek.net>
|
---|
| 2 | Date: 2008-01-12
|
---|
| 3 | Initial Package Version: 5.43
|
---|
| 4 | Upstream status: Not Submitted - Test Version
|
---|
| 5 | Origin: LFS ticket 2126 (http://wiki.linuxfromscratch.org/lfs/ticket/2126)
|
---|
| 6 | Description: Removes references to functions that Tcl 8.5 no longer exposes.
|
---|
| 7 |
|
---|
| 8 | diff -Naur expect-5.43/exp_command.c expect-5.43-patched/exp_command.c
|
---|
| 9 | --- expect-5.43/exp_command.c 2004-08-20 13:18:01.000000000 -0400
|
---|
| 10 | +++ expect-5.43-patched/exp_command.c 2008-01-12 11:42:45.000000000 -0500
|
---|
| 11 | @@ -2265,6 +2265,8 @@
|
---|
| 12 | /*NOTREACHED*/
|
---|
| 13 | }
|
---|
| 14 |
|
---|
| 15 | +static struct exp_cmd_data cmd_data[];
|
---|
| 16 | +
|
---|
| 17 | /*ARGSUSED*/
|
---|
| 18 | static int
|
---|
| 19 | Exp_CloseObjCmd(clientData, interp, objc, objv)
|
---|
| 20 | @@ -2311,12 +2313,23 @@
|
---|
| 21 | /* Historical note: we used "close" long before there was a */
|
---|
| 22 | /* Tcl builtin by the same name. */
|
---|
| 23 |
|
---|
| 24 | + /* The code that registered this function as the handler for */
|
---|
| 25 | + /* the "close" command stored away the old handler in the */
|
---|
| 26 | + /* exp_cmd_data for the "close" command. */
|
---|
| 27 | +
|
---|
| 28 | + struct exp_cmd_data *cmd_ptr;
|
---|
| 29 | Tcl_CmdInfo info;
|
---|
| 30 | +
|
---|
| 31 | + for(cmd_ptr = &cmd_data[0]; cmd_ptr->name; cmd_ptr++) {
|
---|
| 32 | + if(strncmp(cmd_ptr->name, "close", 5) == 0)
|
---|
| 33 | + break;
|
---|
| 34 | + }
|
---|
| 35 | +
|
---|
| 36 | Tcl_ResetResult(interp);
|
---|
| 37 | if (0 == Tcl_GetCommandInfo(interp,"close",&info)) {
|
---|
| 38 | info.clientData = 0;
|
---|
| 39 | }
|
---|
| 40 | - return(Tcl_CloseObjCmd(info.clientData,interp,objc_orig,objv_orig));
|
---|
| 41 | + return(cmd_ptr->old_objProc(info.clientData,interp,objc_orig,objv_orig));
|
---|
| 42 | }
|
---|
| 43 |
|
---|
| 44 | if (chanName) {
|
---|
| 45 | @@ -2961,7 +2974,10 @@
|
---|
| 46 | /* if successful (i.e., TCL_RETURN is returned) */
|
---|
| 47 | /* modify the result, so that we will handle it specially */
|
---|
| 48 |
|
---|
| 49 | - int result = Tcl_ReturnObjCmd(clientData,interp,objc,objv);
|
---|
| 50 | + Tcl_CmdInfo info;
|
---|
| 51 | + Tcl_GetCommandInfo(interp, "return", &info);
|
---|
| 52 | +
|
---|
| 53 | + int result = info.objProc(clientData,interp,objc,objv);
|
---|
| 54 | if (result == TCL_RETURN)
|
---|
| 55 | result = EXP_TCL_RETURN;
|
---|
| 56 | return result;
|
---|
| 57 | @@ -3062,8 +3078,7 @@
|
---|
| 58 |
|
---|
| 59 | for (;c->name;c++) {
|
---|
| 60 | /* if already defined, don't redefine */
|
---|
| 61 | - if ((c->flags & EXP_REDEFINE) ||
|
---|
| 62 | - !(Tcl_FindHashEntry(&globalNsPtr->cmdTable,c->name) ||
|
---|
| 63 | + if (!(Tcl_FindHashEntry(&globalNsPtr->cmdTable,c->name) ||
|
---|
| 64 | Tcl_FindHashEntry(&currNsPtr->cmdTable,c->name))) {
|
---|
| 65 | if (c->objproc)
|
---|
| 66 | Tcl_CreateObjCommand(interp,c->name,
|
---|
| 67 | @@ -3072,6 +3087,21 @@
|
---|
| 68 | Tcl_CreateCommand(interp,c->name,c->proc,
|
---|
| 69 | c->data,exp_deleteProc);
|
---|
| 70 | }
|
---|
| 71 | + else if (c->flags & EXP_REDEFINE) { /* unless the REDEFINE flag is present */
|
---|
| 72 | + Tcl_CmdInfo info;
|
---|
| 73 | +
|
---|
| 74 | + if (Tcl_GetCommandInfo(interp, c->name, &info)) {
|
---|
| 75 | + c->old_proc = info.proc;
|
---|
| 76 | + c->old_objProc = info.objProc;
|
---|
| 77 | + }
|
---|
| 78 | +
|
---|
| 79 | + if (c->objproc)
|
---|
| 80 | + Tcl_CreateObjCommand(interp,c->name,
|
---|
| 81 | + c->objproc,c->data,exp_deleteObjProc);
|
---|
| 82 | + else
|
---|
| 83 | + Tcl_CreateCommand(interp,c->name,c->proc,
|
---|
| 84 | + c->data,exp_deleteProc);
|
---|
| 85 | + }
|
---|
| 86 | if (!(c->name[0] == 'e' &&
|
---|
| 87 | c->name[1] == 'x' &&
|
---|
| 88 | c->name[2] == 'p')
|
---|
| 89 | diff -Naur expect-5.43/exp_command.h expect-5.43-patched/exp_command.h
|
---|
| 90 | --- expect-5.43/exp_command.h 2008-01-12 11:44:11.000000000 -0500
|
---|
| 91 | +++ expect-5.43-patched/exp_command.h 2008-01-12 11:26:05.000000000 -0500
|
---|
| 92 | @@ -297,6 +297,8 @@
|
---|
| 93 | Tcl_CmdProc *proc;
|
---|
| 94 | ClientData data;
|
---|
| 95 | int flags;
|
---|
| 96 | + Tcl_CmdProc *old_proc; /* these store the procedure for the old command, */
|
---|
| 97 | + Tcl_ObjCmdProc *old_objProc; /* if any */
|
---|
| 98 | };
|
---|
| 99 |
|
---|
| 100 | EXTERN void exp_create_commands _ANSI_ARGS_((Tcl_Interp *,
|
---|