summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Kolesa <d.kolesa@osg.samsung.com>2015-04-30 11:50:09 +0100
committerDaniel Kolesa <d.kolesa@osg.samsung.com>2015-05-06 15:05:23 +0100
commit490deb93288d8401bff4f442d67f4df6a054f7c9 (patch)
tree103100685ee35fd53159272d2aded872fc79cfe5
parent3a685d40c0280f930e959b32dedf1b3270e37a6e (diff)
downloadefl-490deb93288d8401bff4f442d67f4df6a054f7c9.tar.gz
elua lib: add API to retrieve lconv from lua
-rw-r--r--src/lib/elua/elua.c47
-rw-r--r--src/lib/elua/elua_private.h3
2 files changed, 49 insertions, 1 deletions
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 <config.h>
#endif
+#include <locale.h>
+
#ifdef ENABLE_NLS
-# include <locale.h>
# include <libintl.h>
# define _(x) dgettext(PACKAGE, x)
#else