]> git.puffer.fish Git - matthieu/frr.git/commitdiff
tools: improve checkpatch slicing
authorQuentin Young <qlyoung@cumulusnetworks.com>
Thu, 2 Aug 2018 18:34:37 +0000 (18:34 +0000)
committerQuentin Young <qlyoung@cumulusnetworks.com>
Fri, 3 Aug 2018 17:25:14 +0000 (17:25 +0000)
checkpatch cuts from the diff between the outputs of pre-patch and
post-patch runs of `checkpatch.pl`, but fixed-length greps sometimes
don't cut correctly.

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
tools/checkpatch.sh

index e1fb529d35c2465c1fc1e291def8a848ede70a71..6071f4804d9ef7e445be063cbd0e7711180b9e14 100755 (executable)
@@ -72,12 +72,13 @@ else
   echo "Done."
   for file in ${tmp1}/*_cp; do
     if [ -a ${tmp2}/$(basename $file) ]; then
-      result=$(diff $file ${tmp2}/$(basename $file) | grep -A3 "ERROR\|WARNING" | grep -A2 -B2 "${tmp1}")
+      result=$(diff $file ${tmp2}/$(basename $file) | awk '/< ERROR|< WARNING/,/^< $|^< #|^<[^ ]/ { print $0; ++n }; END { exit n }')
     else
-      result=$(cat $file | grep -A3 "ERROR\|WARNING" | grep -A2 -B2 "${tmp1}")
+      result=$(cat $file | awk '/ERROR|WARNING/,/^$/ { print $0; ++n }; END { exit n }')
     fi
-    if [ "$?" -eq "0" ]; then
-      echo "Report for $(basename $file _cp)" 1>&2
+    ni="$?"
+    if [ "$ni" -ne "0" ]; then
+      echo "Report for $(basename $file _cp) | $ni issues" 1>&2
       echo "===============================================" 1>&2
       echo "$result" 1>&2
       if echo $result | grep -q "ERROR"; then