commit 252e01e398b09804513f881be4850de79eb5c694
parent 87b0e3d477a8d4af32a2a200a2d8cb2c3aaa05a1
Author: Roberto Ierusalimschy <roberto@inf.puc-rio.br>
Date: Fri, 8 Feb 2002 20:39:34 -0200
`setlocale' may be used to query the current locale
Diffstat:
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/liolib.c b/liolib.c
@@ -5,6 +5,8 @@
*/
+#include <errno.h>
+#include <locale.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -17,11 +19,6 @@
#include "lualib.h"
-#ifndef OLD_ANSI
-#include <errno.h>
-#include <locale.h>
-#endif
-
#ifdef POPEN
@@ -568,9 +565,12 @@ static int io_setloc (lua_State *L) {
LC_NUMERIC, LC_TIME};
static const char *const catnames[] = {"all", "collate", "ctype", "monetary",
"numeric", "time", NULL};
+ const char *l = lua_tostring(L, 1);
int op = luaL_findstring(luaL_opt_string(L, 2, "all"), catnames);
+ luaL_arg_check(L, l || lua_isnil(L, 1) || lua_isnone(L, 1), 1,
+ "string expected");
luaL_arg_check(L, op != -1, 2, "invalid option");
- lua_pushstring(L, setlocale(cat[op], luaL_check_string(L, 1)));
+ lua_pushstring(L, setlocale(cat[op], l));
return 1;
}