From 1cb0c5b4d0428a136f81f5446860fd58c611527b Mon Sep 17 00:00:00 2001 From: Dirk Zimoch Date: Thu, 27 Sep 2018 13:35:10 +0200 Subject: [PATCH 1/6] Fix command line functions: print error if required arguments are missing --- modules/database/src/ioc/db/dbAccess.c | 11 ++++++++++- modules/database/src/ioc/db/dbBkpt.c | 12 ++++++++++++ modules/database/src/ioc/db/dbNotify.c | 6 +++++- modules/database/src/ioc/db/dbState.c | 5 +++++ modules/database/src/ioc/db/db_test.c | 12 ++++++++++++ modules/database/src/ioc/misc/dlload.c | 9 +++++++++ modules/libcom/src/osi/os/Darwin/osdEnv.c | 5 +++++ modules/libcom/src/osi/os/default/osdEnv.c | 5 +++++ modules/libcom/src/osi/os/iOS/osdEnv.c | 5 +++++ modules/libcom/src/osi/os/vxWorks/osdEnv.c | 5 +++++ 10 files changed, 73 insertions(+), 2 deletions(-) diff --git a/modules/database/src/ioc/db/dbAccess.c b/modules/database/src/ioc/db/dbAccess.c index cd7535194..beef82919 100644 --- a/modules/database/src/ioc/db/dbAccess.c +++ b/modules/database/src/ioc/db/dbAccess.c @@ -754,13 +754,22 @@ long dbBufferSize(short dbr_type, long options, long no_elements) } int dbLoadDatabase(const char *file, const char *path, const char *subs) { + if (!file) { + printf("Usage: dbLoadDatabase (\"file\", \"path\", \"subs\")\n"); + return -1; + } return dbReadDatabase(&pdbbase, file, path, subs); } int dbLoadRecords(const char* file, const char* subs) { - int status = dbReadDatabase(&pdbbase, file, 0, subs); + int status; + if (!file) { + printf("Usage: dbLoadRecords (\"file\", \"subs\")\n"); + return -1; + } + status = dbReadDatabase(&pdbbase, file, 0, subs); if (!status && dbLoadRecordsHook) dbLoadRecordsHook(file, subs); return status; diff --git a/modules/database/src/ioc/db/dbBkpt.c b/modules/database/src/ioc/db/dbBkpt.c index 8e7bf3a2b..03120f49d 100644 --- a/modules/database/src/ioc/db/dbBkpt.c +++ b/modules/database/src/ioc/db/dbBkpt.c @@ -283,6 +283,10 @@ long dbb(const char *record_name) /* * Convert name to address */ + if (!record_name) { + printf("Usage: dbb (\"record_name\")\n"); + return -1; + } status = dbNameToAddr(record_name, &addr); if (status == S_db_notFound) printf(" BKPT> Record %s not found\n", record_name); @@ -403,6 +407,10 @@ long dbd(const char *record_name) /* * Convert name to address */ + if (!record_name) { + printf("Usage: dbd (\"record_name\")\n"); + return -1; + } status = dbNameToAddr(record_name, &addr); if (status == S_db_notFound) printf(" BKPT> Record %s not found\n", record_name); @@ -846,6 +854,10 @@ long dbap(const char *record_name) /* * Convert name to address */ + if (!record_name) { + printf("Usage: dbap (\"record_name\")\n"); + return -1; + } status = dbNameToAddr(record_name, &addr); if (status == S_db_notFound) printf(" BKPT> Record %s not found\n", record_name); diff --git a/modules/database/src/ioc/db/dbNotify.c b/modules/database/src/ioc/db/dbNotify.c index c718d3740..65c9c1dbf 100644 --- a/modules/database/src/ioc/db/dbNotify.c +++ b/modules/database/src/ioc/db/dbNotify.c @@ -596,9 +596,13 @@ long dbtpn(char *pname, char *pvalue) tpnInfo *ptpnInfo; processNotify *ppn=NULL; + if (!pname) { + printf("Usage: dbtpn (\"name\", \"value\")\n"); + return -1; + } chan = dbChannelCreate(pname); if (!chan) { - printf("dbtpn: No such channel"); + printf("dbtpn: No such channel\n"); return -1; } diff --git a/modules/database/src/ioc/db/dbState.c b/modules/database/src/ioc/db/dbState.c index 6de7735cd..88deab4e9 100644 --- a/modules/database/src/ioc/db/dbState.c +++ b/modules/database/src/ioc/db/dbState.c @@ -49,6 +49,11 @@ dbStateId dbStateCreate(const char *name) { dbStateId id; + if (!name) + { + printf("Usage: dbStateCreate (\"name\")\n"); + return NULL; + } if ((id = dbStateFind(name))) return id; diff --git a/modules/database/src/ioc/db/db_test.c b/modules/database/src/ioc/db/db_test.c index 8d7ad31b1..6f58e061d 100644 --- a/modules/database/src/ioc/db/db_test.c +++ b/modules/database/src/ioc/db/db_test.c @@ -40,6 +40,10 @@ int gft(const char *pname) short type; int i; + if (!pname) { + printf("Usage: gft (\"name\")\n"); + return -1; + } chan = dbChannel_create(pname); if (!chan) { printf("Channel couldn't be created\n"); @@ -94,6 +98,10 @@ int pft(const char *pname, const char *pvalue) unsigned char charvalue; double doublevalue; + if (!pname || !pvalue) { + printf("Usage: pft (\"name\", \"value\")\n"); + return -1; + } chan = dbChannel_create(pname); if (!chan) { printf("Channel couldn't be created\n"); @@ -223,6 +231,10 @@ int tpn(const char *pname, const char *pvalue) tpnInfo *ptpnInfo; processNotify *ppn = NULL; + if (!pname || !pvalue) { + printf("Usage: tpn (\"name\", \"value\")\n"); + return -1; + } chan = dbChannel_create(pname); if (!chan) { printf("Channel couldn't be created\n"); diff --git a/modules/database/src/ioc/misc/dlload.c b/modules/database/src/ioc/misc/dlload.c index 5b0591d5f..48117f55b 100644 --- a/modules/database/src/ioc/misc/dlload.c +++ b/modules/database/src/ioc/misc/dlload.c @@ -23,3 +23,12 @@ static void dlloadRegistar(void) { iocshRegister(&dlloadFuncDef, dlloadCallFunc); } epicsExportRegistrar(dlloadRegistar); + +#ifdef vxWorks +void dlload(const char* name) +{ + if (!epicsLoadLibrary(name)) { + printf("epicsLoadLibrary failed: %s\n", epicsLoadError()); + } +} +#endif diff --git a/modules/libcom/src/osi/os/Darwin/osdEnv.c b/modules/libcom/src/osi/os/Darwin/osdEnv.c index ab3f93644..e7e90097f 100644 --- a/modules/libcom/src/osi/os/Darwin/osdEnv.c +++ b/modules/libcom/src/osi/os/Darwin/osdEnv.c @@ -35,6 +35,11 @@ */ epicsShareFunc void epicsShareAPI epicsEnvSet (const char *name, const char *value) { + if (!name) { + printf ("Usage: epicsEnvSet (\"name\", \"value\")\n"); + return; + } + iocshEnvClear(name); setenv(name, value, 1); } diff --git a/modules/libcom/src/osi/os/default/osdEnv.c b/modules/libcom/src/osi/os/default/osdEnv.c index 682bcc934..d7f95099f 100644 --- a/modules/libcom/src/osi/os/default/osdEnv.c +++ b/modules/libcom/src/osi/os/default/osdEnv.c @@ -36,6 +36,11 @@ epicsShareFunc void epicsShareAPI epicsEnvSet (const char *name, const char *val { char *cp; + if (!name) { + printf ("Usage: epicsEnvSet (\"name\", \"value\")\n"); + return; + } + iocshEnvClear(name); cp = mallocMustSucceed (strlen (name) + strlen (value) + 2, "epicsEnvSet"); diff --git a/modules/libcom/src/osi/os/iOS/osdEnv.c b/modules/libcom/src/osi/os/iOS/osdEnv.c index a32cce5ef..c1ffd3694 100644 --- a/modules/libcom/src/osi/os/iOS/osdEnv.c +++ b/modules/libcom/src/osi/os/iOS/osdEnv.c @@ -32,6 +32,11 @@ */ epicsShareFunc void epicsShareAPI epicsEnvSet (const char *name, const char *value) { + if (!name) { + printf ("Usage: epicsEnvSet (\"name\", \"value\")\n"); + return; + } + iocshEnvClear(name); setenv(name, value, 1); } diff --git a/modules/libcom/src/osi/os/vxWorks/osdEnv.c b/modules/libcom/src/osi/os/vxWorks/osdEnv.c index c81f49316..ebc06af13 100644 --- a/modules/libcom/src/osi/os/vxWorks/osdEnv.c +++ b/modules/libcom/src/osi/os/vxWorks/osdEnv.c @@ -37,6 +37,11 @@ epicsShareFunc void epicsShareAPI epicsEnvSet (const char *name, const char *val { char *cp; + if (!name) { + printf ("Usage: epicsEnvSet (\"name\", \"value\")\n"); + return; + } + iocshEnvClear(name); cp = mallocMustSucceed (strlen (name) + strlen (value) + 2, "epicsEnvSet"); From d44f5616a9991e0743bcc79856bad6b2804bdc7e Mon Sep 17 00:00:00 2001 From: Dirk Zimoch Date: Thu, 27 Sep 2018 13:35:45 +0200 Subject: [PATCH 2/6] add missing command line functions to vxWorks shell --- modules/libcom/src/iocsh/libComRegister.c | 32 +++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/modules/libcom/src/iocsh/libComRegister.c b/modules/libcom/src/iocsh/libComRegister.c index d3a5cfac4..0c8d7ea53 100644 --- a/modules/libcom/src/iocsh/libComRegister.c +++ b/modules/libcom/src/iocsh/libComRegister.c @@ -66,6 +66,17 @@ static void echoCallFunc(const iocshArgBuf *args) printf("%s\n", str); } +#ifdef vxWorks +void echo(char* str) +{ + if (str) + dbTranslateEscape(str, str); + else + str = ""; + printf("%s\n", str); +} +#endif + /* chdir */ static const iocshArg chdirArg0 = { "directory name",iocshArgString}; static const iocshArg * const chdirArgs[1] = {&chdirArg0}; @@ -117,6 +128,13 @@ static void epicsParamShowCallFunc(const iocshArgBuf *args) epicsPrtEnvParams (); } +#ifdef vxWorks +void epicsParamShow() +{ + epicsPrtEnvParams (); +} +#endif + /* epicsPrtEnvParams */ static const iocshFuncDef epicsPrtEnvParamsFuncDef = {"epicsPrtEnvParams",0,0}; static void epicsPrtEnvParamsCallFunc(const iocshArgBuf *args) @@ -156,6 +174,13 @@ static void iocLogDisableCallFunc(const iocshArgBuf *args) iocLogDisable = args[0].ival; } +#ifdef vxWorks +void setIocLogDisable(int val) +{ + iocLogDisable = val; +} +#endif + /* iocLogShow */ static const iocshArg iocLogShowArg0 = {"level",iocshArgInt}; static const iocshArg * const iocLogShowArgs[1] = {&iocLogShowArg0}; @@ -205,6 +230,13 @@ static void errlogCallFunc(const iocshArgBuf *args) errlogPrintfNoConsole("%s\n", args[0].sval); } +#ifdef vxWorks +void errlog(const char *message) +{ + errlogPrintfNoConsole("%s\n", message); +} +#endif + /* iocLogPrefix */ static const iocshArg iocLogPrefixArg0 = { "prefix",iocshArgString}; static const iocshArg * const iocLogPrefixArgs[1] = {&iocLogPrefixArg0}; From b2f3bafa6401183a17247725dc223555a81d9998 Mon Sep 17 00:00:00 2001 From: Dirk Zimoch Date: Fri, 28 Sep 2018 11:36:02 +0200 Subject: [PATCH 3/6] Removed usage message from dbStateCreate because it is not only a shell function but an API as well. But kept check for NULL. Added check for NULL in dbStateFind as well. --- modules/database/src/ioc/db/dbState.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/modules/database/src/ioc/db/dbState.c b/modules/database/src/ioc/db/dbState.c index 88deab4e9..60819a023 100644 --- a/modules/database/src/ioc/db/dbState.c +++ b/modules/database/src/ioc/db/dbState.c @@ -37,6 +37,9 @@ dbStateId dbStateFind(const char *name) ELLNODE *node; dbStateId id; + if (!name) + return NULL; + for (node = ellFirst(&states); node; node = ellNext(node)) { id = CONTAINER(node, dbState, node); if (strcmp(id->name, name) == 0) @@ -50,10 +53,8 @@ dbStateId dbStateCreate(const char *name) dbStateId id; if (!name) - { - printf("Usage: dbStateCreate (\"name\")\n"); return NULL; - } + if ((id = dbStateFind(name))) return id; From e8e013d65ffd0a2de6a01fd1603d007984eb006b Mon Sep 17 00:00:00 2001 From: Dirk Zimoch Date: Fri, 28 Sep 2018 11:36:59 +0200 Subject: [PATCH 4/6] removed () from uage messages --- modules/database/src/ioc/db/dbAccess.c | 4 ++-- modules/database/src/ioc/db/dbBkpt.c | 6 +++--- modules/database/src/ioc/db/dbNotify.c | 2 +- modules/database/src/ioc/db/db_test.c | 6 +++--- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/modules/database/src/ioc/db/dbAccess.c b/modules/database/src/ioc/db/dbAccess.c index beef82919..f52b8881f 100644 --- a/modules/database/src/ioc/db/dbAccess.c +++ b/modules/database/src/ioc/db/dbAccess.c @@ -755,7 +755,7 @@ long dbBufferSize(short dbr_type, long options, long no_elements) int dbLoadDatabase(const char *file, const char *path, const char *subs) { if (!file) { - printf("Usage: dbLoadDatabase (\"file\", \"path\", \"subs\")\n"); + printf("Usage: dbLoadDatabase \"file\", \"path\", \"subs\"\n"); return -1; } return dbReadDatabase(&pdbbase, file, path, subs); @@ -766,7 +766,7 @@ int dbLoadRecords(const char* file, const char* subs) int status; if (!file) { - printf("Usage: dbLoadRecords (\"file\", \"subs\")\n"); + printf("Usage: dbLoadRecords \"file\", \"subs\"\n"); return -1; } status = dbReadDatabase(&pdbbase, file, 0, subs); diff --git a/modules/database/src/ioc/db/dbBkpt.c b/modules/database/src/ioc/db/dbBkpt.c index 03120f49d..b3fdd2da4 100644 --- a/modules/database/src/ioc/db/dbBkpt.c +++ b/modules/database/src/ioc/db/dbBkpt.c @@ -284,7 +284,7 @@ long dbb(const char *record_name) * Convert name to address */ if (!record_name) { - printf("Usage: dbb (\"record_name\")\n"); + printf("Usage: dbb \"record_name\"\n"); return -1; } status = dbNameToAddr(record_name, &addr); @@ -408,7 +408,7 @@ long dbd(const char *record_name) * Convert name to address */ if (!record_name) { - printf("Usage: dbd (\"record_name\")\n"); + printf("Usage: dbd \"record_name\"\n"); return -1; } status = dbNameToAddr(record_name, &addr); @@ -855,7 +855,7 @@ long dbap(const char *record_name) * Convert name to address */ if (!record_name) { - printf("Usage: dbap (\"record_name\")\n"); + printf("Usage: dbap \"record_name\"\n"); return -1; } status = dbNameToAddr(record_name, &addr); diff --git a/modules/database/src/ioc/db/dbNotify.c b/modules/database/src/ioc/db/dbNotify.c index 65c9c1dbf..c2420affc 100644 --- a/modules/database/src/ioc/db/dbNotify.c +++ b/modules/database/src/ioc/db/dbNotify.c @@ -597,7 +597,7 @@ long dbtpn(char *pname, char *pvalue) processNotify *ppn=NULL; if (!pname) { - printf("Usage: dbtpn (\"name\", \"value\")\n"); + printf("Usage: dbtpn \"name\", \"value\"\n"); return -1; } chan = dbChannelCreate(pname); diff --git a/modules/database/src/ioc/db/db_test.c b/modules/database/src/ioc/db/db_test.c index 6f58e061d..3d536f080 100644 --- a/modules/database/src/ioc/db/db_test.c +++ b/modules/database/src/ioc/db/db_test.c @@ -41,7 +41,7 @@ int gft(const char *pname) int i; if (!pname) { - printf("Usage: gft (\"name\")\n"); + printf("Usage: gft \"pv_name\"\n"); return -1; } chan = dbChannel_create(pname); @@ -99,7 +99,7 @@ int pft(const char *pname, const char *pvalue) double doublevalue; if (!pname || !pvalue) { - printf("Usage: pft (\"name\", \"value\")\n"); + printf("Usage: pft \"pv_name\", \"value\"\n"); return -1; } chan = dbChannel_create(pname); @@ -232,7 +232,7 @@ int tpn(const char *pname, const char *pvalue) processNotify *ppn = NULL; if (!pname || !pvalue) { - printf("Usage: tpn (\"name\", \"value\")\n"); + printf("Usage: tpn \"pv_name\", \"value\"\n"); return -1; } chan = dbChannel_create(pname); From 9b328a0ca4b5fdb913576024d09ef6d3ff5105b8 Mon Sep 17 00:00:00 2001 From: Dirk Zimoch Date: Fri, 28 Sep 2018 11:38:29 +0200 Subject: [PATCH 5/6] Removed usage messages from epicsEnvSet except for vxWorks but kept the check for NULL. For vxWorks removed the () from usage message. --- modules/libcom/src/osi/os/Darwin/osdEnv.c | 6 +----- modules/libcom/src/osi/os/default/osdEnv.c | 6 +----- modules/libcom/src/osi/os/iOS/osdEnv.c | 6 +----- modules/libcom/src/osi/os/vxWorks/osdEnv.c | 2 +- 4 files changed, 4 insertions(+), 16 deletions(-) diff --git a/modules/libcom/src/osi/os/Darwin/osdEnv.c b/modules/libcom/src/osi/os/Darwin/osdEnv.c index e7e90097f..e6206c3d8 100644 --- a/modules/libcom/src/osi/os/Darwin/osdEnv.c +++ b/modules/libcom/src/osi/os/Darwin/osdEnv.c @@ -35,11 +35,7 @@ */ epicsShareFunc void epicsShareAPI epicsEnvSet (const char *name, const char *value) { - if (!name) { - printf ("Usage: epicsEnvSet (\"name\", \"value\")\n"); - return; - } - + if (!name) return; iocshEnvClear(name); setenv(name, value, 1); } diff --git a/modules/libcom/src/osi/os/default/osdEnv.c b/modules/libcom/src/osi/os/default/osdEnv.c index d7f95099f..b284a86af 100644 --- a/modules/libcom/src/osi/os/default/osdEnv.c +++ b/modules/libcom/src/osi/os/default/osdEnv.c @@ -36,11 +36,7 @@ epicsShareFunc void epicsShareAPI epicsEnvSet (const char *name, const char *val { char *cp; - if (!name) { - printf ("Usage: epicsEnvSet (\"name\", \"value\")\n"); - return; - } - + if (!name) return; iocshEnvClear(name); cp = mallocMustSucceed (strlen (name) + strlen (value) + 2, "epicsEnvSet"); diff --git a/modules/libcom/src/osi/os/iOS/osdEnv.c b/modules/libcom/src/osi/os/iOS/osdEnv.c index c1ffd3694..fdc457003 100644 --- a/modules/libcom/src/osi/os/iOS/osdEnv.c +++ b/modules/libcom/src/osi/os/iOS/osdEnv.c @@ -32,11 +32,7 @@ */ epicsShareFunc void epicsShareAPI epicsEnvSet (const char *name, const char *value) { - if (!name) { - printf ("Usage: epicsEnvSet (\"name\", \"value\")\n"); - return; - } - + if (!name) return; iocshEnvClear(name); setenv(name, value, 1); } diff --git a/modules/libcom/src/osi/os/vxWorks/osdEnv.c b/modules/libcom/src/osi/os/vxWorks/osdEnv.c index ebc06af13..9245ae735 100644 --- a/modules/libcom/src/osi/os/vxWorks/osdEnv.c +++ b/modules/libcom/src/osi/os/vxWorks/osdEnv.c @@ -38,7 +38,7 @@ epicsShareFunc void epicsShareAPI epicsEnvSet (const char *name, const char *val char *cp; if (!name) { - printf ("Usage: epicsEnvSet (\"name\", \"value\")\n"); + printf ("Usage: epicsEnvSet \"name\", \"value\"\n"); return; } From 4190f38db0d88264e2f88a7962880a6dfea09db6 Mon Sep 17 00:00:00 2001 From: Dirk Zimoch Date: Tue, 23 Oct 2018 17:51:46 +0200 Subject: [PATCH 6/6] add macro IOCSH_STATIC_FUNC to avoid '#ifdef vxWorks' in code --- modules/database/src/ioc/misc/dlload.c | 20 +++----- modules/libcom/src/iocsh/iocsh.h | 7 +++ modules/libcom/src/iocsh/libComRegister.c | 60 +++++++++-------------- 3 files changed, 38 insertions(+), 49 deletions(-) diff --git a/modules/database/src/ioc/misc/dlload.c b/modules/database/src/ioc/misc/dlload.c index 48117f55b..ddf04f455 100644 --- a/modules/database/src/ioc/misc/dlload.c +++ b/modules/database/src/ioc/misc/dlload.c @@ -9,26 +9,22 @@ #include "iocsh.h" #include "epicsExport.h" +IOCSH_STATIC_FUNC void dlload(const char* name) +{ + if (!epicsLoadLibrary(name)) { + printf("epicsLoadLibrary failed: %s\n", epicsLoadError()); + } +} + static const iocshArg dlloadArg0 = { "path/library.so", iocshArgString}; static const iocshArg * const dlloadArgs[] = {&dlloadArg0}; static const iocshFuncDef dlloadFuncDef = {"dlload", 1, dlloadArgs}; static void dlloadCallFunc(const iocshArgBuf *args) { - if (!epicsLoadLibrary(args[0].sval)) { - printf("epicsLoadLibrary failed: %s\n", epicsLoadError()); - } + dlload(args[0].sval); } static void dlloadRegistar(void) { iocshRegister(&dlloadFuncDef, dlloadCallFunc); } epicsExportRegistrar(dlloadRegistar); - -#ifdef vxWorks -void dlload(const char* name) -{ - if (!epicsLoadLibrary(name)) { - printf("epicsLoadLibrary failed: %s\n", epicsLoadError()); - } -} -#endif diff --git a/modules/libcom/src/iocsh/iocsh.h b/modules/libcom/src/iocsh/iocsh.h index 3ef3d952b..84b38f224 100644 --- a/modules/libcom/src/iocsh/iocsh.h +++ b/modules/libcom/src/iocsh/iocsh.h @@ -14,8 +14,15 @@ #define INCiocshH #include +#include "compilerDependencies.h" #include "shareLib.h" +#if defined(vxWorks) || defined(__rtems__) +#define IOCSH_STATIC_FUNC +#else +#define IOCSH_STATIC_FUNC static EPICS_ALWAYS_INLINE +#endif + #ifdef __cplusplus extern "C" { #endif diff --git a/modules/libcom/src/iocsh/libComRegister.c b/modules/libcom/src/iocsh/libComRegister.c index 0c8d7ea53..88abdc671 100644 --- a/modules/libcom/src/iocsh/libComRegister.c +++ b/modules/libcom/src/iocsh/libComRegister.c @@ -27,6 +27,7 @@ #include "libComRegister.h" +/* date */ void date(const char *format) { epicsTimeStamp now; @@ -42,7 +43,6 @@ void date(const char *format) puts(nowText); } -/* date */ static const iocshArg dateArg0 = { "format",iocshArgString}; static const iocshArg * const dateArgs[] = {&dateArg0}; static const iocshFuncDef dateFuncDef = {"date", 1, dateArgs}; @@ -52,13 +52,8 @@ static void dateCallFunc (const iocshArgBuf *args) } /* echo */ -static const iocshArg echoArg0 = { "string",iocshArgString}; -static const iocshArg * const echoArgs[1] = {&echoArg0}; -static const iocshFuncDef echoFuncDef = {"echo",1,echoArgs}; -static void echoCallFunc(const iocshArgBuf *args) +IOCSH_STATIC_FUNC void echo(char* str) { - char *str = args[0].sval; - if (str) dbTranslateEscape(str, str); /* in-place is safe */ else @@ -66,16 +61,13 @@ static void echoCallFunc(const iocshArgBuf *args) printf("%s\n", str); } -#ifdef vxWorks -void echo(char* str) +static const iocshArg echoArg0 = { "string",iocshArgString}; +static const iocshArg * const echoArgs[1] = {&echoArg0}; +static const iocshFuncDef echoFuncDef = {"echo",1,echoArgs}; +static void echoCallFunc(const iocshArgBuf *args) { - if (str) - dbTranslateEscape(str, str); - else - str = ""; - printf("%s\n", str); + echo(args[0].sval); } -#endif /* chdir */ static const iocshArg chdirArg0 = { "directory name",iocshArgString}; @@ -122,18 +114,16 @@ static void epicsEnvSetCallFunc(const iocshArgBuf *args) } /* epicsParamShow */ -static const iocshFuncDef epicsParamShowFuncDef = {"epicsParamShow",0,NULL}; -static void epicsParamShowCallFunc(const iocshArgBuf *args) +IOCSH_STATIC_FUNC void epicsParamShow() { epicsPrtEnvParams (); } -#ifdef vxWorks -void epicsParamShow() +static const iocshFuncDef epicsParamShowFuncDef = {"epicsParamShow",0,NULL}; +static void epicsParamShowCallFunc(const iocshArgBuf *args) { - epicsPrtEnvParams (); + epicsParamShow (); } -#endif /* epicsPrtEnvParams */ static const iocshFuncDef epicsPrtEnvParamsFuncDef = {"epicsPrtEnvParams",0,0}; @@ -166,21 +156,19 @@ static void iocLogInitCallFunc(const iocshArgBuf *args) } /* iocLogDisable */ +IOCSH_STATIC_FUNC void setIocLogDisable(int val) +{ + iocLogDisable = val; +} + static const iocshArg iocLogDisableArg0 = {"(0,1)=>(false,true)",iocshArgInt}; static const iocshArg * const iocLogDisableArgs[1] = {&iocLogDisableArg0}; static const iocshFuncDef iocLogDisableFuncDef = {"setIocLogDisable",1,iocLogDisableArgs}; static void iocLogDisableCallFunc(const iocshArgBuf *args) { - iocLogDisable = args[0].ival; + setIocLogDisable(args[0].ival); } -#ifdef vxWorks -void setIocLogDisable(int val) -{ - iocLogDisable = val; -} -#endif - /* iocLogShow */ static const iocshArg iocLogShowArg0 = {"level",iocshArgInt}; static const iocshArg * const iocLogShowArgs[1] = {&iocLogShowArg0}; @@ -222,21 +210,19 @@ static void errlogInit2CallFunc(const iocshArgBuf *args) } /* errlog */ +IOCSH_STATIC_FUNC void errlog(const char *message) +{ + errlogPrintfNoConsole("%s\n", message); +} + static const iocshArg errlogArg0 = { "message",iocshArgString}; static const iocshArg * const errlogArgs[1] = {&errlogArg0}; static const iocshFuncDef errlogFuncDef = {"errlog",1,errlogArgs}; static void errlogCallFunc(const iocshArgBuf *args) { - errlogPrintfNoConsole("%s\n", args[0].sval); + errlog(args[0].sval); } -#ifdef vxWorks -void errlog(const char *message) -{ - errlogPrintfNoConsole("%s\n", message); -} -#endif - /* iocLogPrefix */ static const iocshArg iocLogPrefixArg0 = { "prefix",iocshArgString}; static const iocshArg * const iocLogPrefixArgs[1] = {&iocLogPrefixArg0};