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