radare2/libr/core/help.c
2014-08-04 00:18:54 +02:00

53 lines
1.5 KiB
C

/* radare - LGPLv3 - Copyright 2014 Jody Frankowski */
/* This file holds help messages relative functions */
#include <r_core.h>
/* Prints a coloured help message.
* help should be an array of the following form:
* {"command", "args", "description",
* "command2", "args2", "description"}; */
R_API void r_core_cmd_help(const RCore *core, const char * help[]) {
int i, max_length, padding_length,
use_colors = core->print->flags & R_PRINT_FLAGS_COLOR;
RCons *cons = r_cons_singleton ();
char const *args_color_start;
char const *help_color_start;
char const *reset_colors;
char padding[256];
args_color_start = use_colors? cons->pal.args: "";
help_color_start = use_colors? cons->pal.help: "";
reset_colors = use_colors? cons->pal.reset: "";
max_length = 0;
for (i = 0; help[i]; i += 3) {
int len0 = strlen (help[i]);
int len1 = strlen (help[i+1]);
if (i) max_length = R_MAX (len0+len1, max_length);
}
for (i = 0; help[i]; i += 3) {
padding_length = max_length - \
(strlen (help[i]) + strlen (help[i+1]));
if (padding_length >0) {
memset (padding, ' ', padding_length);
padding[padding_length] = '\0';
} else padding[0] = 0;
if (i) {
r_cons_printf("|%s%s%s%s%s%s %s%s%s\n",
" ",
help[i], args_color_start,
help[i+1], reset_colors,
padding, help_color_start,
help[i+2], reset_colors);
} else {
// no need to indent the first line
r_cons_printf ("|%s%s %s%s%s\n",
help_color_start,
help[i], help[i+1], help[i+2],
reset_colors);
}
}
}