From d7137d3e02596e87da6f27f9ab0c2dee506d1b23 Mon Sep 17 00:00:00 2001 From: "W. Eric Norum" Date: Tue, 20 Mar 2001 03:25:04 +0000 Subject: [PATCH] Clean up handling of `argv' style arguments. --- src/iocsh/iocUtil.c | 6 +++--- src/iocsh/ioccrf.cpp | 6 +++--- src/iocsh/ioccrf.h | 4 ++++ 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/iocsh/iocUtil.c b/src/iocsh/iocUtil.c index f69345b6e..44f5d4a9a 100644 --- a/src/iocsh/iocUtil.c +++ b/src/iocsh/iocUtil.c @@ -59,8 +59,8 @@ static void showCallFunc(const ioccrfArgBuf *args) const char *cp; epicsThreadId tid; unsigned long ltmp; - int argc = args[0].ival; - const char * const *argv = args[1].vval; + int argc = args[0].aval.ac; + const char * const *argv = args[0].aval.av; char *endp; if ((i < argc) && (*(cp = argv[i]) == '-')) { @@ -77,7 +77,7 @@ static void showCallFunc(const ioccrfArgBuf *args) if (*endp) { tid = epicsThreadGetId (cp); if (!tid) { - printf ("*** argument %d (%s) is not a valid task name ***\n", i+1, cp); + printf ("*** argument %d (%s) is not a valid task name ***\n", i, cp); continue; } } diff --git a/src/iocsh/ioccrf.cpp b/src/iocsh/ioccrf.cpp index c6c41ab9f..3ac6c0d95 100644 --- a/src/iocsh/ioccrf.cpp +++ b/src/iocsh/ioccrf.cpp @@ -435,7 +435,7 @@ ioccrf (const char *pathname) (*found->func)(argBuf); break; } - if ((arg+1) >= argBufCapacity) { + if (arg >= argBufCapacity) { void *np; argBufCapacity += 20; @@ -448,8 +448,8 @@ ioccrf (const char *pathname) argBuf = (ioccrfArgBuf *)np; } if (pioccrfFuncDef->arg[arg]->type == ioccrfArgArgv) { - argBuf[arg].ival = argc-arg; - argBuf[arg+1].vval = argv+arg; + argBuf[arg].aval.ac = argc-arg; + argBuf[arg].aval.av = argv+arg; (*found->func)(argBuf); break; } diff --git a/src/iocsh/ioccrf.h b/src/iocsh/ioccrf.h index 6a0ff6096..6dd1fa1ec 100644 --- a/src/iocsh/ioccrf.h +++ b/src/iocsh/ioccrf.h @@ -30,6 +30,10 @@ typedef union ioccrfArgBuf { double dval; char *sval; void *vval; + struct { + int ac; + char **av; + } aval; }ioccrfArgBuf; typedef struct ioccrfArg {