Re: [PATCH 1/6] staging: lustre: lustre: resolve "use spaces between elements" checkpatch errors

From: Joe Perches
Date: Thu Jun 15 2017 - 12:19:57 EST


On Thu, 2017-06-15 at 17:03 +0100, James Simmons wrote:
> > On Wed, 2017-06-14 at 11:01 -0400, James Simmons wrote:
> > > Due to the way the DFID was embedded in our debug strings checkpatch
> > > would report the following error:
> >
> > unrelated trivia
> >
> > > diff --git a/drivers/staging/lustre/lustre/include/lustre/lustre_user.h b/drivers/staging/lustre/lustre/include/lustre/lustre_user.h
> >
> > []
> > > @@ -532,7 +532,7 @@ static inline void obd_uuid2fsname(char *buf, char *uuid, int buflen)
> > > #define FID_NOBRACE_LEN 40
> > > #define FID_LEN (FID_NOBRACE_LEN + 2)
> > > #define DFID_NOBRACE "%#llx:0x%x:0x%x"
> >
> > It's odd to use a mixture of %#x and 0x%x.
> >
> > Using
> > #define DFID_NOBRACE "%#llx:%#x:%#x"
> > would also save a couple bytes per use.
>
> Changing that format would break things very badly. This is used in user
> land utilities and the kernel code.

Really? Why would anything break?

$ cat fmt.c
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char **argv)
{
printf("%#llx:0x%x:0x%x\n", (unsigned long long)1, 2, 3);
printf("%#llx:%#x:%#x\n", (unsigned long long)1, 2, 3);
return 0;
}

$ gcc fmt.c
$ ./a.out
0x1:0x2:0x3
0x1:0x2:0x3