44 "usage: %s [options] [script [args]].\n"
45 "Available options are:\n"
46 " -e stat execute string " LUA_QL(
"stat")
"\n"
47 " -l name require library " LUA_QL(
"name")
"\n"
48 " -i enter interactive mode after executing " LUA_QL(
"script")
"\n"
49 " -v show version information\n"
50 " -- stop handling options\n"
51 " - execute stdin and stop handling options\n"
58static void l_message (
const char *pname,
const char *msg) {
59 if (pname) fprintf(stderr,
"%s: ", pname);
60 fprintf(stderr,
"%s\n", msg);
68 if (msg ==
NULL) msg =
"(error object is not a string)";
103 signal(SIGINT, SIG_DFL);
120 while (argv[argc]) argc++;
121 narg = argc - (n + 1);
123 for (i=n+1; i < argc; i++)
126 for (i=0; i < argc; i++) {
167 const char *tp = msg + lmsg - (
sizeof(
LUA_QL(
"<eof>")) - 1);
168 if (strstr(msg,
LUA_QL(
"<eof>")) == tp) {
185 if (l > 0 && b[l-1] ==
'\n')
187 if (firstline && b[0] ==
'=')
220 while ((status =
loadline(L)) != -1) {
221 if (status == 0) status =
docall(L, 0, 0);
228 "error calling " LUA_QL(
"print")
" (%s)",
242 int narg =
getargs(L, argv, n);
245 if (strcmp(fname,
"-") == 0 && strcmp(argv[n-1],
"--") != 0)
250 status =
docall(L, narg, 0);
258#define notail(x) {if ((x)[2] != '\0') return -1;}
263 for (i = 1; argv[i] !=
NULL; i++) {
264 if (argv[i][0] !=
'-')
266 switch (argv[i][1]) {
269 return (argv[i+1] !=
NULL ? i+1 : 0);
282 if (argv[i][2] ==
'\0') {
284 if (argv[i] ==
NULL)
return -1;
296 for (i = 1; i < n; i++) {
297 if (argv[i] ==
NULL)
continue;
299 switch (argv[i][1]) {
301 const char *
chunk = argv[i] + 2;
309 const char *filename = argv[i] + 2;
310 if (*filename ==
'\0') filename = argv[++i];
324 const char *init = getenv(
LUA_INIT);
325 if (init ==
NULL)
return 0;
326 else if (init[0] ==
'@')
351 if (
s->status != 0)
return 0;
359 s->status =
runargs(L,
argv, (script > 0) ? script :
s->argc);
360 if (
s->status != 0)
return 0;
363 if (
s->status != 0)
return 0;
382 l_message(
argv[0],
"cannot create state: not enough memory");
390 return (
status ||
s.status) ? EXIT_FAILURE : EXIT_SUCCESS;
LUA_API void lua_pushstring(lua_State *L, const char *s)
LUA_API void lua_concat(lua_State *L, int n)
LUA_API const char * lua_pushfstring(lua_State *L, const char *fmt,...)
LUA_API const char * lua_tolstring(lua_State *L, int idx, size_t *len)
LUA_API void lua_pushvalue(lua_State *L, int idx)
LUA_API void lua_createtable(lua_State *L, int narray, int nrec)
LUA_API void lua_rawseti(lua_State *L, int idx, int n)
LUA_API int lua_isstring(lua_State *L, int idx)
LUA_API void * lua_touserdata(lua_State *L, int idx)
LUA_API void lua_settop(lua_State *L, int idx)
LUA_API void lua_pushinteger(lua_State *L, lua_Integer n)
LUA_API void lua_getfield(lua_State *L, int idx, const char *k)
LUA_API int lua_gc(lua_State *L, int what, int data)
LUA_API int lua_gettop(lua_State *L)
LUA_API int lua_cpcall(lua_State *L, lua_CFunction func, void *ud)
LUALIB_API void luaL_checkstack(lua_State *L, int space, const char *mes)
LUALIB_API int luaL_error(lua_State *L, const char *fmt,...)
LUA_API int lua_sethook(lua_State *L, lua_Hook func, int mask, int count)
LUALIB_API void luaL_openlibs(lua_State *L)
static void chunk(LexState *ls)
LUA_API void lua_close(lua_State *L)
static const char * get_prompt(lua_State *L, int firstline)
static int report(lua_State *L, int status)
static void print_usage(void)
static int getargs(lua_State *L, char **argv, int n)
static int collectargs(char **argv, int *pi, int *pv, int *pe)
static void print_version(void)
static int docall(lua_State *L, int narg, int clear)
static int handle_luainit(lua_State *L)
static void lstop(lua_State *L, lua_Debug *ar)
static int pushline(lua_State *L, int firstline)
static int traceback(lua_State *L)
static int runargs(lua_State *L, char **argv, int n)
static int dofile(lua_State *L, const char *name)
static int pmain(lua_State *L)
static void laction(int i)
static void l_message(const char *pname, const char *msg)
static int dolibrary(lua_State *L, const char *name)
static const char * progname
static int loadline(lua_State *L)
static int dostring(lua_State *L, const char *s, const char *name)
static int handle_script(lua_State *L, char **argv, int n)
static void dotty(lua_State *L)
static lua_State * globalL
static int incomplete(lua_State *L, int status)
#define lua_istable(L, n)
#define lua_pushcfunction(L, f)
#define lua_pushliteral(L, s)
#define lua_isfunction(L, n)
#define lua_setglobal(L, s)
#define lua_getglobal(L, s)
#define lua_tostring(L, i)
#define luaL_loadfile(L, f)
#define luaL_loadbuffer(L, s, sz, n)
#define lua_freeline(L, b)
#define lua_stdin_is_tty()
#define lua_saveline(L, idx)
#define lua_readline(L, b, p)
#define lua_pcall(L, n, r, f)
#define lua_call(L, n, r)
#define lua_insert(L, idx)
#define lua_remove(L, idx)
CURL_EXTERN CURLMcode curl_socket_t s