diff --git a/kiss b/kiss index 56df3af..117cbc1 100755 --- a/kiss +++ b/kiss @@ -986,10 +986,15 @@ pkg_remove_files() { # installation and package removal. Combining the removals in these two # functions allows us to stop duplicating code. while read -r file; do - case $file in /etc/*) - printf 'Skipping removal of %s\n' "$file" - continue; - esac + case $file in /etc/?*[!/]) + sum_sys=$(sh256 "$KISS_ROOT/$file") + sum_old=$(grep -F "$sum_sys" "$mak_dir/c") + + [ "$sum_sys" = "$sum_old" ] || { + printf 'Skipping %s (modified)\n' "$file" + continue + } + esac 2>/dev/null ||: file=$KISS_ROOT/$file @@ -1085,8 +1090,10 @@ pkg_remove() { "$sys_db/$1/pre-remove" ||: fi - log "$1" "Removing package" + # Make a backup of the etcsums file (if it exists). + cp -f "$sys_db/$1/etcsums" "$mak_dir/c" 2>/dev/null ||: + log "$1" "Removing package" pkg_remove_files < "$sys_db/$1/manifest" # Reset 'trap' to its original value. Removal is done so