Skip to content

Commit 6cb1ed3

Browse files
awlapoint-afktrufae
authored andcommitted
Fix code duplication with r_panels_update_help
1 parent 7015b27 commit 6cb1ed3

2 files changed

Lines changed: 20 additions & 30 deletions

File tree

libr/core/panels.c

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -102,22 +102,8 @@ R_API bool r_core_panels_load(RCore *core, const char *_name) {
102102
RPanel *p = r_panels_get_panel (panels, panels->n_panels);
103103
r_panels_set_geometry (&p->view->pos, atoi (x), atoi (y), atoi (w),atoi (h));
104104
r_panels_init_panel_param (core, p, title, cmd);
105-
// TODO: fix code duplication with r_panels_update_help
106105
if (r_str_endswith (cmd, "Help")) {
107-
free (p->model->title);
108-
free (p->model->cmd);
109-
p->model->title = strdup ("Help");
110-
p->model->cmd = strdup ("Help");
111-
RStrBuf *rsb = r_strbuf_new (NULL);
112-
r_core_visual_append_help (core, rsb, "Panels Mode", help_msg_panels);
113-
if (!rsb) {
114-
return false;
115-
}
116-
char *drained_string = r_strbuf_drain (rsb);
117-
if (drained_string) {
118-
r_panels_set_read_only (core, p, drained_string);
119-
free (drained_string);
120-
}
106+
r_panels_setup_help_panel(core, p, "Panels Mode", help_msg_panels);
121107
}
122108
tmp_cfg += strlen (tmp_cfg) + 1;
123109
}

libr/core/panels.inc.c

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1039,6 +1039,24 @@ static unsigned int r_panels_adjust_side_panels(RCore *core) {
10391039
return space;
10401040
}
10411041

1042+
static void r_panels_setup_help_panel(RCore *core, RPanel *p, const char *title, const char * const *msg) {
1043+
const char *help = "Help";
1044+
free (p->model->title);
1045+
free (p->model->cmd);
1046+
p->model->title = strdup (help);
1047+
p->model->cmd = strdup (help);
1048+
RStrBuf *rsb = r_strbuf_new (NULL);
1049+
r_core_visual_append_help (core, rsb, title, msg);
1050+
if (!rsb) {
1051+
return;
1052+
}
1053+
char *drained_string = r_strbuf_drain (rsb);
1054+
if (drained_string) {
1055+
r_panels_set_read_only (core, p, drained_string);
1056+
free (drained_string);
1057+
}
1058+
}
1059+
10421060
static void r_panels_update_help(RCore *core, RPanels *ps) {
10431061
const char *help = "Help";
10441062
int i;
@@ -1048,7 +1066,6 @@ static void r_panels_update_help(RCore *core, RPanels *ps) {
10481066
continue;
10491067
}
10501068
if (!strncmp (p->model->cmd, help, strlen (help))) {
1051-
RStrBuf *rsb = r_strbuf_new (NULL);
10521069
const char *title;
10531070
const char * const * msg;
10541071
switch (ps->mode) {
@@ -1065,20 +1082,7 @@ static void r_panels_update_help(RCore *core, RPanels *ps) {
10651082
msg = help_msg_panels;
10661083
break;
10671084
}
1068-
// panel's title does not change, keep it short and simple
1069-
free (p->model->title);
1070-
p->model->title = strdup (help);
1071-
free (p->model->cmd);
1072-
p->model->cmd = strdup (help);
1073-
r_core_visual_append_help (core, rsb, title, msg);
1074-
if (!rsb) {
1075-
break;
1076-
}
1077-
char *drained = r_strbuf_drain (rsb);
1078-
if (drained) {
1079-
r_panels_set_read_only (core, p, drained);
1080-
free (drained);
1081-
}
1085+
r_panels_setup_help_panel(core, p, title, msg);
10821086
p->view->refresh = true;
10831087
}
10841088
}

0 commit comments

Comments
 (0)