From 3a3cd240920e9fef6a3c5c07521f71368c2e69ed Mon Sep 17 00:00:00 2001 From: Markus Teich Date: Fri, 4 Oct 2013 11:12:11 +0100 Subject: [PATCH] ls: add option to reverse the sort order Now you can list directory contents ordered by mtime with the latest file displayed last in the output. --- ls.1 | 3 +++ ls.c | 8 ++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/ls.1 b/ls.1 index eb0b015..0c61721 100644 --- a/ls.1 +++ b/ls.1 @@ -24,6 +24,9 @@ print the index number of each file. lists detailed information about each file, including their type, permissions, links, owner, group, size, and modification time. .TP +.B \-r +reverses the sort order. +.TP .B \-t sorts files by modification time instead of by name. .TP diff --git a/ls.c b/ls.c index 98b4c3c..bc2ea4f 100644 --- a/ls.c +++ b/ls.c @@ -35,6 +35,7 @@ static bool iflag = false; static bool lflag = false; static bool tflag = false; static bool Uflag = false; +static int sortorder = 1; static bool first = true; static bool many; @@ -63,6 +64,9 @@ main(int argc, char *argv[]) case 'l': lflag = true; break; + case 'r': + sortorder = -1; + break; case 't': tflag = true; break; @@ -94,9 +98,9 @@ entcmp(const void *va, const void *vb) const Entry *a = va, *b = vb; if(tflag) - return b->mtime - a->mtime; + return sortorder * (b->mtime - a->mtime); else - return strcmp(a->name, b->name); + return sortorder * (strcmp(a->name, b->name)); } void