Index: trunk/doc/TODO =================================================================== --- trunk/doc/TODO (revision 17464) +++ trunk/doc/TODO (revision 17465) @@ -2,6 +2,12 @@ - fungw action transition: - replace the int/char** argv action API with fungw functions in core - replace the int/char** argv action API with fungw functions in plugins + - case sensitivity - fgw_vcall()? + - callers should check the return value from res: + - pcb_act_LoadFootprint + - pcb_act_SaveLayout + - retest import_sch + - free res and args after fgw_vcall() and pcb_actionv_() - XOR rendering upgrade: [report: pstuge] - option 1: composite solution: + make sure all xor draws are done in a single pass, at the very end; consider converting XOR draw from GC into a drawing mode [report: Ade] Index: trunk/src/action_act.c =================================================================== --- trunk/src/action_act.c (revision 17464) +++ trunk/src/action_act.c (revision 17465) @@ -55,7 +55,7 @@ %end-doc */ -fgw_error_t pcb_act_ExecuteFile(int oargc, const char **oargv) +fgw_error_t pcb_act_ExecuteFile(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; Index: trunk/src/actions.c =================================================================== --- trunk/src/actions.c (revision 17464) +++ trunk/src/actions.c (revision 17465) @@ -124,7 +124,7 @@ } } -const pcb_action_t *pcb_find_action(const char *name) +const pcb_action_t *pcb_find_action(const char *name, fgw_func_t **f_out) { fgw_func_t *f; hid_cookie_action_t *ca; @@ -138,6 +138,8 @@ return NULL; } ca = f->reg_data; + if (f_out != NULL) + *f_out = f; return ca->action; } @@ -225,43 +227,62 @@ return pcb_actionv(name, argc, argv); } -int pcb_actionv_(const pcb_action_t *a, int argc, const char **argv) +fgw_error_t pcb_actionv_(const fgw_func_t *f, fgw_arg_t *res, int argc, fgw_arg_t *argv) { - int i, ret; + fgw_error_t ret; + int i; const pcb_action_t *old_action; + hid_cookie_action_t *ca = f->reg_data; if (conf_core.rc.verbose) { - printf("Action: \033[34m%s(", a->name); + printf("Action: \033[34m%s(", f->name); for (i = 0; i < argc; i++) - printf("%s%s", i ? "," : "", argv[i]); + printf("%s%s", i ? "," : "", (argv[i].type & FGW_STR) == FGW_STR ? argv[i].val.str : ""); printf(")\033[0m\n"); } old_action = pcb_current_action; - pcb_current_action = a; - ret = pcb_current_action->trigger_cb(argc, argv); + pcb_current_action = ca->action; + ret = pcb_current_action->trigger_cb(res, argc, argv); pcb_current_action = old_action; return ret; } -int pcb_actionv(const char *name, int argc, const char **argv) +int pcb_actionv(const char *name, int argc, const char **argsv) { - const pcb_action_t *a; + fgw_func_t *f; + fgw_arg_t res, argv[PCB_ACTION_MAX_ARGS+1]; + int n; if (name == NULL) return 1; - a = pcb_find_action(name); - if (a == NULL) { + if (argc >= PCB_ACTION_MAX_ARGS) { + pcb_message(PCB_MSG_ERROR, "can not call action %s with this many arguments (%d >= %d)\n", name, argc, PCB_ACTION_MAX_ARGS); + return 1; + } + + f = fgw_func_lookup(&pcb_fgw, name); + if (f == NULL) { int i; pcb_message(PCB_MSG_ERROR, "no action %s(", name); for (i = 0; i < argc; i++) - pcb_message(PCB_MSG_ERROR, "%s%s", i ? ", " : "", argv[i]); + pcb_message(PCB_MSG_ERROR, "%s%s", i ? ", " : "", argsv[i]); pcb_message(PCB_MSG_ERROR, ")\n"); return 1; } - return pcb_actionv_(a, argc, argv); + argv[0].type = FGW_FUNC; + argv[0].val.func = f; + for(n = 0; n < argc; n++) { + argv[n+1].type = FGW_STR; + argv[n+1].val.str = (char *)argsv[n]; + } + res.type = FGW_INVALID; + if (pcb_actionv_(f, &res, argc+1, argv) != 0) + return -1; + fgw_argv_conv(&pcb_fgw, &res, FGW_INT); + return res.val.nat_int; } void pcb_hid_get_coords(const char *msg, pcb_coord_t *x, pcb_coord_t *y) Index: trunk/src/actions.h =================================================================== --- trunk/src/actions.h (revision 17464) +++ trunk/src/actions.h (revision 17465) @@ -6,7 +6,7 @@ struct pcb_action_s { const char *name; /* action command name */ - fgw_error_t (*trigger_cb)(int argc, const char **argv); /* Action implementation; if this returns non-zero, no further actions will be invoked for this key/mouse event. */ + fgw_error_t (*trigger_cb)(fgw_arg_t *ores, int argc, fgw_arg_t *argv); /* Action implementation; if this returns non-zero, no further actions will be invoked for this key/mouse event. */ const char *description;/* Short description (help text) */ const char *syntax; /* Full allowed syntax; use \n to separate lines. */ }; @@ -27,7 +27,7 @@ void pcb_print_actions(void); void pcb_dump_actions(void); -const pcb_action_t *pcb_find_action(const char *name); +const pcb_action_t *pcb_find_action(const char *name, fgw_func_t **f_out); void pcb_remove_actions(const pcb_action_t *a, int n); void pcb_remove_actions_by_cookie(const char *cookie); @@ -35,7 +35,7 @@ int pcb_action(const char *action_); int pcb_actionl(const char *action_, ...); /* NULL terminated */ int pcb_actionv(const char *action_, int argc_, const char **argv_); -int pcb_actionv_(const pcb_action_t *a, int argc, const char **argv); +fgw_error_t pcb_actionv_(const fgw_func_t *f, fgw_arg_t *res, int argc, fgw_arg_t *argv); /* Parse the given command string into action calls, and call hid_actionv for each action found. Accepts both "action(arg1, @@ -53,11 +53,27 @@ else show msg and let the user click in the drawing area */ void pcb_hid_get_coords(const char *msg, pcb_coord_t *x, pcb_coord_t *y); +#define PCB_ACTION_MAX_ARGS 16 + +PCB_INLINE int pcb_old_act_begin_conv(int oargc, fgw_arg_t *oargv, char **argv) +{ + int n; + for(n = 1; n < oargc; n++) { + if (fgw_argv_conv(&pcb_fgw, &oargv[n], FGW_STR) == 0) + argv[n-1] = oargv[n].val.str; + else + argv[n-1] = ""; + } + argv[n] = NULL; + return oargc - 1; +} + /* temporary hack for smooth upgrade to fungw based actions */ #define PCB_OLD_ACT_BEGIN \ { \ - int argc = oargc; \ - const char **argv = oargv + char *argv__[PCB_ACTION_MAX_ARGS]; \ + const char **argv = (const char **)argv__; \ + int argc = pcb_old_act_begin_conv(oargc, oargv, argv__) #define PCB_OLD_ACT_END \ (void)argc; \ Index: trunk/src/brave.c =================================================================== --- trunk/src/brave.c (revision 17464) +++ trunk/src/brave.c (revision 17465) @@ -237,7 +237,7 @@ "Brave()\n" "Brave(setting, on|off)\n"; static const char pcb_acth_Brave[] = "Changes brave settings."; -static fgw_error_t pcb_act_Brave(int oargc, const char **oargv) +static fgw_error_t pcb_act_Brave(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; desc_t *d; Index: trunk/src/buffer.c =================================================================== --- trunk/src/buffer.c (revision 17464) +++ trunk/src/buffer.c (revision 17465) @@ -169,7 +169,7 @@ %end-doc */ -fgw_error_t pcb_act_LoadFootprint(int oargc, const char **oargv) +fgw_error_t pcb_act_LoadFootprint(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *name = PCB_ACTION_ARG(0); @@ -364,7 +364,7 @@ %end-doc */ -fgw_error_t pcb_act_FreeRotateBuffer(int oargc, const char **oargv) +fgw_error_t pcb_act_FreeRotateBuffer(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *angle_s; @@ -761,7 +761,7 @@ @end table %end-doc */ -static fgw_error_t pcb_act_PasteBuffer(int oargc, const char **oargv) +static fgw_error_t pcb_act_PasteBuffer(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *function = argc ? argv[0] : ""; Index: trunk/src/buffer.h =================================================================== --- trunk/src/buffer.h (revision 17464) +++ trunk/src/buffer.h (revision 17465) @@ -82,7 +82,7 @@ /* This action is called from ActionElementAddIf() */ -fgw_error_t pcb_act_LoadFootprint(int argc, const char **argv); +fgw_error_t pcb_act_LoadFootprint(fgw_arg_t *res, int oargc, fgw_arg_t *oargv); /* pastes the contents of the buffer to the layout. Only visible objects are handled by the routine. */ Index: trunk/src/change_act.c =================================================================== --- trunk/src/change_act.c (revision 17464) +++ trunk/src/change_act.c (revision 17465) @@ -58,8 +58,8 @@ #include "grid.h" static void ChangeFlag(const char *, const char *, int, const char *); -static fgw_error_t pcb_act_ChangeSize(int oargc, const char **oargv); -static fgw_error_t pcb_act_Change2ndSize(int oargc, const char **oargv); +static fgw_error_t pcb_act_ChangeSize(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv); +static fgw_error_t pcb_act_Change2ndSize(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv); /* --------------------------------------------------------------------------- */ @@ -78,7 +78,7 @@ %end-doc */ -static fgw_error_t pcb_act_ChangeClearSize(int oargc, const char **oargv) +static fgw_error_t pcb_act_ChangeClearSize(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *function = PCB_ACTION_ARG(0); @@ -167,7 +167,7 @@ %end-doc */ -static fgw_error_t pcb_act_ChangeFlag(int oargc, const char **oargv) +static fgw_error_t pcb_act_ChangeFlag(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *function = PCB_ACTION_ARG(0); @@ -249,7 +249,7 @@ /* --------------------------------------------------------------------------- */ static const char changehold_syntax[] = "ChangeHole(ToggleObject|Object|SelectedVias|Selected)"; static const char changehold_help[] = "Changes the hole flag of objects. Not supported anymore; use the propery editor."; -static fgw_error_t pcb_act_ChangeHole(int oargc, const char **oargv) +static fgw_error_t pcb_act_ChangeHole(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; pcb_message(PCB_MSG_ERROR, "Feature not supported with padstacks.\n"); @@ -258,7 +258,7 @@ } static const char pcb_acts_ChangePaste[] = "ChangePaste(ToggleObject|Object|SelectedPads|Selected)"; static const char pcb_acth_ChangePaste[] = "Changes the no paste flag of objects. Not supported anymore."; -static fgw_error_t pcb_act_ChangePaste(int oargc, const char **oargv) +static fgw_error_t pcb_act_ChangePaste(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; pcb_message(PCB_MSG_ERROR, "Feature not supported with padstacks.\n"); @@ -282,16 +282,16 @@ with the same arguments. If any of them did not fail, return success. %end-doc */ -static fgw_error_t pcb_act_ChangeSizes(int oargc, const char **oargv) +static fgw_error_t pcb_act_ChangeSizes(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; - int a, b, c; + fgw_error_t a, b, c; pcb_undo_save_serial(); - a = pcb_act_ChangeSize(argc, argv); + a = pcb_act_ChangeSize(ores, oargc, oargv); pcb_undo_restore_serial(); - b = pcb_act_Change2ndSize(argc, argv); + b = pcb_act_Change2ndSize(ores, oargc, oargv); pcb_undo_restore_serial(); - c = pcb_act_ChangeClearSize(argc, argv); + c = pcb_act_ChangeClearSize(ores, oargc, oargv); pcb_undo_restore_serial(); pcb_undo_inc_serial(); return !(!a || !b || !c); @@ -317,7 +317,7 @@ %end-doc */ -static fgw_error_t pcb_act_ChangeSize(int oargc, const char **oargv) +static fgw_error_t pcb_act_ChangeSize(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *function = PCB_ACTION_ARG(0); @@ -411,7 +411,7 @@ %end-doc */ -static fgw_error_t pcb_act_Change2ndSize(int oargc, const char **oargv) +static fgw_error_t pcb_act_Change2ndSize(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *function = PCB_ACTION_ARG(0); @@ -486,7 +486,7 @@ %end-doc */ -static fgw_error_t pcb_act_ChangePinName(int oargc, const char **oargv) +static fgw_error_t pcb_act_ChangePinName(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; pcb_cardinal_t changed = 0; @@ -558,7 +558,7 @@ %end-doc */ -fgw_error_t pcb_act_ChangeName(int oargc, const char **oargv) +fgw_error_t pcb_act_ChangeName(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *function = PCB_ACTION_ARG(0); @@ -636,7 +636,7 @@ %end-doc */ -static fgw_error_t pcb_act_ChangeJoin(int oargc, const char **oargv) +static fgw_error_t pcb_act_ChangeJoin(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *function = PCB_ACTION_ARG(0); @@ -690,7 +690,7 @@ %end-doc */ -static fgw_error_t pcb_act_ChangeNonetlist(int oargc, const char **oargv) +static fgw_error_t pcb_act_ChangeNonetlist(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *function = PCB_ACTION_ARG(0); @@ -728,7 +728,7 @@ static const char pcb_acts_ChangeSquare[] = "ChangeSquare(ToggleObject)\n" "ChangeSquare(SelectedElements|SelectedPins)\n" "ChangeSquare(Selected|SelectedObjects)"; static const char pcb_acth_ChangeSquare[] = "Changes the square flag of pins and pads. Not supported anymore."; -static fgw_error_t pcb_act_ChangeSquare(int oargc, const char **oargv) +static fgw_error_t pcb_act_ChangeSquare(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; pcb_message(PCB_MSG_ERROR, "Feature not supported with padstacks.\n"); @@ -737,7 +737,7 @@ } static const char pcb_acts_SetSquare[] = "SetSquare(ToggleObject|SelectedElements|SelectedPins)"; static const char pcb_acth_SetSquare[] = "sets the square-flag of objects. Not supported anymore."; -static fgw_error_t pcb_act_SetSquare(int oargc, const char **oargv) +static fgw_error_t pcb_act_SetSquare(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; pcb_message(PCB_MSG_ERROR, "Feature not supported with padstacks.\n"); @@ -747,7 +747,7 @@ static const char pcb_acts_ClearSquare[] = "ClearSquare(ToggleObject|SelectedElements|SelectedPins)"; static const char pcb_acth_ClearSquare[] = "Clears the square-flag of pins and pads. Not supported anymore."; -static fgw_error_t pcb_act_ClearSquare(int oargc, const char **oargv) +static fgw_error_t pcb_act_ClearSquare(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; pcb_message(PCB_MSG_ERROR, "Feature not supported with padstacks.\n"); @@ -756,7 +756,7 @@ } static const char pcb_acts_ChangeOctagon[] = "ChangeOctagon(Object|ToggleObject|SelectedObjects|Selected)\n" "ChangeOctagon(SelectedElements|SelectedPins|SelectedVias)"; static const char pcb_acth_ChangeOctagon[] = "Changes the octagon-flag of pins and vias. Not supported anymore."; -static fgw_error_t pcb_act_ChangeOctagon(int oargc, const char **oargv) +static fgw_error_t pcb_act_ChangeOctagon(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; pcb_message(PCB_MSG_ERROR, "Feature not supported with padstacks.\n"); @@ -765,7 +765,7 @@ } static const char pcb_acts_SetOctagon[] = "SetOctagon(Object|ToggleObject|SelectedElements|Selected)"; static const char pcb_acth_SetOctagon[] = "Sets the octagon-flag of objects. Not supported anymore."; -static fgw_error_t pcb_act_SetOctagon(int oargc, const char **oargv) +static fgw_error_t pcb_act_SetOctagon(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; pcb_message(PCB_MSG_ERROR, "Feature not supported with padstacks.\n"); @@ -774,7 +774,7 @@ } static const char pcb_acts_ClearOctagon[] = "ClearOctagon(ToggleObject|Object|SelectedObjects|Selected)\n" "ClearOctagon(SelectedElements|SelectedPins|SelectedVias)"; static const char pcb_acth_ClearOctagon[] = "Clears the octagon-flag of pins and vias. Not supported anymore."; -static fgw_error_t pcb_act_ClearOctagon(int oargc, const char **oargv) +static fgw_error_t pcb_act_ClearOctagon(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; pcb_message(PCB_MSG_ERROR, "Feature not supported with padstacks.\n"); @@ -813,7 +813,7 @@ to connect with. However, they will have no effect without the polygon. %end-doc */ -static fgw_error_t pcb_act_SetThermal(int oargc, const char **oargv) +static fgw_error_t pcb_act_SetThermal(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *function = PCB_ACTION_ARG(0); @@ -881,7 +881,7 @@ %end-doc */ -static fgw_error_t pcb_act_SetFlag(int oargc, const char **oargv) +static fgw_error_t pcb_act_SetFlag(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *function = PCB_ACTION_ARG(0); @@ -912,7 +912,7 @@ %end-doc */ -static fgw_error_t pcb_act_ClrFlag(int oargc, const char **oargv) +static fgw_error_t pcb_act_ClrFlag(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *function = PCB_ACTION_ARG(0); @@ -947,7 +947,7 @@ %end-doc */ -static fgw_error_t pcb_act_SetValue(int oargc, const char **oargv) +static fgw_error_t pcb_act_SetValue(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *function = PCB_ACTION_ARG(0); @@ -1027,7 +1027,7 @@ "ChangeAngle(SelectedObjects|Selected, start|delta|both, delta)\n" "ChangeAngle(SelectedArcs, start|delta|both, delta)\n"; static const char pcb_acth_ChangeAngle[] = "Changes the start angle, delta angle or both angles of an arc."; -static fgw_error_t pcb_act_ChangeAngle(int oargc, const char **oargv) +static fgw_error_t pcb_act_ChangeAngle(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *function = PCB_ACTION_ARG(0); @@ -1103,7 +1103,7 @@ "ChangeRadius(SelectedObjects|Selected, width|x|height|y|both, delta)\n" "ChangeRadius(SelectedArcs, width|x|height|y|both, delta)\n"; static const char pcb_acth_ChangeRadius[] = "Changes the width or height (radius) of an arc."; -static fgw_error_t pcb_act_ChangeRadius(int oargc, const char **oargv) +static fgw_error_t pcb_act_ChangeRadius(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *function = PCB_ACTION_ARG(0); Index: trunk/src/conf_act.c =================================================================== --- trunk/src/conf_act.c (revision 17464) +++ trunk/src/conf_act.c (revision 17465) @@ -53,7 +53,7 @@ return res; } -static fgw_error_t pcb_act_Conf(int oargc, const char **oargv) +static fgw_error_t pcb_act_Conf(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *cmd = argc > 0 ? argv[0] : 0; @@ -224,7 +224,7 @@ /*------------ get/chk (check flag actions for menus) ------------------*/ static const char GetStyle_syntax[] = "GetStyle()" ; static const char GetStyle_help[] = "Return integer index (>=0) of the currently active style or -1 if no style is selected (== custom style)"; -static fgw_error_t pcb_act_GetStyle(int oargc, const char **oargv) +static fgw_error_t pcb_act_GetStyle(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; return pcb_route_style_lookup(&PCB->RouteStyle, conf_core.design.line_thickness, conf_core.design.via_thickness, conf_core.design.via_drilling_hole, conf_core.design.clearance, NULL); @@ -233,7 +233,7 @@ static const char ChkMode_syntax[] = "ChkMode(expected_mode)" ; static const char ChkMode_help[] = "Return 1 if the currently selected mode is the expected_mode"; -static fgw_error_t pcb_act_ChkMode(int oargc, const char **oargv) +static fgw_error_t pcb_act_ChkMode(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; #warning cleanup TODO: convert this to a compile-time hash; or make the toolbar configurable from the menu file @@ -278,7 +278,7 @@ "ChkGridSize(none)\n" ; static const char ChkGridSize_help[] = "Return 1 if the currently selected grid matches the expected_size. If argument is \"none\" return 1 if there is no grid."; -static fgw_error_t pcb_act_ChkGridSize(int oargc, const char **oargv) +static fgw_error_t pcb_act_ChkGridSize(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; assert(argc == 1); @@ -291,7 +291,7 @@ static const char ChkSubcID_syntax[] = "ChkSubcID(pattern)\n"; static const char ChkSubcID_help[] = "Return 1 if currently shown subc ID matches the requested pattern"; -static fgw_error_t pcb_act_ChkSubcID(int oargc, const char **oargv) +static fgw_error_t pcb_act_ChkSubcID(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *have = conf_core.editor.subc_id, *expected; @@ -306,7 +306,7 @@ static const char ChkGridUnits_syntax[] = "ChkGridUnits(expected)"; static const char ChkGridUnits_help[] = "Return 1 if currently selected grid unit matches the expected (normally mm or mil)"; -static fgw_error_t pcb_act_ChkGridUnits(int oargc, const char **oargv) +static fgw_error_t pcb_act_ChkGridUnits(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; assert(argc == 1); @@ -316,7 +316,7 @@ static const char ChkBuffer_syntax[] = "ChkBuffer(idx)"; static const char ChkBuffer_help[] = "Return 1 if currently selected buffer's index matches idx"; -static fgw_error_t pcb_act_ChkBuffer(int oargc, const char **oargv) +static fgw_error_t pcb_act_ChkBuffer(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; int expected = argv[0][0] - '0'; Index: trunk/src/file_act.c =================================================================== --- trunk/src/file_act.c (revision 17464) +++ trunk/src/file_act.c (revision 17465) @@ -64,7 +64,7 @@ %end-doc */ -static fgw_error_t pcb_act_ExecCommand(int oargc, const char **oargv) +static fgw_error_t pcb_act_ExecCommand(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *command; @@ -118,7 +118,7 @@ %end-doc */ -static fgw_error_t pcb_act_LoadFrom(int oargc, const char **oargv) +static fgw_error_t pcb_act_LoadFrom(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *function, *name, *format = NULL; @@ -183,7 +183,7 @@ %end-doc */ -static fgw_error_t pcb_act_New(int oargc, const char **oargv) +static fgw_error_t pcb_act_New(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *argument_name = PCB_ACTION_ARG(0); @@ -228,7 +228,7 @@ /* --------------------------------------------------------------------------- */ static const char pcb_acts_normalize[] = "Normalize()"; static const char pcb_acth_normalize[] = "Move all objects within the drawing area, align the drawing to 0;0"; -static fgw_error_t pcb_act_normalize(int oargc, const char **oargv) +static fgw_error_t pcb_act_normalize(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; return pcb_board_normalize(PCB); @@ -269,7 +269,7 @@ %end-doc */ -static fgw_error_t pcb_act_SaveTo(int oargc, const char **oargv) +static fgw_error_t pcb_act_SaveTo(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *function; @@ -372,7 +372,7 @@ %end-doc */ -static fgw_error_t pcb_act_Quit(int oargc, const char **oargv) +static fgw_error_t pcb_act_Quit(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *force = PCB_ACTION_ARG(0); @@ -390,7 +390,7 @@ /* --------------------------------------------------------------------------- */ static const char pcb_acts_Export[] = "Export(exporter, [exporter-args])"; static const char pcb_acth_Export[] = "Export the current layout, e.g. Export(png, --dpi, 600)"; -static fgw_error_t pcb_act_Export(int oargc, const char **oargv) +static fgw_error_t pcb_act_Export(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; if (argc < 1) { @@ -419,7 +419,7 @@ static const char pcb_acts_Backup[] = "Backup()"; static const char pcb_acth_Backup[] = "Backup the current layout - save using the same method that the timed backup function uses"; -static fgw_error_t pcb_act_Backup(int oargc, const char **oargv) +static fgw_error_t pcb_act_Backup(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; pcb_backup(); Index: trunk/src/find_act.c =================================================================== --- trunk/src/find_act.c (revision 17464) +++ trunk/src/find_act.c (revision 17465) @@ -53,7 +53,7 @@ %end-doc */ -static fgw_error_t pcb_act_DRCheck(int oargc, const char **oargv) +static fgw_error_t pcb_act_DRCheck(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; int count; Index: trunk/src/font_act.c =================================================================== --- trunk/src/font_act.c (revision 17464) +++ trunk/src/font_act.c (revision 17465) @@ -38,7 +38,7 @@ static const char pcb_acts_load_font_from[] = "LoadFontFrom([file, id])"; static const char pcb_acth_load_font_from[] = "Load PCB font from a file"; -fgw_error_t pcb_act_load_font_from(int oargc, const char **oargv) +fgw_error_t pcb_act_load_font_from(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *fname, *sid; @@ -105,7 +105,7 @@ static const char pcb_acts_save_font_to[] = "SaveFontTo([file, id])"; static const char pcb_acth_save_font_to[] = "Save PCB font to a file"; -fgw_error_t pcb_act_save_font_to(int oargc, const char **oargv) +fgw_error_t pcb_act_save_font_to(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *fname, *sid; Index: trunk/src/gui_act.c =================================================================== --- trunk/src/gui_act.c (revision 17464) +++ trunk/src/gui_act.c (revision 17465) @@ -224,7 +224,7 @@ } extern pcb_opfunc_t ChgFlagFunctions; -static fgw_error_t pcb_act_Display(int oargc, const char **oargv) +static fgw_error_t pcb_act_Display(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *function, *str_dir; @@ -556,7 +556,7 @@ %end-doc */ -static fgw_error_t pcb_act_Mode(int oargc, const char **oargv) +static fgw_error_t pcb_act_Mode(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *function = PCB_ACTION_ARG(0); @@ -758,7 +758,7 @@ static const char pcb_acth_CycleDrag[] = "Cycle through which object is being dragged"; #define close_enough(a, b) ((((a)-(b)) > 0) ? ((a)-(b) < (PCB_SLOP * pcb_pixel_slop)) : ((a)-(b) > -(PCB_SLOP * pcb_pixel_slop))) -static fgw_error_t pcb_act_CycleDrag(int oargc, const char **oargv) +static fgw_error_t pcb_act_CycleDrag(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; void *ptr1, *ptr2, *ptr3; @@ -846,7 +846,7 @@ %end-doc */ -static fgw_error_t pcb_act_Message(int oargc, const char **oargv) +static fgw_error_t pcb_act_Message(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; int i; @@ -876,7 +876,7 @@ %end-doc */ -static fgw_error_t pcb_act_ToggleHideName(int oargc, const char **oargv) +static fgw_error_t pcb_act_ToggleHideName(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; pcb_message(PCB_MSG_ERROR, "ToggleHideName: deprecated feature removed with subcircuits; just delete\nthe text object if it should not be on the silk of the final board.\n"); @@ -904,7 +904,7 @@ %end-doc */ -static fgw_error_t pcb_act_MarkCrosshair(int oargc, const char **oargv) +static fgw_error_t pcb_act_MarkCrosshair(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *function = PCB_ACTION_ARG(0); @@ -951,7 +951,7 @@ %end-doc */ -static fgw_error_t pcb_act_RouteStyle(int oargc, const char **oargv) +static fgw_error_t pcb_act_RouteStyle(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *str = PCB_ACTION_ARG(0); @@ -997,7 +997,7 @@ %end-doc */ -static fgw_error_t pcb_act_CreateMenu(int oargc, const char **oargv) +static fgw_error_t pcb_act_CreateMenu(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; if (pcb_gui == NULL) { @@ -1030,7 +1030,7 @@ %end-doc */ -static fgw_error_t pcb_act_RemoveMenu(int oargc, const char **oargv) +static fgw_error_t pcb_act_RemoveMenu(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; if (pcb_gui == NULL) { @@ -1082,7 +1082,7 @@ pcb_use_route_style_idx(&PCB->RouteStyle, known); } -static fgw_error_t pcb_act_SetSame(int oargc, const char **oargv) +static fgw_error_t pcb_act_SetSame(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; pcb_coord_t x, y; @@ -1142,7 +1142,7 @@ %end-doc */ -static fgw_error_t pcb_act_SwitchHID(int oargc, const char **oargv) +static fgw_error_t pcb_act_SwitchHID(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; pcb_hid_t *ng = pcb_hid_find_gui(argv[0]); @@ -1170,7 +1170,7 @@ static const char pcb_acth_FullScreen[] = "Hide widgets to get edit area full screen"; -static fgw_error_t pcb_act_FullScreen(int oargc, const char **oargv) +static fgw_error_t pcb_act_FullScreen(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *op = argv == NULL ? NULL : argv[0]; @@ -1192,7 +1192,7 @@ "Tells the GUI that the whole PCB has changed. The optional \"revert\"" "parameter can be used as a hint to the GUI that the same design is being" "reloaded, and that it might keep some viewport settings"; -static fgw_error_t pcb_act_PCBChanged(int oargc, const char **oargv) +static fgw_error_t pcb_act_PCBChanged(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *rv = argv == NULL ? NULL : argv[0]; @@ -1203,7 +1203,7 @@ static const char pcb_acts_NetlistChanged[] = "NetlistChanged()"; static const char pcb_acth_NetlistChanged[] = "Tells the GUI that the netlist has changed."; -static fgw_error_t pcb_act_NetlistChanged(int oargc, const char **oargv) +static fgw_error_t pcb_act_NetlistChanged(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; pcb_netlist_changed(0); @@ -1214,7 +1214,7 @@ static const char pcb_acts_RouteStylesChanged[] = "RouteStylesChanged()"; static const char pcb_acth_RouteStylesChanged[] = "Tells the GUI that the routing styles have changed."; -static fgw_error_t pcb_act_RouteStylesChanged(int oargc, const char **oargv) +static fgw_error_t pcb_act_RouteStylesChanged(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; pcb_event(PCB_EVENT_ROUTE_STYLES_CHANGED, NULL); @@ -1224,7 +1224,7 @@ static const char pcb_acts_LibraryChanged[] = "LibraryChanged()"; static const char pcb_acth_LibraryChanged[] = "Tells the GUI that the libraries have changed."; -static fgw_error_t pcb_act_LibraryChanged(int oargc, const char **oargv) +static fgw_error_t pcb_act_LibraryChanged(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; pcb_event(PCB_EVENT_LIBRARY_CHANGED, NULL); @@ -1269,7 +1269,7 @@ %end-doc */ -static fgw_error_t pcb_act_Cursor(int oargc, const char **oargv) +static fgw_error_t pcb_act_Cursor(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; pcb_unit_list_t extra_units_x = { @@ -1342,7 +1342,7 @@ static const char pcb_acts_EditLayer[] = "Editlayer([@layer], [name=text|auto=[0|1]|sub=[0|1])]\nEditlayer([@layer], attrib, key=value)"; static const char pcb_acth_EditLayer[] = "Change a property or attribute of a layer. If the first argument starts with @, it is taken as the layer name to manipulate, else the action uses the current layer. Without arguments or if only a layer name is specified, interactive runs editing."; -static fgw_error_t pcb_act_EditLayer(int oargc, const char **oargv) +static fgw_error_t pcb_act_EditLayer(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; int ret = 0, n, interactive = 1, explicit = 0; @@ -1449,7 +1449,7 @@ pcb_layergrp_id_t pcb_actd_EditGroup_gid = -1; static const char pcb_acts_EditGroup[] = "Editgroup([@group], [name=text|type=+bit|type=-bit])]\nEditlayer([@layer], attrib, key=value)"; static const char pcb_acth_EditGroup[] = "Change a property or attribute of a layer group. If the first argument starts with @, it is taken as the group name to manipulate, else the action uses the current layer's group. Without arguments or if only a layer name is specified, interactive runs editing."; -static fgw_error_t pcb_act_EditGroup(int oargc, const char **oargv) +static fgw_error_t pcb_act_EditGroup(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; int ret = 0, n, interactive = 1, explicit = 0; @@ -1569,7 +1569,7 @@ %end-doc */ -static fgw_error_t pcb_act_SelectLayer(int oargc, const char **oargv) +static fgw_error_t pcb_act_SelectLayer(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; pcb_layer_id_t lid; @@ -1614,7 +1614,7 @@ %end-doc */ -static fgw_error_t pcb_act_ChkLayer(int oargc, const char **oargv) +static fgw_error_t pcb_act_ChkLayer(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; pcb_layer_id_t lid; @@ -1672,7 +1672,7 @@ %end-doc */ -static fgw_error_t pcb_act_ToggleView(int oargc, const char **oargv) +static fgw_error_t pcb_act_ToggleView(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; pcb_layer_id_t lid; @@ -1757,7 +1757,7 @@ Return 1 if layerid is visible. Intended for meu item 'checked' fields. %end-doc */ -static fgw_error_t pcb_act_ChkView(int oargc, const char **oargv) +static fgw_error_t pcb_act_ChkView(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; pcb_layer_id_t lid; @@ -1815,7 +1815,7 @@ %end-doc */ -static fgw_error_t pcb_act_SetUnits(int oargc, const char **oargv) +static fgw_error_t pcb_act_SetUnits(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const pcb_unit_t *new_unit; @@ -1833,7 +1833,7 @@ "grid(set, [name:]size[@offs][!unit])\n" "grid(+|up)\n" "grid(-|down)\n" "grid(#N)\n" "grid(idx, N)\n"; static const char pcb_acth_grid[] = "Set the grid."; -static fgw_error_t pcb_act_grid(int oargc, const char **oargv) +static fgw_error_t pcb_act_grid(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; if (argc == 0) @@ -1872,7 +1872,7 @@ Return 1 if route_style_id matches pen. %end-doc */ -static fgw_error_t pcb_act_ChkRst(int oargc, const char **oargv) +static fgw_error_t pcb_act_ChkRst(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; int rid; @@ -1903,7 +1903,7 @@ Prompts the user for a coordinate, if one is not already selected. %end-doc */ -static fgw_error_t pcb_act_GetXY(int oargc, const char **oargv) +static fgw_error_t pcb_act_GetXY(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; pcb_coord_t x, y; @@ -1933,7 +1933,7 @@ %end-doc */ -fgw_error_t pcb_act_PrintCalibrate(int oargc, const char **oargv) +fgw_error_t pcb_act_PrintCalibrate(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; pcb_hid_t *printer = pcb_hid_find_printer(); Index: trunk/src/hid_flags.c =================================================================== --- trunk/src/hid_flags.c (revision 17464) +++ trunk/src/hid_flags.c (revision 17465) @@ -57,9 +57,10 @@ } else { const char *end, *s; - const char *argv[2]; + fgw_arg_t res, argv[2]; if (cp != NULL) { const pcb_action_t *a; + fgw_func_t *f; char buff[256]; int len, multiarg; len = cp - name; @@ -69,7 +70,7 @@ } memcpy(buff, name, len); buff[len] = '\0'; - a = pcb_find_action(buff); + a = pcb_find_action(buff, &f); if (!a) { pcb_message(PCB_MSG_ERROR, "hid_get_flag: no action %s\n", name); return -1; @@ -95,9 +96,15 @@ len = end - cp; memcpy(buff, cp, len); buff[len] = '\0'; - argv[0] = buff; - argv[1] = NULL; - return pcb_actionv_(a, len > 0, argv); + argv[0].type = FGW_FUNC; + argv[0].val.func = f; + argv[1].type = FGW_STR; + argv[1].val.str = buff; + res.type = FGW_INVALID; + if (pcb_actionv_(f, &res, (len > 0) ? 2 : 1, argv) != 0) + return -1; + fgw_argv_conv(&pcb_fgw, &res, FGW_INT); + return res.val.nat_int; } else { /* slower but more generic way */ Index: trunk/src/main_act.c =================================================================== --- trunk/src/main_act.c (revision 17464) +++ trunk/src/main_act.c (revision 17465) @@ -57,7 +57,7 @@ static const char pcb_acth_PrintActions[] = "Print all actions available."; -fgw_error_t pcb_act_PrintActions(int oargc, const char **oargv) +fgw_error_t pcb_act_PrintActions(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; pcb_print_actions(); @@ -70,7 +70,7 @@ static const char pcb_acth_DumpActions[] = "Dump all actions available."; -fgw_error_t pcb_act_DumpActions(int oargc, const char **oargv) +fgw_error_t pcb_act_DumpActions(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; pcb_dump_actions(); @@ -164,7 +164,7 @@ return 0; } -fgw_error_t pcb_act_PrintUsage(int oargc, const char **oargv) +fgw_error_t pcb_act_PrintUsage(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; u(""); @@ -198,7 +198,7 @@ static const char pcb_acth_PrintVersion[] = "Print version."; -fgw_error_t pcb_act_PrintVersion(int oargc, const char **oargv) +fgw_error_t pcb_act_PrintVersion(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; printf("pcb-rnd version %s rev %s\n", PCB_VERSION, PCB_REVISION); @@ -211,7 +211,7 @@ static const char pcb_acth_PrintCopyright[] = "Print copyright notice."; -fgw_error_t pcb_act_PrintCopyright(int oargc, const char **oargv) +fgw_error_t pcb_act_PrintCopyright(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; printf("\n" @@ -255,7 +255,7 @@ printf("\"\n"); } -fgw_error_t pcb_act_PrintPaths(int oargc, const char **oargv) +fgw_error_t pcb_act_PrintPaths(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; htsp_entry_t *e; @@ -285,7 +285,7 @@ } } -fgw_error_t pcb_act_PrintFiles(int oargc, const char **oargv) +fgw_error_t pcb_act_PrintFiles(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; htsp_entry_t *e; @@ -301,7 +301,7 @@ static const char pcb_acth_DumpPlugins[] = "Print plugins loaded in a format digestable by scripts."; -fgw_error_t pcb_act_DumpPlugins(int oargc, const char **oargv) +fgw_error_t pcb_act_DumpPlugins(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; pup_plugin_t *p; @@ -329,7 +329,7 @@ static const char pcb_acth_DumpPluginDirs[] = "Print plugins directories in a format digestable by scripts."; -fgw_error_t pcb_act_DumpPluginDirs(int oargc, const char **oargv) +fgw_error_t pcb_act_DumpPluginDirs(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; char **p; @@ -347,7 +347,7 @@ printf(" %lx %s %s\n", flg, fb->name, fb->help); } -fgw_error_t pcb_act_DumpObjFlags(int oargc, const char **oargv) +fgw_error_t pcb_act_DumpObjFlags(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; unsigned long ot, max = PCB_OBJ_CLASS_REAL + 1; @@ -366,7 +366,7 @@ static const char pcb_acts_System[] = "System(shell_cmd)"; static const char pcb_acth_System[] = "Run shell command"; -fgw_error_t pcb_act_System(int oargc, const char **oargv) +fgw_error_t pcb_act_System(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; char tmp[128]; Index: trunk/src/netlist_act.c =================================================================== --- trunk/src/netlist_act.c (revision 17464) +++ trunk/src/netlist_act.c (revision 17465) @@ -234,7 +234,7 @@ typedef void (*NFunc) (pcb_lib_menu_t *, pcb_lib_entry_t *); -static fgw_error_t pcb_act_Netlist(int oargc, const char **oargv) +static fgw_error_t pcb_act_Netlist(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; NFunc func; Index: trunk/src/obj_pstk_act.c =================================================================== --- trunk/src/obj_pstk_act.c (revision 17464) +++ trunk/src/obj_pstk_act.c (revision 17465) @@ -38,7 +38,7 @@ static const char pcb_acts_padstackconvert[] = "PadstackConvert(buffer|selected, [originx, originy])"; static const char pcb_acth_padstackconvert[] = "Convert selection or current buffer to padstack"; -fgw_error_t pcb_act_padstackconvert(int oargc, const char **oargv) +fgw_error_t pcb_act_padstackconvert(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; pcb_coord_t x, y; @@ -107,7 +107,7 @@ static const char pcb_acts_padstackplace[] = "PadstackPlace([proto_id|default], [x, y])"; static const char pcb_acth_padstackplace[] = "Place a pad stack (either proto_id, or if not specified, the default for style)"; -fgw_error_t pcb_act_padstackplace(int oargc, const char **oargv) +fgw_error_t pcb_act_padstackplace(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; pcb_cardinal_t pid; Index: trunk/src/object_act.c =================================================================== --- trunk/src/object_act.c (revision 17464) +++ trunk/src/object_act.c (revision 17465) @@ -70,7 +70,7 @@ %end-doc */ -static fgw_error_t pcb_act_Attributes(int oargc, const char **oargv) +static fgw_error_t pcb_act_Attributes(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *function = PCB_ACTION_ARG(0); @@ -227,7 +227,7 @@ } } -static fgw_error_t pcb_act_DisperseElements(int oargc, const char **oargv) +static fgw_error_t pcb_act_DisperseElements(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *function = PCB_ACTION_ARG(0); @@ -300,7 +300,7 @@ %end-doc */ -static fgw_error_t pcb_act_Flip(int oargc, const char **oargv) +static fgw_error_t pcb_act_Flip(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; pcb_coord_t x, y; @@ -355,7 +355,7 @@ %end-doc */ -static fgw_error_t pcb_act_MoveObject(int oargc, const char **oargv) +static fgw_error_t pcb_act_MoveObject(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *x_str = PCB_ACTION_ARG(0); @@ -405,7 +405,7 @@ %end-doc */ -static fgw_error_t pcb_act_MoveToCurrentLayer(int oargc, const char **oargv) +static fgw_error_t pcb_act_MoveToCurrentLayer(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *function = PCB_ACTION_ARG(0); @@ -508,12 +508,12 @@ return strcmp(got_name, expect_name); } -static fgw_error_t pcb_act_ElementList(int oargc, const char **oargv) +static fgw_error_t pcb_act_ElementList(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; pcb_subc_t *sc; const char *refdes, *value, *footprint; - const char *args[3]; + fgw_arg_t res, args[4]; const char *function = argv[0]; int fx, fy, fs; @@ -561,9 +561,15 @@ footprint = PCB_ACTION_ARG(1); value = PCB_ACTION_ARG(2); - args[0] = footprint; - args[1] = refdes; - args[2] = value; + args[0].type = FGW_FUNC; + args[0].val.func = NULL; + args[1].type = FGW_STR; + args[1].val.str = (char *)footprint; + args[2].type = FGW_STR; + args[2].val.str = (char *)refdes; + args[3].type = FGW_STR; + args[3].val.str = (char *)value; + argc = 4; /* turn of flip to avoid mirror/rotat confusion */ fx = conf_core.editor.view.flip_x; @@ -588,7 +594,7 @@ printf(" ... Footprint not on board, need to add it.\n"); #endif /* Not on board, need to add it. */ - if (pcb_act_LoadFootprint(argc, args)) { + if (pcb_act_LoadFootprint(&res, argc, args)) { number_of_footprints_not_found++; return 1; } @@ -629,7 +635,7 @@ double orig_rot; /* Different footprint, we need to swap them out. */ - if (pcb_act_LoadFootprint(argc, args) != 0) { + if (pcb_act_LoadFootprint(&res, argc, args) != 0) { number_of_footprints_not_found++; return 1; } @@ -716,7 +722,7 @@ %end-doc */ -static fgw_error_t pcb_act_ElementSetAttr(int oargc, const char **oargv) +static fgw_error_t pcb_act_ElementSetAttr(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; pcb_subc_t *sc; @@ -766,7 +772,7 @@ %end-doc */ -static fgw_error_t pcb_act_RipUp(int oargc, const char **oargv) +static fgw_error_t pcb_act_RipUp(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *function = PCB_ACTION_ARG(0); @@ -841,7 +847,7 @@ static const char pcb_acts_MinMaskGap[] = "MinMaskGap(delta)\n" "MinMaskGap(Selected, delta)"; static const char pcb_acth_MinMaskGap[] = "Ensures the mask is a minimum distance from pins and pads. Not supported anymore."; -static fgw_error_t pcb_act_MinMaskGap(int oargc, const char **oargv) +static fgw_error_t pcb_act_MinMaskGap(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; pcb_message(PCB_MSG_ERROR, "Feature not supported; use padstackedit()\n"); @@ -916,7 +922,7 @@ PCB_ENDALL_LOOP; } -static fgw_error_t pcb_act_MinClearGap(int oargc, const char **oargv) +static fgw_error_t pcb_act_MinClearGap(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *function = PCB_ACTION_ARG(0); @@ -999,7 +1005,7 @@ %end-doc */ extern pcb_layergrp_id_t pcb_actd_EditGroup_gid; -fgw_error_t pcb_act_MoveLayer(int oargc, const char **oargv) +fgw_error_t pcb_act_MoveLayer(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; int old_index, new_index; @@ -1085,7 +1091,7 @@ static const char pcb_acts_CreateText[] = "CreateText(layer, fontID, X, Y, direction, scale, text)\n"; static const char pcb_acth_CreateText[] = "Create a new text object"; -static fgw_error_t pcb_act_CreateText(int oargc, const char **oargv) +static fgw_error_t pcb_act_CreateText(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; pcb_coord_t x, y; @@ -1131,7 +1137,7 @@ "subc(loose, on|off|toggle|check)\n" ; static const char pcb_acth_subc[] = "Various operations on subc"; -static fgw_error_t pcb_act_subc(int oargc, const char **oargv) +static fgw_error_t pcb_act_subc(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; if (argc == 0) @@ -1237,7 +1243,7 @@ %end-doc */ -static fgw_error_t pcb_act_Rotate90(int oargc, const char **oargv) +static fgw_error_t pcb_act_Rotate90(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *ssteps = PCB_ACTION_ARG(0); Index: trunk/src/plug_footprint_act.c =================================================================== --- trunk/src/plug_footprint_act.c (revision 17464) +++ trunk/src/plug_footprint_act.c (revision 17465) @@ -33,7 +33,7 @@ static const char pcb_acts_fp_rehash[] = "fp_rehash()" ; static const char pcb_acth_fp_rehash[] = "Flush the library index; rescan all library search paths and rebuild the library index. Useful if there are changes in the library during a pcb-rnd session."; -static fgw_error_t pcb_act_fp_rehash(int oargc, const char **oargv) +static fgw_error_t pcb_act_fp_rehash(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; pcb_fplibrary_t *l; Index: trunk/src/plugins.c =================================================================== --- trunk/src/plugins.c (revision 17464) +++ trunk/src/plugins.c (revision 17465) @@ -66,7 +66,7 @@ static const char pcb_acth_ManagePlugins[] = "Manage plugins dialog."; -static fgw_error_t pcb_act_ManagePlugins(int oargc, const char **oargv) +static fgw_error_t pcb_act_ManagePlugins(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; pup_plugin_t *p; Index: trunk/src/polygon_act.c =================================================================== --- trunk/src/polygon_act.c (revision 17464) +++ trunk/src/polygon_act.c (revision 17465) @@ -66,7 +66,7 @@ %end-doc */ -static fgw_error_t pcb_act_MorphPolygon(int oargc, const char **oargv) +static fgw_error_t pcb_act_MorphPolygon(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *function = PCB_ACTION_ARG(0); @@ -131,7 +131,7 @@ %end-doc */ -static fgw_error_t pcb_act_Polygon(int oargc, const char **oargv) +static fgw_error_t pcb_act_Polygon(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *function = PCB_ACTION_ARG(0); Index: trunk/src/rats_act.c =================================================================== --- trunk/src/rats_act.c (revision 17464) +++ trunk/src/rats_act.c (revision 17465) @@ -76,7 +76,7 @@ %end-doc */ -static fgw_error_t pcb_act_AddRats(int oargc, const char **oargv) +static fgw_error_t pcb_act_AddRats(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *function = PCB_ACTION_ARG(0); @@ -153,7 +153,7 @@ %end-doc */ -static fgw_error_t pcb_act_Connection(int oargc, const char **oargv) +static fgw_error_t pcb_act_Connection(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *function = PCB_ACTION_ARG(0); @@ -205,7 +205,7 @@ %end-doc */ -static fgw_error_t pcb_act_DeleteRats(int oargc, const char **oargv) +static fgw_error_t pcb_act_DeleteRats(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *function = PCB_ACTION_ARG(0); Index: trunk/src/rats_patch.c =================================================================== --- trunk/src/rats_patch.c (revision 17464) +++ trunk/src/rats_patch.c (revision 17465) @@ -383,7 +383,7 @@ static const char pcb_acth_ReplaceFootprint[] = "Replace the footprint of the selected components with the footprint specified."; -static fgw_error_t pcb_act_ReplaceFootprint(int oargc, const char **oargv) +static fgw_error_t pcb_act_ReplaceFootprint(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *fpname; @@ -472,7 +472,7 @@ /* %start-doc actions SavePatch Save netlist patch for back annotation. %end-doc */ -static fgw_error_t pcb_act_SavePatch(int oargc, const char **oargv) +static fgw_error_t pcb_act_SavePatch(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *fn; Index: trunk/src/remove_act.c =================================================================== --- trunk/src/remove_act.c (revision 17464) +++ trunk/src/remove_act.c (revision 17465) @@ -50,7 +50,7 @@ %end-doc */ -static fgw_error_t pcb_act_Delete(int oargc, const char **oargv) +static fgw_error_t pcb_act_Delete(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *function = PCB_ACTION_ARG(0); @@ -96,7 +96,7 @@ %end-doc */ -static fgw_error_t pcb_act_RemoveSelected(int oargc, const char **oargv) +static fgw_error_t pcb_act_RemoveSelected(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; if (pcb_remove_selected()) Index: trunk/src/select_act.c =================================================================== --- trunk/src/select_act.c (revision 17464) +++ trunk/src/select_act.c (revision 17465) @@ -85,7 +85,7 @@ %end-doc */ -static fgw_error_t pcb_act_Select(int oargc, const char **oargv) +static fgw_error_t pcb_act_Select(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *function = PCB_ACTION_ARG(0); @@ -194,7 +194,7 @@ %end-doc */ -static fgw_error_t pcb_act_Unselect(int oargc, const char **oargv) +static fgw_error_t pcb_act_Unselect(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *function = PCB_ACTION_ARG(0); Index: trunk/src/undo_act.c =================================================================== --- trunk/src/undo_act.c (revision 17464) +++ trunk/src/undo_act.c (revision 17465) @@ -88,7 +88,7 @@ %end-doc */ -fgw_error_t pcb_act_Atomic(int oargc, const char **oargv) +fgw_error_t pcb_act_Atomic(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; if (argc != 1) @@ -136,7 +136,7 @@ %end-doc */ -fgw_error_t pcb_act_Undo(int oargc, const char **oargv) +fgw_error_t pcb_act_Undo(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *function = PCB_ACTION_ARG(0); @@ -180,7 +180,7 @@ %end-doc */ -fgw_error_t pcb_act_Redo(int oargc, const char **oargv) +fgw_error_t pcb_act_Redo(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; pcb_notify_crosshair_change(pcb_false); Index: trunk/src/undo_act.h =================================================================== --- trunk/src/undo_act.h (revision 17464) +++ trunk/src/undo_act.h (revision 17465) @@ -1,4 +1,4 @@ /* Publish actions - these may be useful for other actions */ -fgw_error_t pcb_act_Undo(int argc, const char **argv); -fgw_error_t pcb_act_Redo(int argc, const char **argv); -fgw_error_t pcb_act_Atomic(int argc, const char **argv); +fgw_error_t pcb_act_Undo(fgw_arg_t *res, int oargc, fgw_arg_t *oargv); +fgw_error_t pcb_act_Redo(fgw_arg_t *res, int oargc, fgw_arg_t *oargv); +fgw_error_t pcb_act_Atomic(fgw_arg_t *res, int oargc, fgw_arg_t *oargv); Index: trunk/src_plugins/acompnet/acompnet.c =================================================================== --- trunk/src_plugins/acompnet/acompnet.c (revision 17464) +++ trunk/src_plugins/acompnet/acompnet.c (revision 17465) @@ -85,7 +85,7 @@ static const char pcb_acts_acompnet[] = "acompnet()\n" ; static const char pcb_acth_acompnet[] = "Attempt to auto-complete the current network"; -static fgw_error_t pcb_act_acompnet(int oargc, const char **oargv) +static fgw_error_t pcb_act_acompnet(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; acompnet_mesh(); Index: trunk/src_plugins/autocrop/autocrop.c =================================================================== --- trunk/src_plugins/autocrop/autocrop.c (revision 17464) +++ trunk/src_plugins/autocrop/autocrop.c (revision 17465) @@ -40,7 +40,7 @@ static const char pcb_acth_autocrop[] = "Autocrops the board dimensions to (extants + a margin of 1 grid), keeping the move and board size grid aligned"; static const char pcb_acts_autocrop[] = "autocrop()"; -static fgw_error_t pcb_act_autocrop(int oargc, const char **oargv) +static fgw_error_t pcb_act_autocrop(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; pcb_box_t box; Index: trunk/src_plugins/autoplace/action.c =================================================================== --- trunk/src_plugins/autoplace/action.c (revision 17464) +++ trunk/src_plugins/autoplace/action.c (revision 17465) @@ -51,7 +51,7 @@ %end-doc */ -static fgw_error_t pcb_act_AutoPlaceSelected(int oargc, const char **oargv) +static fgw_error_t pcb_act_AutoPlaceSelected(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; pcb_event(PCB_EVENT_BUSY, NULL); Index: trunk/src_plugins/autoroute/action.c =================================================================== --- trunk/src_plugins/autoroute/action.c (revision 17464) +++ trunk/src_plugins/autoroute/action.c (revision 17465) @@ -69,7 +69,7 @@ %end-doc */ -static fgw_error_t pcb_act_AutoRoute(int oargc, const char **oargv) +static fgw_error_t pcb_act_AutoRoute(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *function = PCB_ACTION_ARG(0); Index: trunk/src_plugins/boardflip/boardflip.c =================================================================== --- trunk/src_plugins/boardflip/boardflip.c (revision 17464) +++ trunk/src_plugins/boardflip/boardflip.c (revision 17465) @@ -166,7 +166,7 @@ PCB_END_LOOP; } -static fgw_error_t pcb_act_boardflip(int oargc, const char **oargv) +static fgw_error_t pcb_act_boardflip(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; int h = PCB->MaxHeight; Index: trunk/src_plugins/diag/diag.c =================================================================== --- trunk/src_plugins/diag/diag.c (revision 17464) +++ trunk/src_plugins/diag/diag.c (revision 17465) @@ -59,7 +59,7 @@ extern lht_doc_t *conf_main_root[]; extern lht_doc_t *conf_plug_root[]; -static fgw_error_t pcb_act_DumpConf(int oargc, const char **oargv) +static fgw_error_t pcb_act_DumpConf(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *cmd = argc > 0 ? argv[0] : NULL; @@ -114,7 +114,7 @@ static const char eval_conf_help[] = "Perform various operations on the configuration tree."; -static fgw_error_t pcb_act_EvalConf(int oargc, const char **oargv) +static fgw_error_t pcb_act_EvalConf(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *path = argc > 0 ? argv[0] : NULL; @@ -170,7 +170,7 @@ static const char dump_layers_help[] = "Print info about each layer"; extern lht_doc_t *conf_main_root[]; -static fgw_error_t pcb_act_DumpLayers(int oargc, const char **oargv) +static fgw_error_t pcb_act_DumpLayers(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; int g, n, used; @@ -268,7 +268,7 @@ static const char dump_fonts_syntax[] = "dumpfonts()\n"; static const char dump_fonts_help[] = "Print info about fonts"; -static fgw_error_t pcb_act_DumpFonts(int oargc, const char **oargv) +static fgw_error_t pcb_act_DumpFonts(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; printf("Font summary:\n"); @@ -288,7 +288,7 @@ extern void undo_dump(void); static const char dump_undo_syntax[] = "dumpfonts()\n"; static const char dump_undo_help[] = "Print info about fonts"; -static fgw_error_t pcb_act_DumpUndo(int oargc, const char **oargv) +static fgw_error_t pcb_act_DumpUndo(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; printf("Undo:\n"); @@ -345,7 +345,7 @@ static const char dump_data_syntax[] = "dumpdata()\n"; static const char dump_data_help[] = "Dump an aspect of the data"; -static fgw_error_t pcb_act_DumpData(int oargc, const char **oargv) +static fgw_error_t pcb_act_DumpData(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; dd_flags what = DD_DRC | DD_COPPER_ONLY; @@ -358,7 +358,7 @@ static const char integrity_syntax[] = "integrity()\n"; static const char integrity_help[] = "perform integrirty check on the current board and generate errors if needed"; -static fgw_error_t pcb_act_integrity(int oargc, const char **oargv) +static fgw_error_t pcb_act_integrity(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; pcb_check_integrity(PCB); @@ -383,7 +383,7 @@ static const char dumpflags_syntax[] = "dumpflags([fmt])\n"; static const char dumpflags_help[] = "dump flags, optionally using the format string provided by the user"; -static fgw_error_t pcb_act_dumpflags(int oargc, const char **oargv) +static fgw_error_t pcb_act_dumpflags(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; int n; @@ -420,7 +420,7 @@ static const char d1_syntax[] = "d1()\n"; static const char d1_help[] = "debug action for development"; -static fgw_error_t pcb_act_d1(int oargc, const char **oargv) +static fgw_error_t pcb_act_d1(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; printf("D1!\n"); @@ -433,7 +433,7 @@ static const char forcecolor_syntax[] = "forcecolor(#RRGGBB)\n"; static const char forcecolor_help[] = "change selected objects' color to #RRGGBB, reset if does not start with '#'"; -static fgw_error_t pcb_act_forcecolor(int oargc, const char **oargv) +static fgw_error_t pcb_act_forcecolor(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; pcb_coord_t x, y; Index: trunk/src_plugins/dialogs/TEMPLATE.c =================================================================== --- trunk/src_plugins/dialogs/TEMPLATE.c (revision 17464) +++ trunk/src_plugins/dialogs/TEMPLATE.c (revision 17465) @@ -85,7 +85,7 @@ static const char pcb_acts_Foo[] = "Foo(object)\n"; <<<- edit this static const char pcb_acth_Foo[] = ""; <<<- edit this -static fgw_error_t pcb_act_Foo(int oargc, const char **oargv) <<<- edit this +static fgw_error_t pcb_act_Foo(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) <<<- edit this { return 0; } Index: trunk/src_plugins/dialogs/TEMPLATE_MODAL.c =================================================================== --- trunk/src_plugins/dialogs/TEMPLATE_MODAL.c (revision 17464) +++ trunk/src_plugins/dialogs/TEMPLATE_MODAL.c (revision 17465) @@ -68,7 +68,7 @@ static const char pcb_acts_Foo[] = "Foo(object)\n"; <<<- edit this static const char pcb_acth_Foo[] = ""; <<<- edit this -static fgw_error_t pcb_act_Foo(int oargc, const char **oargv) <<<- edit this +static fgw_error_t pcb_act_Foo(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) <<<- edit this { return 0; } Index: trunk/src_plugins/dialogs/dlg_about.c =================================================================== --- trunk/src_plugins/dialogs/dlg_about.c (revision 17464) +++ trunk/src_plugins/dialogs/dlg_about.c (revision 17465) @@ -59,7 +59,7 @@ static const char pcb_acts_About[] = "About()\n"; static const char pcb_acth_About[] = "Present the about box"; -static fgw_error_t pcb_act_About(int oargc, const char **oargv) +static fgw_error_t pcb_act_About(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; pcb_dlg_about(); Index: trunk/src_plugins/dialogs/dlg_flag_edit.c =================================================================== --- trunk/src_plugins/dialogs/dlg_flag_edit.c (revision 17464) +++ trunk/src_plugins/dialogs/dlg_flag_edit.c (revision 17465) @@ -75,7 +75,7 @@ static const char pcb_acts_FlagEdit[] = "FlagEdit(object)\n"; static const char pcb_acth_FlagEdit[] = "Change the layer binding."; -static fgw_error_t pcb_act_FlagEdit(int oargc, const char **oargv) +static fgw_error_t pcb_act_FlagEdit(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; fe_ctx_t ctx; Index: trunk/src_plugins/dialogs/dlg_layer_binding.c =================================================================== --- trunk/src_plugins/dialogs/dlg_layer_binding.c (revision 17464) +++ trunk/src_plugins/dialogs/dlg_layer_binding.c (revision 17465) @@ -188,7 +188,7 @@ static const char pcb_acts_LayerBinding[] = "LayerBinding(object)\nLayerBinding(selected)\nLayerBinding(buffer)\n"; static const char pcb_acth_LayerBinding[] = "Change the layer binding."; -static fgw_error_t pcb_act_LayerBinding(int oargc, const char **oargv) +static fgw_error_t pcb_act_LayerBinding(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; lb_ctx_t ctx; Index: trunk/src_plugins/dialogs/dlg_padstack.c =================================================================== --- trunk/src_plugins/dialogs/dlg_padstack.c (revision 17464) +++ trunk/src_plugins/dialogs/dlg_padstack.c (revision 17465) @@ -579,7 +579,7 @@ static const char pcb_acts_PadstackEdit[] = "PadstackEdit(object)\n"; static const char pcb_acth_PadstackEdit[] = "interactive pad stack editor"; -static fgw_error_t pcb_act_PadstackEdit(int oargc, const char **oargv) +static fgw_error_t pcb_act_PadstackEdit(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; int n, target_tab = -1; Index: trunk/src_plugins/dialogs/dlg_test.c =================================================================== --- trunk/src_plugins/dialogs/dlg_test.c (revision 17464) +++ trunk/src_plugins/dialogs/dlg_test.c (revision 17465) @@ -38,7 +38,7 @@ static void cb_jump(void *hid_ctx, void *caller_data, pcb_hid_attribute_t *attr); static int attr_idx, attr_idx2; -static fgw_error_t pcb_act_dlg_test(int oargc, const char **oargv) +static fgw_error_t pcb_act_dlg_test(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *vals[] = { "foo", "bar", "baz", NULL }; Index: trunk/src_plugins/distalign/distalign.c =================================================================== --- trunk/src_plugins/distalign/distalign.c (revision 17464) +++ trunk/src_plugins/distalign/distalign.c (revision 17465) @@ -255,7 +255,7 @@ * Defaults are Marks, First. */ static const char pcb_acts_align[] = "Align(X/Y, [Lefts/Rights/Tops/Bottoms/Centers/Marks, [First/Last/pcb_crosshair/Average[, Gridless]]])"; -static fgw_error_t pcb_act_align(int oargc, const char **oargv) +static fgw_error_t pcb_act_align(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; int dir; @@ -379,7 +379,7 @@ * before they were distributed. */ static const char pcb_acts_distribute[] = "Distribute(X/Y, [Lefts/Rights/Tops/Bottoms/Centers/Marks/Gaps, [First/Last/pcb_crosshair, First/Last/pcb_crosshair[, Gridless]]])"; -static fgw_error_t pcb_act_distribute(int oargc, const char **oargv) +static fgw_error_t pcb_act_distribute(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; int dir; Index: trunk/src_plugins/distaligntext/distaligntext.c =================================================================== --- trunk/src_plugins/distaligntext/distaligntext.c (revision 17464) +++ trunk/src_plugins/distaligntext/distaligntext.c (revision 17465) @@ -273,7 +273,7 @@ * * Defaults are Lefts/Tops, First */ static const char pcb_acts_aligntext[] = "AlignText(X/Y, [Lefts/Rights/Tops/Bottoms/Centers, [First/Last/pcb_crosshair/Average[, Gridless]]])"; -static fgw_error_t pcb_act_aligntext(int oargc, const char **oargv) +static fgw_error_t pcb_act_aligntext(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; int dir; @@ -432,7 +432,7 @@ Distributed texts always retain the same relative order they had before they were distributed. */ static const char pcb_acts_distributetext[] = "DistributeText(Y, [Lefts/Rights/Tops/Bottoms/Centers/Gaps, [First/Last/pcb_crosshair, First/Last/pcb_crosshair[, Gridless]]])"; -static fgw_error_t pcb_act_distributetext(int oargc, const char **oargv) +static fgw_error_t pcb_act_distributetext(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; int dir; Index: trunk/src_plugins/djopt/djopt.c =================================================================== --- trunk/src_plugins/djopt/djopt.c (revision 17464) +++ trunk/src_plugins/djopt/djopt.c (revision 17465) @@ -2491,7 +2491,7 @@ %end-doc */ -static fgw_error_t pcb_act_DJopt(int oargc, const char **oargv) +static fgw_error_t pcb_act_DJopt(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *arg = argc > 0 ? argv[0] : NULL; Index: trunk/src_plugins/draw_csect/draw_csect.c =================================================================== --- trunk/src_plugins/draw_csect/draw_csect.c (revision 17464) +++ trunk/src_plugins/draw_csect/draw_csect.c (revision 17465) @@ -834,7 +834,7 @@ static const char pcb_acts_dump_csect[] = "DumpCsect()"; static const char pcb_acth_dump_csect[] = "Print the cross-section of the board (layer stack)"; -static fgw_error_t pcb_act_dump_csect(int oargc, const char **oargv) +static fgw_error_t pcb_act_dump_csect(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; pcb_layergrp_id_t gid; Index: trunk/src_plugins/expfeat/expfeat.c =================================================================== --- trunk/src_plugins/expfeat/expfeat.c (revision 17464) +++ trunk/src_plugins/expfeat/expfeat.c (revision 17465) @@ -40,7 +40,7 @@ /* %start-doc actions Debug This action is a template, copy and rename this to create new actions. %end-doc */ -static fgw_error_t pcb_act_ExpFeatTmp(int oargc, const char **oargv) +static fgw_error_t pcb_act_ExpFeatTmp(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; pcb_message(PCB_MSG_INFO, "Hello world from expfeat!\n"); Index: trunk/src_plugins/export_openems/mesh.c =================================================================== --- trunk/src_plugins/export_openems/mesh.c (revision 17464) +++ trunk/src_plugins/export_openems/mesh.c (revision 17465) @@ -895,7 +895,7 @@ const char pcb_acts_mesh[] = "mesh()"; const char pcb_acth_mesh[] = "generate a mesh for simulation"; -fgw_error_t pcb_act_mesh(int oargc, const char **oargv) +fgw_error_t pcb_act_mesh(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; pcb_mesh_interactive(); Index: trunk/src_plugins/export_openems/mesh.h =================================================================== --- trunk/src_plugins/export_openems/mesh.h (revision 17464) +++ trunk/src_plugins/export_openems/mesh.h (revision 17465) @@ -34,7 +34,7 @@ extern const char pcb_acts_mesh[]; extern const char pcb_acth_mesh[]; -fgw_error_t pcb_act_mesh(int argc, const char **argv); +fgw_error_t pcb_act_mesh(fgw_arg_t *res, int oargc, fgw_arg_t *oargv); /* Get one of the configured meshes */ pcb_mesh_t *pcb_mesg_get(const char *name); Index: trunk/src_plugins/export_openscad/export_openscad.c =================================================================== --- trunk/src_plugins/export_openscad/export_openscad.c (revision 17464) +++ trunk/src_plugins/export_openscad/export_openscad.c (revision 17465) @@ -597,7 +597,7 @@ static const char pcb_acts_scad_export_poly[] = "ScadExportPoly(filename)\n"; static const char pcb_acth_scad_export_poly[] = "exports all selected polygons to an openscad script; only the outmost contour of each poly is exported"; -static fgw_error_t pcb_act_scad_export_poly(int oargc, const char **oargv) +static fgw_error_t pcb_act_scad_export_poly(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; FILE *f; Index: trunk/src_plugins/export_ps/ps.c =================================================================== --- trunk/src_plugins/export_ps/ps.c (revision 17464) +++ trunk/src_plugins/export_ps/ps.c (revision 17465) @@ -1448,7 +1448,7 @@ { } -static fgw_error_t pcb_act_PSCalib(int oargc, const char **oargv) +static fgw_error_t pcb_act_PSCalib(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; ps_calibrate(0.0, 0.0); Index: trunk/src_plugins/extedit/extedit.c =================================================================== --- trunk/src_plugins/extedit/extedit.c (revision 17464) +++ trunk/src_plugins/extedit/extedit.c (revision 17465) @@ -168,7 +168,7 @@ static const char pcb_acts_extedit[] = "extedit(object|selected, [interactive|method])\n"; static const char pcb_acth_extedit[] = "Invoke an external program to edit a specific part of the current board."; -static fgw_error_t pcb_act_extedit(int oargc, const char **oargv) +static fgw_error_t pcb_act_extedit(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; long type; Index: trunk/src_plugins/fontmode/fontmode.c =================================================================== --- trunk/src_plugins/fontmode/fontmode.c (revision 17464) +++ trunk/src_plugins/fontmode/fontmode.c (revision 17465) @@ -100,7 +100,7 @@ pcb_poly_invalidate_draw(layer, np); } -static fgw_error_t pcb_act_FontEdit(int oargc, const char **oargv) +static fgw_error_t pcb_act_FontEdit(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; pcb_font_t *font; @@ -240,7 +240,7 @@ %end-doc */ -static fgw_error_t pcb_act_FontSave(int oargc, const char **oargv) +static fgw_error_t pcb_act_FontSave(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; pcb_font_t *font; Index: trunk/src_plugins/gpmi/pcb-gpmi/gpmi_plugin/gpmi_pkg/actions/actions.c =================================================================== --- trunk/src_plugins/gpmi/pcb-gpmi/gpmi_plugin/gpmi_pkg/actions/actions.c (revision 17464) +++ trunk/src_plugins/gpmi/pcb-gpmi/gpmi_plugin/gpmi_pkg/actions/actions.c (revision 17465) @@ -31,7 +31,7 @@ } -static fgw_error_t pcb_act_action_cb(int oargc, const char **oargv) +static fgw_error_t pcb_act_action_cb(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; acontext_t *ctx = (acontext_t *)pcb_current_action; Index: trunk/src_plugins/gpmi/pcb-gpmi/gpmi_plugin/gpmi_plugin.c =================================================================== --- trunk/src_plugins/gpmi/pcb-gpmi/gpmi_plugin/gpmi_plugin.c (revision 17464) +++ trunk/src_plugins/gpmi/pcb-gpmi/gpmi_plugin/gpmi_plugin.c (revision 17465) @@ -84,7 +84,7 @@ } } -static fgw_error_t pcb_act_gpmi_scripts(int oargc, const char **oargv) +static fgw_error_t pcb_act_gpmi_scripts(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; if (argc == 0) { @@ -132,7 +132,7 @@ PCB_OLD_ACT_END; } -static fgw_error_t pcb_act_gpmi_rehash(int oargc, const char **oargv) +static fgw_error_t pcb_act_gpmi_rehash(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; cmd_reload(NULL); Index: trunk/src_plugins/hid_batch/batch.c =================================================================== --- trunk/src_plugins/hid_batch/batch.c (revision 17464) +++ trunk/src_plugins/hid_batch/batch.c (revision 17465) @@ -79,7 +79,7 @@ prompt = pcb_strdup("no-board"); } -static fgw_error_t pcb_act_help(int oargc, const char **oargv) +static fgw_error_t pcb_act_help(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; pcb_print_actions(); @@ -87,7 +87,7 @@ PCB_OLD_ACT_END; } -static fgw_error_t pcb_act_info(int oargc, const char **oargv) +static fgw_error_t pcb_act_info(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; int i, j; Index: trunk/src_plugins/hid_lesstif/dialogs.c =================================================================== --- trunk/src_plugins/hid_lesstif/dialogs.c (revision 17464) +++ trunk/src_plugins/hid_lesstif/dialogs.c (revision 17465) @@ -120,7 +120,7 @@ %end-doc */ -static fgw_error_t pcb_act_Load(int oargc, const char **oargv) +static fgw_error_t pcb_act_Load(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *function; @@ -180,7 +180,7 @@ %end-doc */ -static fgw_error_t pcb_act_LoadVendor(int oargc, const char **oargv) +static fgw_error_t pcb_act_LoadVendor(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; char *name; @@ -234,7 +234,7 @@ %end-doc */ -static fgw_error_t pcb_act_Save(int oargc, const char **oargv) +static fgw_error_t pcb_act_Save(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *function; @@ -460,7 +460,7 @@ return ok; } -static fgw_error_t pcb_act_ConfirmAction(int oargc, const char **oargv) +static fgw_error_t pcb_act_ConfirmAction(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; int rv = lesstif_confirm_dialog(argc > 0 ? argv[0] : 0, @@ -585,7 +585,7 @@ %end-doc */ -static fgw_error_t pcb_act_PromptFor(int oargc, const char **oargv) +static fgw_error_t pcb_act_PromptFor(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; char *rv = lesstif_prompt_for(argc > 0 ? argv[0] : 0, @@ -1285,7 +1285,7 @@ %end-doc */ -static fgw_error_t pcb_act_DoWindows(int oargc, const char **oargv) +static fgw_error_t pcb_act_DoWindows(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *a = argc == 1 ? argv[0] : ""; @@ -1323,7 +1323,7 @@ %end-doc */ -static fgw_error_t pcb_act_About(int oargc, const char **oargv) +static fgw_error_t pcb_act_About(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; static Widget about = 0; @@ -1355,7 +1355,7 @@ %end-doc */ -static fgw_error_t pcb_act_Print(int oargc, const char **oargv) +static fgw_error_t pcb_act_Print(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; pcb_hid_attribute_t *opts; @@ -1391,7 +1391,7 @@ %end-doc */ -static fgw_error_t pcb_act_ExportGUI(int oargc, const char **oargv) +static fgw_error_t pcb_act_ExportGUI(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; static Widget selector = 0; @@ -1563,7 +1563,7 @@ %end-doc */ -static fgw_error_t pcb_act_AdjustSizes(int oargc, const char **oargv) +static fgw_error_t pcb_act_AdjustSizes(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; if (!sizes_dialog) { @@ -1659,7 +1659,7 @@ %end-doc */ extern void lesstif_show_layergrp_edit(void); -static fgw_error_t pcb_act_EditLayerGroups(int oargc, const char **oargv) +static fgw_error_t pcb_act_EditLayerGroups(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; lesstif_show_layergrp_edit(); @@ -1671,7 +1671,7 @@ static const char pcb_acts_fontsel[] = "EditLayerGroups()"; static const char pcb_acth_fontsel[] = "Let the user change fonts"; extern void lesstif_show_fontsel_edit(pcb_layer_t *txtly, pcb_text_t *txt, int type); -static fgw_error_t pcb_act_fontsel(int oargc, const char **oargv) +static fgw_error_t pcb_act_fontsel(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; if (argc > 1) @@ -2007,7 +2007,7 @@ %end-doc */ -static fgw_error_t pcb_act_ImportGUI(int oargc, const char **oargv) +static fgw_error_t pcb_act_ImportGUI(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; static int I_am_recursing = 0; Index: trunk/src_plugins/hid_lesstif/library.c =================================================================== --- trunk/src_plugins/hid_lesstif/library.c (revision 17464) +++ trunk/src_plugins/hid_lesstif/library.c (revision 17465) @@ -169,7 +169,7 @@ %end-doc */ -static fgw_error_t pcb_act_LibraryShow(int oargc, const char **oargv) +static fgw_error_t pcb_act_LibraryShow(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; if (build_library_dialog()) Index: trunk/src_plugins/hid_lesstif/main.c =================================================================== --- trunk/src_plugins/hid_lesstif/main.c (revision 17464) +++ trunk/src_plugins/hid_lesstif/main.c (revision 17465) @@ -435,7 +435,7 @@ %end-doc */ -static fgw_error_t pcb_act_Zoom(int oargc, const char **oargv) +static fgw_error_t pcb_act_Zoom(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; pcb_coord_t x, y; @@ -509,7 +509,7 @@ %end-doc */ -static fgw_error_t pcb_act_ZoomTo(int oargc, const char **oargv) +static fgw_error_t pcb_act_ZoomTo(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; pcb_coord_t x1, y1, x2, y2; @@ -542,7 +542,7 @@ static int pan_thumb_mode; -static fgw_error_t pcb_act_Pan(int oargc, const char **oargv) +static fgw_error_t pcb_act_Pan(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; pcb_coord_t x, y; @@ -616,7 +616,7 @@ } #warning TODO: ui_zoomplan.c does the same, maybe make the code common? -static fgw_error_t pcb_act_SwapSides(int oargc, const char **oargv) +static fgw_error_t pcb_act_SwapSides(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; int old_shown_side = conf_core.editor.show_solder_side; @@ -775,7 +775,7 @@ %end-doc */ -static fgw_error_t pcb_act_Command(int oargc, const char **oargv) +static fgw_error_t pcb_act_Command(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; XtManageChild(m_cmd_label); @@ -797,7 +797,7 @@ %end-doc */ -static fgw_error_t pcb_act_Benchmark(int oargc, const char **oargv) +static fgw_error_t pcb_act_Benchmark(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; int i = 0; @@ -833,7 +833,7 @@ PCB_OLD_ACT_END; } -static fgw_error_t pcb_act_Center(int oargc, const char **oargv) +static fgw_error_t pcb_act_Center(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; pcb_coord_t x, y; Index: trunk/src_plugins/hid_lesstif/netlist.c =================================================================== --- trunk/src_plugins/hid_lesstif/netlist.c (revision 17464) +++ trunk/src_plugins/hid_lesstif/netlist.c (revision 17465) @@ -373,7 +373,7 @@ %end-doc */ -static fgw_error_t pcb_act_LesstifNetlistShow(int oargc, const char **oargv) +static fgw_error_t pcb_act_LesstifNetlistShow(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; if (build_netlist_dialog()) Index: trunk/src_plugins/hid_lesstif/styles.c =================================================================== --- trunk/src_plugins/hid_lesstif/styles.c (revision 17464) +++ trunk/src_plugins/hid_lesstif/styles.c (revision 17465) @@ -311,7 +311,7 @@ %end-doc */ -static fgw_error_t pcb_act_AdjustStyle(int oargc, const char **oargv) +static fgw_error_t pcb_act_AdjustStyle(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; if ((!mainwind) || (PCB->RouteStyle.array == NULL)) Index: trunk/src_plugins/import_dsn/dsn.c =================================================================== --- trunk/src_plugins/import_dsn/dsn.c (revision 17464) +++ trunk/src_plugins/import_dsn/dsn.c (revision 17465) @@ -206,7 +206,7 @@ static const char load_dsn_help[] = "Loads the specified routed dsn file."; -fgw_error_t pcb_act_LoadDsnFrom(int oargc, const char **oargv) +fgw_error_t pcb_act_LoadDsnFrom(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *fname = NULL; Index: trunk/src_plugins/import_hpgl/hpgl.c =================================================================== --- trunk/src_plugins/import_hpgl/hpgl.c (revision 17464) +++ trunk/src_plugins/import_hpgl/hpgl.c (revision 17465) @@ -149,7 +149,7 @@ static const char pcb_acts_LoadHpglFrom[] = "LoadHpglFrom(filename)"; static const char pcb_acth_LoadHpglFrom[] = "Loads the specified hpgl plot file to the current buffer"; -fgw_error_t pcb_act_LoadHpglFrom(int oargc, const char **oargv) +fgw_error_t pcb_act_LoadHpglFrom(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *fname = NULL; Index: trunk/src_plugins/import_ipcd356/ipcd356.c =================================================================== --- trunk/src_plugins/import_ipcd356/ipcd356.c (revision 17464) +++ trunk/src_plugins/import_ipcd356/ipcd356.c (revision 17465) @@ -355,7 +355,7 @@ static const char pcb_acts_LoadIpc356From[] = "LoadIpc356From(filename, [nonet], [nopad], [nosubc])"; static const char pcb_acth_LoadIpc356From[] = "Loads the specified IPC356-D netlist"; -fgw_error_t pcb_act_LoadIpc356From(int oargc, const char **oargv) +fgw_error_t pcb_act_LoadIpc356From(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; FILE *f; Index: trunk/src_plugins/import_ltspice/ltspice.c =================================================================== --- trunk/src_plugins/import_ltspice/ltspice.c (revision 17464) +++ trunk/src_plugins/import_ltspice/ltspice.c (revision 17465) @@ -266,7 +266,7 @@ static const char pcb_acts_LoadLtspiceFrom[] = "LoadLtspiceFrom(filename)"; static const char pcb_acth_LoadLtspiceFrom[] = "Loads the specified ltspice .net and .asc file - the netlist must be mentor netlist."; -fgw_error_t pcb_act_LoadLtspiceFrom(int oargc, const char **oargv) +fgw_error_t pcb_act_LoadLtspiceFrom(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *fname = NULL, *end; Index: trunk/src_plugins/import_mentor_sch/mentor_sch.c =================================================================== --- trunk/src_plugins/import_mentor_sch/mentor_sch.c (revision 17464) +++ trunk/src_plugins/import_mentor_sch/mentor_sch.c (revision 17465) @@ -257,7 +257,7 @@ static const char pcb_acts_Loadmentor_schFrom[] = "LoadMentorFrom(filename)"; static const char pcb_acth_Loadmentor_schFrom[] = "Loads the specified Mentor Graphics Design Capture schematics flat .edf file."; -fgw_error_t pcb_act_LoadMentorFrom(int oargc, const char **oargv) +fgw_error_t pcb_act_LoadMentorFrom(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *fname = NULL; Index: trunk/src_plugins/import_mucs/mucs.c =================================================================== --- trunk/src_plugins/import_mucs/mucs.c (revision 17464) +++ trunk/src_plugins/import_mucs/mucs.c (revision 17465) @@ -56,7 +56,7 @@ static const char pcb_acts_LoadMucsFrom[] = "LoadMucsFrom(filename)"; static const char pcb_acth_LoadMucsFrom[] = "Loads the specified mucs routing file."; -fgw_error_t pcb_act_LoadMucsFrom(int oargc, const char **oargv) +fgw_error_t pcb_act_LoadMucsFrom(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *fname = NULL; Index: trunk/src_plugins/import_sch/import_sch.c =================================================================== --- trunk/src_plugins/import_sch/import_sch.c (revision 17464) +++ trunk/src_plugins/import_sch/import_sch.c (revision 17465) @@ -60,7 +60,7 @@ conf_import_sch_t conf_import_sch; -extern fgw_error_t pcb_act_ExecuteFile(int oargc, const char **oargv); +extern fgw_error_t pcb_act_ExecuteFile(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv); /* ---------------------------------------------------------------- */ static const char pcb_acts_Import[] = @@ -178,12 +178,13 @@ %end-doc */ -static fgw_error_t pcb_act_Import(int oargc, const char **oargv) +static fgw_error_t pcb_act_Import(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *mode; const char **sources = NULL; int nsources = 0; + fgw_arg_t res; if (conf_import_sch.plugins.import_sch.verbose) pcb_message(PCB_MSG_DEBUG, "pcb_act_Import: === Entering pcb_act_Import ===\n"); @@ -360,9 +361,7 @@ if (conf_import_sch.plugins.import_sch.verbose) pcb_message(PCB_MSG_DEBUG, "pcb_act_Import: about to run pcb_act_ExecuteFile, file = %s\n", tmpfile); - cmd[0] = tmpfile; - cmd[1] = NULL; - pcb_act_ExecuteFile(1, cmd); + fgw_vcall(&pcb_fgw, &res, "ExecuteFile", FGW_STR, tmpfile, 0); for(i = 0; i < nsources; i++) free((char *) cmd[8 + i]); @@ -436,9 +435,7 @@ return 1; } - cmd[0] = tmpfile; - cmd[1] = NULL; - pcb_act_ExecuteFile(1, cmd); + fgw_vcall(&pcb_fgw, &res, "ExecuteFile", FGW_STR, tmpfile, 0); free((char*)cmd[2]); free((char*)cmd[3]); Index: trunk/src_plugins/import_tinycad/tinycad.c =================================================================== --- trunk/src_plugins/import_tinycad/tinycad.c (revision 17464) +++ trunk/src_plugins/import_tinycad/tinycad.c (revision 17465) @@ -172,7 +172,7 @@ static const char pcb_acts_LoadtinycadFrom[] = "LoadTinycadFrom(filename)"; static const char pcb_acth_LoadtinycadFrom[] = "Loads the specified tinycad .net file - the netlist must be tinycad netlist output."; -fgw_error_t pcb_act_LoadtinycadFrom(int oargc, const char **oargv) +fgw_error_t pcb_act_LoadtinycadFrom(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *fname = NULL; Index: trunk/src_plugins/io_hyp/io_hyp.c =================================================================== --- trunk/src_plugins/io_hyp/io_hyp.c (revision 17464) +++ trunk/src_plugins/io_hyp/io_hyp.c (revision 17465) @@ -70,7 +70,7 @@ static const char load_hyp_help[] = "Loads the specified Hyperlynx file."; -fgw_error_t pcb_act_LoadhypFrom(int oargc, const char **oargv) +fgw_error_t pcb_act_LoadhypFrom(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *fname = NULL; Index: trunk/src_plugins/io_kicad/read_net.c =================================================================== --- trunk/src_plugins/io_kicad/read_net.c (revision 17464) +++ trunk/src_plugins/io_kicad/read_net.c (revision 17465) @@ -216,7 +216,7 @@ const char pcb_acts_LoadeeschemaFrom[] = "LoadEeschemaFrom(filename)"; const char pcb_acth_LoadeeschemaFrom[] = "Loads the specified eeschema .net file - the netlist must be an s-expression."; -fgw_error_t pcb_act_LoadeeschemaFrom(int oargc, const char **oargv) +fgw_error_t pcb_act_LoadeeschemaFrom(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *fname = NULL; Index: trunk/src_plugins/io_kicad/read_net.h =================================================================== --- trunk/src_plugins/io_kicad/read_net.h (revision 17464) +++ trunk/src_plugins/io_kicad/read_net.h (revision 17465) @@ -3,5 +3,5 @@ extern const char pcb_acts_LoadeeschemaFrom[]; extern const char pcb_acth_LoadeeschemaFrom[]; -fgw_error_t pcb_act_LoadeeschemaFrom(int oargc, const char **oargv); +fgw_error_t pcb_act_LoadeeschemaFrom(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv); Index: trunk/src_plugins/io_tedax/io_tedax.c =================================================================== --- trunk/src_plugins/io_tedax/io_tedax.c (revision 17464) +++ trunk/src_plugins/io_tedax/io_tedax.c (revision 17465) @@ -64,7 +64,7 @@ static const char pcb_acts_Savetedax[] = "SaveTedax(type, filename)"; static const char pcb_acth_Savetedax[] = "Saves the specific type of data in a tEDAx file. Type can be: board-footprints"; -static fgw_error_t pcb_act_Savetedax(int oargc, const char **oargv) +static fgw_error_t pcb_act_Savetedax(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *fname, *type = argv[0]; @@ -98,7 +98,7 @@ static const char pcb_acts_LoadtedaxFrom[] = "LoadTedaxFrom(type, filename)"; static const char pcb_acth_LoadtedaxFrom[] = "Loads the specified block from a tedax file. Type can be: netlist or footprint."; -static fgw_error_t pcb_act_LoadtedaxFrom(int oargc, const char **oargv) +static fgw_error_t pcb_act_LoadtedaxFrom(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *fname, *type = argv[0]; Index: trunk/src_plugins/jostle/jostle.c =================================================================== --- trunk/src_plugins/jostle/jostle.c (revision 17464) +++ trunk/src_plugins/jostle/jostle.c (revision 17465) @@ -469,7 +469,7 @@ } static const char pcb_acts_jostle[] = "Jostle(diameter)"; -static fgw_error_t pcb_act_jostle(int oargc, const char **oargv) +static fgw_error_t pcb_act_jostle(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; pcb_coord_t x, y; Index: trunk/src_plugins/lib_gtk_common/act_fileio.c =================================================================== --- trunk/src_plugins/lib_gtk_common/act_fileio.c (revision 17464) +++ trunk/src_plugins/lib_gtk_common/act_fileio.c (revision 17465) @@ -58,7 +58,7 @@ return pcb_strdup(getcwd(tmp, sizeof(tmp))); } -fgw_error_t pcb_gtk_act_load(GtkWidget *top_window, int oargc, const char **oargv) +fgw_error_t pcb_gtk_act_load(GtkWidget *top_window, fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *function; @@ -120,7 +120,7 @@ %end-doc */ -fgw_error_t pcb_gtk_act_save(GtkWidget *top_window, int oargc, const char **oargv) +fgw_error_t pcb_gtk_act_save(GtkWidget *top_window, fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *function; @@ -267,7 +267,7 @@ const char pcb_gtk_acts_importgui[] = "ImportGUI()"; const char pcb_gtk_acth_importgui[] = N_("Asks user which schematics to import into PCB.\n"); -fgw_error_t pcb_gtk_act_importgui(GtkWidget *top_window, int oargc, const char **oargv) +fgw_error_t pcb_gtk_act_importgui(GtkWidget *top_window, fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; char *name = NULL; Index: trunk/src_plugins/lib_gtk_common/act_fileio.h =================================================================== --- trunk/src_plugins/lib_gtk_common/act_fileio.h (revision 17464) +++ trunk/src_plugins/lib_gtk_common/act_fileio.h (revision 17465) @@ -2,12 +2,12 @@ #include #include "unit.h" -fgw_error_t pcb_gtk_act_load(GtkWidget *top_window, int oargc, const char **oargv); +fgw_error_t pcb_gtk_act_load(GtkWidget *top_window, fgw_arg_t *ores, int oargc, fgw_arg_t *oargv); extern const char pcb_gtk_acts_save[]; extern const char pcb_gtk_acth_save[]; -fgw_error_t pcb_gtk_act_save(GtkWidget *top_window, int oargc, const char **oargv); +fgw_error_t pcb_gtk_act_save(GtkWidget *top_window, fgw_arg_t *ores, int oargc, fgw_arg_t *oargv); extern const char pcb_gtk_acts_importgui[]; extern const char pcb_gtk_acth_importgui[]; -fgw_error_t pcb_gtk_act_importgui(GtkWidget *top_window, int oargc, const char **oargv); +fgw_error_t pcb_gtk_act_importgui(GtkWidget *top_window, fgw_arg_t *ores, int oargc, fgw_arg_t *oargv); Index: trunk/src_plugins/lib_gtk_common/act_print.c =================================================================== --- trunk/src_plugins/lib_gtk_common/act_print.c (revision 17464) +++ trunk/src_plugins/lib_gtk_common/act_print.c (revision 17465) @@ -43,7 +43,7 @@ const char pcb_gtk_acts_print[] = "Print()"; const char pcb_gtk_acth_print[] = N_("Print the layout."); -fgw_error_t pcb_gtk_act_print(GtkWidget *top_window, int oargc, const char **oargv) +fgw_error_t pcb_gtk_act_print(GtkWidget *top_window, fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; pcb_hid_t **hids; Index: trunk/src_plugins/lib_gtk_common/act_print.h =================================================================== --- trunk/src_plugins/lib_gtk_common/act_print.h (revision 17464) +++ trunk/src_plugins/lib_gtk_common/act_print.h (revision 17465) @@ -3,9 +3,9 @@ extern const char pcb_gtk_acts_print[]; extern const char pcb_gtk_acth_print[]; -fgw_error_t pcb_gtk_act_print(GtkWidget *top_window, int oargc, const char **oargv); +fgw_error_t pcb_gtk_act_print(GtkWidget *top_window, fgw_arg_t *ores, int oargc, fgw_arg_t *oargv); extern const char pcb_gtk_acts_printcalibrate[]; extern const char pcb_gtk_acth_printcalibrate[]; -fgw_error_t pcb_gtk_act_printcalibrate(int oargc, const char **oargv); +fgw_error_t pcb_gtk_act_printcalibrate(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv); Index: trunk/src_plugins/lib_gtk_common/dlg_log.c =================================================================== --- trunk/src_plugins/lib_gtk_common/dlg_log.c (revision 17464) +++ trunk/src_plugins/lib_gtk_common/dlg_log.c (revision 17465) @@ -171,7 +171,7 @@ const char pcb_gtk_acts_logshowonappend[] = "LogShowOnAppend(true|false)"; const char pcb_gtk_acth_logshowonappend[] = "If true, the log window will be shown whenever something is appended to it. If false, the log will still be updated, but the window won't be shown."; -fgw_error_t pcb_gtk_act_logshowonappend(int oargc, const char **oargv) +fgw_error_t pcb_gtk_act_logshowonappend(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *a = argc == 1 ? argv[0] : ""; Index: trunk/src_plugins/lib_gtk_common/dlg_log.h =================================================================== --- trunk/src_plugins/lib_gtk_common/dlg_log.h (revision 17464) +++ trunk/src_plugins/lib_gtk_common/dlg_log.h (revision 17465) @@ -15,6 +15,6 @@ /* Actions */ extern const char pcb_gtk_acts_logshowonappend[]; extern const char pcb_gtk_acth_logshowonappend[]; -fgw_error_t pcb_gtk_act_logshowonappend(int oargc, const char **oargv); +fgw_error_t pcb_gtk_act_logshowonappend(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv); #endif /* PCB_GTK_DLG_LOG_H */ Index: trunk/src_plugins/lib_gtk_common/dlg_netlist.c =================================================================== --- trunk/src_plugins/lib_gtk_common/dlg_netlist.c (revision 17464) +++ trunk/src_plugins/lib_gtk_common/dlg_netlist.c (revision 17465) @@ -915,7 +915,7 @@ const char pcb_gtk_acts_netlistshow[] = "NetlistShow(pinname|netname)"; const char pcb_gtk_acth_netlistshow[] = "Selects the given pinname or netname in the netlist window. Does not show the window if it isn't already shown."; -fgw_error_t pcb_gtk_act_netlistshow(pcb_gtk_common_t *com, int oargc, const char **oargv) +fgw_error_t pcb_gtk_act_netlistshow(pcb_gtk_common_t *com, fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; ghid_netlist_window_create(com); @@ -927,7 +927,7 @@ const char pcb_gtk_acts_netlistpresent[] = "NetlistPresent()"; const char pcb_gtk_acth_netlistpresent[] = "Presents the netlist window."; -fgw_error_t pcb_gtk_act_netlistpresent(pcb_gtk_common_t *com, int oargc, const char **oargv) +fgw_error_t pcb_gtk_act_netlistpresent(pcb_gtk_common_t *com, fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; pcb_gtk_dlg_netlist_show(com, TRUE); Index: trunk/src_plugins/lib_gtk_common/dlg_netlist.h =================================================================== --- trunk/src_plugins/lib_gtk_common/dlg_netlist.h (revision 17464) +++ trunk/src_plugins/lib_gtk_common/dlg_netlist.h (revision 17465) @@ -19,10 +19,10 @@ /* Actions */ extern const char pcb_gtk_acts_netlistshow[]; extern const char pcb_gtk_acth_netlistshow[]; -fgw_error_t pcb_gtk_act_netlistshow(pcb_gtk_common_t *com, int oargc, const char **oargv); +fgw_error_t pcb_gtk_act_netlistshow(pcb_gtk_common_t *com, fgw_arg_t *ores, int oargc, fgw_arg_t *oargv); extern const char pcb_gtk_acts_netlistpresent[]; extern const char pcb_gtk_acth_netlistpresent[]; -fgw_error_t pcb_gtk_act_netlistpresent(pcb_gtk_common_t *com, int oargc, const char **oargv); +fgw_error_t pcb_gtk_act_netlistpresent(pcb_gtk_common_t *com, fgw_arg_t *ores, int oargc, fgw_arg_t *oargv); #endif /* PCB_GTK_DLG_NETLIST_H */ Index: trunk/src_plugins/lib_gtk_common/ui_zoompan.c =================================================================== --- trunk/src_plugins/lib_gtk_common/ui_zoompan.c (revision 17464) +++ trunk/src_plugins/lib_gtk_common/ui_zoompan.c (revision 17465) @@ -364,7 +364,7 @@ %end-doc */ -fgw_error_t pcb_gtk_act_center(pcb_gtk_view_t *vw, int oargc, const char **oargv, pcb_coord_t pcb_x, pcb_coord_t pcb_y, int offset_x, int offset_y, int *out_pointer_x, int *out_pointer_y) +fgw_error_t pcb_gtk_act_center(pcb_gtk_view_t *vw, fgw_arg_t *ores, int oargc, fgw_arg_t *oargv, pcb_coord_t pcb_x, pcb_coord_t pcb_y, int offset_x, int offset_y, int *out_pointer_x, int *out_pointer_y) { PCB_OLD_ACT_BEGIN; int widget_x, widget_y; @@ -499,7 +499,7 @@ %end-doc */ -fgw_error_t pcb_gtk_act_scroll(pcb_gtk_view_t *vw, int oargc, const char **oargv) +fgw_error_t pcb_gtk_act_scroll(pcb_gtk_view_t *vw, fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; gdouble dx = 0.0, dy = 0.0; @@ -539,7 +539,7 @@ %end-doc */ -fgw_error_t pcb_gtk_act_pan(pcb_gtk_view_t *vw, int oargc, const char **oargv) +fgw_error_t pcb_gtk_act_pan(pcb_gtk_view_t *vw, fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; int mode; Index: trunk/src_plugins/lib_gtk_common/ui_zoompan.h =================================================================== --- trunk/src_plugins/lib_gtk_common/ui_zoompan.h (revision 17464) +++ trunk/src_plugins/lib_gtk_common/ui_zoompan.h (revision 17465) @@ -97,7 +97,7 @@ extern const char pcb_acts_center[]; extern const char pcb_acth_center[]; -fgw_error_t pcb_gtk_act_center(pcb_gtk_view_t *vw, int oargc, const char **oargv, pcb_coord_t pcb_x, pcb_coord_t pcb_y, int offset_x, int offset_y, int *out_pointer_x, int *out_pointer_y); +fgw_error_t pcb_gtk_act_center(pcb_gtk_view_t *vw, fgw_arg_t *ores, int oargc, fgw_arg_t *oargv, pcb_coord_t pcb_x, pcb_coord_t pcb_y, int offset_x, int offset_y, int *out_pointer_x, int *out_pointer_y); extern const char pcb_acts_swapsides[]; extern const char pcb_acth_swapsides[]; @@ -105,11 +105,11 @@ extern const char pcb_acts_scroll[]; extern const char pcb_acth_scroll[]; -fgw_error_t pcb_gtk_act_scroll(pcb_gtk_view_t *vw, int oargc, const char **oargv); +fgw_error_t pcb_gtk_act_scroll(pcb_gtk_view_t *vw, fgw_arg_t *ores, int oargc, fgw_arg_t *oargv); extern const char pcb_acts_pan[]; extern const char pcb_acth_pan[]; -fgw_error_t pcb_gtk_act_pan(pcb_gtk_view_t *vw, int oargc, const char **oargv); +fgw_error_t pcb_gtk_act_pan(pcb_gtk_view_t *vw, fgw_arg_t *ores, int oargc, fgw_arg_t *oargv); void pcb_gtk_get_coords(pcb_gtk_mouse_t *mouse, pcb_gtk_view_t *vw, const char *msg, pcb_coord_t * x, pcb_coord_t * y); Index: trunk/src_plugins/lib_gtk_hid/actions.c =================================================================== --- trunk/src_plugins/lib_gtk_hid/actions.c (revision 17464) +++ trunk/src_plugins/lib_gtk_hid/actions.c (revision 17465) @@ -70,15 +70,13 @@ %end-doc */ -static fgw_error_t pcb_act_AdjustStyle(int oargc, const char **oargv) +static fgw_error_t pcb_act_AdjustStyle(fgw_arg_t *res, int argc, fgw_arg_t *argv) { - PCB_OLD_ACT_BEGIN; - if (argc > 1) + if (argc > 2) PCB_ACT_FAIL(AdjustStyle); - pcb_gtk_route_style_edit_dialog(&ghidgui->common, GHID_ROUTE_STYLE(ghidgui->topwin.route_style_selector)); + pcb_gtk_route_style_edit_dialog(&ghidgui->common, GHID_ROUTE_STYLE(ghidgui->topwin.route_style_selector)); return 0; - PCB_OLD_ACT_END; } /* ------------------------------------------------------------ */ @@ -85,7 +83,7 @@ static const char pcb_acts_fontsel[] = "FontSel()\n"; static const char pcb_acth_fontsel[] = "Select the font to draw new text with."; -static fgw_error_t pcb_act_fontsel(int oargc, const char **oargv) +static fgw_error_t pcb_act_fontsel(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; if (argc > 1) @@ -113,7 +111,7 @@ /* ---------------------------------------------------------------------- */ -static fgw_error_t pcb_act_Command(int oargc, const char **oargv) +static fgw_error_t pcb_act_Command(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; ghid_handle_user_command(&ghidgui->topwin.cmd, TRUE); @@ -123,14 +121,14 @@ /* ------------------------------------------------------------ */ -fgw_error_t pcb_gtk_act_print_(int oargc, const char **oargv) +fgw_error_t pcb_gtk_act_print_(fgw_arg_t *res, int argc, fgw_arg_t *argv) { - return pcb_gtk_act_print(gport->top_window, oargc, oargv); + return pcb_gtk_act_print(gport->top_window, res, argc, argv); } /* ------------------------------------------------------------ */ -static fgw_error_t pcb_act_ExportGUI(int oargc, const char **oargv) +static fgw_error_t pcb_act_ExportGUI(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; /* check if layout is empty */ @@ -146,7 +144,7 @@ /* ------------------------------------------------------------ */ -static fgw_error_t pcb_act_Benchmark(int oargc, const char **oargv) +static fgw_error_t pcb_act_Benchmark(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; int i = 0; @@ -218,7 +216,7 @@ %end-doc */ -static fgw_error_t pcb_act_DoWindows(int oargc, const char **oargv) +static fgw_error_t pcb_act_DoWindows(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *a = argc >= 1 ? argv[0] : ""; @@ -275,7 +273,7 @@ in the popups subtree in the menu lht file. %end-doc */ -static fgw_error_t pcb_act_Popup(int oargc, const char **oargv) +static fgw_error_t pcb_act_Popup(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; GtkWidget *menu = NULL; @@ -347,7 +345,7 @@ static const char pcb_acth_SaveWinGeo[] = N_("Saves window geometry in the config.\n"); -static fgw_error_t pcb_act_SaveWinGeo(int oargc, const char **oargv) +static fgw_error_t pcb_act_SaveWinGeo(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; ghid_wgeo_save(1, 0); @@ -357,7 +355,7 @@ /* ------------------------------------------------------------ */ -static fgw_error_t pcb_act_Zoom(int oargc, const char **oargv) +static fgw_error_t pcb_act_Zoom(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; return pcb_gtk_zoom(&gport->view, argc, argv); @@ -364,9 +362,9 @@ PCB_OLD_ACT_END; } -static fgw_error_t pcb_act_Center(int oargc, const char **oargv) +static fgw_error_t pcb_act_Center(fgw_arg_t *res, int argc, fgw_arg_t *argv) { - PCB_OLD_ACT_BEGIN; + fgw_error_t e; pcb_coord_t x, y; int offset_x, offset_y, pointer_x, pointer_y; GdkDisplay *display = gdk_display_get_default(); @@ -375,13 +373,12 @@ pcb_hid_get_coords("Click to center", &x, &y); gdk_window_get_origin(gtk_widget_get_window(gport->drawing_area), &offset_x, &offset_y); - pcb_gtk_act_center(&gport->view, argc, argv, x, y, offset_x, offset_y, &pointer_x, &pointer_y); + e = pcb_gtk_act_center(&gport->view, res, argc, argv, x, y, offset_x, offset_y, &pointer_x, &pointer_y); gdk_display_warp_pointer(display, screen, pointer_x, pointer_y); - return 0; - PCB_OLD_ACT_END; + return e; } -static fgw_error_t pcb_act_SwapSides(int oargc, const char **oargv) +static fgw_error_t pcb_act_SwapSides(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; int res, oa; @@ -397,46 +394,46 @@ PCB_OLD_ACT_END; } -static fgw_error_t pcb_act_Scroll(int oargc, const char **oargv) +static fgw_error_t pcb_act_Scroll(fgw_arg_t *res, int argc, fgw_arg_t *argv) { if (ghidgui == NULL) return 0; - return pcb_gtk_act_scroll(&gport->view, oargc, oargv); + return pcb_gtk_act_scroll(&gport->view, res, argc, argv); } -static fgw_error_t pcb_act_Pan(int oargc, const char **oargv) +static fgw_error_t pcb_act_Pan(fgw_arg_t *res, int argc, fgw_arg_t *argv) { if (ghidgui == NULL) return 0; - return pcb_gtk_act_pan(&gport->view, oargc, oargv); + return pcb_gtk_act_pan(&gport->view, res, argc, argv); } -static fgw_error_t pcb_act_NetlistShow(int oargc, const char **oargv) +static fgw_error_t pcb_act_NetlistShow(fgw_arg_t *res, int argc, fgw_arg_t *argv) { - return pcb_gtk_act_netlistshow(&ghidgui->common, oargc, oargv); + return pcb_gtk_act_netlistshow(&ghidgui->common, res, argc, argv); } -static fgw_error_t pcb_act_NetlistPresent(int oargc, const char **oargv) +static fgw_error_t pcb_act_NetlistPresent(fgw_arg_t *res, int argc, fgw_arg_t *argv) { - return pcb_gtk_act_netlistpresent(&ghidgui->common, oargc, oargv); + return pcb_gtk_act_netlistpresent(&ghidgui->common, res, argc, argv); } -static fgw_error_t pcb_act_load(int oargc, const char **oargv) +static fgw_error_t pcb_act_load(fgw_arg_t *res, int argc, fgw_arg_t *argv) { - return pcb_gtk_act_load(ghid_port.top_window, oargc, oargv); + return pcb_gtk_act_load(ghid_port.top_window, res, argc, argv); } -static fgw_error_t pcb_act_save(int oargc, const char **oargv) +static fgw_error_t pcb_act_save(fgw_arg_t *res, int argc, fgw_arg_t *argv) { - return pcb_gtk_act_save(ghid_port.top_window, oargc, oargv); + return pcb_gtk_act_save(ghid_port.top_window, res, argc, argv); } -static fgw_error_t pcb_act_importgui(int oargc, const char **oargv) +static fgw_error_t pcb_act_importgui(fgw_arg_t *res, int argc, fgw_arg_t *argv) { - return pcb_gtk_act_importgui(ghid_port.top_window, oargc, oargv); + return pcb_gtk_act_importgui(ghid_port.top_window, res, argc, argv); } /* ------------------------------------------------------------ @@ -458,7 +455,7 @@ %end-doc */ -static fgw_error_t pcb_act_About(int oargc, const char **oargv) +static fgw_error_t pcb_act_About(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; pcb_gtk_dlg_about(gport->top_window); @@ -476,12 +473,9 @@ %end-doc */ -static fgw_error_t pcb_act_EditLayerGroups(int oargc, const char **oargv) +static fgw_error_t pcb_act_EditLayerGroups(fgw_arg_t *res, int argc, fgw_arg_t *argv) { - PCB_OLD_ACT_BEGIN; - const char *args[] = {"Preferences", "1", "User PoV/Layers"}; - return pcb_act_DoWindows(sizeof(args)/sizeof(args[0]), args); - PCB_OLD_ACT_END; + return fgw_vcall(&pcb_fgw, res, "DoWindows", FGW_STR, "Preferences", FGW_STR, "1", FGW_STR, "User PoV/Layers", 0); } /* ------------------------------------------------------------ */ Index: trunk/src_plugins/lib_polyhelp/polyhelp.c =================================================================== --- trunk/src_plugins/lib_polyhelp/polyhelp.c (revision 17464) +++ trunk/src_plugins/lib_polyhelp/polyhelp.c (revision 17465) @@ -363,7 +363,7 @@ static const char pcb_acts_PolyHatch[] = "PolyHatch([spacing], [hvcp])\nPolyHatch(interactive)\n"; static const char pcb_acth_PolyHatch[] = "hatch the selected polygon(s) with lines of the current style; lines are drawn on the current layer; flags are h:horizontal, v:vertical, c:contour, p:poly"; -static fgw_error_t pcb_act_PolyHatch(int oargc, const char **oargv) +static fgw_error_t pcb_act_PolyHatch(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; pcb_coord_t period = 0; @@ -470,7 +470,7 @@ static const char pcb_acts_PolyOffs[] = "PolyOffs(offset)\n"; static const char pcb_acth_PolyOffs[] = "replicate the outer contour of the selected polygon(s) with growing or shrinking them by offset; the new polygon is drawn on the current layer"; -static fgw_error_t pcb_act_PolyOffs(int oargc, const char **oargv) +static fgw_error_t pcb_act_PolyOffs(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; pcb_coord_t offs; Index: trunk/src_plugins/lib_polyhelp/topoly.c =================================================================== --- trunk/src_plugins/lib_polyhelp/topoly.c (revision 17464) +++ trunk/src_plugins/lib_polyhelp/topoly.c (revision 17465) @@ -316,7 +316,7 @@ const char pcb_acts_topoly[] = "ToPoly()\nToPoly(outline)\n"; const char pcb_acth_topoly[] = "convert a closed loop of lines and arcs into a polygon"; -fgw_error_t pcb_act_topoly(int oargc, const char **oargv) +fgw_error_t pcb_act_topoly(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; void *r1, *r2, *r3; Index: trunk/src_plugins/lib_polyhelp/topoly.h =================================================================== --- trunk/src_plugins/lib_polyhelp/topoly.h (revision 17464) +++ trunk/src_plugins/lib_polyhelp/topoly.h (revision 17465) @@ -46,6 +46,6 @@ extern const char pcb_acts_topoly[]; extern const char pcb_acth_topoly[]; -fgw_error_t pcb_act_topoly(int oargc, const char **oargv); +fgw_error_t pcb_act_topoly(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv); #endif Index: trunk/src_plugins/millpath/millpath.c =================================================================== --- trunk/src_plugins/millpath/millpath.c (revision 17464) +++ trunk/src_plugins/millpath/millpath.c (revision 17465) @@ -45,7 +45,7 @@ static const char pcb_acts_mill[] = "mill()"; static const char pcb_acth_mill[] = "Calculate toolpath for milling away copper"; -fgw_error_t pcb_act_mill(int oargc, const char **oargv) +fgw_error_t pcb_act_mill(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; ctx.edge_clearance = PCB_MM_TO_COORD(0.05); Index: trunk/src_plugins/oldactions/oldactions.c =================================================================== --- trunk/src_plugins/oldactions/oldactions.c (revision 17464) +++ trunk/src_plugins/oldactions/oldactions.c (revision 17465) @@ -115,7 +115,7 @@ } -static fgw_error_t pcb_act_DumpLibrary(int oargc, const char **oargv) +static fgw_error_t pcb_act_DumpLibrary(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; dump_lib_any(0, &pcb_library); @@ -132,7 +132,7 @@ static const char pcb_acth_Bell[] = "Attempt to produce audible notification (e.g. beep the speaker)."; -static fgw_error_t pcb_act_Bell(int oargc, const char **oargv) +static fgw_error_t pcb_act_Bell(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; pcb_gui->beep(); @@ -165,7 +165,7 @@ %end-doc */ -static fgw_error_t pcb_act_Debug(int oargc, const char **oargv) +static fgw_error_t pcb_act_Debug(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; pcb_coord_t x, y; @@ -190,7 +190,7 @@ %end-doc */ -static fgw_error_t pcb_act_Return(int oargc, const char **oargv) +static fgw_error_t pcb_act_Return(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; return atoi(argv[0]); @@ -216,7 +216,7 @@ -fgw_error_t pcb_act_djopt_set_auto_only(int oargc, const char **oargv) +fgw_error_t pcb_act_djopt_set_auto_only(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; conf_toggle(CFR_DESIGN, "plugins/djopt/auto_only"); @@ -244,7 +244,7 @@ %end-doc */ -fgw_error_t pcb_act_ToggleVendor(int oargc, const char **oargv) +fgw_error_t pcb_act_ToggleVendor(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; conf_toggle(CFR_DESIGN, "plugins/vendor/enable"); @@ -272,7 +272,7 @@ %end-doc */ -fgw_error_t pcb_act_EnableVendor(int oargc, const char **oargv) +fgw_error_t pcb_act_EnableVendor(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; conf_set(CFR_DESIGN, "plugins/vendor/enable", -1, "1", POL_OVERWRITE); @@ -298,7 +298,7 @@ %end-doc */ -fgw_error_t pcb_act_DisableVendor(int oargc, const char **oargv) +fgw_error_t pcb_act_DisableVendor(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; conf_set(CFR_DESIGN, "plugins/vendor/enable", -1, "0", POL_OVERWRITE); @@ -306,7 +306,7 @@ PCB_OLD_ACT_END; } -fgw_error_t pcb_act_ListRotations(int oargc, const char **oargv) +fgw_error_t pcb_act_ListRotations(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; PCB_SUBC_LOOP(PCB->Data); Index: trunk/src_plugins/polycombine/polycombine.c =================================================================== --- trunk/src_plugins/polycombine/polycombine.c (revision 17464) +++ trunk/src_plugins/polycombine/polycombine.c (revision 17465) @@ -264,7 +264,7 @@ return accumulate; } -static fgw_error_t pcb_act_polycombine(int oargc, const char **oargv) +static fgw_error_t pcb_act_polycombine(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; pcb_polyarea_t *res; Index: trunk/src_plugins/polystitch/polystitch.c =================================================================== --- trunk/src_plugins/polystitch/polystitch.c (revision 17464) +++ trunk/src_plugins/polystitch/polystitch.c (revision 17465) @@ -89,7 +89,7 @@ } -static fgw_error_t pcb_act_polystitch(int oargc, const char **oargv) +static fgw_error_t pcb_act_polystitch(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; pcb_coord_t x, y; Index: trunk/src_plugins/propedit/propedit.c =================================================================== --- trunk/src_plugins/propedit/propedit.c (revision 17464) +++ trunk/src_plugins/propedit/propedit.c (revision 17465) @@ -41,7 +41,7 @@ static const char pcb_acts_propedit[] = "propedit()"; static const char pcb_acth_propedit[] = "Run the property editor"; -fgw_error_t pcb_act_propedit(int oargc, const char **oargv) +fgw_error_t pcb_act_propedit(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; pe_ctx_t ctx; @@ -122,7 +122,7 @@ static const char pcb_acts_propset[] = "propset(name, value)"; static const char pcb_acth_propset[] = "Change the named property of all selected objects to/by value"; -fgw_error_t pcb_act_propset(int oargc, const char **oargv) +fgw_error_t pcb_act_propset(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; int res; Index: trunk/src_plugins/puller/puller.c =================================================================== --- trunk/src_plugins/puller/puller.c (revision 17464) +++ trunk/src_plugins/puller/puller.c (revision 17465) @@ -355,7 +355,7 @@ %end-doc */ -static fgw_error_t pcb_act_Puller(int oargc, const char **oargv) +static fgw_error_t pcb_act_Puller(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; pcb_coord_t Ux, Uy; @@ -2078,7 +2078,7 @@ } #endif -static fgw_error_t pcb_act_GlobalPuller(int oargc, const char **oargv) +static fgw_error_t pcb_act_GlobalPuller(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; int select_flags = 0; Index: trunk/src_plugins/query/query_act.c =================================================================== --- trunk/src_plugins/query/query_act.c (revision 17464) +++ trunk/src_plugins/query/query_act.c (revision 17465) @@ -117,7 +117,7 @@ return pcb_qry_run(prg, cb, user_ctx); } -static fgw_error_t pcb_act_query(int oargc, const char **oargv) +static fgw_error_t pcb_act_query(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *cmd = argc > 0 ? argv[0] : 0; Index: trunk/src_plugins/renumber/renumber.c =================================================================== --- trunk/src_plugins/renumber/renumber.c (revision 17464) +++ trunk/src_plugins/renumber/renumber.c (revision 17465) @@ -70,7 +70,7 @@ return s; } -static fgw_error_t pcb_act_Renumber(int oargc, const char **oargv) +static fgw_error_t pcb_act_Renumber(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; pcb_bool changed = pcb_false; @@ -365,8 +365,8 @@ PCB_OLD_ACT_END; } -fgw_error_t pcb_act_RenumberBlock(int oargc, const char **oargv); -fgw_error_t pcb_act_RenumberBuffer(int oargc, const char **oargv); +fgw_error_t pcb_act_RenumberBlock(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv); +fgw_error_t pcb_act_RenumberBuffer(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv); static const char *renumber_cookie = "renumber plugin"; Index: trunk/src_plugins/renumber/renumberblock.c =================================================================== --- trunk/src_plugins/renumber/renumberblock.c (revision 17464) +++ trunk/src_plugins/renumber/renumberblock.c (revision 17465) @@ -34,7 +34,7 @@ #include "change.h" #include "conf_core.h" -fgw_error_t pcb_act_RenumberBlock(int oargc, const char **oargv) +fgw_error_t pcb_act_RenumberBlock(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; char num_buf[15]; @@ -81,7 +81,7 @@ PCB_OLD_ACT_END; } -fgw_error_t pcb_act_RenumberBuffer(int oargc, const char **oargv) +fgw_error_t pcb_act_RenumberBuffer(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; char num_buf[15]; Index: trunk/src_plugins/report/report.c =================================================================== --- trunk/src_plugins/report/report.c (revision 17464) +++ trunk/src_plugins/report/report.c (revision 17465) @@ -145,7 +145,7 @@ return grp->name; } -static fgw_error_t pcb_act_report_dialog(int oargc, const char **oargv) +static fgw_error_t pcb_act_report_dialog(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; void *ptr1, *ptr2, *ptr3; @@ -792,7 +792,7 @@ %end-doc */ -static fgw_error_t pcb_act_report(int oargc, const char **oargv) +static fgw_error_t pcb_act_report(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; pcb_coord_t x, y; @@ -800,11 +800,11 @@ AUSAGE(report); else if (pcb_strcasecmp(argv[0], "Object") == 0) { pcb_hid_get_coords("Click on an object", &x, &y); - return pcb_act_report_dialog(argc, argv); + return pcb_act_report_dialog(ores, oargc, oargv); } else if (pcb_strncasecmp(argv[0], "Subc", 4) == 0) { pcb_hid_get_coords("Click on a subcircuit", &x, &y); - return pcb_act_report_dialog(argc, argv); + return pcb_act_report_dialog(ores, oargc, oargv); } pcb_hid_get_coords("Click on object to report on", &x, &y); Index: trunk/src_plugins/shand_cmd/command.c =================================================================== --- trunk/src_plugins/shand_cmd/command.c (revision 17464) +++ trunk/src_plugins/shand_cmd/command.c (revision 17465) @@ -78,7 +78,7 @@ %end-doc */ -static fgw_error_t pcb_act_Help(int oargc, const char **oargv) +static fgw_error_t pcb_act_Help(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; pcb_message(PCB_MSG_INFO, "following commands are supported:\n" @@ -114,7 +114,7 @@ %end-doc */ -static fgw_error_t pcb_act_LoadLayout(int oargc, const char **oargv) +static fgw_error_t pcb_act_LoadLayout(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *filename, *format = NULL; @@ -152,7 +152,7 @@ %end-doc */ -static fgw_error_t pcb_act_LoadElementToBuffer(int oargc, const char **oargv) +static fgw_error_t pcb_act_LoadElementToBuffer(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *filename; @@ -188,7 +188,7 @@ %end-doc */ -static fgw_error_t pcb_act_LoadLayoutToBuffer(int oargc, const char **oargv) +static fgw_error_t pcb_act_LoadLayoutToBuffer(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *filename, *format = NULL; @@ -225,7 +225,7 @@ %end-doc */ -static fgw_error_t pcb_act_Quit(int oargc, const char **oargv) +static fgw_error_t pcb_act_Quit(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; if (!PCB->Changed || pcb_gui->close_confirm_dialog() == HID_CLOSE_CONFIRM_OK) @@ -247,7 +247,7 @@ %end-doc */ -static fgw_error_t pcb_act_ReallyQuit(int oargc, const char **oargv) +static fgw_error_t pcb_act_ReallyQuit(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; pcb_quit_app(); @@ -275,7 +275,7 @@ %end-doc */ -static fgw_error_t pcb_act_LoadNetlist(int oargc, const char **oargv) +static fgw_error_t pcb_act_LoadNetlist(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *filename; @@ -323,7 +323,7 @@ %end-doc */ -static fgw_error_t pcb_act_SaveLayout(int oargc, const char **oargv) +static fgw_error_t pcb_act_SaveLayout(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; switch (argc) { @@ -369,13 +369,11 @@ %end-doc */ -static fgw_error_t pcb_act_SaveLayoutAndQuit(int oargc, const char **oargv) +static fgw_error_t pcb_act_SaveLayoutAndQuit(fgw_arg_t *res, int argc, fgw_arg_t *argv) { - PCB_OLD_ACT_BEGIN; - if (!pcb_act_SaveLayout(argc, argv)) - return pcb_act_Quit(0, 0); + if (!pcb_act_SaveLayout(res, argc, argv)) + return pcb_act_Quit(res, argc, argv); return 1; - PCB_OLD_ACT_END; } /* --------------------------------------------------------------------------- */ Index: trunk/src_plugins/shape/shape.c =================================================================== --- trunk/src_plugins/shape/shape.c (revision 17464) +++ trunk/src_plugins/shape/shape.c (revision 17465) @@ -315,7 +315,7 @@ static const char pcb_acts_regpoly[] = "regpoly([where,] corners, radius [,rotation])"; static const char pcb_acth_regpoly[] = "Generate regular polygon. Where is x;y and radius is either r or rx;ry. Rotation is in degrees."; -fgw_error_t pcb_act_regpoly(int oargc, const char **oargv) +fgw_error_t pcb_act_regpoly(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; double rot = 0; @@ -374,7 +374,7 @@ static const char pcb_acts_roundrect[] = "roundrect([where,] width[;height] [,rx[;ry] [,rotation]])"; static const char pcb_acth_roundrect[] = "Generate a rectangle with round corners"; -fgw_error_t pcb_act_roundrect(int oargc, const char **oargv) +fgw_error_t pcb_act_roundrect(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; int a; @@ -437,7 +437,7 @@ static const char pcb_acts_circle[] = "circle([where,] diameter)"; static const char pcb_acth_circle[] = "Generate a filled circle (zero length round cap line)"; -fgw_error_t pcb_act_circle(int oargc, const char **oargv) +fgw_error_t pcb_act_circle(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; int a; Index: trunk/src_plugins/shape/shape_dialog.c =================================================================== --- trunk/src_plugins/shape/shape_dialog.c (revision 17464) +++ trunk/src_plugins/shape/shape_dialog.c (revision 17465) @@ -354,7 +354,7 @@ static const char pcb_acts_shape[] = "shape()"; static const char pcb_acth_shape[] = "Interactive shape generator."; -fgw_error_t pcb_act_shape(int oargc, const char **oargv) +fgw_error_t pcb_act_shape(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; pcb_shape_dialog(PCB, PCB_PASTEBUFFER->Data, pcb_shape_current_layer, pcb_false); Index: trunk/src_plugins/sketch_route/sketch_route.c =================================================================== --- trunk/src_plugins/sketch_route/sketch_route.c (revision 17464) +++ trunk/src_plugins/sketch_route/sketch_route.c (revision 17465) @@ -35,7 +35,7 @@ static const char pcb_acts_skroute[] = "skroute(TODO)"; static const char pcb_acth_skroute[] = "TODO"; -fgw_error_t pcb_act_skroute(int oargc, const char **oargv) +fgw_error_t pcb_act_skroute(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; return 0; Index: trunk/src_plugins/smartdisperse/smartdisperse.c =================================================================== --- trunk/src_plugins/smartdisperse/smartdisperse.c (revision 17464) +++ trunk/src_plugins/smartdisperse/smartdisperse.c (revision 17465) @@ -117,7 +117,7 @@ #define set_visited(obj) htpi_set(&visited, ((void *)(obj)), 1) #define is_visited(obj) htpi_has(&visited, ((void *)(obj))) -static fgw_error_t pcb_act_smartdisperse(int oargc, const char **oargv) +static fgw_error_t pcb_act_smartdisperse(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *function = ARG(0); Index: trunk/src_plugins/stroke/stroke.c =================================================================== --- trunk/src_plugins/stroke/stroke.c (revision 17464) +++ trunk/src_plugins/stroke/stroke.c (revision 17465) @@ -99,7 +99,7 @@ static const char pcb_acts_stroke[] = "stroke(gesture, seq)"; static const char pcb_acth_stroke[] = "Various gesture recognition related functions"; -static fgw_error_t pcb_act_stroke(int oargc, const char **oargv) +static fgw_error_t pcb_act_stroke(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; if (argc < 1) Index: trunk/src_plugins/teardrops/teardrops.c =================================================================== --- trunk/src_plugins/teardrops/teardrops.c (revision 17464) +++ trunk/src_plugins/teardrops/teardrops.c (revision 17465) @@ -248,7 +248,7 @@ } } -static fgw_error_t pcb_act_teardrops(int oargc, const char **oargv) +static fgw_error_t pcb_act_teardrops(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; pcb_box_t *b; Index: trunk/src_plugins/vendordrill/vendor.c =================================================================== --- trunk/src_plugins/vendordrill/vendor.c (revision 17464) +++ trunk/src_plugins/vendordrill/vendor.c (revision 17465) @@ -121,7 +121,7 @@ sizes for your vendor. %end-doc */ -fgw_error_t pcb_act_ApplyVendor(int oargc, const char **oargv) +fgw_error_t pcb_act_ApplyVendor(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; pcb_event(PCB_EVENT_BUSY, NULL); @@ -144,7 +144,7 @@ %end-doc */ -fgw_error_t pcb_act_UnloadVendor(int oargc, const char **oargv) +fgw_error_t pcb_act_UnloadVendor(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; cached_drill = -1; @@ -174,7 +174,7 @@ %end-doc */ -fgw_error_t pcb_act_LoadVendorFrom(int oargc, const char **oargv) +fgw_error_t pcb_act_LoadVendorFrom(fgw_arg_t *ores, int oargc, fgw_arg_t *oargv) { PCB_OLD_ACT_BEGIN; const char *fname = NULL;