Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 7 Mar 2002 15:53:15 -0500
From:      Leo Bicknell <bicknell@ufp.org>
To:        Garance A Drosihn <drosih@rpi.edu>
Cc:        "Brian T.Schellenberger" <bts@babbleon.org>, hackers@FreeBSD.ORG
Subject:   Re: RFC: style(9) isn't explicit about booleans for testing -- an actual analysis of the code!
Message-ID:  <20020307205315.GA21048@ussenterprise.ufp.org>
In-Reply-To: <p05101508b8ad7b67c653@[128.113.24.47]>
References:  <52204.1015480748@critter.freebsd.dk> <20020307071630.E26DBBA03@i8k.babbleon.org> <p05101508b8ad7b67c653@[128.113.24.47]>

next in thread | previous in thread | raw e-mail | index | archive | help
In a message written on Thu, Mar 07, 2002 at 03:27:49PM -0500, Garance A Drosihn wrote:
> As to the wording, PHK suggested that the wording for this
> rule in style(9) be changed:
>  - - -
> get rid of the word boolean, ie: change
>      Do not use ! for tests unless it is a boolean, e.g. use
> to
>      Do not use ! for tests unless it is an integer type, e.g. use

Although C doesn't have the type "boolean", I believe this is a
conceptual distinction.  That is, we don't want to allow this:

if (!uid) {
  /* do thing only root can do */
}

Because UID is not a boolean type.  It takes a range of values,
and should be:

if (uid == 0) {
  /* do thing only root can do */
}

The only proper use of "!" is on a boolean type, defined as a type
that has two values, 0, and everything else.

Personally, I would clarify boolean in the document as follows:

C does not provide a proper boolean type.  As a result, FreeBSD
uses integers for a boolean type.  The boolean values are 0 for
false, and all other values for true.  All code using a boolean
type must not depend on "true" having any specific value.

-- 
       Leo Bicknell - bicknell@ufp.org - CCIE 3440
        PGP keys at http://www.ufp.org/~bicknell/
Read TMBG List - tmbg-list-request@tmbg.org, www.tmbg.org

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message




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