]> git.ipfire.org Git - thirdparty/dracut.git/commitdiff
dracut-functions.sh:inst_simple() do inst_symlink for symlinks
authorHarald Hoyer <harald@redhat.com>
Fri, 22 Jun 2012 13:09:07 +0000 (15:09 +0200)
committerHarald Hoyer <harald@redhat.com>
Fri, 29 Jun 2012 10:41:25 +0000 (12:41 +0200)
dracut-functions.sh

index b9ce688ac1b792a4ffae1228498d232db21071f4..273d2a5945f017c7fa6d6d5e53aa6f46eff07b52 100755 (executable)
@@ -424,18 +424,21 @@ inst_simple() {
     [[ -f "$1" ]] || return 1
     strstr "$1" "/" || return 1
 
-    local _src=$1 target="${2:-$1}"
-    if ! [[ -d ${initdir}/$target ]]; then
-        [[ -e ${initdir}/$target ]] && return 0
-        [[ -L ${initdir}/$target ]] && return 0
-        [[ -d "${initdir}/${target%/*}" ]] || inst_dir "${target%/*}"
+    local _src=$1 _target="${2:-$1}"
+
+    [[ -L $_src ]] && return inst_symlink $_src $_target
+
+    if ! [[ -d ${initdir}/$_target ]]; then
+        [[ -e ${initdir}/$_target ]] && return 0
+        [[ -L ${initdir}/$_target ]] && return 0
+        [[ -d "${initdir}/${_target%/*}" ]] || inst_dir "${_target%/*}"
     fi
     # install checksum files also
     if [[ -e "${_src%/*}/.${_src##*/}.hmac" ]]; then
-        inst "${_src%/*}/.${_src##*/}.hmac" "${target%/*}/.${target##*/}.hmac"
+        inst "${_src%/*}/.${_src##*/}.hmac" "${_target%/*}/.${_target##*/}.hmac"
     fi
     ddebug "Installing $_src"
-    cp --reflink=auto --sparse=auto -pfL "$_src" "${initdir}/$target"
+    cp --reflink=auto --sparse=auto -pfL "$_src" "${initdir}/$_target"
 }
 
 # find symlinks linked to given library file