From: Harald Hoyer Date: Fri, 19 Aug 2011 08:24:49 +0000 (+0200) Subject: dracut-functions: speed up inst_dir() X-Git-Tag: 014~131 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=a76dc2780143a4b04eb33a6699ec2ca7a7898b65;p=thirdparty%2Fdracut.git dracut-functions: speed up inst_dir() --- diff --git a/dracut-functions b/dracut-functions index 241d89a21..d7f2e5fbe 100755 --- a/dracut-functions +++ b/dracut-functions @@ -274,18 +274,18 @@ inst_dir() { local _oldifs="$IFS" local _part local _dir="$1" - IFS="/" - set -- $_dir - IFS=$_oldifs - _dir="$@" + + # fast out [[ -e ${initdir}$_dir ]] && return 0 - # iterate over parent directories - for _part in $_dir; do - [[ $_part ]] || continue - _file="$_file/$_part" - [[ -e ${initdir}$_file ]] && continue + _part=${_dir%/*} + while ! [[ -e "${initdir}${_part}" ]]; do + _dir="$_part $_dir" + _part=${_part%/*} + done + # iterate over parent directories + for _file in $_dir; do if [[ -L $_file ]]; then # create link as the original local target=$(readlink -f "$_file")