mirror of
https://code.blicky.net/yorhel/ncdu.git
synced 2026-01-15 10:18:39 -09:00
Add --(enable|disable)-natsort options
Backport of zig/46b88bcb5ca584ff2c976af40a182e8e048892be
This commit is contained in:
parent
960661e93a
commit
b93acabd59
4 changed files with 11 additions and 2 deletions
|
|
@ -238,6 +238,10 @@ The column can be suffixed with I<-asc> or I<-desc> to set the order to
|
||||||
ascending or descending, respectively. e.g. C<--sort=name-desc> will sort by
|
ascending or descending, respectively. e.g. C<--sort=name-desc> will sort by
|
||||||
name in descending order.
|
name in descending order.
|
||||||
|
|
||||||
|
=item B<--enable-natsort>, B<--disable-natsort>
|
||||||
|
|
||||||
|
Enable (default) or disable natural sort when sorting by file name.
|
||||||
|
|
||||||
=item B<--group-directories-first>, B<--no-group-directories-first>
|
=item B<--group-directories-first>, B<--no-group-directories-first>
|
||||||
|
|
||||||
Sort (or not) directories before files.
|
Sort (or not) directories before files.
|
||||||
|
|
|
||||||
|
|
@ -39,7 +39,8 @@ int64_t dirlist_maxs = 0,
|
||||||
int dirlist_sort_desc = 1,
|
int dirlist_sort_desc = 1,
|
||||||
dirlist_sort_col = DL_COL_SIZE,
|
dirlist_sort_col = DL_COL_SIZE,
|
||||||
dirlist_sort_df = 0,
|
dirlist_sort_df = 0,
|
||||||
dirlist_hidden = 0;
|
dirlist_hidden = 0,
|
||||||
|
dirlist_natsort = 1;
|
||||||
|
|
||||||
/* private state vars */
|
/* private state vars */
|
||||||
static struct dir *parent_alloc, *head, *head_real, *selected, *top = NULL;
|
static struct dir *parent_alloc, *head, *head_real, *selected, *top = NULL;
|
||||||
|
|
@ -80,7 +81,7 @@ static int dirlist_cmp(struct dir *x, struct dir *y) {
|
||||||
*
|
*
|
||||||
* Note that the method used below is supposed to be fast, not readable :-)
|
* Note that the method used below is supposed to be fast, not readable :-)
|
||||||
*/
|
*/
|
||||||
#define CMP_NAME strnatcmp(x->name, y->name)
|
#define CMP_NAME (dirlist_natsort ? strnatcmp(x->name, y->name) : strcmp(x->name, y->name))
|
||||||
#define CMP_SIZE (x->size > y->size ? 1 : (x->size == y->size ? 0 : -1))
|
#define CMP_SIZE (x->size > y->size ? 1 : (x->size == y->size ? 0 : -1))
|
||||||
#define CMP_ASIZE (x->asize > y->asize ? 1 : (x->asize == y->asize ? 0 : -1))
|
#define CMP_ASIZE (x->asize > y->asize ? 1 : (x->asize == y->asize ? 0 : -1))
|
||||||
#define CMP_ITEMS (x->items > y->items ? 1 : (x->items == y->items ? 0 : -1))
|
#define CMP_ITEMS (x->items > y->items ? 1 : (x->items == y->items ? 0 : -1))
|
||||||
|
|
|
||||||
|
|
@ -78,6 +78,8 @@ extern int dirlist_sort_desc, dirlist_sort_col, dirlist_sort_df;
|
||||||
/* set with dirlist_set_hidden() */
|
/* set with dirlist_set_hidden() */
|
||||||
extern int dirlist_hidden;
|
extern int dirlist_hidden;
|
||||||
|
|
||||||
|
extern int dirlist_natsort;
|
||||||
|
|
||||||
/* maximum size of an item in the opened dir */
|
/* maximum size of an item in the opened dir */
|
||||||
extern int64_t dirlist_maxs, dirlist_maxa;
|
extern int64_t dirlist_maxs, dirlist_maxa;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -219,6 +219,8 @@ static int arg_option(void) {
|
||||||
else if(OPT("--hide-percent")) graph &= 1;
|
else if(OPT("--hide-percent")) graph &= 1;
|
||||||
else if(OPT("--group-directories-first")) dirlist_sort_df = 1;
|
else if(OPT("--group-directories-first")) dirlist_sort_df = 1;
|
||||||
else if(OPT("--no-group-directories-first")) dirlist_sort_df = 0;
|
else if(OPT("--no-group-directories-first")) dirlist_sort_df = 0;
|
||||||
|
else if(OPT("--enable-natsort")) dirlist_natsort = 1;
|
||||||
|
else if(OPT("--disable-natsort")) dirlist_natsort = 0;
|
||||||
else if(OPT("--sort")) {
|
else if(OPT("--sort")) {
|
||||||
arg = ARG;
|
arg = ARG;
|
||||||
tmp = strrchr(arg, '-');
|
tmp = strrchr(arg, '-');
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue