Add tac utility

This commit is contained in:
joachimschmidt557 2019-03-29 11:15:36 +01:00
parent 1b57bc6fa3
commit 33a314f900
3 changed files with 53 additions and 4 deletions

34
tac.nim
View file

@ -0,0 +1,34 @@
import cligen, os, streams
import common
proc catFile(file:string) =
if not existsFile(file):
err "tac: " & file & ": No such file or directory"
system.quit 1
var
f = open(file, fmRead)
reverseLines: seq[string]
for line in lines(f):
reverseLines = line & reverseLines
for line in reverseLines:
writeLine(stdout, line)
proc catStdin() =
var
line = ""
reverseLines: seq[string]
while stdin.readLine(line):
reverseLines = line & reverseLines
for line in reverseLines:
writeLine(stdout, line)
proc main(files:seq[string]) =
if files.len == 0:
catStdin()
for file in files:
if file == "-":
catStdin()
else:
catFile(file)
dispatch(main, version=("version", nimbaseVersion))