From 250e8feaaec896423efd1bdff4afefd5e81ff486 Mon Sep 17 00:00:00 2001 From: Dylan Araps Date: Tue, 28 Jan 2020 21:27:18 +0200 Subject: [PATCH] kiss: revert --- kiss | 31 +++++++++++-------------------- 1 file changed, 11 insertions(+), 20 deletions(-) diff --git a/kiss b/kiss index e6936f1..24098e0 100755 --- a/kiss +++ b/kiss @@ -148,24 +148,12 @@ dosu() { fi } -ssed() { - # Simple wrapper around 'sed' to handle in-place - # replacements in a portable way. - +regex_escape() { # Escape all required characters in both the search and # replace portions of two strings for use in a 'sed' call # as "plain-text". sea=$(echo "$1" | sed 's/[]\/$*.^[]/\\&/g') rep=$(echo "$2" | sed 's/[\/&]/\\&/g') - - # Save the replacement result to a temporary file and then - # overwrite the original file with it. - # - # The '$4' equates to a 'sudo'/'su' equivalent when parts - # of the function's body must run as 'root'. Globbing is - # disabled and the input hardcoded so this is fine. - $4 sed "s/$sea/$rep/" "$3" > "$3.bak" - $4 mv -f "$3.bak" "$3" } pkg_lint() { @@ -837,10 +825,12 @@ pkg_conflicts() { mv -f "$tar_dir/$p_name/$con" \ "$tar_dir/$p_name/$cho_dir/$p_name$con_name" + regex_escape "$con" "/$cho_dir/$p_name$con_name" + # Rewrite the package's manifest to update its location # to its new spot (and name) in the choices directory. - ssed "$con" "/$cho_dir/$p_name$con_name" \ - "$tar_dir/$p_name/$pkg_db/$p_name/manifest" + sed -i "s/$sea/$rep/" \ + "$tar_dir/$p_name/$pkg_db/$p_name/manifest" done else if "$grep" -Fxf "$cac_dir/$pid-m" -- "$@"; then @@ -881,19 +871,20 @@ pkg_swap() { log "Swapping '$2' from '$pkg_owns' to '$1'" + regex_escape "$2" "$PWD/$pkg_owns>${alt#*>}" # Convert the current owner to an alternative and rewrite # its manifest file to reflect this. - dosu cp -f "'$2'" "'$pkg_owns>${alt#*>}'" - ssed "'$2'" "'$PWD/$pkg_owns>${alt#*>}'" \ - "'../installed/$pkg_owns/manifest'" dosu + dosu cp -f "'$2'" "'$pkg_owns>${alt#*>}'" + dosu sed -i "'s/$sea/$rep/'" "'../installed/$pkg_owns/manifest'" fi + regex_escape "$PWD/$alt" "$2" # Convert the desired alternative to a real file and rewrite # the manifest file to reflect this. The reverse of above. - dosu mv -f "'$alt'" "'$2'" - ssed "'$PWD/$alt'" "'$2'" "'../installed/$1/manifest'" dosu + dosu mv -f "'$alt'" "'$2'" + dosu sed -i "'s/$sea/$rep/'" "'../installed/$1/manifest'" } pkg_remove() {