Index: trunk/src/conf.c =================================================================== --- trunk/src/conf.c (revision 16376) +++ trunk/src/conf.c (revision 16377) @@ -1387,7 +1387,7 @@ return ret; } -void conf_parse_arguments(const char *prefix, int *argc, char ***argv) +int conf_parse_arguments(const char *prefix, int *argc, char ***argv) { int n, dst; @@ -1411,6 +1411,7 @@ dst--; } *argc = dst; + return 0; } void conf_usage(const char *prefix, void (*print)(const char *name, const char *help)) Index: trunk/src/conf.h =================================================================== --- trunk/src/conf.h (revision 16376) +++ trunk/src/conf.h (revision 16377) @@ -198,7 +198,7 @@ int conf_set_from_cli(const char *prefix, const char *arg_, const char *val, const char **why); /* Attempt to consume argv[] using conf_set_from_cli */ -void conf_parse_arguments(const char *prefix, int *argc, char ***argv); +int conf_parse_arguments(const char *prefix, int *argc, char ***argv); #define conf_reg_field_array(globvar, field, type_name, path, desc, flags) \ conf_reg_field_((void *)&globvar.field, (sizeof(globvar.field) / sizeof(globvar.field[0])), type_name, path, desc, flags) Index: trunk/src/hid.h =================================================================== --- trunk/src/hid.h (revision 16376) +++ trunk/src/hid.h (revision 16377) @@ -243,8 +243,9 @@ /* Parses the command line. Call this early for whatever HID will be the primary HID, as it will set all the registered attributes. The HID should remove all arguments, leaving any possible file - names behind. */ - void (*parse_arguments)(int *argc, char ***argv); + names behind. Returns 0 on success, positive for recoverable errors + (no change in argc or argv) and negative for unrecoverable errors. */ + int (*parse_arguments)(int *argc, char ***argv); /* This may be called to ask the GUI to force a redraw of a given area */ void (*invalidate_lr)(pcb_coord_t left, pcb_coord_t right, pcb_coord_t top, pcb_coord_t bottom); Index: trunk/src/hid_attrib.c =================================================================== --- trunk/src/hid_attrib.c (revision 16376) +++ trunk/src/hid_attrib.c (revision 16377) @@ -47,7 +47,7 @@ } } -void pcb_hid_parse_command_line(int *argc, char ***argv) +int pcb_hid_parse_command_line(int *argc, char ***argv) { pcb_hid_attr_node_t *ha; int i, e, ok; @@ -196,7 +196,7 @@ goto try_no_arg; } fprintf(stderr, "unrecognized option: %s\n", (*argv)[0]); - exit(1); + return -1; got_match:; } else { @@ -209,7 +209,7 @@ } else { pcb_message(PCB_MSG_ERROR, "Multiple filenames not supported. First filename was: %s; offending second filename: %s\n", filename, (*argv)[0]); - exit(1); + return -1; } } @@ -218,6 +218,7 @@ (*argv)[0] = filename; (*argc) = 1; } + return 0; } void pcb_hid_usage_option(const char *name, const char *help) Index: trunk/src/hid_init.h =================================================================== --- trunk/src/hid_init.h (revision 16376) +++ trunk/src/hid_init.h (revision 16377) @@ -40,7 +40,7 @@ /* A HID may use this if it does not need command line arguments in any special format; for example, the Lesstif HID needs to use the Xt parser, but the Postscript HID can use this function. */ -void pcb_hid_parse_command_line(int *argc, char ***argv); +int pcb_hid_parse_command_line(int *argc, char ***argv); /* Called by the init funcs, used to set up pcb_hid_list. */ extern void pcb_hid_register_hid(pcb_hid_t * hid); Index: trunk/src/hid_nogui.c =================================================================== --- trunk/src/hid_nogui.c (revision 16376) +++ trunk/src/hid_nogui.c (revision 16377) @@ -31,7 +31,7 @@ CRASH("do_export"); } -static void nogui_parse_arguments(int *argc, char ***argv) +static int nogui_parse_arguments(int *argc, char ***argv) { CRASH("parse_arguments"); } Index: trunk/src/main.c =================================================================== --- trunk/src/main.c (revision 16376) +++ trunk/src/main.c (revision 16377) @@ -526,7 +526,8 @@ exit(res); } - pcb_gui->parse_arguments(&hid_argc, &hid_argv); + if (pcb_gui->parse_arguments(&hid_argc, &hid_argv) != 0) + exit(1); /* Create a new PCB object in memory */ PCB = pcb_board_new(0); Index: trunk/src_plugins/export_bboard/bboard.c =================================================================== --- trunk/src_plugins/export_bboard/bboard.c (revision 16376) +++ trunk/src_plugins/export_bboard/bboard.c (revision 16377) @@ -577,9 +577,9 @@ } -static void bboard_parse_arguments(int *argc, char ***argv) +static int bboard_parse_arguments(int *argc, char ***argv) { - pcb_hid_parse_command_line(argc, argv); + return pcb_hid_parse_command_line(argc, argv); } Index: trunk/src_plugins/export_bom/bom.c =================================================================== --- trunk/src_plugins/export_bom/bom.c (revision 16376) +++ trunk/src_plugins/export_bom/bom.c (revision 16377) @@ -291,10 +291,10 @@ } -static void bom_parse_arguments(int *argc, char ***argv) +static int bom_parse_arguments(int *argc, char ***argv) { pcb_hid_register_attributes(bom_options, sizeof(bom_options) / sizeof(bom_options[0]), bom_cookie, 0); - pcb_hid_parse_command_line(argc, argv); + return pcb_hid_parse_command_line(argc, argv); } pcb_hid_t bom_hid; Index: trunk/src_plugins/export_dsn/dsn.c =================================================================== --- trunk/src_plugins/export_dsn/dsn.c (revision 16376) +++ trunk/src_plugins/export_dsn/dsn.c (revision 16377) @@ -677,9 +677,9 @@ PrintSPECCTRA(); } -static void dsn_parse_arguments(int *argc, char ***argv) +static int dsn_parse_arguments(int *argc, char ***argv) { - pcb_hid_parse_command_line(argc, argv); + return pcb_hid_parse_command_line(argc, argv); } int pplg_check_ver_export_dsn(int ver_needed) { return 0; } Index: trunk/src_plugins/export_dxf/dxf.c =================================================================== --- trunk/src_plugins/export_dxf/dxf.c (revision 16376) +++ trunk/src_plugins/export_dxf/dxf.c (revision 16377) @@ -319,10 +319,10 @@ fclose(dxf_ctx.f); } -static void dxf_parse_arguments(int *argc, char ***argv) +static int dxf_parse_arguments(int *argc, char ***argv) { pcb_hid_register_attributes(dxf_attribute_list, sizeof(dxf_attribute_list) / sizeof(dxf_attribute_list[0]), dxf_cookie, 0); - pcb_hid_parse_command_line(argc, argv); + return pcb_hid_parse_command_line(argc, argv); } static int dxf_set_layer_group(pcb_layergrp_id_t group, pcb_layer_id_t layer, unsigned int flags, int is_empty) Index: trunk/src_plugins/export_fidocadj/fidocadj.c =================================================================== --- trunk/src_plugins/export_fidocadj/fidocadj.c (revision 16376) +++ trunk/src_plugins/export_fidocadj/fidocadj.c (revision 16377) @@ -344,10 +344,10 @@ } } -static void fidocadj_parse_arguments(int *argc, char ***argv) +static int fidocadj_parse_arguments(int *argc, char ***argv) { pcb_hid_register_attributes(fidocadj_attribute_list, sizeof(fidocadj_attribute_list) / sizeof(fidocadj_attribute_list[0]), fidocadj_cookie, 0); - pcb_hid_parse_command_line(argc, argv); + return pcb_hid_parse_command_line(argc, argv); } static int fidocadj_usage(const char *topic) Index: trunk/src_plugins/export_gcode/gcode.c =================================================================== --- trunk/src_plugins/export_gcode/gcode.c (revision 16376) +++ trunk/src_plugins/export_gcode/gcode.c (revision 16377) @@ -226,10 +226,10 @@ /* *** Main export callback ************************************************ */ -static void gcode_parse_arguments(int *argc, char ***argv) +static int gcode_parse_arguments(int *argc, char ***argv) { pcb_hid_register_attributes(gcode_attribute_list, sizeof(gcode_attribute_list) / sizeof(gcode_attribute_list[0]), gcode_cookie, 0); - pcb_hid_parse_command_line(argc, argv); + return pcb_hid_parse_command_line(argc, argv); } static pcb_hid_attribute_t *gcode_get_export_options(int *n) Index: trunk/src_plugins/export_gerber/gerber.c =================================================================== --- trunk/src_plugins/export_gerber/gerber.c (revision 16376) +++ trunk/src_plugins/export_gerber/gerber.c (revision 16377) @@ -45,7 +45,7 @@ static pcb_hid_attribute_t *gerber_get_export_options(int *n); static void gerber_do_export(pcb_hid_attr_val_t * options); -static void gerber_parse_arguments(int *argc, char ***argv); +static int gerber_parse_arguments(int *argc, char ***argv); static pcb_hid_gc_t gerber_make_gc(void); static void gerber_destroy_gc(pcb_hid_gc_t gc); static void gerber_set_color(pcb_hid_gc_t gc, const char *name); @@ -651,10 +651,10 @@ conf_update(NULL, -1); /* resotre forced sets */ } -static void gerber_parse_arguments(int *argc, char ***argv) +static int gerber_parse_arguments(int *argc, char ***argv) { pcb_hid_register_attributes(gerber_options, NUM_OPTIONS, gerber_cookie, 0); - pcb_hid_parse_command_line(argc, argv); + return pcb_hid_parse_command_line(argc, argv); } static int drill_sort(const void *va, const void *vb) Index: trunk/src_plugins/export_ipcd356/ipcd356.c =================================================================== --- trunk/src_plugins/export_ipcd356/ipcd356.c (revision 16376) +++ trunk/src_plugins/export_ipcd356/ipcd356.c (revision 16377) @@ -604,9 +604,9 @@ IPCD356_Netlist(); } -static void IPCD356_parse_arguments(int *argc, char ***argv) +static int IPCD356_parse_arguments(int *argc, char ***argv) { - pcb_hid_parse_command_line(argc, argv); + return pcb_hid_parse_command_line(argc, argv); } pcb_hid_t IPCD356_hid; Index: trunk/src_plugins/export_lpr/lpr.c =================================================================== --- trunk/src_plugins/export_lpr/lpr.c (revision 16376) +++ trunk/src_plugins/export_lpr/lpr.c (revision 16377) @@ -93,11 +93,11 @@ pcb_pclose(f); } -static void lpr_parse_arguments(int *argc, char ***argv) +static int lpr_parse_arguments(int *argc, char ***argv) { lpr_get_export_options(0); pcb_hid_register_attributes(lpr_options, num_lpr_options, lpr_cookie, 0); - pcb_hid_parse_command_line(argc, argv); + return pcb_hid_parse_command_line(argc, argv); } static void lpr_calibrate(double xval, double yval) Index: trunk/src_plugins/export_nelma/nelma.c =================================================================== --- trunk/src_plugins/export_nelma/nelma.c (revision 16376) +++ trunk/src_plugins/export_nelma/nelma.c (revision 16377) @@ -467,10 +467,10 @@ /* *** Main export callback ************************************************ */ -static void nelma_parse_arguments(int *argc, char ***argv) +static int nelma_parse_arguments(int *argc, char ***argv) { pcb_hid_register_attributes(nelma_attribute_list, sizeof(nelma_attribute_list) / sizeof(nelma_attribute_list[0]), nelma_cookie, 0); - pcb_hid_parse_command_line(argc, argv); + return pcb_hid_parse_command_line(argc, argv); } static pcb_hid_attribute_t *nelma_get_export_options(int *n) Index: trunk/src_plugins/export_openems/export_openems.c =================================================================== --- trunk/src_plugins/export_openems/export_openems.c (revision 16376) +++ trunk/src_plugins/export_openems/export_openems.c (revision 16377) @@ -606,10 +606,10 @@ f = NULL; } -static void openems_parse_arguments(int *argc, char ***argv) +static int openems_parse_arguments(int *argc, char ***argv) { pcb_hid_register_attributes(openems_attribute_list, sizeof(openems_attribute_list) / sizeof(openems_attribute_list[0]), openems_cookie, 0); - pcb_hid_parse_command_line(argc, argv); + return pcb_hid_parse_command_line(argc, argv); } static int openems_set_layer_group(pcb_layergrp_id_t group, pcb_layer_id_t layer, unsigned int flags, int is_empty) Index: trunk/src_plugins/export_openscad/export_openscad.c =================================================================== --- trunk/src_plugins/export_openscad/export_openscad.c (revision 16376) +++ trunk/src_plugins/export_openscad/export_openscad.c (revision 16377) @@ -347,10 +347,10 @@ f = NULL; } -static void openscad_parse_arguments(int *argc, char ***argv) +static int openscad_parse_arguments(int *argc, char ***argv) { pcb_hid_register_attributes(openscad_attribute_list, sizeof(openscad_attribute_list) / sizeof(openscad_attribute_list[0]), openscad_cookie, 0); - pcb_hid_parse_command_line(argc, argv); + return pcb_hid_parse_command_line(argc, argv); } Index: trunk/src_plugins/export_png/png.c =================================================================== --- trunk/src_plugins/export_png/png.c (revision 16376) +++ trunk/src_plugins/export_png/png.c (revision 16377) @@ -1168,10 +1168,10 @@ free(black); } -static void png_parse_arguments(int *argc, char ***argv) +static int png_parse_arguments(int *argc, char ***argv) { pcb_hid_register_attributes(png_attribute_list, sizeof(png_attribute_list) / sizeof(png_attribute_list[0]), png_cookie, 0); - pcb_hid_parse_command_line(argc, argv); + return pcb_hid_parse_command_line(argc, argv); } Index: trunk/src_plugins/export_ps/eps.c =================================================================== --- trunk/src_plugins/export_ps/eps.c (revision 16376) +++ trunk/src_plugins/export_ps/eps.c (revision 16377) @@ -31,7 +31,7 @@ /*----------------------------------------------------------------------------*/ static pcb_hid_attribute_t *eps_get_export_options(int *n); static void eps_do_export(pcb_hid_attr_val_t * options); -static void eps_parse_arguments(int *argc, char ***argv); +static int eps_parse_arguments(int *argc, char ***argv); static int eps_set_layer_group(pcb_layergrp_id_t group, pcb_layer_id_t layer, unsigned int flags, int is_empty); static pcb_hid_gc_t eps_make_gc(void); static void eps_destroy_gc(pcb_hid_gc_t gc); @@ -337,10 +337,10 @@ fclose(f); } -static void eps_parse_arguments(int *argc, char ***argv) +static int eps_parse_arguments(int *argc, char ***argv) { pcb_hid_register_attributes(eps_attribute_list, sizeof(eps_attribute_list) / sizeof(eps_attribute_list[0]), ps_cookie, 0); - pcb_hid_parse_command_line(argc, argv); + return pcb_hid_parse_command_line(argc, argv); } static int is_mask; Index: trunk/src_plugins/export_ps/ps.c =================================================================== --- trunk/src_plugins/export_ps/ps.c (revision 16376) +++ trunk/src_plugins/export_ps/ps.c (revision 16377) @@ -727,10 +727,10 @@ } } -static void ps_parse_arguments(int *argc, char ***argv) +static int ps_parse_arguments(int *argc, char ***argv) { pcb_hid_register_attributes(ps_attribute_list, NUM_OPTIONS, ps_cookie, 0); - pcb_hid_parse_command_line(argc, argv); + return pcb_hid_parse_command_line(argc, argv); } static void corner(FILE * fh, pcb_coord_t x, pcb_coord_t y, int dx, int dy) Index: trunk/src_plugins/export_stat/stat.c =================================================================== --- trunk/src_plugins/export_stat/stat.c (revision 16376) +++ trunk/src_plugins/export_stat/stat.c (revision 16377) @@ -346,10 +346,10 @@ fclose(f); } -static void stat_parse_arguments(int *argc, char ***argv) +static int stat_parse_arguments(int *argc, char ***argv) { pcb_hid_register_attributes(stat_attribute_list, sizeof(stat_attribute_list) / sizeof(stat_attribute_list[0]), stat_cookie, 0); - pcb_hid_parse_command_line(argc, argv); + return pcb_hid_parse_command_line(argc, argv); } static int stat_usage(const char *topic) Index: trunk/src_plugins/export_svg/svg.c =================================================================== --- trunk/src_plugins/export_svg/svg.c (revision 16376) +++ trunk/src_plugins/export_svg/svg.c (revision 16377) @@ -332,10 +332,10 @@ f = NULL; } -static void svg_parse_arguments(int *argc, char ***argv) +static int svg_parse_arguments(int *argc, char ***argv) { pcb_hid_register_attributes(svg_attribute_list, sizeof(svg_attribute_list) / sizeof(svg_attribute_list[0]), svg_cookie, 0); - pcb_hid_parse_command_line(argc, argv); + return pcb_hid_parse_command_line(argc, argv); } static int svg_set_layer_group(pcb_layergrp_id_t group, pcb_layer_id_t layer, unsigned int flags, int is_empty) Index: trunk/src_plugins/export_test/export_test.c =================================================================== --- trunk/src_plugins/export_test/export_test.c (revision 16376) +++ trunk/src_plugins/export_test/export_test.c (revision 16377) @@ -98,10 +98,10 @@ } -static void export_test_parse_arguments(int *argc, char ***argv) +static int export_test_parse_arguments(int *argc, char ***argv) { pcb_hid_register_attributes(export_test_options, sizeof(export_test_options) / sizeof(export_test_options[0]), export_test_cookie, 0); - pcb_hid_parse_command_line(argc, argv); + return pcb_hid_parse_command_line(argc, argv); } pcb_hid_t export_test_hid; Index: trunk/src_plugins/export_xy/xy.c =================================================================== --- trunk/src_plugins/export_xy/xy.c (revision 16376) +++ trunk/src_plugins/export_xy/xy.c (revision 16377) @@ -749,10 +749,10 @@ return 0; } -static void xy_parse_arguments(int *argc, char ***argv) +static int xy_parse_arguments(int *argc, char ***argv) { pcb_hid_register_attributes(xy_options, sizeof(xy_options) / sizeof(xy_options[0]), xy_cookie, 0); - pcb_hid_parse_command_line(argc, argv); + return pcb_hid_parse_command_line(argc, argv); } pcb_hid_t xy_hid; Index: trunk/src_plugins/gpmi/pcb-gpmi/gpmi_plugin/gpmi_pkg/hid/hid_callbacks.c =================================================================== --- trunk/src_plugins/gpmi/pcb-gpmi/gpmi_plugin/gpmi_pkg/hid/hid_callbacks.c (revision 16376) +++ trunk/src_plugins/gpmi/pcb-gpmi/gpmi_plugin/gpmi_pkg/hid/hid_callbacks.c (revision 16377) @@ -68,10 +68,10 @@ h->result = NULL; } -void gpmi_hid_parse_arguments(int *pcbargc, char ***pcbargv) +int gpmi_hid_parse_arguments(int *pcbargc, char ***pcbargv) { /* Do nothing for now */ - pcb_hid_parse_command_line(pcbargc, pcbargv); + return pcb_hid_parse_command_line(pcbargc, pcbargv); } void gpmi_hid_set_crosshair(int x, int y, int cursor_action) Index: trunk/src_plugins/gpmi/pcb-gpmi/gpmi_plugin/gpmi_pkg/hid/hid_callbacks.h =================================================================== --- trunk/src_plugins/gpmi/pcb-gpmi/gpmi_plugin/gpmi_pkg/hid/hid_callbacks.h (revision 16376) +++ trunk/src_plugins/gpmi/pcb-gpmi/gpmi_plugin/gpmi_pkg/hid/hid_callbacks.h (revision 16377) @@ -2,7 +2,7 @@ pcb_hid_gc_t gpmi_hid_make_gc(void); void gpmi_hid_destroy_gc(pcb_hid_gc_t gc); void gpmi_hid_do_export(pcb_hid_attr_val_t * options); -void gpmi_hid_parse_arguments(int *pcbargc, char ***pcbargv); +int gpmi_hid_parse_arguments(int *pcbargc, char ***pcbargv); void gpmi_hid_set_crosshair(int x, int y, int cursor_action); int gpmi_hid_set_layer_group(pcb_layergrp_id_t group, pcb_layer_id_t layer, unsigned int flags, int is_empty); void gpmi_hid_set_color(pcb_hid_gc_t gc, const char *name); Index: trunk/src_plugins/hid_batch/batch.c =================================================================== --- trunk/src_plugins/hid_batch/batch.c (revision 16376) +++ trunk/src_plugins/hid_batch/batch.c (revision 16377) @@ -143,9 +143,9 @@ batch_stay = 0; } -static void batch_parse_arguments(int *argc, char ***argv) +static int batch_parse_arguments(int *argc, char ***argv) { - pcb_hid_parse_command_line(argc, argv); + return pcb_hid_parse_command_line(argc, argv); } static void batch_invalidate_lr(pcb_coord_t l, pcb_coord_t r, pcb_coord_t t, pcb_coord_t b) Index: trunk/src_plugins/hid_gtk2_gdk/gtkhid-main.c =================================================================== --- trunk/src_plugins/hid_gtk2_gdk/gtkhid-main.c (revision 16376) +++ trunk/src_plugins/hid_gtk2_gdk/gtkhid-main.c (revision 16377) @@ -27,10 +27,10 @@ pcb_hid_t gtk2_gdk_hid; -void gtk2_gdk_parse_arguments(int *argc, char ***argv) +int gtk2_gdk_parse_arguments(int *argc, char ***argv) { ghid_gdk_install(&ghidgui->common, NULL); - gtkhid_parse_arguments(argc, argv); + return gtkhid_parse_arguments(argc, argv); } int pplg_check_ver_hid_gtk2_gdk(int ver_needed) { return 0; } Index: trunk/src_plugins/hid_gtk2_gl/gtkhid-main.c =================================================================== --- trunk/src_plugins/hid_gtk2_gl/gtkhid-main.c (revision 16376) +++ trunk/src_plugins/hid_gtk2_gl/gtkhid-main.c (revision 16377) @@ -29,10 +29,10 @@ pcb_hid_t gtk2_gl_hid; -void gtk2_gl_parse_arguments(int *argc, char ***argv) +int gtk2_gl_parse_arguments(int *argc, char ***argv) { ghid_gl_install(&ghidgui->common, NULL); - gtkhid_parse_arguments(argc, argv); + return gtkhid_parse_arguments(argc, argv); } int pplg_check_ver_hid_gtk2_gl(int ver_needed) { return 0; } Index: trunk/src_plugins/hid_gtk3_cairo/gtkhid-main.c =================================================================== --- trunk/src_plugins/hid_gtk3_cairo/gtkhid-main.c (revision 16376) +++ trunk/src_plugins/hid_gtk3_cairo/gtkhid-main.c (revision 16377) @@ -29,10 +29,10 @@ void ghid_cairo_install(pcb_gtk_common_t * common, pcb_hid_t * hid); -void gtk3_cairo_parse_arguments(int *argc, char ***argv) +int gtk3_cairo_parse_arguments(int *argc, char ***argv) { ghid_cairo_install(&ghidgui->common, NULL); - gtkhid_parse_arguments(argc, argv); + return gtkhid_parse_arguments(argc, argv); } int pplg_check_ver_hid_gtk3_cairo(int ver_needed) { return 0; } Index: trunk/src_plugins/hid_gtk3_gl/gtkhid-main.c =================================================================== --- trunk/src_plugins/hid_gtk3_gl/gtkhid-main.c (revision 16376) +++ trunk/src_plugins/hid_gtk3_gl/gtkhid-main.c (revision 16377) @@ -29,10 +29,10 @@ void ghid_gl_install(pcb_gtk_common_t * common, pcb_hid_t * hid); -void gtk3_gl_parse_arguments(int *argc, char ***argv) +int gtk3_gl_parse_arguments(int *argc, char ***argv) { ghid_gl_install(&ghidgui->common, NULL); - gtkhid_parse_arguments(argc, argv); + return gtkhid_parse_arguments(argc, argv); } int pplg_check_ver_hid_gtk3_gl(int ver_needed) { return 0; } Index: trunk/src_plugins/hid_lesstif/main.c =================================================================== --- trunk/src_plugins/hid_lesstif/main.c (revision 16376) +++ trunk/src_plugins/hid_lesstif/main.c (revision 16377) @@ -1821,7 +1821,7 @@ } } -static void lesstif_parse_arguments(int *argc, char ***argv) +static int lesstif_parse_arguments(int *argc, char ***argv) { Atom close_atom; pcb_hid_attr_node_t *ha; @@ -2056,6 +2056,7 @@ if (stdin_listen) { XtAppAddInput(app_context, pcb_fileno(stdin), (XtPointer) XtInputReadMask, lesstif_listener_cb, NULL); } + return 0; } static void draw_grid() Index: trunk/src_plugins/hid_remote/remote.c =================================================================== --- trunk/src_plugins/hid_remote/remote.c (revision 16376) +++ trunk/src_plugins/hid_remote/remote.c (revision 16377) @@ -114,9 +114,9 @@ remote_stay = 0; } -static void remote_parse_arguments(int *argc, char ***argv) +static int remote_parse_arguments(int *argc, char ***argv) { - pcb_hid_parse_command_line(argc, argv); + return pcb_hid_parse_command_line(argc, argv); } static void remote_invalidate_lr(pcb_coord_t l, pcb_coord_t r, pcb_coord_t t, pcb_coord_t b) Index: trunk/src_plugins/lib_gtk_hid/glue_hid.c =================================================================== --- trunk/src_plugins/lib_gtk_hid/glue_hid.c (revision 16376) +++ trunk/src_plugins/lib_gtk_hid/glue_hid.c (revision 16377) @@ -206,7 +206,7 @@ /* Create top level window for routines that will need top_window | before ghid_create_pcb_widgets() is called. */ -void gtkhid_parse_arguments(int *argc, char ***argv) +int gtkhid_parse_arguments(int *argc, char ***argv) { GtkWidget *window; @@ -278,6 +278,7 @@ wplc_place(WPLC_TOP, window); gtk_widget_show_all(gport->top_window); + return 0; } static void ghid_calibrate(double xval, double yval) Index: trunk/src_plugins/lib_gtk_hid/glue_hid.h =================================================================== --- trunk/src_plugins/lib_gtk_hid/glue_hid.h (revision 16376) +++ trunk/src_plugins/lib_gtk_hid/glue_hid.h (revision 16377) @@ -2,5 +2,5 @@ void ghid_glue_hid_init(pcb_hid_t *dst); void gtkhid_do_export(pcb_hid_attr_val_t *options); -void gtkhid_parse_arguments(int *argc, char ***argv); +int gtkhid_parse_arguments(int *argc, char ***argv); Index: trunk/src_plugins/loghid/hid-logger.c =================================================================== --- trunk/src_plugins/loghid/hid-logger.c (revision 16376) +++ trunk/src_plugins/loghid/hid-logger.c (revision 16377) @@ -27,10 +27,10 @@ delegatee_->do_exit(delegatee_); } -static void log_parse_arguments(int *argc, char ***argv) +static int log_parse_arguments(int *argc, char ***argv) { pcb_fprintf(out_, "parse_arguments()\n"); - delegatee_->parse_arguments(argc, argv); + return delegatee_->parse_arguments(argc, argv); } static void log_invalidate_lr(pcb_coord_t left, pcb_coord_t right, pcb_coord_t top, pcb_coord_t bottom) Index: trunk/src_plugins/loghid/loghid.c =================================================================== --- trunk/src_plugins/loghid/loghid.c (revision 16376) +++ trunk/src_plugins/loghid/loghid.c (revision 16377) @@ -56,7 +56,7 @@ }; #define NUM_OPTIONS sizeof(loghid_attribute_list) / sizeof(loghid_attribute_list[0]) -static void loghid_parse_arguments_real(int *argc, char ***argv, int is_gui) +static int loghid_parse_arguments_real(int *argc, char ***argv, int is_gui) { pcb_hid_t *target, *me; const char *target_name; @@ -76,17 +76,17 @@ } create_log_hid(stdout, me, target); - target->parse_arguments(argc, argv); + return target->parse_arguments(argc, argv); } -static void loghid_parse_arguments_gui(int *argc, char ***argv) +static int loghid_parse_arguments_gui(int *argc, char ***argv) { - loghid_parse_arguments_real(argc, argv, 1); + return loghid_parse_arguments_real(argc, argv, 1); } -static void loghid_parse_arguments_exp(int *argc, char ***argv) +static int loghid_parse_arguments_exp(int *argc, char ***argv) { - loghid_parse_arguments_real(argc, argv, 0); + return loghid_parse_arguments_real(argc, argv, 0); }