Add tac utility
This commit is contained in:
parent
1b57bc6fa3
commit
33a314f900
3 changed files with 53 additions and 4 deletions
34
tac.nim
34
tac.nim
|
|
@ -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))
|
||||
Loading…
Add table
Add a link
Reference in a new issue