Subject: Re: isprint() and isblank()
To: None <tech-userlevel@netbsd.org>
From: Christos Zoulas <christos@zoulas.com>
List: tech-userlevel
Date: 01/20/2001 19:18:47
In article <28634.980017318@coconut.itojun.org>,  <itojun@iijlab.net> wrote:
>
>>: This breaks the ABI.  "Binaries need to be recompiled" is not an acceptable
>>: solution for libc; old binaries must continue to work as they have been.
>
>	IMHO the problem mainly reside in expanded isprint() macro.
>	i don't think this can be fixed by versioning structure.


Yes, it can; you keep the old _ctype_ array and you make a new _ctype13_
one and you use it in <ctype.h>.

Another less intrusive/uglier technique is to change isblank(c) to have
|| ((c) == '\t') with a comment that we will fix it properly in libc for
the next version. But we all know that the next version of libc will not
happen :-)

Unfortunately this has the nasty side effect that c will be evaluated twice,
in isblank().

christos