Fix absence of 'system' in iOS

Despite claiming to be ISO, the C library in some Apple platforms
does not implement 'system'.
This commit is contained in:
Roberto Ierusalimschy 2023-01-24 15:04:17 -03:00
parent 314745ed84
commit d69789da1c

View File

@ -138,12 +138,28 @@
/* }================================================================== */
/*
** Despite claiming to be ISO, the C library in some Apple platforms
** does not implement 'system'.
*/
#if !defined(l_system) && defined(__APPLE__) /* { */
#include "TargetConditionals.h"
#if TARGET_OS_IOS || TARGET_OS_WATCH || TARGET_OS_TV
#define l_system(cmd) ((cmd) == NULL ? 0 : -1)
#endif
#endif /* } */
#if !defined(l_system)
#define l_system(cmd) system(cmd) /* default definition */
#endif
static int os_execute (lua_State *L) {
const char *cmd = luaL_optstring(L, 1, NULL);
int stat;
errno = 0;
stat = system(cmd);
stat = l_system(cmd);
if (cmd != NULL)
return luaL_execresult(L, stat);
else {