[[ $target == ${target#/} ]] && target="$(dirname "$_file")/$target"
inst_dir "$target"
else
+ [[ -h ${initdir}$_file ]] && _file=$(readlink "${initdir}$_file")
# create directory
mkdir -m 0755 -p "${initdir}$_file" || return 1
+ [[ -d "$_file" ]] && chmod --reference="$_file" "${initdir}$_file"
fi
done
}
_src=$1 target="${2:-$1}"
if ! [[ -d ${initdir}$target ]]; then
[[ -e ${initdir}$target ]] && return 0
+ [[ -h ${initdir}$target ]] && return 0
inst_dir "${target%/*}"
fi
# install checksum files also
inst "${_src%/*}/.${_src##*/}.hmac" "${target%/*}/.${target##*/}.hmac"
fi
ddebug "Installing $_src"
- cp -pfL "$_src" "${initdir}$target"
+ cp -pfL "$_src" "${initdir}$target"
}
# find symlinks linked to given library file
[[ -L $_target ]] && return 0
_realsrc=$(readlink -f "$_src")
[[ $_realsrc = ${_realsrc##*/} ]] && _realsrc=${_src%/*}/$_realsrc
- inst "$_realsrc" && mkdir -m 0755 -p "${_target%/*}" && \
+ if [[ -d $_realsrc ]]; then
+ inst_dir "$_realsrc"
+ else
+ inst "$_realsrc" && mkdir -m 0755 -p "${_target%/*}"
+ fi
+ if [[ -e "${_src}" ]]; then
+ cp -aP "${_src}" "$_target"
+ else
ln -sfn "$_realsrc" "$_target"
+ fi
}
# udev rules always get installed in the same place, so