Index: file.c =================================================================== --- file.c (revision 27313) +++ file.c (revision 27314) @@ -703,17 +703,16 @@ } } -int io_pcb_WriteBuffer(pcb_plug_io_t *ctx, FILE * FP, pcb_buffer_t *buff, pcb_bool elem_only) +int io_pcb_WriteBuffer_subc(pcb_plug_io_t *ctx, FILE *FP, pcb_buffer_t *buff, long idx) { pcb_printf_slot[0] = ((io_pcb_ctx_t *)(ctx->plugin_data))->write_coord_fmt; - if (elem_only) { - if (pcb_subclist_length(&buff->Data->subc) == 0) { - pcb_message(PCB_MSG_ERROR, "Buffer has no subcircuits!\n"); - return -1; - } + if (pcb_subclist_length(&buff->Data->subc) == 0) { + pcb_message(PCB_MSG_ERROR, "Buffer has no subcircuits!\n"); + return -1; } - else { + if (idx != 0) { + pcb_message(PCB_MSG_ERROR, "Only the first subcircuit can be saved at the moment\n"); return -1; } Index: file.h =================================================================== --- file.h (revision 27313) +++ file.h (revision 27314) @@ -57,7 +57,7 @@ extern pcb_plug_io_t *pcb_preferred_io_pcb, *pcb_nanometer_io_pcb, *pcb_centimil_io_pcb; -int io_pcb_WriteBuffer(pcb_plug_io_t *ctx, FILE *f, pcb_buffer_t *buff, pcb_bool elem_only); +int io_pcb_WriteBuffer_subc(pcb_plug_io_t *ctx, FILE *f, pcb_buffer_t *buff, long idx); int io_pcb_WriteSubcData(pcb_plug_io_t *ctx, FILE *f, pcb_data_t *); int io_pcb_WritePCB(pcb_plug_io_t *ctx, FILE *f, const char *old_filename, const char *new_filename, pcb_bool emergency); Index: io_pcb.c =================================================================== --- io_pcb.c (revision 27313) +++ io_pcb.c (revision 27314) @@ -74,7 +74,8 @@ io_pcb[0].parse_pcb = io_pcb_ParsePCB; io_pcb[0].parse_footprint = io_pcb_ParseElement; io_pcb[0].parse_font = io_pcb_ParseFont; - io_pcb[0].write_buffer = io_pcb_WriteBuffer; + io_pcb[0].write_buffer = NULL; + io_pcb[0].write_buffer_subc = io_pcb_WriteBuffer_subc; io_pcb[0].write_footprint = io_pcb_WriteSubcData; io_pcb[0].write_pcb = io_pcb_WritePCB; io_pcb[0].default_fmt = "pcb"; @@ -89,7 +90,8 @@ ctx[1].write_coord_fmt = pcb_printf_slot[9]; io_pcb[1].plugin_data = &ctx[1]; io_pcb[1].fmt_support_prio = io_pcb_fmt; - io_pcb[1].write_buffer = io_pcb_WriteBuffer; + io_pcb[1].write_buffer = NULL; + io_pcb[1].write_buffer_subc = io_pcb_WriteBuffer_subc; io_pcb[1].write_footprint = io_pcb_WriteSubcData; io_pcb[1].write_pcb = io_pcb_WritePCB; io_pcb[1].default_fmt = "pcb"; @@ -104,7 +106,8 @@ ctx[2].write_coord_fmt = "%$$mn"; io_pcb[2].plugin_data = &ctx[2]; io_pcb[2].fmt_support_prio = io_pcb_fmt; - io_pcb[2].write_buffer = io_pcb_WriteBuffer; + io_pcb[2].write_buffer = NULL; + io_pcb[2].write_buffer_subc = io_pcb_WriteBuffer_subc; io_pcb[2].write_footprint = io_pcb_WriteSubcData; io_pcb[2].write_pcb = io_pcb_WritePCB; io_pcb[2].default_fmt = "pcb";