Repeated ERRORS (was: A typo report in socket(2))

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Violeta,

On 8/31/22 09:02, Violeta Kabadzhova wrote:
Hello,

According to the Reporting man pages bug <https://www.kernel.org/doc/man-pages/reporting_bugs.html> article, in case of a spotted typo (one-liner), one should write to the maintainers and CC the current mailing list.

Well done. Ideally, you should send plain text emails, since the mailing list discards HTML email, but I understand that some tools are not friendly to send plain text emails, so don't worry.


In the socket(2) <https://man7.org/linux/man-pages/man2/socket.2.html>::ERRORS man page there's a duplicate EINVAL (depicted below).
image.png

That's because socket(2) will set errno to EINVAL if any of those two situations happen. I know it's a bit weird the first time you see it, but you get used to it. I don't know of a better way to express it concisely, and other Unix systems seem to do the same thing[1].

[1]: <https://man.openbsd.org/clock_getres.2#ERRORS>

I got a list of all of the duplicate errors, which I used to compare it to the OpenBSD manual pages. I'll share it here so that it's easier to remember if I need to.

The below script makes use of man_section(), defined in <scripts/bash_aliases> in the man-pages repository, for which I also copied the definition below.


Cheers,

Alex


Best,
Violeta


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;) \
		|man -P cat -l - 2>/dev/null;
	done;
}


And the list is:


$ man_section man2 ERRORS \
  | grep -e '^\w*(2)' -e '^       E' \
  | grep -o '^ *[^ ]*' \
  | sed '/^\w/p' \
  | uniq -d \
  | tac \
  | sed -n '/^ /,/^[^ ]/p' \
  | tac;
ACCEPT(2)
       EINVAL
ACCESS(2)
       EINVAL
       ENOTDIR
ADD_KEY(2)
       EINVAL
       EPERM
ADJTIMEX(2)
       EINVAL
BIND(2)
       EADDRINUSE
       EINVAL
BPF(2)
       EINVAL
CAPGET(2)
       EPERM
CHMOD(2)
       EBADF
       ENOTDIR
       EPERM
CHOWN(2)
       EBADF
       ENOTDIR
       EPERM
CLOCK_GETRES(2)
       EINVAL
CLOCK_NANOSLEEP(2)
       EINVAL
CLONE(2)
       EINVAL
       ENOSPC
       EPERM
COPY_FILE_RANGE(2)
       EBADF
       EFBIG
       EINVAL
       EXDEV
DUP(2)
       EBADF
       EINVAL
EPOLL_CREATE(2)
       EINVAL
       EMFILE
EPOLL_CTL(2)
       EINVAL
EXECVE(2)
       EACCES
       ELOOP
       EPERM
FALLOCATE(2)
       EFBIG
       EINVAL
       EPERM
FANOTIFY_INIT(2)
       EMFILE
FANOTIFY_MARK(2)
       EBADF
       EINVAL
       ENOTDIR
FCNTL(2)
       EBADF
       EBUSY
       EINTR
       EINVAL
       EPERM
FORK(2)
       EAGAIN
       ENOMEM
FUTEX(2)
       EAGAIN
       EDEADLK
       EINVAL
       ENOSYS
       EPERM
       ESRCH
GETGROUPS(2)
       EINVAL
       EPERM
GETRLIMIT(2)
       EPERM
GETTIMEOFDAY(2)
       EINVAL
INOTIFY_INIT(2)
       EMFILE
IOCTL(2)
       ENOTTY
KEXEC_LOAD(2)
       EADDRNOTAVAIL
       EINVAL
KEYCTL(2)
       EDEADLK
       EINVAL
       ENOENT
       ENOKEY
       EOPNOTSUPP
       EPERM
LINK(2)
       EPERM
       ENOENT
LISTEN(2)
       EADDRINUSE
MADVISE(2)
       EINVAL
       ENOMEM
MEMFD_CREATE(2)
       EINVAL
MEMFD_SECRET(2)
       EMFILE
MINCORE(2)
       ENOMEM
