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