+ for root,dirs,files in os.walk(dir, followlinks=True):
+ # prevent inifinite recursion
+ recurse = []
+ for dir in dirs:
+ dirname = os.path.join(root, dir)
+ dirname = os.path.realpath(dirname)
+ dirname = os.path.normcase(dirname)
+ if dirname not in visited:
+ visited.add(dirname)
+ recurse.append(dir)
+ dirs[:] = recurse