#include #include 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; }