/** *** ParseBoxSize() *** Parses the options possible to BoxSize **/ static void ParseBoxSize(char **ss, unsigned long *flags) { char *opts[] = { "dumb", "fixed", "smart", NULL }; char *s = *ss; int m; if (!s) return; *ss = GetNextTokenIndex(*ss, opts, 0, &m); switch(m) { case 0: *flags &= ~(b_SizeFixed|b_SizeSmart); break; case 1: *flags |= b_SizeFixed; *flags &= ~b_SizeSmart; break; case 2: *flags |= b_SizeSmart; *flags &= ~b_SizeFixed; break; default: *flags &= ~(b_SizeFixed|b_SizeSmart); fprintf(stderr,"%s: Illegal boxsize option \"%s\"\n",MyName, s); break; } return; }
/** *** ParseBoxSize() *** Parses the options possible to BoxSize **/ static void ParseBoxSize(char **ss, flags_type *flags) { char *opts[] = { "dumb", "fixed", "smart", NULL }; char *s = *ss; int m; if (!s) { return; } *ss = GetNextTokenIndex(*ss, opts, 0, &m); switch (m) { case 0: flags->b_SizeFixed = 0; flags->b_SizeSmart = 0; break; case 1: flags->b_SizeFixed = 1; flags->b_SizeSmart = 0; break; case 2: flags->b_SizeSmart = 1; flags->b_SizeFixed = 0; break; default: flags->b_SizeFixed = 0; flags->b_SizeSmart = 0; fprintf(stderr, "%s: Illegal boxsize option \"%s\"\n", MyName, s); break; } return; }
static void parse_menu_action( struct MenuRoot *mr, const char *action, menu_shortcut_action *saction, int *items_to_move, int *do_skip_section, char **ret_cmd) { char *optlist[] = { "MenuClose", "MenuEnterContinuation", "MenuEnterSubmenu", "MenuLeaveSubmenu", "MenuMoveCursor", "MenuCursorLeft", "MenuCursorRight", "MenuSelectItem", "MenuScroll", "MenuTearOff", "MenuCloseAndExec", NULL }; int index; char *options; int num; int suffix[2]; int count[2]; *ret_cmd = NULL; options = GetNextTokenIndex((char *)action, optlist, 0, &index); switch (index) { case 0: /* MenuClose */ *saction = SA_ABORT; break; case 1: /* MenuEnterContinuation */ *saction = (MR_CONTINUATION_MENU(mr) != NULL) ? SA_CONTINUE : SA_ENTER; break; case 2: /* MenuEnterSubmenu */ *saction = SA_ENTER; break; case 3: /* MenuLeaveSubmenu */ *saction = SA_LEAVE; break; case 4: /* MenuMoveCursor */ num = GetSuffixedIntegerArguments(options, NULL, count, 2, "s", suffix); if (num == 2) { if (suffix[0] != 0 || count[0] != 0) { mvwm_msg(ERR, "parse_menu_action", "invalid MenuMoveCursor arguments " "'%s'", options); *saction = SA_NONE; break; } if (count[1] < 0) { *saction = SA_LAST; *items_to_move = 1 + count[1]; } else { *saction = SA_FIRST; *items_to_move = count[1]; } if (suffix[1] == 1) { *do_skip_section = 1; } } else if (num == 1) { *saction = SA_MOVE_ITEMS; *items_to_move = count[0]; if (suffix[0] == 1) { *do_skip_section = 1; } } else { mvwm_msg(ERR, "parse_menu_action", "invalid MenuMoveCursor arguments '%s'", options); *saction = SA_NONE; break; } break; case 5: /* MenuCursorLeft */ *saction = (MST_USE_LEFT_SUBMENUS(mr)) ? SA_ENTER : SA_LEAVE; break; case 6: /* MenuCursorRight */ *saction = (MST_USE_LEFT_SUBMENUS(mr)) ? SA_LEAVE : SA_ENTER; break; case 7: /* MenuSelectItem */ *saction = SA_SELECT; break; case 8: /* MenuScroll */ if (MST_MOUSE_WHEEL(mr) == MMW_OFF) { *saction = SA_SELECT; } else { num = GetSuffixedIntegerArguments(options, NULL, count, 1, "s", suffix); if (num == 1) { *saction = SA_SCROLL; *items_to_move = count[0]; if (suffix[0] == 1) { *do_skip_section = 1; } } else { mvwm_msg(ERR, "parse_menu_action", "invalid MenuScroll arguments '%s'", options); *saction = SA_NONE; break; } } break; case 9: /* MenuTearOff */ *saction = SA_TEAROFF; break; case 10: /* MenuCloseAndExecute */ *saction = SA_EXEC_CMD; *ret_cmd = options; break; default: mvwm_msg( ERR, "parse_menu_action", "unknown action '%s'", action); *saction = SA_NONE; } return; }