diff options
author | Daniel Shahaf <d.s@daniel.shahaf.name> | 2016-12-01 17:11:58 +0000 |
---|---|---|
committer | Daniel Shahaf <d.s@daniel.shahaf.name> | 2016-12-01 17:13:37 +0000 |
commit | 8891f5a33d2617b7c7bb4f37c4340a1dd159529e (patch) | |
tree | 60aa5e9556ff8c10319599c25f3f94fa843b9393 /Functions/VCS_Info/VCS_INFO_quilt | |
parent | 1ba59c4147e3b82023026bc6784105ccd73b7bd3 (diff) | |
download | zsh-8891f5a33d2617b7c7bb4f37c4340a1dd159529e.tar.gz zsh-8891f5a33d2617b7c7bb4f37c4340a1dd159529e.tar.xz zsh-8891f5a33d2617b7c7bb4f37c4340a1dd159529e.zip |
unposted: vcs_info: Break out VCS_INFO_quilt-patch2subject into VCS_INFO_patch2subject
... so other places can use it; compare 40030 in the 39990 thread.
Diffstat (limited to 'Functions/VCS_Info/VCS_INFO_quilt')
-rw-r--r-- | Functions/VCS_Info/VCS_INFO_quilt | 49 |
1 files changed, 1 insertions, 48 deletions
diff --git a/Functions/VCS_Info/VCS_INFO_quilt b/Functions/VCS_Info/VCS_INFO_quilt index 6adf0a358..4c61506cd 100644 --- a/Functions/VCS_Info/VCS_INFO_quilt +++ b/Functions/VCS_Info/VCS_INFO_quilt @@ -80,55 +80,8 @@ function VCS_INFO_quilt-dirfind() { return ${ret} } -# This function takes as an argument a filename of a patch and sets $REPLY to -# a single-line "subject", or unsets it if no subject could be extracted. function VCS_INFO_quilt-patch2subject() { - integer i - integer -r LIMIT=10 - local -a lines - local needle - if [[ -f "$1" ]]; then - # Extract the first LIMIT lines, or up to the first empty line or the start of the unidiffs, - # whichever comes first. - while (( i++ < LIMIT )); do - IFS= read -r "lines[$i]" - if [[ -z ${lines[$i]} ]] || [[ ${lines[$i]} == (#b)(---|Index:)* ]]; then - lines[$i]=() - break - fi - done < "$1" - - if needle=${lines[(i)Subject:*]}; (( needle <= $#lines )); then - # "Subject: foo" line, plus rfc822 whitespace unfolding. - # - # Example: 'git format-patch' patches. - REPLY=${lines[needle]} - REPLY=${REPLY#*: } - REPLY=${REPLY#\[PATCH\] } - while [[ ${${lines[++needle]}[1]} == ' ' ]]; do - REPLY+=${lines[needle]} - done - elif needle=${lines[(r)Description:*]}; [[ -n $needle ]]; then - # "Description: foo" line. - # - # Example: DEP-3 patches. - REPLY=${needle#*: } - elif [[ ${lines[1]} == '# HG changeset patch' ]] && { needle=${${lines:#([#]*)}[1]}; [[ -n $needle ]] }; then - # Mercurial patch - REPLY=$needle - elif (( ${+lines[1]} )); then - # The first line of the file is not part of the diff. - REPLY=${lines[1]} - else - # The patch has no subject. - unset REPLY - return 0 - fi - else - # The patch cannot be examined, or invalid arguments. - unset REPLY - return 1 - fi + VCS_INFO_patch2subject "$@" } function VCS_INFO_quilt() { |