definitions for 'luai_writestring'/'luai_writeline'/'luai_writestringerror'

moved to 'lauxlib.h' (they do not need to be stable or configurable) +
prefixes changed from 'luai_' to 'lua_' (they are not part of the core)
This commit is contained in:
Roberto Ierusalimschy 2014-10-29 14:12:30 -02:00
parent 351a446ec5
commit 05afee0f50
5 changed files with 46 additions and 21 deletions

View File

@ -1,5 +1,5 @@
/* /*
** $Id: lauxlib.c,v 1.270 2014/10/22 11:44:20 roberto Exp roberto $ ** $Id: lauxlib.c,v 1.271 2014/10/25 11:50:46 roberto Exp roberto $
** Auxiliary functions for building Lua libraries ** Auxiliary functions for building Lua libraries
** See Copyright Notice in lua.h ** See Copyright Notice in lua.h
*/ */
@ -938,8 +938,8 @@ static void *l_alloc (void *ud, void *ptr, size_t osize, size_t nsize) {
static int panic (lua_State *L) { static int panic (lua_State *L) {
luai_writestringerror("PANIC: unprotected error in call to Lua API (%s)\n", lua_writestringerror("PANIC: unprotected error in call to Lua API (%s)\n",
lua_tostring(L, -1)); lua_tostring(L, -1));
return 0; /* return to Lua to abort */ return 0; /* return to Lua to abort */
} }

View File

@ -1,5 +1,5 @@
/* /*
** $Id: lauxlib.h,v 1.126 2014/10/01 11:54:56 roberto Exp roberto $ ** $Id: lauxlib.h,v 1.127 2014/10/25 11:50:46 roberto Exp roberto $
** Auxiliary functions for building Lua libraries ** Auxiliary functions for building Lua libraries
** See Copyright Notice in lua.h ** See Copyright Notice in lua.h
*/ */
@ -204,6 +204,31 @@ LUALIB_API void (luaL_openlib) (lua_State *L, const char *libname,
#endif #endif
/*
** {==================================================================
** "Abstraction Layer" for basic report of messages and errors
** ===================================================================
*/
/* print a string */
#if !defined(lua_writestring)
#define lua_writestring(s,l) fwrite((s), sizeof(char), (l), stdout)
#endif
/* print a newline and flush the output */
#if !defined(lua_writeline)
#define lua_writeline() (lua_writestring("\n", 1), fflush(stdout))
#endif
/* print an error message */
#if !defined(lua_writestringerror)
#define lua_writestringerror(s,p) \
(fprintf(stderr, (s), (p)), fflush(stderr))
#endif
/* }================================================================== */
/* /*
** {============================================================ ** {============================================================
** Compatibility with deprecated conversions ** Compatibility with deprecated conversions

View File

@ -1,5 +1,5 @@
/* /*
** $Id: lbaselib.c,v 1.303 2014/10/17 19:17:55 roberto Exp roberto $ ** $Id: lbaselib.c,v 1.304 2014/10/25 11:50:46 roberto Exp roberto $
** Basic library ** Basic library
** See Copyright Notice in lua.h ** See Copyright Notice in lua.h
*/ */
@ -33,11 +33,11 @@ static int luaB_print (lua_State *L) {
s = lua_tolstring(L, -1, &l); /* get result */ s = lua_tolstring(L, -1, &l); /* get result */
if (s == NULL) if (s == NULL)
return luaL_error(L, "'tostring' must return a string to 'print'"); return luaL_error(L, "'tostring' must return a string to 'print'");
if (i>1) luai_writestring("\t", 1); if (i>1) lua_writestring("\t", 1);
luai_writestring(s, l); lua_writestring(s, l);
lua_pop(L, 1); /* pop result */ lua_pop(L, 1); /* pop result */
} }
luai_writeline(); lua_writeline();
return 0; return 0;
} }

View File

