浏览代码

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

master
sin 10 年前
父节点
当前提交
a63aac0b11
共有 3 个文件被更改,包括 13 次插入0 次删除
  1. +1
    -0
      config.def.h
  2. +2
    -0
      noice.1
  3. +10
    -0
      noice.c

+ 1
- 0
config.def.h 查看文件

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

+ 2
- 0
noice.1 查看文件

@@ -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
- 0
noice.c 查看文件

@@ -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;
}
}



||||||
x
 
000:0
正在加载...
取消
保存