Re: Conversion to generic boolean

Richard Knutsson
2006-08-28T21:48:37Z

Nicholas Miell wrote:

>On Mon, 2006-08-28 at 22:55 +0200, Richard Knutsson wrote:
>
>
>>Nicholas Miell wrote:
>>
>>
>>
>>>On Mon, 2006-08-28 at 14:17 +0200, Richard Knutsson wrote:
>>>
>>>
>>>
>>>>Jan Engelhardt wrote:
>>>>
>>>>
>>>>
>>>>
>>>>>>>Just would like to ask if you want patches for:
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>Total NACK to any of this boolean ididocy. I very much hope you didn't
>>>>>>get the impression you actually have a chance to get this merged.
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>>* (Most importent, may introduce bugs if left alone)
>>>>>>>Fixing boolean checking, ex:
>>>>>>>if (bool == FALSE)
>>>>>>>to
>>>>>>>if (!bool)
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>this one of course makes sense, but please do it without introducing
>>>>>>any boolean type. Getting rid of all the TRUE/FALSE defines and converting
>>>>>>all scsi drivers to classic C integer as boolean semantics would be
>>>>>>very welcome janitorial work.
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>I don't get it. You object to the 'idiocy'
>>>>>(http://lkml.org/lkml/2006/7/27/281), but find the x==FALSE -> !x
>>>>>a good thing?
>>>>>
>>>>>
>>>>>
>>>>>
>>>>That is error-prone. Not "==FALSE" but what happens if x is (for some
>>>>reason) not 1 and then "if (x==TRUE)".
>>>>
>>>>
>>>>
>>>If you're using _Bool, that isn't possible. (Except at the boundaries
>>>where you have to validate untrusted data -- and the compiler makes that
>>>more difficult, because it "knows" that a _Bool can only be 0 or 1 and
>>>therefore your check to see if it's not 0 or 1 can "safely" be
>>>eliminated.)
>>>
>>>
>>>
>>>
>>Yes, true. But there is no _Bool's in the kernel (linus-git), only one
>>in script/.
>>
>>
>>
>
>Sorry, I was under the impression that the purpose of the generic
>boolean patch was to switch the kernel over to C's generic boolean.
>
>
Oh no, my bad. Well, at least some like to do it (including me).
But you really have to bend it to make _Bool take another value then 0/1.
Regarding "== FALSE" and co., there is still no reason for them, other
then bloater the code.

Richard Knutsson