Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 11 Feb 2001 17:18:46 -0800
From:      Peter Wemm <peter@netplex.com.au>
To:        Matt Dillon <dillon@earth.backplane.com>
Cc:        Tor.Egge@fast.no, eischen@vigrid.com, bde@zeta.org.au, current@FreeBSD.ORG
Subject:   Re: HEADS UP: installworld gotchas 
Message-ID:  <200102120118.f1C1IkU43227@mobile.wemm.org>
In-Reply-To: <200102120101.f1C118r01457@earth.backplane.com> 

next in thread | previous in thread | raw e-mail | index | archive | help
Matt Dillon wrote:
> 
> :   
> :   This is a major change to libc.  The library maj must be bumped if you
> :   intend to change the sizeof(FILE), or every single third party applicatio
    n
> :   that uses stdio will break.
> :
> :				-Matt
> 
>     Oh wait, is libc already bumped in current verses 4.2?  If so then I gues
    s
>     we don't bump libc's maj.  God help anyone using current though!
> 
> 					-Matt


I cant help but wonder why on earth we didn't have it like this from the
start:

Index: include/stdio.h
===================================================================
RCS file: /home/ncvs/src/include/stdio.h,v
retrieving revision 1.26
diff -u -r1.26 stdio.h
--- include/stdio.h	2001/02/11 22:04:18	1.26
+++ include/stdio.h	2001/02/12 01:27:16
@@ -132,6 +132,9 @@
 
 __BEGIN_DECLS
 extern FILE __sF[];
+extern FILE *__stdin;
+extern FILE *__stdout;
+extern FILE *__stderr;
 __END_DECLS
 
 #define	__SLBF	0x0001		/* line buffered */
@@ -194,9 +197,9 @@
 #define	SEEK_END	2	/* set file offset to EOF plus offset */
 #endif
 
-#define	stdin	(&__sF[0])
-#define	stdout	(&__sF[1])
-#define	stderr	(&__sF[2])
+#define	stdin	__stdin
+#define	stdout	__stdout
+#define	stderr	__stderr
 
 /*
  * Functions defined in ANSI C standard.
Index: lib/libc/stdio/findfp.c
===================================================================
RCS file: /home/ncvs/src/lib/libc/stdio/findfp.c,v
retrieving revision 1.10
diff -u -r1.10 findfp.c
--- lib/libc/stdio/findfp.c	2001/02/11 22:06:40	1.10
+++ lib/libc/stdio/findfp.c	2001/02/12 01:27:16
@@ -75,6 +75,10 @@
 struct glue __sglue = { &uglue, 3, __sF };
 static struct glue *lastglue = &uglue;
 
+FILE *__stdin = &__sF[0];
+FILE *__stdout = &__sF[1];
+FILE *__stderr = &__sF[2];
+
 static struct glue *	moreglue __P((int));
 
 static spinlock_t thread_lock = _SPINLOCK_INITIALIZER;


That compiles fine. The __stdin thing is in case somebody likes the idea
of #undef stdin or #ifdef stdin for some reason.

In fact, I can't imagine *any* reason not to do this. At least this would
insulate us from future nasties in FILE size changes, and would have
saved us in this case.

Cheers,
-Peter
--
Peter Wemm - peter@FreeBSD.org; peter@yahoo-inc.com; peter@netplex.com.au
"All of this is for nothing if we don't go to the stars" - JMS/B5



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




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