Index: pstk_compat.c =================================================================== --- pstk_compat.c (revision 30308) +++ pstk_compat.c (revision 30309) @@ -691,7 +691,7 @@ return pcb_true; } -pcb_flag_t pcb_pstk_compat_pinvia_flag(pcb_pstk_t *ps, pcb_pstk_compshape_t cshape) +pcb_flag_t pcb_pstk_compat_pinvia_flag(pcb_pstk_t *ps, pcb_pstk_compshape_t cshape, pcb_pstk_compat_t compat) { pcb_flag_t flg; int n; @@ -710,11 +710,17 @@ break; default: if ((cshape >= PCB_PSTK_COMPAT_SHAPED) && (cshape <= PCB_PSTK_COMPAT_SHAPED_END)) { - flg.f |= PCB_FLAG_SQUARE; cshape -= PCB_PSTK_COMPAT_SHAPED; if (cshape == 1) cshape = 17; - flg.q = cshape; + if ((cshape == 17) && (compat & PCB_PSTKCOMP_OLD_OCTAGON)) { + cshape = 0; + flg.f |= PCB_FLAG_OCTAGON; + } + else { + flg.q = cshape; + flg.f |= PCB_FLAG_SQUARE; + } } else pcb_io_incompat_save(ps->parent.data, (pcb_any_obj_t *)ps, "padstack-shape", "Failed to convert shape to old-style pin/via", "Old pin/via format is very much restricted; try to use a simpler shape (e.g. circle)"); Index: pstk_compat.h =================================================================== --- pstk_compat.h (revision 30308) +++ pstk_compat.h (revision 30309) @@ -26,9 +26,13 @@ /* Convert an existing padstack to old-style pad and return broken down parameters */ pcb_bool pcb_pstk_export_compat_pad(pcb_pstk_t *ps, pcb_coord_t *x1, pcb_coord_t *y1, pcb_coord_t *x2, pcb_coord_t *y2, pcb_coord_t *thickness, pcb_coord_t *clearance, pcb_coord_t *mask, pcb_bool *square, pcb_bool *nopaste); +typedef enum { + PCB_PSTKCOMP_OLD_OCTAGON = 1 +} pcb_pstk_compat_t; + /* Convert padstack flags to old pin/via flag. Use only in gEDA/PCB compatibility code: io_pcb and io_lihata. */ -pcb_flag_t pcb_pstk_compat_pinvia_flag(pcb_pstk_t *ps, pcb_pstk_compshape_t cshape); +pcb_flag_t pcb_pstk_compat_pinvia_flag(pcb_pstk_t *ps, pcb_pstk_compshape_t cshape, pcb_pstk_compat_t compat); #define PCB_PSTK_VIA_COMPAT_FLAGS (PCB_FLAG_CLEARLINE | PCB_FLAG_SELECTED | PCB_FLAG_FOUND | PCB_FLAG_WARN | PCB_FLAG_USETHERMAL | PCB_FLAG_LOCK)