diff options
author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2002-05-16 15:39:46 -0300 |
---|---|---|
committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2002-05-16 15:39:46 -0300 |
commit | 955def034814e96f5f8e42def2e47ca6817ef103 (patch) | |
tree | d8eea96980860d1d1e5005ee6ecedb47fa64d594 /lauxlib.c | |
parent | 9c3b3f82fe1b0942183ddeef2e16d60bab4f4c06 (diff) | |
download | lua-955def034814e96f5f8e42def2e47ca6817ef103.tar.gz lua-955def034814e96f5f8e42def2e47ca6817ef103.tar.bz2 lua-955def034814e96f5f8e42def2e47ca6817ef103.zip |
new names for string formating functions
Diffstat (limited to 'lauxlib.c')
-rw-r--r-- | lauxlib.c | 21 |
1 files changed, 7 insertions, 14 deletions
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | ** $Id: lauxlib.c,v 1.69 2002/05/07 17:36:56 roberto Exp roberto $ | 2 | ** $Id: lauxlib.c,v 1.70 2002/05/15 18:57:44 roberto Exp roberto $ |
3 | ** Auxiliary functions for building Lua libraries | 3 | ** Auxiliary functions for building Lua libraries |
4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
5 | */ | 5 | */ |
@@ -43,8 +43,9 @@ LUALIB_API int luaL_argerror (lua_State *L, int narg, const char *extramsg) { | |||
43 | 43 | ||
44 | 44 | ||
45 | LUALIB_API int luaL_typerror (lua_State *L, int narg, const char *tname) { | 45 | LUALIB_API int luaL_typerror (lua_State *L, int narg, const char *tname) { |
46 | luaL_vstr(L, "%s expected, got %s", tname, lua_typename(L, lua_type(L,narg))); | 46 | const char *msg = lua_pushfstring(L, "%s expected, got %s", |
47 | return luaL_argerror(L, narg, lua_tostring(L, -1)); | 47 | tname, lua_typename(L, lua_type(L,narg))); |
48 | return luaL_argerror(L, narg, msg); | ||
48 | } | 49 | } |
49 | 50 | ||
50 | 51 | ||
@@ -142,25 +143,17 @@ LUALIB_API void luaL_opennamedlib (lua_State *L, const char *libname, | |||
142 | } | 143 | } |
143 | 144 | ||
144 | 145 | ||
145 | LUALIB_API void luaL_vstr (lua_State *L, const char *fmt, ...) { | ||
146 | va_list argp; | ||
147 | va_start(argp, fmt); | ||
148 | lua_vpushstr(L, fmt, argp); | ||
149 | va_end(argp); | ||
150 | } | ||
151 | |||
152 | |||
153 | LUALIB_API int luaL_verror (lua_State *L, const char *fmt, ...) { | 146 | LUALIB_API int luaL_verror (lua_State *L, const char *fmt, ...) { |
154 | lua_Debug ar; | 147 | lua_Debug ar; |
148 | const char *msg; | ||
155 | va_list argp; | 149 | va_list argp; |
156 | va_start(argp, fmt); | 150 | va_start(argp, fmt); |
157 | lua_vpushstr(L, fmt, argp); | 151 | msg = lua_pushvfstring(L, fmt, argp); |
158 | va_end(argp); | 152 | va_end(argp); |
159 | if (lua_getstack(L, 1, &ar)) { /* check calling function */ | 153 | if (lua_getstack(L, 1, &ar)) { /* check calling function */ |
160 | lua_getinfo(L, "Snl", &ar); | 154 | lua_getinfo(L, "Snl", &ar); |
161 | if (ar.currentline > 0) | 155 | if (ar.currentline > 0) |
162 | luaL_vstr(L, "%s:%d: %s", | 156 | lua_pushfstring(L, "%s:%d: %s", ar.short_src, ar.currentline, msg); |
163 | ar.short_src, ar.currentline, lua_tostring(L, -1)); | ||
164 | } | 157 | } |
165 | return lua_errorobj(L); | 158 | return lua_errorobj(L); |
166 | } | 159 | } |