From 490deb93288d8401bff4f442d67f4df6a054f7c9 Mon Sep 17 00:00:00 2001 From: Daniel Kolesa Date: Thu, 30 Apr 2015 11:50:09 +0100 Subject: [PATCH] elua lib: add API to retrieve lconv from lua --- src/lib/elua/elua.c | 47 +++++++++++++++++++++++++++++++++++++ src/lib/elua/elua_private.h | 3 ++- 2 files changed, 49 insertions(+), 1 deletion(-) diff --git a/src/lib/elua/elua.c b/src/lib/elua/elua.c index 3e1a715a98..ed5a4e3786 100644 --- a/src/lib/elua/elua.c +++ b/src/lib/elua/elua.c @@ -277,10 +277,57 @@ success: return 1; }; +static int +_elua_get_localeconv(lua_State *L) +{ + struct lconv *lc = localeconv(); + lua_createtable(L, 0, 24); + +#define ELUA_LCF_S(name) \ + lua_pushstring(L, lc->name); \ + lua_setfield(L, -2, #name); + +#define ELUA_LCF_C(name) \ + lua_pushinteger(L, (int)lc->name); \ + lua_setfield(L, -2, #name); + + ELUA_LCF_S(decimal_point); + ELUA_LCF_S(thousands_sep); + ELUA_LCF_S(grouping); + ELUA_LCF_S(int_curr_symbol); + ELUA_LCF_S(currency_symbol); + ELUA_LCF_S(mon_decimal_point); + ELUA_LCF_S(mon_thousands_sep); + ELUA_LCF_S(mon_grouping); + ELUA_LCF_S(positive_sign); + ELUA_LCF_S(negative_sign); + + ELUA_LCF_C(frac_digits); + ELUA_LCF_C(p_cs_precedes); + ELUA_LCF_C(n_cs_precedes); + ELUA_LCF_C(p_sep_by_space); + ELUA_LCF_C(n_sep_by_space); + ELUA_LCF_C(p_sign_posn); + ELUA_LCF_C(n_sign_posn); + ELUA_LCF_C(int_frac_digits); + ELUA_LCF_C(int_p_cs_precedes); + ELUA_LCF_C(int_n_cs_precedes); + ELUA_LCF_C(int_p_sep_by_space); + ELUA_LCF_C(int_n_sep_by_space); + ELUA_LCF_C(int_p_sign_posn); + ELUA_LCF_C(int_n_sign_posn); + +#undef ELUA_LCF_S +#undef ELUA_LCF_C + + return 1; +}; + const luaL_reg gettextlib[] = { { "bind_textdomain", _elua_gettext_bind_textdomain }, { "get_message_language", _elua_get_message_language }, + { "get_localeconv", _elua_get_localeconv }, { NULL, NULL } }; diff --git a/src/lib/elua/elua_private.h b/src/lib/elua/elua_private.h index 53b514e627..01d8e4b1ac 100644 --- a/src/lib/elua/elua_private.h +++ b/src/lib/elua/elua_private.h @@ -5,8 +5,9 @@ # include #endif +#include + #ifdef ENABLE_NLS -# include # include # define _(x) dgettext(PACKAGE, x) #else