aboutsummaryrefslogtreecommitdiffstats
path: root/scripts
diff options
authorAlejandro Colomar <alx.manpages@gmail.com>2021-05-09 23:39:10 +0200
committerMichael Kerrisk <mtk.manpages@gmail.com>2021-05-10 11:32:42 +1200
commit3a42b0815e69f00bb74aa002e77f321c634d0a66 (patch)
treed562ce56c1ea93f73e2ab9ba2ca26909e4266424 /scripts
parent5ae99ccb427914e49bb1c03efb57673cafb57409 (diff)
downloadman-pages-3a42b0815e69f00bb74aa002e77f321c634d0a66.tar.gz
scripts/bash_aliases: Add man_lsvar(), similar to man_lsfunc() but lists variables
Signed-off-by: Alejandro Colomar <alx.manpages@gmail.com> Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
Diffstat (limited to 'scripts')
-rw-r--r--scripts/bash_aliases27
1 files changed, 27 insertions, 0 deletions
diff --git a/scripts/bash_aliases b/scripts/bash_aliases
index c50108a165..813c00960c 100644
--- a/scripts/bash_aliases
+++ b/scripts/bash_aliases
@@ -131,6 +131,33 @@ function man_lsfunc()
|uniq;
}
+# man_lsvar() prints the name of all C variables declared in the SYNOPSIS
+# of all manual pages in a directory (or in a single manual page file).
+# Each name is printed in a separate line
+# Usage example: .../man-pages$ man_lsvar man3;
+
+function man_lsvar()
+{
+ if ! [ -v 1 ]; then
+ >&2 echo "Usage: ${FUNCNAME[0]} <dir>";
+ return ${EX_USAGE};
+ fi
+
+ for arg in "$@"; do
+ man_section "${arg}" 'SYNOPSIS';
+ done \
+ |sed_rm_ccomments \
+ |pcregrep -Mv '(?s)^ [\w ]+ \**\w+\([\w\s(,)[\]*]+?(...)?\s*\); *$' \
+ |pcregrep -Mn \
+ -e '(?s)^ +extern [\w ]+ \**\(\*+[\w ]+\)\([\w\s(,)[\]*]+?\s*\); *$' \
+ -e '^ +extern [\w ]+ \**[\w ]+; *$' \
+ |grep '^[0-9]' \
+ |grep -v 'typedef' \
+ |sed -E 's/^[0-9]+: +extern [^(]+ \**\(\*+(\w* )?(\w+)\)\(.*/\2/' \
+ |sed 's/^[0-9]\+: \+extern .* \**\(\w\+\); */\1/' \
+ |uniq;
+}
+
# pdfman() renders a manual page in PDF
# Usage example: .../man-pages$ pdfman man2/membarrier.2;