2018-09-27 09:04:08 +00:00
|
|
|
# SPDX-License-Identifier: BSD-3-Clause
|
|
|
|
# Copyright 2018 Arnon Warshavsky <arnon@qwilt.com>
|
|
|
|
|
|
|
|
# This awk script receives a list of expressions to monitor
|
|
|
|
# and a list of folders to search these expressions in
|
|
|
|
# - No search is done inside comments
|
|
|
|
# - Both additions and removals of the expressions are checked
|
|
|
|
# A positive balance of additions fails the check
|
|
|
|
|
|
|
|
BEGIN {
|
|
|
|
split(FOLDERS,deny_folders," ");
|
|
|
|
split(EXPRESSIONS,deny_expr," ");
|
|
|
|
in_file=0;
|
|
|
|
in_comment=0;
|
|
|
|
count=0;
|
|
|
|
comment_start="/*"
|
|
|
|
comment_end="*/"
|
|
|
|
}
|
|
|
|
# search for add/remove instances in current file
|
|
|
|
# state machine assumes the comments structure is enforced by
|
|
|
|
# checkpatches.pl
|
|
|
|
(in_file) {
|
2022-01-27 10:55:11 +00:00
|
|
|
if ($0 ~ "^@@") {
|
|
|
|
in_comment = 0
|
|
|
|
}
|
2018-09-27 09:04:08 +00:00
|
|
|
# comment start
|
|
|
|
if (index($0,comment_start) > 0) {
|
|
|
|
in_comment = 1
|
|
|
|
}
|
|
|
|
# non comment code
|
|
|
|
if (in_comment == 0) {
|
|
|
|
for (i in deny_expr) {
|
|
|
|
forbidden_added = "^\\+.*" deny_expr[i];
|
|
|
|
forbidden_removed="^-.*" deny_expr[i];
|
|
|
|
current = expressions[deny_expr[i]]
|
|
|
|
if ($0 ~ forbidden_added) {
|
|
|
|
count = count + 1;
|
|
|
|
expressions[deny_expr[i]] = current + 1
|
|
|
|
}
|
|
|
|
if ($0 ~ forbidden_removed) {
|
|
|
|
count = count - 1;
|
|
|
|
expressions[deny_expr[i]] = current - 1
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
# comment end
|
|
|
|
if (index($0,comment_end) > 0) {
|
|
|
|
in_comment = 0
|
|
|
|
}
|
|
|
|
}
|
|
|
|
# switch to next file , check if the balance of add/remove
|
|
|
|
# of previous filehad new additions
|
|
|
|
($0 ~ "^\\+\\+\\+ b/") {
|
|
|
|
in_file = 0;
|
|
|
|
if (count > 0) {
|
|
|
|
exit;
|
|
|
|
}
|
|
|
|
for (i in deny_folders) {
|
|
|
|
re = "^\\+\\+\\+ b/" deny_folders[i];
|
2020-11-10 15:40:05 +00:00
|
|
|
if ($0 ~ re) {
|
2018-09-27 09:04:08 +00:00
|
|
|
in_file = 1
|
|
|
|
last_file = $0
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
END {
|
|
|
|
if (count > 0) {
|
2020-07-06 08:00:21 +00:00
|
|
|
print "Warning in " substr(last_file,7) ":"
|
2018-11-02 10:52:21 +00:00
|
|
|
print MESSAGE
|
2018-09-27 09:04:08 +00:00
|
|
|
exit RET_ON_FAIL
|
|
|
|
}
|
|
|
|
}
|