]> git.ipfire.org Git - thirdparty/dracut.git/commitdiff
dracut-functions: speed up inst_dir()
authorHarald Hoyer <harald@redhat.com>
Fri, 19 Aug 2011 08:24:49 +0000 (10:24 +0200)
committerHarald Hoyer <harald@redhat.com>
Fri, 19 Aug 2011 08:24:49 +0000 (10:24 +0200)
dracut-functions

index 241d89a2174cc13db9e7c045dbb646ef825955b5..d7f2e5fbe437f8783009e327b7ccf271170429dd 100755 (executable)
@@ -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")