Clean up handling of `argv' style arguments.

This commit is contained in:
W. Eric Norum
2001-03-20 03:25:04 +00:00
parent 92983574e7
commit d7137d3e02
3 changed files with 10 additions and 6 deletions
+3 -3
View File
@@ -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;
}
}
+3 -3
View File
@@ -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;
}
+4
View File
@@ -30,6 +30,10 @@ typedef union ioccrfArgBuf {
double dval;
char *sval;
void *vval;
struct {
int ac;
char **av;
} aval;
}ioccrfArgBuf;
typedef struct ioccrfArg {