Index: src_plugins/io_pads/delay_create.c =================================================================== --- src_plugins/io_pads/delay_create.c (revision 34581) +++ src_plugins/io_pads/delay_create.c (revision 34582) @@ -224,7 +224,7 @@ return obj; } -pcb_dlcr_draw_t *pcb_dlcr_via_new(pcb_dlcr_t *dlcr, rnd_coord_t x, rnd_coord_t y, rnd_coord_t clearance, long id, const char *name) +pcb_dlcr_draw_t *pcb_dlcr_via_new(pcb_dlcr_t *dlcr, rnd_coord_t x, rnd_coord_t y, rnd_coord_t clearance, long id, const char *name, const char *term) { pcb_dlcr_draw_t *obj; pcb_pstk_t *p; @@ -257,6 +257,7 @@ p->y = y; p->proto = pid; p->Clearance = clearance; + obj->name = rnd_strdup(term); TODO("why does this fail?"); #if 0 @@ -556,6 +557,8 @@ break; case PCB_OBJ_PSTK: r = (pcb_any_obj_t *)pcb_pstk_new(data, 0, p->proto, CRDX(p->x), CRDY(p->y), p->Clearance, pcb_flag_make(PCB_FLAG_CLEARLINE)); + if (obj->name != NULL) + pcb_attrib_put(r, "term", obj->name); break; case PCB_OBJ_DLCR_POLY: r = pcb_dlcr_draw_free_poly(pcb, dlcr, subc, ly, obj); Index: src_plugins/io_pads/delay_create.h =================================================================== --- src_plugins/io_pads/delay_create.h (revision 34581) +++ src_plugins/io_pads/delay_create.h (revision 34582) @@ -83,6 +83,7 @@ char *key, *val; } attr; } val; + char *name; long loc_line; /* for debug */ gdl_elem_t link; unsigned in_last_subc:1; /* create object within the last created subc instead of on the board */ @@ -124,7 +125,7 @@ pcb_dlcr_draw_t *pcb_dlcr_line_new(pcb_dlcr_t *dlcr, rnd_coord_t x1, rnd_coord_t y1, rnd_coord_t x2, rnd_coord_t y2, rnd_coord_t width, rnd_coord_t clearance); pcb_dlcr_draw_t *pcb_dlcr_arc_new(pcb_dlcr_t *dlcr, rnd_coord_t cx, rnd_coord_t cy, rnd_coord_t r, double start_deg, double delta_deg, rnd_coord_t width, rnd_coord_t clearance); pcb_dlcr_draw_t *pcb_dlcr_text_new(pcb_dlcr_t *dlcr, rnd_coord_t x, rnd_coord_t y, double rot, int scale, rnd_coord_t thickness, const char *str, long flags); -pcb_dlcr_draw_t *pcb_dlcr_via_new(pcb_dlcr_t *dlcr, rnd_coord_t x, rnd_coord_t y, rnd_coord_t clearance, long id, const char *name); +pcb_dlcr_draw_t *pcb_dlcr_via_new(pcb_dlcr_t *dlcr, rnd_coord_t x, rnd_coord_t y, rnd_coord_t clearance, long proto_id, const char *proto_name, const char *term); pcb_dlcr_draw_t *pcb_dlcr_poly_new(pcb_dlcr_t *dlcr, int hole, long prealloc_len); pcb_dlcr_draw_t *pcb_dlcr_poly_lineto(pcb_dlcr_t *dlcr, pcb_dlcr_draw_t *poly, rnd_coord_t x, rnd_coord_t y); Index: src_plugins/io_pads/read_high.c =================================================================== --- src_plugins/io_pads/read_high.c (revision 34581) +++ src_plugins/io_pads/read_high.c (revision 34582) @@ -472,6 +472,7 @@ return pads_parse_list_sect(rctx, pads_parse_line); } +#define PADS_TERM_NAME_LEN 32 typedef struct pads_term_s pads_term_t; struct pads_term_s { @@ -478,6 +479,7 @@ rnd_coord_t x, y; long loc_line; pads_term_t *next; + char name[PADS_TERM_NAME_LEN]; }; static void pads_create_pins(pads_read_ctx_t *rctx, pads_term_t *first, long pinidx, long pid) @@ -485,7 +487,7 @@ pads_term_t *t, *tnext; rnd_trace(" pin create: %ld pid=%ld first=%p\n", pinidx, pid, first); for(t = first; t != NULL; t = tnext) { - pcb_dlcr_draw_t *pin = pcb_dlcr_via_new(&rctx->dlcr, t->x, t->y, 0, pid, NULL); + pcb_dlcr_draw_t *pin = pcb_dlcr_via_new(&rctx->dlcr, t->x, t->y, 0, pid, NULL, t->name); if (pin != NULL) pin->loc_line = t->loc_line; rnd_trace(" %mm;%mm (%p) %p pid=%ld\n", t->x, t->y, t, pin, pid); @@ -708,7 +710,7 @@ static int pads_parse_term(pads_read_ctx_t *rctx, long idx, vtp0_t *terms) { pads_term_t *t, **tp; - char name[32]; + char name[PADS_TERM_NAME_LEN]; int c, res; long loc_line = rctx->line; rnd_coord_t x, y, nmx, nmy; @@ -735,6 +737,7 @@ t = calloc(sizeof(pads_term_t), 1); t->x = x; t->y = y; + strcpy(t->name, name); t->loc_line = loc_line; if (tp != NULL) t->next = *tp; @@ -1137,7 +1140,7 @@ /* in this case level is the via's target level and our trace segment is really on the same level as the previous */ level = spc->lastlev; - via = pcb_dlcr_via_new(&rctx->dlcr, x, y, 0, -1, vianame); + via = pcb_dlcr_via_new(&rctx->dlcr, x, y, 0, -1, vianame, NULL); if (via != NULL) via->loc_line = loc_line; }