diff options
| author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2005-03-29 13:47:48 -0300 |
|---|---|---|
| committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2005-03-29 13:47:48 -0300 |
| commit | 092dc95b06ee71f99f134727862a3a0d5783d9e5 (patch) | |
| tree | 437b653fd6d15ca38d18f231b0a73e9c2a1dc64f | |
| parent | e6e543a534832d7bb5680cee9d3b589a69c5e2cc (diff) | |
| download | lua-092dc95b06ee71f99f134727862a3a0d5783d9e5.tar.gz lua-092dc95b06ee71f99f134727862a3a0d5783d9e5.tar.bz2 lua-092dc95b06ee71f99f134727862a3a0d5783d9e5.zip | |
using `require' to implement `-l'
| -rw-r--r-- | lua.c | 16 |
1 files changed, 6 insertions, 10 deletions
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** $Id: lua.c,v 1.137 2005/03/22 16:55:35 roberto Exp roberto $ | 2 | ** $Id: lua.c,v 1.138 2005/03/23 17:50:49 roberto Exp roberto $ |
| 3 | ** Lua stand-alone interpreter | 3 | ** Lua stand-alone interpreter |
| 4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
| 5 | */ | 5 | */ |
| @@ -46,8 +46,9 @@ static void print_usage (void) { | |||
| 46 | " - execute stdin as a file\n" | 46 | " - execute stdin as a file\n" |
| 47 | " -e stat execute string `stat'\n" | 47 | " -e stat execute string `stat'\n" |
| 48 | " -i enter interactive mode after executing `script'\n" | 48 | " -i enter interactive mode after executing `script'\n" |
| 49 | " -l name load and run library `name'\n" | 49 | " -l name require library `name'\n" |
| 50 | " -v show version information\n" | 50 | " -v show version information\n" |
| 51 | " -w control access to undefined globals\n" | ||
| 51 | " -- stop handling options\n" , | 52 | " -- stop handling options\n" , |
| 52 | progname); | 53 | progname); |
| 53 | } | 54 | } |
| @@ -130,14 +131,9 @@ static int dostring (lua_State *L, const char *s, const char *name) { | |||
| 130 | 131 | ||
| 131 | 132 | ||
| 132 | static int dolibrary (lua_State *L, const char *name) { | 133 | static int dolibrary (lua_State *L, const char *name) { |
| 133 | luaL_getfield(L, LUA_GLOBALSINDEX, "package.path"); | 134 | lua_getglobal(L, "require"); |
| 134 | if (!lua_isstring(L, -1)) { | 135 | lua_pushstring(L, name); |
| 135 | l_message(progname, "`package.path' must be a string"); | 136 | return report(L, lua_pcall(L, 1, 0, 0)); |
| 136 | return 1; | ||
| 137 | } | ||
| 138 | name = luaL_searchpath(L, name, lua_tostring(L, -1)); | ||
| 139 | if (name == NULL) return report(L, 1); | ||
| 140 | else return dofile(L, name); | ||
| 141 | } | 137 | } |
| 142 | 138 | ||
| 143 | 139 | ||
