mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-05-29 08:42:28 +00:00
Make fixes and improvements
- Polyfill UTIME_OMIT on XNU - Refactor Lua build code so it's better - Add unix module to lua.com (Discord request) - Add unix.utimensat() and unix.futimens() to redbean - Avoid creating double slash path in linenoise (#428) - Remove double slashes in NT paths automatically (#428) - Make strerror() smarter about showing NT errors (#428) Fixes #428
This commit is contained in:
parent
67b28b9af1
commit
c1cfca8ae1
18 changed files with 569 additions and 194 deletions
7
third_party/lua/ldo.c
vendored
7
third_party/lua/ldo.c
vendored
|
@ -27,8 +27,11 @@
|
|||
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||
#define ldo_c
|
||||
#define LUA_CORE
|
||||
#include "libc/bits/weaken.h"
|
||||
#include "libc/log/log.h"
|
||||
#include "libc/runtime/gc.h"
|
||||
#include "libc/runtime/internal.h"
|
||||
#include "libc/runtime/runtime.h"
|
||||
#include "third_party/lua/lapi.h"
|
||||
#include "third_party/lua/ldebug.h"
|
||||
#include "third_party/lua/ldo.h"
|
||||
|
@ -149,7 +152,9 @@ l_noret luaD_throw (lua_State *L, int errcode) {
|
|||
lua_unlock(L);
|
||||
g->panic(L); /* call panic function (last chance to jump out) */
|
||||
}
|
||||
__die();
|
||||
if (weaken(__die)) weaken(__die)();
|
||||
__restorewintty();
|
||||
_Exit(41);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
4
third_party/lua/lua.main.c
vendored
4
third_party/lua/lua.main.c
vendored
|
@ -30,7 +30,6 @@
|
|||
#include "libc/calls/struct/sigaction.h"
|
||||
#include "libc/dce.h"
|
||||
#include "libc/errno.h"
|
||||
#include "libc/intrin/kprintf.h"
|
||||
#include "libc/log/log.h"
|
||||
#include "libc/runtime/gc.h"
|
||||
#include "libc/runtime/stack.h"
|
||||
|
@ -47,6 +46,7 @@
|
|||
#include "third_party/lua/lrepl.h"
|
||||
#include "third_party/lua/lua.h"
|
||||
#include "third_party/lua/lualib.h"
|
||||
#include "third_party/lua/lunix.h"
|
||||
#include "tool/args/args.h"
|
||||
// clang-format off
|
||||
|
||||
|
@ -364,6 +364,8 @@ static int pmain (lua_State *L) {
|
|||
lua_setfield(L, LUA_REGISTRYINDEX, "LUA_NOENV");
|
||||
}
|
||||
luaL_openlibs(L); /* open standard libraries */
|
||||
luaL_requiref(L, "unix", LuaUnix, 1);
|
||||
lua_pop(L, 1);
|
||||
createargtable(L, argv, argc, script); /* create table 'arg' */
|
||||
lua_gc(L, LUA_GCGEN, 0, 0); /* GC in generational mode */
|
||||
if (!(args & has_E)) { /* no option '-E'? */
|
||||
|
|
354
third_party/lua/lua.mk
vendored
354
third_party/lua/lua.mk
vendored
|
@ -3,105 +3,299 @@
|
|||
|
||||
PKGS += THIRD_PARTY_LUA
|
||||
|
||||
THIRD_PARTY_LUA_FILES := $(wildcard third_party/lua/*)
|
||||
THIRD_PARTY_LUA_SRCS = $(filter %.c,$(THIRD_PARTY_LUA_FILES))
|
||||
THIRD_PARTY_LUA_HDRS = $(filter %.h,$(THIRD_PARTY_LUA_FILES))
|
||||
THIRD_PARTY_LUA_BINS = $(THIRD_PARTY_LUA_COMS) $(THIRD_PARTY_LUA_COMS:%=%.dbg)
|
||||
THIRD_PARTY_LUA = $(THIRD_PARTY_LUA_DEPS) $(THIRD_PARTY_LUA_A)
|
||||
THIRD_PARTY_LUA_A = o/$(MODE)/third_party/lua/lua.a
|
||||
|
||||
THIRD_PARTY_LUA_OBJS = \
|
||||
$(THIRD_PARTY_LUA_SRCS:%.c=o/$(MODE)/%.o)
|
||||
|
||||
THIRD_PARTY_LUA_COMS = \
|
||||
o/$(MODE)/third_party/lua/lua.com \
|
||||
THIRD_PARTY_LUA_COMS = \
|
||||
o/$(MODE)/third_party/lua/lua.com \
|
||||
o/$(MODE)/third_party/lua/luac.com
|
||||
|
||||
THIRD_PARTY_LUA_CHECKS = \
|
||||
$(THIRD_PARTY_LUA_A).pkg \
|
||||
$(THIRD_PARTY_LUA_HDRS:%=o/$(MODE)/%.ok)
|
||||
THIRD_PARTY_LUA_BINS = \
|
||||
$(THIRD_PARTY_LUA_COMS) \
|
||||
$(THIRD_PARTY_LUA_COMS:%=%.dbg)
|
||||
|
||||
THIRD_PARTY_LUA_DIRECTDEPS = \
|
||||
LIBC_CALLS \
|
||||
LIBC_FMT \
|
||||
LIBC_INTRIN \
|
||||
LIBC_MEM \
|
||||
LIBC_NEXGEN32E \
|
||||
LIBC_RUNTIME \
|
||||
LIBC_STDIO \
|
||||
LIBC_STR \
|
||||
LIBC_SYSV \
|
||||
LIBC_LOG \
|
||||
LIBC_TIME \
|
||||
LIBC_X \
|
||||
LIBC_TINYMATH \
|
||||
LIBC_UNICODE \
|
||||
NET_HTTP \
|
||||
THIRD_PARTY_LINENOISE \
|
||||
THIRD_PARTY_GDTOA \
|
||||
TOOL_ARGS
|
||||
THIRD_PARTY_LUA_CHECKS = \
|
||||
$(THIRD_PARTY_LUA_A).pkg \
|
||||
$(THIRD_PARTY_LUA_UNIX).pkg \
|
||||
$(THIRD_PARTY_LUA_HDRS:%=o/$(MODE)/%.ok) \
|
||||
o/$(MODE)/third_party/lua/lua.com.pkg \
|
||||
o/$(MODE)/third_party/lua/luac.com.pkg
|
||||
|
||||
THIRD_PARTY_LUA_DEPS := \
|
||||
$(call uniq,$(foreach x,$(THIRD_PARTY_LUA_DIRECTDEPS),$($(x))))
|
||||
################################################################################
|
||||
# lua.a
|
||||
|
||||
$(THIRD_PARTY_LUA_A): \
|
||||
third_party/lua/ \
|
||||
$(THIRD_PARTY_LUA_A).pkg \
|
||||
$(filter-out %.main.o,$(THIRD_PARTY_LUA_OBJS))
|
||||
THIRD_PARTY_LUA = \
|
||||
$(THIRD_PARTY_LUA_A_DEPS) \
|
||||
$(THIRD_PARTY_LUA_A)
|
||||
|
||||
$(THIRD_PARTY_LUA_A).pkg: \
|
||||
$(THIRD_PARTY_LUA_OBJS) \
|
||||
$(foreach x,$(THIRD_PARTY_LUA_DIRECTDEPS),$($(x)_A).pkg)
|
||||
THIRD_PARTY_LUA_ARTIFACTS += \
|
||||
THIRD_PARTY_LUA_A
|
||||
|
||||
o/$(MODE)/third_party/lua/lua.com.dbg: \
|
||||
$(THIRD_PARTY_LUA_DEPS) \
|
||||
$(THIRD_PARTY_LUA_A) \
|
||||
$(THIRD_PARTY_LUA_A).pkg \
|
||||
o/$(MODE)/third_party/lua/lua.main.o \
|
||||
$(CRT) \
|
||||
$(APE_NO_MODIFY_SELF)
|
||||
@$(APELINK)
|
||||
THIRD_PARTY_LUA_A = \
|
||||
o/$(MODE)/third_party/lua/lua.a
|
||||
|
||||
o/$(MODE)/third_party/lua/luac.com.dbg: \
|
||||
$(THIRD_PARTY_LUA_DEPS) \
|
||||
$(THIRD_PARTY_LUA_A) \
|
||||
$(THIRD_PARTY_LUA_A).pkg \
|
||||
o/$(MODE)/third_party/lua/luac.main.o \
|
||||
$(CRT) \
|
||||
$(APE_NO_MODIFY_SELF)
|
||||
@$(APELINK)
|
||||
THIRD_PARTY_LUA_A_HDRS = \
|
||||
third_party/lua/cosmo.h \
|
||||
third_party/lua/lapi.h \
|
||||
third_party/lua/lauxlib.h \
|
||||
third_party/lua/lcode.h \
|
||||
third_party/lua/lctype.h \
|
||||
third_party/lua/ldebug.h \
|
||||
third_party/lua/ldo.h \
|
||||
third_party/lua/lfunc.h \
|
||||
third_party/lua/lgc.h \
|
||||
third_party/lua/llex.h \
|
||||
third_party/lua/llimits.h \
|
||||
third_party/lua/lmem.h \
|
||||
third_party/lua/lobject.h \
|
||||
third_party/lua/lopcodes.h \
|
||||
third_party/lua/lparser.h \
|
||||
third_party/lua/lprefix.h \
|
||||
third_party/lua/lrepl.h \
|
||||
third_party/lua/lstate.h \
|
||||
third_party/lua/lstring.h \
|
||||
third_party/lua/ltable.h \
|
||||
third_party/lua/ltests.h \
|
||||
third_party/lua/ltm.h \
|
||||
third_party/lua/lua.h \
|
||||
third_party/lua/luaconf.h \
|
||||
third_party/lua/lualib.h \
|
||||
third_party/lua/lundump.h \
|
||||
third_party/lua/lvm.h \
|
||||
third_party/lua/lzio.h \
|
||||
third_party/lua/tms.h \
|
||||
third_party/lua/visitor.h
|
||||
|
||||
o/$(MODE)/third_party/lua/lua.com: \
|
||||
o/$(MODE)/third_party/lua/lua.com.dbg \
|
||||
o/$(MODE)/third_party/zip/zip.com \
|
||||
o/$(MODE)/tool/build/symtab.com
|
||||
@$(COMPILE) -AOBJCOPY -T$@ $(OBJCOPY) -S -O binary $< $@
|
||||
@$(COMPILE) -ASYMTAB o/$(MODE)/tool/build/symtab.com \
|
||||
-o o/$(MODE)/third_party/lua/.lua/.symtab $<
|
||||
@$(COMPILE) -AZIP -T$@ o/$(MODE)/third_party/zip/zip.com -9qj $@ \
|
||||
o/$(MODE)/third_party/lua/.lua/.symtab
|
||||
THIRD_PARTY_LUA_A_SRCS = \
|
||||
third_party/lua/escapeluastring.c \
|
||||
third_party/lua/lapi.c \
|
||||
third_party/lua/lauxlib.c \
|
||||
third_party/lua/lbaselib.c \
|
||||
third_party/lua/lcode.c \
|
||||
third_party/lua/lcorolib.c \
|
||||
third_party/lua/ldblib.c \
|
||||
third_party/lua/ldebug.c \
|
||||
third_party/lua/ldo.c \
|
||||
third_party/lua/ldump.c \
|
||||
third_party/lua/lfunc.c \
|
||||
third_party/lua/lgc.c \
|
||||
third_party/lua/linit.c \
|
||||
third_party/lua/liolib.c \
|
||||
third_party/lua/llex.c \
|
||||
third_party/lua/lmathlib.c \
|
||||
third_party/lua/lmem.c \
|
||||
third_party/lua/loadlib.c \
|
||||
third_party/lua/lobject.c \
|
||||
third_party/lua/lopcodes.c \
|
||||
third_party/lua/loslib.c \
|
||||
third_party/lua/lparser.c \
|
||||
third_party/lua/lrepl.c \
|
||||
third_party/lua/lstate.c \
|
||||
third_party/lua/lstring.c \
|
||||
third_party/lua/lstrlib.c \
|
||||
third_party/lua/ltable.c \
|
||||
third_party/lua/ltablib.c \
|
||||
third_party/lua/ltests.c \
|
||||
third_party/lua/ltm.c \
|
||||
third_party/lua/luacallwithtrace.c \
|
||||
third_party/lua/luaencodejsondata.c \
|
||||
third_party/lua/luaencodeluadata.c \
|
||||
third_party/lua/luaencodeurl.c \
|
||||
third_party/lua/luaformatstack.c \
|
||||
third_party/lua/luaparseurl.c \
|
||||
third_party/lua/luaprintstack.c \
|
||||
third_party/lua/luapushheader.c \
|
||||
third_party/lua/luapushheaders.c \
|
||||
third_party/lua/luapushlatin1.c \
|
||||
third_party/lua/luapushurlparams.c \
|
||||
third_party/lua/lundump.c \
|
||||
third_party/lua/lutf8lib.c \
|
||||
third_party/lua/lvm.c \
|
||||
third_party/lua/lzio.c \
|
||||
third_party/lua/visitor.c
|
||||
|
||||
o/$(MODE)/third_party/lua/lmathlib.o \
|
||||
o//third_party/lua/lgc.o: \
|
||||
OVERRIDE_CFLAGS += \
|
||||
THIRD_PARTY_LUA_A_OBJS = \
|
||||
$(THIRD_PARTY_LUA_A_SRCS:%.c=o/$(MODE)/%.o)
|
||||
|
||||
THIRD_PARTY_LUA_A_DIRECTDEPS = \
|
||||
LIBC_CALLS \
|
||||
LIBC_FMT \
|
||||
LIBC_INTRIN \
|
||||
LIBC_MEM \
|
||||
LIBC_NEXGEN32E \
|
||||
LIBC_RUNTIME \
|
||||
LIBC_STDIO \
|
||||
LIBC_STR \
|
||||
LIBC_SYSV \
|
||||
LIBC_LOG \
|
||||
LIBC_TIME \
|
||||
LIBC_X \
|
||||
LIBC_TINYMATH \
|
||||
LIBC_UNICODE \
|
||||
NET_HTTP \
|
||||
THIRD_PARTY_LINENOISE \
|
||||
THIRD_PARTY_GDTOA
|
||||
|
||||
THIRD_PARTY_LUA_A_DEPS := \
|
||||
$(call uniq,$(foreach x,$(THIRD_PARTY_LUA_A_DIRECTDEPS),$($(x))))
|
||||
|
||||
$(THIRD_PARTY_LUA_A): \
|
||||
third_party/lua/ \
|
||||
$(THIRD_PARTY_LUA_A).pkg \
|
||||
$(THIRD_PARTY_LUA_A_OBJS)
|
||||
|
||||
$(THIRD_PARTY_LUA_A).pkg: \
|
||||
$(THIRD_PARTY_LUA_A_OBJS) \
|
||||
$(foreach x,$(THIRD_PARTY_LUA_A_DIRECTDEPS),$($(x)_A).pkg)
|
||||
|
||||
o/$(MODE)/third_party/lua/lmathlib.o \
|
||||
o//third_party/lua/lgc.o: \
|
||||
OVERRIDE_CFLAGS += \
|
||||
-O2
|
||||
|
||||
o/$(MODE)/third_party/lua/lvm.o: \
|
||||
OVERRIDE_CFLAGS += \
|
||||
o/$(MODE)/third_party/lua/lvm.o: \
|
||||
OVERRIDE_CFLAGS += \
|
||||
-fno-gcse
|
||||
|
||||
o/$(MODE)/third_party/lua/lauxlib.o: \
|
||||
OVERRIDE_CFLAGS += \
|
||||
o/$(MODE)/third_party/lua/lauxlib.o: \
|
||||
OVERRIDE_CFLAGS += \
|
||||
-DSTACK_FRAME_UNLIMITED
|
||||
|
||||
$(THIRD_PARTY_LUA_OBJS): \
|
||||
OVERRIDE_CFLAGS += \
|
||||
-ffunction-sections \
|
||||
$(THIRD_PARTY_LUA_A_OBJS): \
|
||||
OVERRIDE_CFLAGS += \
|
||||
-ffunction-sections \
|
||||
-fdata-sections
|
||||
|
||||
################################################################################
|
||||
# lunix.a
|
||||
|
||||
THIRD_PARTY_LUA_UNIX = \
|
||||
$(THIRD_PARTY_LUA_A_DEPS) \
|
||||
$(THIRD_PARTY_LUA_A)
|
||||
|
||||
THIRD_PARTY_LUA_ARTIFACTS += \
|
||||
THIRD_PARTY_LUA_UNIX
|
||||
|
||||
THIRD_PARTY_LUA_UNIX_A = \
|
||||
o/$(MODE)/third_party/lua/lunix.a
|
||||
|
||||
THIRD_PARTY_LUA_UNIX_HDRS = \
|
||||
third_party/lua/lunix.h
|
||||
|
||||
THIRD_PARTY_LUA_UNIX_SRCS = \
|
||||
third_party/lua/lunix.c
|
||||
|
||||
THIRD_PARTY_LUA_UNIX_OBJS = \
|
||||
$(THIRD_PARTY_LUA_UNIX_SRCS:%.c=o/$(MODE)/%.o)
|
||||
|
||||
THIRD_PARTY_LUA_UNIX_DIRECTDEPS = \
|
||||
LIBC_CALLS \
|
||||
LIBC_FMT \
|
||||
LIBC_INTRIN \
|
||||
LIBC_LOG \
|
||||
LIBC_MEM \
|
||||
LIBC_NEXGEN32E \
|
||||
LIBC_NT_KERNEL32 \
|
||||
LIBC_RUNTIME \
|
||||
LIBC_SOCK \
|
||||
LIBC_STDIO \
|
||||
LIBC_STR \
|
||||
LIBC_STUBS \
|
||||
LIBC_SYSV \
|
||||
LIBC_TIME \
|
||||
LIBC_X \
|
||||
THIRD_PARTY_LUA
|
||||
|
||||
THIRD_PARTY_LUA_UNIX_DEPS := \
|
||||
$(call uniq,$(foreach x,$(THIRD_PARTY_LUA_UNIX_DIRECTDEPS),$($(x))))
|
||||
|
||||
$(THIRD_PARTY_LUA_A): \
|
||||
third_party/lua/ \
|
||||
$(THIRD_PARTY_LUA_UNIX_A).pkg \
|
||||
$(THIRD_PARTY_LUA_UNIX_OBJS)
|
||||
|
||||
$(THIRD_PARTY_LUA_UNIX_A).pkg: \
|
||||
$(THIRD_PARTY_LUA_UNIX_OBJS) \
|
||||
$(foreach x,$(THIRD_PARTY_LUA_UNIX_DIRECTDEPS),$($(x)_A).pkg)
|
||||
|
||||
################################################################################
|
||||
# lua.com
|
||||
|
||||
THIRD_PARTY_LUA_LUA_DIRECTDEPS = \
|
||||
LIBC_CALLS \
|
||||
LIBC_FMT \
|
||||
LIBC_INTRIN \
|
||||
LIBC_NEXGEN32E \
|
||||
LIBC_STDIO \
|
||||
LIBC_STR \
|
||||
LIBC_SYSV \
|
||||
THIRD_PARTY_LINENOISE \
|
||||
THIRD_PARTY_LUA \
|
||||
THIRD_PARTY_LUA_UNIX \
|
||||
TOOL_ARGS
|
||||
|
||||
THIRD_PARTY_LUA_LUA_DEPS := \
|
||||
$(call uniq,$(foreach x,$(THIRD_PARTY_LUA_LUA_DIRECTDEPS),$($(x))))
|
||||
|
||||
o/$(MODE)/third_party/lua/lua.com.pkg: \
|
||||
o/$(MODE)/third_party/lua/lua.main.o \
|
||||
$(foreach x,$(THIRD_PARTY_LUA_LUA_DIRECTDEPS),$($(x)_A).pkg)
|
||||
|
||||
o/$(MODE)/third_party/lua/lua.com.dbg: \
|
||||
$(THIRD_PARTY_LUA_LUA_DEPS) \
|
||||
o/$(MODE)/third_party/lua/lua.com.pkg \
|
||||
o/$(MODE)/third_party/lua/lua.main.o \
|
||||
$(CRT) \
|
||||
$(APE_NO_MODIFY_SELF)
|
||||
@$(APELINK)
|
||||
|
||||
o/dbg/third_party/lua/lua.com: \
|
||||
o/dbg/third_party/lua/lua.com.dbg \
|
||||
o/dbg/third_party/zip/zip.com \
|
||||
o/dbg/tool/build/symtab.com
|
||||
@$(COMPILE) -AOBJCOPY -T$@ $(OBJCOPY) -S -O binary $< $@
|
||||
@$(COMPILE) -ASYMTAB o/dbg/tool/build/symtab.com \
|
||||
-o o/dbg/third_party/lua/.lua/.symtab $<
|
||||
@$(COMPILE) -AZIP -T$@ o/dbg/third_party/zip/zip.com \
|
||||
-9qj $@ o/dbg/third_party/lua/.lua/.symtab
|
||||
|
||||
################################################################################
|
||||
# luac.com
|
||||
|
||||
THIRD_PARTY_LUA_LUAC_DIRECTDEPS = \
|
||||
LIBC_FMT \
|
||||
LIBC_INTRIN \
|
||||
LIBC_NEXGEN32E \
|
||||
LIBC_RUNTIME \
|
||||
LIBC_STDIO \
|
||||
LIBC_STR \
|
||||
LIBC_SYSV \
|
||||
LIBC_UNICODE \
|
||||
THIRD_PARTY_LUA \
|
||||
TOOL_ARGS
|
||||
|
||||
THIRD_PARTY_LUA_LUAC_DEPS := \
|
||||
$(call uniq,$(foreach x,$(THIRD_PARTY_LUA_LUAC_DIRECTDEPS),$($(x))))
|
||||
|
||||
o/$(MODE)/third_party/lua/luac.com.pkg: \
|
||||
o/$(MODE)/third_party/lua/luac.main.o \
|
||||
$(foreach x,$(THIRD_PARTY_LUA_LUAC_DIRECTDEPS),$($(x)_A).pkg)
|
||||
|
||||
o/$(MODE)/third_party/lua/luac.com.dbg: \
|
||||
$(THIRD_PARTY_LUA_LUAC_DEPS) \
|
||||
o/$(MODE)/third_party/lua/luac.com.pkg \
|
||||
o/$(MODE)/third_party/lua/luac.main.o \
|
||||
$(CRT) \
|
||||
$(APE_NO_MODIFY_SELF)
|
||||
@$(APELINK)
|
||||
|
||||
################################################################################
|
||||
|
||||
THIRD_PARTY_LUA_LIBS = $(foreach x,$(THIRD_PARTY_LUA_ARTIFACTS),$($(x)))
|
||||
THIRD_PARTY_LUA_SRCS = $(foreach x,$(THIRD_PARTY_LUA_ARTIFACTS),$($(x)_SRCS))
|
||||
THIRD_PARTY_LUA_HDRS = $(foreach x,$(THIRD_PARTY_LUA_ARTIFACTS),$($(x)_HDRS))
|
||||
THIRD_PARTY_LUA_OBJS = $(foreach x,$(THIRD_PARTY_LUA_ARTIFACTS),$($(x)_OBJS))
|
||||
$(THIRD_PARTY_LUA_OBJS): third_party/lua/lua.mk
|
||||
|
||||
.PHONY: o/$(MODE)/third_party/lua
|
||||
o/$(MODE)/third_party/lua: \
|
||||
$(THIRD_PARTY_LUA_BINS) \
|
||||
o/$(MODE)/third_party/lua: \
|
||||
$(THIRD_PARTY_LUA_LIBS) \
|
||||
$(THIRD_PARTY_LUA_BINS) \
|
||||
$(THIRD_PARTY_LUA_CHECKS)
|
||||
|
|
2665
third_party/lua/lunix.c
vendored
Normal file
2665
third_party/lua/lunix.c
vendored
Normal file
File diff suppressed because it is too large
Load diff
11
third_party/lua/lunix.h
vendored
Normal file
11
third_party/lua/lunix.h
vendored
Normal file
|
@ -0,0 +1,11 @@
|
|||
#ifndef COSMOPOLITAN_THIRD_PARTY_LUA_LUNIX_H_
|
||||
#define COSMOPOLITAN_THIRD_PARTY_LUA_LUNIX_H_
|
||||
#include "third_party/lua/lauxlib.h"
|
||||
#if !(__ASSEMBLER__ + __LINKER__ + 0)
|
||||
COSMOPOLITAN_C_START_
|
||||
|
||||
int LuaUnix(lua_State *);
|
||||
|
||||
COSMOPOLITAN_C_END_
|
||||
#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
|
||||
#endif /* COSMOPOLITAN_THIRD_PARTY_LUA_LUNIX_H_ */
|
Loading…
Add table
Add a link
Reference in a new issue