Date: Thu, 1 May 2003 10:07:13 -0500 From: "Jacques A. Vidrine" <nectar@FreeBSD.org> To: Dag-Erling Smorgrav <des@ofug.org> Cc: hackers@freebsd.org Subject: Re: incorrect enum warning? Message-ID: <20030501150713.GA34992@madman.celabo.org> In-Reply-To: <xzp7k9a67pf.fsf@flood.ping.uio.no> References: <xzp7k9a67pf.fsf@flood.ping.uio.no>
next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, May 01, 2003 at 04:51:40PM +0200, Dag-Erling Smorgrav wrote:
> Why does the following code in OpenPAM headers:
>
> /*
> * XSSO 5.4
> */
> enum {
> PAM_SILENT = 0x80000000,
> PAM_DISALLOW_NULL_AUTHTOK = 0x1,
> PAM_ESTABLISH_CRED = 0x1,
> PAM_DELETE_CRED = 0x2,
> PAM_REINITIALIZE_CRED = 0x4,
> PAM_REFRESH_CRED = 0x8,
> PAM_PRELIM_CHECK = 0x1,
> PAM_UPDATE_AUTHTOK = 0x2,
> PAM_CHANGE_EXPIRED_AUTHTOK = 0x4
> };
>
> cause the following warning when compiled with CSTD=c99:
>
> /usr/src/contrib/openpam/include/security/pam_constants.h:100: warning: ISO C restricts enumerator values to range of `int'
>
> when 0x80000000 is clearly within the range of 'int' on all platforms
> we support?
Guessing:
C does not specify one's complement or two's complement representation
of integers. On a one's complement 32-bit platform, 0x80000000 is -0
(negative zero), which cannot be an `int'.
Cheers,
--
Jacques Vidrine . NTT/Verio SME . FreeBSD UNIX . Heimdal
nectar@celabo.org . jvidrine@verio.net . nectar@freebsd.org . nectar@kth.se
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20030501150713.GA34992>
