2017-11-27 13:47:36 +11:00
|
|
|
#!/bin/sh
|
2021-06-03 08:37:05 +02:00
|
|
|
|
2017-11-27 13:47:36 +11:00
|
|
|
# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
|
|
|
#
|
|
|
|
# SPDX-License-Identifier: MPL-2.0
|
2021-06-03 08:37:05 +02:00
|
|
|
#
|
2017-11-27 13:47:36 +11:00
|
|
|
# This Source Code Form is subject to the terms of the Mozilla Public
|
|
|
|
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
|
|
# file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
2018-02-23 09:53:12 +01:00
|
|
|
#
|
2017-11-27 13:47:36 +11:00
|
|
|
# See the COPYRIGHT file distributed with this work for additional
|
|
|
|
# information regarding copyright ownership.
|
|
|
|
|
|
|
|
status=0
|
|
|
|
|
2018-11-16 12:23:08 +11:00
|
|
|
#
|
|
|
|
# Check for missing #include <isc/strerr.h>
|
|
|
|
#
|
|
|
|
list=$(git grep -wl strerror_r lib bin \
|
|
|
|
| grep '\.c$' \
|
|
|
|
| grep -vE -e '(lib/bind|lib/dns/rdata|lib/dns/gen.c)' \
|
|
|
|
-e lib/isc/string.c \
|
2021-05-20 15:53:50 +02:00
|
|
|
-e '(dlzexternal/driver.c)' \
|
2018-11-16 12:23:08 +11:00
|
|
|
| xargs grep -EL "(isc/strerr.h)" 2>/dev/null)
|
|
|
|
[ -n "$list" ] && {
|
|
|
|
status=1
|
|
|
|
echo 'Missing #include <isc/strerr.h>:'
|
|
|
|
echo "$list"
|
|
|
|
}
|
|
|
|
|
2017-11-27 13:47:36 +11:00
|
|
|
#
|
|
|
|
# Check for missing #include <inttypes.h>"
|
|
|
|
#
|
|
|
|
list=$(git grep -l uintptr_t lib bin \
|
|
|
|
| grep '\.c$' \
|
|
|
|
| grep -vE -e '(lib/bind|lib/dns/rdata|lib/dns/gen.c)' \
|
|
|
|
-e '(lib/isc/win32/time.c)' \
|
|
|
|
| xargs grep -L "<inttypes.h>")
|
|
|
|
[ -n "$list" ] && {
|
|
|
|
status=1
|
|
|
|
echo 'Missing #include <inttypes.h>:'
|
|
|
|
echo "$list"
|
|
|
|
}
|
|
|
|
|
2023-12-18 11:38:59 +03:00
|
|
|
#
|
|
|
|
# Check for the direct usage of stdatomic.h
|
|
|
|
#
|
|
|
|
list=$(git grep -l stdatomic.h lib bin ':(exclude)lib/isc/include/isc/atomic\.h' \
|
|
|
|
| grep -e '\.c$' -e '\.h$')
|
|
|
|
[ -n "$list" ] && {
|
|
|
|
status=1
|
|
|
|
echo 'Use #include <isc/atomic.h> instead of #include <stdatomic.h>:'
|
|
|
|
echo "$list"
|
|
|
|
}
|
|
|
|
|
|
|
|
#
|
|
|
|
# Check for the usage of explicit memory ordering
|
|
|
|
#
|
|
|
|
list=$(git grep -l memory_order_.* lib bin ':(exclude)lib/isc/include/isc/atomic\.h' \
|
|
|
|
| grep -e '\.c$' -e '\.h$')
|
|
|
|
[ -n "$list" ] && {
|
|
|
|
status=1
|
|
|
|
echo 'Prefer the helpers in <isc/atomic.h> over specifying an explicit memory order:'
|
|
|
|
echo "$list"
|
|
|
|
}
|
|
|
|
|
2025-08-18 14:07:38 +03:00
|
|
|
#
|
|
|
|
# Check for the usage of built-in bit operarators
|
|
|
|
#
|
|
|
|
list=$(git grep -l -e '__builtin_ctz' --or -e '__builtin_popcount' --or -e '__builtin_clz' lib bin ':(exclude)lib/isc/include/isc/bit\.h' \
|
|
|
|
| grep -e '\.c$' -e '\.h$')
|
|
|
|
[ -n "$list" ] && {
|
|
|
|
status=1
|
|
|
|
echo 'Prefer the helpers in <isc/bit.h> over builtin bit utilities:'
|
|
|
|
echo "$list"
|
|
|
|
}
|
|
|
|
|
2017-11-27 13:47:36 +11:00
|
|
|
exit $status
|