Loading Documentation/kbuild/kconfig.txt +3 −5 Original line number Diff line number Diff line Loading @@ -175,11 +175,9 @@ Searching in menuconfig: /^hotplug When searching, symbols are sorted thus: - exact match first: an exact match is when the search matches the complete symbol name; - alphabetical order: when two symbols do not match exactly, they are sorted in alphabetical order (in the user's current locale). - first, exact matches, sorted alphabetically (an exact match is when the search matches the complete symbol name); - then, other matches, sorted alphabetically. For example: ^ATH.K matches: ATH5K ATH9K ATH5K_AHB ATH5K_DEBUG [...] ATH6KL ATH6KL_DEBUG [...] ATH9K_AHB ATH9K_BTCOEX_SUPPORT ATH9K_COMMON [...] Loading scripts/kconfig/mconf.c +2 −2 Original line number Diff line number Diff line Loading @@ -401,8 +401,8 @@ static void search_conf(void) struct subtitle_part stpart; title = str_new(); str_printf( &title, _("Enter %s (sub)string or regexp to search for " "(with or without \"%s\")"), CONFIG_, CONFIG_); str_printf( &title, _("Enter (sub)string or regexp to search for " "(with or without \"%s\")"), CONFIG_); again: dialog_clear(); Loading scripts/kconfig/nconf.c +2 −2 Original line number Diff line number Diff line Loading @@ -695,8 +695,8 @@ static void search_conf(void) int dres; title = str_new(); str_printf( &title, _("Enter %s (sub)string or regexp to search for " "(with or without \"%s\")"), CONFIG_, CONFIG_); str_printf( &title, _("Enter (sub)string or regexp to search for " "(with or without \"%s\")"), CONFIG_); again: dres = dialog_inputbox(main_window, Loading scripts/kconfig/symbol.c +20 −29 Original line number Diff line number Diff line Loading @@ -965,9 +965,9 @@ struct sym_match { */ static int sym_rel_comp(const void *sym1, const void *sym2) { struct sym_match *s1 = *(struct sym_match **)sym1; struct sym_match *s2 = *(struct sym_match **)sym2; int l1, l2; const struct sym_match *s1 = sym1; const struct sym_match *s2 = sym2; int exact1, exact2; /* Exact match: * - if matched length on symbol s1 is the length of that symbol, Loading @@ -978,11 +978,11 @@ static int sym_rel_comp( const void *sym1, const void *sym2 ) * exactly; if this is the case, we can't decide which comes first, * and we fallback to sorting alphabetically. */ l1 = s1->eo - s1->so; l2 = s2->eo - s2->so; if (l1 == strlen(s1->sym->name) && l2 != strlen(s2->sym->name)) exact1 = (s1->eo - s1->so) == strlen(s1->sym->name); exact2 = (s2->eo - s2->so) == strlen(s2->sym->name); if (exact1 && !exact2) return -1; if (l1 != strlen(s1->sym->name) && l2 == strlen(s2->sym->name)) if (!exact1 && exact2) return 1; /* As a fallback, sort symbols alphabetically */ Loading @@ -992,7 +992,7 @@ static int sym_rel_comp( const void *sym1, const void *sym2 ) struct symbol **sym_re_search(const char *pattern) { struct symbol *sym, **sym_arr = NULL; struct sym_match **sym_match_arr = NULL; struct sym_match *sym_match_arr = NULL; int i, cnt, size; regex_t re; regmatch_t match[1]; Loading @@ -1005,47 +1005,38 @@ struct symbol **sym_re_search(const char *pattern) return NULL; for_all_symbols(i, sym) { struct sym_match *tmp_sym_match; if (sym->flags & SYMBOL_CONST || !sym->name) continue; if (regexec(&re, sym->name, 1, match, 0)) continue; if (cnt + 1 >= size) { if (cnt >= size) { void *tmp; size += 16; tmp = realloc(sym_match_arr, size * sizeof(struct sym_match *)); if (!tmp) { tmp = realloc(sym_match_arr, size * sizeof(struct sym_match)); if (!tmp) goto sym_re_search_free; } sym_match_arr = tmp; } sym_calc_value(sym); tmp_sym_match = (struct sym_match*)malloc(sizeof(struct sym_match)); if (!tmp_sym_match) goto sym_re_search_free; tmp_sym_match->sym = sym; /* As regexec return 0, we know we have a match, so /* As regexec returned 0, we know we have a match, so * we can use match[0].rm_[se]o without further checks */ tmp_sym_match->so = match[0].rm_so; tmp_sym_match->eo = match[0].rm_eo; sym_match_arr[cnt++] = tmp_sym_match; sym_match_arr[cnt].so = match[0].rm_so; sym_match_arr[cnt].eo = match[0].rm_eo; sym_match_arr[cnt++].sym = sym; } if (sym_match_arr) { qsort(sym_match_arr, cnt, sizeof(struct sym_match*), sym_rel_comp); qsort(sym_match_arr, cnt, sizeof(struct sym_match), sym_rel_comp); sym_arr = malloc((cnt+1) * sizeof(struct symbol)); if (!sym_arr) goto sym_re_search_free; for (i = 0; i < cnt; i++) sym_arr[i] = sym_match_arr[i]->sym; sym_arr[i] = sym_match_arr[i].sym; sym_arr[cnt] = NULL; } sym_re_search_free: if (sym_match_arr) { for (i = 0; i < cnt; i++) free(sym_match_arr[i]); /* sym_match_arr can be NULL if no match, but free(NULL) is OK */ free(sym_match_arr); } regfree(&re); return sym_arr; Loading Loading
Documentation/kbuild/kconfig.txt +3 −5 Original line number Diff line number Diff line Loading @@ -175,11 +175,9 @@ Searching in menuconfig: /^hotplug When searching, symbols are sorted thus: - exact match first: an exact match is when the search matches the complete symbol name; - alphabetical order: when two symbols do not match exactly, they are sorted in alphabetical order (in the user's current locale). - first, exact matches, sorted alphabetically (an exact match is when the search matches the complete symbol name); - then, other matches, sorted alphabetically. For example: ^ATH.K matches: ATH5K ATH9K ATH5K_AHB ATH5K_DEBUG [...] ATH6KL ATH6KL_DEBUG [...] ATH9K_AHB ATH9K_BTCOEX_SUPPORT ATH9K_COMMON [...] Loading
scripts/kconfig/mconf.c +2 −2 Original line number Diff line number Diff line Loading @@ -401,8 +401,8 @@ static void search_conf(void) struct subtitle_part stpart; title = str_new(); str_printf( &title, _("Enter %s (sub)string or regexp to search for " "(with or without \"%s\")"), CONFIG_, CONFIG_); str_printf( &title, _("Enter (sub)string or regexp to search for " "(with or without \"%s\")"), CONFIG_); again: dialog_clear(); Loading
scripts/kconfig/nconf.c +2 −2 Original line number Diff line number Diff line Loading @@ -695,8 +695,8 @@ static void search_conf(void) int dres; title = str_new(); str_printf( &title, _("Enter %s (sub)string or regexp to search for " "(with or without \"%s\")"), CONFIG_, CONFIG_); str_printf( &title, _("Enter (sub)string or regexp to search for " "(with or without \"%s\")"), CONFIG_); again: dres = dialog_inputbox(main_window, Loading
scripts/kconfig/symbol.c +20 −29 Original line number Diff line number Diff line Loading @@ -965,9 +965,9 @@ struct sym_match { */ static int sym_rel_comp(const void *sym1, const void *sym2) { struct sym_match *s1 = *(struct sym_match **)sym1; struct sym_match *s2 = *(struct sym_match **)sym2; int l1, l2; const struct sym_match *s1 = sym1; const struct sym_match *s2 = sym2; int exact1, exact2; /* Exact match: * - if matched length on symbol s1 is the length of that symbol, Loading @@ -978,11 +978,11 @@ static int sym_rel_comp( const void *sym1, const void *sym2 ) * exactly; if this is the case, we can't decide which comes first, * and we fallback to sorting alphabetically. */ l1 = s1->eo - s1->so; l2 = s2->eo - s2->so; if (l1 == strlen(s1->sym->name) && l2 != strlen(s2->sym->name)) exact1 = (s1->eo - s1->so) == strlen(s1->sym->name); exact2 = (s2->eo - s2->so) == strlen(s2->sym->name); if (exact1 && !exact2) return -1; if (l1 != strlen(s1->sym->name) && l2 == strlen(s2->sym->name)) if (!exact1 && exact2) return 1; /* As a fallback, sort symbols alphabetically */ Loading @@ -992,7 +992,7 @@ static int sym_rel_comp( const void *sym1, const void *sym2 ) struct symbol **sym_re_search(const char *pattern) { struct symbol *sym, **sym_arr = NULL; struct sym_match **sym_match_arr = NULL; struct sym_match *sym_match_arr = NULL; int i, cnt, size; regex_t re; regmatch_t match[1]; Loading @@ -1005,47 +1005,38 @@ struct symbol **sym_re_search(const char *pattern) return NULL; for_all_symbols(i, sym) { struct sym_match *tmp_sym_match; if (sym->flags & SYMBOL_CONST || !sym->name) continue; if (regexec(&re, sym->name, 1, match, 0)) continue; if (cnt + 1 >= size) { if (cnt >= size) { void *tmp; size += 16; tmp = realloc(sym_match_arr, size * sizeof(struct sym_match *)); if (!tmp) { tmp = realloc(sym_match_arr, size * sizeof(struct sym_match)); if (!tmp) goto sym_re_search_free; } sym_match_arr = tmp; } sym_calc_value(sym); tmp_sym_match = (struct sym_match*)malloc(sizeof(struct sym_match)); if (!tmp_sym_match) goto sym_re_search_free; tmp_sym_match->sym = sym; /* As regexec return 0, we know we have a match, so /* As regexec returned 0, we know we have a match, so * we can use match[0].rm_[se]o without further checks */ tmp_sym_match->so = match[0].rm_so; tmp_sym_match->eo = match[0].rm_eo; sym_match_arr[cnt++] = tmp_sym_match; sym_match_arr[cnt].so = match[0].rm_so; sym_match_arr[cnt].eo = match[0].rm_eo; sym_match_arr[cnt++].sym = sym; } if (sym_match_arr) { qsort(sym_match_arr, cnt, sizeof(struct sym_match*), sym_rel_comp); qsort(sym_match_arr, cnt, sizeof(struct sym_match), sym_rel_comp); sym_arr = malloc((cnt+1) * sizeof(struct symbol)); if (!sym_arr) goto sym_re_search_free; for (i = 0; i < cnt; i++) sym_arr[i] = sym_match_arr[i]->sym; sym_arr[i] = sym_match_arr[i].sym; sym_arr[cnt] = NULL; } sym_re_search_free: if (sym_match_arr) { for (i = 0; i < cnt; i++) free(sym_match_arr[i]); /* sym_match_arr can be NULL if no match, but free(NULL) is OK */ free(sym_match_arr); } regfree(&re); return sym_arr; Loading