Index: trunk/src_plugins/io_pcb/parse_y.c =================================================================== --- trunk/src_plugins/io_pcb/parse_y.c (revision 34389) +++ trunk/src_plugins/io_pcb/parse_y.c (revision 34390) @@ -2148,7 +2148,7 @@ case 46: #line 474 "parse_y.y" /* yacc.c:1652 */ { - if (pcb_route_string_parse((yyvsp[-1].string), &yyPCB->RouteStyle, "mil")) + if (pcb_route_string_parse(yyPCB->Data, (yyvsp[-1].string), &yyPCB->RouteStyle, "mil")) { rnd_message(RND_MSG_ERROR, "illegal route-style string\n"); YYABORT; @@ -2161,7 +2161,7 @@ case 47: #line 483 "parse_y.y" /* yacc.c:1652 */ { - if (pcb_route_string_parse(((yyvsp[-1].string) == NULL ? "" : (yyvsp[-1].string)), &yyPCB->RouteStyle, "cmil")) + if (pcb_route_string_parse(yyPCB->Data, ((yyvsp[-1].string) == NULL ? "" : (yyvsp[-1].string)), &yyPCB->RouteStyle, "cmil")) { rnd_message(RND_MSG_ERROR, "illegal route-style string\n"); YYABORT; Index: trunk/src_plugins/io_pcb/parse_y.y =================================================================== --- trunk/src_plugins/io_pcb/parse_y.y (revision 34389) +++ trunk/src_plugins/io_pcb/parse_y.y (revision 34390) @@ -472,7 +472,7 @@ pcbstyles : T_STYLES '(' STRING ')' { - if (pcb_route_string_parse($3, &yyPCB->RouteStyle, "mil")) + if (pcb_route_string_parse(yyPCB->Data, $3, &yyPCB->RouteStyle, "mil")) { rnd_message(RND_MSG_ERROR, "illegal route-style string\n"); YYABORT; @@ -481,7 +481,7 @@ } | T_STYLES '[' STRING ']' { - if (pcb_route_string_parse(($3 == NULL ? "" : $3), &yyPCB->RouteStyle, "cmil")) + if (pcb_route_string_parse(yyPCB->Data, ($3 == NULL ? "" : $3), &yyPCB->RouteStyle, "cmil")) { rnd_message(RND_MSG_ERROR, "illegal route-style string\n"); YYABORT; Index: trunk/src_plugins/io_pcb/rst_parse.c =================================================================== --- trunk/src_plugins/io_pcb/rst_parse.c (revision 34389) +++ trunk/src_plugins/io_pcb/rst_parse.c (revision 34390) @@ -27,6 +27,8 @@ * */ +#include "brave.h" + pcb_route_style_t pcb_custom_route_style; static const char rst_cookie[] = "core route style"; @@ -44,8 +46,9 @@ /* parses the routes definition string which is a colon separated list of comma separated Name, Dimension, Dimension, Dimension, Dimension e.g. Signal,20,40,20,10:Power,40,60,28,10:... */ -int pcb_route_string_parse1(char **str, pcb_route_style_t *routeStyle, const char *default_unit) +int pcb_route_string_parse1(pcb_data_t *data, char **str, pcb_route_style_t *routeStyle, const char *default_unit) { + rnd_coord_t hole_dia = 0, pad_dia = 0, mask = 0; char *s = *str; char Name[256]; int i, len; @@ -75,7 +78,7 @@ s++; if (!isdigit((int) *s)) goto error; - routeStyle->Diameter = pcb_get_num(&s, default_unit); + pad_dia = pcb_get_num(&s, default_unit); while (*s && isspace((int) *s)) s++; if (*s++ != ',') @@ -84,7 +87,7 @@ s++; if (!isdigit((int) *s)) goto error; - routeStyle->Hole = pcb_get_num(&s, default_unit); + hole_dia = pcb_get_num(&s, default_unit); /* for backwards-compatibility, we use a 10-mil default for styles which omit the clearance specification. */ if (*s != ',') @@ -100,6 +103,16 @@ s++; } + if (pcb_brave & PCB_BRAVE_LIHATA_V8) { + if (pcb_compat_route_style_via_load(data, routeStyle, hole_dia, pad_dia, mask) != 0) + rnd_message(RND_MSG_WARNING, "Route style '%s': falied to create via padstack prototype\n", routeStyle->name); + } + else { +TODO("pstk #21: remove this branch"); + routeStyle->Diameter = pad_dia; + routeStyle->Hole = hole_dia; + } + *str = s; return 0; error:; @@ -107,7 +120,7 @@ return -1; } -int pcb_route_string_parse(char *s, vtroutestyle_t *styles, const char *default_unit) +int pcb_route_string_parse(pcb_data_t *data, char *s, vtroutestyle_t *styles, const char *default_unit) { int n; @@ -114,7 +127,7 @@ vtroutestyle_truncate(styles, 0); for(n = 0;;n++) { vtroutestyle_enlarge(styles, n+1); - if (pcb_route_string_parse1(&s, &styles->array[n], default_unit) != 0) { + if (pcb_route_string_parse1(data, &s, &styles->array[n], default_unit) != 0) { n--; break; }