From owner-cvs-src@FreeBSD.ORG Tue May 6 05:33:42 2008 Return-Path: Delivered-To: cvs-src@FreeBSD.ORG Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 408A5106566C; Tue, 6 May 2008 05:33:42 +0000 (UTC) (envelope-from das@FreeBSD.ORG) Received: from zim.MIT.EDU (ZIM.MIT.EDU [18.95.3.101]) by mx1.freebsd.org (Postfix) with ESMTP id 020EC8FC23; Tue, 6 May 2008 05:33:41 +0000 (UTC) (envelope-from das@FreeBSD.ORG) Received: from zim.MIT.EDU (localhost [127.0.0.1]) by zim.MIT.EDU (8.14.2/8.14.2) with ESMTP id m465Z5SN066752; Tue, 6 May 2008 01:35:05 -0400 (EDT) (envelope-from das@FreeBSD.ORG) Received: (from das@localhost) by zim.MIT.EDU (8.14.2/8.14.2/Submit) id m465Z43V066751; Tue, 6 May 2008 01:35:04 -0400 (EDT) (envelope-from das@FreeBSD.ORG) Date: Tue, 6 May 2008 01:35:04 -0400 From: David Schultz To: John Baldwin Message-ID: <20080506053504.GA66588@zim.MIT.EDU> Mail-Followup-To: John Baldwin , Peter Jeremy , Alfred Perlstein , cvs-src@FreeBSD.ORG, src-committers@FreeBSD.ORG, cvs-all@FreeBSD.ORG References: <200805051603.m45G3rrN089219@repoman.freebsd.org> <200805051459.29200.jhb@freebsd.org> <20080505192417.GS7293@server.vk2pj.dyndns.org> <200805051637.43073.jhb@freebsd.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <200805051637.43073.jhb@freebsd.org> Cc: Peter Jeremy , Alfred Perlstein , src-committers@FreeBSD.ORG, cvs-all@FreeBSD.ORG, cvs-src@FreeBSD.ORG Subject: Re: cvs commit: src/include stdio.h src/lib/libc/stdio clrerr.c feof.c ferror.c fileno.c getc.c getchar.c local.h putc.c putchar.c xprintf.c X-BeenThere: cvs-src@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: CVS commit messages for the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 06 May 2008 05:33:42 -0000 On Mon, May 05, 2008, John Baldwin wrote: > On Monday 05 May 2008 03:24:17 pm Peter Jeremy wrote: > > On Mon, May 05, 2008 at 02:59:28PM -0400, John Baldwin wrote: > > >On Monday 05 May 2008 02:40:03 pm Alfred Perlstein wrote: > > >> I'm _not_ objecting, just interested in why. > > >> > > >> Any references to discussions on this? Are we now safe for > > >> future compat or something? > > > > > >Having FILE be opaque broke just about every 'configure' script on the > > >planet. :( > > > > Either autoconf and friends are _intended_ as impediments to > > portability or they are completely broken by design. > > It appears that autoconf only believes a type is real if you can typedef it to > another type, cast 0 to a valid pointer to the new typedef'd type, and do a > sizeof() of the typdef'd type. The last is where having an opaque type > breaks down for scripts that want to make sure FILE is a real type. I believe FILE is required to be a complete type, but it need not expose any usable fields to applications. For instance, typedef struct { char __pad[__FILE_LENGTH]; } FILE; would be valid. I don't know whether that breaks lots of apps or not. Of course that still makes it possible to write bogus apps that depend on sizeof(FILE).