From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-12.6 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,NICE_REPLY_A, SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 25F07C433DB for ; Thu, 31 Dec 2020 18:56:44 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id CD840222BB for ; Thu, 31 Dec 2020 18:56:43 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726661AbgLaS42 (ORCPT ); Thu, 31 Dec 2020 13:56:28 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60384 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726652AbgLaS41 (ORCPT ); Thu, 31 Dec 2020 13:56:27 -0500 Received: from mail-wr1-x433.google.com (mail-wr1-x433.google.com [IPv6:2a00:1450:4864:20::433]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 532E5C061573 for ; Thu, 31 Dec 2020 10:55:47 -0800 (PST) Received: by mail-wr1-x433.google.com with SMTP id q18so20764196wrn.1 for ; Thu, 31 Dec 2020 10:55:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=kEG5bef7z2rmGkDPg5SCozjGx1f3lsjCBiGpYhE1I6A=; b=rzt+hnEr/P8AqjzLn3ErUpGUKYqjM878ECB7CnLDe8agyirlMNF2ovTqj12ocSuwzD lCBcat8Fn8fVuWiYpOx3fqyvQqvvHyZMpmEipy4p4xA5lxBXipGFhvzVCPB9Si+J/NNr sr85KrrOjqLPPQJvo2Huq5w/4p7ZEF0vNABaah3EiJBEePOAsKAutHO0Q1ezLz1Z8bV7 rrqlU9baWZZqdcPdTRI6s9uuoPzlB9jHYvxsjsb5ICBILEUbrbY5G+pRPf9bYjO4jn2j Sdw86NhofidfNx/fPvXmYKZ8vorZYh6dmI1ttQoBHN0A75bDJ3MqHKfefNh+ylzAl5SW 2ovg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=kEG5bef7z2rmGkDPg5SCozjGx1f3lsjCBiGpYhE1I6A=; b=qMTD9Qah8MgviXmR4vtLe2jna7GC3EmTrAeQY7LzcGbU3OOfimHbUNh3XI5HvGP3/k yWpICcL53OBU3B2oAewscX5Wg65aU3r3zoxZuhaUVAaBQ2gAb3EZxSmBNgMRArnr4TJh 7FRU/muxPdV3mzJyzUNLGqCDqNHZt1608rzVtpJ+bTDYTRaXvb5CdDWGkI4VTO7bSU6V Hg2vTzuRJ6QjKK+kExmCU9A9vLqB8djJNsJOZEpE7dYmt2qPrd95CR5bKYHvo0aRAdSL /9f5wqe9KmL0B+CuQQ41GYyxvzN8+EALcfAdLysS+XVuy5VncF9JFRhHbcs1K/vI/4vt i/4w== X-Gm-Message-State: AOAM531I5013P+1IzM4tqVxBfAdE3Sy9hr5u9spTNVnfN1pRNF/kmMAJ IPlnOHxUAoiuYkxQhTJSXETdQ02ttoU= X-Google-Smtp-Source: ABdhPJw9aM+ZwuPkB+kPMDIDh9CZJvjuyGzzoRyVnAdkiguKkESVKVmUOhoHzkat5Rc/ox6lt93vPA== X-Received: by 2002:a5d:5387:: with SMTP id d7mr64445441wrv.417.1609440945955; Thu, 31 Dec 2020 10:55:45 -0800 (PST) Received: from [192.168.0.160] ([170.253.49.0]) by smtp.gmail.com with ESMTPSA id g184sm14322834wma.16.2020.12.31.10.55.44 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 31 Dec 2020 10:55:45 -0800 (PST) Subject: Re: [PATCH] execveat.2: srcfix To: "Michael Kerrisk (man-pages)" Cc: linux-man References: <20201230214147.874671-1-alx.manpages@gmail.com> <993e801d-4126-4e11-5a06-4b92879a7eb7@gmail.com> <2f321c87-7e12-2c41-6cd6-ac55024caf0a@gmail.com> <6c9c593c-1e89-ce75-c1d0-41e61c98bad7@gmail.com> From: "Alejandro Colomar (man-pages)" Message-ID: Date: Thu, 31 Dec 2020 19:55:44 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.5.1 MIME-Version: 1.0 In-Reply-To: <6c9c593c-1e89-ce75-c1d0-41e61c98bad7@gmail.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Precedence: bulk List-ID: X-Mailing-List: linux-man@vger.kernel.org Hi Michael, I'm not sure about some cases, but have a look at this: a64l.3: compact asprintf.3: compact atan.3: wsfix backtrace.3: compact bstring.3: compact? (and maybe align names?) byteorder.3: compact catopen.3: compact closedir.3: compact cmsg.3: separate headers from declarations dl_iterate_phdr.3: wsfix: 's/) (/)(/' drand48.3: group functions as in DESCRIPTION drand48_r.3: ^ envz_add.3: compact? fgetc.3: compact fseek.3: ffix!! and then compact fseeko.3: compact fts.3: compact (and maybe align?) futimes.3: compact getaddrinfo_a.3: fix alignment (and maybe compact?) getdirentries.3: ffix! getfsent.3: compact getgrent.3: compact getgrent_r.3: compact? getgrnam.3: compact? or sort? or nothing? not sure gethostbyname.3: separate headers from declarations? getline.3: compact getmntent.3: compact getspnam.3: compact or group getttyent.3: ffix!! gsignal.3: group hsearch.3: group if_nametoindex.3: group inet.3: group insque.3: group isgreater.3: compact or group key_setsecret.3: compact login.3: group makecontext.3: compact malloc_get_state.3: compact malloc_hook.3: compact mcheck.3: compact memchr.3: compact mkstemp.3: compact mpool.3: compact mq_getattr.3: compact and fix alignment mtrave.3: compact newlocale.3: compact pthread_attr_setschedpolicy.3: ffix: fit into 78-col terminal per Branden's advise. pthread_cleanup_push.3: ffix: Join lines pthread_cleanup_push_defer_np.3: ffix: Join lines pthread_setname_np.3: ffix: Join lines pthread_tryjoin_np.3: compact puts.3: compact rand.3: compact or group random[_r].3: group or compact re_comp.3: compact recno.3: There are no APIs? Why not? regex.3: compact? I didn't read past that. BTW, Why didn't you include man2? Thanks, Alex On 12/31/20 4:26 PM, Michael Kerrisk (man-pages) wrote: > Hi Alex, > > On 12/31/20 1:28 PM, Alejandro Colomar (man-pages) wrote: >> Hi Michael, >> >> Another design question about SYNOPSIS: >> >> When to leave a blank between prototypes? >> >> capget.2 has it. >> printf.3 doesn't. > > As you see, there is inconsistency. However, I would be > cautious about an automated global edit. > >> I prefer to be compact, especially when prototypes fit in one line. > > Agreed. > >> Some exceptions are the queue.3 derivatives, >> which become unreadable if compacted. > > Also agreed. But, here are some other examples where > I think blank lines help. > > === > > man2/open.2 > #include > #include > #include > > int open(const char *pathname, int flags); > int open(const char *pathname, int flags, mode_t mode); > > int creat(const char *pathname, mode_t mode); > > int openat(int dirfd, const char *pathname, int flags); > int openat(int dirfd, const char *pathname, int flags, mode_t mode); > > /* Documented separately, in openat2(2): */ > int openat2(int dirfd, const char *pathname, > const struct open_how *how, size_t size); > > Many function signatures, and the blank lines/groupings define a logical > split of related signatured. > > === > > Customarily, a blank line separates #include from a following > function signature (and from a preceding signature, if there is > one). > > === > > Examples of what I consider "right": > > man2/_exit.2 > #include > > void _exit(int status); > > #include > > void _Exit(int status); > > man2/accept.2 > #include /* See NOTES */ > #include > > int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen); > > #define _GNU_SOURCE /* See feature_test_macros(7) */ > #include > > int accept4(int sockfd, struct sockaddr *addr, > socklen_t *addrlen, int flags); > > man2/getrlimit.2 > #include > #include > > int getrlimit(int resource, struct rlimit *rlim); > int setrlimit(int resource, const struct rlimit *rlim); > > int prlimit(pid_t pid, int resource, const struct rlimit *new_limit, > struct rlimit *old_limit); > > === > > 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 > > > diff --git a/man2/init_module.2 b/man2/init_module.2 > index 00cf4e948..51e00ca65 100644 > --- a/man2/init_module.2 > +++ b/man2/init_module.2 > @@ -31,7 +31,6 @@ init_module, finit_module \- load a kernel module > .nf > .BI "int init_module(void *" module_image ", unsigned long " len , > .BI " const char *" param_values ); > -.PP > .BI "int finit_module(int " fd ", const char *" param_values , > .BI " int " flags ); > .fi > diff --git a/man2/readv.2 b/man2/readv.2 > index fcc27632e..2783fd736 100644 > --- a/man2/readv.2 > +++ b/man2/readv.2 > @@ -37,18 +37,15 @@ readv, writev, preadv, pwritev, preadv2, pwritev2 \- read or write data into mul > .B #include > .PP > .BI "ssize_t readv(int " fd ", const struct iovec *" iov ", int " iovcnt ); > -.PP > .BI "ssize_t writev(int " fd ", const struct iovec *" iov ", int " iovcnt ); > .PP > .BI "ssize_t preadv(int " fd ", const struct iovec *" iov ", int " iovcnt , > .BI " off_t " offset ); > -.PP > .BI "ssize_t pwritev(int " fd ", const struct iovec *" iov ", int " iovcnt , > .BI " off_t " offset ); > .PP > .BI "ssize_t preadv2(int " fd ", const struct iovec *" iov ", int " iovcnt , > .BI " off_t " offset ", int " flags ); > -.PP > .BI "ssize_t pwritev2(int " fd ", const struct iovec *" iov ", int " iovcnt , > .BI " off_t " offset ", int " flags ); > .fi > diff --git a/man2/rename.2 b/man2/rename.2 > index dd230df59..a577e35e5 100644 > --- a/man2/rename.2 > +++ b/man2/rename.2 > @@ -44,7 +44,6 @@ rename, renameat, renameat2 \- change the name or location of a file > .PP > .BI "int renameat(int " olddirfd ", const char *" oldpath , > .BI " int " newdirfd ", const char *" newpath ); > -.PP > .BI "int renameat2(int " olddirfd ", const char *" oldpath , > .BI " int " newdirfd ", const char *" newpath \ > ", unsigned int " flags ); > diff --git a/man2/sched_get_priority_max.2 b/man2/sched_get_priority_max.2 > index a22fc5969..0f9fa258d 100644 > --- a/man2/sched_get_priority_max.2 > +++ b/man2/sched_get_priority_max.2 > @@ -30,11 +30,12 @@ > .SH NAME > sched_get_priority_max, sched_get_priority_min \- get static priority range > .SH SYNOPSIS > +.nf > .B #include > .PP > .BI "int sched_get_priority_max(int " policy ); > -.PP > .BI "int sched_get_priority_min(int " policy ); > +.fi > .SH DESCRIPTION > .BR sched_get_priority_max () > returns the maximum priority value that can be used with the > diff --git a/man2/sched_setaffinity.2 b/man2/sched_setaffinity.2 > index 4abb720fd..61bb7bb38 100644 > --- a/man2/sched_setaffinity.2 > +++ b/man2/sched_setaffinity.2 > @@ -42,7 +42,6 @@ set and get a thread's CPU affinity mask > .PP > .BI "int sched_setaffinity(pid_t " pid ", size_t " cpusetsize , > .BI " const cpu_set_t *" mask ); > -.PP > .BI "int sched_getaffinity(pid_t " pid ", size_t " cpusetsize , > .BI " cpu_set_t *" mask ); > .fi > diff --git a/man2/sched_setattr.2 b/man2/sched_setattr.2 > index b741c2223..3d255f622 100644 > --- a/man2/sched_setattr.2 > +++ b/man2/sched_setattr.2 > @@ -33,7 +33,6 @@ set and get scheduling policy and attributes > .PP > .BI "int sched_setattr(pid_t " pid ", struct sched_attr *" attr , > .BI " unsigned int " flags ); > -.PP > .BI "int sched_getattr(pid_t " pid ", struct sched_attr *" attr , > .BI " unsigned int " size ", unsigned int " flags ); > .fi > diff --git a/man2/sched_setparam.2 b/man2/sched_setparam.2 > index ffa785129..1bca5b48f 100644 > --- a/man2/sched_setparam.2 > +++ b/man2/sched_setparam.2 > @@ -35,7 +35,6 @@ sched_setparam, sched_getparam \- set and get scheduling parameters > .B #include > .PP > .BI "int sched_setparam(pid_t " pid ", const struct sched_param *" param ); > -.PP > .BI "int sched_getparam(pid_t " pid ", struct sched_param *" param ); > .PP > \fBstruct sched_param { > diff --git a/man2/sched_setscheduler.2 b/man2/sched_setscheduler.2 > index fde20825f..07bcf733d 100644 > --- a/man2/sched_setscheduler.2 > +++ b/man2/sched_setscheduler.2 > @@ -33,7 +33,6 @@ set and get scheduling policy/parameters > .PP > .BI "int sched_setscheduler(pid_t " pid ", int " policy , > .BI " const struct sched_param *" param ); > -.PP > .BI "int sched_getscheduler(pid_t " pid ); > .fi > .SH DESCRIPTION > diff --git a/man2/sysfs.2 b/man2/sysfs.2 > index de6d02a11..a037d1c9d 100644 > --- a/man2/sysfs.2 > +++ b/man2/sysfs.2 > @@ -28,11 +28,11 @@ > .SH NAME > sysfs \- get filesystem type information > .SH SYNOPSIS > +.nf > .BI "int sysfs(int " option ", const char *" fsname ); > -.PP > .BI "int sysfs(int " option ", unsigned int " fs_index ", char *" buf ); > -.PP > .BI "int sysfs(int " option ); > +.fi > .SH DESCRIPTION > .BR "Note" : > if you are looking for information about the > diff --git a/man2/umount.2 b/man2/umount.2 > index 3e6e10785..7942df49a 100644 > --- a/man2/umount.2 > +++ b/man2/umount.2 > @@ -35,7 +35,6 @@ umount, umount2 \- unmount filesystem > .B "#include " > .PP > .BI "int umount(const char *" target ); > -.PP > .BI "int umount2(const char *" target ", int " flags ); > .fi > .SH DESCRIPTION > diff --git a/man2/wait4.2 b/man2/wait4.2 > index f858d9eb3..c2b0a3497 100644 > --- a/man2/wait4.2 > +++ b/man2/wait4.2 > @@ -40,9 +40,7 @@ wait3, wait4 \- wait for process to change state, BSD style > .B #include > .B #include > .PP > -.BI "pid_t wait3(int *" "wstatus" ", int " options , > -.BI " struct rusage *" rusage ); > -.PP > +.BI "pid_t wait3(int *" "wstatus" ", int " options ", struct rusage *" rusage ); > .BI "pid_t wait4(pid_t " pid ", int *" wstatus ", int " options , > .BI " struct rusage *" rusage ); > .fi > diff --git a/man3/__ppc_get_timebase.3 b/man3/__ppc_get_timebase.3 > index c229117b8..dc96b3875 100644 > --- a/man3/__ppc_get_timebase.3 > +++ b/man3/__ppc_get_timebase.3 > @@ -28,11 +28,12 @@ Manual" > __ppc_get_timebase, __ppc_get_timebase_freq \- get the current value > of the Time Base Register on Power architecture and its frequency. > .SH SYNOPSIS > +.nf > .B #include > .PP > .BI "uint64_t __ppc_get_timebase(void)" > -.PP > .BI "uint64_t __ppc_get_timebase_freq(void);" > +.fi > .SH DESCRIPTION > .BR __ppc_get_timebase () > reads the current value of the Time Base Register and returns its > diff --git a/man3/basename.3 b/man3/basename.3 > index 74a2fb5b2..0dc0d6c2b 100644 > --- a/man3/basename.3 > +++ b/man3/basename.3 > @@ -32,7 +32,6 @@ basename, dirname \- parse pathname components > .B #include > .PP > .BI "char *dirname(char *" path ); > -.PP > .BI "char *basename(char *" path ); > .fi > .SH DESCRIPTION > diff --git a/man3/dladdr.3 b/man3/dladdr.3 > index 8d476470a..15a61e6e1 100644 > --- a/man3/dladdr.3 > +++ b/man3/dladdr.3 > @@ -32,7 +32,6 @@ dladdr, dladdr1 \- translate address to symbolic information > .B #include > .PP > .BI "int dladdr(void *" addr ", Dl_info *" info ); > -.PP > .BI "int dladdr1(void *" addr ", Dl_info *" info ", void **" \ > extra_info ", int " flags ); > .PP > diff --git a/man3/dlopen.3 b/man3/dlopen.3 > index a64dcbcc2..22b50c420 100644 > --- a/man3/dlopen.3 > +++ b/man3/dlopen.3 > @@ -37,10 +37,10 @@ > dlclose, dlopen, dlmopen \- > open and close a shared object > .SH SYNOPSIS > +.nf > .B #include > .PP > .BI "void *dlopen(const char *" filename ", int " flags ); > -.PP > .BI "int dlclose(void *" handle ); > .PP > .B #define _GNU_SOURCE > @@ -48,6 +48,7 @@ open and close a shared object > .B #include > .PP > .BI "void *dlmopen(Lmid_t " lmid ", const char *" filename ", int " flags ); > +.fi > .PP > Link with \fI\-ldl\fP. > .SH DESCRIPTION > diff --git a/man3/ecvt.3 b/man3/ecvt.3 > index fadddf8d8..9b2d2055d 100644 > --- a/man3/ecvt.3 > +++ b/man3/ecvt.3 > @@ -33,13 +33,12 @@ > .SH NAME > ecvt, fcvt \- convert a floating-point number to a string > .SH SYNOPSIS > +.nf > .B #include > .PP > -.BI "char *ecvt(double " number ", int " ndigits ", int *" decpt , > -.BI "int *" sign ); > -.PP > -.BI "char *fcvt(double " number ", int " ndigits ", int *" decpt , > -.BI "int *" sign ); > +.BI "char *ecvt(double " number ", int " ndigits ", int *" decpt ", int *" sign ); > +.BI "char *fcvt(double " number ", int " ndigits ", int *" decpt ", int *" sign ); > +.fi > .PP > .RS -4 > Feature Test Macro Requirements for glibc (see > diff --git a/man3/ecvt_r.3 b/man3/ecvt_r.3 > index 55c97e0bc..7ad8d6513 100644 > --- a/man3/ecvt_r.3 > +++ b/man3/ecvt_r.3 > @@ -36,13 +36,11 @@ ecvt_r, fcvt_r, qecvt_r, qfcvt_r \- convert a floating-point number to a string > .PP > .BI "int ecvt_r(double " number ", int " ndigits ", int *" decpt , > .BI " int *" sign ", char *" buf ", size_t " len ); > -.PP > .BI "int fcvt_r(double " number ", int " ndigits ", int *" decpt , > .BI " int *" sign ", char *" buf ", size_t " len ); > .PP > .BI "int qecvt_r(long double " number ", int " ndigits ", int *" decpt , > .BI " int *" sign ", char *" buf ", size_t " len ); > -.PP > .BI "int qfcvt_r(long double " number ", int " ndigits ", int *" decpt , > .BI " int *" sign ", char *" buf ", size_t " len ); > .fi > diff --git a/man3/err.3 b/man3/err.3 > index 7a5056a1e..cf21dabfb 100644 > --- a/man3/err.3 > +++ b/man3/err.3 > @@ -44,21 +44,17 @@ err, verr, errx, verrx, warn, vwarn, warnx, vwarnx \- formatted error messages > .B #include > .PP > .BI "void err(int " eval ", const char *" fmt ", ...);" > -.PP > .BI "void errx(int " eval ", const char *" fmt ", ...);" > .PP > .BI "void warn(const char *" fmt ", ...);" > -.PP > .BI "void warnx(const char *" fmt ", ...);" > .PP > .B #include > .PP > .BI "void verr(int " eval ", const char *" fmt ", va_list " args ); > -.PP > .BI "void verrx(int " eval ", const char *" fmt ", va_list " args ); > .PP > .BI "void vwarn(const char *" fmt ", va_list " args ); > -.PP > .BI "void vwarnx(const char *" fmt ", va_list " args ); > .fi > .SH DESCRIPTION > diff --git a/man3/ferror.3 b/man3/ferror.3 > index c67498c7e..5c59fc97d 100644 > --- a/man3/ferror.3 > +++ b/man3/ferror.3 > @@ -45,15 +45,14 @@ > .SH NAME > clearerr, feof, ferror, fileno \- check and reset stream status > .SH SYNOPSIS > +.nf > .B #include > .PP > .BI "void clearerr(FILE *" stream ); > -.PP > .BI "int feof(FILE *" stream ); > -.PP > .BI "int ferror(FILE *" stream ); > -.PP > .BI "int fileno(FILE *" stream ); > +.fi > .PP > .RS -4 > Feature Test Macro Requirements for glibc (see > diff --git a/man3/ffs.3 b/man3/ffs.3 > index 3304ad477..5c4162ec8 100644 > --- a/man3/ffs.3 > +++ b/man3/ffs.3 > @@ -42,7 +42,6 @@ ffs, ffsl, ffsll \- find first bit set in a word > .B #include > .PP > .BI "int ffsl(long " i ); > -.PP > .BI "int ffsll(long long " i ); > .fi > .PP > diff --git a/man3/fopen.3 b/man3/fopen.3 > index 5dea20d0a..bbb4fbc39 100644 > --- a/man3/fopen.3 > +++ b/man3/fopen.3 > @@ -49,9 +49,7 @@ fopen, fdopen, freopen \- stream open functions > .B #include > .PP > .BI "FILE *fopen(const char *" pathname ", const char *" mode ); > -.PP > .BI "FILE *fdopen(int " fd ", const char *" mode ); > -.PP > .BI "FILE *freopen(const char *" pathname ", const char *" mode ", FILE *" stream ); > .fi > .PP > diff --git a/man3/fpclassify.3 b/man3/fpclassify.3 > index 749f0ee32..83ebb75e6 100644 > --- a/man3/fpclassify.3 > +++ b/man3/fpclassify.3 > @@ -16,13 +16,9 @@ classification macros > .B #include > .PP > .BI "int fpclassify(" x ); > -.PP > .BI "int isfinite(" x ); > -.PP > .BI "int isnormal(" x ); > -.PP > .BI "int isnan(" x ); > -.PP > .BI "int isinf(" x ); > .fi > .PP > diff --git a/man3/fread.3 b/man3/fread.3 > index 8e71e620e..41aa817e9 100644 > --- a/man3/fread.3 > +++ b/man3/fread.3 > @@ -52,7 +52,6 @@ fread, fwrite \- binary stream input/output > .PP > .BI "size_t fread(void *" ptr ", size_t " size ", size_t " nmemb \ > ", FILE *" stream ); > -.PP > .BI "size_t fwrite(const void *" ptr ", size_t " size ", size_t " nmemb , > .BI " FILE *" stream ); > .fi > diff --git a/man3/fseek.3 b/man3/fseek.3 > index f040563fb..d51f7050f 100644 > --- a/man3/fseek.3 > +++ b/man3/fseek.3 > @@ -46,13 +46,11 @@ fgetpos, fseek, fsetpos, ftell, rewind \- reposition a stream > .B #include > .PP > .BI "int fseek(FILE *" stream ", long " offset ", int " whence ); > -.PP > .BI "long ftell(FILE *" stream ); > .PP > .BI "void rewind(FILE *" stream ); > .PP > .BI "int fgetpos(FILE *" stream ", fpos_t *" pos ); > -.PP > .BI "int fsetpos(FILE *" stream ", const fpos_t *" pos ); > .SH DESCRIPTION > The > diff --git a/man3/getcwd.3 b/man3/getcwd.3 > index 9936b3b4f..c27c36aba 100644 > --- a/man3/getcwd.3 > +++ b/man3/getcwd.3 > @@ -37,9 +37,7 @@ getcwd, getwd, get_current_dir_name \- get current working directory > .B #include > .PP > .BI "char *getcwd(char *" buf ", size_t " size ); > -.PP > .BI "char *getwd(char *" buf ); > -.PP > .B "char *get_current_dir_name(void);" > .fi > .PP > diff --git a/man3/getenv.3 b/man3/getenv.3 > index 873196aa0..665278bdf 100644 > --- a/man3/getenv.3 > +++ b/man3/getenv.3 > @@ -38,7 +38,6 @@ getenv, secure_getenv \- get an environment variable > .B #include > .PP > .BI "char *getenv(const char *" name ); > -.PP > .BI "char *secure_getenv(const char *" name ); > .fi > .PP > diff --git a/man3/gethostbyname.3 b/man3/gethostbyname.3 > index 5d074a924..365f95e82 100644 > --- a/man3/gethostbyname.3 > +++ b/man3/gethostbyname.3 > @@ -55,11 +55,9 @@ gethostent_r \- get network host entry > .BI " socklen_t " len ", int " type ); > .PP > .BI "void sethostent(int " stayopen ); > -.PP > .B void endhostent(void); > .PP > .BI "void herror(const char *" s ); > -.PP > .BI "const char *hstrerror(int " err ); > .PP > /* System V/POSIX extension */ > @@ -75,11 +73,9 @@ gethostent_r \- get network host entry > .BI "int gethostbyaddr_r(const void *" addr ", socklen_t " len ", int " type , > .BI " struct hostent *" ret ", char *" buf ", size_t " buflen , > .BI " struct hostent **" result ", int *" h_errnop ); > -.PP > .BI "int gethostbyname_r(const char *" name , > .BI " struct hostent *" ret ", char *" buf ", size_t " buflen , > .BI " struct hostent **" result ", int *" h_errnop ); > -.PP > .BI "int gethostbyname2_r(const char *" name ", int " af, > .BI " struct hostent *" ret ", char *" buf ", size_t " buflen , > .BI " struct hostent **" result ", int *" h_errnop ); > diff --git a/man3/getifaddrs.3 b/man3/getifaddrs.3 > index 7e235896c..7290139cd 100644 > --- a/man3/getifaddrs.3 > +++ b/man3/getifaddrs.3 > @@ -42,7 +42,6 @@ getifaddrs, freeifaddrs \- get interface addresses > .B #include > .PP > .BI "int getifaddrs(struct ifaddrs **" "ifap" ); > -.PP > .BI "void freeifaddrs(struct ifaddrs *" "ifa" ); > .fi > .SH DESCRIPTION > diff --git a/man3/getipnodebyname.3 b/man3/getipnodebyname.3 > index aa0f70a9c..12d3c2c86 100644 > --- a/man3/getipnodebyname.3 > +++ b/man3/getipnodebyname.3 > @@ -35,10 +35,8 @@ hostnames and addresses > .PP > .BI "struct hostent *getipnodebyname(const char *" name ", int " af , > .BI " int " flags ", int *" error_num ); > -.PP > .BI "struct hostent *getipnodebyaddr(const void *" addr ", size_t " len , > .BI " int " af ", int *" "error_num" ); > -.PP > .BI "void freehostent(struct hostent *" "ip" ); > .fi > .SH DESCRIPTION > diff --git a/man3/getnetent.3 b/man3/getnetent.3 > index dffe95907..11c25c0db 100644 > --- a/man3/getnetent.3 > +++ b/man3/getnetent.3 > @@ -38,11 +38,9 @@ get network entry > .B struct netent *getnetent(void); > .PP > .BI "struct netent *getnetbyname(const char *" name ); > -.PP > .BI "struct netent *getnetbyaddr(uint32_t " net ", int " type ); > .PP > .BI "void setnetent(int " stayopen ); > -.PP > .B void endnetent(void); > .fi > .SH DESCRIPTION > diff --git a/man3/getnetent_r.3 b/man3/getnetent_r.3 > index 934089d59..dbbd2763e 100644 > --- a/man3/getnetent_r.3 > +++ b/man3/getnetent_r.3 > @@ -34,12 +34,10 @@ network entry (reentrant) > .BI "int getnetent_r(struct netent *" result_buf ", char *" buf , > .BI " size_t " buflen ", struct netent **" result , > .BI " int *" h_errnop ); > -.PP > .BI "int getnetbyname_r(const char *" name , > .BI " struct netent *" result_buf ", char *" buf , > .BI " size_t " buflen ", struct netent **" result , > .BI " int *" h_errnop ); > -.PP > .BI "int getnetbyaddr_r(uint32_t " net ", int " type , > .BI " struct netent *" result_buf ", char *" buf , > .BI " size_t " buflen ", struct netent **" result , > diff --git a/man3/getopt.3 b/man3/getopt.3 > index 16f442ad8..e25c4219a 100644 > --- a/man3/getopt.3 > +++ b/man3/getopt.3 > @@ -58,7 +58,6 @@ optarg, optind, opterr, optopt \- Parse command-line options > .BI "int getopt_long(int " argc ", char * const " argv[] , > .BI " const char *" optstring , > .BI " const struct option *" longopts ", int *" longindex ); > -.PP > .BI "int getopt_long_only(int " argc ", char * const " argv[] , > .BI " const char *" optstring , > .BI " const struct option *" longopts ", int *" longindex ); > diff --git a/man3/getprotoent.3 b/man3/getprotoent.3 > index ee8c26cb3..c2ee5a235 100644 > --- a/man3/getprotoent.3 > +++ b/man3/getprotoent.3 > @@ -38,11 +38,9 @@ endprotoent \- get protocol entry > .B struct protoent *getprotoent(void); > .PP > .BI "struct protoent *getprotobyname(const char *" name ); > -.PP > .BI "struct protoent *getprotobynumber(int " proto ); > .PP > .BI "void setprotoent(int " stayopen ); > -.PP > .B void endprotoent(void); > .fi > .SH DESCRIPTION > diff --git a/man3/getprotoent_r.3 b/man3/getprotoent_r.3 > index c98764a4e..5ff17e637 100644 > --- a/man3/getprotoent_r.3 > +++ b/man3/getprotoent_r.3 > @@ -33,11 +33,9 @@ protocol entry (reentrant) > .PP > .BI "int getprotoent_r(struct protoent *" result_buf ", char *" buf , > .BI " size_t " buflen ", struct protoent **" result ); > -.PP > .BI "int getprotobyname_r(const char *" name , > .BI " struct protoent *" result_buf ", char *" buf , > .BI " size_t " buflen ", struct protoent **" result ); > -.PP > .BI "int getprotobynumber_r(int " proto , > .BI " struct protoent *" result_buf ", char *" buf , > .BI " size_t " buflen ", struct protoent **" result ); > diff --git a/man3/getpwent.3 b/man3/getpwent.3 > index 72fd5c62e..8164fcebc 100644 > --- a/man3/getpwent.3 > +++ b/man3/getpwent.3 > @@ -39,9 +39,7 @@ getpwent, setpwent, endpwent \- get password file entry > .B #include > .PP > .B struct passwd *getpwent(void); > -.PP > .B void setpwent(void); > -.PP > .B void endpwent(void); > .fi > .PP > diff --git a/man3/getpwent_r.3 b/man3/getpwent_r.3 > index 261552dec..81426776a 100644 > --- a/man3/getpwent_r.3 > +++ b/man3/getpwent_r.3 > @@ -30,7 +30,6 @@ getpwent_r, fgetpwent_r \- get passwd file entry reentrantly > .PP > .BI "int getpwent_r(struct passwd *" pwbuf ", char *" buf , > .BI " size_t " buflen ", struct passwd **" pwbufp ); > -.PP > .BI "int fgetpwent_r(FILE *" stream ", struct passwd *" pwbuf ", char *" buf , > .BI " size_t " buflen ", struct passwd **" pwbufp ); > .fi > diff --git a/man3/getpwnam.3 b/man3/getpwnam.3 > index 50810e6a9..5e41fdf08 100644 > --- a/man3/getpwnam.3 > +++ b/man3/getpwnam.3 > @@ -43,12 +43,10 @@ getpwnam, getpwnam_r, getpwuid, getpwuid_r \- get password file entry > .B #include > .PP > .BI "struct passwd *getpwnam(const char *" name ); > -.PP > .BI "struct passwd *getpwuid(uid_t " uid ); > .PP > .BI "int getpwnam_r(const char *" name ", struct passwd *" pwd , > .BI " char *" buf ", size_t " buflen ", struct passwd **" result ); > -.PP > .BI "int getpwuid_r(uid_t " uid ", struct passwd *" pwd , > .BI " char *" buf ", size_t " buflen ", struct passwd **" result ); > .fi > diff --git a/man3/getrpcent.3 b/man3/getrpcent.3 > index e6b44e7c7..46b2bddd4 100644 > --- a/man3/getrpcent.3 > +++ b/man3/getrpcent.3 > @@ -16,11 +16,9 @@ RPC entry > .BI "struct rpcent *getrpcent(void);" > .PP > .BI "struct rpcent *getrpcbyname(const char *" name ); > -.PP > .BI "struct rpcent *getrpcbynumber(int " number ); > .PP > .BI "void setrpcent(int " stayopen ); > -.PP > .BI "void endrpcent(void);" > .fi > .SH DESCRIPTION > diff --git a/man3/getrpcent_r.3 b/man3/getrpcent_r.3 > index acefea479..d097b1338 100644 > --- a/man3/getrpcent_r.3 > +++ b/man3/getrpcent_r.3 > @@ -33,11 +33,9 @@ RPC entry (reentrant) > .PP > .BI "int getrpcent_r(struct rpcent *" result_buf ", char *" buf , > .BI " size_t " buflen ", struct rpcent **" result ); > -.PP > .BI "int getrpcbyname_r(const char *" name , > .BI " struct rpcent *" result_buf ", char *" buf , > .BI " size_t " buflen ", struct rpcent **" result ); > -.PP > .BI "int getrpcbynumber_r(int " number , > .BI " struct rpcent *" result_buf ", char *" buf , > .BI " size_t " buflen ", struct rpcent **" result ); > diff --git a/man3/getservent.3 b/man3/getservent.3 > index 8bfade77e..702d7c38f 100644 > --- a/man3/getservent.3 > +++ b/man3/getservent.3 > @@ -42,11 +42,9 @@ get service entry > .B struct servent *getservent(void); > .PP > .BI "struct servent *getservbyname(const char *" name ", const char *" proto ); > -.PP > .BI "struct servent *getservbyport(int " port ", const char *" proto ); > .PP > .BI "void setservent(int " stayopen ); > -.PP > .B void endservent(void); > .fi > .SH DESCRIPTION > diff --git a/man3/getservent_r.3 b/man3/getservent_r.3 > index f0c84e6a2..8e0b50814 100644 > --- a/man3/getservent_r.3 > +++ b/man3/getservent_r.3 > @@ -33,11 +33,9 @@ service entry (reentrant) > .PP > .BI "int getservent_r(struct servent *" result_buf ", char *" buf , > .BI " size_t " buflen ", struct servent **" result ); > -.PP > .BI "int getservbyname_r(const char *" name ", const char *" proto , > .BI " struct servent *" result_buf ", char *" buf , > .BI " size_t " buflen ", struct servent **" result ); > -.PP > .BI "int getservbyport_r(int " port ", const char *" proto , > .BI " struct servent *" result_buf ", char *" buf , > .BI " size_t " buflen ", struct servent **" result ); > diff --git a/man3/getttyent.3 b/man3/getttyent.3 > index a6c6e56ba..bec623b5c 100644 > --- a/man3/getttyent.3 > +++ b/man3/getttyent.3 > @@ -11,11 +11,9 @@ getttyent, getttynam, setttyent, endttyent \- get ttys file entry > .B "#include " > .PP > .B "struct ttyent *getttyent(void);" > -.PP > .BI "struct ttyent *getttynam(const char *" name ); > .PP > .B "int setttyent(void);" > -.PP > .B "int endttyent(void);" > .SH DESCRIPTION > These functions provide an interface to the file > diff --git a/man3/getusershell.3 b/man3/getusershell.3 > index ebdfac1d6..b790cb1e6 100644 > --- a/man3/getusershell.3 > +++ b/man3/getusershell.3 > @@ -35,9 +35,7 @@ getusershell, setusershell, endusershell \- get permitted user shells > .B #include > .PP > .B char *getusershell(void); > -.PP > .B void setusershell(void); > -.PP > .B void endusershell(void); > .fi > .PP > diff --git a/man3/getw.3 b/man3/getw.3 > index 00c5a79c6..2b5baec7b 100644 > --- a/man3/getw.3 > +++ b/man3/getw.3 > @@ -30,7 +30,6 @@ getw, putw \- input and output of words (ints) > .B #include > .PP > .BI "int getw(FILE *" stream ); > -.PP > .BI "int putw(int " w ", FILE *" stream ); > .fi > .PP > diff --git a/man3/index.3 b/man3/index.3 > index 703278615..ec1037743 100644 > --- a/man3/index.3 > +++ b/man3/index.3 > @@ -36,7 +36,6 @@ index, rindex \- locate character in string > .B #include > .PP > .BI "char *index(const char *" s ", int " c ); > -.PP > .BI "char *rindex(const char *" s ", int " c ); > .fi > .SH DESCRIPTION > diff --git a/man3/inet_net_pton.3 b/man3/inet_net_pton.3 > index 9dbdeecb9..60d7bae36 100644 > --- a/man3/inet_net_pton.3 > +++ b/man3/inet_net_pton.3 > @@ -31,7 +31,6 @@ inet_net_pton, inet_net_ntop \- Internet network number conversion > .PP > .BI "int inet_net_pton(int " af ", const char *" pres , > .BI " void *" netp ", size_t " nsize ); > -.PP > .BI "char *inet_net_ntop(int " af ", const void *" netp ", int " bits , > .BI " char *" pres ", size_t " psize ); > .fi > diff --git a/man3/lsearch.3 b/man3/lsearch.3 > index b4fdb6208..526dc5aa1 100644 > --- a/man3/lsearch.3 > +++ b/man3/lsearch.3 > @@ -32,7 +32,6 @@ lfind, lsearch \- linear search of an array > .PP > .BI "void *lfind(const void *" key ", const void *" base ", size_t *" nmemb , > .BI " size_t " size ", int(*" compar ")(const void *, const void *));" > -.PP > .BI "void *lsearch(const void *" key ", void *" base ", size_t *" nmemb , > .BI " size_t " size ", int(*" compar ")(const void *, const void *));" > .fi > diff --git a/man3/nl_langinfo.3 b/man3/nl_langinfo.3 > index 8f8b96b15..6b22ab4ec 100644 > --- a/man3/nl_langinfo.3 > +++ b/man3/nl_langinfo.3 > @@ -23,7 +23,6 @@ nl_langinfo, nl_langinfo_l \- query language and locale information > .B #include > .PP > .BI "char *nl_langinfo(nl_item " item ); > -.PP > .BI "char *nl_langinfo_l(nl_item " item ", locale_t " locale ); > .fi > .PP > diff --git a/man3/ntp_gettime.3 b/man3/ntp_gettime.3 > index 15a2a3c7c..c7f2976ce 100644 > --- a/man3/ntp_gettime.3 > +++ b/man3/ntp_gettime.3 > @@ -30,7 +30,6 @@ ntp_gettime, ntp_gettimex \- get time parameters (NTP daemon interface) > .B #include > .PP > .BI "int ntp_gettime(struct ntptimeval *" ntv ); > -.PP > .BI "int ntp_gettimex(struct ntptimeval *" ntv ); > .fi > .SH DESCRIPTION > diff --git a/man3/openpty.3 b/man3/openpty.3 > index ff37d50a9..1732b7e2a 100644 > --- a/man3/openpty.3 > +++ b/man3/openpty.3 > @@ -41,7 +41,6 @@ openpty, login_tty, forkpty \- terminal utility functions > .BI "int openpty(int *" amaster ", int *" aslave ", char *" name , > .BI " const struct termios *" termp , > .BI " const struct winsize *" winp ); > -.PP > .BI "pid_t forkpty(int *" amaster ", char *" name , > .BI " const struct termios *" termp , > .BI " const struct winsize *" winp ); > diff --git a/man3/popen.3 b/man3/popen.3 > index b02226359..5e666c110 100644 > --- a/man3/popen.3 > +++ b/man3/popen.3 > @@ -45,7 +45,6 @@ popen, pclose \- pipe stream to or from a process > .B #include > .PP > .BI "FILE *popen(const char *" command ", const char *" type ); > -.PP > .BI "int pclose(FILE *" stream ); > .fi > .PP > diff --git a/man3/posix_spawn.3 b/man3/posix_spawn.3 > index 34ad094ea..2c464e87b 100644 > --- a/man3/posix_spawn.3 > +++ b/man3/posix_spawn.3 > @@ -39,7 +39,6 @@ posix_spawn, posix_spawnp \- spawn a process > .BI " const posix_spawn_file_actions_t *" file_actions , > .BI " const posix_spawnattr_t *" attrp , > .BI " char *const " argv[] ", char *const " envp[] ); > -.PP > .BI "int posix_spawnp(pid_t *" pid ", const char *" file , > .BI " const posix_spawn_file_actions_t *" file_actions , > .BI " const posix_spawnattr_t *" attrp , > diff --git a/man3/qecvt.3 b/man3/qecvt.3 > index 0d4b8af3b..ad78c5485 100644 > --- a/man3/qecvt.3 > +++ b/man3/qecvt.3 > @@ -29,15 +29,13 @@ > .SH NAME > qecvt, qfcvt, qgcvt \- convert a floating-point number to a string > .SH SYNOPSIS > +.nf > .B #include > .PP > -.BI "char *qecvt(long double " number ", int " ndigits ", int *" decpt , > -.BI "int *" sign ); > -.PP > -.BI "char *qfcvt(long double " number ", int " ndigits ", int *" decpt , > -.BI "int *" sign ); > -.PP > +.BI "char *qecvt(long double " number ", int " ndigits ", int *" decpt ", int *" sign ); > +.BI "char *qfcvt(long double " number ", int " ndigits ", int *" decpt ",i int *" sign ); > .BI "char *qgcvt(long double " number ", int " ndigit ", char *" buf ); > +.fi > .PP > .RS -4 > Feature Test Macro Requirements for glibc (see > diff --git a/man3/qsort.3 b/man3/qsort.3 > index b0d9c43ef..048356c30 100644 > --- a/man3/qsort.3 > +++ b/man3/qsort.3 > @@ -43,7 +43,6 @@ qsort, qsort_r \- sort an array > .PP > .BI "void qsort(void *" base ", size_t " nmemb ", size_t " size , > .BI " int (*" compar ")(const void *, const void *));" > -.PP > .BI "void qsort_r(void *" base ", size_t " nmemb ", size_t " size , > .BI " int (*" compar ")(const void *, const void *, void *)," > .BI " void *" arg ");" > diff --git a/man3/rcmd.3 b/man3/rcmd.3 > index d80c10324..c1fb9fbf4 100644 > --- a/man3/rcmd.3 > +++ b/man3/rcmd.3 > @@ -56,7 +56,6 @@ stream to a remote command > .PP > .BI "int iruserok(uint32_t " raddr ", int " superuser , > .BI " const char *" ruser ", const char *" luser ); > -.PP > .BI "int ruserok(const char *" rhost ", int " superuser , > .BI " const char *" ruser ", const char *" luser ); > .PP > @@ -69,7 +68,6 @@ stream to a remote command > .BI "int iruserok_af(const void *" raddr ", int " superuser , > .BI " const char *" ruser ", const char *" luser \ > ", sa_family_t " af ); > -.PP > .BI "int ruserok_af(const char *" rhost ", int " superuser , > .BI " const char *" ruser ", const char *" luser \ > ", sa_family_t " af ); > > >