diff options
author | ache <ache@FreeBSD.org> | 1994-09-18 22:21:04 +0000 |
---|---|---|
committer | ache <ache@FreeBSD.org> | 1994-09-18 22:21:04 +0000 |
commit | 0de4aa5096ef52c8264574b7870c8cbd28ab7960 (patch) | |
tree | 2ec5d51cbfa545a20fdb40317c93d5be65f0ccc3 /lib | |
parent | ddecd2f876e23414b3cfa41f3951ef8504a2676c (diff) | |
download | FreeBSD-src-0de4aa5096ef52c8264574b7870c8cbd28ab7960.zip FreeBSD-src-0de4aa5096ef52c8264574b7870c8cbd28ab7960.tar.gz |
Add (#ifdef'ed by STARTUP_LOCALE) following line to crt0.c
(void) setlocale(LC_ALL, "");
It will be easiest way now to make national chars available
for all ctype-oriented programs at once by simple:
setenv LANG Your_National_Charset
Default case (without "LANG" environment
variable) will be fully ANSI compatible (got "C" locale).
If "LANG" variable present, extention becomes active.
Effect of this extention is great: in one time all ctype
oriented programs can accept/print national characters
without any touching source/binary code, it is big win, IMHO.
This method is fully compatible with ISO8859-* and russian koi8-r
too (in general -- with all 8-bit character sets). I think
it is very useful.
I got this idea from Xenix locale implementation.
This extention is even never compiled in, unless you set
setenv STARTUP_LOCALE
before rebuilding crt0.c or corresponding variable in /etc/make.conf
Diffstat (limited to 'lib')
-rw-r--r-- | lib/csu/i386/Makefile | 5 | ||||
-rw-r--r-- | lib/csu/i386/crt0.c | 10 |
2 files changed, 12 insertions, 3 deletions
diff --git a/lib/csu/i386/Makefile b/lib/csu/i386/Makefile index ef1befa..c5728fc 100644 --- a/lib/csu/i386/Makefile +++ b/lib/csu/i386/Makefile @@ -1,7 +1,10 @@ # from: @(#)Makefile 5.6 (Berkeley) 5/22/91 -# $Id: Makefile,v 1.9 1994/03/09 17:12:57 nate Exp $ +# $Id: Makefile,v 1.10 1994/08/22 15:13:41 bde Exp $ CFLAGS+= -DLIBC_SCCS -DDYNAMIC +.if defined(STARTUP_LOCALE) +CFLAGS+= -DSTARTUP_LOCALE +.endif OBJS= crt0.o gcrt0.o c++rt0.o CLEANFILES+= a.out diff --git a/lib/csu/i386/crt0.c b/lib/csu/i386/crt0.c index 8a3c66d..197d612 100644 --- a/lib/csu/i386/crt0.c +++ b/lib/csu/i386/crt0.c @@ -27,7 +27,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: crt0.c,v 1.8 1994/02/13 20:53:11 jkh Exp $ + * $Id: crt0.c,v 1.11 1994/08/05 17:53:07 wollman Exp $ */ @@ -39,6 +39,9 @@ extern void exit(); int _callmain(); #include <sys/param.h> +#ifdef STARTUP_LOCALE +#include <locale.h> +#endif #ifdef DYNAMIC #include <sys/types.h> @@ -173,7 +176,10 @@ asm("eprol:"); #ifdef MCRT0 atexit(_mcleanup); monstartup(&eprol, &etext); -#endif MCRT0 +#endif /* MCRT0 */ +#ifdef STARTUP_LOCALE + (void) setlocale(LC_ALL, ""); +#endif asm ("__callmain:"); /* Defined for the benefit of debuggers */ exit(main(kfp->kargc, argv, environ)); |