From 801722825d94b3bddd94d83887b081c328772147 Mon Sep 17 00:00:00 2001 From: Roberto Ierusalimschy Date: Fri, 9 Feb 1996 17:00:23 -0200 Subject: "lua_check_number" accepts strings convertible to numbers. --- strlib.c | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) (limited to 'strlib.c') diff --git a/strlib.c b/strlib.c index 7f4bab1c..80c412a9 100644 --- a/strlib.c +++ b/strlib.c @@ -3,7 +3,7 @@ ** String library to LUA */ -char *rcs_strlib="$Id: strlib.c,v 1.15 1996/01/22 17:38:57 roberto Exp roberto $"; +char *rcs_strlib="$Id: strlib.c,v 1.16 1996/01/26 12:11:28 roberto Exp roberto $"; #include #include @@ -29,12 +29,20 @@ char *lua_check_string (int numArg, char *funcname) return lua_getstring(o); } -float lua_check_number (int numArg, char *funcname) +double lua_check_number (int numArg, char *funcname) { lua_Object o = lua_getparam(numArg); - if (!lua_isnumber(o)) - lua_arg_error(funcname); - return lua_getnumber(o); + if (lua_isnumber(o)) + return lua_getnumber(o); + else if (lua_isstring(o)) + { + float t; + char c; + if (sscanf(lua_getstring(o), "%f %c",&t, &c) == 1) + return t; + } + lua_arg_error(funcname); + return 0; /* to avoid warnings */ } char *luaI_addchar (int c) @@ -171,7 +179,7 @@ static void str_ascii (void) #define MAX_CONVERTION 2000 #define MAX_FORMAT 50 -static void io_format (void) +static void str_format (void) { int arg = 1; char *strfrmt = lua_check_string(arg++, "format"); @@ -244,5 +252,5 @@ void strlib_open (void) lua_register ("strlower", str_lower); lua_register ("strupper", str_upper); lua_register ("ascii", str_ascii); - lua_register ("format", io_format); + lua_register ("format", str_format); } -- cgit v1.2.3-55-g6feb