Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 27 Sep 2019 21:46:23 +0300
From:      Konstantin Belousov <kostikbel@gmail.com>
To:        Mateusz Guzik <mjguzik@gmail.com>
Cc:        Warner Losh <imp@freebsd.org>, src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   Re: svn commit: r352795 - head/lib/libc/sys
Message-ID:  <20190927184623.GM44691@kib.kiev.ua>
In-Reply-To: <CAGudoHF454hyHeS_HayGRJYRpSfo9B9wwU4hVBxjcmAk0HEeJg@mail.gmail.com>
References:  <201909271611.x8RGBl0H036116@repo.freebsd.org> <CAGudoHF454hyHeS_HayGRJYRpSfo9B9wwU4hVBxjcmAk0HEeJg@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, Sep 27, 2019 at 08:32:20PM +0200, Mateusz Guzik wrote:
> On 9/27/19, Warner Losh <imp@freebsd.org> wrote:
> > Author: imp
> > Date: Fri Sep 27 16:11:47 2019
> > New Revision: 352795
> > URL: https://svnweb.freebsd.org/changeset/base/352795
> >
> > Log:
> >   Document varadic args as int, since you can't have short varadic args
> > (they are
> >   promoted to ints).
> >
> >   - `mode_t` is `uint16_t` (`sys/sys/_types.h`)
> >   - `openat` takes variadic args
> >   - variadic args cannot be 16-bit, and indeed the code uses int
> >   - the manpage currently kinda implies the argument is 16-bit by saying
> > `mode_t`
> >
> >   Prompted by Rust things: https://github.com/tailhook/openat/issues/21
> >   Submitted by: Greg V at unrelenting
> >   Differential Revision: https://reviews.freebsd.org/D21816
> >
> > Modified:
> >   head/lib/libc/sys/mq_open.2
> >   head/lib/libc/sys/open.2
> >
> > Modified: head/lib/libc/sys/mq_open.2
> > ==============================================================================
> > --- head/lib/libc/sys/mq_open.2	Fri Sep 27 15:28:30 2019	(r352794)
> > +++ head/lib/libc/sys/mq_open.2	Fri Sep 27 16:11:47 2019	(r352795)
> > @@ -133,7 +133,7 @@ Create a message queue.
> >  It requires two additional arguments:
> >  .Fa mode ,
> >  which is of type
> > -.Vt mode_t ,
> > +.Vt int ,
> >  and
> >  .Fa attr ,
> >  which is a pointer to an
> >
> > Modified: head/lib/libc/sys/open.2
> > ==============================================================================
> > --- head/lib/libc/sys/open.2	Fri Sep 27 15:28:30 2019	(r352794)
> > +++ head/lib/libc/sys/open.2	Fri Sep 27 16:11:47 2019	(r352795)
> > @@ -61,7 +61,7 @@ In this case
> >  and
> >  .Fn openat
> >  require an additional argument
> > -.Fa "mode_t mode" ,
> > +.Fa "int mode" ,
> >  and the file is created with mode
> >  .Fa mode
> >  as described in
> >
> 
> But opengroup says it is mode_t. Perhaps it is mode_t which needs
> to be changed?

Yes, users must pass mode_t, and the man page is written for users.
Implementation needs to be aware of the implicit promotion and handle
it accordingly.

In theory, mode_t might be wider than int.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20190927184623.GM44691>