Hi *, heres an update of pass(1) from 1.7.3 to 1.7.4.
While at it, also fix a POSIX basic RE for sed(1), which prevented an optimization when re-encrypting to same key set. Now "make test" is happy, too. Should my mail program destroy the patch, here's a downloadable copy: https://cloud.dahlberg.cologne/index.php/s/SS5BRNLRJyRDrSy [repost due to missing recipient]
Index: Makefile =================================================================== RCS file: /cvs/ports/security/password-store/Makefile,v retrieving revision 1.8 diff -u -p -u -r1.8 Makefile --- Makefile 5 Oct 2020 19:46:18 -0000 1.8 +++ Makefile 22 Jul 2021 11:09:33 -0000 @@ -2,8 +2,7 @@ COMMENT = simple password store -DISTNAME = password-store-1.7.3 -REVISION = 0 +DISTNAME = password-store-1.7.4 CATEGORIES = security Index: distinfo =================================================================== RCS file: /cvs/ports/security/password-store/distinfo,v retrieving revision 1.4 diff -u -p -u -r1.4 distinfo --- distinfo 23 Aug 2018 08:19:02 -0000 1.4 +++ distinfo 22 Jul 2021 11:09:33 -0000 @@ -1,2 +1,2 @@ -SHA256 (password-store-1.7.3.tar.xz) = K2xlhG66zpoVoRhQPc0xtkQJSaMNO1KR37WxYVuZo/Q= -SIZE (password-store-1.7.3.tar.xz) = 63416 +SHA256 (password-store-1.7.4.tar.xz) = z6n69lny7Ws456fD+0Phd9AO26zGJl5uMiFf9A43k8A= +SIZE (password-store-1.7.4.tar.xz) = 65272 Index: patches/patch-src_password-store_sh =================================================================== RCS file: /cvs/ports/security/password-store/patches/patch-src_password-store_sh,v retrieving revision 1.5 diff -u -p -u -r1.5 patch-src_password-store_sh --- patches/patch-src_password-store_sh 5 Oct 2020 19:46:18 -0000 1.5 +++ patches/patch-src_password-store_sh 22 Jul 2021 11:09:33 -0000 @@ -2,7 +2,16 @@ $OpenBSD: patch-src_password-store_sh,v Index: src/password-store.sh --- src/password-store.sh.orig +++ src/password-store.sh -@@ -324,7 +324,7 @@ cmd_init() { +@@ -129,7 +129,7 @@ reencrypt_path() { + done + gpg_keys="$($GPG $PASSWORD_STORE_GPG_OPTS --list-keys --with-colons "${GPG_RECIPIENTS[@]}" | sed -n 's/^sub:[^idr:]*:[^:]*:[^:]*:\([^:]*\):[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:[a-zA-Z]*e[a-zA-Z]*:.*/\1/p' | LC_ALL=C sort -u)" + fi +- current_keys="$(LC_ALL=C $GPG $PASSWORD_STORE_GPG_OPTS -v --no-secmem-warning --no-permission-warning --decrypt --list-only --keyid-format long "$passfile" 2>&1 | sed -n 's/^gpg: public key is \([A-F0-9]\+\)$/\1/p' | LC_ALL=C sort -u)" ++ current_keys="$(LC_ALL=C $GPG $PASSWORD_STORE_GPG_OPTS -v --no-secmem-warning --no-permission-warning --decrypt --list-only --keyid-format long "$passfile" 2>&1 | sed -n 's/^gpg: public key is \([A-F0-9]\{1,\}\)$/\1/p' | LC_ALL=C sort -u)" + + if [[ $gpg_keys != "$current_keys" ]]; then + echo "$passfile_display: reencrypting to ${gpg_keys//$'\n'/ }" +@@ -344,7 +344,7 @@ cmd_init() { fi rmdir -p "${gpg_id%/*}" 2>/dev/null else @@ -11,24 +20,24 @@ Index: src/password-store.sh printf "%s\n" "$@" > "$gpg_id" local id_print="$(printf "%s, " "$@")" echo "Password store initialized for ${id_print%, }${id_path:+ ($id_path)}" -@@ -382,7 +382,10 @@ cmd_show() { +@@ -402,7 +402,10 @@ cmd_show() { else echo "${path%\/}" fi -- tree -C -l --noreport "$PREFIX/$path" | tail -n +2 | sed -E 's/\.gpg(\x1B\[[0-9]+m)?( ->|$)/\1\2/g' # remove .gpg at end of line, but keep colors +- tree -N -C -l --noreport "$PREFIX/$path" | tail -n +2 | sed -E 's/\.gpg(\x1B\[[0-9]+m)?( ->|$)/\1\2/g' # remove .gpg at end of line, but keep colors + # remove .gpg at end of line, but keep colors -+ colortree -C -l --noreport "$PREFIX/$path" \ ++ colortree -N -C -l --noreport "$PREFIX/$path" \ + | tail -n +2 \ + | sed -E 's/\.gpg(\x1B\[[0-9]+m)?( ->|$)/\1\2/g' elif [[ -z $path ]]; then die "Error: password store is empty. Try \"pass init\"." else -@@ -394,14 +397,16 @@ cmd_find() { +@@ -414,14 +417,16 @@ cmd_find() { [[ $# -eq 0 ]] && die "Usage: $PROGRAM $COMMAND pass-names..." IFS="," eval 'echo "Search Terms: $*"' local terms="*$(printf '%s*|*' "$@")" -- tree -C -l --noreport -P "${terms%|*}" --prune --matchdirs --ignore-case "$PREFIX" | tail -n +2 | sed -E 's/\.gpg(\x1B\[[0-9]+m)?( ->|$)/\1\2/g' -+ colortree -C -l --noreport -P "${terms%|*}" --prune --matchdirs --ignore-case "$PREFIX" \ +- tree -N -C -l --noreport -P "${terms%|*}" --prune --matchdirs --ignore-case "$PREFIX" | tail -n +2 | sed -E 's/\.gpg(\x1B\[[0-9]+m)?( ->|$)/\1\2/g' ++ colortree -N -C -l --noreport -P "${terms%|*}" --prune --matchdirs --ignore-case "$PREFIX" \ + | tail -n +2 \ + | sed -E 's/\.gpg(\x1B\[[0-9]+m)?( ->|$)/\1\2/g' } @@ -42,7 +51,7 @@ Index: src/password-store.sh [[ $? -ne 0 ]] && continue passfile="${passfile%.gpg}" passfile="${passfile#$PREFIX/}" -@@ -433,7 +438,7 @@ cmd_insert() { +@@ -453,7 +458,7 @@ cmd_insert() { [[ $force -eq 0 && -e $passfile ]] && yesno "An entry already exists for $path. Overwrite it?" @@ -51,7 +60,7 @@ Index: src/password-store.sh set_gpg_recipients "$(dirname -- "$path")" if [[ $multiline -eq 1 ]]; then -@@ -467,7 +472,7 @@ cmd_edit() { +@@ -487,7 +492,7 @@ cmd_edit() { local path="${1%/}" check_sneaky_paths "$path" @@ -60,7 +69,7 @@ Index: src/password-store.sh set_gpg_recipients "$(dirname -- "$path")" local passfile="$PREFIX/$path.gpg" set_git "$passfile" -@@ -509,7 +514,7 @@ cmd_generate() { +@@ -529,7 +534,7 @@ cmd_generate() { check_sneaky_paths "$path" [[ $length =~ ^[0-9]+$ ]] || die "Error: pass-length \"$length\" must be a number." [[ $length -gt 0 ]] || die "Error: pass-length must be greater than zero." @@ -69,7 +78,7 @@ Index: src/password-store.sh set_gpg_recipients "$(dirname -- "$path")" local passfile="$PREFIX/$path.gpg" set_git "$passfile" -@@ -598,7 +603,7 @@ cmd_copy_move() { +@@ -618,7 +623,7 @@ cmd_copy_move() { echo "$old_path" [[ -e $old_path ]] || die "Error: $1 is not in the password store."