Subject: -DNLS now default for libc; namespace cleanup
To: None <tech-userlevel@netbsd.org>
From: J.T. Conklin <jtc@cygnus.com>
List: tech-userlevel
Date: 10/11/1994 16:20:12
There was a lot of support for making -DNLS the default for the C
library, so that change has been checked into the post-1.0 source
tree.

You might remember there was some discussion about ANSI compliance,
but in the end T. William Wells' advocacy paid off, and the first
steps of namespace cleaning have been made.

In particular, neither the message catalog functions nor the error
message string table pollute the ANSI namespace, yet the traditional
UNIX API has been retained.

This was done by renaming the message catalog functions catopen(),
catgets(), and catclose() to __catopen(), __catgets(), and
__catclose().  The error message string table sys_errlist[] and its
companion sys_nerr were also renamed by prepending a double
underscore.

The C library refers to these functions by those names internally.
The traditional UNIX API is provided by either weak references or by
wrapper functions or by wholescale copies of the tables/variables.

Making the namespace clean is a simple (but tedious) task with weak
references.  All we'll need to do is rename some of the functions, and
add a weak_reference() directive in the file.  It is quite a bit
messier without them, since we need separate files for internal and
wrapper functions (otherwise we'll have link time conflicts).

I've started to implement the namespace cleanup assuming that weak
references will not be universally available.  But seeing how ugly it
is turning out to be, I'll be asking the core group and the port
masters to see how reasonable it is to require that all NetBSD ports
have working weak reference support.

	--jtc