<h2 id="util">Utility Functions</h2>
+<h3 id="ffi_errno"><tt>err = ffi.errno()</tt></h3>
+<p>
+Returns the error number set by the last C function call which
+indicated an error condition.
+</p>
+<p>
+This function offers a portable and OS-independent way to get the error
+number. Note that only <em>some</em> C functions set the error
+number. And it's only significant if the function actually indicated an
+error condition (e.g. with a return value of <tt>-1</tt> or
+<tt>NULL</tt>). Otherwise, it may or may not contain any previously set
+value.
+</p>
+<p>
+You're advised to call this function only when needed and as close as
+possible after the return of the related C function. The
+<tt>errno</tt> value is preserved across hooks, memory allocations,
+invocations of the JIT compiler and other internal VM activity. The same
+applies to the value returned by <tt>GetLastError()</tt> on Windows, but
+you need to declare and call it yourself.
+</p>
+
<h3 id="ffi_string"><tt>str = ffi.string(ptr [,len])</tt></h3>
<p>
Creates an interned Lua string from the data pointed to by
#define lib_ffi_c
#define LUA_LIB
+#include <errno.h>
+
#include "lua.h"
#include "lauxlib.h"
#include "lualib.h"
return 0;
}
+LJLIB_CF(ffi_errno)
+{
+ setintV(L->top++, errno);
+ return 1;
+}
+
LJLIB_CF(ffi_string) LJLIB_REC(.)
{
CTState *cts = ctype_cts(L);