Implement -u support for ls(1)
This commit is contained in:
parent
9bd094193d
commit
2a3f82a5cd
2
README
2
README
|
@ -40,7 +40,7 @@ The following tools are implemented ('*' == finished, '#' == UTF-8 support,
|
||||||
=* ln yes none
|
=* ln yes none
|
||||||
=* logger yes none
|
=* logger yes none
|
||||||
=* logname yes none
|
=* logname yes none
|
||||||
= ls no -C, -R, -u
|
= ls no -C, -R
|
||||||
=* md5sum non-posix none
|
=* md5sum non-posix none
|
||||||
=* mkdir yes none
|
=* mkdir yes none
|
||||||
=* mkfifo yes none
|
=* mkfifo yes none
|
||||||
|
|
7
ls.1
7
ls.1
|
@ -1,4 +1,4 @@
|
||||||
.Dd February 17, 2015
|
.Dd February 18, 2015
|
||||||
.Dt LS 1
|
.Dt LS 1
|
||||||
.Os sbase
|
.Os sbase
|
||||||
.Sh NAME
|
.Sh NAME
|
||||||
|
@ -6,7 +6,7 @@
|
||||||
.Nd list directory contents
|
.Nd list directory contents
|
||||||
.Sh SYNOPSIS
|
.Sh SYNOPSIS
|
||||||
.Nm
|
.Nm
|
||||||
.Op Fl 1acdFHhiLlqrtU
|
.Op Fl 1acdFHhiLlqrtUu
|
||||||
.Op Ar file ...
|
.Op Ar file ...
|
||||||
.Sh DESCRIPTION
|
.Sh DESCRIPTION
|
||||||
.Nm
|
.Nm
|
||||||
|
@ -44,6 +44,9 @@ Reverse the sort order.
|
||||||
Sort files by last file status/modification time instead of by name.
|
Sort files by last file status/modification time instead of by name.
|
||||||
.It Fl U
|
.It Fl U
|
||||||
Keep the list unsorted.
|
Keep the list unsorted.
|
||||||
|
.It Fl u
|
||||||
|
Use file's last access time instead of last modification time for
|
||||||
|
sorting or printing.
|
||||||
.El
|
.El
|
||||||
.Sh SEE ALSO
|
.Sh SEE ALSO
|
||||||
.Xr stat 2
|
.Xr stat 2
|
||||||
|
|
15
ls.c
15
ls.c
|
@ -37,6 +37,7 @@ static int qflag = 0;
|
||||||
static int rflag = 0;
|
static int rflag = 0;
|
||||||
static int tflag = 0;
|
static int tflag = 0;
|
||||||
static int Uflag = 0;
|
static int Uflag = 0;
|
||||||
|
static int uflag = 0;
|
||||||
static int first = 1;
|
static int first = 1;
|
||||||
static int many;
|
static int many;
|
||||||
|
|
||||||
|
@ -55,7 +56,12 @@ mkent(struct entry *ent, char *path, int dostat, int follow)
|
||||||
ent->uid = st.st_uid;
|
ent->uid = st.st_uid;
|
||||||
ent->gid = st.st_gid;
|
ent->gid = st.st_gid;
|
||||||
ent->size = st.st_size;
|
ent->size = st.st_size;
|
||||||
ent->t = cflag ? st.st_ctime : st.st_mtime;
|
if (cflag)
|
||||||
|
ent->t = st.st_ctime;
|
||||||
|
else if (uflag)
|
||||||
|
ent->t = st.st_atime;
|
||||||
|
else
|
||||||
|
ent->t = st.st_mtime;
|
||||||
ent->ino = st.st_ino;
|
ent->ino = st.st_ino;
|
||||||
if (S_ISLNK(ent->mode))
|
if (S_ISLNK(ent->mode))
|
||||||
ent->tmode = stat(path, &st) == 0 ? st.st_mode : 0;
|
ent->tmode = stat(path, &st) == 0 ? st.st_mode : 0;
|
||||||
|
@ -247,7 +253,7 @@ ls(const struct entry *ent)
|
||||||
static void
|
static void
|
||||||
usage(void)
|
usage(void)
|
||||||
{
|
{
|
||||||
eprintf("usage: %s [-1acdFHhiLlqrtU] [file ...]\n", argv0);
|
eprintf("usage: %s [-1acdFHhiLlqrtUu] [file ...]\n", argv0);
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
|
@ -265,6 +271,7 @@ main(int argc, char *argv[])
|
||||||
break;
|
break;
|
||||||
case 'c':
|
case 'c':
|
||||||
cflag = 1;
|
cflag = 1;
|
||||||
|
uflag = 0;
|
||||||
break;
|
break;
|
||||||
case 'd':
|
case 'd':
|
||||||
dflag = 1;
|
dflag = 1;
|
||||||
|
@ -299,6 +306,10 @@ main(int argc, char *argv[])
|
||||||
case 'U':
|
case 'U':
|
||||||
Uflag = 1;
|
Uflag = 1;
|
||||||
break;
|
break;
|
||||||
|
case 'u':
|
||||||
|
uflag = 1;
|
||||||
|
cflag = 0;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
usage();
|
usage();
|
||||||
} ARGEND;
|
} ARGEND;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user