summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--scripts/kconfig/lkc_proto.h2
-rw-r--r--scripts/kconfig/mconf.c11
-rw-r--r--scripts/kconfig/nconf.c11
-rw-r--r--scripts/kconfig/nconf.gui.c2
-rw-r--r--scripts/kconfig/qconf.cc2
-rw-r--r--scripts/kconfig/symbol.c4
6 files changed, 24 insertions, 8 deletions
diff --git a/scripts/kconfig/lkc_proto.h b/scripts/kconfig/lkc_proto.h
index 8b436c87ba4a..2e736434b924 100644
--- a/scripts/kconfig/lkc_proto.h
+++ b/scripts/kconfig/lkc_proto.h
@@ -21,7 +21,7 @@ bool conf_errors(void);
struct symbol * sym_lookup(const char *name, int flags);
struct symbol * sym_find(const char *name);
void print_symbol_for_listconfig(struct symbol *sym);
-struct symbol ** sym_re_search(const char *pattern);
+struct symbol ** sym_re_search(const char *pattern, int *sym_cnt);
const char * sym_type_name(enum symbol_type type);
void sym_calc_value(struct symbol *sym);
bool sym_dep_errors(void);
diff --git a/scripts/kconfig/mconf.c b/scripts/kconfig/mconf.c
index b8b7bba84a65..ebfc5bd09c1c 100644
--- a/scripts/kconfig/mconf.c
+++ b/scripts/kconfig/mconf.c
@@ -384,8 +384,10 @@ static void show_help(struct menu *menu)
static void search_conf(void)
{
struct symbol **sym_arr;
+ int sym_cnt = 0;
struct gstr res;
struct gstr title;
+ struct gstr res_title;
char *dialog_input;
int dres, vscroll = 0, hscroll = 0;
bool again;
@@ -422,7 +424,7 @@ again:
stpart.text = str_get(&sttext);
list_add_tail(&stpart.entries, &trail);
- sym_arr = sym_re_search(dialog_input);
+ sym_arr = sym_re_search(dialog_input, &sym_cnt);
do {
LIST_HEAD(head);
struct search_data data = {
@@ -433,9 +435,14 @@ again:
jump_key_char = 0;
res = get_relations_str(sym_arr, &head);
set_subtitle();
- dres = show_textbox_ext("Search Results", str_get(&res), 0, 0,
+
+ res_title = str_new();
+ str_printf(&res_title, "Search Results (%d)", sym_cnt);
+ dres = show_textbox_ext(str_get(&res_title), str_get(&res), 0, 0,
&vscroll, &hscroll,
handle_search_keys, &data);
+ str_free(&res_title);
+
again = false;
if (dres >= '1' && dres <= '9') {
assert(data.target != NULL);
diff --git a/scripts/kconfig/nconf.c b/scripts/kconfig/nconf.c
index 521700ed7152..4c9c4ee7c3a7 100644
--- a/scripts/kconfig/nconf.c
+++ b/scripts/kconfig/nconf.c
@@ -700,8 +700,10 @@ static int do_exit(void)
static void search_conf(void)
{
struct symbol **sym_arr;
+ int sym_cnt = 0;
struct gstr res;
struct gstr title;
+ struct gstr res_title;
char *dialog_input;
int dres, vscroll = 0, hscroll = 0;
bool again;
@@ -732,7 +734,7 @@ again:
if (strncasecmp(dialog_input_result, CONFIG_, strlen(CONFIG_)) == 0)
dialog_input += strlen(CONFIG_);
- sym_arr = sym_re_search(dialog_input);
+ sym_arr = sym_re_search(dialog_input, &sym_cnt);
do {
LIST_HEAD(head);
@@ -742,10 +744,15 @@ again:
};
jump_key_char = 0;
res = get_relations_str(sym_arr, &head);
+
+ res_title = str_new();
+ str_printf(&res_title, "Search Results (%d)", sym_cnt);
dres = show_scroll_win_ext(main_window,
- "Search Results", str_get(&res),
+ str_get(&res_title), str_get(&res),
&vscroll, &hscroll,
handle_search_keys, &data);
+ str_free(&res_title);
+
again = false;
if (dres >= '1' && dres <= '9') {
assert(data.target != NULL);
diff --git a/scripts/kconfig/nconf.gui.c b/scripts/kconfig/nconf.gui.c
index 2d097bc7ef1a..5900eba0a512 100644
--- a/scripts/kconfig/nconf.gui.c
+++ b/scripts/kconfig/nconf.gui.c
@@ -523,7 +523,7 @@ int show_scroll_win_ext(WINDOW *main_window, const char *title, char *text,
int x, y, lines, columns;
int start_x = 0, start_y = 0;
int text_lines = 0, text_cols = 0;
- int total_cols = 0;
+ int total_cols = get_line_length(title) + 4;
int win_cols = 0;
int win_lines = 0;
int i = 0;
diff --git a/scripts/kconfig/qconf.cc b/scripts/kconfig/qconf.cc
index b02ead7a3f98..8f51dc55226d 100644
--- a/scripts/kconfig/qconf.cc
+++ b/scripts/kconfig/qconf.cc
@@ -1245,7 +1245,7 @@ void ConfigSearchWindow::search(void)
list->clear();
info->clear();
- result = sym_re_search(editField->text().toLatin1());
+ result = sym_re_search(editField->text().toLatin1(), nullptr);
if (!result)
return;
for (p = result; *p; p++) {
diff --git a/scripts/kconfig/symbol.c b/scripts/kconfig/symbol.c
index 4ced4dd6485b..f6fadb077381 100644
--- a/scripts/kconfig/symbol.c
+++ b/scripts/kconfig/symbol.c
@@ -1077,7 +1077,7 @@ static int sym_rel_comp(const void *sym1, const void *sym2)
return strcmp(s1->sym->name, s2->sym->name);
}
-struct symbol **sym_re_search(const char *pattern)
+struct symbol **sym_re_search(const char *pattern, int *sym_cnt)
{
struct symbol *sym, **sym_arr = NULL;
struct sym_match *sym_match_arr = NULL;
@@ -1122,6 +1122,8 @@ struct symbol **sym_re_search(const char *pattern)
sym_arr[i] = sym_match_arr[i].sym;
sym_arr[cnt] = NULL;
}
+ if (sym_cnt)
+ *sym_cnt = cnt;
sym_re_search_free:
/* sym_match_arr can be NULL if no match, but free(NULL) is OK */
free(sym_match_arr);