From owner-freebsd-hackers@FreeBSD.ORG Thu May 1 08:37:41 2003 Return-Path: Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 0CC4937B401; Thu, 1 May 2003 08:37:41 -0700 (PDT) Received: from haldjas.folklore.ee (Haldjas.folklore.ee [193.40.6.121]) by mx1.FreeBSD.org (Postfix) with ESMTP id CDC1A43F85; Thu, 1 May 2003 08:37:36 -0700 (PDT) (envelope-from narvi@haldjas.folklore.ee) Received: from haldjas.folklore.ee (localhost [127.0.0.1]) by haldjas.folklore.ee (8.12.3/8.11.3) with ESMTP id h41FbZ6U001033; Thu, 1 May 2003 18:37:35 +0300 (EEST) (envelope-from narvi@haldjas.folklore.ee) Received: from localhost (narvi@localhost)h41FbZwd001030; Thu, 1 May 2003 18:37:35 +0300 (EEST) Date: Thu, 1 May 2003 18:37:35 +0300 (EEST) From: Narvi To: "Jacques A. Vidrine" In-Reply-To: <20030501150713.GA34992@madman.celabo.org> Message-ID: <20030501181950.G40030-100000@haldjas.folklore.ee> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII cc: hackers@freebsd.org cc: Dag-Erling Smorgrav Subject: Re: incorrect enum warning? X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 01 May 2003 15:37:41 -0000 On Thu, 1 May 2003, Jacques A. Vidrine wrote: > 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'. > -0 would be a valid int on a one's complement platform It would probably compare equal to zero. Gcc only runs on 2-s complement platforms anyways. > Cheers, > -- > Jacques Vidrine . NTT/Verio SME . FreeBSD UNIX . Heimdal > nectar@celabo.org . jvidrine@verio.net . nectar@freebsd.org . nectar@kth.se >