于 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


Reply via email to