diff --git a/tools/tools/README b/tools/tools/README index e9187d37d029..88658f043d4d 100644 --- a/tools/tools/README +++ b/tools/tools/README @@ -44,6 +44,7 @@ kernelcruft Shellscript to find orphaned *.c files in /sys kerninclude Shellscript to find unused #includes in the kernel. kernxref Shellscript to cross reference symbols in the LINT kernel. kttcp An in-kernel version of the ttcp network performance tool +man Scripts useful for working on man pages. mctest A multicast test program mid Create a Message-ID database for mailing lists. mwl Tools specific to the Marvell 88W8363 support diff --git a/tools/tools/man/README b/tools/tools/man/README new file mode 100644 index 000000000000..b0fd24cf1236 --- /dev/null +++ b/tools/tools/man/README @@ -0,0 +1,23 @@ +man scripts +=========== + +checkmlinks.sh +-------------- + +This is a simple script used to check if a man page's Nm/Fo/Fn macro +names are in the Makefile. + +To run, switch to the directory with the pages in it and run the script: +``` +cd /usr/src/share/man/man9 +sh /usr/src/tools/tools/man/checkmlinks.sh +``` + +The script will output the name that is missing, and the file that it +was sourced from. + +There are a number of exceptions, and those should be added to the +script to skip over, e.g. `SDT_PROBE`. The last one is added because +adding the numbered args is a bit redundant. + +$FreeBSD$ diff --git a/tools/tools/man/checkmlinks.sh b/tools/tools/man/checkmlinks.sh new file mode 100755 index 000000000000..21ebf6ac218a --- /dev/null +++ b/tools/tools/man/checkmlinks.sh @@ -0,0 +1,35 @@ +#!/bin/sh - +# Copyright 2020 John-Mark Gurney. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. +# +# $FreeBSD$ +# + +for i in *.[0-9]*; do + for j in $(awk '($1 == ".Nm" || $1 == ".Fo" || $1 == ".Fn") && $2 != "" && $2 != "." && $2 != "," { print $2 }' "$i" | egrep -v 'SDT_PROBE|_Static_assert|ffs_vget|atomic_'); do + if ! grep "$j" Makefile >/dev/null; then + echo missing "$j" from "$i" + fi + done | sort -u +done