Re: Staging: speakup - syle fix permissions to octal

From: Joe Perches
Date: Sat Feb 04 2017 - 14:30:30 EST


On Sat, 2017-02-04 at 20:24 +0100, Julia Lawall wrote:
>
> On Sat, 4 Feb 2017, Joe Perches wrote:
>
> > On Sat, 2017-02-04 at 19:10 +0100, Julia Lawall wrote:
> > >
> > > On Fri, 3 Feb 2017, Joe Perches wrote:
> > >
> > > > (adding Julia Lawall)
> > > >
> > > > On Fri, 2017-02-03 at 20:44 -0800, Guenter Roeck wrote:
> > > > > On Sat, Jan 28, 2017 at 07:05:09PM +1300, Derek Robson wrote:
> > > > > > A style fix across whole driver.
> > > > > > changed permissions to octal style, found using checkpatch
> > > > > >
> > > > > > Signed-off-by: Derek Robson <robsonde@xxxxxxxxx>
> > > > >
> > > > > FWIW, I think changes like this are best done using coccinelle.
> > > >
> > > > I think checkpatch does it reasonably well.
> > > >
> > > > Julia? Can coccinelle do this?
> > > >
> > > > I believe cocinelle doesn't handle the substitution
> > > > and octal addition very well when multiple flags
> > > > are used.
> > >
> > > OK, finally received. I think that Guenter's solution is a good one,
> > > because the rule-writer knows better than Coccinelle what people find to
> > > be intelligible.
> >
> > If it's written in python, I don't see how that's
> > particularly different than being written in perl,
> > but coccinelle could certainly handle expressions
> > on multiple lines of these or'd constants better.
>
> Well, the python would only be needed if there was a need for actual
> calculations. Should S_IRGRP | S_IWGRP become 0060?

Yes.

> > Are there any than span 2 or more lines?
> > I didn't see one with a casual grep.
> >
> > Does coccinelle handle arbitrary ordering of these
> > constants in a form like Guenter suggests or does
> > each possible ordered sequence need to be written?
>
> There is the following isomorphism:
>
> X | Y => Y | X
>
> But that only works when the associativity is right.
>
> A | B | C is (A | B) | C, so the B and C won't exchange with each other.
> One can also write eg
>
> A | ... | B
>
> which gives more fexibility. I'm not sure to what extent that works when
> there are changes, though.

The perl code doesn't care about the ordering
but it doesn't handle the A | ... | B case.