Provide a hook to make __sF visible outside of libc for commercial apps

if WANT_COMPAT4_STDIO is defined when compiling libc.

Submitted by: Steve Kargl <sgk@troutmask.apl.washington.edu>
This commit is contained in:
Alfred Perlstein 2002-11-02 19:47:53 +00:00
parent b95b5e06d0
commit 0fc25b925d
4 changed files with 25 additions and 1 deletions

View File

@ -4,6 +4,10 @@
# stdio sources
.PATH: ${.CURDIR}/../libc/stdio
.if WANT_COMPAT4_STDIO
CFLAGS+=-DCOMPAT4_STDIO
.endif
SRCS+= _flock_stub.c asprintf.c clrerr.c fclose.c fdopen.c feof.c ferror.c \
fflush.c fgetc.c fgetln.c fgetpos.c fgets.c fgetwc.c fgetws.c \
fileno.c findfp.c flags.c fopen.c fprintf.c fpurge.c fputc.c fputs.c \

View File

@ -69,12 +69,16 @@ static struct glue uglue = { NULL, FOPEN_MAX - 3, usual };
static struct __sFILEX __sFX[3];
static FILE __sF[3] = {
#ifndef COMPAT4_STDIO
static
#endif
FILE __sF[3] = {
std(__SRD, STDIN_FILENO),
std(__SWR, STDOUT_FILENO),
std(__SWR|__SNBF, STDERR_FILENO)
};
/*
* The following kludge is done to ensure enough binary compatibility
* with future versions of libc. Or rather it allows us to work with

View File

@ -171,6 +171,14 @@
#COMPAT3X= yes
#COMPAT4X= yes
#
# If you have a commercial application for a FreeBSD 4.x that cannot easily
# be updated to a FreeBSD 5.x application and it generates the error message
# "undefined reference to `__sF'", then you can uncomment the following
# line to build a libc compatibility with FreeBSD 4.x. NOTE, THIS SHOULD BE
# USED AS A LAST RESORT.
#
#WANT_COMPAT4_STDIO= yes
#
#
# Default format for system documentation, depends on your printer.
# Set this to "ascii" for simple printers or screen

View File

@ -605,6 +605,14 @@ levels to a lower one.
and above is known to trigger known optimizer bugs at various
times \(em this is worse on the Alpha platform.
The value assigned is the highest optimization value used.
.It Va WANT_COMPAT4_STDIO
.Pq Vt bool
If you have a commercial application for a FreeBSD 4.x that cannot easily
be updated to a FreeBSD 5.x application and it generates the error message
.Dq undefined reference to `__sF' ,
then you can uncomment the following line to build a libc compatibility with
FreeBSD 4.x.
.Em NOTE, THIS SHOULD BE USED AS A LAST RESORT.
.El
.Pp
The following list provides a name and short description for variables