Minor code reorg: finding longest option name
This commit is contained in:
+30
-21
@@ -261,6 +261,7 @@ static void free_one_menu_coloring(int);
|
|||||||
static int count_menucolors(void);
|
static int count_menucolors(void);
|
||||||
static boolean parse_role_opts(int, boolean, const char *,
|
static boolean parse_role_opts(int, boolean, const char *,
|
||||||
char *, char **);
|
char *, char **);
|
||||||
|
static unsigned int longest_option_name(int, int);
|
||||||
static void doset_add_menu(winid, const char *, int, int);
|
static void doset_add_menu(winid, const char *, int, int);
|
||||||
static int handle_add_list_remove(const char *, int);
|
static int handle_add_list_remove(const char *, int);
|
||||||
static void remove_autopickup_exception(struct autopickup_exception *);
|
static void remove_autopickup_exception(struct autopickup_exception *);
|
||||||
@@ -7190,6 +7191,32 @@ get_option_value(const char *optname)
|
|||||||
return (char *) 0;
|
return (char *) 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static unsigned int
|
||||||
|
longest_option_name(int startpass, int endpass)
|
||||||
|
{
|
||||||
|
/* spin through the options to find the longest name */
|
||||||
|
unsigned longest_name_len = 0;
|
||||||
|
int i, pass, optflags;
|
||||||
|
const char *name;
|
||||||
|
|
||||||
|
for (pass = 0; pass < 2; pass++)
|
||||||
|
for (i = 0; (name = allopt[i].name) != 0; i++) {
|
||||||
|
if (pass == 0 &&
|
||||||
|
(allopt[i].opttyp != BoolOpt || !allopt[i].addr))
|
||||||
|
continue;
|
||||||
|
optflags = allopt[i].setwhere;
|
||||||
|
if (optflags < startpass || optflags > endpass)
|
||||||
|
continue;
|
||||||
|
if ((is_wc_option(name) && !wc_supported(name))
|
||||||
|
|| (is_wc2_option(name) && !wc2_supported(name)))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (strlen(name) > longest_name_len)
|
||||||
|
longest_name_len = strlen(name);
|
||||||
|
}
|
||||||
|
return longest_name_len;
|
||||||
|
}
|
||||||
|
|
||||||
/* the 'O' command */
|
/* the 'O' command */
|
||||||
int
|
int
|
||||||
doset(void) /* changing options via menu by Per Liboriussen */
|
doset(void) /* changing options via menu by Per Liboriussen */
|
||||||
@@ -7202,9 +7229,8 @@ doset(void) /* changing options via menu by Per Liboriussen */
|
|||||||
winid tmpwin;
|
winid tmpwin;
|
||||||
anything any;
|
anything any;
|
||||||
menu_item *pick_list;
|
menu_item *pick_list;
|
||||||
int indexoffset, startpass, endpass, optflags;
|
int indexoffset, startpass, endpass;
|
||||||
boolean setinitial = FALSE, fromfile = FALSE;
|
boolean setinitial = FALSE, fromfile = FALSE;
|
||||||
unsigned longest_name_len;
|
|
||||||
|
|
||||||
tmpwin = create_nhwindow(NHW_MENU);
|
tmpwin = create_nhwindow(NHW_MENU);
|
||||||
start_menu(tmpwin, MENU_BEHAVE_STANDARD);
|
start_menu(tmpwin, MENU_BEHAVE_STANDARD);
|
||||||
@@ -7220,25 +7246,8 @@ doset(void) /* changing options via menu by Per Liboriussen */
|
|||||||
endpass = (wizard) ? set_wizonly : set_in_game;
|
endpass = (wizard) ? set_wizonly : set_in_game;
|
||||||
|
|
||||||
if (!made_fmtstr && !iflags.menu_tab_sep) {
|
if (!made_fmtstr && !iflags.menu_tab_sep) {
|
||||||
/* spin through the options to find the longest name
|
Sprintf(fmtstr_doset, "%%s%%-%us [%%s]",
|
||||||
and adjust the format string accordingly */
|
longest_option_name(startpass, endpass));
|
||||||
longest_name_len = 0;
|
|
||||||
for (pass = 0; pass < 2; pass++)
|
|
||||||
for (i = 0; (name = allopt[i].name) != 0; i++) {
|
|
||||||
if (pass == 0 &&
|
|
||||||
(allopt[i].opttyp != BoolOpt || !allopt[i].addr))
|
|
||||||
continue;
|
|
||||||
optflags = allopt[i].setwhere;
|
|
||||||
if (optflags < startpass || optflags > endpass)
|
|
||||||
continue;
|
|
||||||
if ((is_wc_option(name) && !wc_supported(name))
|
|
||||||
|| (is_wc2_option(name) && !wc2_supported(name)))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (strlen(name) > longest_name_len)
|
|
||||||
longest_name_len = strlen(name);
|
|
||||||
}
|
|
||||||
Sprintf(fmtstr_doset, "%%s%%-%us [%%s]", longest_name_len);
|
|
||||||
made_fmtstr = TRUE;
|
made_fmtstr = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user