Index: trunk/src_plugins/export_bom/bom.c =================================================================== --- trunk/src_plugins/export_bom/bom.c (revision 33274) +++ trunk/src_plugins/export_bom/bom.c (revision 33275) @@ -63,7 +63,8 @@ static rnd_export_opt_t *bom_get_export_options(rnd_hid_t *hid, int *n) { - if ((PCB != NULL) && (bom_options[HA_bomfile].default_val.str == NULL)) + char **val = bom_options[HA_bomfile].value; + if ((PCB != NULL) && ((val == NULL) || (*val == NULL) || (**val == '\0'))) pcb_derive_default_filename(PCB->hidlib.filename, &bom_options[HA_bomfile], ".bom"); if (n) @@ -223,13 +224,10 @@ static void bom_do_export(rnd_hid_t *hid, rnd_hid_attr_val_t *options) { - int i; pcb_cam_t cam; if (!options) { bom_get_export_options(hid, 0); - for (i = 0; i < NUM_OPTIONS; i++) - bom_values[i] = bom_options[i].default_val; options = bom_values; } @@ -284,6 +282,7 @@ bom_hid.get_export_options = bom_get_export_options; bom_hid.do_export = bom_do_export; bom_hid.parse_arguments = bom_parse_arguments; + bom_hid.argument_array = bom_values; bom_hid.usage = bom_usage; Index: trunk/src_plugins/export_dsn/dsn.c =================================================================== --- trunk/src_plugins/export_dsn/dsn.c (revision 33274) +++ trunk/src_plugins/export_dsn/dsn.c (revision 33275) @@ -110,7 +110,8 @@ static rnd_export_opt_t *dsn_get_export_options(rnd_hid_t *hid, int *n) { - if ((PCB != NULL) && (dsn_options[HA_dsnfile].default_val.str == NULL)) + char **val = dsn_options[HA_dsnfile].value; + if ((PCB != NULL) && ((val == NULL) || (*val == NULL) || (**val == '\0'))) pcb_derive_default_filename(PCB->hidlib.filename, &dsn_options[HA_dsnfile], ".dsn"); if (n) *n = NUM_OPTIONS; @@ -573,13 +574,10 @@ static void dsn_do_export(rnd_hid_t *hid, rnd_hid_attr_val_t *options) { - int i; pcb_cam_t cam; if (!options) { dsn_get_export_options(hid, 0); - for (i = 0; i < NUM_OPTIONS; i++) - dsn_values[i] = dsn_options[i].default_val; options = dsn_values; } dsn_filename = options[HA_dsnfile].str; @@ -622,6 +620,8 @@ dsn_hid.get_export_options = dsn_get_export_options; dsn_hid.do_export = dsn_do_export; dsn_hid.parse_arguments = dsn_parse_arguments; + dsn_hid.argument_array = dsn_values; + rnd_hid_register_hid(&dsn_hid); rnd_export_register_opts(dsn_options, sizeof(dsn_options) / sizeof(dsn_options[0]), dsn_cookie, 0); Index: trunk/src_plugins/export_dxf/dxf.c =================================================================== --- trunk/src_plugins/export_dxf/dxf.c (revision 33274) +++ trunk/src_plugins/export_dxf/dxf.c (revision 33275) @@ -201,8 +201,8 @@ static rnd_export_opt_t *dxf_get_export_options(rnd_hid_t *hid, int *n) { const char *suffix = ".dxf"; - - if ((PCB != NULL) && (dxf_attribute_list[HA_dxffile].default_val.str == NULL)) + char **val = dxf_attribute_list[HA_dxffile].value; + if ((PCB != NULL) && ((val == NULL) || (*val == NULL) || (**val == '\0'))) pcb_derive_default_filename(PCB->hidlib.filename, &dxf_attribute_list[HA_dxffile], suffix); if (n) @@ -265,7 +265,6 @@ { const char *filename; int save_ons[PCB_MAX_LAYER]; - int i; const char *fn; char *errmsg; lht_err_t err; @@ -273,8 +272,6 @@ if (!options) { dxf_get_export_options(hid, 0); - for (i = 0; i < NUM_OPTIONS; i++) - dxf_values[i] = dxf_attribute_list[i].default_val; options = dxf_values; } @@ -565,6 +562,7 @@ dxf_hid.fill_rect = dxf_fill_rect; dxf_hid.calibrate = dxf_calibrate; dxf_hid.set_crosshair = dxf_set_crosshair; + dxf_hid.argument_array = dxf_values; dxf_hid.usage = dxf_usage; Index: trunk/src_plugins/export_excellon/excellon.c =================================================================== --- trunk/src_plugins/export_excellon/excellon.c (revision 33274) +++ trunk/src_plugins/export_excellon/excellon.c (revision 33275) @@ -204,7 +204,8 @@ static rnd_export_opt_t *excellon_get_export_options(rnd_hid_t *hid, int *n) { - if ((PCB != NULL) && (excellon_options[HA_excellonfile].default_val.str == NULL)) + char **val = excellon_options[HA_excellonfile].value; + if ((PCB != NULL) && ((val == NULL) || (*val == NULL) || (**val == '\0'))) pcb_derive_default_filename(PCB->hidlib.filename, &excellon_options[HA_excellonfile], ""); if (n) @@ -223,8 +224,6 @@ if (!options) { excellon_get_export_options(hid, NULL); - for (i = 0; i < NUM_OPTIONS; i++) - excellon_values[i] = excellon_options[i].default_val; options = excellon_values; } pcb_drill_init(&pdrills, options[HA_apeture_per_file].lng ? NULL : &exc_aperture_cnt); @@ -529,6 +528,7 @@ excellon_hid.calibrate = excellon_calibrate; excellon_hid.set_crosshair = excellon_set_crosshair; excellon_hid.usage = excellon_usage; + excellon_hid.argument_array = excellon_values; rnd_hid_register_hid(&excellon_hid); Index: trunk/src_plugins/export_fidocadj/fidocadj.c =================================================================== --- trunk/src_plugins/export_fidocadj/fidocadj.c (revision 33274) +++ trunk/src_plugins/export_fidocadj/fidocadj.c (revision 33275) @@ -84,8 +84,8 @@ static rnd_export_opt_t *fidocadj_get_export_options(rnd_hid_t *hid, int *n) { const char *suffix = ".fcd"; - - if ((PCB != NULL) && (fidocadj_attribute_list[HA_fidocadjfile].default_val.str == NULL)) + char **val = fidocadj_attribute_list[HA_fidocadjfile].value; + if ((PCB != NULL) && ((val == NULL) || (*val == NULL) || (**val == '\0'))) pcb_derive_default_filename(PCB->hidlib.filename, &fidocadj_attribute_list[HA_fidocadjfile], suffix); if (n) @@ -164,14 +164,12 @@ { FILE *f; const char *filename, *libfile; - int n, fidoly_next, have_lib; + int fidoly_next, have_lib; rnd_layer_id_t lid; htsi_t lib_names; /* hash of names found in the library, if have_lib is 1 */ if (!options) { fidocadj_get_export_options(hid, 0); - for (n = 0; n < NUM_OPTIONS; n++) - fidocadj_values[n] = fidocadj_attribute_list[n].default_val; options = fidocadj_values; } @@ -384,6 +382,7 @@ fidocadj_hid.get_export_options = fidocadj_get_export_options; fidocadj_hid.do_export = fidocadj_do_export; fidocadj_hid.parse_arguments = fidocadj_parse_arguments; + fidocadj_hid.argument_array = fidocadj_values; fidocadj_hid.usage = fidocadj_usage; Index: trunk/src_plugins/export_gcode/gcode.c =================================================================== --- trunk/src_plugins/export_gcode/gcode.c (revision 33274) +++ trunk/src_plugins/export_gcode/gcode.c (revision 33275) @@ -326,7 +326,6 @@ static void gcode_do_export(rnd_hid_t *hid, rnd_hid_attr_val_t *options) { - int i; rnd_layergrp_id_t gid; rnd_xform_t xform; pcb_board_t *pcb = PCB; @@ -333,8 +332,6 @@ if (!options) { gcode_get_export_options(hid, 0); - for (i = 0; i < NUM_OPTIONS; i++) - gcode_values[i] = gcode_attribute_list[i].default_val; options = gcode_values; } @@ -418,6 +415,7 @@ gcode_hid.get_export_options = gcode_get_export_options; gcode_hid.do_export = gcode_do_export; gcode_hid.parse_arguments = gcode_parse_arguments; + gcode_hid.argument_array = gcode_values; gcode_hid.usage = gcode_usage; Index: trunk/src_plugins/export_gerber/gerber.c =================================================================== --- trunk/src_plugins/export_gerber/gerber.c (revision 33274) +++ trunk/src_plugins/export_gerber/gerber.c (revision 33275) @@ -260,7 +260,8 @@ static rnd_export_opt_t *gerber_get_export_options(rnd_hid_t *hid, int *n) { - if ((PCB != NULL) && (gerber_options[HA_gerberfile].default_val.str == NULL)) + char **val = gerber_options[HA_gerberfile].value; + if ((PCB != NULL) && ((val == NULL) || (*val == NULL) || (**val == '\0'))) pcb_derive_default_filename(PCB->hidlib.filename, &gerber_options[HA_gerberfile], ""); if (n) @@ -325,8 +326,6 @@ if (!options) { gerber_get_export_options(hid, NULL); - for (i = 0; i < NUM_OPTIONS; i++) - gerber_values[i] = gerber_options[i].default_val; options = gerber_values; } @@ -1110,6 +1109,7 @@ gerber_hid.calibrate = gerber_calibrate; gerber_hid.set_crosshair = gerber_set_crosshair; gerber_hid.usage = gerber_usage; + gerber_hid.argument_array = gerber_values; rnd_hid_register_hid(&gerber_hid); Index: trunk/src_plugins/export_ipcd356/ipcd356.c =================================================================== --- trunk/src_plugins/export_ipcd356/ipcd356.c (revision 33274) +++ trunk/src_plugins/export_ipcd356/ipcd356.c (revision 33275) @@ -425,7 +425,8 @@ static rnd_export_opt_t *ipcd356_get_export_options(rnd_hid_t *hid, int *n) { - if ((PCB != NULL) && (ipcd356_options[HA_ipcd356_filename].default_val.str == NULL)) + char **val = ipcd356_options[HA_ipcd356_filename].value; + if ((PCB != NULL) && ((val == NULL) || (*val == NULL) || (**val == '\0'))) pcb_derive_default_filename(PCB->hidlib.filename, &ipcd356_options[HA_ipcd356_filename], ".net"); if (n != NULL) @@ -441,7 +442,6 @@ static void ipcd356_do_export(rnd_hid_t *hid, rnd_hid_attr_val_t *options) { - int n; const char *fn; FILE *f; pcb_cam_t cam; @@ -448,10 +448,6 @@ if (!options) { ipcd356_get_export_options(hid, 0); - - for (n = 0; n < NUM_OPTIONS; n++) - ipcd356_values[n] = ipcd356_options[n].default_val; - options = ipcd356_values; } @@ -496,6 +492,7 @@ ipcd356_hid.get_export_options = ipcd356_get_export_options; ipcd356_hid.do_export = ipcd356_do_export; ipcd356_hid.parse_arguments = ipcd356_parse_arguments; + ipcd356_hid.argument_array = ipcd356_values; rnd_hid_register_hid(&ipcd356_hid); Index: trunk/src_plugins/export_lpr/lpr.c =================================================================== --- trunk/src_plugins/export_lpr/lpr.c (revision 33274) +++ trunk/src_plugins/export_lpr/lpr.c (revision 33275) @@ -45,13 +45,16 @@ static rnd_export_opt_t *lpr_get_export_options(rnd_hid_t *hid, int *n) { + char **val = base_lpr_options[HA_lprcommand].value; + /* * We initialize the default value in this manner because the GUI * HID's may want to free() this string value and replace it with a * new one based on how a user fills out a print dialog. */ - if (base_lpr_options[HA_lprcommand].default_val.str == NULL) { - base_lpr_options[HA_lprcommand].default_val.str = rnd_strdup("lpr"); + if ((*val == NULL) || (**val == '\0')) { + free(*val); + *val = rnd_strdup("lpr"); } if (lpr_options == 0) { @@ -69,13 +72,10 @@ static void lpr_do_export(rnd_hid_t *hid, rnd_hid_attr_val_t *options) { FILE *f; - int i; const char *filename; if (!options) { lpr_get_export_options(hid, 0); - for (i = 0; i < num_lpr_options; i++) - lpr_values[i] = lpr_options[i].default_val; options = lpr_values; } @@ -140,6 +140,7 @@ lpr_hid.do_export = lpr_do_export; lpr_hid.parse_arguments = lpr_parse_arguments; lpr_hid.calibrate = lpr_calibrate; + lpr_hid.argument_array = lpr_values; lpr_hid.usage = lpr_usage; Index: trunk/src_plugins/export_openems/export_openems.c =================================================================== --- trunk/src_plugins/export_openems/export_openems.c (revision 33274) +++ trunk/src_plugins/export_openems/export_openems.c (revision 33275) @@ -170,8 +170,9 @@ { const char *suffix = ".m"; pcb_mesh_t *mesh = pcb_mesh_get(MESH_NAME); + char **val = openems_attribute_list[HA_openemsfile].value; - if ((PCB != NULL) && (openems_attribute_list[HA_openemsfile].default_val.str == NULL)) + if ((PCB != NULL) && ((val == NULL) || (*val == NULL) || (**val == '\0'))) pcb_derive_default_filename(PCB->hidlib.filename, &openems_attribute_list[HA_openemsfile], suffix); if (mesh != NULL) { @@ -668,7 +669,7 @@ const char *filename; char *runfn = NULL, *end; int save_ons[PCB_MAX_LAYER]; - int i, len, fmt_matlab; + int len, fmt_matlab; FILE *fsim; openems_ovr = 0; @@ -675,8 +676,6 @@ if (!options) { openems_get_export_options(hid, 0); - for (i = 0; i < NUM_OPTIONS; i++) - openems_values[i] = openems_attribute_list[i].default_val; options = openems_values; } @@ -956,6 +955,7 @@ openems_hid.fill_rect = openems_fill_rect; openems_hid.calibrate = openems_calibrate; openems_hid.set_crosshair = openems_set_crosshair; + openems_hid.argument_array = openems_values; openems_hid.usage = openems_usage; Index: trunk/src_plugins/export_openscad/export_openscad.c =================================================================== --- trunk/src_plugins/export_openscad/export_openscad.c (revision 33274) +++ trunk/src_plugins/export_openscad/export_openscad.c (revision 33275) @@ -134,8 +134,9 @@ static rnd_export_opt_t *openscad_get_export_options(rnd_hid_t *hid, int *n) { const char *suffix = ".scad"; + char **val = openscad_attribute_list[HA_openscadfile].value; - if ((PCB != NULL) && (openscad_attribute_list[HA_openscadfile].default_val.str == NULL)) + if ((PCB != NULL) && ((val == NULL) || (*val == NULL) || (**val == '\0'))) pcb_derive_default_filename(PCB->hidlib.filename, &openscad_attribute_list[HA_openscadfile], suffix); if (n) @@ -299,13 +300,10 @@ { const char *filename; int save_ons[PCB_MAX_LAYER]; - int i; pcb_cam_t cam; if (!options) { openscad_get_export_options(hid, 0); - for (i = 0; i < NUM_OPTIONS; i++) - openscad_values[i] = openscad_attribute_list[i].default_val; options = openscad_values; } @@ -705,6 +703,7 @@ openscad_hid.fill_rect = openscad_fill_rect; openscad_hid.calibrate = openscad_calibrate; openscad_hid.set_crosshair = openscad_set_crosshair; + openscad_hid.argument_array = openscad_values; openscad_hid.usage = openscad_usage; Index: trunk/src_plugins/export_png/png.c =================================================================== --- trunk/src_plugins/export_png/png.c (revision 33274) +++ trunk/src_plugins/export_png/png.c (revision 33275) @@ -401,8 +401,9 @@ static rnd_export_opt_t *png_get_export_options(rnd_hid_t *hid, int *n) { const char *suffix = get_file_suffix(); + char **val = png_attribute_list[HA_pngfile].value; - if ((PCB != NULL) && (png_attribute_list[HA_pngfile].default_val.str == NULL)) + if ((PCB != NULL) && ((val == NULL) || (*val == NULL) || (**val == '\0'))) pcb_derive_default_filename(PCB->hidlib.filename, &png_attribute_list[HA_pngfile], suffix); if (n) @@ -599,7 +600,6 @@ static void png_do_export(rnd_hid_t *hid, rnd_hid_attr_val_t *options) { int save_ons[PCB_MAX_LAYER]; - int i; rnd_box_t tmp, *bbox; int w, h; int xmax, ymax, dpi; @@ -609,8 +609,6 @@ if (!options) { png_get_export_options(hid, 0); - for (i = 0; i < NUM_OPTIONS; i++) - png_values[i] = png_attribute_list[i].default_val; options = png_values; } @@ -1442,6 +1440,7 @@ png_hid.fill_rect = png_fill_rect; png_hid.calibrate = png_calibrate; png_hid.set_crosshair = png_set_crosshair; + png_hid.argument_array = png_values; png_hid.usage = png_usage; Index: trunk/src_plugins/export_ps/eps.c =================================================================== --- trunk/src_plugins/export_ps/eps.c (revision 33274) +++ trunk/src_plugins/export_ps/eps.c (revision 33275) @@ -120,7 +120,9 @@ static rnd_export_opt_t *eps_get_export_options(rnd_hid_t *hid, int *n) { - if ((PCB != NULL) && (eps_attribute_list[HA_psfile].default_val.str == NULL)) + char **val = eps_attribute_list[HA_psfile].value; + + if ((PCB != NULL) && ((val == NULL) || (*val == NULL) || (**val == '\0'))) pcb_derive_default_filename(PCB->hidlib.filename, &eps_attribute_list[HA_psfile], ".eps"); if (n) @@ -309,14 +311,11 @@ static void eps_do_export(rnd_hid_t *hid, rnd_hid_attr_val_t *options) { - int i; int save_ons[PCB_MAX_LAYER]; rnd_xform_t xform; if (!options) { eps_get_export_options(hid, 0); - for (i = 0; i < NUM_OPTIONS; i++) - eps_values[i] = eps_attribute_list[i].default_val; options = eps_values; } @@ -684,6 +683,7 @@ eps_hid.fill_rect = eps_fill_rect; eps_hid.calibrate = eps_calibrate; eps_hid.set_crosshair = eps_set_crosshair; + eps_hid.argument_array = eps_values; eps_hid.usage = eps_usage; Index: trunk/src_plugins/export_ps/ps.c =================================================================== --- trunk/src_plugins/export_ps/ps.c (revision 33274) +++ trunk/src_plugins/export_ps/ps.c (revision 33275) @@ -341,7 +341,9 @@ static rnd_export_opt_t *ps_get_export_options(rnd_hid_t *hid, int *n) { - if ((PCB != NULL) && (ps_attribute_list[HA_psfile].default_val.str == NULL)) + char **val = ps_attribute_list[HA_psfile].value; + + if ((PCB != NULL) && ((val == NULL) || (*val == NULL) || (**val == '\0'))) pcb_derive_default_filename(PCB->hidlib.filename, &ps_attribute_list[HA_psfile], ".ps"); if (n) @@ -605,7 +607,6 @@ { FILE *fh; int save_ons[PCB_MAX_LAYER]; - int i; rnd_xform_t xform; global.ovr_all = 0; @@ -612,8 +613,6 @@ if (!options) { ps_get_export_options(hid, 0); - for (i = 0; i < NUM_OPTIONS; i++) - global.ps_values[i] = ps_attribute_list[i].default_val; options = global.ps_values; } @@ -1497,6 +1496,7 @@ ps_hid.description = "Postscript export"; ps_hid.exporter = 1; ps_hid.mask_invert = 1; + ps_hid.argument_array = global.ps_values; ps_hid.usage = ps_usage; Index: trunk/src_plugins/export_stat/stat.c =================================================================== --- trunk/src_plugins/export_stat/stat.c (revision 33274) +++ trunk/src_plugins/export_stat/stat.c (revision 33275) @@ -113,8 +113,9 @@ static rnd_export_opt_t *stat_get_export_options(rnd_hid_t *hid, int *n) { const char *suffix = ".stat.lht"; + char **val = stat_attribute_list[HA_statfile].value; - if ((PCB != NULL) && (stat_attribute_list[HA_statfile].default_val.str == NULL)) + if ((PCB != NULL) && ((val == NULL) || (*val == NULL) || (**val == '\0'))) pcb_derive_default_filename(PCB->hidlib.filename, &stat_attribute_list[HA_statfile], suffix); if (n) @@ -132,7 +133,7 @@ { FILE *f; const char *filename; - int i, lid; + int lid; rnd_layergrp_id_t lgid; char buff[1024]; layer_stat_t ls, *lgs, lgss[PCB_MAX_LAYERGRP]; @@ -146,8 +147,6 @@ if (!options) { stat_get_export_options(hid, 0); - for (i = 0; i < NUM_OPTIONS; i++) - stat_values[i] = stat_attribute_list[i].default_val; options = stat_values; } @@ -413,6 +412,7 @@ stat_hid.get_export_options = stat_get_export_options; stat_hid.do_export = stat_do_export; stat_hid.parse_arguments = stat_parse_arguments; + stat_hid.argument_array = stat_values; stat_hid.usage = stat_usage; Index: trunk/src_plugins/export_stl/export_stl.c =================================================================== --- trunk/src_plugins/export_stl/export_stl.c (revision 33274) +++ trunk/src_plugins/export_stl/export_stl.c (revision 33275) @@ -95,8 +95,9 @@ static rnd_export_opt_t *stl_get_export_options(rnd_hid_t *hid, int *n) { const char *suffix = ".stl"; + char **val = stl_attribute_list[HA_stlfile].value; - if ((PCB != NULL) && (stl_attribute_list[HA_stlfile].default_val.str == NULL)) + if ((PCB != NULL) && ((val == NULL) || (*val == NULL) || (**val == '\0'))) pcb_derive_default_filename(PCB->hidlib.filename, &stl_attribute_list[HA_stlfile], suffix); if (n) @@ -468,7 +469,6 @@ static void stl_do_export(rnd_hid_t *hid, rnd_hid_attr_val_t *options) { const char *filename; - int i; pcb_cam_t cam; FILE *f; rnd_coord_t thick; @@ -475,8 +475,6 @@ if (!options) { stl_get_export_options(hid, 0); - for (i = 0; i < NUM_OPTIONS; i++) - stl_values[i] = stl_attribute_list[i].default_val; options = stl_values; } @@ -549,6 +547,7 @@ stl_hid.get_export_options = stl_get_export_options; stl_hid.do_export = stl_do_export; stl_hid.parse_arguments = stl_parse_arguments; + stl_hid.argument_array = stl_values; stl_hid.usage = stl_usage; Index: trunk/src_plugins/export_svg/svg.c =================================================================== --- trunk/src_plugins/export_svg/svg.c (revision 33274) +++ trunk/src_plugins/export_svg/svg.c (revision 33275) @@ -202,8 +202,9 @@ static rnd_export_opt_t *svg_get_export_options(rnd_hid_t *hid, int *n) { const char *suffix = ".svg"; + char **val = svg_attribute_list[HA_svgfile].value; - if ((PCB != NULL) && (svg_attribute_list[HA_svgfile].default_val.str == NULL)) + if ((PCB != NULL) && ((val == NULL) || (*val == NULL) || (**val == '\0'))) pcb_derive_default_filename(PCB->hidlib.filename, &svg_attribute_list[HA_svgfile], suffix); if (n) @@ -330,7 +331,6 @@ { const char *filename; int save_ons[PCB_MAX_LAYER]; - int i; rnd_xform_t xform; comp_cnt = 0; @@ -337,8 +337,6 @@ if (!options) { svg_get_export_options(hid, 0); - for (i = 0; i < NUM_OPTIONS; i++) - svg_values[i] = svg_attribute_list[i].default_val; options = svg_values; } @@ -933,6 +931,7 @@ svg_hid.fill_rect = svg_fill_rect; svg_hid.calibrate = svg_calibrate; svg_hid.set_crosshair = svg_set_crosshair; + svg_hid.argument_array = svg_values; svg_hid.usage = svg_usage; Index: trunk/src_plugins/export_vfs_mc/export_vfs_mc.c =================================================================== --- trunk/src_plugins/export_vfs_mc/export_vfs_mc.c (revision 33274) +++ trunk/src_plugins/export_vfs_mc/export_vfs_mc.c (revision 33275) @@ -105,12 +105,9 @@ static void export_vfs_mc_do_export(rnd_hid_t *hid, rnd_hid_attr_val_t *options) { const char *cmd; - int i; if (!options) { export_vfs_mc_get_export_options(hid, 0); - for (i = 0; i < NUM_OPTIONS; i++) - export_vfs_mc_values[i] = export_vfs_mc_options[i].default_val; options = export_vfs_mc_values; } @@ -166,6 +163,7 @@ export_vfs_mc_hid.get_export_options = export_vfs_mc_get_export_options; export_vfs_mc_hid.do_export = export_vfs_mc_do_export; export_vfs_mc_hid.parse_arguments = export_vfs_mc_parse_arguments; + export_vfs_mc_hid.argument_array = export_vfs_mc_values; export_vfs_mc_hid.usage = export_vfs_mc_usage; Index: trunk/src_plugins/export_xy/xy.c =================================================================== --- trunk/src_plugins/export_xy/xy.c (revision 33274) +++ trunk/src_plugins/export_xy/xy.c (revision 33275) @@ -101,6 +101,7 @@ { static int last_unit_value = -1; rnd_conf_listitem_t *li; + char **val = xy_options[HA_xyfile].value; int idx; /* load all formats from the config */ @@ -145,7 +146,8 @@ xy_options[HA_unit].default_val.lng = rnd_get_unit_struct("mil")->index; last_unit_value = xy_options[HA_unit].default_val.lng; } - if ((PCB != NULL) && (xy_options[HA_xyfile].default_val.str == NULL)) + + if ((PCB != NULL) && ((val == NULL) || (*val == NULL) || (**val == '\0'))) pcb_derive_default_filename(PCB->hidlib.filename, &xy_options[HA_xyfile], ".xy"); if (n) @@ -789,7 +791,6 @@ static void xy_do_export(rnd_hid_t *hid, rnd_hid_attr_val_t *options) { - int i; template_t templ; char **tid; pcb_cam_t cam; @@ -801,8 +802,6 @@ if (!options) { xy_get_export_options(hid, 0); - for (i = 0; i < NUM_OPTIONS; i++) - xy_values[i] = xy_options[i].default_val; options = xy_values; } @@ -882,6 +881,7 @@ xy_hid.get_export_options = xy_get_export_options; xy_hid.do_export = xy_do_export; xy_hid.parse_arguments = xy_parse_arguments; + xy_hid.argument_array = xy_values; xy_hid.usage = xy_usage;