scripts/bash_aliases: man_lsfunc(), man_lsvar(): Use mansect(1)
Alejandro Colomar
maintainerPATCH v2 1/3 scripts/bash_aliases: man_lsfunc(), man_lsvar(): Use mansect(1)
In reply to a message not in the archiveRemove the man_section() function, and call the mansect(1) program instead.
Signed-off-by Alejandro Colomar <[email protected]>
--- scripts/bash_aliases | 45 ++++++-------------------------------------- 1 file changed, 6 insertions(+), 39 deletions(-)
scripts/bash_aliases +6 -39
@@ -38,39 +38,6 @@ sed_rm_ccomments() ######################################################################## # Linux man-pages -# man_section() prints specific manual page sections (DESCRIPTION, SYNOPSIS, -# ...) of all manual pages in a directory (or in a single manual page file). -# Usage example: .../man-pages$ man_section man2 SYNOPSIS 'SEE ALSO'; - -man_section() -{ - if [ $# -lt 2 ]; then - >&2 echo "Usage: ${FUNCNAME[0]} <dir> <section>..."; - return $EX_USAGE; - fi - - local page="$1"; - shift; - local sect="$*"; - - find "$page" -type f \ - |xargs wc -l \ - |grep -v -e '\b1 ' -e '\btotal\b' \ - |awk '{ print $2 }' \ - |sort \ - |while read -r manpage; do - (sed -n '/^\.TH/,/^\.SH/{/^\.SH/!p}' <"$manpage"; - for s in $sect; do - <"$manpage" \ - sed -n \ - -e "/^\.SH $s/p" \ - -e "/^\.SH $s/,/^\.SH/{/^\.SH/!p}"; - done;) \ - |mandoc -Tutf8 2>/dev/null \ - |col -pbx; - done; -} - # man_lsfunc() prints the name of all C functions 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
@@ -83,9 +50,9 @@ man_lsfunc() return $EX_USAGE; fi - for arg in "$@"; do - man_section "$arg" 'SYNOPSIS'; - done \ + mansect 'SYNOPSIS' "$@" \ + |mandoc -Tutf8 2>/dev/null \ + |col -pbx \ |sed_rm_ccomments \ |pcregrep -Mn '(?s)^ [\w ]+ \**\w+\([\w\s(,)[\]*]*?(...)?\s*\); *$' \ |grep '^[0-9]' \
@@ -106,9 +73,9 @@ man_lsvar() return $EX_USAGE; fi - for arg in "$@"; do - man_section "$arg" 'SYNOPSIS'; - done \ + mansect 'SYNOPSIS' "$@" \ + |mandoc -Tutf8 2>/dev/null \ + |col -pbx \ |sed_rm_ccomments \ |pcregrep -Mv '(?s)^ [\w ]+ \**\w+\([\w\s(,)[\]*]+?(...)?\s*\); *$' \ |pcregrep -Mn \
Signature · 1 line
2.39.5
Alejandro Colomar
maintainerPATCH v2 2/3 scripts/bash_aliases: man_lsfunc(), man_lsvar(): Use pcre2grep(1) instead of pcregrep(1)
In reply to a message not in the archivepcregrep(1) is obsolete.
Signed-off-by Alejandro Colomar <[email protected]>
--- scripts/bash_aliases | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
scripts/bash_aliases +3 -3
@@ -54,7 +54,7 @@ man_lsfunc() |mandoc -Tutf8 2>/dev/null \ |col -pbx \ |sed_rm_ccomments \ - |pcregrep -Mn '(?s)^ [\w ]+ \**\w+\([\w\s(,)[\]*]*?(...)?\s*\); *$' \ + |pcre2grep -Mn '(?s)^ [\w ]+ \**\w+\([\w\s(,)[\]*]*?(...)?\s*\); *$' \ |grep '^[0-9]' \ |sed -E 's/syscall\(SYS_(\w*),?/\1(/' \ |sed -E 's/^[^(]+ \**(\w+)\(.*/\1/' \
@@ -77,8 +77,8 @@ man_lsvar() |mandoc -Tutf8 2>/dev/null \ |col -pbx \ |sed_rm_ccomments \ - |pcregrep -Mv '(?s)^ [\w ]+ \**\w+\([\w\s(,)[\]*]+?(...)?\s*\); *$' \ - |pcregrep -Mn \ + |pcre2grep -Mv '(?s)^ [\w ]+ \**\w+\([\w\s(,)[\]*]+?(...)?\s*\); *$' \ + |pcre2grep -Mn \ -e '(?s)^ +extern [\w ]+ \**\(\*+[\w ]+\)\([\w\s(,)[\]*]+?\s*\); *$' \ -e '^ +extern [\w ]+ \**[\w ]+; *$' \ |grep '^[0-9]' \
Signature · 1 line
2.39.5
Alejandro Colomar
maintainerPATCH v2 3/3 src/bin/mansect: Preprocess with preconv(1)
In reply to a message not in the archiveThis doesn't process the pages in a significant way, and has the benefit that it writes the name of the pages in the output.
Signed-off-by Alejandro Colomar <[email protected]>
--- src/bin/mansect | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
src/bin/mansect +3 -2
@@ -14,13 +14,14 @@ shift; if test $# -lt 1; then - cat; + preconv; else find -L "$@" -not -type d \ | xargs grep -l '^\.TH ' \ - | xargs cat; + | xargs preconv; fi \ | sed -En \ + -e '/^\.lf 1 /p' \ -e '/^\.TH /p' \ -e '/^\.SH '"$s"'$/p' \ -e '/^\.SH '"$s"'$/,/^\.(TH|SH)/{/^\.(TH|SH)/!p}';
Signature · 1 line
2.39.5
Alejandro Colomar
maintainerD'oh. Ignore this thread, please. I'm a bit rusty with git-send-email(1), it seems.
Quoted 81 lines · Alejandro Colomar
Remove the
man_section()function, and call the mansect(1) program instead.Signed-off-by Alejandro Colomar <[email protected]>--- scripts/bash_aliases | 45 ++++++-------------------------------------- 1 file changed, 6 insertions(+), 39 deletions(-)scripts/bash_aliases +6
-39@@ -38,39 +38,6 @@ sed_rm_ccomments() ######################################################################## # Linux man-pages -# man_section() prints specific manual page sections (DESCRIPTION, SYNOPSIS, -# ...) of all manual pages in a directory (or in a single manual page file). -# Usage example: .../man-pages$ man_section man2 SYNOPSIS 'SEE ALSO'; - -man_section() -{ - if [ $# -lt 2 ]; then - >&2 echo "Usage: ${FUNCNAME[0]} <dir> <section>..."; - return $EX_USAGE; - fi - - local page="$1"; - shift; - local sect="$*"; - - find "$page" -type f \ - |xargs wc -l \ - |grep -v -e '\b1 ' -e '\btotal\b' \ - |awk '{ print $2 }' \ - |sort \ - |while read -r manpage; do - (sed -n '/^\.TH/,/^\.SH/{/^\.SH/!p}' <"$manpage"; - for s in $sect; do - <"$manpage" \ - sed -n \ - -e "/^\.SH $s/p" \ - -e "/^\.SH $s/,/^\.SH/{/^\.SH/!p}"; - done;) \ - |mandoc -Tutf8 2>/dev/null \ - |col -pbx; - done; -} - # man_lsfunc() prints the name of all C functions 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@@ -83,9 +50,9 @@ man_lsfunc() return $EX_USAGE; fi - for arg in "$@"; do - man_section "$arg" 'SYNOPSIS'; - done \ + mansect 'SYNOPSIS' "$@" \ + |mandoc -Tutf8 2>/dev/null \ + |col -pbx \ |sed_rm_ccomments \ |pcregrep -Mn '(?s)^ [\w ]+ \**\w+\([\w\s(,)[\]*]*?(...)?\s*\); *$' \ |grep '^[0-9]' \@@ -106,9 +73,9 @@ man_lsvar() return $EX_USAGE; fi - for arg in "$@"; do - man_section "$arg" 'SYNOPSIS'; - done \ + mansect 'SYNOPSIS' "$@" \ + |mandoc -Tutf8 2>/dev/null \ + |col -pbx \ |sed_rm_ccomments \ |pcregrep -Mv '(?s)^ [\w ]+ \**\w+\([\w\s(,)[\]*]+?(...)?\s*\); *$' \ |pcregrep -Mn \Signature · 1 line
2.39.5
Signature · 1 line
<https://www.alejandro-colomar.es/>