numam-dpdk/devtools/check-forbidden-tokens.awk
David Marchand 8d4a222e12 devtools: fix path in forbidden token check
Fix displayed filename by adjusting the extraction from the patch.

Before:
Warning in /lib/librte_eal/linux/eal.c:

After:
Warning in lib/librte_eal/linux/eal.c:

Fixes: 7413e7f2ae ("devtools: alert on new calls to exit from libs")
Cc: stable@dpdk.org

Signed-off-by: David Marchand <david.marchand@redhat.com>
2020-07-06 10:55:19 +02:00

70 lines
1.6 KiB
Awk
Executable File

# 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) {
# 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];
if ($0 ~ deny_folders[i]) {
in_file = 1
last_file = $0
}
}
}
END {
if (count > 0) {
print "Warning in " substr(last_file,7) ":"
print MESSAGE
exit RET_ON_FAIL
}
}