summaryrefslogtreecommitdiffstats
path: root/Tools/scripts/rgrep.py
diff options
context:
space:
mode:
Diffstat (limited to 'Tools/scripts/rgrep.py')
-rwxr-xr-xTools/scripts/rgrep.py67
1 files changed, 32 insertions, 35 deletions
diff --git a/Tools/scripts/rgrep.py b/Tools/scripts/rgrep.py
index c39bf93..b644206 100755
--- a/Tools/scripts/rgrep.py
+++ b/Tools/scripts/rgrep.py
@@ -1,4 +1,4 @@
-#! /usr/bin/env python3
+#! /usr/bin/env python
"""Reverse grep.
@@ -9,9 +9,8 @@ import sys
import re
import getopt
-
def main():
- bufsize = 64 * 1024
+ bufsize = 64*1024
reflags = 0
opts, args = getopt.getopt(sys.argv[1:], "i")
for o, a in opts:
@@ -24,44 +23,42 @@ def main():
pattern, filename = args
try:
prog = re.compile(pattern, reflags)
- except re.error as msg:
- usage("error in regular expression: %s" % msg)
+ except re.error, msg:
+ usage("error in regular expression: %s" % str(msg))
try:
f = open(filename)
- except IOError as msg:
- usage("can't open %r: %s" % (filename, msg), 1)
- with f:
- f.seek(0, 2)
- pos = f.tell()
- leftover = None
- while pos > 0:
- size = min(pos, bufsize)
- pos = pos - size
- f.seek(pos)
- buffer = f.read(size)
- lines = buffer.split("\n")
- del buffer
- if leftover is None:
- if not lines[-1]:
- del lines[-1]
- else:
- lines[-1] = lines[-1] + leftover
- if pos > 0:
- leftover = lines[0]
- del lines[0]
- else:
- leftover = None
- for line in reversed(lines):
- if prog.search(line):
- print(line)
-
+ except IOError, msg:
+ usage("can't open %s: %s" % (repr(filename), str(msg)), 1)
+ f.seek(0, 2)
+ pos = f.tell()
+ leftover = None
+ while pos > 0:
+ size = min(pos, bufsize)
+ pos = pos - size
+ f.seek(pos)
+ buffer = f.read(size)
+ lines = buffer.split("\n")
+ del buffer
+ if leftover is None:
+ if not lines[-1]:
+ del lines[-1]
+ else:
+ lines[-1] = lines[-1] + leftover
+ if pos > 0:
+ leftover = lines[0]
+ del lines[0]
+ else:
+ leftover = None
+ lines.reverse()
+ for line in lines:
+ if prog.search(line):
+ print line
def usage(msg, code=2):
sys.stdout = sys.stderr
- print(msg)
- print(__doc__)
+ print msg
+ print __doc__
sys.exit(code)
-
if __name__ == '__main__':
main()