aboutsummaryrefslogtreecommitdiff
path: root/contrib/check_GNU_style.sh
diff options
context:
space:
mode:
authorTom de Vries <tom@codesourcery.com>2015-05-18 15:44:55 +0000
committerTom de Vries <vries@gcc.gnu.org>2015-05-18 15:44:55 +0000
commit323eb6e3cf61d6810d9aabfcf315047550373e00 (patch)
tree2ee9b0fbc2774fed19753c843bbf94c7bb5bcaf9 /contrib/check_GNU_style.sh
parent0454e698401a3ec49700e59855e44493ab9fdbdb (diff)
check_GNU_style.sh: Don't do 80 char check line by line
2015-05-18 Tom de Vries <tom@codesourcery.com> * check_GNU_style.sh: Add temp files tmp2 and tmp3. (cat_with_prefix): New function, using global variable prefix. (col): Make prefix a global variable. Rewrite to process file at a time rather than line at a time. Print part longer than 80 chars in red. From-SVN: r223297
Diffstat (limited to 'contrib/check_GNU_style.sh')
-rwxr-xr-xcontrib/check_GNU_style.sh70
1 files changed, 52 insertions, 18 deletions
diff --git a/contrib/check_GNU_style.sh b/contrib/check_GNU_style.sh
index ab59b1e6fc0..033a2c91b60 100755
--- a/contrib/check_GNU_style.sh
+++ b/contrib/check_GNU_style.sh
@@ -65,10 +65,12 @@ fi
inp=check_GNU_style.inp
tmp=check_GNU_style.tmp
+tmp2=check_GNU_style.2.tmp
+tmp3=check_GNU_style.3.tmp
# Remove $tmp on exit and various signals.
-trap "rm -f $inp $tmp $stdin_tmp" 0
-trap "rm -f $inp $tmp $stdin_tmp; exit 1" 1 2 3 5 9 13 15
+trap "rm -f $inp $tmp $tmp2 $tmp3 $stdin_tmp" 0
+trap "rm -f $inp $tmp $tmp2 $tmp3 $stdin_tmp; exit 1" 1 2 3 5 9 13 15
if [ $nfiles -eq 1 ]; then
# There's no need for the file prefix if we're dealing only with one file.
@@ -80,6 +82,17 @@ grep $format '^+' $files \
| grep -v ':+++' \
> $inp
+cat_with_prefix ()
+{
+ local f="$1"
+
+ if [ "$prefix" = "" ]; then
+ cat "$f"
+ else
+ awk "{printf "%s%s\n", $prefix, \$0}" $f
+ fi
+}
+
# Grep
g (){
local msg="$1"
@@ -134,10 +147,11 @@ vg (){
col (){
local msg="$1"
+
local first=true
local f
for f in $files; do
- local prefix=""
+ prefix=""
if [ $nfiles -ne 1 ]; then
prefix="$f:"
fi
@@ -148,22 +162,42 @@ col (){
| grep -v ':+++' \
> $tmp
- cat $tmp | while IFS= read -r line; do
- local longline
- # Filter out the line number prefix and the patch line modifier '+'
- # to obtain the bare line, before we use expand.
- longline=$(echo "$line" \
- | sed 's/^[0-9]*:+//' \
- | expand \
- | awk '{ if (length($0) > 80) print $0}')
- if [ "$longline" != "" ]; then
- if $first; then
- printf "\n$msg\n"
- first=false
- fi
- echo "$prefix$line"
+ # Keep only line number prefix and patch modifier '+'.
+ cat "$tmp" \
+ | sed 's/\(^[0-9][0-9]*:+\).*/\1/' \
+ > "$tmp2"
+
+ # Remove line number prefix and patch modifier '+'.
+ # Expand tabs to spaces according to tab positions.
+ # Keep long lines, make short lines empty. Print the part past 80 chars
+ # in red.
+ cat "$tmp" \
+ | sed 's/^[0-9]*:+//' \
+ | expand \
+ | awk '{ \
+ if (length($0) > 80) \
+ printf "%s\033[1;31m%s\033[0m\n", \
+ substr($0,1,80), \
+ substr($0,81); \
+ else \
+ print "" \
+ }' \
+ > "$tmp3"
+
+ # Combine prefix back with long lines.
+ # Filter out empty lines.
+ local found=false
+ paste -d '' "$tmp2" "$tmp3" \
+ | grep -v '^[0-9][0-9]*:+$' \
+ > "$tmp" && found=true
+
+ if $found; then
+ if $first; then
+ printf "\n$msg\n"
+ first=false
fi
- done
+ cat_with_prefix "$tmp"
+ fi
done
}