diff options
author | Paul Eggert <eggert@cs.ucla.edu> | 2014-12-07 16:17:20 -0800 |
---|---|---|
committer | Paul Eggert <eggert@cs.ucla.edu> | 2014-12-07 16:18:38 -0800 |
commit | 0f9fbb922cb029b0c36805d260a5db28e25d3dd1 (patch) | |
tree | 97d33f04ece6777c4e4ed2b1893735d93a63da7c /build-aux/git-hooks | |
parent | 3db1adacc654f33ee8d5c515214c9d5325ee7fc1 (diff) | |
download | emacs-0f9fbb922cb029b0c36805d260a5db28e25d3dd1.tar.gz |
Port commit-message checking to FreeBSD 9.
This fixes a bug reported by Jan Djärv in:
http://lists.gnu.org/archive/html/emacs-devel/2014-12/msg00704.html
along with some other issues I noticed while testing with FreeBSD.
* build-aux/git-hooks/commit-msg: Prefer gawk if available.
Prefer en_US.UTF-8 to en_US.utf8, as it's more portable.
Work around bug in FreeBSD 9 awk, where /[[:cntrl:]]/ matches
ordinary text characters.
Be less tricky about quoting "'" in a shell script.
Diffstat (limited to 'build-aux/git-hooks')
-rwxr-xr-x | build-aux/git-hooks/commit-msg | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/build-aux/git-hooks/commit-msg b/build-aux/git-hooks/commit-msg index 6a09eddf88b..f407881b0db 100755 --- a/build-aux/git-hooks/commit-msg +++ b/build-aux/git-hooks/commit-msg @@ -20,25 +20,32 @@ # Written by Paul Eggert. +# Prefer gawk if available, as it handles NUL bytes properly. +if type gawk >/dev/null 2>&1; then + awk=gawk +else + awk=awk +fi + # Use a UTF-8 locale if available, so that the UTF-8 check works. # Use U+00A2 CENT SIGN to test whether the locale works. cent_sign_utf8_octal='\302\242' at_sign=` printf "${cent_sign_utf8_octal}@" | - awk '{print substr($0, 2)}' 2>/dev/null + $awk '{print substr($0, 2)}' 2>/dev/null ` if test "$at_sign" != @; then at_sign=` printf "${cent_sign_utf8_octal}@" | - LC_ALL=en_US.utf8 awk '{print substr($0, 2)}' 2>/dev/null + LC_ALL=en_US.UTF-8 $awk '{print substr($0, 2)}' 2>/dev/null ` if test "$at_sign" = @; then - LC_ALL=en_US.utf8; export LC_ALL + LC_ALL=en_US.UTF-8; export LC_ALL fi fi # Check the log entry. -exec awk ' +exec $awk ' /^#/ { next } !/^.*$/ { @@ -60,8 +67,8 @@ exec awk ' status = 1 } - /[[:cntrl:]]/ { - print "Text contains control character; please use spaces instead of tabs" + /[^[:print:]]/ { + print "Unprintable character; please use spaces instead of tabs" status = 1 } @@ -76,7 +83,7 @@ exec awk ' } /^Signed-off-by: / { - print "'Signed-off-by:' present" + print "'\''Signed-off-by:'\'' present" status = 1 } |