Re: [PATCH] execveat.2: srcfix

Alejandro Colomar (man-pages)
2021-02-02T17:46:05Z

On 12/31/20 4:26 PM, Michael Kerrisk (man-pages) wrote:
[...]
>
> What do you think about the work-in-progess patch below? The following
> may be useful for review:
>
> for p in $(git grep -l 'SYN' man[3-8]); do
> echo "===================== $p"; man -l $p 2> /dev/null |
> sed -n '/^SYNOP/,/DESCR/p' | sed '/Feat/,$d';
> done | less
>
> Cheers,
>
> Michael
[...]

Hi Michael,

I developed a function for reviewing the prototypes of all functions and
comparing them easily against glibc and kernel sources. It's based on
your code above. You may find it useful (I made it generic enough to be
useful for other tasks) to include it in your .bash_aliases.

[[
EX_USAGE=64;
function man_section()
{
if ! [ -v 2 ]; then
>&2 echo "Usage: ${FUNCNAME[0]} ";
return ${EX_USAGE}
fi

find "${1}" -type f \
|xargs grep -l "\.SH ${2}" \
|sort -V \
|while read -r manpage; do
<${manpage} \
sed -n \
-e '/^\.TH/,/^\.SH/{/^\.SH/!p}' \
-e "/^\.SH ${2}/p" \
-e "/^\.SH ${2}/,/^\.SH/{/^\.SH/!p}" \
|man -P cat -l - 2>/dev/null;
done;
}
]]

Basically, at the root of man-pages, run the code below to see all
syscall prototypes.

Cheers,

Alex

---

$ man_section man2 SYN \
|less;
ACCEPT(2) Linux Programmer's Manual
ACCEPT(2)

SYNOPSIS
#include <sys/types.h> /* See NOTES */
#include <sys/socket.h>

int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);

#define _GNU_SOURCE /* See feature_test_macros(7) */
#include <sys/socket.h>

int accept4(int sockfd, struct sockaddr *addr,
socklen_t *addrlen, int flags);

Linux 2020-04-11
ACCEPT(2)
ACCESS(2) Linux Programmer's Manual
ACCESS(2)

SYNOPSIS
#include <unistd.h>

int access(const char *pathname, int mode);

#include <fcntl.h> /* Definition of AT_* constants */
#include <unistd.h>

int faccessat(int dirfd, const char *pathname, int mode, int flags);
/* But see C library/kernel differences, below */

int faccessat2(int dirfd, const char *pathname, int mode, int flags);

Feature Test Macro Requirements for glibc (see feature_test_macros(7)):

faccessat():
Since glibc 2.10:
_POSIX_C_SOURCE >= 200809L
Before glibc 2.10:
_ATFILE_SOURCE

Linux 2020-12-21
ACCESS(2)

[...]

--
Alejandro Colomar
Linux man-pages comaintainer; https://www.kernel.org/doc/man-pages/