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