17 #include "epicsStdlib.h"
18 #include "epicsString.h"
20 #include "epicsMutex.h"
22 #include "dbStaticLib.h"
23 #include "dbFldTypes.h"
25 #include "dbAccessDefs.h"
26 #include <epicsTypes.h>
27 #include <epicsTime.h>
28 #include <epicsThread.h>
29 #include <epicsString.h>
30 #include <epicsTimer.h>
31 #include <epicsMutex.h>
38 #include <registryFunction.h>
40 #include <epicsExport.h>
44 epicsShareFunc std::string epicsShareAPI
setIOCName(
const char* iocName)
46 const char *iocBootDir = NULL, *old_iocName = macEnvExpand(
"$(IOCNAME=)");
51 else if (old_iocName && *old_iocName)
53 iocBootDir = old_iocName;
57 iocBootDir = macEnvExpand(
"$(IOC)");
59 if (iocBootDir == NULL || *iocBootDir ==
'\0')
64 std::string iocBootDir_s = iocBootDir;
65 std::transform(iocBootDir_s.begin(), iocBootDir_s.end(), iocBootDir_s.begin(), ::toupper);
66 std::replace(iocBootDir_s.begin(), iocBootDir_s.end(),
'-',
'_');
67 std::string ioc_name, ioc_group;
68 if (!iocBootDir_s.compare(0, 3,
"IOC"))
70 ioc_name = iocBootDir_s.substr(3);
74 ioc_name = iocBootDir_s;
77 size_t pos = ioc_name.find(
"_IOC_");
78 if (pos != std::string::npos)
80 ioc_group = ioc_name.substr(0, pos);
81 ioc_name.erase(pos, strlen(
"_IOC"));
83 else if ( (pos = ioc_name.rfind(
"_")) != std::string::npos )
85 if (atoi(ioc_name.substr(pos).c_str()) > 0)
87 ioc_group = ioc_name.substr(0, pos);
98 epicsEnvSet(
"IOCNAME", ioc_name.c_str());
99 epicsEnvSet(
"IOCGROUP", ioc_group.c_str());
105 const char* iocName = macEnvExpand(
"$(IOCNAME=)");
106 if (iocName == NULL || *iocName ==
'\0')
109 iocName = macEnvExpand(
"$(IOCNAME)");
111 return (iocName != NULL ? iocName :
"");
116 const char* iocGroup = macEnvExpand(
"$(IOCGROUP=)");
117 if (iocGroup == NULL || *iocGroup ==
'\0')
120 iocGroup = macEnvExpand(
"$(IOCGROUP)");
122 return (iocGroup != NULL ? iocGroup :
"");
129 static const iocshArg
setInitArg0 = {
"iocName", iocshArgString };
144 std::cout << iocName;
150 std::cout << iocGroup;
static void groupInitCallFunc(const iocshArgBuf *args)
epicsShareFunc std::string epicsShareAPI getIOCName()
static void setInitCallFunc(const iocshArgBuf *args)
static void iocnameRegister(void)
static const iocshFuncDef getInitFuncDef
epicsShareFunc std::string epicsShareAPI setIOCName(const char *iocName)
static const iocshFuncDef groupInitFuncDef
static const iocshArg setInitArg0
The name of the ioc.
static const iocshArg *const setInitArgs[]
static const iocshFuncDef setInitFuncDef
epicsShareFunc std::string epicsShareAPI getIOCGroup()
static void getInitCallFunc(const iocshArgBuf *args)
epicsExportRegistrar(dbLoadRecordsFuncsRegister)