Index: trunk/src/obj_term.c =================================================================== --- trunk/src/obj_term.c (revision 10887) +++ trunk/src/obj_term.c (revision 10888) @@ -255,3 +255,9 @@ pcb_undo_inc_serial(); return PCB_TERM_ERR_SUCCESS; } + +pcb_bool pcb_term_find_name(const char *subc_name, const char *term_name, pcb_connection_t *conn, pcb_bool same) +{ + return pcb_false; +} + Index: trunk/src/obj_term.h =================================================================== --- trunk/src/obj_term.h (revision 10887) +++ trunk/src/obj_term.h (revision 10888) @@ -77,5 +77,8 @@ /* Rename an object's ->term field in an undoable way */ pcb_term_err_t pcb_term_undoable_rename(pcb_board_t *pcb, pcb_any_obj_t *obj, const char *new_name); +/* Look up subc_name/term_name and put the result in conn. Returns true if found */ +pcb_bool pcb_term_find_name(const char *subc_name, const char *term_name, pcb_connection_t *conn, pcb_bool same); + #endif Index: trunk/src/rats.c =================================================================== --- trunk/src/rats.c (revision 10887) +++ trunk/src/rats.c (revision 10888) @@ -103,7 +103,7 @@ * Find a particular terminal from an element/subc name and pin/pad/terminal number */ #warning term TODO: once pins and pads are gone, move this to obj_term.c -static pcb_bool pcb_term_find_name(const char *ElementName, const char *PinNum, pcb_connection_t * conn, pcb_bool Same) +static pcb_bool pcb_term_find_name_ppt(const char *ElementName, const char *PinNum, pcb_connection_t * conn, pcb_bool Same) { pcb_element_t *element; gdl_iterator_t it; @@ -110,6 +110,11 @@ pcb_pad_t *pad; pcb_pin_t *pin; + /* first check for subcircuits; this is the only one thing we'll need to do + once elements are removed */ + if (pcb_term_find_name(ElementName, PinNum, conn, Same)) + return pcb_true; + if ((element = pcb_search_elem_by_name(PCB->Data, ElementName)) == NULL) return pcb_false; @@ -163,7 +168,7 @@ badnet = pcb_true; } else { - if (pcb_term_find_name(ElementName, PinNum, conn, Same)) + if (pcb_term_find_name_ppt(ElementName, PinNum, conn, Same)) return (pcb_true); if (Same) return (pcb_false);