summary refs log tree commit diff
diff options
context:
space:
mode:
authorDaniel Shahaf <d.s@daniel.shahaf.name>2019-11-29 20:52:00 +0000
committerDaniel Shahaf <d.s@daniel.shahaf.name>2019-11-29 20:57:01 +0000
commit98f8a8a980872f5d8f2a2a277e50a504d74a3f37 (patch)
tree04ff72e7c3694fd126f4b88f72b72160c321846f
parentcc3983ee586dff16638bdcdea40c784a54026571 (diff)
downloadzsh-98f8a8a980872f5d8f2a2a277e50a504d74a3f37.tar.gz
zsh-98f8a8a980872f5d8f2a2a277e50a504d74a3f37.tar.xz
zsh-98f8a8a980872f5d8f2a2a277e50a504d74a3f37.zip
44958: vcs_info quilt: Avoid forks
-rw-r--r--ChangeLog3
-rw-r--r--Functions/VCS_Info/VCS_INFO_quilt10
-rw-r--r--README4
3 files changed, 12 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index 13218b017..316b1624a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 2019-11-30  Daniel Shahaf  <d.s@daniel.shahaf.name>
 
+	* 44958: Functions/VCS_Info/VCS_INFO_quilt, README: vcs_info
+	quilt: Avoid forks
+
 	* 44945: Functions/VCS_Info/Backends/VCS_INFO_detect_git:
 	vcs_info git: Optimize detection by running fewer external
 	commands.
diff --git a/Functions/VCS_Info/VCS_INFO_quilt b/Functions/VCS_Info/VCS_INFO_quilt
index 1f20e895d..fef85964a 100644
--- a/Functions/VCS_Info/VCS_INFO_quilt
+++ b/Functions/VCS_Info/VCS_INFO_quilt
@@ -78,7 +78,7 @@ function VCS_INFO_quilt-dirfind() {
     VCS_INFO_bydir_detect ${dir}
     ret=$?
     vcs_comm[detect_need_file]=${oldfile}
-    printf '%s' ${vcs_comm[basedir]}
+    REPLY=${vcs_comm[basedir]}
     vcs_comm[basedir]="${olddir}"
     return ${ret}
 }
@@ -113,8 +113,8 @@ function VCS_INFO_quilt-patch2subject() {
         ;;
     esac
 
-    pc="$(VCS_INFO_quilt-dirfind .pc .version)"
-    ret=$?
+    VCS_INFO_quilt-dirfind .pc .version
+    ret=$? pc=$REPLY
     if (( ret == 0 )); then
         [[ ${quiltmode} == 'standalone' ]] && root=${pc}
         pc=${pc}/.pc
@@ -138,8 +138,8 @@ function VCS_INFO_quilt-patch2subject() {
             zstyle -s "${context}" quilt-patch-dir patches || patches="${QUILT_PATCHES}"
             if [[ "${patches}" != /* ]]; then
                 tmp=${patches:-patches}
-                patches="$(VCS_INFO_quilt-dirfind "${tmp}")"
-                ret=$?
+                VCS_INFO_quilt-dirfind "${tmp}"
+                ret=$? patches=$REPLY
                 (( ret )) && return ${ret}
                 patches=${patches}/${tmp}
             else
diff --git a/README b/README
index be7929164..7ece48183 100644
--- a/README
+++ b/README
@@ -49,6 +49,10 @@ The behaviour of :h has similarly changed.
 The behaviour has also changed in forms such as ${foo:t2) and *(:t2),
 but in those cases the previous behaviour was not meaningful.
 
+The vcs_info function VCS_INFO_quilt-dirfind now returns a string value
+by setting $REPLY.  Previously it printed the value to standard output.
+This only affects you if you override that function in your dotfiles.
+
 Incompatibilities between 5.6.2 and 5.7.1
 -----------------------------------------