Hi folks,
when looking at locale(1) former output formatting one could notice that
setlocale(LC_ALL, NULL) look "weird". It encodes the whole current
locale configuration so that it can be reused later. POSIX doesn't say
much - afaik - about the formatting, and that is a point where we differ
from, for example, the glibc.
So if you know of a program that messes up with the string returned by
the above it is probably wrong. A grep -sR 'setlocale *(LC_ALL, *NULL)'
over the full ports source tree could prove useful.
Example of setlocale(LC_ALL, NULL) output and toy program:
C/fr_FR.UTF-8/C/C/C/C
#include <locale.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int
main(void)
{
char *s;
setlocale(LC_ALL, "");
s = strdup(setlocale(LC_ALL, NULL));
printf("current locales values: %s\n", s);
setlocale(LC_CTYPE, "fr_FR.ISO8859-1");
printf("LC_CTYPE modified: %s\n", setlocale(LC_ALL, NULL));
setlocale(LC_ALL, s);
printf("locales reset: %s\n", setlocale(LC_ALL, NULL));
free(s);
return 0;
}