1*dfc11533SChris Williamson /* 2*dfc11533SChris Williamson * CDDL HEADER START 3*dfc11533SChris Williamson * 4*dfc11533SChris Williamson * This file and its contents are supplied under the terms of the 5*dfc11533SChris Williamson * Common Development and Distribution License ("CDDL"), version 1.0. 6*dfc11533SChris Williamson * You may only use this file in accordance with the terms of version 7*dfc11533SChris Williamson * 1.0 of the CDDL. 8*dfc11533SChris Williamson * 9*dfc11533SChris Williamson * A full copy of the text of the CDDL should have accompanied this 10*dfc11533SChris Williamson * source. A copy of the CDDL is also available via the Internet at 11*dfc11533SChris Williamson * http://www.illumos.org/license/CDDL. 12*dfc11533SChris Williamson * 13*dfc11533SChris Williamson * CDDL HEADER END 14*dfc11533SChris Williamson */ 15*dfc11533SChris Williamson 16*dfc11533SChris Williamson /* 17*dfc11533SChris Williamson * Copyright (c) 2016 by Delphix. All rights reserved. 18*dfc11533SChris Williamson */ 19*dfc11533SChris Williamson 20*dfc11533SChris Williamson #include <sys/zcp_global.h> 21*dfc11533SChris Williamson 22*dfc11533SChris Williamson #include "lua.h" 23*dfc11533SChris Williamson #include "lauxlib.h" 24*dfc11533SChris Williamson 25*dfc11533SChris Williamson typedef struct zcp_errno_global { 26*dfc11533SChris Williamson const char *zeg_name; 27*dfc11533SChris Williamson int zeg_errno; 28*dfc11533SChris Williamson } zcp_errno_global_t; 29*dfc11533SChris Williamson 30*dfc11533SChris Williamson static const zcp_errno_global_t errno_globals[] = { 31*dfc11533SChris Williamson {"EPERM", EPERM}, 32*dfc11533SChris Williamson {"ENOENT", ENOENT}, 33*dfc11533SChris Williamson {"ESRCH", ESRCH}, 34*dfc11533SChris Williamson {"EINTR", EINTR}, 35*dfc11533SChris Williamson {"EIO", EIO}, 36*dfc11533SChris Williamson {"ENXIO", ENXIO}, 37*dfc11533SChris Williamson {"E2BIG", E2BIG}, 38*dfc11533SChris Williamson {"ENOEXEC", ENOEXEC}, 39*dfc11533SChris Williamson {"EBADF", EBADF}, 40*dfc11533SChris Williamson {"ECHILD", ECHILD}, 41*dfc11533SChris Williamson {"EAGAIN", EAGAIN}, 42*dfc11533SChris Williamson {"ENOMEM", ENOMEM}, 43*dfc11533SChris Williamson {"EACCES", EACCES}, 44*dfc11533SChris Williamson {"EFAULT", EFAULT}, 45*dfc11533SChris Williamson {"ENOTBLK", ENOTBLK}, 46*dfc11533SChris Williamson {"EBUSY", EBUSY}, 47*dfc11533SChris Williamson {"EEXIST", EEXIST}, 48*dfc11533SChris Williamson {"EXDEV", EXDEV}, 49*dfc11533SChris Williamson {"ENODEV", ENODEV}, 50*dfc11533SChris Williamson {"ENOTDIR", ENOTDIR}, 51*dfc11533SChris Williamson {"EISDIR", EISDIR}, 52*dfc11533SChris Williamson {"EINVAL", EINVAL}, 53*dfc11533SChris Williamson {"ENFILE", ENFILE}, 54*dfc11533SChris Williamson {"EMFILE", EMFILE}, 55*dfc11533SChris Williamson {"ENOTTY", ENOTTY}, 56*dfc11533SChris Williamson {"ETXTBSY", ETXTBSY}, 57*dfc11533SChris Williamson {"EFBIG", EFBIG}, 58*dfc11533SChris Williamson {"ENOSPC", ENOSPC}, 59*dfc11533SChris Williamson {"ESPIPE", ESPIPE}, 60*dfc11533SChris Williamson {"EROFS", EROFS}, 61*dfc11533SChris Williamson {"EMLINK", EMLINK}, 62*dfc11533SChris Williamson {"EPIPE", EPIPE}, 63*dfc11533SChris Williamson {"EDOM", EDOM}, 64*dfc11533SChris Williamson {"ERANGE", ERANGE}, 65*dfc11533SChris Williamson {"EDQUOT", EDQUOT}, 66*dfc11533SChris Williamson {NULL, NULL} 67*dfc11533SChris Williamson }; 68*dfc11533SChris Williamson 69*dfc11533SChris Williamson static void 70*dfc11533SChris Williamson zcp_load_errno_globals(lua_State *state) 71*dfc11533SChris Williamson { 72*dfc11533SChris Williamson const zcp_errno_global_t *global = errno_globals; 73*dfc11533SChris Williamson while (global->zeg_name != NULL) { 74*dfc11533SChris Williamson lua_pushnumber(state, (lua_Number)global->zeg_errno); 75*dfc11533SChris Williamson lua_setglobal(state, global->zeg_name); 76*dfc11533SChris Williamson global++; 77*dfc11533SChris Williamson } 78*dfc11533SChris Williamson } 79*dfc11533SChris Williamson 80*dfc11533SChris Williamson void 81*dfc11533SChris Williamson zcp_load_globals(lua_State *state) 82*dfc11533SChris Williamson { 83*dfc11533SChris Williamson zcp_load_errno_globals(state); 84*dfc11533SChris Williamson } 85