#! /usr/local/bin/python

# Find symbolic links and show where they point to.
# Arguments are directories to search; default is current directory.
# No recursion.
# (This is a totally different program from "findsymlinks.py"!)

import sys, os

def lll(dirname):
	for name in os.listdir(dirname):
		if name not in (os.curdir, os.pardir):
			full = os.path.join(dirname, name)
			if os.path.islink(full):
				print name, '->', os.readlink(full)

args = sys.argv[1:]
if not args: args = [os.curdir]
first = 1
for arg in args:
	if len(args) > 1:
		if not first: print
		first = 0
		print arg + ':'
	lll(arg)
