Index: trunk/src_plugins/io_lihata/io_lihata.c =================================================================== --- trunk/src_plugins/io_lihata/io_lihata.c (revision 11859) +++ trunk/src_plugins/io_lihata/io_lihata.c (revision 11860) @@ -69,7 +69,7 @@ plug_io_lihata_v3.parse_font = io_lihata_parse_font; plug_io_lihata_v3.write_font = io_lihata_write_font; plug_io_lihata_v3.write_buffer = io_lihata_write_buffer; - plug_io_lihata_v3.write_element = NULL; + plug_io_lihata_v3.write_element = io_lihata_write_element; plug_io_lihata_v3.write_pcb = io_lihata_write_pcb_v3; plug_io_lihata_v3.default_fmt = "lihata"; plug_io_lihata_v3.description = "lihata board v3"; Index: trunk/src_plugins/io_lihata/write.c =================================================================== --- trunk/src_plugins/io_lihata/write.c (revision 11859) +++ trunk/src_plugins/io_lihata/write.c (revision 11860) @@ -1168,20 +1168,16 @@ return res; } -int io_lihata_write_buffer(pcb_plug_io_t *ctx, FILE *f, pcb_buffer_t *buff, pcb_bool elem_only) +static int io_lihata_dump_1st_subc(pcb_plug_io_t *ctx, FILE *f, pcb_data_t *data, int enforce1) { int res; lht_doc_t *doc; - if (!elem_only) { - pcb_message(PCB_MSG_ERROR, "Can't save full buffer (yet), only a single subcircuits from a buffer\n"); - return -1; - } - if (pcb_subclist_length(&buff->Data->subc) > 1) { + if ((enforce1) && (pcb_subclist_length(&data->subc)) > 1) { pcb_message(PCB_MSG_ERROR, "Can't save more than one subcircuit from a buffer\n"); return -1; } - if (pcb_subclist_length(&buff->Data->subc) < 1) { + if (pcb_subclist_length(&data->subc) < 1) { pcb_message(PCB_MSG_ERROR, "there's no subcircuit in the buffer\n"); return -1; } @@ -1191,7 +1187,7 @@ doc = lht_dom_init(); wrver = 3; doc->root = lht_dom_node_alloc(LHT_LIST, "pcb-rnd-subcircuit-v3"); - lht_dom_list_append(doc->root, build_subc(pcb_subclist_first(&buff->Data->subc))); + lht_dom_list_append(doc->root, build_subc(pcb_subclist_first(&data->subc))); res = lht_dom_export(doc->root, f, ""); @@ -1200,3 +1196,17 @@ return res; } +int io_lihata_write_buffer(pcb_plug_io_t *ctx, FILE *f, pcb_buffer_t *buff, pcb_bool elem_only) +{ + if (!elem_only) { + pcb_message(PCB_MSG_ERROR, "Can't save full buffer (yet), only a single subcircuits from a buffer\n"); + return -1; + } + + return io_lihata_dump_1st_subc(ctx, f, buff->Data, 1); +} + +int io_lihata_write_element(pcb_plug_io_t *ctx, FILE *f, pcb_data_t *dt) +{ + return io_lihata_dump_1st_subc(ctx, f, dt, 1); +} Index: trunk/src_plugins/io_lihata/write.h =================================================================== --- trunk/src_plugins/io_lihata/write.h (revision 11859) +++ trunk/src_plugins/io_lihata/write.h (revision 11860) @@ -25,4 +25,5 @@ int io_lihata_write_pcb_v3(pcb_plug_io_t *ctx, FILE *FP, const char *old_filename, const char *new_filename, pcb_bool emergency); int io_lihata_write_font(pcb_plug_io_t *ctx, pcb_font_t *font, const char *Filename); int io_lihata_write_buffer(pcb_plug_io_t *ctx, FILE *f, pcb_buffer_t *buff, pcb_bool elem_only); +int io_lihata_write_element(pcb_plug_io_t *ctx, FILE *f, pcb_data_t *dt);