1
0
mirror of https://github.com/Tarrasch/zsh-autoenv.git synced 2024-11-14 13:00:58 +02:00

_autoenv_hash_pair: do not use a subshell (#81)

As a side-effect this should fix
https://github.com/Tarrasch/zsh-autoenv/issues/39 in case it was still
an issue after all.
This commit is contained in:
Daniel Hahler 2017-12-15 15:59:11 +01:00 committed by GitHub
parent 84bb32a403
commit 51c7421f10
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 17 additions and 10 deletions

View File

@ -172,6 +172,7 @@ _autoenv_hash_pair() {
local env_file=${1:A} local env_file=${1:A}
local cksum_version=${2:-2} local cksum_version=${2:-2}
local env_cksum=${3:-} local env_cksum=${3:-}
ret_pair=
if [[ -z $env_cksum ]]; then if [[ -z $env_cksum ]]; then
if ! [[ -e $env_file ]]; then if ! [[ -e $env_file ]]; then
echo "Missing file argument for _autoenv_hash_pair!" >&2 echo "Missing file argument for _autoenv_hash_pair!" >&2
@ -187,7 +188,7 @@ _autoenv_hash_pair() {
return 1 return 1
fi fi
fi fi
echo ":${env_file}:${env_cksum}:${cksum_version}" ret_pair=":${env_file}:${env_cksum}:${cksum_version}"
} }
@ -201,14 +202,14 @@ _autoenv_authorized_pair() {
_autoenv_authorized_env_file() { _autoenv_authorized_env_file() {
local env_file=$1 local env_file=$1
local pair local ret_pair
pair=$(_autoenv_hash_pair $env_file) _autoenv_hash_pair $env_file
_autoenv_debug "v2 pair: ${pair}" _autoenv_debug "v2 pair: ${ret_pair}"
if ! _autoenv_authorized_pair $pair; then if ! _autoenv_authorized_pair $ret_pair; then
# Fallback for v1 (SHA-1) pairs # Fallback for v1 (SHA-1) pairs
pair=$(_autoenv_hash_pair $env_file 1) _autoenv_hash_pair $env_file 1
_autoenv_debug "v1 pair: ${pair}" _autoenv_debug "v1 pair: ${ret_pair}"
if _autoenv_authorized_pair $pair; then if _autoenv_authorized_pair $ret_pair; then
# Upgrade v1 entries to v2 # Upgrade v1 entries to v2
_autoenv_authorize $env_file _autoenv_authorize $env_file
else else
@ -221,7 +222,10 @@ _autoenv_authorize() {
local env_file=${1:A} local env_file=${1:A}
_autoenv_deauthorize $env_file _autoenv_deauthorize $env_file
[[ -d ${AUTOENV_AUTH_FILE:h} ]] || mkdir -p ${AUTOENV_AUTH_FILE:h} [[ -d ${AUTOENV_AUTH_FILE:h} ]] || mkdir -p ${AUTOENV_AUTH_FILE:h}
_autoenv_hash_pair $env_file >>| $AUTOENV_AUTH_FILE {
local ret_pair
_autoenv_hash_pair $env_file && echo "$ret_pair"
} >>| $AUTOENV_AUTH_FILE
} }
# Deauthorize a given filename, by removing it from the auth file. # Deauthorize a given filename, by removing it from the auth file.

View File

@ -26,7 +26,10 @@ fi
# Add file ($1), version ($2), and optional hash ($3) to authentication file. # Add file ($1), version ($2), and optional hash ($3) to authentication file.
test_autoenv_add_to_env() { test_autoenv_add_to_env() {
[[ -d ${AUTOENV_AUTH_FILE:h} ]] || mkdir -p ${AUTOENV_AUTH_FILE:h} [[ -d ${AUTOENV_AUTH_FILE:h} ]] || mkdir -p ${AUTOENV_AUTH_FILE:h}
_autoenv_hash_pair $1 1 ${2:-} >>| $AUTOENV_AUTH_FILE {
local ret_pair
_autoenv_hash_pair $1 1 ${2:-} && echo $ret_pair
} >>| $AUTOENV_AUTH_FILE
} }
# Add enter and leave env files to authentication file. # Add enter and leave env files to authentication file.