Attachment "exec.diff" to
ticket [1476191fff]
added by
fishybell
2006-04-25 22:24:43.
diff -ruN tcl.org/generic/tclIOCmd.c tcl/generic/tclIOCmd.c
--- tcl.org/generic/tclIOCmd.c 2006-04-24 17:00:19.000000000 -0600
+++ tcl/generic/tclIOCmd.c 2006-04-24 17:05:10.000000000 -0600
@@ -800,19 +800,19 @@
char *string;
Tcl_Channel chan;
CONST char *argStorage[NUM_ARGS];
- int argc, background, i, index, keepNewline, result, skip, length;
+ int argc, background, i, index, keepNewline, ignoreStderr, result, skip, length;
static CONST char *options[] = {
- "-keepnewline", "--", NULL
+ "-keepnewline", "-ignorestderr", "--", NULL
};
enum options {
- EXEC_KEEPNEWLINE, EXEC_LAST
+ EXEC_KEEPNEWLINE, EXEC_IGNORESTDERR, EXEC_LAST
};
/*
- * Check for a leading "-keepnewline" argument.
+ * Check for a leading "-keepnewline" and "-ignorestderr" arguments.
*/
- keepNewline = 0;
+ keepNewline = 0; ignoreStderr = 0;
for (skip = 1; skip < objc; skip++) {
string = Tcl_GetString(objv[skip]);
if (string[0] != '-') {
@@ -824,6 +824,8 @@
}
if (index == EXEC_KEEPNEWLINE) {
keepNewline = 1;
+ } else if (index == EXEC_IGNORESTDERR) {
+ ignoreStderr = 1;
} else {
skip++;
break;
@@ -866,7 +868,7 @@
}
argv[argc] = NULL;
chan = Tcl_OpenCommandChannel(interp, argc, argv,
- (background ? 0 : TCL_STDOUT | TCL_STDERR));
+ (background ? 0 : ignoreStderr ? TCL_STDOUT : TCL_STDOUT | TCL_STDERR));
/*
* Free the argv array if malloc'ed storage was used.