From c0d4267c6cd5640f98553b1b18df93885ad2bc5c Mon Sep 17 00:00:00 2001
From: kenji <r.bergoin@openium.fr>
Date: Fri, 10 Apr 2020 16:35:16 +0200
Subject: [PATCH] Fix infinite loop on darwin

if PATH does not contains /usr/local/bin
---
 src/password-store.sh  | 5 +++--
 src/platform/darwin.sh | 6 +++++-
 2 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/src/password-store.sh b/src/password-store.sh
index 77f3eda..04d3c4b 100755
--- a/src/password-store.sh
+++ b/src/password-store.sh
@@ -8,6 +8,7 @@ set -o pipefail
 
 GPG_OPTS=( $PASSWORD_STORE_GPG_OPTS "--quiet" "--yes" "--compress-algo=none" "--no-encrypt-to" )
 GPG="gpg"
+TREE="tree"
 export GPG_TTY="${GPG_TTY:-$(tty 2>/dev/null)}"
 which gpg2 &>/dev/null && GPG="gpg2"
 [[ -n $GPG_AGENT_INFO || $GPG == "gpg2" ]] && GPG_OPTS+=( "--batch" "--use-agent" )
@@ -400,7 +401,7 @@ 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 -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
 	elif [[ -z $path ]]; then
 		die "Error: password store is empty. Try \"pass init\"."
 	else
@@ -412,7 +413,7 @@ 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'
+	$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'
 }
 
 cmd_grep() {
diff --git a/src/platform/darwin.sh b/src/platform/darwin.sh
index 342ecce..88aa092 100644
--- a/src/platform/darwin.sh
+++ b/src/platform/darwin.sh
@@ -43,6 +43,10 @@ qrcode() {
 	fi
 }
 
-GETOPT="$(brew --prefix gnu-getopt 2>/dev/null || { which port &>/dev/null && echo /opt/local; } || echo /usr/local)/bin/getopt"
+GETOPT="$(brew --prefix gnu-getopt 2>/dev/null || { which port &>/dev/null && echo /opt/local; } || echo /usr/local/opt/gnu-getopt)/bin/getopt"
 SHRED="srm -f -z"
+GPG="$(which gpg)"
+[[ -z "$TREE" ]] && TREE="/usr/local/bin/gpg"
+TREE="$(which tree)"
+[[ -z "$TREE" ]] && TREE="/usr/local/bin/tree"
 BASE64="openssl base64"
-- 
2.22.0

