diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2011-05-13 17:55:08 +0200 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2011-05-13 17:55:08 +0200 |
commit | 8dd29da2c667b6c9ae7381096320b9e31d3a50e2 (patch) | |
tree | 49781a8618ac5622ea94b0a10156543e0a90e404 /coreutils/ls.c | |
parent | 4029e21b37a18bea86dd438d4a9138789ecdce6c (diff) | |
download | busybox-w32-8dd29da2c667b6c9ae7381096320b9e31d3a50e2.tar.gz busybox-w32-8dd29da2c667b6c9ae7381096320b9e31d3a50e2.tar.bz2 busybox-w32-8dd29da2c667b6c9ae7381096320b9e31d3a50e2.zip |
ls: code shrink
function old new delta
sort_and_display_files - 427 +427
scan_and_display_dirs_recur 497 488 -9
ls_main 765 735 -30
display_files 422 - -422
------------------------------------------------------------------------------
(add/remove: 1/1 grow/shrink: 0/2 up/down: 427/-461) Total: -34 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'coreutils/ls.c')
-rw-r--r-- | coreutils/ls.c | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/coreutils/ls.c b/coreutils/ls.c index 907955077..e7b2e39e1 100644 --- a/coreutils/ls.c +++ b/coreutils/ls.c | |||
@@ -910,8 +910,15 @@ static void dnsort(struct dnode **dn, int size) | |||
910 | { | 910 | { |
911 | qsort(dn, size, sizeof(*dn), sortcmp); | 911 | qsort(dn, size, sizeof(*dn), sortcmp); |
912 | } | 912 | } |
913 | |||
914 | static void sort_and_display_files(struct dnode **dn, unsigned nfiles) | ||
915 | { | ||
916 | dnsort(dn, nfiles); | ||
917 | display_files(dn, nfiles); | ||
918 | } | ||
913 | #else | 919 | #else |
914 | #define dnsort(dn, size) ((void)0) | 920 | # define dnsort(dn, size) ((void)0) |
921 | # define sort_and_display_files(dn, nfiles) display_files(dn, nfiles) | ||
915 | #endif | 922 | #endif |
916 | 923 | ||
917 | /* Returns NULL-terminated malloced vector of pointers (or NULL) */ | 924 | /* Returns NULL-terminated malloced vector of pointers (or NULL) */ |
@@ -1022,8 +1029,7 @@ static void scan_and_display_dirs_recur(struct dnode **dn, int first) | |||
1022 | #endif | 1029 | #endif |
1023 | if (nfiles > 0) { | 1030 | if (nfiles > 0) { |
1024 | /* list all files at this level */ | 1031 | /* list all files at this level */ |
1025 | dnsort(subdnp, nfiles); | 1032 | sort_and_display_files(subdnp, nfiles); |
1026 | display_files(subdnp, nfiles); | ||
1027 | 1033 | ||
1028 | if (ENABLE_FEATURE_LS_RECURSIVE | 1034 | if (ENABLE_FEATURE_LS_RECURSIVE |
1029 | && (G.all_fmt & DISP_RECURSIVE) | 1035 | && (G.all_fmt & DISP_RECURSIVE) |
@@ -1216,16 +1222,14 @@ int ls_main(int argc UNUSED_PARAM, char **argv) | |||
1216 | } | 1222 | } |
1217 | 1223 | ||
1218 | if (G.all_fmt & DISP_NOLIST) { | 1224 | if (G.all_fmt & DISP_NOLIST) { |
1219 | dnsort(dnp, nfiles); | 1225 | sort_and_display_files(dnp, nfiles); |
1220 | display_files(dnp, nfiles); | ||
1221 | } else { | 1226 | } else { |
1222 | dnd = splitdnarray(dnp, SPLIT_DIR); | 1227 | dnd = splitdnarray(dnp, SPLIT_DIR); |
1223 | dnf = splitdnarray(dnp, SPLIT_FILE); | 1228 | dnf = splitdnarray(dnp, SPLIT_FILE); |
1224 | dndirs = count_dirs(dnp, SPLIT_DIR); | 1229 | dndirs = count_dirs(dnp, SPLIT_DIR); |
1225 | dnfiles = nfiles - dndirs; | 1230 | dnfiles = nfiles - dndirs; |
1226 | if (dnfiles > 0) { | 1231 | if (dnfiles > 0) { |
1227 | dnsort(dnf, dnfiles); | 1232 | sort_and_display_files(dnf, dnfiles); |
1228 | display_files(dnf, dnfiles); | ||
1229 | if (ENABLE_FEATURE_CLEAN_UP) | 1233 | if (ENABLE_FEATURE_CLEAN_UP) |
1230 | free(dnf); | 1234 | free(dnf); |
1231 | } | 1235 | } |