δΊ 2013-6-11 16:26, Stefan Hajnoczi ει:
On Sat, Jun 08, 2013 at 02:58:00PM +0800, Wenchao Xia wrote:
+ if (id && name) {
+ for (i = 0; i < nb_sns; i++) {
+ sn = &sn_tab[i];
+ if (!strcmp(sn->id_str, id) && !strcmp(sn->name, name)) {
+ *sn_info = *sn;
+ ret = true;
+ break;
+ }
+ }
+ } else if (id) {
+ for (i = 0; i < nb_sns; i++) {
+ sn = &sn_tab[i];
+ if (!strcmp(sn->id_str, id)) {
+ *sn_info = *sn;
+ ret = true;
+ break;
+ }
+ }
+ } else if (name) {
+ for (i = 0; i < nb_sns; i++) {
+ sn = &sn_tab[i];
+ if (!strcmp(sn->name, name)) {
+ *sn_info = *sn;
+ ret = true;
+ break;
+ }
+ }
+ } else {
+ /* program error */
+ abort();
+ }
If you respin, this would be a little clearer:
assert(id || name);
if (id && name) {
...
} else if (id) {
...
} else if (name) {
...
}
The advantage is that the assert(3) condition is included in the error
message that gets printed.
Stefan
OK, will do it in next version.
--
Best Regards
Wenchao Xia