svn commit: r227473 - head/sbin/geom/class/multipath

mdf at FreeBSD.org mdf at FreeBSD.org
Sun Nov 13 23:20:55 UTC 2011


On Sun, Nov 13, 2011 at 2:46 PM, Garrett Cooper <yanegomi at gmail.com> wrote:
> On Sun, Nov 13, 2011 at 2:08 PM, Pawel Jakub Dawidek <pjd at freebsd.org> wrote:
>> On Sat, Nov 12, 2011 at 12:16:23PM -0800, Garrett Cooper wrote:
>>> On Sat, Nov 12, 2011 at 12:01 PM, Alexander Motin <mav at freebsd.org> wrote:
>>> > Author: mav
>>> > Date: Sat Nov 12 20:01:30 2011
>>> > New Revision: 227473
>>> > URL: http://svn.freebsd.org/changeset/base/227473
>>> >
>>> > Log:
>>> >  Fix build on some archs after r227464.
>>> >
>>> > Modified:
>>> >  head/sbin/geom/class/multipath/geom_multipath.c
>>> >
>>> > Modified: head/sbin/geom/class/multipath/geom_multipath.c
>>> > ==============================================================================
>>> > --- head/sbin/geom/class/multipath/geom_multipath.c     Sat Nov 12 19:55:48 2011        (r227472)
>>> > +++ head/sbin/geom/class/multipath/geom_multipath.c     Sat Nov 12 20:01:30 2011        (r227473)
>>> > @@ -133,7 +133,8 @@ mp_label(struct gctl_req *req)
>>> >        uint8_t *sector, *rsector;
>>> >        char *ptr;
>>> >        uuid_t uuid;
>>> > -       uint32_t secsize = 0, ssize, status;
>>> > +       ssize_t secsize = 0, ssize;
>>> > +       uint32_t status;
>>> >        const char *name, *name2, *mpname;
>>> >        int error, i, nargs, fd;
>>> >
>>> > @@ -161,8 +162,8 @@ mp_label(struct gctl_req *req)
>>> >                        disksize = msize;
>>> >                } else {
>>> >                        if (secsize != ssize) {
>>> > -                               gctl_error(req, "%s sector size %u different.",
>>> > -                                   name, ssize);
>>> > +                               gctl_error(req, "%s sector size %ju different.",
>>> > +                                   name, (intmax_t)ssize);
>>>
>>> Shouldn't that be uintmax_t, not intmax_t ?
>>
>> No, ssize_t is signed. Although the best would be to use %zd for
>> ssize_t.
>
> Thanks... Missed the leading s.

... except that the cast and conversion specifier aren't in sync.  The
cast is signed; the conversion specifier is unsigned.  %zd is still
best, since it's the conversion specifier for the variable's type.
Next best is %jd and cast to intmax_t, since the signedness is
preserved.

But in the end it doesn't matter a lot since whatever is printed in
the error message, it's likely derivable from reading the code what
the actual value used was.

Cheers,
matthew


More information about the svn-src-head mailing list