diff -r ecaf2a896ea3 -r 04d1c950cf9d tool/Command.cpp --- a/tool/Command.cpp Mon Jul 28 09:12:21 2008 +0000 +++ b/tool/Command.cpp Mon Jul 28 11:29:28 2008 +0000 @@ -175,7 +175,6 @@ Command::ConfigList Command::selectedConfigs(MasterDevice &m) { unsigned int i; - int effAlias; ec_ioctl_master_t master; ec_ioctl_config_t config; ConfigList list; @@ -183,34 +182,35 @@ m.getMaster(&master); - // Assume alias 0 if only position is given. - if (alias == -1 && position != -1) { - effAlias = 0; - } else { - effAlias = alias; - } - - if (effAlias == -1) { // no alias given + if (alias == -1) { // no alias given if (position == -1) { // no alias and position given // all items for (i = 0; i < master.config_count; i++) { m.getConfig(&config, i); list.push_back(config); } + } else { // no alias, but position given + for (i = 0; i < master.config_count; i++) { + m.getConfig(&config, i); + if (!config.alias && config.position == position) { + list.push_back(config); + break; // there can be at most one matching + } + } } } else { // alias given if (position == -1) { // alias, but no position given // take all items with a given alias for (i = 0; i < master.config_count; i++) { m.getConfig(&config, i); - if (config.alias == effAlias) { + if (config.alias == alias) { list.push_back(config); } } } else { // alias and position given for (i = 0; i < master.config_count; i++) { m.getConfig(&config, i); - if (config.alias == effAlias && config.position == position) { + if (config.alias == alias && config.position == position) { list.push_back(config); break; // there can be at most one matching }