This day was spent on upgrading rats.c and find*.c and some other parts of the code to handle subcircuit terminals.
This problem is rather complex as the code could ahdnel only special objects pins/pads. Those were crafted specifically to suit these code; now the code have to be generalized and accept any of the basic object types to be a terminal.
First the basic object types had to be upgraded to load their term ID from the optional "term" attribute.
Then rats.c had to be upgraded to consider subcricuit terminals as "pins" on the netlist. This required a function that can search terminal objects by subc refdes + term ID.
After a short detour to fix a term display bug, I returned to fix up find.c to understand the new situation - a rat line ending in the middle of a copper line marked as a pad is a valid connection condition.
I had to replace some code that handles the netlist optimization in rats.c I also had to upgrade the code in find.c that calculates rat vs. other object connections. If bugs are introduced there, they may affect the good old element/pin/pad infrastructure as well. Please watch out for the results of 'o' and 'f' keys.
Subcircuit terminals will catch rat lines at the center of the terminal object. This is different from pads: pads used one of their two endpoints.
There are still some find.c tasks left, especially around arcs and texts. There are a few known rendering bugs and other corner cases. This feature needs 1..2 days of work before we can start testing it for real.