25#ifdef MON_THOUSANDS_SEP
30#define TRANSLATE_FROM_LANGINFO
38#ifdef TRANSLATE_FROM_LANGINFO
44#ifdef TRANSLATE_FROM_LANGINFO
45#define LCONV_M(is_string, category, name, item) \
46 { is_string, category, offsetof(struct lconv, name), item }
48#define LCONV_M(is_string, category, name, item) \
49 { is_string, category, offsetof(struct lconv, name) }
51#define LCONV_S(c, n, i) LCONV_M(true, c, n, i)
52#define LCONV_C(c, n, i) LCONV_M(false, c, n, i)
111#ifdef TRANSLATE_FROM_LANGINFO
132 if (!(
string =
strdup(
string)))
169 if (!(
string =
strdup(
string)))
320#if defined(TRANSLATE_FROM_LANGINFO)
325#elif defined(HAVE_LOCALECONV_L)
static char * thousands_sep
static char * decimal_point
static char * lc_monetary
static char * lconv_char_member(struct lconv *lconv, int i)
int pg_localeconv_r(const char *lc_monetary, const char *lc_numeric, struct lconv *output)
static int pg_localeconv_copy_members(struct lconv *dst, struct lconv *src, int category)
static char ** lconv_string_member(struct lconv *lconv, int i)
static const struct lconv_member_info table[]
void pg_localeconv_free(struct lconv *lconv)
int pthread_mutex_unlock(pthread_mutex_t *mp)
int pthread_mutex_lock(pthread_mutex_t *mp)
#define PTHREAD_MUTEX_INITIALIZER