Files
calc/check.awk
2017-05-21 15:38:26 -07:00

80 lines
1.2 KiB
Awk

# This awk script will print 3 lines before and after any non-blank line that
# does not begin with a number. This allows the 'make debug' rule to remove
# all non-interest lines the the 'make check' regression output while providing
# 3 lines of context around unexpected output.
#
BEGIN {
havebuf0=0;
buf0=0;
havebuf1=0;
buf1=0;
havebuf2=0;
buf2=0;
error = 0;
}
NF == 0 {
if (error > 0) {
if (havebuf2) {
print buf2;
}
--error;
}
buf2 = buf1;
havebuf2 = havebuf1;
buf1 = buf0;
havebuf1 = havebuf0;
buf0 = $0;
havebuf0 = 1;
next;
}
$1 ~ /^[0-9]+:/ {
if (error > 0) {
if (havebuf2) {
print buf2;
}
--error;
}
buf2 = buf1;
havebuf2 = havebuf1;
buf1 = buf0;
havebuf1 = havebuf0;
buf0 = $0;
havebuf0 = 1;
next;
}
{
error = 6;
if (havebuf2) {
print buf2;
}
buf2 = buf1;
havebuf2 = havebuf1;
buf1 = buf0;
havebuf1 = havebuf0;
buf0 = $0;
havebuf0 = 1;
next;
}
END {
if (error > 0 && havebuf2) {
print buf2;
--error;
}
if (error > 0 && havebuf1) {
print buf1;
--error;
}
if (error > 0 && havebuf0) {
print buf0;
}
if (error > 0) {
exit(1);
} else {
exit(0);
}
}