]> git.eshelyaron.com Git - emacs.git/commitdiff
Port commit-message checking to FreeBSD 9.
authorPaul Eggert <eggert@cs.ucla.edu>
Mon, 8 Dec 2014 00:17:20 +0000 (16:17 -0800)
committerPaul Eggert <eggert@cs.ucla.edu>
Mon, 8 Dec 2014 00:18:38 +0000 (16:18 -0800)
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.

ChangeLog
build-aux/git-hooks/commit-msg

index d7fcd2579dec37c640989376ee80247bb745c774..3686a68a53af1915a2ac55971088f56b7649bba8 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2014-12-08  Paul Eggert  <eggert@cs.ucla.edu>
+
+       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.
+
 2014-12-05  Stefan Monnier  <monnier@iro.umontreal.ca>
 
        * .gitignore: Ignore autosave files.
index 6a09eddf88bd1cc2bc5dd59a2bcf11fa69d51ecd..f407881b0db0b5536581b71aa7c30b86c7d51fff 100755 (executable)
 
 # 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
   }