commit c6c41e85b2992bba41cac23ac8bab32e29553e84
parent 87c930676f4aef54054024b73a245a24747aa163
Author: Roberto Ierusalimschy <roberto@inf.puc-rio.br>
Date: Wed, 26 Feb 2014 12:27:31 -0300
more uniformity for defining system-dependent features
Diffstat:
M | ldo.c | | | 21 | ++++++++++++--------- |
M | liolib.c | | | 41 | +++++++++++++++++++++-------------------- |
M | lobject.c | | | 20 | ++++++++++++++------ |
M | loslib.c | | | 25 | ++++++++++++++++++------- |
M | lua.c | | | 33 | +++++++++++++++++++++++---------- |
M | luaconf.h | | | 26 | +++++++++++++------------- |
6 files changed, 101 insertions(+), 65 deletions(-)
diff --git a/ldo.c b/ldo.c
@@ -1,5 +1,5 @@
/*
-** $Id: ldo.c,v 2.112 2013/11/08 18:16:33 roberto Exp roberto $
+** $Id: ldo.c,v 2.113 2014/02/15 13:12:01 roberto Exp roberto $
** Stack and Call structure of Lua
** See Copyright Notice in lua.h
*/
@@ -46,30 +46,33 @@
** C++ code, with _longjmp/_setjmp when asked to use them, and with
** longjmp/setjmp otherwise.
*/
-#if !defined(LUAI_THROW)
+#if !defined(LUAI_THROW) /* { */
+
+#if defined(__cplusplus) && !defined(LUA_USE_LONGJMP) /* { */
-#if defined(__cplusplus) && !defined(LUA_USE_LONGJMP)
/* C++ exceptions */
#define LUAI_THROW(L,c) throw(c)
#define LUAI_TRY(L,c,a) \
try { a } catch(...) { if ((c)->status == 0) (c)->status = -1; }
#define luai_jmpbuf int /* dummy variable */
-#elif defined(LUA_USE_ULONGJMP)
-/* in Unix, try _longjmp/_setjmp (more efficient) */
+#elif defined(LUA_USE_POSIX) /* }{ */
+
+/* in Posix, try _longjmp/_setjmp (more efficient) */
#define LUAI_THROW(L,c) _longjmp((c)->b, 1)
#define LUAI_TRY(L,c,a) if (_setjmp((c)->b) == 0) { a }
#define luai_jmpbuf jmp_buf
-#else
-/* default handling with long jumps */
+#else /* }{ */
+
+/* ANSI handling with long jumps */
#define LUAI_THROW(L,c) longjmp((c)->b, 1)
#define LUAI_TRY(L,c,a) if (setjmp((c)->b) == 0) { a }
#define luai_jmpbuf jmp_buf
-#endif
+#endif /* } */
-#endif
+#endif /* } */
diff --git a/liolib.c b/liolib.c
@@ -1,5 +1,5 @@
/*
-** $Id: liolib.c,v 2.115 2014/01/27 13:28:45 roberto Exp roberto $
+** $Id: liolib.c,v 2.116 2014/02/21 14:39:50 roberto Exp roberto $
** Standard I/O (and system) library
** See Copyright Notice in lua.h
*/
@@ -51,29 +51,30 @@
** =======================================================
*/
-#if !defined(lua_popen) /* { */
+#if !defined(lua_popen) /* { */
-#if defined(LUA_USE_POPEN) /* { */
+#if defined(LUA_USE_POSIX) /* { */
-#define lua_popen(L,c,m) ((void)L, fflush(NULL), popen(c,m))
-#define lua_pclose(L,file) ((void)L, pclose(file))
+#define lua_popen(L,c,m) (fflush(NULL), popen(c,m))
+#define lua_pclose(L,file) (pclose(file))
#elif defined(LUA_WIN) /* }{ */
-#define lua_popen(L,c,m) ((void)L, _popen(c,m))
-#define lua_pclose(L,file) ((void)L, _pclose(file))
-
+#define lua_popen(L,c,m) (_popen(c,m))
+#define lua_pclose(L,file) (_pclose(file))
#else /* }{ */
-#define lua_popen(L,c,m) ((void)((void)c, m), \
- luaL_error(L, LUA_QL("popen") " not supported"), (FILE*)0)
+/* ANSI definitions */
+#define lua_popen(L,c,m) \
+ ((void)((void)c, m), \
+ luaL_error(L, LUA_QL("popen") " not supported"), \
+ (FILE*)0)
#define lua_pclose(L,file) ((void)((void)L, file), -1)
-
#endif /* } */
-#endif /* } */
+#endif /* } */
/* }====================================================== */
@@ -84,7 +85,7 @@
** =======================================================
*/
-#if !defined(lua_fseek) && !defined(LUA_ANSI) /* { */
+#if !defined(lua_fseek) /* { */
#if defined(LUA_USE_POSIX) /* { */
@@ -94,22 +95,22 @@
#elif defined(LUA_WIN) && !defined(_CRTIMP_TYPEINFO) \
&& defined(_MSC_VER) && (_MSC_VER >= 1400) /* }{ */
-/* Windows (but not DDK) and Visual C++ 2005 or higher */
+/* Windows (but not DDK) and Visual C++ 2005 or higher */
#define l_fseek(f,o,w) _fseeki64(f,o,w)
#define l_ftell(f) _ftelli64(f)
#define l_seeknum __int64
-#endif /* } */
-
-#endif /* } */
-
+#else /* }{ */
-#if !defined(l_fseek) /* default definitions */
+/* ANSI definitions */
#define l_fseek(f,o,w) fseek(f,o,w)
#define l_ftell(f) ftell(f)
#define l_seeknum long
-#endif
+
+#endif /* } */
+
+#endif /* } */
/* }====================================================== */
diff --git a/lobject.c b/lobject.c
@@ -1,5 +1,5 @@
/*
-** $Id: lobject.c,v 2.72 2014/01/27 13:34:32 roberto Exp roberto $
+** $Id: lobject.c,v 2.73 2014/02/06 15:59:24 roberto Exp $
** Some generic functions over Lua objects
** See Copyright Notice in lua.h
*/
@@ -159,22 +159,26 @@ static int isneg (const char **s) {
/*
+** {======================================================
** lua_strx2number converts an hexadecimal numeric string to a number.
** In C99, 'strtod' does both conversions. C89, however, has no function
** to convert floating hexadecimal strings to numbers. For these
** systems, you can leave 'lua_strx2number' undefined and Lua will
** provide its own implementation.
+** =======================================================
*/
-#if defined(LUA_USE_STRTODHEX)
+#if !defined(lua_strx2number) /* { */
+
+#if defined(LUA_USE_C99) /* { */
+
#define lua_strx2number(s,p) lua_str2number(s,p)
-#endif
+#else /* }{ */
-#if !defined(lua_strx2number)
+/* Lua's implementation for 'lua_strx2number' */
#include <math.h>
-
/* maximum number of significant digits to read (to avoid overflows
even with single floats) */
#define MAXSIGDIG 30
@@ -237,7 +241,11 @@ static lua_Number lua_strx2number (const char *s, char **endptr) {
return l_mathop(ldexp)(r, e);
}
-#endif
+#endif /* } */
+
+#endif /* } */
+
+/* }====================================================== */
int luaO_str2d (const char *s, size_t len, lua_Number *result) {
diff --git a/loslib.c b/loslib.c
@@ -1,5 +1,5 @@
/*
-** $Id: loslib.c,v 1.40 2012/10/19 15:54:02 roberto Exp roberto $
+** $Id: loslib.c,v 1.41 2013/05/14 15:57:11 roberto Exp roberto $
** Standard Operating System library
** See Copyright Notice in lua.h
*/
@@ -42,7 +42,10 @@
** By default, Lua uses tmpnam except when POSIX is available, where it
** uses mkstemp.
*/
-#if defined(LUA_USE_MKSTEMP)
+#if !defined(lua_tmpnam) /* { */
+
+#if defined(LUA_USE_POSIX) /* { */
+
#include <unistd.h>
#define LUA_TMPNAMBUFSIZE 32
#define lua_tmpnam(b,e) { \
@@ -51,29 +54,37 @@
if (e != -1) close(e); \
e = (e == -1); }
-#elif !defined(lua_tmpnam)
+#else /* }{ */
+/* ANSI definitions */
#define LUA_TMPNAMBUFSIZE L_tmpnam
#define lua_tmpnam(b,e) { e = (tmpnam(b) == NULL); }
-#endif
+#endif /* } */
+
+#endif /* } */
/*
** By default, Lua uses gmtime/localtime, except when POSIX is available,
** where it uses gmtime_r/localtime_r
*/
-#if defined(LUA_USE_GMTIME_R)
+#if !defined(l_gmtime) /* { */
+
+#if defined(LUA_USE_POSIX) /* { */
#define l_gmtime(t,r) gmtime_r(t,r)
#define l_localtime(t,r) localtime_r(t,r)
-#elif !defined(l_gmtime)
+#else /* }{ */
+/* ANSI definitions */
#define l_gmtime(t,r) ((void)r, gmtime(t))
#define l_localtime(t,r) ((void)r, localtime(t))
-#endif
+#endif /* } */
+
+#endif /* } */
diff --git a/lua.c b/lua.c
@@ -1,5 +1,5 @@
/*
-** $Id: lua.c,v 1.208 2013/12/16 14:27:17 roberto Exp roberto $
+** $Id: lua.c,v 1.209 2014/02/05 14:22:55 roberto Exp roberto $
** Lua stand-alone interpreter
** See Copyright Notice in lua.h
*/
@@ -43,16 +43,26 @@
** lua_stdin_is_tty detects whether the standard input is a 'tty' (that
** is, whether we're running lua interactively).
*/
-#if defined(LUA_USE_ISATTY)
+#if !defined(lua_stdin_is_tty) /* { */
+
+#if defined(LUA_USE_POSIX) /* { */
+
#include <unistd.h>
#define lua_stdin_is_tty() isatty(0)
-#elif defined(LUA_WIN)
+
+#elif defined(LUA_WIN) /* }{ */
+
#include <io.h>
-#include <stdio.h>
#define lua_stdin_is_tty() _isatty(_fileno(stdin))
-#else
+
+#else /* }{ */
+
+/* ANSI definition */
#define lua_stdin_is_tty() 1 /* assume stdin is a tty */
-#endif
+
+#endif /* } */
+
+#endif /* } */
/*
@@ -61,9 +71,10 @@
** lua_saveline defines how to "save" a read line in a "history".
** lua_freeline defines how to free a line read by lua_readline.
*/
-#if defined(LUA_USE_READLINE)
+#if !defined(lua_readline) /* { */
+
+#if defined(LUA_USE_READLINE) /* { */
-#include <stdio.h>
#include <readline/readline.h>
#include <readline/history.h>
#define lua_readline(L,b,p) ((void)L, ((b)=readline(p)) != NULL)
@@ -72,7 +83,7 @@
add_history(lua_tostring(L, idx)); /* add it to history */
#define lua_freeline(L,b) ((void)L, free(b))
-#elif !defined(lua_readline)
+#else /* }{ */
#define lua_readline(L,b,p) \
((void)L, fputs(p, stdout), fflush(stdout), /* show prompt */ \
@@ -80,7 +91,9 @@
#define lua_saveline(L,idx) { (void)L; (void)idx; }
#define lua_freeline(L,b) { (void)L; (void)b; }
-#endif
+#endif /* } */
+
+#endif /* } */
diff --git a/luaconf.h b/luaconf.h
@@ -1,5 +1,5 @@
/*
-** $Id: luaconf.h,v 1.188 2013/11/21 17:23:14 roberto Exp roberto $
+** $Id: luaconf.h,v 1.189 2014/01/27 13:34:32 roberto Exp roberto $
** Configuration file for Lua
** See Copyright Notice in lua.h
*/
@@ -41,24 +41,28 @@
#if defined(LUA_USE_LINUX)
+#define LUA_USE_C99
#define LUA_USE_POSIX
#define LUA_USE_DLOPEN /* needs an extra library: -ldl */
#define LUA_USE_READLINE /* needs some extra libraries */
-#define LUA_USE_STRTODHEX /* assume 'strtod' handles hex formats */
-#define LUA_USE_AFORMAT /* assume 'printf' handles 'aA' specifiers */
-#define LUA_USE_LONGLONG /* assume support for long long */
#endif
#if defined(LUA_USE_MACOSX)
+#define LUA_USE_C99
#define LUA_USE_POSIX
#define LUA_USE_DLOPEN /* does not need -ldl */
#define LUA_USE_READLINE /* needs an extra library: -lreadline */
-#define LUA_USE_STRTODHEX /* assume 'strtod' handles hex formats */
-#define LUA_USE_AFORMAT /* assume 'printf' handles 'aA' specifiers */
-#define LUA_USE_LONGLONG /* assume support for long long */
#endif
+/*
+@@ LUA_USE_C99 includes all functionality from C 99.
+** CHANGE it (define it) if your system is compatible.
+*/
+#if defined(LUA_USE_C99)
+#define LUA_USE_AFORMAT /* assume 'printf' handles 'aA' specifiers */
+#endif
+
/*
@@ LUA_USE_POSIX includes all functionality listed as X/Open System
@@ -66,11 +70,6 @@
** CHANGE it (define it) if your system is XSI compatible.
*/
#if defined(LUA_USE_POSIX)
-#define LUA_USE_MKSTEMP
-#define LUA_USE_ISATTY
-#define LUA_USE_POPEN
-#define LUA_USE_ULONGJMP
-#define LUA_USE_GMTIME_R
#endif
@@ -381,7 +380,8 @@
** The following definitions set the numeric types for Lua.
** Lua should work fine with 32-bit or 64-bit integers mixed with
** 32-bit or 64-bit floats. The usual configurations are 64-bit
-** integers and floats (the default) and 32-bit integers and floats.
+** integers and floats (the default) and 32-bit integers and floats
+** (for restricted hardware).
** ===================================================================
*/