pgbe_setlocale.c
text/plain
#include <pgsql/postgres.h>
#include <locale.h>
bool
pgbe_setlocale (void *cat, void *loc)
{
int category;
void *catstr;
if (!loc)
return false;
if (cat)
catstr = VARDATA (cat);
else
catstr = "LC_ALL"; /* default to LC_ALL */
#define CHECKCATEGORY(s, i) if (!strcmp (s, catstr)) category = i;
/* *INDENT-OFF* */
CHECKCATEGORY ("LC_ALL", LC_ALL) else
CHECKCATEGORY ("LC_COLLATE", LC_COLLATE) else
CHECKCATEGORY ("LC_CTYPE", LC_CTYPE) else
CHECKCATEGORY ("LC_MESSAGES", LC_MESSAGES) else
CHECKCATEGORY ("LC_MONETARY", LC_MONETARY) else
CHECKCATEGORY ("LC_NUMERIC", LC_NUMERIC) else
CHECKCATEGORY ("LC_TIME", LC_TIME) else
return false;
/* *INDENT-ON* */
#undef CHECKCATEGORY
return setlocale (category, VARDATA (loc)) ? true : false;
}