]> git.ipfire.org Git - thirdparty/man-pages.git/commitdiff
src/bin/mansect, mansect.1: Add program and its manual page
authorAlejandro Colomar <alx@kernel.org>
Sat, 2 Nov 2024 22:27:13 +0000 (23:27 +0100)
committerAlejandro Colomar <alx@kernel.org>
Sun, 3 Nov 2024 05:10:06 +0000 (06:10 +0100)
Preprocess with preconv(1).  This doesn't process the pages in a
significant way, and has the benefit that it writes the name of the
pages in the output.

Cc: "G. Branden Robinson" <branden@debian.org>
Cc: Colin Watson <cjwatson@debian.org>
Cc: <groff@gnu.org>
Signed-off-by: Alejandro Colomar <alx@kernel.org>
man/man1/mansect.1 [new file with mode: 0644]
src/bin/mansect [new file with mode: 0755]

diff --git a/man/man1/mansect.1 b/man/man1/mansect.1
new file mode 100644 (file)
index 0000000..4db22b0
--- /dev/null
@@ -0,0 +1,64 @@
+.\" Copyright 2024, Alejandro Colomar <alx@kernel.org>
+.\"
+.\" SPDX-License-Identifier: Linux-man-pages-copyleft
+.\"
+.TH mansect 1 (date) "Linux man-pages (unreleased)"
+.SH NAME
+mansect
+\-
+print the source code of sections of manual pages
+.SH SYNOPSIS
+.B mansect
+.I section
+.RI [ file\~ .\|.\|.]
+.SH DESCRIPTION
+The
+.B mansect
+command prints the source code of the
+.I section
+of the given manual-page files.
+If no files are specified,
+the standard input is used.
+.P
+.I section
+is a PCRE2 regular expression.
+.P
+The
+.B TH
+line is unconditionally printed.
+.P
+The output of this program is suitable for piping to the
+.BR groff (1)
+pipeline.
+.SH EXAMPLES
+.EX
+.RB $\~ "man \-w strtol strtoul | xargs mansect \[aq]NAME|SEE ALSO\[aq]" ;
+\&.lf 1 /usr/local/man/man3/strtol.3
+\&.TH strtol 3 2024-07-23 "Linux man-pages 6.9.1"
+\&.SH NAME
+strtol, strtoll, strtoq \- convert a string to a long integer
+\&.SH SEE ALSO
+\&.BR atof (3),
+\&.BR atoi (3),
+\&.BR atol (3),
+\&.BR strtod (3),
+\&.BR strtoimax (3),
+\&.BR strtoul (3)
+\&.lf 1 /usr/local/man/man3/strtoul.3
+\&.TH strtoul 3 2024-07-23 "Linux man-pages 6.9.1"
+\&.SH NAME
+strtoul, strtoull, strtouq \- convert a string to an unsigned long integer
+\&.SH SEE ALSO
+\&.BR a64l (3),
+\&.BR atof (3),
+\&.BR atoi (3),
+\&.BR atol (3),
+\&.BR strtod (3),
+\&.BR strtol (3),
+\&.BR strtoumax (3)
+.EE
+.SH SEE ALSO
+.BR lexgrog (1),
+.BR groff (1),
+.BR pcre2grep (1),
+.BR mandb (8)
diff --git a/src/bin/mansect b/src/bin/mansect
new file mode 100755 (executable)
index 0000000..c6229d5
--- /dev/null
@@ -0,0 +1,23 @@
+#!/bin/sh
+#
+# Copyright 2020-2024, Alejandro Colomar <alx@kernel.org>
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+if test $# -lt 1; then
+       >&2 printf '%s\n' "$(basename "$0"): error: Too few arguments."
+       return 1;
+fi;
+
+s="$1";
+shift;
+
+if test $# -lt 1; then
+       preconv;
+else
+       find -H "$@" -not -type d \
+       | xargs preconv;
+fi \
+| pcre2grep -M \
+       -e '^\.lf 1 ' \
+       -e '^\.TH ' \
+       -e '(?s)^\.SH ('"$s"')$(?:(?!^\.(lf 1|TH|SH) ).)*';