summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog13
-rw-r--r--generic/tclPipe.c20
-rw-r--r--tests/socket.test8
3 files changed, 35 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index 3171f3f..f59888f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,16 @@
+2006-03-15 Andreas Kupries <andreask@activestate.com>
+
+ * tests/socket.test: Extended the timeout in socket-11.11 from 10
+ to 40 seconds to allow for really slow machines. Also extended
+ actual/expected results with value of variable 'done' to make it
+ clearer when a test fails due to a timeout. [Bug 792159].
+
+2006-03-14 Andreas Kupries <andreask@activestate.com>
+
+ * generic/tclPipe.c (TclCreatePipeline): Modified the processing
+ of pipebars to fail if the last bar is followed only by
+ redirections. [Bug 768659].
+
2006-03-14 Andreas Kupries <andreask@activestate.com>
* doc/fconfigure.n: Clarified that -translation is binary is
diff --git a/generic/tclPipe.c b/generic/tclPipe.c
index accfd62..c1097ca 100644
--- a/generic/tclPipe.c
+++ b/generic/tclPipe.c
@@ -10,7 +10,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tclPipe.c,v 1.7.2.4 2006/01/16 19:31:18 rmax Exp $
+ * RCS: @(#) $Id: tclPipe.c,v 1.7.2.5 2006/03/16 00:35:58 andreas_kupries Exp $
*/
#include "tclInt.h"
@@ -508,7 +508,7 @@ TclCreatePipeline(interp, argc, argv, pidArrayPtr, inPipePtr,
int errorRelease = 0;
CONST char *p;
CONST char *nextArg;
- int skip, lastBar, lastArg, i, j, atOK, flags, errorToOutput = 0;
+ int skip, lastBar, lastArg, i, j, atOK, flags, needCmd, errorToOutput = 0;
Tcl_DString execBuffer;
TclFile pipeIn;
TclFile curInFile, curOutFile, curErrFile;
@@ -546,6 +546,7 @@ TclCreatePipeline(interp, argc, argv, pidArrayPtr, inPipePtr,
lastBar = -1;
cmdCount = 1;
+ needCmd = 1;
for (i = 0; i < argc; i++) {
errorToOutput = 0;
skip = 0;
@@ -565,6 +566,7 @@ TclCreatePipeline(interp, argc, argv, pidArrayPtr, inPipePtr,
}
lastBar = i;
cmdCount++;
+ needCmd = 1;
break;
case '<':
@@ -706,6 +708,11 @@ TclCreatePipeline(interp, argc, argv, pidArrayPtr, inPipePtr,
}
}
break;
+
+ default:
+ /* Got a command word, not a redirection */
+ needCmd = 0;
+ break;
}
if (skip != 0) {
@@ -717,6 +724,15 @@ TclCreatePipeline(interp, argc, argv, pidArrayPtr, inPipePtr,
}
}
+ if (needCmd) {
+ /* We had a bar followed only by redirections. */
+
+ Tcl_SetResult(interp,
+ "illegal use of | or |& in command",
+ TCL_STATIC);
+ goto error;
+ }
+
if (inputFile == NULL) {
if (inputLiteral != NULL) {
/*
diff --git a/tests/socket.test b/tests/socket.test
index 0018a0a..9a53b35 100644
--- a/tests/socket.test
+++ b/tests/socket.test
@@ -10,7 +10,7 @@
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
#
-# RCS: @(#) $Id: socket.test,v 1.26.2.5 2004/10/28 04:53:12 dgp Exp $
+# RCS: @(#) $Id: socket.test,v 1.26.2.6 2006/03/16 00:35:59 andreas_kupries Exp $
# Running socket tests with a remote server:
# ------------------------------------------
@@ -1303,12 +1303,12 @@ test socket-11.11 {testing spurious events} {socket doTestsWithRemoteServer} {
}
set c [socket $remoteServerIP 2836]
fileevent $c readable "readlittle $c"
- set timer [after 10000 "set done timed_out"]
+ set timer [after 40000 "set done timed_out"]
vwait done
after cancel $timer
sendCommand {close $socket10_13_test_server}
- list $spurious $len
-} {0 2690}
+ list $spurious $len $done
+} {0 2690 1}
test socket-11.12 {testing EOF stickyness} {socket doTestsWithRemoteServer} {
set counter 0