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