ls: make -v and -X actually work as intended
function old new delta strverscmp - 236 +236 sortcmp 186 254 +68 static.result_type - 60 +60 static.next_state 12 16 +4 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
b307eabf4d
commit
f194cc1f33
@ -874,19 +874,27 @@ static int sortcmp(const void *a, const void *b)
|
||||
// instead of branch forest
|
||||
if (sort_opts == SORT_SIZE) {
|
||||
dif = (d2->dn_size - d1->dn_size);
|
||||
} else if (sort_opts == SORT_ATIME) {
|
||||
} else
|
||||
if (sort_opts == SORT_ATIME) {
|
||||
dif = (d2->dn_atime - d1->dn_atime);
|
||||
} else if (sort_opts == SORT_CTIME) {
|
||||
} else
|
||||
if (sort_opts == SORT_CTIME) {
|
||||
dif = (d2->dn_ctime - d1->dn_ctime);
|
||||
} else if (sort_opts == SORT_MTIME) {
|
||||
} else
|
||||
if (sort_opts == SORT_MTIME) {
|
||||
dif = (d2->dn_mtime - d1->dn_mtime);
|
||||
} else if (sort_opts == SORT_DIR) {
|
||||
} else
|
||||
if (sort_opts == SORT_DIR) {
|
||||
dif = S_ISDIR(d2->dn_mode) - S_ISDIR(d1->dn_mode);
|
||||
/* } else if (sort_opts == SORT_VERSION) { */
|
||||
/* } else if (sort_opts == SORT_EXT) { */
|
||||
} else
|
||||
if (sort_opts == SORT_VERSION) {
|
||||
dif = strverscmp(d1->name, d2->name);
|
||||
} else
|
||||
if (sort_opts == SORT_EXT) {
|
||||
dif = strcmp(strchrnul(d1->name, '.'), strchrnul(d2->name, '.'));
|
||||
}
|
||||
if (dif == 0) {
|
||||
/* sort by name, or tie_breaker for other sorts */
|
||||
/* sort by name, use as tie breaker for other sorts */
|
||||
if (ENABLE_LOCALE_SUPPORT)
|
||||
dif = strcoll(d1->name, d2->name);
|
||||
else
|
||||
|
Loading…
Reference in New Issue
Block a user