Corrected mismatch count, which was prematurely declaring a
mismatch on "M=" even though some conditions pass.
This commit is contained in:
parent
b3277ca53e
commit
66015511cb
|
|
@ -5086,13 +5086,24 @@ PropertyMatch(struct objlist *ob1, struct objlist *ob2, int do_print,
|
||||||
if (vl2 == NULL) continue;
|
if (vl2 == NULL) continue;
|
||||||
if (vl2->key == NULL) continue;
|
if (vl2->key == NULL) continue;
|
||||||
kl2 = (struct property *)HashLookup(vl2->key, &(tc2->propdict));
|
kl2 = (struct property *)HashLookup(vl2->key, &(tc2->propdict));
|
||||||
if (kl2 != NULL) break; // Property is required
|
if (kl2 != NULL) {
|
||||||
|
// Allowed for one instance to be missing "M" or "S".
|
||||||
|
if (strcasecmp(vl2->key, "M") && strcasecmp(vl2->key, "S"))
|
||||||
|
break; // Property is required
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (vl2->type != PROP_ENDLIST) {
|
if (vl2->type != PROP_ENDLIST) {
|
||||||
mismatches++;
|
mismatches++;
|
||||||
if (do_print) Fprintf(stdout, "Circuit 2 %s instance %s has no"
|
if (do_print) {
|
||||||
|
if (vl2 && vl2->key)
|
||||||
|
Fprintf(stdout, "Circuit 2 %s instance %s has no"
|
||||||
|
" property \"%s\" to match circuit 1.\n",
|
||||||
|
Circuit2->name, inst2, vl2->key);
|
||||||
|
else
|
||||||
|
Fprintf(stdout, "Circuit 2 %s instance %s has no"
|
||||||
" property match in circuit 1.\n",
|
" property match in circuit 1.\n",
|
||||||
Circuit2->name, inst2);
|
Circuit2->name, inst2);
|
||||||
|
}
|
||||||
#ifdef TCL_NETGEN
|
#ifdef TCL_NETGEN
|
||||||
if (do_list) {
|
if (do_list) {
|
||||||
mpair = PropertyList(NULL, vl2);
|
mpair = PropertyList(NULL, vl2);
|
||||||
|
|
@ -5111,19 +5122,30 @@ PropertyMatch(struct objlist *ob1, struct objlist *ob2, int do_print,
|
||||||
// t2 has no properties. See if t1's properties are required
|
// t2 has no properties. See if t1's properties are required
|
||||||
// to be checked. If so, flag t1 instance as unmatched
|
// to be checked. If so, flag t1 instance as unmatched
|
||||||
|
|
||||||
mismatches++;
|
|
||||||
for (i = 0;; i++) {
|
for (i = 0;; i++) {
|
||||||
vl1 = &(tp1->instance.props[i]);
|
vl1 = &(tp1->instance.props[i]);
|
||||||
if (vl1->type == PROP_ENDLIST) break;
|
if (vl1->type == PROP_ENDLIST) break;
|
||||||
if (vl1 == NULL) continue;
|
if (vl1 == NULL) continue;
|
||||||
if (vl1->key == NULL) continue;
|
if (vl1->key == NULL) continue;
|
||||||
kl1 = (struct property *)HashLookup(vl1->key, &(tc1->propdict));
|
kl1 = (struct property *)HashLookup(vl1->key, &(tc1->propdict));
|
||||||
if (kl1 != NULL) break; // Property is required
|
if (kl1 != NULL) {
|
||||||
|
// Allowed for one instance to be missing "M" or "S".
|
||||||
|
if (strcasecmp(vl1->key, "M") && strcasecmp(vl1->key, "S"))
|
||||||
|
break; // Property is required
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (vl1->type != PROP_ENDLIST) {
|
if (vl1->type != PROP_ENDLIST) {
|
||||||
if (do_print) Fprintf(stdout, "Circuit 1 %s instance %s has no"
|
mismatches++;
|
||||||
" property match in Circuit 2.\n",
|
if (do_print) {
|
||||||
|
if (vl1 && vl1->key)
|
||||||
|
Fprintf(stdout, "Circuit 1 %s instance %s has no"
|
||||||
|
" property \"%s\" to match circuit 2.\n",
|
||||||
|
Circuit1->name, inst1, vl1->key);
|
||||||
|
else
|
||||||
|
Fprintf(stdout, "Circuit 1 %s instance %s has no"
|
||||||
|
" property match in circuit 2.\n",
|
||||||
Circuit1->name, inst1);
|
Circuit1->name, inst1);
|
||||||
|
}
|
||||||
#ifdef TCL_NETGEN
|
#ifdef TCL_NETGEN
|
||||||
if (do_list) {
|
if (do_list) {
|
||||||
mpair = PropertyList(vl1, NULL);
|
mpair = PropertyList(vl1, NULL);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue