linux-user: Fix layout of usage table to account for option text
The linux-user usage message attempts to line up the columns in its table by calculating the maximum width of any item in them. However for the 'Argument' column it was only accounting for the length of the option switch (eg "-d"), not the additional example text (eg "item[,...]"). This currently has no adverse effects because the widest item in the column happens to be the argumentless "-singlestep" option, but improving the "-d" option help to read "-d item[,...]" exceeds that limit. Fix this by correctly calculating maxarglen as the width of the first column text including a possible option argument, and adjusting its uses to match. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Riku Voipio <riku.voipio@linaro.org>
This commit is contained in:
parent
0d95fda86b
commit
63ec54d7b3
@ -3406,27 +3406,35 @@ static void usage(void)
|
||||
"Options and associated environment variables:\n"
|
||||
"\n");
|
||||
|
||||
maxarglen = maxenvlen = 0;
|
||||
/* Calculate column widths. We must always have at least enough space
|
||||
* for the column header.
|
||||
*/
|
||||
maxarglen = strlen("Argument");
|
||||
maxenvlen = strlen("Env-variable");
|
||||
|
||||
for (arginfo = arg_table; arginfo->handle_opt != NULL; arginfo++) {
|
||||
int arglen = strlen(arginfo->argv);
|
||||
if (arginfo->has_arg) {
|
||||
arglen += strlen(arginfo->example) + 1;
|
||||
}
|
||||
if (strlen(arginfo->env) > maxenvlen) {
|
||||
maxenvlen = strlen(arginfo->env);
|
||||
}
|
||||
if (strlen(arginfo->argv) > maxarglen) {
|
||||
maxarglen = strlen(arginfo->argv);
|
||||
if (arglen > maxarglen) {
|
||||
maxarglen = arglen;
|
||||
}
|
||||
}
|
||||
|
||||
printf("%-*s%-*sDescription\n", maxarglen+3, "Argument",
|
||||
maxenvlen+1, "Env-variable");
|
||||
printf("%-*s %-*s Description\n", maxarglen+1, "Argument",
|
||||
maxenvlen, "Env-variable");
|
||||
|
||||
for (arginfo = arg_table; arginfo->handle_opt != NULL; arginfo++) {
|
||||
if (arginfo->has_arg) {
|
||||
printf("-%s %-*s %-*s %s\n", arginfo->argv,
|
||||
(int)(maxarglen-strlen(arginfo->argv)), arginfo->example,
|
||||
maxenvlen, arginfo->env, arginfo->help);
|
||||
(int)(maxarglen - strlen(arginfo->argv) - 1),
|
||||
arginfo->example, maxenvlen, arginfo->env, arginfo->help);
|
||||
} else {
|
||||
printf("-%-*s %-*s %s\n", maxarglen+1, arginfo->argv,
|
||||
printf("-%-*s %-*s %s\n", maxarglen, arginfo->argv,
|
||||
maxenvlen, arginfo->env,
|
||||
arginfo->help);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user