summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/stdio.h10
-rw-r--r--lib/libc/Makefile3
-rw-r--r--lib/libc/stdio/findfp.c21
3 files changed, 18 insertions, 16 deletions
diff --git a/include/stdio.h b/include/stdio.h
index 431eab0..d60ed88 100644
--- a/include/stdio.h
+++ b/include/stdio.h
@@ -132,6 +132,9 @@ typedef struct __sFILE {
__BEGIN_DECLS
extern FILE __sF[];
+extern FILE *__stdinp;
+extern FILE *__stdoutp;
+extern FILE *__stderrp;
__END_DECLS
#define __SLBF 0x0001 /* line buffered */
@@ -194,9 +197,16 @@ __END_DECLS
#define SEEK_END 2 /* set file offset to EOF plus offset */
#endif
+/* To be removed by 5.0-RELEASE */
+#if (defined(__i386__) || defined(__alpha__)) && !defined(_FIXED_STDIO)
#define stdin (&__sF[0])
#define stdout (&__sF[1])
#define stderr (&__sF[2])
+#else
+#define stdin __stdinp
+#define stdout __stdoutp
+#define stderr __stderrp
+#endif
/*
* Functions defined in ANSI C standard.
diff --git a/lib/libc/Makefile b/lib/libc/Makefile
index cdb5011..9ac83d9 100644
--- a/lib/libc/Makefile
+++ b/lib/libc/Makefile
@@ -9,7 +9,8 @@
LIB=c
SHLIB_MAJOR= 5
SHLIB_MINOR= 0
-CFLAGS+=-DLIBC_RCS -DSYSLIBC_RCS -I${.CURDIR}/include
+CFLAGS+=-DLIBC_RCS -DSYSLIBC_RCS -I${.CURDIR}/include -I${.CURDIR}/../../include
+CFLAGS+=-DLIBC_MAJOR=${SHLIB_MAJOR}
AINC= -I${.CURDIR}/${MACHINE_ARCH}
CLEANFILES+=tags
INSTALL_PIC_ARCHIVE= yes
diff --git a/lib/libc/stdio/findfp.c b/lib/libc/stdio/findfp.c
index 9e7bc28..8b28431 100644
--- a/lib/libc/stdio/findfp.c
+++ b/lib/libc/stdio/findfp.c
@@ -71,6 +71,9 @@ static struct glue uglue = { NULL, FOPEN_MAX - 3, usual };
static struct __sFILEX __sFX[3];
+#if LIBC_MAJOR >= 6
+static
+#endif
FILE __sF[3] = {
std(__SRD, STDIN_FILENO),
std(__SWR, STDOUT_FILENO),
@@ -84,18 +87,9 @@ FILE __sF[3] = {
* symbols and expects libc to provide them. We only have need to support
* i386 and alpha because they are the only "old" systems we have deployed.
*/
-#if defined(__i386__)
-#define FILE_SIZE 88
-#elif defined(__alpha__)
-#define FILE_SIZE 152
-#endif
-#ifndef FILE_SIZE
-#error "You must define FILE_SIZE for this platform"
-#endif
-#define X(loc, sym) __strong_reference(loc, sym)
-X(__sF + FILE_SIZE * 0, __stdin);
-X(__sF + FILE_SIZE * 1, __stdout);
-X(__sF + FILE_SIZE * 2, __stderr);
+FILE *__stdinp = &__sF[0];
+FILE *__stdoutp = &__sF[1];
+FILE *__stderrp = &__sF[2];
struct glue __sglue = { &uglue, 3, __sF };
static struct glue *lastglue = &uglue;
@@ -233,14 +227,11 @@ _cleanup()
/*
* __sinit() is called whenever stdio's internal variables must be set up.
*/
-#define SIZEMSG "WARNING: FILE_SIZE != sizeof(FILE)\n"
void
__sinit()
{
int i;
- if (FILE_SIZE != sizeof(FILE))
- write(2, SIZEMSG, sizeof(SIZEMSG) - 1);
THREAD_LOCK();
if (__sdidinit == 0) {
/* Set _extra for the usual suspects. */
OpenPOWER on IntegriCloud