diff options
Diffstat (limited to 'ldblib.c')
| -rw-r--r-- | ldblib.c | 26 |
1 files changed, 11 insertions, 15 deletions
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** $Id: ldblib.c,v 1.50 2002/05/06 19:05:10 roberto Exp roberto $ | 2 | ** $Id: ldblib.c,v 1.51 2002/05/07 17:36:56 roberto Exp roberto $ |
| 3 | ** Interface from Lua to its debug API | 3 | ** Interface from Lua to its debug API |
| 4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
| 5 | */ | 5 | */ |
| @@ -54,8 +54,7 @@ static int getinfo (lua_State *L) { | |||
| 54 | switch (*options) { | 54 | switch (*options) { |
| 55 | case 'S': | 55 | case 'S': |
| 56 | settabss(L, "source", ar.source); | 56 | settabss(L, "source", ar.source); |
| 57 | if (ar.source) | 57 | settabss(L, "short_src", ar.short_src); |
| 58 | settabss(L, "short_src", ar.short_src); | ||
| 59 | settabsi(L, "linedefined", ar.linedefined); | 58 | settabsi(L, "linedefined", ar.linedefined); |
| 60 | settabss(L, "what", ar.what); | 59 | settabss(L, "what", ar.what); |
| 61 | break; | 60 | break; |
| @@ -205,31 +204,28 @@ static int errorfb (lua_State *L) { | |||
| 205 | firstpart = 0; | 204 | firstpart = 0; |
| 206 | continue; | 205 | continue; |
| 207 | } | 206 | } |
| 208 | sprintf(buff, "%4d: ", level-1); | 207 | sprintf(buff, "%4d- ", level-1); |
| 209 | lua_pushstring(L, buff); | 208 | lua_pushstring(L, buff); |
| 210 | lua_getinfo(L, "Snl", &ar); | 209 | lua_getinfo(L, "Snl", &ar); |
| 210 | luaL_vstr(L, "%s:", ar.short_src); | ||
| 211 | if (ar.currentline > 0) | ||
| 212 | luaL_vstr(L, "%d:", ar.currentline); | ||
| 211 | switch (*ar.namewhat) { | 213 | switch (*ar.namewhat) { |
| 212 | case 'g': case 'l': /* global, local */ | 214 | case 'g': /* global */ |
| 213 | luaL_vstr(L, "function `%s'", ar.name); | 215 | case 'l': /* local */ |
| 214 | break; | ||
| 215 | case 'f': /* field */ | 216 | case 'f': /* field */ |
| 216 | case 'm': /* method */ | 217 | case 'm': /* method */ |
| 217 | luaL_vstr(L, "method `%s'", ar.name); | 218 | luaL_vstr(L, " in function `%s'", ar.name); |
| 218 | break; | 219 | break; |
| 219 | default: { | 220 | default: { |
| 220 | if (*ar.what == 'm') /* main? */ | 221 | if (*ar.what == 'm') /* main? */ |
| 221 | luaL_vstr(L, "main of %s", ar.short_src); | 222 | luaL_vstr(L, " in main chunk"); |
| 222 | else if (*ar.what == 'C') /* C function? */ | 223 | else if (*ar.what == 'C') /* C function? */ |
| 223 | luaL_vstr(L, "%s", ar.short_src); | 224 | luaL_vstr(L, "%s", ar.short_src); |
| 224 | else | 225 | else |
| 225 | luaL_vstr(L, "function <%d:%s>", ar.linedefined, ar.short_src); | 226 | luaL_vstr(L, " in function <%s:%d>", ar.short_src, ar.linedefined); |
| 226 | ar.source = NULL; /* do not print source again */ | ||
| 227 | } | 227 | } |
| 228 | } | 228 | } |
| 229 | if (ar.currentline > 0) | ||
| 230 | luaL_vstr(L, " at line %d", ar.currentline); | ||
| 231 | if (ar.source) | ||
| 232 | luaL_vstr(L, " [%s]", ar.short_src); | ||
| 233 | lua_pushliteral(L, "\n"); | 229 | lua_pushliteral(L, "\n"); |
| 234 | lua_concat(L, lua_gettop(L)); | 230 | lua_concat(L, lua_gettop(L)); |
| 235 | } | 231 | } |
