From 42fa305649199712aad1c96beadb944b01277e3f Mon Sep 17 00:00:00 2001 From: Roberto Ierusalimschy Date: Fri, 4 Apr 1997 19:24:51 -0300 Subject: better error messages; better names for some API functions. --- fallback.c | 33 ++++++++++++++++++--------------- fallback.h | 8 ++++---- inout.c | 47 +++++++++++++++++++++++------------------------ iolib.c | 12 ++++++------ lua.c | 6 +++--- lua.h | 30 ++++++++++++++++-------------- mathlib.c | 4 ++-- opcode.c | 41 +++++++++++++++++++++-------------------- opcode.h | 4 +++- strlib.c | 22 +++++++++++----------- 10 files changed, 107 insertions(+), 100 deletions(-) diff --git a/fallback.c b/fallback.c index 6337a1b0..220fefa1 100644 --- a/fallback.c +++ b/fallback.c @@ -3,7 +3,7 @@ ** TecCGraf - PUC-Rio */ -char *rcs_fallback="$Id: fallback.c,v 1.38 1997/04/02 23:04:12 roberto Exp roberto $"; +char *rcs_fallback="$Id: fallback.c,v 2.1 1997/04/03 18:24:23 roberto Exp roberto $"; #include #include @@ -115,7 +115,7 @@ static int luaI_checkevent (char *name, char *list[]) { int e = findstring(name, list); if (e < 0) - luaL_verror("invalid event name `%s'", name); + luaL_verror("`%s' is not a valid event name", name); return e; } @@ -180,17 +180,19 @@ int lua_newtag (void) static void checktag (int tag) { if (!(last_tag <= tag && tag <= 0)) - lua_error("invalid tag"); + luaL_verror("%d is not a valid tag", tag); } -int luaI_userdatatag (int tag) +void luaI_realtag (int tag) { - return (tag >= 0 || (last_tag <= tag && tag < LUA_T_NIL)); + if (!(last_tag <= tag && tag < LUA_T_NIL)) + luaL_verror("tag %d is not result of `newtag'", tag); } void luaI_settag (int tag, TObject *o) { + luaI_realtag(tag); switch (ttype(o)) { case LUA_T_ARRAY: o->value.a->htag = tag; @@ -199,7 +201,7 @@ void luaI_settag (int tag, TObject *o) o->value.ts->tag = tag; break; default: - lua_error("settag: cannot change tag of given object"); + luaL_verror("cannot change tag of a %s", luaI_typenames[-ttype(o)]); } } @@ -223,25 +225,26 @@ TObject *luaI_getim (int tag, IMS event) } -void luaI_getintmethod (void) +void luaI_gettagmethod (void) { - int t = (int)luaL_check_number(1, "getintmethod"); - int e = luaI_checkevent(luaL_check_string(2, "getintmethod"), luaI_eventname); + int t = (int)luaL_check_number(1, "gettagmethod"); + int e = luaI_checkevent(luaL_check_string(2, "gettagmethod"), luaI_eventname); checktag(t); if (validevent(t, e)) luaI_pushobject(&luaI_IMtable[-t].int_method[e]); } -void luaI_setintmethod (void) +void luaI_settagmethod (void) { - int t = (int)luaL_check_number(1, "setintmethod"); - int e = luaI_checkevent(luaL_check_string(2, "setintmethod"), luaI_eventname); + int t = (int)luaL_check_number(1, "settagmethod"); + int e = luaI_checkevent(luaL_check_string(2, "settagmethod"), luaI_eventname); lua_Object func = lua_getparam(3); checktag(t); if (!validevent(t, e)) - lua_error("cannot change this internal method"); - luaL_arg_check(lua_isnil(func) || lua_isfunction(func), "setintmethod", + luaL_verror("cannot change internal method `%s' for tag %d", + luaI_eventname[e], t); + luaL_arg_check(lua_isnil(func) || lua_isfunction(func), "settagmethod", 3, "function expected"); luaI_pushobject(&luaI_IMtable[-t].int_method[e]); luaI_IMtable[-t].int_method[e] = *luaI_Address(func); @@ -352,7 +355,7 @@ void luaI_setfallback (void) replace = typeFB; } else { - lua_error("invalid fallback name"); + luaL_verror("`%s' is not a valid fallback name", name); replace = NULL; /* to avoid warnings */ } if (oldfunc.ttype != LUA_T_NIL) diff --git a/fallback.h b/fallback.h index 1275c6d4..00d23625 100644 --- a/fallback.h +++ b/fallback.h @@ -1,5 +1,5 @@ /* -** $Id: fallback.h,v 1.20 1997/04/02 22:52:42 roberto Exp roberto $ +** $Id: fallback.h,v 1.21 1997/04/02 23:04:12 roberto Exp roberto $ */ #ifndef fallback_h @@ -46,13 +46,13 @@ void luaI_invalidaterefs (void); char *luaI_travfallbacks (int (*fn)(TObject *)); void luaI_settag (int tag, TObject *o); -int luaI_userdatatag (int tag); +void luaI_realtag (int tag); TObject *luaI_getim (int tag, IMS event); #define luaI_getimbyObj(o,e) (luaI_getim(luaI_tag(o),(e))) TObject *luaI_geterrorim (void); int luaI_tag (TObject *o); -void luaI_setintmethod (void); -void luaI_getintmethod (void); +void luaI_settagmethod (void); +void luaI_gettagmethod (void); void luaI_seterrormethod (void); void luaI_initfallbacks (void); diff --git a/inout.c b/inout.c index db48039d..178ccd58 100644 --- a/inout.c +++ b/inout.c @@ -5,7 +5,7 @@ ** Also provides some predefined lua functions. */ -char *rcs_inout="$Id: inout.c,v 2.53 1997/04/02 22:53:35 roberto Exp roberto $"; +char *rcs_inout="$Id: inout.c,v 2.54 1997/04/02 23:04:12 roberto Exp roberto $"; #include #include @@ -28,7 +28,7 @@ Word lua_linenumber; char *lua_parsedfile; -static char *typenames[] = { /* ORDER LUA_T */ +char *luaI_typenames[] = { /* ORDER LUA_T */ "userdata", "line", "cmark", "mark", "function", "function", "table", "string", "number", "nil", NULL @@ -95,8 +95,7 @@ void lua_openstring (char *s) char buff[SIZE_PREF+25]; lua_setinput(stringinput); st = s; - strcpy(buff, "(dostring) >> "); - strncat(buff, s, SIZE_PREF); + sprintf(buff, "(dostring) >> %.20s", s); if (strlen(s) > SIZE_PREF) strcat(buff, "..."); lua_parsedfile = luaI_createfixedstring(buff)->str; } @@ -148,7 +147,7 @@ static char *tostring (lua_Object obj) return lua_getstring(obj); case LUA_T_ARRAY: case LUA_T_FUNCTION: case LUA_T_CFUNCTION: case LUA_T_NIL: - return typenames[-ttype(o)]; + return luaI_typenames[-ttype(o)]; case LUA_T_USERDATA: { char *buff = luaI_buffer(100); int size = o->value.ts->size; @@ -181,7 +180,7 @@ static void luaI_type (void) { lua_Object o = lua_getparam(1); luaL_arg_check(o != LUA_NOOBJECT, "type", 1, "no argument"); - lua_pushstring(typenames[-ttype(luaI_Address(o))]); + lua_pushstring(luaI_typenames[-ttype(luaI_Address(o))]); lua_pushnumber(lua_tag(o)); } @@ -219,12 +218,12 @@ static void luaI_setglobal (void) lua_pushobject(value); /* return given value */ } -static void luaI_basicsetglobal (void) +static void luaI_rawsetglobal (void) { lua_Object value = lua_getparam(2); - luaL_arg_check(value != LUA_NOOBJECT, "basicsetglobal", 2, NULL); + luaL_arg_check(value != LUA_NOOBJECT, "rawsetglobal", 2, NULL); lua_pushobject(value); - lua_basicsetglobal(luaL_check_string(1, "basicsetglobal")); + lua_rawsetglobal(luaL_check_string(1, "rawsetglobal")); lua_pushobject(value); /* return given value */ } @@ -233,9 +232,9 @@ static void luaI_getglobal (void) lua_pushobject(lua_getglobal(luaL_check_string(1, "getglobal"))); } -static void luaI_basicgetglobal (void) +static void luaI_rawgetglobal (void) { - lua_pushobject(lua_basicgetglobal(luaL_check_string(1, "basicgetglobal"))); + lua_pushobject(lua_rawgetglobal(luaL_check_string(1, "rawgetglobal"))); } static void luatag (void) @@ -291,28 +290,28 @@ static void luaIl_newtag (void) lua_pushnumber(lua_newtag()); } -static void basicindex (void) +static void rawgettable (void) { lua_Object t = lua_getparam(1); lua_Object i = lua_getparam(2); - luaL_arg_check(t != LUA_NOOBJECT, "basicindex", 1, NULL); - luaL_arg_check(i != LUA_NOOBJECT, "basicindex", 2, NULL); + luaL_arg_check(t != LUA_NOOBJECT, "rawgettable", 1, NULL); + luaL_arg_check(i != LUA_NOOBJECT, "rawgettable", 2, NULL); lua_pushobject(t); lua_pushobject(i); - lua_pushobject(lua_basicindex()); + lua_pushobject(lua_rawgettable()); } -static void basicstoreindex (void) +static void rawsettable (void) { lua_Object t = lua_getparam(1); lua_Object i = lua_getparam(2); lua_Object v = lua_getparam(3); luaL_arg_check(t != LUA_NOOBJECT && i != LUA_NOOBJECT && v != LUA_NOOBJECT, - "basicindex", 0, NULL); + "rawsettable", 0, NULL); lua_pushobject(t); lua_pushobject(i); lua_pushobject(v); - lua_basicstoreindex(); + lua_rawsettable(); } @@ -325,10 +324,6 @@ static struct { lua_CFunction func; } int_funcs[] = { {"assert", luaI_assert}, - {"basicgetglobal", luaI_basicgetglobal}, - {"basicindex", basicindex}, - {"basicsetglobal", luaI_basicsetglobal}, - {"basicstoreindex", basicstoreindex}, {"call", luaI_call}, {"dofile", lua_internaldofile}, {"dostring", lua_internaldostring}, @@ -338,11 +333,15 @@ static struct { {"next", lua_next}, {"nextvar", luaI_nextvar}, {"print", luaI_print}, + {"rawgetglobal", luaI_rawgetglobal}, + {"rawgettable", rawgettable}, + {"rawsetglobal", luaI_rawsetglobal}, + {"rawsettable", rawsettable}, {"seterrormethod", luaI_seterrormethod}, {"setfallback", luaI_setfallback}, {"setglobal", luaI_setglobal}, - {"setintmethod", luaI_setintmethod}, - {"getintmethod", luaI_getintmethod}, + {"settagmethod", luaI_settagmethod}, + {"gettagmethod", luaI_gettagmethod}, {"settag", luaIl_settag}, {"tonumber", lua_obj2number}, {"tostring", luaI_tostring}, diff --git a/iolib.c b/iolib.c index 1a2a9009..19a832f2 100644 --- a/iolib.c +++ b/iolib.c @@ -33,7 +33,7 @@ static void pushresult (int i) #ifndef NOSTRERROR lua_pushstring(strerror(errno)); #else - lua_pushstring("system unable to define the error"); + lua_pushstring("O.S. unable to define the error"); #endif } } @@ -124,7 +124,7 @@ static void io_read (void) } else if (*p == '}') { if (inskip == 0) - lua_error("unbalanced `{...}' in read pattern"); + lua_error("unbalanced braces in read pattern"); inskip--; p++; } @@ -248,7 +248,7 @@ static void lua_printstack (FILE *f) fprintf(f, "function %s", name); break; case 'f': - fprintf(f, "`%s' fallback", name); + fprintf(f, "`%s' iternal method", name); break; default: { char *filename; @@ -289,7 +289,7 @@ static void getbyte (void) else { i--; if (0 <= i && i < lua_getbindatasize(ud)) - lua_pushnumber(*(((char *)lua_getbinarydata(ud))+i)); + lua_pushnumber(*(((char *)lua_getbindata(ud))+i)); else lua_pushnil(); } @@ -307,7 +307,7 @@ static void createuserdata (void) lua_beginblock(); lua_pushobject(t); lua_pushnumber(i+1); - o = lua_basicindex(); + o = lua_rawgettable(); if (lua_isnil(o)) { lua_endblock(); break; @@ -317,7 +317,7 @@ static void createuserdata (void) luaI_addchar(lua_getnumber(o)); lua_endblock(); } - lua_pushbinarydata(luaI_addchar(0), i, tag); + lua_pushbindata(luaI_addchar(0), i, tag); } diff --git a/lua.c b/lua.c index d5622d86..382b77bb 100644 --- a/lua.c +++ b/lua.c @@ -3,7 +3,7 @@ ** Linguagem para Usuarios de Aplicacao */ -char *rcs_lua="$Id: lua.c,v 1.13 1996/07/06 20:20:35 roberto Exp roberto $"; +char *rcs_lua="$Id: lua.c,v 1.14 1996/09/24 17:30:28 roberto Exp roberto $"; #include #include @@ -59,8 +59,8 @@ int main (int argc, char *argv[]) result = lua_dofile (argv[i]); if (result) { if (result == 2) { - fprintf(stderr, "lua: cannot execute file `%s' - ", argv[i]); - perror(NULL); + fprintf(stderr, "lua: cannot execute file "); + perror(argv[i]); } return 1; } diff --git a/lua.h b/lua.h index 2c07125f..4ef9f60c 100644 --- a/lua.h +++ b/lua.h @@ -2,7 +2,7 @@ ** LUA - An Extensible Extension Language ** TeCGraf: Grupo de Tecnologia em Computacao Grafica, PUC-Rio, Brazil ** e-mail: lua@tecgraf.puc-rio.br -** $Id: lua.h,v 3.42 1997/04/02 23:04:12 roberto Exp roberto $ +** $Id: lua.h,v 4.1 1997/04/03 18:26:08 roberto Exp roberto $ */ @@ -19,9 +19,8 @@ typedef void (*lua_CFunction) (void); typedef unsigned int lua_Object; -lua_Object lua_setfallback (char *event, lua_CFunction fallback); -void lua_setintmethod (int tag, char *event, lua_CFunction method); -void lua_getintmethod (int tag, char *event); /* out: method */ +void lua_settagmethod (int tag, char *event, lua_CFunction method); +void lua_gettagmethod (int tag, char *event); /* out: method */ void lua_seterrormethod (lua_CFunction method); int lua_newtag (void); @@ -53,26 +52,26 @@ int lua_isfunction (lua_Object object); float lua_getnumber (lua_Object object); char *lua_getstring (lua_Object object); lua_CFunction lua_getcfunction (lua_Object object); -void *lua_getbinarydata (lua_Object object); +void *lua_getbindata (lua_Object object); int lua_getbindatasize (lua_Object object); void lua_pushnil (void); void lua_pushnumber (float n); void lua_pushstring (char *s); void lua_pushcfunction (lua_CFunction fn); -void lua_pushbinarydata (void *buff, int size, int tag); +void lua_pushbindata (void *buff, int size, int tag); void lua_pushusertag (void *u, int tag); void lua_pushobject (lua_Object object); lua_Object lua_getglobal (char *name); -lua_Object lua_basicgetglobal (char *name); +lua_Object lua_rawgetglobal (char *name); void lua_setglobal (char *name); /* In: value */ -void lua_basicsetglobal (char *name); /* In: value */ +void lua_rawsetglobal (char *name); /* In: value */ -void lua_storesubscript (void); /* In: table, index, value */ -void lua_basicstoreindex (void); /* In: table, index, value */ -lua_Object lua_getsubscript (void); /* In: table, index */ -lua_Object lua_basicindex (void); /* In: table, index */ +void lua_settable (void); /* In: table, index, value */ +void lua_rawsettable (void); /* In: table, index, value */ +lua_Object lua_gettable (void); /* In: table, index */ +lua_Object lua_rawgettable (void); /* In: table, index */ int lua_tag (lua_Object object); @@ -98,6 +97,8 @@ lua_Object lua_createtable (void); /* =============================================================== */ /* for compatibility with old versions. Avoid using these macros/functions */ +lua_Object lua_setfallback (char *event, lua_CFunction fallback); + #define lua_storeglobal(n) lua_setglobal(n) #define lua_type(o) (lua_tag(o)) @@ -111,9 +112,10 @@ void *lua_getuserdata (lua_Object object); #define lua_pushliteral(o) lua_pushstring(o) -#define lua_getindexed(o,n) (lua_pushobject(o), lua_pushnumber(n), lua_getsubscript()) -#define lua_getfield(o,f) (lua_pushobject(o), lua_pushliteral(f), lua_getsubscript()) +#define lua_getindexed(o,n) (lua_pushobject(o), lua_pushnumber(n), lua_gettable()) +#define lua_getfield(o,f) (lua_pushobject(o), lua_pushliteral(f), lua_gettable()) #define lua_copystring(o) (strdup(lua_getstring(o))) +#define lua_getsubscript lua_gettable #endif diff --git a/mathlib.c b/mathlib.c index 16d2a815..7a74fe14 100644 --- a/mathlib.c +++ b/mathlib.c @@ -3,7 +3,7 @@ ** Mathematics library to LUA */ -char *rcs_mathlib="$Id: mathlib.c,v 1.20 1997/03/18 15:30:50 roberto Exp roberto $"; +char *rcs_mathlib="$Id: mathlib.c,v 1.21 1997/03/21 18:37:28 roberto Exp roberto $"; #include #include @@ -210,6 +210,6 @@ static struct luaL_reg mathlib[] = { void mathlib_open (void) { luaL_openlib(mathlib, (sizeof(mathlib)/sizeof(mathlib[0]))); - lua_setintmethod(0, "pow", math_pow); + lua_settagmethod(0, "pow", math_pow); } diff --git a/opcode.c b/opcode.c index 590c0ef7..2b1c02f8 100644 --- a/opcode.c +++ b/opcode.c @@ -3,7 +3,7 @@ ** TecCGraf - PUC-Rio */ -char *rcs_opcode="$Id: opcode.c,v 3.93 1997/04/02 23:04:12 roberto Exp roberto $"; +char *rcs_opcode="$Id: opcode.c,v 4.1 1997/04/03 18:27:06 roberto Exp roberto $"; #include #include @@ -19,6 +19,7 @@ char *rcs_opcode="$Id: opcode.c,v 3.93 1997/04/02 23:04:12 roberto Exp roberto $ #include "lua.h" #include "fallback.h" #include "undump.h" +#include "auxlib.h" #define tonumber(o) ((ttype(o) != LUA_T_NUMBER) && (lua_tonumber(o) != 0)) #define tostring(o) ((ttype(o) != LUA_T_STRING) && (lua_tostring(o) != 0)) @@ -340,11 +341,11 @@ static void pushsubscript (void) } -lua_Object lua_basicindex (void) +lua_Object lua_rawgettable (void) { adjustC(2); if (ttype(top-2) != LUA_T_ARRAY) - lua_error("indexed expression not a table in basic indexing"); + lua_error("indexed expression not a table in raw gettable"); else { TObject *h = lua_hashget(avalue(top-2), top-1); --top; @@ -360,7 +361,7 @@ lua_Object lua_basicindex (void) /* ** Function to store indexed based on values at the top -** mode = 0: basic store (without internal methods) +** mode = 0: raw store (without internal methods) ** mode = 1: normal store (with internal methods) ** mode = 2: "deep stack" store (with internal methods) */ @@ -656,14 +657,14 @@ lua_Object lua_setfallback (char *name, lua_CFunction fallback) return (Ref(top-1)); } -void lua_getintmethod (int tag, char *event) +void lua_gettagmethod (int tag, char *event) { lua_pushnumber(tag); lua_pushstring(event); - do_unprotectedrun(luaI_getintmethod, 2, 1); + do_unprotectedrun(luaI_gettagmethod, 2, 1); } -void lua_setintmethod (int tag, char *event, lua_CFunction method) +void lua_settagmethod (int tag, char *event, lua_CFunction method) { lua_pushnumber(tag); lua_pushstring(event); @@ -671,7 +672,7 @@ void lua_setintmethod (int tag, char *event, lua_CFunction method) lua_pushcfunction (method); else lua_pushnil(); - do_unprotectedrun(luaI_setintmethod, 3, 1); + do_unprotectedrun(luaI_settagmethod, 3, 1); } void lua_seterrormethod (lua_CFunction method) @@ -685,7 +686,7 @@ void lua_seterrormethod (lua_CFunction method) ** API: receives on the stack the table and the index. ** returns the value. */ -lua_Object lua_getsubscript (void) +lua_Object lua_gettable (void) { adjustC(2); pushsubscript(); @@ -729,13 +730,13 @@ void lua_settag (int tag) /* ** API: receives on the stack the table, the index, and the new value. */ -void lua_storesubscript (void) +void lua_settable (void) { adjustC(3); storesubscript(top-3, 1); } -void lua_basicstoreindex (void) +void lua_rawsettable (void) { adjustC(3); storesubscript(top-3, 0); @@ -825,7 +826,7 @@ char *lua_getstring (lua_Object object) else return (svalue(Address(object))); } -void *lua_getbinarydata (lua_Object object) +void *lua_getbindata (lua_Object object) { if (object == LUA_NOOBJECT || ttype(Address(object)) != LUA_T_USERDATA) return NULL; @@ -834,7 +835,7 @@ void *lua_getbinarydata (lua_Object object) void *lua_getuserdata (lua_Object object) { - void *add = lua_getbinarydata(object); + void *add = lua_getbindata(object); if (add == NULL) return NULL; else return *(void **)add; } @@ -875,7 +876,7 @@ void lua_pushref (int ref) { TObject *o = luaI_getref(ref); if (o == NULL) - lua_error("access to invalid (possibly garbage collected) reference"); + lua_error("access to invalid reference (possibly garbage collected)"); luaI_pushobject(o); } @@ -900,7 +901,7 @@ lua_Object lua_getglobal (char *name) } -lua_Object lua_basicgetglobal (char *name) +lua_Object lua_rawgetglobal (char *name) { adjustC(0); *top = lua_table[luaI_findsymbolbyname(name)].object; @@ -938,7 +939,7 @@ void lua_setglobal (char *name) setglobal(luaI_findsymbolbyname(name)); } -void lua_basicsetglobal (char *name) +void lua_rawsetglobal (char *name) { Word n = luaI_findsymbolbyname(name); adjustC(1); @@ -989,13 +990,13 @@ void lua_pushcfunction (lua_CFunction fn) incr_top; } -void lua_pushbinarydata (void *buff, int size, int tag) +void lua_pushbindata (void *buff, int size, int tag) { if (buff == NULL) ttype(top) = LUA_T_NIL; else { - if (!luaI_userdatatag(tag)) - lua_error("invalid tag for userdata"); + if (tag < 0) + luaI_realtag(tag); tsvalue(top) = luaI_createuserdata(buff, size, tag); ttype(top) = LUA_T_USERDATA; } @@ -1007,7 +1008,7 @@ void lua_pushbinarydata (void *buff, int size, int tag) */ void lua_pushusertag (void *u, int tag) { - lua_pushbinarydata(&u, sizeof(void *), tag); + lua_pushbindata(&u, sizeof(void *), tag); } /* diff --git a/opcode.h b/opcode.h index 89490262..957310f3 100644 --- a/opcode.h +++ b/opcode.h @@ -1,6 +1,6 @@ /* ** TeCGraf - PUC-Rio -** $Id: opcode.h,v 3.30 1997/03/20 19:20:43 roberto Exp roberto $ +** $Id: opcode.h,v 3.31 1997/03/31 14:02:58 roberto Exp roberto $ */ #ifndef opcode_h @@ -35,6 +35,8 @@ typedef enum #define NUM_TYPES 10 +extern char *luaI_typenames[]; + typedef enum { /* name parm before after side effect -----------------------------------------------------------------------------*/ diff --git a/strlib.c b/strlib.c index 8d9c00d8..8b57e391 100644 --- a/strlib.c +++ b/strlib.c @@ -3,7 +3,7 @@ ** String library to LUA */ -char *rcs_strlib="$Id: strlib.c,v 1.37 1997/03/18 15:30:50 roberto Exp roberto $"; +char *rcs_strlib="$Id: strlib.c,v 1.38 1997/03/26 22:23:15 roberto Exp roberto $"; #include #include @@ -84,7 +84,7 @@ static void str_tok (void) lua_pushobject(t); lua_pushnumber(i++); lua_pushstring(s1); - lua_storesubscript(); + lua_settable(); s1 = NULL; /* prepare for next strtok */ } lua_pushobject(t); @@ -121,10 +121,10 @@ static void str_sub (void) */ static void str_lower (void) { - char *s = luaL_check_string(1, "strlower"); + char *s; luaI_emptybuff(); - while (*s) - luaI_addchar(tolower((unsigned char)*s++)); + for (s = luaL_check_string(1, "strlower"); *s; s++) + luaI_addchar(tolower((unsigned char)*s)); lua_pushstring(luaI_addchar(0)); } @@ -133,10 +133,10 @@ static void str_lower (void) */ static void str_upper (void) { - char *s = luaL_check_string(1, "strupper"); + char *s; luaI_emptybuff(); - while (*s) - luaI_addchar(toupper((unsigned char)*s++)); + for (s = luaL_check_string(1, "strupper"); *s; s++) + luaI_addchar(toupper((unsigned char)*s)); lua_pushstring(luaI_addchar(0)); } @@ -177,11 +177,11 @@ char *luaL_item_end (char *p) switch (*p++) { case '\0': return p-1; case ESC: - if (*p == 0) lua_error("incorrect pattern"); + if (*p == 0) luaL_verror("incorrect pattern (ends with `%c')", ESC); return p+1; case '[': { char *end = bracket_end(p); - if (end == NULL) lua_error("incorrect pattern"); + if (end == NULL) lua_error("incorrect pattern (missing `]')"); return end+1; } default: @@ -492,7 +492,7 @@ static void str_format (void) char *initf = strfrmt-1; /* -1 to include % */ strfrmt = match(strfrmt, "[-+ #]*(%d*)%.?(%d*)", 0); if (capture[0].len > 3 || capture[1].len > 3) /* < 1000? */ - lua_error("invalid format (width/precision too long)"); + lua_error("invalid format (width or precision too long)"); strncpy(form, initf, strfrmt-initf+1); /* +1 to include convertion */ form[strfrmt-initf+1] = 0; buff = openspace(1000); /* to store the formated value */ -- cgit v1.2.3-55-g6feb