lua

A copy of the Lua development repository
Log | Files | Refs | README

commit 0baa915343cbf7fd1f310ea640a0d72ec626273b
parent 5cddb264d430d7c9b4defd63d823d98bf002f4d1
Author: Roberto Ierusalimschy <roberto@inf.puc-rio.br>
Date:   Mon, 10 Jun 1996 16:35:26 -0300

new option "-x" to execute a string given as argument.

Diffstat:
Mlua.c | 94+++++++++++++++++++++++++++----------------------------------------------------
1 file changed, 32 insertions(+), 62 deletions(-)

diff --git a/lua.c b/lua.c @@ -3,7 +3,7 @@ ** Linguagem para Usuarios de Aplicacao */ -char *rcs_lua="$Id: lua.c,v 1.9 1996/04/23 12:43:07 roberto Exp roberto $"; +char *rcs_lua="$Id: lua.c,v 1.10 1996/05/03 19:20:17 roberto Exp roberto $"; #include <stdio.h> #include <string.h> @@ -11,37 +11,13 @@ char *rcs_lua="$Id: lua.c,v 1.9 1996/04/23 12:43:07 roberto Exp roberto $"; #include "lua.h" #include "lualib.h" -static int lua_argc; -static char **lua_argv; #ifdef POSIX -/* -** although this function is POSIX, there is no standard header file that -** defines it -*/ -int isatty (int fd); +#include <unistd.h> #else #define isatty(x) (x==0) /* assume stdin is a tty */ #endif -/* -%F Allow Lua code to access argv strings. -%i Receive from Lua the argument number (starting with 1). -%o Return to Lua the argument, or nil if it does not exist. -*/ -static void lua_getargv (void) -{ - lua_Object lo = lua_getparam(1); - if (!lua_isnumber(lo)) - lua_pushnil(); - else - { - int n = (int)lua_getnumber(lo); - if (n < 1 || n > lua_argc) lua_pushnil(); - else lua_pushstring(lua_argv[n]); - } -} - static void manual_input (void) { @@ -58,43 +34,37 @@ static void manual_input (void) int main (int argc, char *argv[]) { - int i; - int result = 0; - iolib_open (); - strlib_open (); - mathlib_open (); - - lua_register("argv", lua_getargv); - - if (argc < 2) - manual_input(); - else - { - for (i=1; i<argc; i++) - if (strcmp(argv[i], "--") == 0) - { - lua_argc = argc-i-1; - lua_argv = argv+i; - break; - } - for (i=1; i<argc; i++) - { - if (strcmp(argv[i], "--") == 0) - break; - else if (strcmp(argv[i], "-") == 0) + int i; + int result = 0; + iolib_open (); + strlib_open (); + mathlib_open (); + + if (argc < 2) manual_input(); - else if (strcmp(argv[i], "-v") == 0) - printf("%s %s\n(written by %s)\n\n", - LUA_VERSION, LUA_COPYRIGHT, LUA_AUTHORS); - else - { - result = lua_dofile (argv[i]); - if (result) - fprintf(stderr, "lua: error trying to run file %s\n", argv[i]); - } + else for (i=1; i<argc; i++) { + if (strcmp(argv[i], "-") == 0) + manual_input(); + else if (strcmp(argv[i], "-v") == 0) + printf("%s %s\n(written by %s)\n\n", + LUA_VERSION, LUA_COPYRIGHT, LUA_AUTHORS); + else if (strcmp(argv[i], "-x") == 0) { + if (lua_dostring(argv[++i]) != 0) { + fprintf(stderr, "lua: error running argument `%s'\n", argv[i]); + return 1; + } + } + else { + result = lua_dofile (argv[i]); + if (result) { + if (result == 2) { + fprintf(stderr, "lua: cannot execute file `%s' - ", argv[i]); + perror(NULL); + } + return 1; + } + } } - } - return result; + return result; } -