##set -x check_external_link () { file=$1 shift if test -z "${file}"; then return 1 ; fi if test ! -L "${file}"; then return 1 ; fi a=`ls -l $file | awk '{ print $9 ":" $11}'` src=`echo $a | cut -d: -f1` dest=`echo $a | cut -d: -f2` if test -z "${dest}"; then return 1 fi d=`dirname ${src}` if test "${d}" = "."; then d=; fi hsrc=`(cd ${root}/${d}; pwd)` d=`dirname ${dest}` if test "${d}" = "."; then d=; fi if test -z `echo ${d} | egrep -e '^/'`; then hdest=`(cd ${hsrc}/${d}; pwd)` else hdest=`(cd ${d}; pwd)` fi while test ! -z `echo ${hdest} | egrep '[.][.]'`; do ##echo hdest=${hdest} newhdest=`echo ${hdest} | \ sed -e 's#/[^/]*/[.][.]/#/#g' \ -e 's#^[^/]*/[.][.]/#/#g' \ -e 's#/[^/]*/[.][.]$##'` if test "${newhdest}" = "${hdest}"; then break; fi hdest=${newhdest} done hsrc=`echo ${hsrc} | sed -e "s#${root}/##" -e "s#${root}##"` hdest=`echo ${hdest} | sed -e "s#${root}/##" -e "s#${root}##" | egrep '^/'` if test ! -z "${hdest}"; then if test -z `egrep -e "${d}" ${here}/keep_links.dat` ; then echo "${src} ${dest}" return 0 fi fi return 1 } here=`dirname $0` if test "${here}" = "."; then here=`pwd`; fi if test -z "${here}"; then here=`pwd`; fi root=$1 shift cd ${root} links=`find . -type l` for file in `echo ${links}`; do check_external_link ${file} status=$? if test "${status}" = 0; then break fi done