1#! /usr/bin/env bash 2# __ __ _ 3# ___\ \/ /_ __ __ _| |_ 4# / _ \\ /| '_ \ / _` | __| 5# | __// \| |_) | (_| | |_ 6# \___/_/\_\ .__/ \__,_|\__| 7# |_| XML parser 8# 9# Copyright (c) 2021-2024 Sebastian Pipping <sebastian@pipping.org> 10# Licensed under the MIT license: 11# 12# Permission is hereby granted, free of charge, to any person obtaining 13# a copy of this software and associated documentation files (the 14# "Software"), to deal in the Software without restriction, including 15# without limitation the rights to use, copy, modify, merge, publish, 16# distribute, sublicense, and/or sell copies of the Software, and to permit 17# persons to whom the Software is furnished to do so, subject to the 18# following conditions: 19# 20# The above copyright notice and this permission notice shall be included 21# in all copies or substantial portions of the Software. 22# 23# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 24# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 25# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN 26# NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 27# DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 28# OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE 29# USE OR OTHER DEALINGS IN THE SOFTWARE. 30 31PS4='# ' 32set -e -u -o pipefail -x 33 34if [[ "$(uname -s)" =~ ^Darwin ]]; then 35 export PATH="/usr/local/opt/findutils/libexec/gnubin${PATH:+:}${PATH}" 36fi 37 38cppcheck --version 39 40find --version | head -n1 41 42for xml_context_bytes in 0 1024; do 43 for xml_ge in 0 1; do 44 cppcheck_args=( 45 --quiet 46 --error-exitcode=1 47 --force 48 --suppress=objectIndex 49 --suppress=unknownMacro 50 -DXML_CONTEXT_BYTES=${xml_context_bytes} 51 -DXML_GE=${xml_ge} 52 ) 53 54 find_args=( 55 -type f \( 56 -name \*.cpp 57 -o -name \*.c 58 \) 59 -not \( # Exclude .c files that are merely included by other files 60 -name xmltok_ns.c 61 -o -name xmltok_impl.c 62 \) 63 -exec cppcheck "${cppcheck_args[@]}" {} + 64 ) 65 66 time find "${find_args[@]}" 67 done 68done 69