#!/usr/bin/env python """Recursively find symbolic link loops in specified directory tree""" from optparse import OptionParser import errno import sys import os __license__ = 'BSD' def main(argv=None): optparse = OptionParser('%prog ', description=__doc__) args = optparse.parse_args(argv)[1] if len(args) != 1: optparse.print_help() return 2 for basedir, subdirs, filenames in os.walk(args[0]): for filename in filenames: path = os.path.join(basedir, filename) if os.path.islink(path): try: os.stat(path) except (OSError, IOError), error: if error.errno == errno.ELOOP: print >> sys.stderr, 'ELOOP: %s <-> %s' % ( path, os.path.join(basedir, os.readlink(path))) return 0 if __name__ == '__main__': sys.exit(main())