summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKyle Evans <kevans@FreeBSD.org>2020-12-12 21:25:38 +0000
committerKyle Evans <kevans@FreeBSD.org>2020-12-12 21:25:38 +0000
commit0a0d522b368b31ec51611b798047a75b52855f39 (patch)
treed52317fba663529c16271a60e95400ce194a9730
parent3420068a73e554b30a86f9327b1a63f40e3b4568 (diff)
downloadsrc-test2-0a0d522b368b31ec51611b798047a75b52855f39.tar.gz
src-test2-0a0d522b368b31ec51611b798047a75b52855f39.zip
Notes
-rw-r--r--stand/common/interp_lua.c1
-rw-r--r--stand/liblua/Makefile2
-rw-r--r--stand/liblua/lpager.c89
-rw-r--r--stand/liblua/lutils.h1
4 files changed, 92 insertions, 1 deletions
diff --git a/stand/common/interp_lua.c b/stand/common/interp_lua.c
index 0a6035e7bb28..94001918e151 100644
--- a/stand/common/interp_lua.c
+++ b/stand/common/interp_lua.c
@@ -95,6 +95,7 @@ static const luaL_Reg loadedlibs[] = {
{"io", luaopen_io},
{"lfs", luaopen_lfs},
{"loader", luaopen_loader},
+ {"pager", luaopen_pager},
{NULL, NULL}
};
diff --git a/stand/liblua/Makefile b/stand/liblua/Makefile
index 0f4047769b77..434268063158 100644
--- a/stand/liblua/Makefile
+++ b/stand/liblua/Makefile
@@ -23,7 +23,7 @@ SRCS+= lauxlib.c lbaselib.c lstrlib.c loadlib.c
#SRCS+= lbitlib.c liolib.c lmathlib.c loslib.c ltablib.c
# Our utilities.
-SRCS+= lerrno.c lstd.c lutils.c
+SRCS+= lerrno.c lpager.c lstd.c lutils.c
.PATH: ${FLUASRC}/modules
SRCS+= lfs.c
diff --git a/stand/liblua/lpager.c b/stand/liblua/lpager.c
new file mode 100644
index 000000000000..910931e11d58
--- /dev/null
+++ b/stand/liblua/lpager.c
@@ -0,0 +1,89 @@
+/*-
+ * Copyright (c) 2020 Kyle Evans <kevans@FreeBSD.org>
+ *
+ * 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$");
+
+#include <lua.h>
+#include "lauxlib.h"
+
+/* Open the pager. No arguments, no return value. */
+static int
+lpager_open(lua_State *L)
+{
+
+ pager_open();
+ return (0);
+}
+
+/*
+ * Output to the pager. All arguments are interpreted as strings and passed to
+ * pager_output(). No return value.
+ */
+static int
+lpager_output(lua_State *L)
+{
+ const char *outstr;
+ int i;
+
+ for (i = 1; i <= lua_gettop(L); i++) {
+ outstr = luaL_tolstring(L, i, NULL);
+ pager_output(outstr);
+ lua_pop(L, -1);
+ }
+
+ return (0);
+}
+
+/* Output to the pager from a file. Takes a filename, no return value. */
+static int
+lpager_file(lua_State *L)
+{
+
+ return (pager_file(luaL_checkstring(L, 1)));
+}
+
+static int
+lpager_close(lua_State *L)
+{
+
+ pager_close();
+ return (0);
+}
+
+static const struct luaL_Reg pagerlib[] = {
+ { "open", lpager_open },
+ { "output", lpager_output },
+ { "file", lpager_file },
+ { "close", lpager_close },
+ { NULL, NULL },
+};
+
+int
+luaopen_pager(lua_State *L)
+{
+ luaL_newlib(L, pagerlib);
+ return 1;
+}
diff --git a/stand/liblua/lutils.h b/stand/liblua/lutils.h
index 6d14807160e4..d7d968b705bb 100644
--- a/stand/liblua/lutils.h
+++ b/stand/liblua/lutils.h
@@ -30,3 +30,4 @@
int luaopen_loader(lua_State *);
int luaopen_io(lua_State *);
+int luaopen_pager(lua_State *);