From eba8a13a2c1ba9fdfdea1380de636fc3c88824be Mon Sep 17 00:00:00 2001 From: Michael Davidsaver Date: Thu, 2 May 2019 20:18:12 -0700 Subject: [PATCH] iocsh allow setting of error code --- modules/libcom/src/iocsh/iocsh.cpp | 11 +++++++++++ modules/libcom/src/iocsh/iocsh.h | 2 ++ 2 files changed, 13 insertions(+) diff --git a/modules/libcom/src/iocsh/iocsh.cpp b/modules/libcom/src/iocsh/iocsh.cpp index 57e8be671..2e64e8b05 100644 --- a/modules/libcom/src/iocsh/iocsh.cpp +++ b/modules/libcom/src/iocsh/iocsh.cpp @@ -511,6 +511,17 @@ typedef struct { bool errored; } Scope; +int iocshSetError(int err) +{ + Scope *scope; + if (err && iocshScopeId) { + scope = (Scope *) epicsThreadPrivateGet(iocshScopeId); + + if(scope) scope->errored = 1; + } + return err; +} + /* * The body of the command interpreter */ diff --git a/modules/libcom/src/iocsh/iocsh.h b/modules/libcom/src/iocsh/iocsh.h index 84b38f224..2e8dc225e 100644 --- a/modules/libcom/src/iocsh/iocsh.h +++ b/modules/libcom/src/iocsh/iocsh.h @@ -89,6 +89,8 @@ epicsShareFunc int epicsShareAPI iocshCmd(const char *cmd); epicsShareFunc int epicsShareAPI iocshLoad(const char *pathname, const char* macros); epicsShareFunc int epicsShareAPI iocshRun(const char *cmd, const char* macros); +epicsShareFunc int iocshSetError(int err); + /* Makes macros that shadow environment variables work correctly with epicsEnvSet */ epicsShareFunc void epicsShareAPI iocshEnvClear(const char *name);