All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alejandro Colomar <alx+linux-man@kernel.org>
To: "Michael Kerrisk (man7.org)" <mtk@man7.org>
Cc: Christopher Bazley <chris.bazley.wg14@gmail.com>,
	 linux-man@vger.kernel.org,
	Michael Kerrisk <mtk.manpages@gmail.com>,
	 Sam James <sam@gentoo.org>, Carlos O'Donell <carlos@redhat.com>,
	 "Joseph S. Myers" <josmyers@redhat.com>,
	Martin Uecker <uecker@tugraz.at>
Subject: Re: [PATCH] man/: SYNOPSIS: Remove GNU forward-declarations of parameters for lengths of array parameters
Date: Sat, 24 Oct 2026 15:38:04 +0200	[thread overview]
Message-ID: <atyxz7Uj4rue8HjP@debian> (raw)
In-Reply-To: <CAFs=pga6UWmH6FJZcf0wRi2S3PdbrJWNFeVbkQVVmncB3Ni=-g@mail.gmail.com>

[-- Attachment #1: Type: text/plain, Size: 2461 bytes --]

Hi Michael,

> Date: 2026-10-24 09:45:02-0300
> From: "Michael Kerrisk (man7.org)" <mtk@man7.org>
>
> Hello Christopher
> 
[...]
> > I am curious to know what your attitude would be to lesser-known
> > standard C syntax.
> >
> > For example:
> >
> > int pipe(int pipefd[static 2]);comprehensible
> >
> > is standard C syntax, and requires the caller to pass a pointer to the
> > first of at least 2 array elements, unlike
> >
> > int pipe(int pipefd[2]);
> >
> > which has the same semantics in ISO C as
> >
> > int pipe(int *pipefd);
> 
> I was unfamiliar with that syntax, but at least in context it is
> immediately understandable,

Actually, it is not understandable.  [static 2] doesn't mean the same as
[2], and this is one historic mistake of the C Committee that I wish had
never happened.  [static 2] is never what you want (I was tempted to say
almost never, but I've never seen a good case for it).  Programmers want
the meaning of [2].

The main differences between [static 2] and [2] are:

-  [2] means (in GNU C, and in common understanding, but not
   acknowledged by ISO C) that:

	-  The caller must supply at least 2 elements.
	-  The callee must not access past those 2 elements.

-  [static 2] means (in ISO C, but ignored by GCC):

	-  The caller must supply at least 2 elements.
	-  The callee is free to access past those 2 elements!!
	   (of course, if there aren't any elements after that, it's UB)
	-  The caller must supply a non-null pointer.

The null-pointer issue is nonsense, but we can live with it.
The allowance to access past the specified length, that's the real issue
with this feature, and why it should not be used at all.

The committee was clearly confused when they added this feature.
It was around the time when 'restrict' was added, which is another
historical mistake of the committee.  In general, every feature they
added thinking of optimizations (and that includes these two) has
resulted in a mistake.

> and I so I don't dislike it, And it is
> standard C.

When the standard clashes with reality and common sense, I'm not sure
I'd give the standard much credibility.

>  I really don't think Linux man-pages is the place to
> introducing nonstandard, GNU-specific syntax (that people clearly
> don't understand).

People clearly don't understand [static 2] either.


Have a lovely day!
Alex

-- 
<https://www.alejandro-colomar.es>

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

  reply	other threads:[~2026-10-24 13:38 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-22 16:44 [PATCH] man/: SYNOPSIS: Remove GNU forward-declarations of parameters for lengths of array parameters Alejandro Colomar
2026-10-22 17:11 ` Martin Uecker
2026-10-22 20:01   ` Alejandro Colomar
2026-10-22 20:27     ` Alejandro Colomar
2026-10-22 17:37 ` Christopher Bazley
     [not found] ` <CAEHU8x9jET+vcrR0NpDz6t57egQG8TZqx5XtV52srH9ZRvdxSQ@mail.gmail.com>
2026-10-22 19:54   ` Alejandro Colomar
2026-10-23 11:53     ` Michael Kerrisk (man7.org)
2026-10-23 12:42       ` Alejandro Colomar
2026-10-23 15:51       ` Christopher Bazley
2026-10-24 12:45         ` Michael Kerrisk (man7.org)
2026-10-24 13:38           ` Alejandro Colomar [this message]
2026-10-24 16:16             ` Christopher Bazley
2026-10-24 16:37               ` Alejandro Colomar
2026-10-24 18:11                 ` Martin Uecker
2026-10-25  6:59                   ` Alejandro Colomar
2026-10-25  7:22                     ` Martin Uecker
2026-10-25  7:38                       ` Alejandro Colomar
2026-10-25  8:29                         ` G. Branden Robinson
2026-10-25  8:40                         ` Martin Uecker
2026-10-25  8:57                           ` Alejandro Colomar
2026-10-25  9:05                             ` Martin Uecker
2026-10-23 12:11     ` Alejandro Colomar
2026-10-22 22:03 ` Mark Harris
2026-10-23  9:43   ` Alejandro Colomar
2026-10-23 19:32     ` Mark Harris
2026-10-23 20:06       ` Alejandro Colomar
2026-10-24  7:53   ` Martin Uecker

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=atyxz7Uj4rue8HjP@debian \
    --to=alx+linux-man@kernel.org \
    --cc=carlos@redhat.com \
    --cc=chris.bazley.wg14@gmail.com \
    --cc=josmyers@redhat.com \
    --cc=linux-man@vger.kernel.org \
    --cc=mtk.manpages@gmail.com \
    --cc=mtk@man7.org \
    --cc=sam@gentoo.org \
    --cc=uecker@tugraz.at \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.