MKDIR(2)
       ENOSPC
       ENOTDIR
MKNOD(2)
       ENOTDIR
MLOCK(2)
       EINVAL
       ENOMEM
       EPERM
MMAP(2)
       EINVAL
       ENOMEM
       EPERM
MOUNT(2)
       EACCES
       EBUSY
       EINVAL
       ELOOP
       EPERM
MOUNT_SETATTR(2)
       EBADF
       EBUSY
       EINVAL
       EPERM
MPROTECT(2)
       EINVAL
       ENOMEM
MSGCTL(2)
       EPERM
MSGOP(2)
       EINVAL
       ENOMSG
OPEN(2)
       EACCES
       EINVAL
       EISDIR
       ELOOP
       ENOENT
       ENOMEM
       ENOTDIR
       ENXIO
       EPERM
       ETXTBSY
OPEN_BY_HANDLE_AT(2)
       EINVAL
       EBADF
OPENAT2(2)
       EAGAIN
       EINVAL
       ELOOP
       EXDEV
PIDFD_GETFD(2)
       EBADF
PIDFD_OPEN(2)
       EINVAL
PIDFD_SEND_SIGNAL(2)
       EINVAL
       EPERM
PIPE(2)
       ENFILE
PIVOT_ROOT(2)
       EINVAL
POLL(2)
       EINVAL
PRCTL(2)
       EACCES
       EFAULT
       EINVAL
       ENXIO
       EPERM
PROCESS_MADVISE(2)
       EINVAL
PROCESS_VM_READV(2)
       EFAULT
       EINVAL
QUOTACTL(2)
       EINVAL
       ESRCH
READ(2)
       EAGAIN
       EINVAL
READLINK(2)
       EINVAL
       ENOTDIR
READV(2)
       EINVAL
REMAP_FILE_PAGES(2)
       EINVAL
RENAME(2)
       EINVAL
REQUEST_KEY(2)
       EINVAL
RMDIR(2)
       EPERM
RT_SIGQUEUEINFO(2)
       EPERM
S390_PCI_MMIO_WRITE(2)
       EFAULT
S390_RUNTIME_INSTR(2)
       EINVAL
SCHED_SETAFFINITY(2)
       EINVAL
SCHED_SETATTR(2)
       EPERM
SCHED_SETPARAM(2)
       EINVAL
SCHED_SETSCHEDULER(2)
       EINVAL
SECCOMP(2)
       EINVAL
       ENOMEM
SELECT(2)
       EINVAL
SEMGET(2)
       EINVAL
SEND(2)
       EAGAIN
SENDFILE(2)
       EINVAL
SETNS(2)
       EINVAL
SETRESUID(2)
       EAGAIN
SETREUID(2)
       EAGAIN
SETUID(2)
       EAGAIN
SETXATTR(2)
       ENOTSUP
SHMGET(2)
       EINVAL
SIGNALFD(2)
       EINVAL
SOCKET(2)
       EINVAL
SPLICE(2)
       EINVAL
STAT(2)
       EBADF
       ENOENT
       ENOTDIR
STATX(2)
       EINVAL
SWAPON(2)
       EINVAL
SYMLINK(2)
       ENOENT
       ENOTDIR
TIMER_SETTIME(2)
       EINVAL
TIMERFD_CREATE(2)
       EINVAL
       EINVAL
TKILL(2)
       EAGAIN
TRUNCATE(2)
       EPERM
       EBADF
       EINVAL
UMOUNT(2)
       EINVAL
UNLINK(2)
       EPERM
UNSHARE(2)
       EINVAL
       ENOSPC
       EPERM
UTIME(2)
       EACCES
UTIMENSAT(2)
       EBADF
       EINVAL
WAIT(2)
       ECHILD
WRITE(2)
       EAGAIN


--
Alejandro Colomar
<http://www.alejandro-colomar.es/>

Attachment: OpenPGP_signature
Description: OpenPGP digital signature


[Index of Archives]     [Kernel Documentation]     [Netdev]     [Linux Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux