Re: [RFC] system_data_types.7: wfix + ffix

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

 



Hi Michael & Dave,

On 2020-09-29 13:34, Michael Kerrisk (man-pages) wrote:
> Hi Alex, Dave,
>
> [Alex, just to note: this patch doesn't apply against current master.]
>
> On 9/29/20 12:37 PM, Dave Martin wrote:
>> On Mon, Sep 28, 2020 at 05:16:47PM +0200, Alejandro Colomar wrote:
>>> The previous format/wording for the includes wasn't very clear.
>>> Improve it a bit following Branden's proposal.
>>>
>>> Reported-by: G. Branden Robinson <g.branden.robinson@xxxxxxxxx>
>>> Signed-off-by: Alejandro Colomar <colomar.6.4.3@xxxxxxxxx>
>>> ---
>>>
>>> Hi,
>>>
>>> What do you think about this?
>>>
>>> Would you change something?
>>
>> Why should the user of a man page have to go look at the comments in the
>> page source in order to find an explanation of what the notation in the
>> page means?  That seems very strange.
>
> I do agree that we need to add some help for the reader.
>
> Alex, how about we start as follows. At the end of the NOTES Section,
> let's add a "Conventions used in this page" subsection (.SS).

I just sent an email I wrote an hour ago,
where I proposed to add a paragraph in NOTES.
Your proposal is a bit more specific :)

>
> Some things to mention there:
>
> * In "Conforming to" we only concern ourselves
>    with POSIX.2001 and later and C99 and later.
>    The type may be specified in earlier versions
>    of one of these standards, but in the interests
>    of simplicity we omit details from earlier standards.

Agree.

>
> * In "Include", we first note the "primary" header(s)
>    that define the type according to either the C or POSIX.1
>    standards. Under "Alternatively", we note additional headers
>    that the standards specify shall define the type.

Agree.

>
> And then I have a question. Alex, did you so far find a case of
> type where the C standard specified that a particular header
> shall define the type, but PPOSIX.1 either did not have that
> requirement or did not specify that header?

No.

I've found types where the "primary" header is different in C and POSIX.
But in all the cases I've checked, POSIX always adds headers to C,
and never removes them.
I hope it is always true, because I didn't check all of them one by one.

> I've been kind of
> expecting that the set of headers specified by POSIX be a proper
> superset of the the set of headers specified by C, but maybe
> you have found otherwise.

AFAICS, that holds true.

>
>>> man7/system_data_types.7 | 285 ++++++++++++++++-----------------------
>>>   1 file changed, 113 insertions(+), 172 deletions(-)
>>>
>>> diff --git a/man7/system_data_types.7 b/man7/system_data_types.7
>>> index 16930985e..dc4a3bae4 100644
>>> --- a/man7/system_data_types.7
>>> +++ b/man7/system_data_types.7
>>> @@ -33,20 +33,21 @@ system_data_types \- overview of system data types
>>>   .\"	Each entry will have the following parts:
>>>   .\"		* Include
>>>   .\"			The headers will be in the following order:
>>> +.\"			"Include:"
>>>   .\"			1) The main header that shall define the type
>>> -.\"			   according to the C Standard,
>>> -.\"			   and
>>> -.\"			   the main header that shall define the type
>>> -.\"			   according to POSIX,
>>> -.\"			   in alphabetical order.
>>> -.\"			;
>>> -.\"			2) All other headers that shall define the type
>>> +.\"			   according to the C Standard.
>>> +.\"			["or"]
>>> +.\"			2) The main header that shall define the type
>>> +.\"			   according to POSIX.
>>> +.\"			[". Alternatively,"]
>>> +.\"			3) All other headers that shall define the type
>>>   .\"			   as described in the previous header(s)
>>>   .\"			   according to the C Standard or POSIX,
>>>   .\"			   in alphabetical order.
>>>   .\"			*) All headers that define the type
>>>   .\"			   *if* the type is not defined by C nor POSIX,
>>>   .\"			   in alphabetical order.
>>> +.\"			"."
>>
>> It is fine to have notes about page maintenance here -- i.e., which
>> headers should be placed where in the list, and what order to sort them
>> in.
>>
>> However, I think that statements about which header(s) provide the type
>> under which standard need to be in the actual page text.  Programmers
>> need this information.
>
> My question (to Alex) above is related. (And to repeat, the thing
> I most care about in the man pages is POSIX.1, rather than C.)

If/when the NOTES section documents that clearly,
I may remove that comment.

>
>>>   .\"
>>>   .\"		* Definition (no "Definition" header)
>>>   .\"			Only struct/union types will have definition;
>>> @@ -203,8 +204,8 @@ See also:
>>>   .RS
>>>   .br
>>>   Include:
>>> -.IR <stdio.h> ;
>>> -or
>>> +.IR <stdio.h> .
>>> +Alternatively,
>>>   .IR <wchar.h> .
>>>   .PP
>>>   An object type used for streams.
>>> @@ -268,19 +269,14 @@ type in this page.
>>>   .RS
>>>   .br
>>>   Include:
>>> -.IR <sys/types.h> ;
>>> -or
>>> -.I <grp.h>
>>> -or
>>> -.I <pwd.h>
>>> -or
>>> -.I <signal.h>
>>> -or
>>> -.i <stropts.h>
>>> -or
>>> -.I <sys/ipc.h>
>>> -or
>>> -.I <sys/stat.h>
>>> +.IR <sys/types.h> .
>>> +Alternatively,
>>
>> How does the reader of the page know that "alternatively" here has a
>> specific and different meaning from "or"?
>>
>> Can we describe this somehow along the lines of:
>>
>> The C standards specify this type in the following header:
>>
>> 	<stddef.h>
>>
>> In POSIX environments, it is sufficient instead to include any of the
>> following headers, but the resulting program may not be portable to
>> other C implementations unless <stddef.h> is also included:
>>
>> 	[etc.]
>>
>>
>> (I'm not sure this is 100% true, but it seems a safe recommendation.
>> I'm also being lazy by writing "the C standards" and "POSIX
>> environments" here -- it would be better to be specific.)
>
> This feels too verbose to me. Again, I care more about POSIX
> than C here. This is Linux; it quacks like a UNIX; so POSIX
> is the most relevant thing. And I want to keep the discussion
> of these types reasonably brief. In particular, I think that
> people who care a lot about portability across C implementations
> need to be looking somewhere else than the Linux manual pages.

Agree,

>
> Thanks,
>
> Michael
>

Thanks,

Alex



[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