#!/bin/sh # Copyright (C) Internet Systems Consortium, Inc. ("ISC") # # SPDX-License-Identifier: MPL-2.0 # # 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/. # # See the COPYRIGHT file distributed with this work for additional # information regarding copyright ownership. status=0 # # Check for missing #include # 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 \ -e '(dlzexternal/driver.c)' \ | xargs grep -EL "(isc/strerr.h)" 2>/dev/null) [ -n "$list" ] && { status=1 echo 'Missing #include :' echo "$list" } # # Check for missing #include " # 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 "") [ -n "$list" ] && { status=1 echo 'Missing #include :' echo "$list" } # # 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 instead of #include :' 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 over specifying an explicit memory order:' echo "$list" } # # 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 over builtin bit utilities:' echo "$list" } exit $status