#!/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())