Clean up handling of `argv' style arguments.
This commit is contained in:
+3
-3
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -30,6 +30,10 @@ typedef union ioccrfArgBuf {
|
||||
double dval;
|
||||
char *sval;
|
||||
void *vval;
|
||||
struct {
|
||||
int ac;
|
||||
char **av;
|
||||
} aval;
|
||||
}ioccrfArgBuf;
|
||||
|
||||
typedef struct ioccrfArg {
|
||||
|
||||
Reference in New Issue
Block a user