aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lbaselib.c14
-rw-r--r--lua.c20
2 files changed, 15 insertions, 19 deletions
diff --git a/lbaselib.c b/lbaselib.c
index e29480bd..9c711c8d 100644
--- a/lbaselib.c
+++ b/lbaselib.c
@@ -1,5 +1,5 @@
1/* 1/*
2** $Id: lbaselib.c,v 1.73 2002/05/13 13:10:58 roberto Exp roberto $ 2** $Id: lbaselib.c,v 1.74 2002/05/16 18:39:46 roberto Exp roberto $
3** Basic library 3** Basic library
4** See Copyright Notice in lua.h 4** See Copyright Notice in lua.h
5*/ 5*/
@@ -21,17 +21,6 @@
21 21
22 22
23/* 23/*
24** If your system does not support `stderr', redefine this function, or
25** redefine _ERRORMESSAGE so that it won't need _ALERT.
26*/
27static int luaB__ALERT (lua_State *L) {
28 fputs(luaL_check_string(L, 1), stderr);
29 putc('\n', stderr);
30 return 0;
31}
32
33
34/*
35** If your system does not support `stdout', you can just remove this function. 24** If your system does not support `stdout', you can just remove this function.
36** If you need, you can define your own `print' function, following this 25** If you need, you can define your own `print' function, following this
37** model but changing `fputs' to put the strings at a proper place 26** model but changing `fputs' to put the strings at a proper place
@@ -385,7 +374,6 @@ static int luaB_require (lua_State *L) {
385 374
386 375
387static const luaL_reg base_funcs[] = { 376static const luaL_reg base_funcs[] = {
388 {LUA_ALERT, luaB__ALERT},
389 {"error", luaB_error}, 377 {"error", luaB_error},
390 {"metatable", luaB_metatable}, 378 {"metatable", luaB_metatable},
391 {"globals", luaB_globals}, 379 {"globals", luaB_globals},
diff --git a/lua.c b/lua.c
index 344b3a02..7bc2866a 100644
--- a/lua.c
+++ b/lua.c
@@ -1,5 +1,5 @@
1/* 1/*
2** $Id: lua.c,v 1.85 2002/05/01 20:40:42 roberto Exp roberto $ 2** $Id: lua.c,v 1.86 2002/05/15 18:57:44 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*/
@@ -69,9 +69,9 @@ static void laction (int i) {
69static void report (int status) { 69static void report (int status) {
70 if (status == 0) return; 70 if (status == 0) return;
71 else { 71 else {
72 const char *msg = lua_tostring(L, -1); 72 lua_getglobal(L, "_ALERT");
73 if (msg == NULL) msg = "(no message)"; 73 lua_pushvalue(L, -2);
74 fprintf(stderr, "%s\n", msg); 74 lua_pcall(L, 1, 0, 0);
75 lua_pop(L, 1); 75 lua_pop(L, 1);
76 } 76 }
77} 77}
@@ -137,6 +137,13 @@ static void getargs (char *argv[]) {
137} 137}
138 138
139 139
140static int l_alert (lua_State *l) {
141 fputs(luaL_check_string(l, 1), stderr);
142 putc('\n', stderr);
143 return 0;
144}
145
146
140static int l_getargs (lua_State *l) { 147static int l_getargs (lua_State *l) {
141 char **argv = (char **)lua_touserdata(l, lua_upvalueindex(1)); 148 char **argv = (char **)lua_touserdata(l, lua_upvalueindex(1));
142 getargs(argv); 149 getargs(argv);
@@ -323,10 +330,11 @@ static int handle_argv (char *argv[], int *toclose) {
323} 330}
324 331
325 332
326static void register_getargs (char *argv[]) { 333static void register_own (char *argv[]) {
327 lua_pushudataval(L, argv); 334 lua_pushudataval(L, argv);
328 lua_pushcclosure(L, l_getargs, 1); 335 lua_pushcclosure(L, l_getargs, 1);
329 lua_setglobal(L, "getargs"); 336 lua_setglobal(L, "getargs");
337 lua_register(L, "_ALERT", l_alert);
330} 338}
331 339
332 340
@@ -356,7 +364,7 @@ int main (int argc, char *argv[]) {
356 (void)argc; /* to avoid warnings */ 364 (void)argc; /* to avoid warnings */
357 L = lua_open(); /* create state */ 365 L = lua_open(); /* create state */
358 LUA_USERINIT(L); /* open libraries */ 366 LUA_USERINIT(L); /* open libraries */
359 register_getargs(argv); /* create `getargs' function */ 367 register_own(argv); /* create own function */
360 status = handle_luainit(); 368 status = handle_luainit();
361 if (status != 0) return status; 369 if (status != 0) return status;
362 status = handle_argv(argv+1, &toclose); 370 status = handle_argv(argv+1, &toclose);