Tree 2.0 and later will unconditionally ignore all options and write
JSON data on file descriptor 3 when available, which causes problems
for the test harness and other scripts that use FD 3.  Work around by
closing descriptor 3 for the 'tree' command.
---
* Changes in v4:
  - Removed line breaks.

Thanks for the feedback, everyone.
---
 src/password-store.sh | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/password-store.sh b/src/password-store.sh
index aef8d72..22e818f 100755
--- a/src/password-store.sh
+++ b/src/password-store.sh
@@ -402,7 +402,7 @@ cmd_show() {
                else
                        echo "${path%\/}"
                fi
-               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
+               tree -N -C -l --noreport "$PREFIX/$path" 3>&- | tail -n +2 | 
sed -E 's/\.gpg(\x1B\[[0-9]+m)?( ->|$)/\1\2/g' # remove .gpg at end of line, 
but keep colors
        elif [[ -z $path ]]; then
                die "Error: password store is empty. Try \"pass init\"."
        else
@@ -414,7 +414,7 @@ cmd_find() {
        [[ $# -eq 0 ]] && die "Usage: $PROGRAM $COMMAND pass-names..."
        IFS="," eval 'echo "Search Terms: $*"'
        local terms="*$(printf '%s*|*' "$@")"
-       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'
+       tree -N -C -l --noreport -P "${terms%|*}" --prune --matchdirs 
--ignore-case "$PREFIX" 3>&- | tail -n +2 | sed -E 's/\.gpg(\x1B\[[0-9]+m)?( 
->|$)/\1\2/g'
 }
 
 cmd_grep() {
-- 
2.34.0

Reply via email to