# same as above, but specialized for symlinks
inst_symlink() {
- local _src=$1 _target=$initdir/${2:-$1} _realsrc
+ local _src=$1 _target=${2:-$1} _realsrc
strstr "$1" "/" || return 1
[[ -L $1 ]] || return 1
- [[ -L $_target ]] && return 0
+ [[ -L $initdir/$_target ]] && return 0
_realsrc=$(readlink -f "$_src")
- [[ $_realsrc = ${_realsrc##*/} ]] && _realsrc=${_src%/*}/$_realsrc
+ [[ -d ${_target%/*} ]] && _target=$(readlink -f ${_target%/*})/${_target##*/}
if [[ -d $_realsrc ]]; then
inst_dir "$_realsrc"
else
- inst "$_realsrc" && mkdir -m 0755 -p "${_target%/*}"
+ {
+ local _t
+ _t=${2:-$1}
+ _t="${_t%/*}"
+ [[ $_t ]] && inst_dir "$_t"
+ inst "$_realsrc"
+ }
fi
if [[ -e "${_src}" ]]; then
- ln -sfn $(convert_abs_rel "${_src}" "${_realsrc}") "$_target"
+ ln -sfn $(convert_abs_rel "${_target}" "${_realsrc}") "$initdir/$_target"
else
- ln -sfn "$_realsrc" "$_target"
+ ln -sfn "$_realsrc" "$initdir/$_target"
fi
}