From 4c86254bd0af752727e56ff984d189064ccf2a88 Mon Sep 17 00:00:00 2001 From: Daniel Gnoutcheff Date: Wed, 29 Jun 2016 16:36:14 -0400 Subject: Split AVFS stuff into its own module. --- suspicious | 101 ++----------------------------------------------------------- 1 file changed, 3 insertions(+), 98 deletions(-) (limited to 'suspicious') diff --git a/suspicious b/suspicious index 4d62ad9..9f6e6ea 100755 --- a/suspicious +++ b/suspicious @@ -32,102 +32,7 @@ import sys import datetime import string import subprocess - -# AVFS stuff ------------------------------------------------------------------ - -avfs_sys_mount = os.environ['HOME'] + '/.avfs' -avfs_started = False -def avfs_sys_name(fpath): - if not avfs_started: - subprocess.check_call(['mountavfs']) - return avfs_sys_mount + os.path.abspath(fpath) - -def avfs_exists(fpath): - return os.path.exists(avfs_sys_name(fpath)) - -def avfs_isdir(fpath): - return os.path.isdir(avfs_sys_name(fpath)) - -def avfs_open(fpath, *pargs, **kwargs): - return open(avfs_sys_name(fpath), *pargs, **kwargs) - -# AVFS has its own automatic view selection using file extensions, but it -# includes plugins (like #patch) that will lead us into an infinite loop -# if we try to do a directory traversal. Also, there are a few -# extensions we want to add. - -avfscmds = { - ('.gz', '#ugz'), - ('.tgz', '#ugz#utar'), - ('.tar.bz2', '#ubz2#utar'), - ('.bz2', '#ubz2'), - ('.bz', '#ubz2'), - ('.tbz2', '#ubz2#utar'), - ('.tbz', '#ubz2#utar'), - ('.Z', '#uz'), - ('.tpz', '#uz#utar'), - ('.tz', '#uz#utar'), - ('.taz', '#uz#utar'), - ('.a', '#uar'), - ('.deb', '#uar'), - ('.tar', '#utar'), - ('.gem', '#utar'), # Add upstream - ('.rar', '#urar'), - ('.sfx', '#urar'), - ('.zip', '#uzip'), - ('.jar', '#uzip'), - ('.ear', '#uzip'), - ('.war', '#uzip'), - ('.nupkg', '#uzip'), # Add upstream - ('.whl', '#uzip'), # Add upstream - ('.7z', '#u7z'), - ('.zoo', '#uzoo'), - ('.lha', '#ulha'), - ('.lhz', '#ulha'), - ('.arj', '#uarj'), - ('.cpio', '#ucpio'), - ('.rpm', '#rpm'), - ('.tar.xz', '#uxze#utar'), - ('.txz', '#uxze#utar'), - ('.xz', '#uxze'), - ('.lzma', '#uxze'), -} - -def avfs_guesscmd(filename): - for ext, cmd in avfscmds: - if filename.endswith(ext): - return cmd + avfs_guesscmd(filename[:-len(ext)]) - return '' - -def avfs_find(rootdir, prunedirs): - """ - Recursively list all files under rootdir, including files in archives - supported by AVFS. - """ - - sys_rootdir = avfs_sys_name(rootdir) - - for name in os.listdir(sys_rootdir): - path = rootdir + '/' + name - sys_path = sys_rootdir + '/' + name - - if os.path.isdir(sys_path): - if name not in prunedirs: - yield from avfs_find(path, prunedirs) - else: - cmd = avfs_guesscmd(name) - filtered_path = path + cmd - sys_filtered_path = sys_path + cmd - - if cmd and os.path.exists(sys_filtered_path): - if os.path.isdir(sys_filtered_path): - yield from avfs_find(filtered_path, prunedirs) - else: - yield filtered_path - else: - yield path - -# ----------------------------------------------------------------------------- +import avfs report = {} wordscore = {} @@ -383,7 +288,7 @@ if options.displaysummary and options.summaryfile: prunedirs = {'CVS', '.git', '.bzr', '.hg', '.svn'} if len(args) > 0: for a in args: - filelist.extend(avfs_find(a, prunedirs)) + filelist.extend(avfs.find(a, prunedirs)) start = datetime.datetime.now() for file in filelist: @@ -391,7 +296,7 @@ for file in filelist: skipped += 1 continue try: - f = avfs_open(file) + f = avfs.open(file) except: print("failed to open: " + file) continue -- cgit v1.2.3