rz_cons_clear_line: Change param type to FILE * (#4974)
This commit is contained in:
parent
2fad3444f2
commit
feccb9bf85
9 changed files with 27 additions and 22 deletions
|
|
@ -759,10 +759,15 @@ RZ_API void rz_cons_fill_line(void) {
|
|||
}
|
||||
}
|
||||
|
||||
RZ_API void rz_cons_clear_line(int std_err) {
|
||||
/**
|
||||
* \brief Print on `stream` the ANSI escape sequence to clear the current line.
|
||||
* \param stream Either stdout or stderr. Only 2 possible stream values are accepted.
|
||||
*/
|
||||
RZ_API void rz_cons_clear_line(FILE *stream) {
|
||||
rz_return_if_fail(stream == stdout || stream == stderr);
|
||||
#if __WINDOWS__
|
||||
if (I.vtmode != RZ_VIRT_TERM_MODE_DISABLE) {
|
||||
fprintf(std_err ? stderr : stdout, "%s", RZ_CONS_CLEAR_LINE);
|
||||
fprintf(stream, "%s", RZ_CONS_CLEAR_LINE);
|
||||
} else {
|
||||
char white[1024];
|
||||
memset(&white, ' ', sizeof(white));
|
||||
|
|
@ -773,12 +778,12 @@ RZ_API void rz_cons_clear_line(int std_err) {
|
|||
} else {
|
||||
white[sizeof(white) - 1] = 0; // HACK
|
||||
}
|
||||
fprintf(std_err ? stderr : stdout, "\r%s\r", white);
|
||||
fprintf(stream, "\r%s\r", white);
|
||||
}
|
||||
#else
|
||||
fprintf(std_err ? stderr : stdout, "%s", RZ_CONS_CLEAR_LINE);
|
||||
fprintf(stream, "%s", RZ_CONS_CLEAR_LINE);
|
||||
#endif
|
||||
fflush(std_err ? stderr : stdout);
|
||||
fflush(stream);
|
||||
}
|
||||
|
||||
RZ_API void rz_cons_clear00(void) {
|
||||
|
|
|
|||
|
|
@ -1191,7 +1191,7 @@ static void __print_prompt(RzLine *line) {
|
|||
rz_cons_gotoxy(0, cons->rows);
|
||||
rz_cons_flush();
|
||||
}
|
||||
rz_cons_clear_line(0);
|
||||
rz_cons_clear_line(stdout);
|
||||
if (cons->context->color_mode > 0) {
|
||||
printf("\r%s%s", Color_RESET, line->prompt);
|
||||
} else {
|
||||
|
|
@ -1610,7 +1610,7 @@ RZ_API const char *rz_line_readline_cb(RZ_NONNULL RzLine *line, RzLineReadCallba
|
|||
bool o_do_setup_match = line->history.do_setup_match;
|
||||
line->history.do_setup_match = true;
|
||||
if (line->echo) {
|
||||
rz_cons_clear_line(0);
|
||||
rz_cons_clear_line(stdout);
|
||||
}
|
||||
switch (*buf) {
|
||||
|
||||
|
|
|
|||
|
|
@ -3992,7 +3992,7 @@ static void goto_asmqjmps(RzAGraph *g, RzCore *core) {
|
|||
|
||||
rz_cons_get_size(&rows);
|
||||
rz_cons_gotoxy(0, rows);
|
||||
rz_cons_clear_line(0);
|
||||
rz_cons_clear_line(stdout);
|
||||
rz_cons_print(Color_RESET);
|
||||
rz_cons_print(h);
|
||||
rz_cons_flush();
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ enum {
|
|||
#define MAX_SCAN_SIZE 0x7ffffff
|
||||
|
||||
static void loganalysis(ut64 from, ut64 to, int depth) {
|
||||
rz_cons_clear_line(1);
|
||||
rz_cons_clear_line(stderr);
|
||||
eprintf("0x%08" PFMT64x " > 0x%08" PFMT64x " %d\r", from, to, depth);
|
||||
}
|
||||
|
||||
|
|
@ -955,7 +955,7 @@ static int __core_analysis_fcn(RzCore *core, ut64 at, ut64 from, int reftype, in
|
|||
}
|
||||
// TODO: ensure next address is function after padding (nop or trap or wat)
|
||||
// XXX noisy for test cases because we want to clear the stderr
|
||||
rz_cons_clear_line(1);
|
||||
rz_cons_clear_line(stderr);
|
||||
loganalysis(fcn->addr, at, 10000 - depth);
|
||||
next = next_append(next, &nexti, at);
|
||||
}
|
||||
|
|
@ -2666,7 +2666,7 @@ RZ_API RzList /*<RzAnalysisCycleHook *>*/ *rz_core_analysis_cycles(RzCore *core,
|
|||
rz_cons_break_push(NULL, NULL);
|
||||
while (cf && !rz_cons_is_breaked()) {
|
||||
if ((op = rz_core_analysis_op(core, addr, RZ_ANALYSIS_OP_MASK_BASIC)) && (op->cycles) && (ccl > 0)) {
|
||||
rz_cons_clear_line(1);
|
||||
rz_cons_clear_line(stderr);
|
||||
eprintf("%i -- ", ccl);
|
||||
addr += op->size;
|
||||
switch (op->type) {
|
||||
|
|
@ -5996,7 +5996,7 @@ RZ_API void rz_core_perform_auto_analysis(RZ_NONNULL RzCore *core, RzCoreAnalysi
|
|||
if (rz_core_is_debugging(core)) {
|
||||
debugger = core->dbg->cur ? rz_str_dup(core->dbg->cur->name) : rz_str_dup("esil");
|
||||
}
|
||||
rz_cons_clear_line(1);
|
||||
rz_cons_clear_line(stderr);
|
||||
|
||||
// if type was simple only then don't proceed further
|
||||
if (type == RZ_CORE_ANALYSIS_SIMPLE || rz_cons_is_breaked()) {
|
||||
|
|
|
|||
|
|
@ -5426,7 +5426,7 @@ RZ_IPI RzCmdStatus rz_analyze_cycles_handler(RzCore *core, int argc, const char
|
|||
rz_config_set_i(core->config, "asm.xrefs", false);
|
||||
|
||||
hooks = rz_core_analysis_cycles(core, ccl); // analysisyse
|
||||
rz_cons_clear_line(1);
|
||||
rz_cons_clear_line(stderr);
|
||||
rz_list_foreach (hooks, iter, hook) {
|
||||
instr_tmp = rz_core_disassemble_instr(core, hook->addr, 1);
|
||||
rz_cons_printf("After %4i cycles:\t%s", (ccl - hook->cycles), instr_tmp);
|
||||
|
|
|
|||
|
|
@ -139,7 +139,7 @@ static int rz_core_magic_at(RzCore *core, const char *file, ut64 addr, int depth
|
|||
pj_ks(pj, "info", p);
|
||||
pj_end(pj);
|
||||
}
|
||||
rz_cons_clear_line(1);
|
||||
rz_cons_clear_line(stderr);
|
||||
// eprintf ("0x%08"PFMT64x" 0x%08"PFMT64x" %d %s\n", addr+adelta, addr+adelta, magicdepth-depth, p);
|
||||
// walking children
|
||||
for (q = p; *q; q++) {
|
||||
|
|
|
|||
|
|
@ -622,7 +622,7 @@ static void do_esil_search(RzCore *core, struct search_parameters *param, const
|
|||
rz_config_set_i(core->config, "search.kwidx", search->n_kws); // TODO remove
|
||||
rz_cons_break_pop();
|
||||
}
|
||||
rz_cons_clear_line(1);
|
||||
rz_cons_clear_line(stderr);
|
||||
if (param->outmode == RZ_MODE_JSON) {
|
||||
pj_end(param->pj);
|
||||
}
|
||||
|
|
@ -1287,7 +1287,7 @@ static void do_string_search(RzCore *core, RzInterval search_itv, struct search_
|
|||
}
|
||||
}
|
||||
print_search_progress(at, to1, search->nhits, param);
|
||||
rz_cons_clear_line(1);
|
||||
rz_cons_clear_line(stderr);
|
||||
core->num->value = search->nhits;
|
||||
if (param->outmode != RZ_MODE_JSON) {
|
||||
eprintf("hits: %" PFMT64d "\n", search->nhits - saved_nhits);
|
||||
|
|
@ -2012,7 +2012,7 @@ reread:
|
|||
}
|
||||
addr += ret - 1;
|
||||
}
|
||||
rz_cons_clear_line(1);
|
||||
rz_cons_clear_line(stderr);
|
||||
rz_cons_break_pop();
|
||||
}
|
||||
if (param.outmode == RZ_MODE_JSON) {
|
||||
|
|
@ -2021,7 +2021,7 @@ reread:
|
|||
} else {
|
||||
RZ_LOG_ERROR("core: Usage: /m [file]\n");
|
||||
}
|
||||
rz_cons_clear_line(1);
|
||||
rz_cons_clear_line(stderr);
|
||||
break;
|
||||
case 'p': // "/p"
|
||||
{
|
||||
|
|
@ -2425,7 +2425,7 @@ static RzCmdStatus cmd_core_handle_search_hits(RzCore *core, RzCmdStateOutput *s
|
|||
|
||||
if (!rz_str_is_false(rz_config_get(core->config, "search.show_progress"))) {
|
||||
// clear last progress notification, if any
|
||||
rz_cons_clear_line(1);
|
||||
rz_cons_clear_line(stderr);
|
||||
}
|
||||
|
||||
RzListIter *it = NULL;
|
||||
|
|
|
|||
|
|
@ -939,7 +939,7 @@ RZ_API void rz_cons_highlight(const char *word);
|
|||
RZ_API void rz_cons_clear(void);
|
||||
RZ_API void rz_cons_clear_buffer(void);
|
||||
RZ_API void rz_cons_clear00(void);
|
||||
RZ_API void rz_cons_clear_line(int err);
|
||||
RZ_API void rz_cons_clear_line(FILE *stream);
|
||||
RZ_API void rz_cons_fill_line(void);
|
||||
RZ_API void rz_cons_gotoxy(int x, int y);
|
||||
RZ_API int rz_cons_get_cur_line(void);
|
||||
|
|
|
|||
|
|
@ -1866,7 +1866,7 @@ static void diff_graph_as_json(RzCore *core_a, RzAnalysisFunction *fcn_a, RzCore
|
|||
}
|
||||
|
||||
static bool diff_progess_status(const size_t n_left, const size_t n_matches, void *user) {
|
||||
rz_cons_clear_line(true);
|
||||
rz_cons_clear_line(stderr);
|
||||
fprintf(stderr, "rz-diff: to check %" PFMTSZu " | matches %" PFMTSZu "\r", n_left, n_matches);
|
||||
return !rz_cons_is_breaked();
|
||||
}
|
||||
|
|
@ -2665,7 +2665,7 @@ static bool rz_diff_draw_tui(DiffHexView *hview, bool show_help) {
|
|||
static char *visual_prompt(DiffHexView *hview, const char *prompt) {
|
||||
char buf[1024];
|
||||
rz_cons_gotoxy(0, hview->screen.height);
|
||||
rz_cons_clear_line(0);
|
||||
rz_cons_clear_line(stdout);
|
||||
rz_cons_printf("%s%s ", hview->colors.reset, prompt);
|
||||
rz_line_set_prompt(rz_cons_singleton()->line, ":> ");
|
||||
rz_cons_flush();
|
||||
|
|
|
|||
Loading…
Reference in a new issue