pgbe_setlocale.c

text/plain

Filename: pgbe_setlocale.c
Type: text/plain
Part: 0
Message: Setting locale per connection
#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;
}