Dnia 05-04-2007, czw o godzinie 02:04 -0400, Rich Felker napisał(a): > Just look how much that already happens anyway... the use > of : as a separator in PATH-type strings, the use of spaces to > separate command line arguments, the use of = to separate environment > variable names from values, etc..
Do you propose to replace them with NULs? This would make no sense. A single environment variable can contain a whole PATH-type string. You can’t use NUL to delimit the whole string *and* its components at the same time. Different contexts require different delimiters if a string from one context is to be able to contain a sequence of another one. > Having a character you know can't > occur in text (not just by arbitrary rules, but because it's actually > impossible for it to be passed in a C string) is nice because there's > at least one character you know is always safe to use for app-internal > in-band signalling. Here you contradict yourself: > Notice also how GNU find/xargs use NUL to cleanly > separate filenames, relying on the fact that it could never occur > embedded in a filename. because you show an example where NUL *is* used in text, and it’s used not internally but in communication between two programs. > > The other languages handle all 256 byte values consistently. > > Which ones? All languages besides C, except toy interpreters written in C by some students. > There are plenty of languages which can't handle control characters in > strings well at all, much less NUL. I don’t know any such language. > Because C was there first and C is essentially the only standardized > language. Nonsense. > When your applications run on top of a system build upon C > and POSIX you have to play by the C and POSIX rules. Only during communication with the system. The only influence of C on string representation in other languages is that it’s common to redundantly have NUL stored after the string *in addition* to storing the length explicitly, so in cases the string doesn’t contain NUL itself it’s possible to pass the string to a C function without copying its contents. -- __("< Marcin Kowalczyk \__/ [EMAIL PROTECTED] ^^ http://qrnik.knm.org.pl/~qrczak/ -- Linux-UTF8: i18n of Linux on all levels Archive: http://mail.nl.linux.org/linux-utf8/