diff options
| author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2005-03-29 13:20:48 -0300 |
|---|---|---|
| committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2005-03-29 13:20:48 -0300 |
| commit | e6e543a534832d7bb5680cee9d3b589a69c5e2cc (patch) | |
| tree | 934ca8b2d6411cad63174f699857f82875940622 | |
| parent | 1c9c8869741897d67b64a27410f3856d34415e87 (diff) | |
| download | lua-e6e543a534832d7bb5680cee9d3b589a69c5e2cc.tar.gz lua-e6e543a534832d7bb5680cee9d3b589a69c5e2cc.tar.bz2 lua-e6e543a534832d7bb5680cee9d3b589a69c5e2cc.zip | |
better control for compatibility code
| -rw-r--r-- | lauxlib.h | 8 | ||||
| -rw-r--r-- | ldo.c | 4 | ||||
| -rw-r--r-- | loadlib.c | 10 | ||||
| -rw-r--r-- | luaconf.h | 31 |
4 files changed, 43 insertions, 10 deletions
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** $Id: lauxlib.h,v 1.73 2004/10/18 12:51:44 roberto Exp roberto $ | 2 | ** $Id: lauxlib.h,v 1.74 2005/01/10 17:31:50 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 | */ |
| @@ -15,6 +15,12 @@ | |||
| 15 | #include "lua.h" | 15 | #include "lua.h" |
| 16 | 16 | ||
| 17 | 17 | ||
| 18 | #if !LUA_COMPAT_GETN | ||
| 19 | #define luaL_getn(L,i) lua_objsize(L, i) | ||
| 20 | #define luaL_setn(L,i,j) ((void)0) /* no op! */ | ||
| 21 | #endif | ||
| 22 | |||
| 23 | |||
| 18 | /* extra error code for `luaL_load' */ | 24 | /* extra error code for `luaL_load' */ |
| 19 | #define LUA_ERRFILE (LUA_ERRERR+1) | 25 | #define LUA_ERRFILE (LUA_ERRERR+1) |
| 20 | 26 | ||
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** $Id: ldo.c,v 2.19 2005/03/18 18:55:09 roberto Exp roberto $ | 2 | ** $Id: ldo.c,v 2.20 2005/03/28 17:17:53 roberto Exp roberto $ |
| 3 | ** Stack and Call structure of Lua | 3 | ** Stack and Call structure of Lua |
| 4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
| 5 | */ | 5 | */ |
| @@ -197,6 +197,7 @@ static StkId adjust_varargs (lua_State *L, int nfixargs, int actual, | |||
| 197 | for (; actual < nfixargs; ++actual) | 197 | for (; actual < nfixargs; ++actual) |
| 198 | setnilvalue(L->top++); | 198 | setnilvalue(L->top++); |
| 199 | } | 199 | } |
| 200 | #if LUA_COMPAT_VARARG | ||
| 200 | if (style != NEWSTYLEVARARG) { /* compatibility with old-style vararg */ | 201 | if (style != NEWSTYLEVARARG) { /* compatibility with old-style vararg */ |
| 201 | int nvar = actual - nfixargs; /* number of extra arguments */ | 202 | int nvar = actual - nfixargs; /* number of extra arguments */ |
| 202 | luaC_checkGC(L); | 203 | luaC_checkGC(L); |
| @@ -207,6 +208,7 @@ static StkId adjust_varargs (lua_State *L, int nfixargs, int actual, | |||
| 207 | setnvalue(luaH_setstr(L, htab, luaS_newliteral(L, "n")), | 208 | setnvalue(luaH_setstr(L, htab, luaS_newliteral(L, "n")), |
| 208 | cast(lua_Number, nvar)); | 209 | cast(lua_Number, nvar)); |
| 209 | } | 210 | } |
| 211 | #endif | ||
| 210 | /* move fixed parameters to final position */ | 212 | /* move fixed parameters to final position */ |
| 211 | fixed = L->top - actual; /* first fixed argument */ | 213 | fixed = L->top - actual; /* first fixed argument */ |
| 212 | base = L->top; /* final position of first argument */ | 214 | base = L->top; /* final position of first argument */ |
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** $Id: loadlib.c,v 1.22 2005/03/18 16:38:43 roberto Exp roberto $ | 2 | ** $Id: loadlib.c,v 1.23 2005/03/29 14:30:16 roberto Exp roberto $ |
| 3 | ** Dynamic library loader for Lua | 3 | ** Dynamic library loader for Lua |
| 4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
| 5 | ** | 5 | ** |
| @@ -315,11 +315,13 @@ static int ll_loadlib (lua_State *L) { | |||
| 315 | static int loader_Lua (lua_State *L) { | 315 | static int loader_Lua (lua_State *L) { |
| 316 | const char *name = luaL_checkstring(L, 1); | 316 | const char *name = luaL_checkstring(L, 1); |
| 317 | const char *fname = luaL_gsub(L, name, ".", LUA_DIRSEP); | 317 | const char *fname = luaL_gsub(L, name, ".", LUA_DIRSEP); |
| 318 | const char *path; | 318 | const char *path = NULL; |
| 319 | #if LUA_COMPAT_PATH | ||
| 319 | /* try first `LUA_PATH' for compatibility */ | 320 | /* try first `LUA_PATH' for compatibility */ |
| 320 | lua_pushstring(L, "LUA_PATH"); | 321 | lua_pushstring(L, "LUA_PATH"); |
| 321 | lua_rawget(L, LUA_GLOBALSINDEX); | 322 | lua_rawget(L, LUA_GLOBALSINDEX); |
| 322 | path = lua_tostring(L, -1); | 323 | path = lua_tostring(L, -1); |
| 324 | #endif | ||
| 323 | if (!path) { | 325 | if (!path) { |
| 324 | lua_pop(L, 1); | 326 | lua_pop(L, 1); |
| 325 | lua_getfield(L, LUA_ENVIRONINDEX, "path"); | 327 | lua_getfield(L, LUA_ENVIRONINDEX, "path"); |
| @@ -505,8 +507,10 @@ LUALIB_API int luaopen_loadlib (lua_State *L) { | |||
| 505 | lua_setfield(L, -2, "preload"); | 507 | lua_setfield(L, -2, "preload"); |
| 506 | /* create `loadlib' function */ | 508 | /* create `loadlib' function */ |
| 507 | lua_pushcfunction(L, ll_loadlib); | 509 | lua_pushcfunction(L, ll_loadlib); |
| 510 | #if LUA_COMPAT_LOADLIB | ||
| 508 | lua_pushvalue(L, -1); | 511 | lua_pushvalue(L, -1); |
| 509 | lua_setfield(L, LUA_GLOBALSINDEX, "loadlib"); /* COMPATIBILITY ONLY!! */ | 512 | lua_setfield(L, LUA_GLOBALSINDEX, "loadlib"); |
| 513 | #endif | ||
| 510 | lua_setfield(L, -2, "loadlib"); | 514 | lua_setfield(L, -2, "loadlib"); |
| 511 | lua_pushvalue(L, LUA_GLOBALSINDEX); | 515 | lua_pushvalue(L, LUA_GLOBALSINDEX); |
| 512 | luaL_openlib(L, NULL, ll_funcs, 0); /* open lib into global table */ | 516 | luaL_openlib(L, NULL, ll_funcs, 0); /* open lib into global table */ |
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** $Id: luaconf.h,v 1.38 2005/03/21 18:12:07 roberto Exp roberto $ | 2 | ** $Id: luaconf.h,v 1.39 2005/03/29 14:30:16 roberto Exp roberto $ |
| 3 | ** Configuration file for Lua | 3 | ** Configuration file for Lua |
| 4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
| 5 | */ | 5 | */ |
| @@ -229,11 +229,32 @@ | |||
| 229 | 229 | ||
| 230 | 230 | ||
| 231 | /* | 231 | /* |
| 232 | ** CHANGE here (undefining both luaL_getn and luaL_setn) if you want | 232 | @@ LUA_COMPAT_GETN controls compatibility with old getn behavior. |
| 233 | ** exact compatibility with the behavior of setn/getn in Lua 5.0. | 233 | ** CHANGE it to 1 if you want exact compatibility with the behavior of |
| 234 | ** setn/getn in Lua 5.0. | ||
| 234 | */ | 235 | */ |
| 235 | #define luaL_getn(L,i) lua_objsize(L, i) | 236 | #define LUA_COMPAT_GETN 0 |
| 236 | #define luaL_setn(L,i,j) ((void)0) /* no op! */ | 237 | |
| 238 | /* | ||
| 239 | @@ LUA_COMPAT_PATH controls compatibility about LUA_PATH. | ||
| 240 | ** CHANGE it to 1 if you want `require' to look for global LUA_PATH | ||
| 241 | ** before checking package.path. | ||
| 242 | */ | ||
| 243 | #define LUA_COMPAT_PATH 0 | ||
| 244 | |||
| 245 | /* | ||
| 246 | @@ LUA_COMPAT_LOADLIB controls compatibility about global loadlib. | ||
| 247 | ** CHANGE it to 1 if you want a global `loadlib' function (otherwise | ||
| 248 | ** the function is only available as `package.loadlib'). | ||
| 249 | */ | ||
| 250 | #define LUA_COMPAT_LOADLIB 1 | ||
| 251 | |||
| 252 | /* | ||
| 253 | @@ LUA_COMPAT_VARARG controls compatibility with old vararg feature. | ||
| 254 | ** CHANGE it to 1 if you want vararg functions that do not use `...' | ||
| 255 | ** to get an `arg' table with their extra arguments. | ||
| 256 | */ | ||
| 257 | #define LUA_COMPAT_VARARG 1 | ||
| 237 | 258 | ||
| 238 | 259 | ||
| 239 | /* | 260 | /* |
