Index: io_kicad_legacy.c =================================================================== --- io_kicad_legacy.c (revision 27313) +++ io_kicad_legacy.c (revision 27314) @@ -65,7 +65,8 @@ io_kicad_legacy.parse_pcb = NULL; io_kicad_legacy.parse_footprint = NULL; io_kicad_legacy.parse_font = NULL; - io_kicad_legacy.write_buffer = io_kicad_legacy_write_buffer; + io_kicad_legacy.write_buffer = NULL; + io_kicad_legacy.write_buffer_subc = io_kicad_legacy_write_buffer_subc; io_kicad_legacy.write_footprint = io_kicad_legacy_write_element; io_kicad_legacy.write_pcb = io_kicad_legacy_write_pcb; io_kicad_legacy.default_fmt = "kicadl"; Index: write.c =================================================================== --- write.c (revision 27313) +++ write.c (revision 27314) @@ -663,8 +663,13 @@ } } -int io_kicad_legacy_write_buffer(pcb_plug_io_t *ctx, FILE *FP, pcb_buffer_t *buff, pcb_bool elem_only) +int io_kicad_legacy_write_buffer_subc(pcb_plug_io_t *ctx, FILE *FP, pcb_buffer_t *buff, long idx) { + if (idx != 0) { + pcb_message(PCB_MSG_ERROR, "Only the first subcircuit can be saved at the moment\n"); + return -1; + } + if (pcb_subclist_length(&buff->Data->subc) == 0) { pcb_message(PCB_MSG_ERROR, "Buffer has no subcircuits!\n"); return -1; Index: write.h =================================================================== --- write.h (revision 27313) +++ write.h (revision 27314) @@ -31,5 +31,5 @@ #include "data.h" int io_kicad_legacy_write_element(pcb_plug_io_t *ctx, FILE *FP, pcb_data_t *Data); -int io_kicad_legacy_write_buffer(pcb_plug_io_t *ctx, FILE *FP, pcb_buffer_t *buff, pcb_bool elem_only); +int io_kicad_legacy_write_buffer_subc(pcb_plug_io_t *ctx, FILE *FP, pcb_buffer_t *buff, long idx); int io_kicad_legacy_write_pcb(pcb_plug_io_t *ctx, FILE *FP, const char *old_filename, const char *new_filename, pcb_bool emergency);