summaryrefslogtreecommitdiff
path: root/network/cicb/tcl_continue_error.diff
diff options
context:
space:
mode:
authorB. Watson <yalhcru@gmail.com>2014-02-05 08:54:02 +0700
committerErik Hanson <erik@slackbuilds.org>2014-02-08 11:10:10 -0600
commitf05385edeef1b12adb2f9033e1fbddbada1c6caa (patch)
tree1327ecbe03d11e29358dd23fd35e90f8f48eba3d /network/cicb/tcl_continue_error.diff
parentb9fe91a6a6ca4c16369b0867db2e65f51ab39984 (diff)
downloadslackbuilds-f05385edeef1b12adb2f9033e1fbddbada1c6caa.tar.gz
network/cicb: Added (ICB client).
Signed-off-by: Willy Sudiarto Raharjo <willysr@slackbuilds.org>
Diffstat (limited to 'network/cicb/tcl_continue_error.diff')
-rw-r--r--network/cicb/tcl_continue_error.diff45
1 files changed, 45 insertions, 0 deletions
diff --git a/network/cicb/tcl_continue_error.diff b/network/cicb/tcl_continue_error.diff
new file mode 100644
index 0000000000..dcba1b865c
--- /dev/null
+++ b/network/cicb/tcl_continue_error.diff
@@ -0,0 +1,45 @@
+diff -wNaur -xCVS cicb-5.1.1b3/icb/parse.c cicb/icb/parse.c
+--- cicb-5.1.1b3/icb/parse.c 2009-03-23 02:51:53.000000000 -0400
++++ cicb/icb/parse.c 2013-07-05 02:16:27.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* $Id: parse.c,v 1.20 2009/03/23 06:51:53 hoche Exp $ */
++/* $Id: parse.c,v 1.21 2013/07/05 06:16:27 hoche Exp $ */
+
+ /* parse a line from the user */
+
+@@ -8,6 +8,9 @@
+
+ #define ARRAY_SIZE(x) (sizeof (x) / sizeof (x[0]))
+
++#define TCL_CONTINUE_ERROR_MSG "invoked \"continue\" outside of a loop"
++#define TCL_IGNORE 666
++
+
+ /* This is similar to Tcl_VarEval, but it treats each string as a separate
+ list element, rather than concat-ing the strings together and then
+@@ -76,6 +79,14 @@
+ if (status == TCL_CONTINUE) {
+ send_command (cmd, args);
+ status = TCL_OK;
++ } else if (status == TCL_ERROR) {
++
++ /* handle the dreaded "invoked continue" message */
++ char *errmsg = (char*)Tcl_GetStringResult (interp);
++ if (strcmp(errmsg, TCL_CONTINUE_ERROR_MSG) == 0) {
++ send_command (cmd, args);
++ status = TCL_IGNORE;
++ }
+ }
+
+ return status;
+@@ -122,7 +133,9 @@
+ putl (result, PL_SL);
+ }
+ error_mode = 0;
+-
++ } else if (status == TCL_IGNORE) {
++ /* do nothing */
++ error_mode = 0;
+ } else {
+ /* Report an error. */
+ char* errmsg = "";