#include <string.h>
#include <locale.h>
#include <assert.h>
#include <errno.h>
#include <stdio.h>
#include <nl_types.h>
#include <sys/types.h>
#define INVALID_CAT ((nl_catd)-1)
static void
catopen_verify(boolean_t find)
{
nl_catd cat;
cat = catopen("TEST", NL_CAT_LOCALE);
if (find == B_TRUE) {
assert(cat != INVALID_CAT);
(void) catclose(cat);
} else {
assert(cat == INVALID_CAT);
}
}
int
main(void)
{
locale_t loc;
(void) setlocale(LC_ALL, "C");
catopen_verify(B_TRUE);
(void) setlocale(LC_ALL, "zz_AA.UTF-8");
catopen_verify(B_FALSE);
(void) setlocale(LC_MESSAGES, "C");
catopen_verify(B_TRUE);
(void) setlocale(LC_ALL, "C");
loc = newlocale(LC_MESSAGES_MASK, "zz_AA.UTF-8", NULL);
assert(loc != NULL);
catopen_verify(B_TRUE);
(void) uselocale(loc);
catopen_verify(B_FALSE);
(void) uselocale(LC_GLOBAL_LOCALE);
catopen_verify(B_TRUE);
freelocale(loc);
(void) setlocale(LC_ALL, "zz_AA.UTF-8");
catopen_verify(B_FALSE);
loc = newlocale(LC_MESSAGES_MASK, "C", NULL);
assert(loc != NULL);
catopen_verify(B_FALSE);
(void) uselocale(loc);
catopen_verify(B_TRUE);
return (0);
}