Unified · Split
| @@ -9,7 +9,7 @@ For details and rationale, see http://www.lua.org/license.html . · 8 unmodified lines | ||
| 9 | 9 | |
| 10 | 10 | =============================================================================== |
| 11 | 11 | |
| 12 | −Copyright (C) 1994-2006 Lua.org, PUC-Rio. | |
| 12 | +Copyright (C) 1994-2007 Lua.org, PUC-Rio. | |
| 13 | 13 | |
| 14 | 14 | Permission is hereby granted, free of charge, to any person obtaining a copy |
| 15 | 15 | of this software and associated documentation files (the "Software"), to deal |
| @@ -14,7 +14,7 @@ HISTORY for Lua 5.1 · 13 unmodified lines | ||
| 14 | 14 | API: |
| 15 | 15 | + new functions: lua_createtable, lua_get(set)field, lua_push(to)integer. |
| 16 | 16 | + user supplies memory allocator (lua_open becomes lua_newstate). |
| 17 | − + luaopen_* functionst must be called through Lua. | |
| 17 | + + luaopen_* functions must be called through Lua. | |
| 18 | 18 | Implementation: |
| 19 | 19 | + new configuration scheme via luaconf.h. |
| 20 | 20 | + incremental garbage collection. |
| @@ -8,7 +8,10 @@ INSTALL for Lua 5.1 · 7 unmodified lines | ||
| 8 | 8 | Building Lua on Unix systems should be very easy. First do "make" and |
| 9 | 9 | see if your platform is listed. If so, just do "make xxx", where xxx |
| 10 | 10 | is your platform name. The platforms currently supported are: |
| 11 | − ansi bsd generic linux macosx mingw posix solaris | |
| 11 | + aix ansi bsd freebsd generic linux macosx mingw posix solaris | |
| 12 | + | |
| 13 | + If your platform is not listed, try the closest one or posix, generic, | |
| 14 | + ansi, in this order. | |
| 12 | 15 | |
| 13 | 16 | See below for customization instructions and for instructions on how |
| 14 | 17 | to build with other Windows compilers. |
| @@ -81,8 +84,8 @@ INSTALL for Lua 5.1 · 66 unmodified lines | ||
| 81 | 84 | |
| 82 | 85 | compiler: library, luac.c print.c |
| 83 | 86 | |
| 84 | − If you use Visual Studio .NET, you can use etc/luavs.bat | |
| 85 | − in its "Command Prompt". | |
| 87 | + If you use Visual Studio .NET, you can use etc/luavs.bat in its | |
| 88 | + "Command Prompt". | |
| 86 | 89 | |
| 87 | 90 | If all you want is to build the Lua interpreter, you may put all .c files |
| 88 | 91 | in a single project, except for luac.c and print.c. Or just use etc/all.c. |
| @@ -890,8 +890,8 @@ function definitions are explained in <a href="#2.5.9">§2.5.9</a>; · 889 unmodified lines | ||
| 890 | 890 | function calls are explained in <a href="#2.5.8">§2.5.8</a>; |
| 891 | 891 | table constructors are explained in <a href="#2.5.7">§2.5.7</a>. |
| 892 | 892 | Vararg expressions, |
| 893 | −denoted by three dots ('<code>...</code>'), can only be used inside | |
| 894 | −vararg functions; | |
| 893 | +denoted by three dots ('<code>...</code>'), can only be used when | |
| 894 | +directly inside a vararg function; | |
| 895 | 895 | they are explained in <a href="#2.5.9">§2.5.9</a>. |
| 896 | 896 | |
| 897 | 897 | |
| @@ -3222,7 +3222,7 @@ and returns this address. · 2324 unmodified lines | ||
| 3222 | 3222 | |
| 3223 | 3223 | |
| 3224 | 3224 | <p> |
| 3225 | −Userdata represents C values in Lua. | |
| 3225 | +Userdata represent C values in Lua. | |
| 3226 | 3226 | A <em>full userdata</em> represents a block of memory. |
| 3227 | 3227 | It is an object (like a table): |
| 3228 | 3228 | you must create it, it can have its own metatable, |
| @@ -3498,7 +3498,7 @@ Pushes a light userdata onto the stack. · 269 unmodified lines | ||
| 3498 | 3498 | |
| 3499 | 3499 | |
| 3500 | 3500 | <p> |
| 3501 | −Userdata represents C values in Lua. | |
| 3501 | +Userdata represent C values in Lua. | |
| 3502 | 3502 | A <em>light userdata</em> represents a pointer. |
| 3503 | 3503 | It is a value (like a number): |
| 3504 | 3504 | you do not create it, it has no individual metatable, |
| @@ -8511,7 +8511,7 @@ Here is the complete syntax of Lua in extended BNF. · 5006 unmodified lines | ||
| 8511 | 8511 | <HR> |
| 8512 | 8512 | <SMALL> |
| 8513 | 8513 | Last update: |
| 8514 | −Fri Mar 23 14:37:09 BRT 2007 | |
| 8514 | +Mon Mar 26 12:59:26 BRT 2007 | |
| 8515 | 8515 | </SMALL> |
| 8516 | 8516 | <!-- |
| 8517 | 8517 | Last change: ready for Lua 5.1.2 |
| @@ -1,5 +1,5 @@ | ||
| 1 | 1 | /* |
| 2 | −** $Id: loadlib.c,v 1.52 2006/04/10 18:27:23 roberto Exp $ | |
| 2 | +** $Id: loadlib.c,v 1.54a 2006/07/03 20:16:49 roberto Exp $ | |
| 3 | 3 | ** Dynamic library loader for Lua |
| 4 | 4 | ** See Copyright Notice in lua.h |
| 5 | 5 | ** |
| @@ -16,9 +16,9 @@ · 10 unmodified lines | ||
| 16 | 16 | #define loadlib_c |
| 17 | 17 | #define LUA_LIB |
| 18 | 18 | |
| 19 | −#include "lauxlib.h" | |
| 20 | −#include "lobject.h" | |
| 21 | 19 | #include "lua.h" |
| 20 | + | |
| 21 | +#include "lauxlib.h" | |
| 22 | 22 | #include "lualib.h" |
| 23 | 23 | |
| 24 | 24 | |
| @@ -356,15 +356,16 @@ static const char *findfile (lua_State *L, const char *name, · 331 unmodified lines | ||
| 356 | 356 | path = lua_tostring(L, -1); |
| 357 | 357 | if (path == NULL) |
| 358 | 358 | luaL_error(L, LUA_QL("package.%s") " must be a string", pname); |
| 359 | − lua_pushstring(L, ""); /* error accumulator */ | |
| 359 | + lua_pushliteral(L, ""); /* error accumulator */ | |
| 360 | 360 | while ((path = pushnexttemplate(L, path)) != NULL) { |
| 361 | 361 | const char *filename; |
| 362 | 362 | filename = luaL_gsub(L, lua_tostring(L, -1), LUA_PATH_MARK, name); |
| 363 | + lua_remove(L, -2); /* remove path template */ | |
| 363 | 364 | if (readable(filename)) /* does file exist and is readable? */ |
| 364 | 365 | return filename; /* return that file name */ |
| 365 | − lua_pop(L, 2); /* remove path template and file name */ | |
| 366 | − luaO_pushfstring(L, "\n\tno file " LUA_QS, filename); | |
| 367 | − lua_concat(L, 2); | |
| 366 | + lua_pushfstring(L, "\n\tno file " LUA_QS, filename); | |
| 367 | + lua_remove(L, -2); /* remove file name */ | |
| 368 | + lua_concat(L, 2); /* add entry to possible error message */ | |
| 368 | 369 | } |
| 369 | 370 | return NULL; /* not found */ |
| 370 | 371 | } |
| @@ -423,8 +424,8 @@ static int loader_Croot (lua_State *L) { · 52 unmodified lines | ||
| 423 | 424 | funcname = mkfuncname(L, name); |
| 424 | 425 | if ((stat = ll_loadfunc(L, filename, funcname)) != 0) { |
| 425 | 426 | if (stat != ERRFUNC) loaderror(L, filename); /* real error */ |
| 426 | − luaO_pushfstring(L, "\n\tno module " LUA_QS " in file " LUA_QS, | |
| 427 | − name, filename); | |
| 427 | + lua_pushfstring(L, "\n\tno module " LUA_QS " in file " LUA_QS, | |
| 428 | + name, filename); | |
| 428 | 429 | return 1; /* function not found */ |
| 429 | 430 | } |
| 430 | 431 | return 1; |
| @@ -438,7 +439,7 @@ static int loader_preload (lua_State *L) { · 7 unmodified lines | ||
| 438 | 439 | luaL_error(L, LUA_QL("package.preload") " must be a table"); |
| 439 | 440 | lua_getfield(L, -1, name); |
| 440 | 441 | if (lua_isnil(L, -1)) /* not found? */ |
| 441 | − luaO_pushfstring(L, "\n\tno field package.preload['%s']", name); | |
| 442 | + lua_pushfstring(L, "\n\tno field package.preload['%s']", name); | |
| 442 | 443 | return 1; |
| 443 | 444 | } |
| 444 | 445 | |
| @@ -462,7 +463,7 @@ static int ll_require (lua_State *L) { · 17 unmodified lines | ||
| 462 | 463 | lua_getfield(L, LUA_ENVIRONINDEX, "loaders"); |
| 463 | 464 | if (!lua_istable(L, -1)) |
| 464 | 465 | luaL_error(L, LUA_QL("package.loaders") " must be a table"); |
| 465 | − lua_pushstring(L, ""); /* error message accumulator */ | |
| 466 | + lua_pushliteral(L, ""); /* error message accumulator */ | |
| 466 | 467 | for (i=1; ; i++) { |
| 467 | 468 | lua_rawgeti(L, -2, i); /* get a loader */ |
| 468 | 469 | if (lua_isnil(L, -1)) |
| @@ -646,8 +647,8 @@ LUALIB_API int luaopen_package (lua_State *L) { · 177 unmodified lines | ||
| 646 | 647 | setpath(L, "path", LUA_PATH, LUA_PATH_DEFAULT); /* set field `path' */ |
| 647 | 648 | setpath(L, "cpath", LUA_CPATH, LUA_CPATH_DEFAULT); /* set field `cpath' */ |
| 648 | 649 | /* store config information */ |
| 649 | − lua_pushstring(L, LUA_DIRSEP "\n" LUA_PATHSEP "\n" LUA_PATH_MARK "\n" | |
| 650 | − LUA_EXECDIR "\n" LUA_IGMARK); | |
| 650 | + lua_pushliteral(L, LUA_DIRSEP "\n" LUA_PATHSEP "\n" LUA_PATH_MARK "\n" | |
| 651 | + LUA_EXECDIR "\n" LUA_IGMARK); | |
| 651 | 652 | lua_setfield(L, -2, "config"); |
| 652 | 653 | /* set field `loaded' */ |
| 653 | 654 | luaL_findtable(L, LUA_REGISTRYINDEX, "_LOADED", 2); |
| @@ -165,7 +165,7 @@ static int call_binTM (lua_State *L, const TValue *p1, const TValue *p2, · 164 unmodified lines | ||
| 165 | 165 | const TValue *tm = luaT_gettmbyobj(L, p1, event); /* try first operand */ |
| 166 | 166 | if (ttisnil(tm)) |
| 167 | 167 | tm = luaT_gettmbyobj(L, p2, event); /* try second operand */ |
| 168 | − if (!ttisfunction(tm)) return 0; | |
| 168 | + if (ttisnil(tm)) return 0; | |
| 169 | 169 | callTMres(L, res, tm, p1, p2); |
| 170 | 170 | return 1; |
| 171 | 171 | } |
| @@ -285,7 +285,7 @@ void luaV_concat (lua_State *L, int total, int last) { · 113 unmodified lines | ||
| 285 | 285 | if (!call_binTM(L, top-2, top-1, top-2, TM_CONCAT)) |
| 286 | 286 | luaG_concaterror(L, top-2, top-1); |
| 287 | 287 | } else if (tsvalue(top-1)->len == 0) /* second op is empty? */ |
| 288 | − tostring(L, top - 2); /* result is first op (as string) */ | |
| 288 | + (void)tostring(L, top - 2); /* result is first op (as string) */ | |
| 289 | 289 | else { |
| 290 | 290 | /* at least two string values; get as many as possible */ |
| 291 | 291 | size_t tl = tsvalue(top-1)->len; |
| @@ -23,8 +23,7 @@ · 22 unmodified lines | ||
| 23 | 23 | static void PrintString(const TString* ts) |
| 24 | 24 | { |
| 25 | 25 | const char* s=getstr(ts); |
| 26 | − int n=ts->tsv.len; | |
| 27 | − int i; | |
| 26 | + size_t i,n=ts->tsv.len; | |
| 28 | 27 | putchar('"'); |
| 29 | 28 | for (i=0; i<n; i++) |
| 30 | 29 | { |