diff options
-rw-r--r-- | lib/libc/stdio/Makefile.inc | 4 | ||||
-rw-r--r-- | lib/libc/stdio/findfp.c | 6 | ||||
-rw-r--r-- | share/examples/etc/make.conf | 8 | ||||
-rw-r--r-- | share/man/man5/make.conf.5 | 8 |
4 files changed, 25 insertions, 1 deletions
diff --git a/lib/libc/stdio/Makefile.inc b/lib/libc/stdio/Makefile.inc index 7ab0337..3841cfc 100644 --- a/lib/libc/stdio/Makefile.inc +++ b/lib/libc/stdio/Makefile.inc @@ -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 \ diff --git a/lib/libc/stdio/findfp.c b/lib/libc/stdio/findfp.c index 5538a57..283ff5c 100644 --- a/lib/libc/stdio/findfp.c +++ b/lib/libc/stdio/findfp.c @@ -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 diff --git a/share/examples/etc/make.conf b/share/examples/etc/make.conf index a0d269e..1aa2f78 100644 --- a/share/examples/etc/make.conf +++ b/share/examples/etc/make.conf @@ -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 diff --git a/share/man/man5/make.conf.5 b/share/man/man5/make.conf.5 index 0d6c745..0a810c5 100644 --- a/share/man/man5/make.conf.5 +++ b/share/man/man5/make.conf.5 @@ -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 |