I found my workaround, I edited the loslib.c file to use this instead:I'm going to send this to the lua mailing list and hopefully it will be incorporated in their sources (with a few edits to conform to their own library stuff)Code:typedef unsigned int lua_uint; size_t u2a( char *str, size_t size, lua_uint val, lua_uint base, lua_uint small ) { static const char bstr[] = "0123456789ABCDEF"; static const char sstr[] = "0123456789abcdef"; static const size_t min = (sizeof(int) * CHAR_BIT); const char *s = small ? sstr : bstr; size_t i = 0; if ( !str || !size || base < 2 || base > strlen(s) ) return 0; --size; if ( size < min ) { memset( str, 0, size ); return 0; } while ( val > 0u ) { str[i++] = s[val % base]; val /= base; } str[i] = 0; return i; } /* Avoids unistd.h, can expect sys/stat.h on all supported systems */ #include <sys/stat.h> size_t tmpname( char *str, size_t size ) { size_t i; struct stat m = {0}; if ( u2a( str, --size, 0, 2, 0 ) == 0 ) return 0; str[0] = '_'; ++str; do { i = u2a( str, size, rand(), 16, 1 ); } while ( stat(str,&m) == 1 ); return i; } static int os_tmpname (lua_State *L) { char buff[LUA_TMPNAMBUFSIZE]; if ( tmpname(buff, LUA_TMPNAMBUFSIZE) == 0 ) return luaL_error(L, "unable to generate a unique filename"); lua_pushstring(L, buff); return 1; }