libbb: inntroduce and use bb_pstrcmp() and qsort_string_vector()

msh: glob0/glob1/glob2/glob3 are just a sorting routine! remove them.

bb_pstrcmp                                             -      25     +25
qsort_string_vector                                    -      24     +24
expand                                              2209    2227     +18
getopt32                                            1359    1370     +11
passwd_main                                         1072    1074      +2
handle_incoming_and_exit                            2737    2735      -2
UNSPEC_print                                          66      64      -2
forkexec                                            1343    1339      -4
input_tab                                           3338    3330      -8
get_dir                                              185     177      -8
expmeta                                              481     473      -8
cmdputs                                              405     397      -8
xstrcmp                                               12       -     -12
find_pair                                            187     167     -20
match_compare                                         25       -     -25
dir_strcmp                                            25       -     -25
glob2                                                 27       -     -27
glob3                                                 34       -     -34
glob1                                                256       -    -256
------------------------------------------------------------------------------
(add/remove: 2/6 grow/shrink: 3/8 up/down: 80/-439)          Total: -359 bytes
This commit is contained in:
Denis Vlasenko
2008-03-02 12:51:26 +00:00
parent 509697f00d
commit fb29038b59
5 changed files with 15 additions and 135 deletions

View File

@@ -12,6 +12,7 @@ lib-y += bb_askpass.o
lib-y += bb_basename.o
lib-y += bb_do_delay.o
lib-y += bb_pwd.o
lib-y += bb_qsort.o
lib-y += bb_strtonum.o
lib-y += change_identity.o
lib-y += chomp.o

View File

@@ -796,11 +796,6 @@ static char *add_quote_for_spec_chars(char *found)
return s;
}
static int match_compare(const void *a, const void *b)
{
return strcmp(*(char**)a, *(char**)b);
}
/* Do TAB completion */
static void input_tab(smallint *lastWasTab)
{
@@ -841,7 +836,7 @@ static void input_tab(smallint *lastWasTab)
/* Sort, then remove any duplicates found */
if (matches) {
int i, n = 0;
qsort(matches, num_matches, sizeof(char*), match_compare);
qsort_string_vector(matches, num_matches);
for (i = 0; i < num_matches - 1; ++i) {
if (matches[i] && matches[i+1]) { /* paranoia */
if (strcmp(matches[i], matches[i+1]) == 0) {