summaryrefslogtreecommitdiff
path: root/ACE/bin/fuzz.py
diff options
context:
space:
mode:
Diffstat (limited to 'ACE/bin/fuzz.py')
-rwxr-xr-xACE/bin/fuzz.py66
1 files changed, 66 insertions, 0 deletions
diff --git a/ACE/bin/fuzz.py b/ACE/bin/fuzz.py
new file mode 100755
index 00000000000..cdf38de87f5
--- /dev/null
+++ b/ACE/bin/fuzz.py
@@ -0,0 +1,66 @@
+#!/usr/bin/env python
+""" Implements a command line client for the Python Fuzz module, much like fuzz.pl """
+
+def parse_args ():
+ from optparse import OptionParser
+
+ parser = OptionParser ("usage %prog [options] <files or directories to check>")
+
+ parser.add_option ("--exclude-dirs", dest="exclude_dir", action="append", default=list (),
+ help="A regular expression that when matched, will cause directories to be skipped.")
+ parser.add_option ("--exclude-files", dest="exclude_file", action="append", default=list (),
+ help="A regular expression that when matched, will cause files to be skipped.")
+
+ return parser.parse_args ()
+
+
+import PythonACE.fuzz
+
+class Fuzz_Client:
+ def __init__ (self, opts, args):
+ import re
+
+ self.ex_dirs = map (re.compile, opts.exclude_dir)
+ self.ex_files = map (re.compile, opts.exclude_file)
+ self.args = args
+
+ def walk_dir (self, directory):
+ import os
+
+ for root, dirs, files in os.walk (directory):
+ # Prune out .svn directories
+ for item in dirs:
+ if item == ".svn":
+ dirs.remove (item)
+
+ # Prune out exclusions
+ for regex in self.ex_dirs:
+ if regex.search (item) != None:
+ dirs.remove (item)
+
+ for item in files:
+ for regex in self.ex_files:
+ if regex.serch (item) != None:
+ continue
+ self.check_file (os.path.join (root, item))
+
+ def check_file (self, the_file):
+ f = open (the_file, 'r')
+ PythonACE.fuzz.fuzz_check (the_file, f.read ())
+ f.close ()
+
+ def main (self):
+ for item in self.args:
+ import os.path
+ if os.path.isfile (item):
+ self.check_file (item)
+ elif os.path.isdir (item):
+ self.walk_dir (item)
+ else:
+ print item + " is not a file or directory."
+
+if __name__ == "__main__":
+ opts, args = parse_args ()
+ Fuzz = Fuzz_Client(opts, args)
+ Fuzz.main ()
+