loader.lua: Expose errno table to lua
Reviewed by: kevans Sponsored by: Dell EMC Isilon Differential Revision: https://reviews.freebsd.org/D14454
This commit is contained in:
parent
c1ab36f54d
commit
f91f3926e0
@ -39,8 +39,10 @@ __FBSDID("$FreeBSD$");
|
|||||||
#include <ldebug.h>
|
#include <ldebug.h>
|
||||||
#include <lauxlib.h>
|
#include <lauxlib.h>
|
||||||
#include <lualib.h>
|
#include <lualib.h>
|
||||||
#include <lutils.h>
|
|
||||||
|
#include <lerrno.h>
|
||||||
#include <lfs.h>
|
#include <lfs.h>
|
||||||
|
#include <lutils.h>
|
||||||
|
|
||||||
struct interp_lua_softc {
|
struct interp_lua_softc {
|
||||||
lua_State *luap;
|
lua_State *luap;
|
||||||
@ -86,6 +88,7 @@ static const luaL_Reg loadedlibs[] = {
|
|||||||
// {LUA_MATHLIBNAME, luaopen_math},
|
// {LUA_MATHLIBNAME, luaopen_math},
|
||||||
// {LUA_UTF8LIBNAME, luaopen_utf8},
|
// {LUA_UTF8LIBNAME, luaopen_utf8},
|
||||||
// {LUA_DBLIBNAME, luaopen_debug},
|
// {LUA_DBLIBNAME, luaopen_debug},
|
||||||
|
{"errno", luaopen_errno},
|
||||||
{"io", luaopen_io},
|
{"io", luaopen_io},
|
||||||
{"lfs", luaopen_lfs},
|
{"lfs", luaopen_lfs},
|
||||||
{"loader", luaopen_loader},
|
{"loader", luaopen_loader},
|
||||||
|
@ -21,7 +21,7 @@ SRCS+= lauxlib.c lbaselib.c lstrlib.c loadlib.c
|
|||||||
#SRCS+= lbitlib.c liolib.c lmathlib.c loslib.c ltablib.c
|
#SRCS+= lbitlib.c liolib.c lmathlib.c loslib.c ltablib.c
|
||||||
|
|
||||||
# Our utilities.
|
# Our utilities.
|
||||||
SRCS+= lfs.c lstd.c lutils.c
|
SRCS+= lerrno.c lfs.c lstd.c lutils.c
|
||||||
|
|
||||||
WARNS= 3
|
WARNS= 3
|
||||||
|
|
||||||
|
180
stand/liblua/lerrno.c
Normal file
180
stand/liblua/lerrno.c
Normal file
@ -0,0 +1,180 @@
|
|||||||
|
/*-
|
||||||
|
* Copyright (c) 2018 Conrad Meyer <cem@FreeBSD.org>
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
* 1. Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||||
|
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||||
|
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||||
|
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||||
|
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||||
|
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||||
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
|
* SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <sys/cdefs.h>
|
||||||
|
__FBSDID("$FreeBSD$");
|
||||||
|
|
||||||
|
#define _WANT_KERNEL_ERRNO 1
|
||||||
|
#include <errno.h>
|
||||||
|
|
||||||
|
#include <lua.h>
|
||||||
|
#include "lauxlib.h"
|
||||||
|
#include "lerrno.h"
|
||||||
|
|
||||||
|
#ifndef nitems
|
||||||
|
#define nitems(x) (sizeof((x)) / sizeof((x)[0]))
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Populated with:
|
||||||
|
* $ egrep "^#define.E" sys/sys/errno.h | \
|
||||||
|
* awk '{ print "\tENTRY(" $2 ")," }' >> lerrno.c
|
||||||
|
*/
|
||||||
|
#define ENTRY(name) { #name, name }
|
||||||
|
static const struct err_name_number {
|
||||||
|
const char *err_name;
|
||||||
|
int err_num;
|
||||||
|
} errnoconstants[] = {
|
||||||
|
ENTRY(EPERM),
|
||||||
|
ENTRY(ENOENT),
|
||||||
|
ENTRY(ESRCH),
|
||||||
|
ENTRY(EINTR),
|
||||||
|
ENTRY(EIO),
|
||||||
|
ENTRY(ENXIO),
|
||||||
|
ENTRY(E2BIG),
|
||||||
|
ENTRY(ENOEXEC),
|
||||||
|
ENTRY(EBADF),
|
||||||
|
ENTRY(ECHILD),
|
||||||
|
ENTRY(EDEADLK),
|
||||||
|
ENTRY(ENOMEM),
|
||||||
|
ENTRY(EACCES),
|
||||||
|
ENTRY(EFAULT),
|
||||||
|
ENTRY(ENOTBLK),
|
||||||
|
ENTRY(EBUSY),
|
||||||
|
ENTRY(EEXIST),
|
||||||
|
ENTRY(EXDEV),
|
||||||
|
ENTRY(ENODEV),
|
||||||
|
ENTRY(ENOTDIR),
|
||||||
|
ENTRY(EISDIR),
|
||||||
|
ENTRY(EINVAL),
|
||||||
|
ENTRY(ENFILE),
|
||||||
|
ENTRY(EMFILE),
|
||||||
|
ENTRY(ENOTTY),
|
||||||
|
ENTRY(ETXTBSY),
|
||||||
|
ENTRY(EFBIG),
|
||||||
|
ENTRY(ENOSPC),
|
||||||
|
ENTRY(ESPIPE),
|
||||||
|
ENTRY(EROFS),
|
||||||
|
ENTRY(EMLINK),
|
||||||
|
ENTRY(EPIPE),
|
||||||
|
ENTRY(EDOM),
|
||||||
|
ENTRY(ERANGE),
|
||||||
|
ENTRY(EAGAIN),
|
||||||
|
ENTRY(EWOULDBLOCK),
|
||||||
|
ENTRY(EINPROGRESS),
|
||||||
|
ENTRY(EALREADY),
|
||||||
|
ENTRY(ENOTSOCK),
|
||||||
|
ENTRY(EDESTADDRREQ),
|
||||||
|
ENTRY(EMSGSIZE),
|
||||||
|
ENTRY(EPROTOTYPE),
|
||||||
|
ENTRY(ENOPROTOOPT),
|
||||||
|
ENTRY(EPROTONOSUPPORT),
|
||||||
|
ENTRY(ESOCKTNOSUPPORT),
|
||||||
|
ENTRY(EOPNOTSUPP),
|
||||||
|
ENTRY(ENOTSUP),
|
||||||
|
ENTRY(EPFNOSUPPORT),
|
||||||
|
ENTRY(EAFNOSUPPORT),
|
||||||
|
ENTRY(EADDRINUSE),
|
||||||
|
ENTRY(EADDRNOTAVAIL),
|
||||||
|
ENTRY(ENETDOWN),
|
||||||
|
ENTRY(ENETUNREACH),
|
||||||
|
ENTRY(ENETRESET),
|
||||||
|
ENTRY(ECONNABORTED),
|
||||||
|
ENTRY(ECONNRESET),
|
||||||
|
ENTRY(ENOBUFS),
|
||||||
|
ENTRY(EISCONN),
|
||||||
|
ENTRY(ENOTCONN),
|
||||||
|
ENTRY(ESHUTDOWN),
|
||||||
|
ENTRY(ETOOMANYREFS),
|
||||||
|
ENTRY(ETIMEDOUT),
|
||||||
|
ENTRY(ECONNREFUSED),
|
||||||
|
ENTRY(ELOOP),
|
||||||
|
ENTRY(ENAMETOOLONG),
|
||||||
|
ENTRY(EHOSTDOWN),
|
||||||
|
ENTRY(EHOSTUNREACH),
|
||||||
|
ENTRY(ENOTEMPTY),
|
||||||
|
ENTRY(EPROCLIM),
|
||||||
|
ENTRY(EUSERS),
|
||||||
|
ENTRY(EDQUOT),
|
||||||
|
ENTRY(ESTALE),
|
||||||
|
ENTRY(EREMOTE),
|
||||||
|
ENTRY(EBADRPC),
|
||||||
|
ENTRY(ERPCMISMATCH),
|
||||||
|
ENTRY(EPROGUNAVAIL),
|
||||||
|
ENTRY(EPROGMISMATCH),
|
||||||
|
ENTRY(EPROCUNAVAIL),
|
||||||
|
ENTRY(ENOLCK),
|
||||||
|
ENTRY(ENOSYS),
|
||||||
|
ENTRY(EFTYPE),
|
||||||
|
ENTRY(EAUTH),
|
||||||
|
ENTRY(ENEEDAUTH),
|
||||||
|
ENTRY(EIDRM),
|
||||||
|
ENTRY(ENOMSG),
|
||||||
|
ENTRY(EOVERFLOW),
|
||||||
|
ENTRY(ECANCELED),
|
||||||
|
ENTRY(EILSEQ),
|
||||||
|
ENTRY(ENOATTR),
|
||||||
|
ENTRY(EDOOFUS),
|
||||||
|
ENTRY(EBADMSG),
|
||||||
|
ENTRY(EMULTIHOP),
|
||||||
|
ENTRY(ENOLINK),
|
||||||
|
ENTRY(EPROTO),
|
||||||
|
ENTRY(ENOTCAPABLE),
|
||||||
|
ENTRY(ECAPMODE),
|
||||||
|
ENTRY(ENOTRECOVERABLE),
|
||||||
|
ENTRY(EOWNERDEAD),
|
||||||
|
ENTRY(ELAST),
|
||||||
|
ENTRY(ERESTART),
|
||||||
|
ENTRY(EJUSTRETURN),
|
||||||
|
ENTRY(ENOIOCTL),
|
||||||
|
ENTRY(EDIRIOCTL),
|
||||||
|
ENTRY(ERELOOKUP),
|
||||||
|
};
|
||||||
|
#undef ENTRY
|
||||||
|
|
||||||
|
static void
|
||||||
|
lerrno_register(lua_State *L)
|
||||||
|
{
|
||||||
|
size_t i;
|
||||||
|
|
||||||
|
for (i = 0; i < nitems(errnoconstants); i++) {
|
||||||
|
lua_pushinteger(L, errnoconstants[i].err_num);
|
||||||
|
lua_setfield(L, -2, errnoconstants[i].err_name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static const struct luaL_Reg errnolib[] = {
|
||||||
|
/* Extra bogus entry required by luaL_newlib API */
|
||||||
|
{ NULL, NULL },
|
||||||
|
};
|
||||||
|
|
||||||
|
int
|
||||||
|
luaopen_errno(lua_State *L)
|
||||||
|
{
|
||||||
|
luaL_newlib(L, errnolib);
|
||||||
|
lerrno_register(L);
|
||||||
|
return 1;
|
||||||
|
}
|
33
stand/liblua/lerrno.h
Normal file
33
stand/liblua/lerrno.h
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
/*-
|
||||||
|
* Copyright (c) 2018 Conrad Meyer <cem@FreeBSD.org>
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
* 1. Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||||
|
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||||
|
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||||
|
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||||
|
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||||
|
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||||
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
|
* SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
* $FreeBSD$
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <lua.h>
|
||||||
|
|
||||||
|
int luaopen_errno(lua_State *L);
|
Loading…
Reference in New Issue
Block a user