116038816SMartin Matuska#!/bin/sh 216038816SMartin Matuska# 316038816SMartin Matuska# Permission to use, copy, modify, and/or distribute this software for 416038816SMartin Matuska# any purpose with or without fee is hereby granted. 516038816SMartin Matuska# 616038816SMartin Matuska# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 716038816SMartin Matuska# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 816038816SMartin Matuska# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 916038816SMartin Matuska# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 1016038816SMartin Matuska# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN 1116038816SMartin Matuska# AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT 1216038816SMartin Matuska# OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 1316038816SMartin Matuska# 14681ce946SMartin Matuska# shellcheck disable=SC2086 1581b22a98SMartin Matuska 1681b22a98SMartin Matuskatrap 'rm -f "$stdout_file" "$stderr_file" "$result_file"' EXIT 1716038816SMartin Matuska 1816038816SMartin Matuskaif [ "$#" -eq 0 ]; then 1916038816SMartin Matuska echo "Usage: $0 manpage-directory..." 2016038816SMartin Matuska exit 1 2116038816SMartin Matuskafi 2216038816SMartin Matuska 2316038816SMartin Matuskaif ! command -v mandoc > /dev/null; then 2416038816SMartin Matuska echo "skipping mancheck because mandoc is not installed" 2516038816SMartin Matuska exit 0 2616038816SMartin Matuskafi 2716038816SMartin Matuska 2816038816SMartin MatuskaIFS=" 2916038816SMartin Matuska" 30*2a58b312SMartin Matuskafiles="$(find "$@" -type f -name '*[1-9]*' -not -name '.*')" || exit 1 3116038816SMartin Matuska 3216038816SMartin Matuskaadd_excl="$(awk ' 3316038816SMartin Matuska /^.\\" lint-ok:/ { 3416038816SMartin Matuska print "-e" 3516038816SMartin Matuska $1 = "mandoc:" 3616038816SMartin Matuska $2 = FILENAME ":[[:digit:]]+:[[:digit:]]+:" 3716038816SMartin Matuska print 3816038816SMartin Matuska }' $files)" 3916038816SMartin Matuska 4016038816SMartin Matuska# Redirect to file instead of 2>&1ing because mandoc flushes inconsistently(?) which tears lines 4116038816SMartin Matuska# https://github.com/openzfs/zfs/pull/12129/checks?check_run_id=2701608671#step:5:3 4281b22a98SMartin Matuskastdout_file="$(mktemp)" 4381b22a98SMartin Matuskastderr_file="$(mktemp)" 4481b22a98SMartin Matuskamandoc -Tlint $files 1>"$stdout_file" 2>"$stderr_file" 4581b22a98SMartin Matuskaresult_file="$(mktemp)" 4681b22a98SMartin Matuskagrep -vhE -e 'mandoc: outdated mandoc.db' -e 'STYLE: referenced manual not found' $add_excl "$stdout_file" "$stderr_file" > "$result_file" 4781b22a98SMartin Matuska 4881b22a98SMartin Matuskaif [ -s "$result_file" ]; then 4981b22a98SMartin Matuska cat "$result_file" 5081b22a98SMartin Matuska exit 1 5181b22a98SMartin Matuskaelse 5281b22a98SMartin Matuska echo "no errors found" 5381b22a98SMartin Matuskafi 54