@ -1,5 +1,5 @@
/* /*
** $Id: ldblib.c,v 1.142 2014/10/01 11:54:56 roberto Exp roberto $ ** $Id: ldblib.c,v 1.143 2014/10/17 11:07:26 roberto Exp roberto $
** Interface from Lua to its debug API ** Interface from Lua to its debug API
** See Copyright Notice in lua.h ** See Copyright Notice in lua.h
*/ */
@ -374,13 +374,13 @@ static int db_gethook (lua_State *L) {
static int db_debug (lua_State *L) { static int db_debug (lua_State *L) {
for (;;) { for (;;) {
char buffer[250]; char buffer[250];
luai_writestringerror("%s", "lua_debug> "); lua_writestringerror("%s", "lua_debug> ");
if (fgets(buffer, sizeof(buffer), stdin) == 0 || if (fgets(buffer, sizeof(buffer), stdin) == 0 ||
strcmp(buffer, "cont\n") == 0) strcmp(buffer, "cont\n") == 0)
return 0; return 0;
if (luaL_loadbuffer(L, buffer, strlen(buffer), "=(debug command)") || if (luaL_loadbuffer(L, buffer, strlen(buffer), "=(debug command)") ||
lua_pcall(L, 0, 0, 0)) lua_pcall(L, 0, 0, 0))
luai_writestringerror("%s\n", lua_tostring(L, -1)); lua_writestringerror("%s\n", lua_tostring(L, -1));
lua_settop(L, 0); /* remove eventual returns */ lua_settop(L, 0); /* remove eventual returns */
} }
} }

20
lua.c
View File

@ -1,5 +1,5 @@
/* /*
** $Id: lua.c,v 1.216 2014/10/20 18:19:26 roberto Exp roberto $ ** $Id: lua.c,v 1.217 2014/10/20 22:21:05 roberto Exp roberto $
** Lua stand-alone interpreter ** Lua stand-alone interpreter
** See Copyright Notice in lua.h ** See Copyright Notice in lua.h
*/ */
@ -126,12 +126,12 @@ static void laction (int i) {
static void print_usage (const char *badoption) { static void print_usage (const char *badoption) {
luai_writestringerror("%s: ", progname); lua_writestringerror("%s: ", progname);
if (badoption[1] == 'e' || badoption[1] == 'l') if (badoption[1] == 'e' || badoption[1] == 'l')
luai_writestringerror("'%s' needs argument\n", badoption); lua_writestringerror("'%s' needs argument\n", badoption);
else else
luai_writestringerror("unrecognized option '%s'\n", badoption); lua_writestringerror("unrecognized option '%s'\n", badoption);
luai_writestringerror( lua_writestringerror(
"usage: %s [options] [script [args]]\n" "usage: %s [options] [script [args]]\n"
"Available options are:\n" "Available options are:\n"
" -e stat execute string 'stat'\n" " -e stat execute string 'stat'\n"
@ -151,8 +151,8 @@ static void print_usage (const char *badoption) {
** (if present) ** (if present)
*/ */
static void l_message (const char *pname, const char *msg) { static void l_message (const char *pname, const char *msg) {
if (pname) luai_writestringerror("%s: ", pname); if (pname) lua_writestringerror("%s: ", pname);
luai_writestringerror("%s\n", msg); lua_writestringerror("%s\n", msg);
} }
@ -208,8 +208,8 @@ static int docall (lua_State *L, int narg, int nres) {
static void print_version (void) { static void print_version (void) {
luai_writestring(LUA_COPYRIGHT, strlen(LUA_COPYRIGHT)); lua_writestring(LUA_COPYRIGHT, strlen(LUA_COPYRIGHT));
luai_writeline(); lua_writeline();
} }
@ -410,7 +410,7 @@ static void doREPL (lua_State *L) {
else report(L, status); else report(L, status);
} }
lua_settop(L, 0); /* clear stack */ lua_settop(L, 0); /* clear stack */
luai_writeline(); lua_writeline();
progname = oldprogname; progname = oldprogname;
} }