Index: trunk/src/funchash_core_list.h =================================================================== --- trunk/src/funchash_core_list.h (revision 31672) +++ trunk/src/funchash_core_list.h (revision 31673) @@ -24,6 +24,7 @@ action_entry(AllConnections) action_entry(AllRats) action_entry(AllUnusedPins) +action_entry(AutoLen) action_entry(Block) action_entry(Buffer) action_entry(Cancel) @@ -77,6 +78,7 @@ action_entry(Netlist) action_entry(Need) action_entry(Next) +action_entry(NoAutoLen) action_entry(Normalize) action_entry(Notify) action_entry(NoAllRats) Index: trunk/src/netlist.h =================================================================== --- trunk/src/netlist.h (revision 31672) +++ trunk/src/netlist.h (revision 31673) @@ -76,6 +76,7 @@ char *name; rnd_cardinal_t export_tmp; /* filled in and used by export code; valid only until the end of exporting */ unsigned inhibit_rats:1; + unsigned auto_len:1; pcb_termlist_t conns; }; Index: trunk/src/netlist_act.c =================================================================== --- trunk/src/netlist_act.c (revision 31672) +++ trunk/src/netlist_act.c (revision 31673) @@ -165,6 +165,22 @@ pcb_net_crawl_flag(PCB, pcb_net_get(PCB, &PCB->netlist[PCB_NETLIST_EDITED], new_net->name, 0), 0, PCB_FLAG_SELECTED); } +static void pcb_netlist_autolen(pcb_net_t *new_net, pcb_net_term_t *term) +{ + pcb_net_t *n = pcb_net_get(PCB, &PCB->netlist[PCB_NETLIST_EDITED], new_net->name, 0); + if (n != NULL) + n->auto_len = 1; + pcb_netlist_changed(0); +} + +static void pcb_netlist_noautolen(pcb_net_t *new_net, pcb_net_term_t *term) +{ + pcb_net_t *n = pcb_net_get(PCB, &PCB->netlist[PCB_NETLIST_EDITED], new_net->name, 0); + if (n != NULL) + n->auto_len = 0; + pcb_netlist_changed(0); +} + static void pcb_netlist_rats(pcb_net_t *new_net, pcb_net_term_t *term) { pcb_net_t *n = pcb_net_get(PCB, &PCB->netlist[PCB_NETLIST_EDITED], new_net->name, 0); @@ -424,6 +440,8 @@ case F_Find: func = pcb_netlist_find; break; case F_Select: func = pcb_netlist_select; break; case F_Unselect: func = pcb_netlist_unselect; break; + case F_AutoLen: func = pcb_netlist_autolen; break; + case F_NoAutoLen: func = pcb_netlist_noautolen; break; case F_Rats: func = pcb_netlist_rats; break; case F_NoRats: func = pcb_netlist_norats; break; case F_AllRats: return pcb_netlist_allrats();