diff --git a/require.c b/require.c index 26fc93c0fff23f2f5aacc3f5e5113d8514c916fc..ddc51db86e583704c632d694f146a8619d75d1fa 100644 --- a/require.c +++ b/require.c @@ -1574,4 +1574,71 @@ require_priv(const char *module, char *t; t = getenv("TEMPLATES"); if (globalTemplates && (!t || strcmp(globalTemplates, t) != 0)) - pute \ No newline at end of file + putenvprintf("TEMPLATES=%s", globalTemplates); + } + + if (loaded && args == NULL) + return 0; /* no need to execute startup script twice if not with new arguments */ + + return status; +} + +static const iocshFuncDef requireDef = { + "require", 3, (const iocshArg *[]){ + &(iocshArg){"module", iocshArgString}, + &(iocshArg){"[version]", iocshArgString}, + &(iocshArg){"[substitutions]", iocshArgString}, + }}; + +static void requireFunc(const iocshArgBuf *args) +{ + require(args[0].sval, args[1].sval, args[2].sval); +} + +static const iocshFuncDef libversionShowDef = { + "libversionShow", 1, (const iocshArg *[]){ + &(iocshArg){"outputfile", iocshArgString}, + }}; + +static void libversionShowFunc(const iocshArgBuf *args) +{ + libversionShow(args[0].sval); +} + +static const iocshFuncDef ldDef = { + "ld", 1, (const iocshArg *[]){ + &(iocshArg){"library", iocshArgString}, + }}; + +static void ldFunc(const iocshArgBuf *args) +{ + loadlib(args[0].sval); +} + +static const iocshFuncDef pathAddDef = { + "pathAdd", 2, (const iocshArg *[]){ + &(iocshArg){"ENV_VARIABLE", iocshArgString}, + &(iocshArg){"directory", iocshArgString}, + }}; + +static void pathAddFunc(const iocshArgBuf *args) +{ + pathAdd(args[0].sval, args[1].sval); +} + +static void requireRegister(void) +{ + static int firstTime = 1; + if (firstTime) + { + firstTime = 0; + iocshRegister(&requireDef, requireFunc); + iocshRegister(&libversionShowDef, libversionShowFunc); + iocshRegister(&ldDef, ldFunc); + iocshRegister(&pathAddDef, pathAddFunc); + registerExternalModules(); + } +} + +epicsExportRegistrar(requireRegister); +epicsExportAddress(int, requireDebug);