On 2/6/21 10:54 AM, Michael Kerrisk (man-pages) wrote: > Hi Alex, > > Can we please begin every commit message with some English sentences :-). Sure! Thanks for the reminder! :-) > > I'm a little hesitant about the proposed change. execve() has a > similar prototype in the kernel, but the glibc wrapper is just: > > extern int execve (const char *__path, char *const __argv[], > char *const __envp[]) ; I guess that was the reason to write it like that. > > I expect that one day when execveat() is added to glibc, it will be > the same. What do you think? execveat() was added 6 years ago to the kernel (kernel commit 51f39a1f0cea1cacf8c787f652f26dfee9611874) and there's still no wrapper. It's not like epoll_pwait2() that isn't yet in a stable release. I'd document the actual prototype, maybe open a bug in glibc to request a wrapper, and if some day glibc adds that wrapper, I'd just revert the commit. Wouldn't you? Thanks, Alex > > Thanks, > > Michael > > On Wed, 3 Feb 2021 at 19:46, Alejandro Colomar <alx.manpages@xxxxxxxxx> wrote: >> >> .../linux$ grep_syscall execveat >> fs/exec.c:2062: >> SYSCALL_DEFINE5(execveat, >> int, fd, const char __user *, filename, >> const char __user *const __user *, argv, >> const char __user *const __user *, envp, >> int, flags) >> fs/exec.c:2083: >> COMPAT_SYSCALL_DEFINE5(execveat, int, fd, >> const char __user *, filename, >> const compat_uptr_t __user *, argv, >> const compat_uptr_t __user *, envp, >> int, flags) >> include/linux/syscalls.h:980: >> asmlinkage long sys_execveat(int dfd, const char __user *filename, >> const char __user *const __user *argv, >> const char __user *const __user *envp, int flags); >> .../linux$ >> >> function grep_syscall() >> { >> if ! [ -v 1 ]; then >> >&2 echo "Usage: ${FUNCNAME[0]} <syscall>"; >> return ${EX_USAGE}; >> fi >> >> find * -type f \ >> |grep '\.c$' \ >> |sort -V \ >> |xargs pcregrep -Mn "(?s)^\w*SYSCALL_DEFINE.\(${1},.*?\)" \ >> |sed -E 's/^[^:]+:[0-9]+:/&\n/'; >> >> find * -type f \ >> |grep '\.h$' \ >> |sort -V \ >> |xargs pcregrep -Mn "(?s)^asmlinkage \w+ \**sys_${1}\(.*?\)" \ >> |sed -E 's/^[^:]+:[0-9]+:/&\n/'; >> } >> >> Signed-off-by: Alejandro Colomar <alx.manpages@xxxxxxxxx> >> --- >> man2/execveat.2 | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/man2/execveat.2 b/man2/execveat.2 >> index 02d9c7331..d1ce4bee1 100644 >> --- a/man2/execveat.2 >> +++ b/man2/execveat.2 >> @@ -31,7 +31,7 @@ execveat \- execute program relative to a directory file descriptor >> .B #include <unistd.h> >> .PP >> .BI "int execveat(int " dirfd ", const char *" pathname , >> -.BI " char *const " argv "[], char *const " envp [], >> +.BI " const char *const " argv "[], const char *const " envp [], >> .BI " int " flags ); >> .fi >> .PP >> -- >> 2.30.0 >> > > -- Alejandro Colomar Linux man-pages comaintainer; https://www.kernel.org/doc/man-pages/ http://www.alejandro-colomar.es/