From 5298b255d8826b0cf548a8b63f37c11e63a631a1 Mon Sep 17 00:00:00 2001 From: Alejandro Mery Date: Sat, 5 Jul 2008 17:23:28 +0000 Subject: [PATCH] initramfs: Enhanced to support symlinks to symlinks --- target/share/initramfs/build.sh | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/target/share/initramfs/build.sh b/target/share/initramfs/build.sh index 4c4100e..5f40148 100644 --- a/target/share/initramfs/build.sh +++ b/target/share/initramfs/build.sh @@ -77,19 +77,29 @@ echo_status "Removing empty folders ..." done echo_status "Checking for broken symlinks ..." -( cd "$rootfs"; find . -type l ) | while read link; do - target=$( readlink "$rootfs/$link" ) - case "$target" in - /proc/*) continue ;; - /*) # absolute - ;; - *) target="/${link%/*}/${target}" # relative - ;; - esac +( cd "$rootfs"; find . -type l | cut -c2- ) | while read link; do + x="$link" + while true; do + target=$( readlink "$rootfs$x" ) + case "$target" in + /proc/*) + continue 2 + ;; + /*) + ;; + *) + # relatives turned into absolute + target="${x%/*}/${target}" + esac + + [ -L "$rootfs$target" ] || break 1 + + x="$target" + done if [ ! -e "$rootfs$target" ]; then - echo_warning "- $link is broken, deleting." - rm -f "$rootfs/$link" + echo_warning "- $link is broken ($target), deleting." + rm -f "$rootfs$link" fi done -- 2.11.4.GIT