summaryrefslogtreecommitdiffstats
path: root/Demo/comparisons
diff options
context:
space:
mode:
Diffstat (limited to 'Demo/comparisons')
-rwxr-xr-xDemo/comparisons/regextest.py46
-rwxr-xr-xDemo/comparisons/sortingtest.py48
-rwxr-xr-xDemo/comparisons/systemtest.py96
3 files changed, 95 insertions, 95 deletions
diff --git a/Demo/comparisons/regextest.py b/Demo/comparisons/regextest.py
index 97564b7..e4e18d6 100755
--- a/Demo/comparisons/regextest.py
+++ b/Demo/comparisons/regextest.py
@@ -1,13 +1,13 @@
#! /usr/bin/env python
# 1) Regular Expressions Test
-#
-# Read a file of (extended per egrep) regular expressions (one per line),
+#
+# Read a file of (extended per egrep) regular expressions (one per line),
# and apply those to all files whose names are listed on the command line.
# Basically, an 'egrep -f' simulator. Test it with 20 "vt100" patterns
# against a five /etc/termcap files. Tests using more elaborate patters
# would also be interesting. Your code should not break if given hundreds
-# of regular expressions or binary files to scan.
+# of regular expressions or binary files to scan.
# This implementation:
# - combines all patterns into a single one using ( ... | ... | ... )
@@ -24,27 +24,27 @@ from regex_syntax import *
regex.set_syntax(RE_SYNTAX_EGREP)
def main():
- pats = map(chomp, sys.stdin.readlines())
- bigpat = '(' + string.joinfields(pats, '|') + ')'
- prog = regex.compile(bigpat)
-
- for file in sys.argv[1:]:
- try:
- fp = open(file, 'r')
- except IOError, msg:
- print "%s: %s" % (file, msg)
- continue
- lineno = 0
- while 1:
- line = fp.readline()
- if not line:
- break
- lineno = lineno + 1
- if prog.search(line) >= 0:
- print "%s:%s:%s" % (file, lineno, line),
+ pats = map(chomp, sys.stdin.readlines())
+ bigpat = '(' + string.joinfields(pats, '|') + ')'
+ prog = regex.compile(bigpat)
+
+ for file in sys.argv[1:]:
+ try:
+ fp = open(file, 'r')
+ except IOError, msg:
+ print "%s: %s" % (file, msg)
+ continue
+ lineno = 0
+ while 1:
+ line = fp.readline()
+ if not line:
+ break
+ lineno = lineno + 1
+ if prog.search(line) >= 0:
+ print "%s:%s:%s" % (file, lineno, line),
def chomp(s):
- if s[-1:] == '\n': return s[:-1]
- else: return s
+ if s[-1:] == '\n': return s[:-1]
+ else: return s
main()
diff --git a/Demo/comparisons/sortingtest.py b/Demo/comparisons/sortingtest.py
index d6c213c..8fe2bbb 100755
--- a/Demo/comparisons/sortingtest.py
+++ b/Demo/comparisons/sortingtest.py
@@ -1,17 +1,17 @@
#! /usr/bin/env python
# 2) Sorting Test
-#
+#
# Sort an input file that consists of lines like this
-#
+#
# var1=23 other=14 ditto=23 fred=2
-#
+#
# such that each output line is sorted WRT to the number. Order
# of output lines does not change. Resolve collisions using the
# variable name. e.g.
-#
-# fred=2 other=14 ditto=23 var1=23
-#
+#
+# fred=2 other=14 ditto=23 var1=23
+#
# Lines may be up to several kilobytes in length and contain
# zillions of variables.
@@ -28,23 +28,23 @@ import string
import sys
def main():
- prog = regex.compile('^\(.*\)=\([-+]?[0-9]+\)')
- def makekey(item, prog=prog):
- if prog.match(item) >= 0:
- var, num = prog.group(1, 2)
- return string.atoi(num), var
- else:
- # Bad input -- pretend it's a var with value 0
- return 0, item
- while 1:
- line = sys.stdin.readline()
- if not line:
- break
- items = string.split(line)
- items = map(makekey, items)
- items.sort()
- for num, var in items:
- print "%s=%s" % (var, num),
- print
+ prog = regex.compile('^\(.*\)=\([-+]?[0-9]+\)')
+ def makekey(item, prog=prog):
+ if prog.match(item) >= 0:
+ var, num = prog.group(1, 2)
+ return string.atoi(num), var
+ else:
+ # Bad input -- pretend it's a var with value 0
+ return 0, item
+ while 1:
+ line = sys.stdin.readline()
+ if not line:
+ break
+ items = string.split(line)
+ items = map(makekey, items)
+ items.sort()
+ for num, var in items:
+ print "%s=%s" % (var, num),
+ print
main()
diff --git a/Demo/comparisons/systemtest.py b/Demo/comparisons/systemtest.py
index f2533b1..bbc313b 100755
--- a/Demo/comparisons/systemtest.py
+++ b/Demo/comparisons/systemtest.py
@@ -1,7 +1,7 @@
#! /usr/bin/env python
# 3) System Test
-#
+#
# Given a list of directories, report any bogus symbolic links contained
# anywhere in those subtrees. A bogus symbolic link is one that cannot
# be resolved because it points to a nonexistent or otherwise
@@ -21,54 +21,54 @@ import sys
from stat import *
def main():
- try:
- # Note: can't test for presence of lstat -- it's always there
- dummy = os.readlink
- except AttributeError:
- print "This system doesn't have symbolic links"
- sys.exit(0)
- if sys.argv[1:]:
- prefix = sys.argv[1]
- else:
- prefix = ''
- if prefix:
- os.chdir(prefix)
- if prefix[-1:] != '/': prefix = prefix + '/'
- reportboguslinks(prefix)
- else:
- reportboguslinks('')
+ try:
+ # Note: can't test for presence of lstat -- it's always there
+ dummy = os.readlink
+ except AttributeError:
+ print "This system doesn't have symbolic links"
+ sys.exit(0)
+ if sys.argv[1:]:
+ prefix = sys.argv[1]
+ else:
+ prefix = ''
+ if prefix:
+ os.chdir(prefix)
+ if prefix[-1:] != '/': prefix = prefix + '/'
+ reportboguslinks(prefix)
+ else:
+ reportboguslinks('')
def reportboguslinks(prefix):
- try:
- names = os.listdir('.')
- except os.error, msg:
- print "%s%s: can't list: %s" % (prefix, '.', msg)
- return
- names.sort()
- for name in names:
- if name == os.curdir or name == os.pardir:
- continue
- try:
- mode = os.lstat(name)[ST_MODE]
- except os.error:
- print "%s%s: can't stat: %s" % (prefix, name, msg)
- continue
- if S_ISLNK(mode):
- try:
- os.stat(name)
- except os.error:
- print "%s%s -> %s" % \
- (prefix, name, os.readlink(name))
- elif S_ISDIR(mode):
- try:
- os.chdir(name)
- except os.error, msg:
- print "%s%s: can't chdir: %s" % \
- (prefix, name, msg)
- continue
- try:
- reportboguslinks(prefix + name + '/')
- finally:
- os.chdir('..')
+ try:
+ names = os.listdir('.')
+ except os.error, msg:
+ print "%s%s: can't list: %s" % (prefix, '.', msg)
+ return
+ names.sort()
+ for name in names:
+ if name == os.curdir or name == os.pardir:
+ continue
+ try:
+ mode = os.lstat(name)[ST_MODE]
+ except os.error:
+ print "%s%s: can't stat: %s" % (prefix, name, msg)
+ continue
+ if S_ISLNK(mode):
+ try:
+ os.stat(name)
+ except os.error:
+ print "%s%s -> %s" % \
+ (prefix, name, os.readlink(name))
+ elif S_ISDIR(mode):
+ try:
+ os.chdir(name)
+ except os.error, msg:
+ print "%s%s: can't chdir: %s" % \
+ (prefix, name, msg)
+ continue
+ try:
+ reportboguslinks(prefix + name + '/')
+ finally:
+ os.chdir('..')
main()