I am not sure what happened, I limited the commit commit but somehow this deleted file got included in a recent commit. It will be removed again shortly.
This directory will generate new LC_CTYPE files. They require a significant update to libc/locale so it is not hooked into the build yet. This the the produce of the clr2def tool upgrade and the generated codeset maps at tools/tools/locale/etc/final-maps.
These are the products of the new convert_map.pl which localedef will use to generate LC_CTYPE. To avoid duplication, these maps will be used where they are (in tools/tools/locale/etc/final-maps) It turns out that the widths.txt file is only used for LC_CTYPE, so it's being moved as well as being removed from share/colldef.
The localedef(1) tool does not allow two symbols to be mapped to the same unicode character. I actually don't know if this is really "wrong", but I had to adjust a couple of character sets that violated this rule: ARMSCII-8 and Big5HKSCS. Neither are present on Illumos so that may explain why localedef(1) wasn't prepared to do anything except throw an error. The CP866 charset had a trailing garbage at the end of the file that localedef didn't like, so I removed it.
I added the capability to generate LC_CTYPE source files (really this is basically extracting a section from the POSIX files) but there was some logic to figure out how to use the least amount of files because some of them are large. I compromised on a scheme that makes two reductions. The first eliminates true duplicates and uses the SAME+= mechanism to create symlinks. However, this leaves still some duplicates because while the output is distinct, the source files are the same (e.g. en_US.ISO8859* uses the same input file as en_US.UTF-8 locale, but the LC_CTYPE products differ. The script identifies those are replaces them with symlinks. So it looks like a lot of files but really it's only about 12 or so. During the actual LC_CTYPE generating, character maps are needed. I added a Illumos tool to do this, which I had to modify. Unlike Illumos, we will pregenerate the maps that the tool (convert_map.pl) produces. I had to spend hours troubleshooting various "invalid" inputs so this is definitely something that should not be repeated in the build.
It turns out that using a commented source file for LC_* file generation really isn't a good idea. In the cldr2def tool's charmap.xls, the low ASCII is transformed to the "Full width" versions, but the first byte just happens to be "#". Yes, that's right, the comment character. Since all comments are either "#" or or followed by a space, I can fix the resulting broken zh_Hans_CN.GB2312 by alterning the grep instruction. However, if we ever have a legitimate single "#" character as input, then this won't work anymore. The Armenian changes are a result to a tool correction that will be commited shortly.
… too. To avoid using userspace headers in the kernel.
…vers. pst(4) goes completely.
Used by ddb and vinum. Remove the inclusion of the <setjmp.h> userspace header.
The regex code does not work with multibyte codesets like UTF-8. In fact, it doesn't even work with single-byte codesets like ISO-8859-1. The comparison blows up at index 128 (the range is 0 to UCHAR_MAX (255). As a temporary workaround, all comparisons will be done in C locale regardless of the environment setting. The regex library needs to be updated to handle all codesets.
FreeBSD did so too after our last upgrade. Shouldn't hurt.
These patches will be sent upstream soon. DragonFly is the only BSD with c++ local support. The exception is "messages". The glibc has gettext functions incorporated to support it, but we can't used libintl because that would require linking it to every c++ executable.
calloc() is part of nmalloc.c as well as of dmalloc.c
These old upgrade entries were removing newly installed locales. Reported-by: swildner
None of the platforms which lead to it being compiled into FreeBSD's libc look too interesting, so remove it. Also remove copies of a number of those functions residing in libkern and stop compiling one of these files into libstand. Libstand also has a quad.h header. Shrink it together to what is actually needed (not much), while here.
…ee() The race is kinda like this: Other thread/netisrN netisrM (so->so_pcb owner) : : getpooltoken(head); : so->so_head = NULL; : : sofree(so); (*) soreference(so); : relpooltoken(head); : (*) sofree(so) frees the socket, since so->so_head is NULL and getpooltoken(head) is not called. Reported-by: dillon@