new: compare /etc/* before create ._ file

This commit is contained in:
2025-12-23 02:26:03 -05:00
parent da89bf2079
commit 64fbd9fc01

8
leaf
View File

@@ -223,8 +223,12 @@ leaf_merge_package() {
_group=$(stat -c %g ."${_item}")
if [[ "${_item}" == /etc/* && -e "${_item}" ]]; then
_item_conflict="$(dirname "${_item}")/._$(basename "${_item}").conflict_${PKG_NAME}_${_time}"
install -D -m ${_mode} -o ${_owner} -g ${_group} ."${_item}" "${_item_conflict}"
leaf_record_message "Config file confliction on ${_item}, the package provided version is installed as ${_item_conflict}."
if (diff ."${_item}" "${_item}" > /dev/null); then
install -D -m ${_mode} -o ${_owner} -g ${_group} ."${_item}" "${_item}"
else
install -D -m ${_mode} -o ${_owner} -g ${_group} ."${_item}" "${_item_conflict}"
leaf_record_message "Config file confliction on ${_item}, the package provided version is installed as ${_item_conflict}."
fi
else
install -D -m ${_mode} -o ${_owner} -g ${_group} ."${_item}" "${_item}"
fi