From owner-freebsd-current@FreeBSD.ORG Wed Jun 20 13:07:55 2007 Return-Path: X-Original-To: current@freebsd.org Delivered-To: freebsd-current@FreeBSD.ORG Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 64CF116A46D for ; Wed, 20 Jun 2007 13:07:55 +0000 (UTC) (envelope-from deischen@freebsd.org) Received: from mail.ntplx.net (mail.ntplx.net [204.213.176.10]) by mx1.freebsd.org (Postfix) with ESMTP id 0800213C468 for ; Wed, 20 Jun 2007 13:07:54 +0000 (UTC) (envelope-from deischen@freebsd.org) Received: from sea.ntplx.net (sea.ntplx.net [204.213.176.11]) by mail.ntplx.net (8.14.1/8.14.1/NETPLEX) with ESMTP id l5KD7qOb001810; Wed, 20 Jun 2007 09:07:52 -0400 (EDT) X-Virus-Scanned: by AMaViS and Clam AntiVirus (mail.ntplx.net) X-Greylist: Message whitelisted by DRAC access database, not delayed by milter-greylist-3.0 (mail.ntplx.net [204.213.176.10]); Wed, 20 Jun 2007 09:07:53 -0400 (EDT) Date: Wed, 20 Jun 2007 09:07:52 -0400 (EDT) From: Daniel Eischen X-X-Sender: eischen@sea.ntplx.net To: Harti Brandt In-Reply-To: <20070620143830.M33081@knop-beagle.kn.op.dlr.de> Message-ID: References: <46765CB9.9020105@incunabulum.net> <4676C30E.7040300@incunabulum.net> <4676C952.5000607@incunabulum.net> <4676D168.3050502@incunabulum.net> <4678529A.3080308@incunabulum.net> <20070620110702.GB929@lizard.fafoe.narf.at> <20070620143830.M33081@knop-beagle.kn.op.dlr.de> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Cc: Stefan Farfeleder , current@freebsd.org Subject: Re: socklen_t (Re: Multicast problems [PATCH]) X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: Daniel Eischen List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 20 Jun 2007 13:07:55 -0000 On Wed, 20 Jun 2007, Harti Brandt wrote: > On Wed, 20 Jun 2007, Daniel Eischen wrote: > > DE>On Wed, 20 Jun 2007, Stefan Farfeleder wrote: > DE> > DE>> On Tue, Jun 19, 2007 at 06:36:39PM -0400, Daniel Eischen wrote: > DE>> > DE>> > POSIX states that: > DE>> > > DE>> > o The header shall define the type socklen_t, > DE>> > which is an integer type of width of at least 32 bits; see > DE>> > APPLICATION USAGE. > DE>> > > DE>> > and goes on to state: > DE>> > > DE>> > o The header shall define the unsigned integer > DE>> > type sa_family_t. > DE>> > > DE>> > This seems to imply that our socklen_t should not be an unsigned > DE>> > integer (uint32_t), but a signed integer. In APPLICATION USAGE, > DE>> > POSIX states: > DE>> > DE>> I don't understand how you come to that conclusion. Why does not > DE>> mentioning whether socklen_t is signed or unsigned imply it should be > DE>> signed? > DE> > DE>Because it explicitly says unsigned for sa_family_t and does not > DE>say unsigned for socklen_t. To me, "integer" means a C (signed) > DE>integer. The fact that older APIs and implementations used "int" > DE>might support the argument to use int32_t just for compatibility > DE>reasons. As it stands now, portable code has to have some sort > DE>of autoconfig to determine whether or not to use socklen_t or int. > DE>I don't see how you can do this with #ifdefs unless you know > DE>OS version numbers and when socklen_t first got introduced. > > In standardese stating 'integer type' means any integer type. It does not > imply signed or unsignedness. You might look at paragraph 14 of 6.2.5 of > the C standard: "The type char, the signed and unsigned integer types, and > the enumerated types are collectively called integer types." Ok, but it still makes it difficult to write portable code. I do not care so much about this to argue it, so consider the subject dropped :-) -- DE