Add 't' command to sort output by entry's mtime

This commit is contained in:
sin 2015-01-31 22:02:59 +00:00
parent 6735c1f979
commit a63aac0b11
3 changed files with 13 additions and 0 deletions

View file

@ -47,4 +47,5 @@ struct key bindings[] = {
{ '!', SEL_SH },
/* Change dir */
{ 'c', SEL_CD },
{ 't', SEL_MTIME },
};

View file

@ -47,6 +47,8 @@ Change filter (see below for more information).
Enter filter-as-you-type mode.
.It Ic c
Change into the given directory.
.It Ic t
Sort by time modified.
.It Ic !
Spawn shell in current directory.
.It Ic q

10
noice.c
View file

@ -56,6 +56,7 @@ enum action {
SEL_PGUP,
SEL_SH,
SEL_CD,
SEL_MTIME,
};
struct key {
@ -68,8 +69,11 @@ struct key {
struct entry {
char *name;
mode_t mode;
time_t t;
};
int mtimeorder;
/*
* Layout:
* .---------
@ -231,6 +235,8 @@ entrycmp(const void *va, const void *vb)
a = (struct entry *)va;
b = (struct entry *)vb;
if (mtimeorder)
return b->t - a->t;
return strcmp(a->name, b->name);
}
@ -487,6 +493,7 @@ dentfill(char *path, struct entry **dents,
if (r == -1)
printerr(1, "lstat");
(*dents)[n].mode = sb.st_mode;
(*dents)[n].t = sb.st_mtime;
n++;
}
@ -809,6 +816,9 @@ moretyping:
filter = xstrdup(ifilter); /* Reset filter */
DPRINTF_S(path);
goto out;
case SEL_MTIME:
mtimeorder = !mtimeorder;
goto out;
}
}