Removed parameter values 'all'.

This commit is contained in:
Florian Pose 2008-07-28 11:43:08 +00:00
parent 5685eae806
commit 6429bc5f26
2 changed files with 37 additions and 40 deletions

1
TODO
View File

@ -23,7 +23,6 @@ Version 1.4.0:
- Remove MasterDevice::slaveCount(). - Remove MasterDevice::slaveCount().
- Alias index? - Alias index?
- Add 'etherlab version'. - Add 'etherlab version'.
- Remove 'all' parameter values.
Future issues: Future issues:

View File

@ -95,8 +95,8 @@ string usage()
void getOptions(int argc, char **argv) void getOptions(int argc, char **argv)
{ {
int c, argCount, optionIndex, number; int c, argCount;
char *remainder; stringstream str;
static struct option longOptions[] = { static struct option longOptions[] = {
//name, has_arg, flag, val //name, has_arg, flag, val
@ -113,61 +113,59 @@ void getOptions(int argc, char **argv)
}; };
do { do {
c = getopt_long(argc, argv, "m:a:p:d:t:fqvh", c = getopt_long(argc, argv, "m:a:p:d:t:fqvh", longOptions, NULL);
longOptions, &optionIndex);
switch (c) { switch (c) {
case 'm': case 'm':
number = strtoul(optarg, &remainder, 0); str.clear();
if (remainder == optarg || *remainder || number < 0) { str.str("");
str << optarg;
str >> resetiosflags(ios::basefield) // guess base from prefix
>> masterIndex;
if (str.fail() || masterIndex < 0) {
cerr << "Invalid master number " << optarg << "!" << endl cerr << "Invalid master number " << optarg << "!" << endl
<< endl << usage(); << endl << usage();
exit(1); exit(1);
} }
masterIndex = number;
break; break;
case 'a': case 'a':
if (!strcmp(optarg, "all")) { str.clear();
slaveAlias = -1; str.str("");
} else { str << optarg;
number = strtoul(optarg, &remainder, 0); str >> resetiosflags(ios::basefield) // guess base from prefix
if (remainder == optarg || *remainder >> slaveAlias;
|| number < 0 || number > 0xFFFF) { if (str.fail() || slaveAlias < 0 || slaveAlias > 0xFFFF) {
cerr << "Invalid slave alias " << optarg << "!" cerr << "Invalid slave alias " << optarg << "!" << endl
<< endl << endl << usage(); << endl << usage();
exit(1); exit(1);
}
slaveAlias = number;
} }
break; break;
case 'p': case 'p':
if (!strcmp(optarg, "all")) { str.clear();
slavePosition = -1; str.str("");
} else { str << optarg;
number = strtoul(optarg, &remainder, 0); str >> resetiosflags(ios::basefield) // guess base from prefix
if (remainder == optarg || *remainder >> slavePosition;
|| number < 0 || number > 0xFFFF) { if (str.fail()
cerr << "Invalid slave position " << optarg << "!" || slavePosition < 0 || slavePosition > 0xFFFF) {
<< endl << endl << usage(); cerr << "Invalid slave position " << optarg << "!" << endl
exit(1); << endl << usage();
} exit(1);
slavePosition = number;
} }
break; break;
case 'd': case 'd':
if (!strcmp(optarg, "all")) { str.clear();
domainIndex = -1; str.str("");
} else { str << optarg;
number = strtoul(optarg, &remainder, 0); str >> resetiosflags(ios::basefield) // guess base from prefix
if (remainder == optarg || *remainder || number < 0) { >> domainIndex;
cerr << "Invalid domain index " if (str.fail() || domainIndex < 0) {
<< optarg << "!" << endl << endl << usage(); cerr << "Invalid domain index " << optarg << "!" << endl
exit(1); << endl << usage();
} exit(1);
domainIndex = number;
} }
break; break;