From 66803b9c8c9c80f271a5a61581c51e95ab3881db Mon Sep 17 00:00:00 2001 From: zimoch <zimoch> Date: Wed, 3 Oct 2007 13:05:05 +0000 Subject: [PATCH] register require to iocsh for 3.14 --- require.c | 33 +++++++++++++++++++++++++++++++++ require.dbd | 1 + 2 files changed, 34 insertions(+) create mode 100644 require.dbd diff --git a/require.c b/require.c index 3541550a..584da637 100644 --- a/require.c +++ b/require.c @@ -13,7 +13,11 @@ #include <epicsVersion.h> #ifndef BASE_VERSION /* This is R3.14.* */ +#include <iocsh.h> extern int iocshCmd (const char *cmd); +#include <dbAccess.h> +#include <epicsExit.h> +#include <epicsExport.h> #endif int dbLoadDatabase(char *filename, char *path, char *substitutions); @@ -246,3 +250,32 @@ int libversionShow(char* pattern) symEach(sysSymTbl, (FUNCPTR)printIfLibversion, (int)pattern); return OK; } + +#ifndef BASE_VERSION +static const iocshArg requireArg0 = { "module", iocshArgString }; +static const iocshArg requireArg1 = { "version", iocshArgString }; +static const iocshArg * const requireArgs[2] = { &requireArg0, &requireArg1 }; +static const iocshFuncDef requireDef = { "require", 2, requireArgs }; +static void requireFunc (const iocshArgBuf *args) +{ + if (require (args[0].sval, args[1].sval) != 0 + && !interruptAccept) + { + /* require failed in startup script before iocInit */ + fprintf (stderr, "Aborting startup script\n"); + epicsExit (1); + } +} + +static void requireRegister(void) +{ + static int firstTime = 1; + if (firstTime) { + iocshRegister (&requireDef, requireFunc); + firstTime = 0; + } +} + +epicsExportRegistrar(requireRegister); + +#endif diff --git a/require.dbd b/require.dbd new file mode 100644 index 00000000..fd7c58b7 --- /dev/null +++ b/require.dbd @@ -0,0 +1 @@ +registrar(requireRegister) -- GitLab