From e1f13107a25bfe3f0ccd7cf3425058b91631a5d4 Mon Sep 17 00:00:00 2001 From: Martin Langhoff Date: Fri, 13 Sep 2013 15:11:38 -0400 Subject: [PATCH] zcatfollows now works as smart tail --- zcatfollow | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/zcatfollow b/zcatfollow index 04f73df..9a5eec1 100755 --- a/zcatfollow +++ b/zcatfollow @@ -11,11 +11,18 @@ import sys import gzip import zlib import time +from collections import deque ## init globals used in sig handler # fh in append, binary f = gzip.open(sys.argv[1], 'r') +# lookbehind buffer, defined as a list +lbbufsize=10 +lbbuf=deque([]) +buffering=True +bufferfull=False + # while / readline() sidesteps magic input buffering while 1: try: @@ -30,9 +37,25 @@ while 1: if not line: if f.closed: break + if buffering: + # got to the current tail of it + # dump our lookbehind buffer, stop buffering + for buf_line in lbbuf: + print buf_line + buffering=False # internal gzip API use? # f.decompress.flush() time.sleep(0.1) else: - print line + if not buffering: + print line + else: + if bufferfull: + lbbuf.popleft() + lbbuf.append(line) + else: + lbbuf.append(line) + if len(lbbuf) >= lbbufsize: + bufferfull=True + -- 2.11.4.GIT