path2" as it goes
# - prints error messages about directories it can't list or chdir into
import os
import sys
from stat import *
def main():
try:
# Note: can't test for presence of lstat -- it's always there
dummy = os.readlink
except AttributeError:
print "This system doesn't have symbolic links"
sys.exit(0)
if sys.argv[1:]:
prefix = sys.argv[1]
else:
prefix = ''
if prefix:
os.chdir(prefix)
if prefix[-1:] != '/': prefix = prefix + '/'
reportboguslinks(prefix)
else:
reportboguslinks('')
def reportboguslinks(prefix):
try:
names = os.listdir('.')
except os.error, msg:
print "%s%s: can't list: %s" % (prefix, '.', msg)
return
names.sort()
for name in names:
if name == os.curdir or name == os.pardir:
continue
try:
mode = os.lstat(name)[ST_MODE]
except os.error:
print "%s%s: can't stat: %s" % (prefix, name, msg)
continue
if S_ISLNK(mode):
try:
os.stat(name)
except os.error:
print "%s%s -> %s" % \
(prefix, name, os.readlink(name))
elif S_ISDIR(mode):
try:
os.chdir(name)
except os.error, msg:
print "%s%s: can't chdir: %s" % \
(prefix, name, msg)
continue
try:
reportboguslinks(prefix + name + '/')
finally:
os.chdir('..')
main()