From 0efbfd36f554a534750bbebb1e68a76aada3faa6 Mon Sep 17 00:00:00 2001 From: Anthony Martin Date: Mon, 28 Jun 2010 14:33:30 -0700 Subject: 9p: tflag sorts by mtime R=rsc CC=codebot http://codereview.appspot.com/1265043 --- src/cmd/9p.c | 32 +++++++++++++++++++++++++++----- 1 file changed, 27 insertions(+), 5 deletions(-) (limited to 'src/cmd/9p.c') diff --git a/src/cmd/9p.c b/src/cmd/9p.c index ed80f5a6..6d329d6d 100644 --- a/src/cmd/9p.c +++ b/src/cmd/9p.c @@ -476,6 +476,21 @@ dircmp(const void *va, const void *vb) return strcmp(a->name, b->name); } +static int +timecmp(const void *va, const void *vb) +{ + Dir *a, *b; + + a = (Dir*)va; + b = (Dir*)vb; + if(a->mtime < b->mtime) + return -1; + else if(a->mtime > b->mtime) + return 1; + else + return 0; +} + char *dot[] = { "." }; void @@ -483,14 +498,14 @@ xls(int argc, char **argv) { char *err, *name, *xname, *f[4], buf[4096]; int nf, i, j, l, sort; - int lflag, dflag, n, len[4]; + int lflag, dflag, tflag, n, len[4]; Dir *d; CFid *fid; CFsys *fs; err = nil; - sort = 0; - lflag = dflag = 0; + sort = 1; + lflag = dflag = tflag = 0; ARGBEGIN{ case 'n': sort = 0; @@ -501,6 +516,9 @@ xls(int argc, char **argv) case 'd': dflag = 1; break; + case 't': + tflag = 1; + break; }ARGEND fmtinstall('D', dirfmt); @@ -538,8 +556,12 @@ xls(int argc, char **argv) err = "errors"; continue; } - if(sort) - qsort(d, n, sizeof d[0], dircmp); + if(sort){ + if(tflag) + qsort(d, n, sizeof d[0], timecmp); + else + qsort(d, n, sizeof d[0], dircmp); + } for(j=0; j<4; j++) len[j] = 0; for(i=0; i