diff options
author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2004-04-30 17:13:38 -0300 |
---|---|---|
committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2004-04-30 17:13:38 -0300 |
commit | b4cd38ba6c148cf7db5deae6208b660c3417cac9 (patch) | |
tree | 8818b5e364c8ad5489a9755d3fc24110bccfdfe2 /lua.c | |
parent | 079facab40542ff2e6be9ecc254fd148772b47c9 (diff) | |
download | lua-b4cd38ba6c148cf7db5deae6208b660c3417cac9.tar.gz lua-b4cd38ba6c148cf7db5deae6208b660c3417cac9.tar.bz2 lua-b4cd38ba6c148cf7db5deae6208b660c3417cac9.zip |
new scheme for configuration through `luaconf.h'
Diffstat (limited to 'lua.c')
-rw-r--r-- | lua.c | 57 |
1 files changed, 12 insertions, 45 deletions
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | ** $Id: lua.c,v 1.123 2003/05/07 16:02:16 roberto Exp roberto $ | 2 | ** $Id: lua.c,v 1.124 2003/10/23 18:06:22 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 | */ |
@@ -26,39 +26,6 @@ | |||
26 | #endif | 26 | #endif |
27 | 27 | ||
28 | 28 | ||
29 | /* | ||
30 | ** definition of `isatty' | ||
31 | */ | ||
32 | #ifdef _POSIX_C_SOURCE | ||
33 | #include <unistd.h> | ||
34 | #define stdin_is_tty() isatty(0) | ||
35 | #else | ||
36 | #define stdin_is_tty() 1 /* assume stdin is a tty */ | ||
37 | #endif | ||
38 | |||
39 | |||
40 | |||
41 | #ifndef PROMPT | ||
42 | #define PROMPT "> " | ||
43 | #endif | ||
44 | |||
45 | |||
46 | #ifndef PROMPT2 | ||
47 | #define PROMPT2 ">> " | ||
48 | #endif | ||
49 | |||
50 | #ifndef PROGNAME | ||
51 | #define PROGNAME "lua" | ||
52 | #endif | ||
53 | |||
54 | #ifndef lua_userinit | ||
55 | #define lua_userinit(L) openstdlibs(L) | ||
56 | #endif | ||
57 | |||
58 | |||
59 | #ifndef LUA_EXTRALIBS | ||
60 | #define LUA_EXTRALIBS /* empty */ | ||
61 | #endif | ||
62 | 29 | ||
63 | 30 | ||
64 | static lua_State *L = NULL; | 31 | static lua_State *L = NULL; |
@@ -187,14 +154,6 @@ static int load_file (const char *name) { | |||
187 | } | 154 | } |
188 | 155 | ||
189 | 156 | ||
190 | /* | ||
191 | ** this macro can be used by some `history' system to save lines | ||
192 | ** read in manual input | ||
193 | */ | ||
194 | #ifndef lua_saveline | ||
195 | #define lua_saveline(L,line) /* empty */ | ||
196 | #endif | ||
197 | |||
198 | 157 | ||
199 | /* | 158 | /* |
200 | ** this macro defines a function to show the prompt and reads the | 159 | ** this macro defines a function to show the prompt and reads the |
@@ -291,8 +250,11 @@ static void manual_input (void) { | |||
291 | } | 250 | } |
292 | 251 | ||
293 | 252 | ||
253 | #define clearinteractive(i) (*i &= 2) | ||
254 | |||
294 | static int handle_argv (char *argv[], int *interactive) { | 255 | static int handle_argv (char *argv[], int *interactive) { |
295 | if (argv[1] == NULL) { /* no more arguments? */ | 256 | if (argv[1] == NULL) { /* no arguments? */ |
257 | *interactive = 0; | ||
296 | if (stdin_is_tty()) { | 258 | if (stdin_is_tty()) { |
297 | print_version(); | 259 | print_version(); |
298 | manual_input(); | 260 | manual_input(); |
@@ -314,19 +276,22 @@ static int handle_argv (char *argv[], int *interactive) { | |||
314 | goto endloop; /* stop handling arguments */ | 276 | goto endloop; /* stop handling arguments */ |
315 | } | 277 | } |
316 | case '\0': { | 278 | case '\0': { |
279 | clearinteractive(interactive); | ||
317 | file_input(NULL); /* executes stdin as a file */ | 280 | file_input(NULL); /* executes stdin as a file */ |
318 | break; | 281 | break; |
319 | } | 282 | } |
320 | case 'i': { | 283 | case 'i': { |
321 | *interactive = 1; | 284 | *interactive = 2; /* force interactive mode after arguments */ |
322 | break; | 285 | break; |
323 | } | 286 | } |
324 | case 'v': { | 287 | case 'v': { |
288 | clearinteractive(interactive); | ||
325 | print_version(); | 289 | print_version(); |
326 | break; | 290 | break; |
327 | } | 291 | } |
328 | case 'e': { | 292 | case 'e': { |
329 | const char *chunk = argv[i] + 2; | 293 | const char *chunk = argv[i] + 2; |
294 | clearinteractive(interactive); | ||
330 | if (*chunk == '\0') chunk = argv[++i]; | 295 | if (*chunk == '\0') chunk = argv[++i]; |
331 | if (chunk == NULL) { | 296 | if (chunk == NULL) { |
332 | print_usage(); | 297 | print_usage(); |
@@ -356,6 +321,7 @@ static int handle_argv (char *argv[], int *interactive) { | |||
356 | break; | 321 | break; |
357 | } | 322 | } |
358 | default: { | 323 | default: { |
324 | clearinteractive(interactive); | ||
359 | print_usage(); | 325 | print_usage(); |
360 | return 1; | 326 | return 1; |
361 | } | 327 | } |
@@ -364,6 +330,7 @@ static int handle_argv (char *argv[], int *interactive) { | |||
364 | if (argv[i] != NULL) { | 330 | if (argv[i] != NULL) { |
365 | const char *filename = argv[i]; | 331 | const char *filename = argv[i]; |
366 | getargs(argv, i); /* collect arguments */ | 332 | getargs(argv, i); /* collect arguments */ |
333 | clearinteractive(interactive); | ||
367 | lua_setglobal(L, "arg"); | 334 | lua_setglobal(L, "arg"); |
368 | return file_input(filename); /* stop scanning arguments */ | 335 | return file_input(filename); /* stop scanning arguments */ |
369 | } | 336 | } |
@@ -401,7 +368,7 @@ struct Smain { | |||
401 | static int pmain (lua_State *l) { | 368 | static int pmain (lua_State *l) { |
402 | struct Smain *s = (struct Smain *)lua_touserdata(l, 1); | 369 | struct Smain *s = (struct Smain *)lua_touserdata(l, 1); |
403 | int status; | 370 | int status; |
404 | int interactive = 0; | 371 | int interactive = 1; |
405 | if (s->argv[0] && s->argv[0][0]) progname = s->argv[0]; | 372 | if (s->argv[0] && s->argv[0][0]) progname = s->argv[0]; |
406 | L = l; | 373 | L = l; |
407 | lua_userinit(l); /* open libraries */ | 374 | lua_userinit(l); /* open libraries */ |