summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--3rdparty/README.md4
-rw-r--r--3rdparty/luv/.ci/install.bat270
-rw-r--r--3rdparty/luv/.ci/platform.sh15
-rw-r--r--3rdparty/luv/.ci/set_compiler_env.bat40
-rw-r--r--3rdparty/luv/.ci/setenv_lua.sh3
-rw-r--r--3rdparty/luv/.ci/setup_lua.sh122
-rw-r--r--3rdparty/luv/.ci/winmake.bat457
-rw-r--r--3rdparty/luv/.gitignore10
-rw-r--r--3rdparty/luv/.travis.yml36
-rw-r--r--3rdparty/luv/CMakeLists.txt191
-rw-r--r--3rdparty/luv/LICENSE.txt202
-rw-r--r--3rdparty/luv/Makefile61
-rw-r--r--3rdparty/luv/README.md213
-rw-r--r--3rdparty/luv/appveyor.yml42
-rw-r--r--3rdparty/luv/cmake/Modules/FindLibuv.cmake11
-rw-r--r--3rdparty/luv/cmake/Modules/FindLuaJIT.cmake55
-rw-r--r--3rdparty/luv/deps/lua.cmake128
-rw-r--r--3rdparty/luv/deps/lua_one.c97
-rw-r--r--3rdparty/luv/deps/luajit.cmake407
-rw-r--r--3rdparty/luv/deps/uv.cmake224
-rw-r--r--3rdparty/luv/docs.md1309
-rw-r--r--3rdparty/luv/examples/cqueues-main.lua31
-rw-r--r--3rdparty/luv/examples/cqueues-slave.lua55
-rw-r--r--3rdparty/luv/examples/echo-server-client.lua68
-rw-r--r--3rdparty/luv/examples/killing-children.lua24
-rw-r--r--3rdparty/luv/examples/lots-o-dns.lua49
-rw-r--r--3rdparty/luv/examples/repl.lua89
-rw-r--r--3rdparty/luv/examples/talking-to-children.lua47
-rw-r--r--3rdparty/luv/examples/tcp-cluster.lua84
-rw-r--r--3rdparty/luv/examples/timers.lua68
-rw-r--r--3rdparty/luv/examples/uvbook/helloworld.lua5
-rw-r--r--3rdparty/luv/examples/uvbook/idle-basic.lua14
-rw-r--r--3rdparty/luv/examples/uvbook/onchange.lua30
-rw-r--r--3rdparty/luv/examples/uvbook/queue-work.lua19
-rw-r--r--3rdparty/luv/examples/uvbook/tcp-echo-client.lua21
-rw-r--r--3rdparty/luv/examples/uvbook/tcp-echo-server.lua22
-rw-r--r--3rdparty/luv/examples/uvbook/thread-create.lua38
-rw-r--r--3rdparty/luv/examples/uvbook/uvcat.lua37
-rw-r--r--3rdparty/luv/examples/uvbook/uvtee.lua35
-rw-r--r--3rdparty/luv/lib/tap.lua165
-rw-r--r--3rdparty/luv/lib/utils.lua165
-rw-r--r--3rdparty/luv/luv-1.8.0-4.rockspec34
-rw-r--r--3rdparty/luv/msvcbuild.bat13
-rw-r--r--3rdparty/luv/src/async.c63
-rw-r--r--3rdparty/luv/src/check.c59
-rw-r--r--3rdparty/luv/src/constants.c649
-rw-r--r--3rdparty/luv/src/dns.c296
-rw-r--r--3rdparty/luv/src/fs.c614
-rw-r--r--3rdparty/luv/src/fs_event.c97
-rw-r--r--3rdparty/luv/src/fs_poll.c90
-rw-r--r--3rdparty/luv/src/handle.c173
-rw-r--r--3rdparty/luv/src/idle.c59
-rw-r--r--3rdparty/luv/src/lhandle.c116
-rw-r--r--3rdparty/luv/src/lhandle.h67
-rw-r--r--3rdparty/luv/src/loop.c92
-rw-r--r--3rdparty/luv/src/lreq.c71
-rw-r--r--3rdparty/luv/src/lreq.h43
-rw-r--r--3rdparty/luv/src/lthreadpool.h48
-rw-r--r--3rdparty/luv/src/luv.c519
-rw-r--r--3rdparty/luv/src/luv.h109
-rw-r--r--3rdparty/luv/src/misc.c316
-rw-r--r--3rdparty/luv/src/pipe.c114
-rw-r--r--3rdparty/luv/src/poll.c100
-rw-r--r--3rdparty/luv/src/prepare.c59
-rw-r--r--3rdparty/luv/src/process.c266
-rw-r--r--3rdparty/luv/src/req.c52
-rw-r--r--3rdparty/luv/src/schema.c16
-rw-r--r--3rdparty/luv/src/signal.c72
-rw-r--r--3rdparty/luv/src/stream.c263
-rw-r--r--3rdparty/luv/src/tcp.c182
-rw-r--r--3rdparty/luv/src/thread.c353
-rw-r--r--3rdparty/luv/src/timer.c84
-rw-r--r--3rdparty/luv/src/tty.c65
-rw-r--r--3rdparty/luv/src/udp.c260
-rw-r--r--3rdparty/luv/src/util.c56
-rw-r--r--3rdparty/luv/src/util.h26
-rw-r--r--3rdparty/luv/src/work.c224
-rw-r--r--3rdparty/luv/tests/manual-test-cluster.lua213
-rw-r--r--3rdparty/luv/tests/run.lua33
-rw-r--r--3rdparty/luv/tests/test-async.lua32
-rw-r--r--3rdparty/luv/tests/test-conversions.lua6
-rw-r--r--3rdparty/luv/tests/test-dns.lua125
-rw-r--r--3rdparty/luv/tests/test-fs.lua90
-rw-r--r--3rdparty/luv/tests/test-leaks.lua186
-rw-r--r--3rdparty/luv/tests/test-misc.lua85
-rw-r--r--3rdparty/luv/tests/test-prepare-check-idle-async.lua49
-rw-r--r--3rdparty/luv/tests/test-process.lua101
-rw-r--r--3rdparty/luv/tests/test-sigchld-after-lua_close.sh45
-rw-r--r--3rdparty/luv/tests/test-signal.lua40
-rw-r--r--3rdparty/luv/tests/test-tcp.lua114
-rw-r--r--3rdparty/luv/tests/test-thread.lua47
-rw-r--r--3rdparty/luv/tests/test-timer.lua87
-rw-r--r--3rdparty/luv/tests/test-work.lua48
-rw-r--r--plugins/coro-channel/LICENSE22
-rw-r--r--plugins/coro-channel/README.md2
-rw-r--r--plugins/coro-channel/init.lua128
-rw-r--r--plugins/coro-channel/plugin.json8
-rw-r--r--plugins/coro-fs/LICENSE22
-rw-r--r--plugins/coro-fs/README.md2
-rw-r--r--plugins/coro-fs/init.lua222
-rw-r--r--plugins/coro-fs/plugin.json8
-rw-r--r--plugins/coro-http/LICENSE22
-rw-r--r--plugins/coro-http/README.md2
-rw-r--r--plugins/coro-http/init.lua187
-rw-r--r--plugins/coro-http/plugin.json8
-rw-r--r--plugins/coro-net/LICENSE22
-rw-r--r--plugins/coro-net/README.md2
-rw-r--r--plugins/coro-net/init.lua113
-rw-r--r--plugins/coro-net/plugin.json8
-rw-r--r--plugins/coro-tls/LICENSE22
-rw-r--r--plugins/coro-tls/README.md2
-rw-r--r--plugins/coro-tls/init.lua122
-rw-r--r--plugins/coro-tls/plugin.json8
-rw-r--r--plugins/coro-wrapper/LICENSE22
-rw-r--r--plugins/coro-wrapper/README.md2
-rw-r--r--plugins/coro-wrapper/init.lua41
-rw-r--r--plugins/coro-wrapper/plugin.json8
-rw-r--r--plugins/http-codec/LICENSE202
-rw-r--r--plugins/http-codec/README.md2
-rw-r--r--plugins/http-codec/init.lua291
-rw-r--r--plugins/http-codec/plugin.json8
-rw-r--r--plugins/mime/LICENSE22
-rw-r--r--plugins/mime/README.md2
-rw-r--r--plugins/mime/init.lua194
-rw-r--r--plugins/mime/plugin.json8
-rw-r--r--plugins/path/LICENSE202
-rw-r--r--plugins/path/README.md2
-rw-r--r--plugins/path/init.lua139
-rw-r--r--plugins/path/plugin.json8
-rw-r--r--plugins/pretty-print/LICENSE202
-rw-r--r--plugins/pretty-print/README.md2
-rw-r--r--plugins/pretty-print/init.lua362
-rw-r--r--plugins/pretty-print/plugin.json8
-rw-r--r--plugins/querystring/LICENSE202
-rw-r--r--plugins/querystring/README.md2
-rw-r--r--plugins/querystring/init.lua105
-rw-r--r--plugins/querystring/plugin.json8
-rw-r--r--plugins/weblit/LICENSE22
-rw-r--r--plugins/weblit/README.md239
-rw-r--r--plugins/weblit/app.lua261
-rw-r--r--plugins/weblit/auto-headers.lua92
-rw-r--r--plugins/weblit/etag-cache.lua39
-rw-r--r--plugins/weblit/init.lua8
-rw-r--r--plugins/weblit/logger.lua10
-rw-r--r--plugins/weblit/plugin.json8
-rw-r--r--plugins/weblit/static.lua62
-rw-r--r--plugins/weblit/websocket.lua82
-rw-r--r--plugins/webserver/init.lua34
-rw-r--r--plugins/webserver/plugin.json9
-rw-r--r--plugins/websocket-codec/LICENSE22
-rw-r--r--plugins/websocket-codec/README.md2
-rw-r--r--plugins/websocket-codec/init.lua261
-rw-r--r--plugins/websocket-codec/plugin.json8
-rw-r--r--scripts/src/3rdparty.lua58
-rw-r--r--scripts/src/main.lua1
-rw-r--r--src/emu/luaengine.cpp18
156 files changed, 1 insertions, 16195 deletions
diff --git a/3rdparty/README.md b/3rdparty/README.md
index 0d8c4a47706..70cdf28de92 100644
--- a/3rdparty/README.md
+++ b/3rdparty/README.md
@@ -1,6 +1,6 @@
# **3rdparty** #
-benchmark - [Apache License, Version 2.0](http://opensource.org/licenses/Apache-2.0)
+benchmark - [Apache License, Version 2.0](http://opensource.org/licenses/Apache-2.0) (used only for testing, not part of distribution)
bgfx - [The BSD 2-Clause License](http://opensource.org/licenses/BSD-2-Clause)
@@ -32,8 +32,6 @@ luabridge - [The MIT License (MIT)](http://opensource.org/licenses/MIT)
luafilesystem - [The MIT License (MIT)](http://opensource.org/licenses/MIT)
-luv - [Apache License, Version 2.0](http://opensource.org/licenses/Apache-2.0)
-
lzma - [The GNU Lesser General Public License](http://opensource.org/licenses/LGPL-2.1)
portaudio - [Custom license](http://www.portaudio.com/license.html)
diff --git a/3rdparty/luv/.ci/install.bat b/3rdparty/luv/.ci/install.bat
deleted file mode 100644
index 1ee346dccc9..00000000000
--- a/3rdparty/luv/.ci/install.bat
+++ /dev/null
@@ -1,270 +0,0 @@
-@echo off
-
-cd %APPVEYOR_BUILD_FOLDER%
-
-:: =========================================================
-:: Set some defaults. Infer some variables.
-::
-:: These are set globally
-if "%LUA_VER%" NEQ "" (
- set LUA=lua
- set LUA_SHORTV=%LUA_VER:~0,3%
-) else (
- set LUA=luajit
- set LJ_SHORTV=%LJ_VER:~0,3%
- set LUA_SHORTV=5.1
-)
-
-:: defines LUA_DIR so Cmake can find this Lua install
-if "%LUA%"=="luajit" (
- set LUA_DIR=c:\lua\%platform%\lj%LJ_SHORTV%
-) else (
- set LUA_DIR=c:\lua\%platform%\%LUA_VER%
-)
-
-:: Now we declare a scope
-Setlocal EnableDelayedExpansion EnableExtensions
-
-if not defined LUAROCKS_URL set LUAROCKS_URL=http://keplerproject.github.io/luarocks/releases
-if not defined LUAROCKS_REPO set LUAROCKS_REPO=https://luarocks.org
-if not defined LUA_URL set LUA_URL=http://www.lua.org/ftp
-if defined NOCOMPAT (
- set COMPATFLAG=--nocompat
-) else (
- set COMPATFLAG=
-)
-if not defined LUAJIT_GIT_REPO set LUAJIT_GIT_REPO=https://github.com/LuaJIT/LuaJIT.git
-if not defined LUAJIT_URL set LUAJIT_URL=https://github.com/LuaJIT/LuaJIT/archive
-
-if not defined LR_EXTERNAL set LR_EXTERNAL=c:\external
-if not defined LUAROCKS_INSTALL set LUAROCKS_INSTALL=%LUA_DIR%\LuaRocks
-
-
-:: LuaRocks <= 2.2.2 used a versioned directory
-:: HEAD and newer versions do not, so act accordingly.
-if defined LR_ROOT goto :skiplrver
-
-if "%LUAROCKS_VER%" EQU "HEAD" (
- set LR_ROOT=%LUAROCKS_INSTALL%
- goto :skiplrver
-)
-set LR_ROOT=%LUAROCKS_INSTALL%
-if %LUAROCKS_VER:~0,1% LEQ 2 (
- if %LUAROCKS_VER:~2,1% LEQ 2 (
- if %LUAROCKS_VER:~4,1% LEQ 3 (
- set LR_ROOT=%LUAROCKS_INSTALL%\!LUAROCKS_VER:~0,3!
- )
- )
-)
-:skiplrver
-
-if not defined LR_SYSTREE set LR_SYSTREE=%LUAROCKS_INSTALL%\systree
-
-if not defined SEVENZIP set SEVENZIP=7z
-::
-:: =========================================================
-
-:: first create some necessary directories:
-mkdir downloads 2>NUL
-
-:: Download and compile Lua (or LuaJIT)
-if "%LUA%"=="luajit" (
- if not exist %LUA_DIR% (
- if "%LJ_SHORTV%"=="2.1" (
- :: Clone repository and checkout 2.1 branch
- set lj_source_folder=%APPVEYOR_BUILD_FOLDER%\downloads\luajit-%LJ_VER%
- if not exist !lj_source_folder! (
- echo Cloning git repo %LUAJIT_GIT_REPO% !lj_source_folder!
- git clone %LUAJIT_GIT_REPO% !lj_source_folder! || call :die "Failed to clone repository"
- ) else (
- cd !lj_source_folder!
- git pull || call :die "Failed to update repository"
- )
- cd !lj_source_folder!\src
- git checkout v2.1 || call :die
- ) else (
- set lj_source_folder=%APPVEYOR_BUILD_FOLDER%\downloads\luajit-%LJ_VER%
- if not exist !lj_source_folder! (
- echo Downloading... %LUAJIT_URL%/v%LJ_VER%.tar.gz
- curl --location --silent --fail --max-time 120 --connect-timeout 30 %LUAJIT_URL%/v%LJ_VER%.tar.gz | %SEVENZIP% x -si -so -tgzip | %SEVENZIP% x -si -ttar -aoa -odownloads
- )
- cd !lj_source_folder!\src
- )
- :: Compiles LuaJIT
- if "%Configuration%"=="MinGW" (
- call mingw32-make
- ) else (
- call msvcbuild.bat
- )
-
- mkdir %LUA_DIR% 2> NUL
- for %%a in (bin bin\lua bin\lua\jit include lib) do ( mkdir "%LUA_DIR%\%%a" )
-
- for %%a in (luajit.exe lua51.dll) do ( move "!lj_source_folder!\src\%%a" "%LUA_DIR%\bin" )
- copy "%LUA_DIR%\bin\luajit.exe" "%LUA_DIR%\bin\lua.exe"
-
- move "!lj_source_folder!\src\lua51.lib" "%LUA_DIR%\lib"
- for %%a in (lauxlib.h lua.h lua.hpp luaconf.h lualib.h luajit.h) do (
- copy "!lj_source_folder!\src\%%a" "%LUA_DIR%\include"
- )
-
- copy "!lj_source_folder!\src\jit\*.lua" "%LUA_DIR%\bin\lua\jit"
-
- ) else (
- echo LuaJIT %LJ_VER% already installed at %LUA_DIR%
- )
-) else (
- if not exist %LUA_DIR% (
- :: Download and compile Lua
- if not exist downloads\lua-%LUA_VER% (
- curl --silent --fail --max-time 120 --connect-timeout 30 %LUA_URL%/lua-%LUA_VER%.tar.gz | %SEVENZIP% x -si -so -tgzip | %SEVENZIP% x -si -ttar -aoa -odownloads
- )
-
- mkdir downloads\lua-%LUA_VER%\etc 2> NUL
- copy %~dp0\winmake.bat downloads\lua-%LUA_VER%\etc\winmake.bat
-
- cd downloads\lua-%LUA_VER%
- call etc\winmake %COMPATFLAG%
- call etc\winmake install %LUA_DIR%
- ) else (
- echo Lua %LUA_VER% already installed at %LUA_DIR%
- )
-)
-
-if not exist %LUA_DIR%\bin\%LUA%.exe call :die "Missing Lua interpreter at %LUA_DIR%\bin\%LUA%.exe"
-
-set PATH=%LUA_DIR%\bin;%PATH%
-call !LUA! -v
-
-
-
-:: ==========================================================
-:: LuaRocks
-:: ==========================================================
-
-if not exist "%LR_ROOT%" (
- :: Downloads and installs LuaRocks
- cd %APPVEYOR_BUILD_FOLDER%
-
- if %LUAROCKS_VER%==HEAD (
- set lr_source_folder=%APPVEYOR_BUILD_FOLDER%\downloads\luarocks-%LUAROCKS_VER%-win32
- if not exist !lr_source_folder! (
- git clone https://github.com/keplerproject/luarocks.git --single-branch --depth 1 !lr_source_folder! || call :die "Failed to clone LuaRocks repository"
- ) else (
- cd !lr_source_folder!
- git pull || call :die "Failed to update LuaRocks repository"
- )
- ) else (
- if not exist downloads\luarocks-%LUAROCKS_VER%-win32.zip (
- echo Downloading LuaRocks...
- curl --silent --fail --max-time 120 --connect-timeout 30 --output downloads\luarocks-%LUAROCKS_VER%-win32.zip %LUAROCKS_URL%/luarocks-%LUAROCKS_VER%-win32.zip
- %SEVENZIP% x -aoa -odownloads downloads\luarocks-%LUAROCKS_VER%-win32.zip
- )
- )
-
- cd downloads\luarocks-%LUAROCKS_VER%-win32
- if "%Configuration%"=="MinGW" (
- call install.bat /LUA %LUA_DIR% /Q /LV %LUA_SHORTV% /P "%LUAROCKS_INSTALL%" /TREE "%LR_SYSTREE%" /MW
- ) else (
- call install.bat /LUA %LUA_DIR% /Q /LV %LUA_SHORTV% /P "%LUAROCKS_INSTALL%" /TREE "%LR_SYSTREE%"
- )
-
- :: Configures LuaRocks to instruct CMake the correct generator to use. Else, CMake will pick the highest
- :: Visual Studio version installed
- if "%Configuration%"=="MinGW" (
- echo cmake_generator = "MinGW Makefiles" >> %LUAROCKS_INSTALL%\config-%LUA_SHORTV%.lua
- ) else (
- set MSVS_GENERATORS[2008]=Visual Studio 9 2008
- set MSVS_GENERATORS[2010]=Visual Studio 10 2010
- set MSVS_GENERATORS[2012]=Visual Studio 11 2012
- set MSVS_GENERATORS[2013]=Visual Studio 12 2013
- set MSVS_GENERATORS[2015]=Visual Studio 14 2015
-
- set CMAKE_GENERATOR=!MSVS_GENERATORS[%Configuration%]!
- if "%platform%" EQU "x64" (set CMAKE_GENERATOR=!CMAKE_GENERATOR! Win64)
-
- echo cmake_generator = "!CMAKE_GENERATOR!" >> %LUAROCKS_INSTALL%\config-%LUA_SHORTV%.lua
- )
-)
-
-if not exist "%LR_ROOT%" call :die "LuaRocks not found at %LR_ROOT%"
-
-set PATH=%LR_ROOT%;%LR_SYSTREE%\bin;%PATH%
-
-:: Lua will use just the system rocks
-set LUA_PATH=%LR_ROOT%\lua\?.lua;%LR_ROOT%\lua\?\init.lua
-set LUA_PATH=%LUA_PATH%;%LR_SYSTREE%\share\lua\%LUA_SHORTV%\?.lua
-set LUA_PATH=%LUA_PATH%;%LR_SYSTREE%\share\lua\%LUA_SHORTV%\?\init.lua
-set LUA_PATH=%LUA_PATH%;.\?.lua;.\?\init.lua
-set LUA_CPATH=%LR_SYSTREE%\lib\lua\%LUA_SHORTV%\?.dll;.\?.dll
-
-call luarocks --version || call :die "Error with LuaRocks installation"
-call luarocks list
-
-
-if not exist "%LR_EXTERNAL%" (
- mkdir "%LR_EXTERNAL%"
- mkdir "%LR_EXTERNAL%\lib"
- mkdir "%LR_EXTERNAL%\include"
-)
-
-set PATH=%LR_EXTERNAL%;%PATH%
-
-:: Exports the following variables:
-:: (beware of whitespace between & and ^ below)
-endlocal & set PATH=%PATH%&^
-set LR_SYSTREE=%LR_SYSTREE%&^
-set LUA_PATH=%LUA_PATH%&^
-set LUA_CPATH=%LUA_CPATH%&^
-set LR_EXTERNAL=%LR_EXTERNAL%
-
-echo.
-echo ======================================================
-if "%LUA%"=="luajit" (
- echo Installation of LuaJIT %LJ_VER% and LuaRocks %LUAROCKS_VER% done.
-) else (
- echo Installation of Lua %LUA_VER% and LuaRocks %LUAROCKS_VER% done.
- if defined NOCOMPAT echo Lua was built with compatibility flags disabled.
-)
-echo Platform - %platform%
-echo LUA - %LUA%
-echo LUA_SHORTV - %LUA_SHORTV%
-echo LJ_SHORTV - %LJ_SHORTV%
-echo LUA_PATH - %LUA_PATH%
-echo LUA_CPATH - %LUA_CPATH%
-echo.
-echo LR_EXTERNAL - %LR_EXTERNAL%
-echo ======================================================
-echo.
-
-goto :eof
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-:: This blank space is intentional. If you see errors like "The system cannot find the batch label specified 'foo'"
-:: then try adding or removing blank lines lines above.
-:: Yes, really.
-:: http://stackoverflow.com/questions/232651/why-the-system-cannot-find-the-batch-label-specified-is-thrown-even-if-label-e
-
-:: helper functions:
-
-:: for bailing out when an error occurred
-:die %1
-echo %1
-exit /B 1
-goto :eof
diff --git a/3rdparty/luv/.ci/platform.sh b/3rdparty/luv/.ci/platform.sh
deleted file mode 100644
index 7259a7d6369..00000000000
--- a/3rdparty/luv/.ci/platform.sh
+++ /dev/null
@@ -1,15 +0,0 @@
-if [ -z "${PLATFORM:-}" ]; then
- PLATFORM=$TRAVIS_OS_NAME;
-fi
-
-if [ "$PLATFORM" == "osx" ]; then
- PLATFORM="macosx";
-fi
-
-if [ -z "$PLATFORM" ]; then
- if [ "$(uname)" == "Linux" ]; then
- PLATFORM="linux";
- else
- PLATFORM="macosx";
- fi;
-fi
diff --git a/3rdparty/luv/.ci/set_compiler_env.bat b/3rdparty/luv/.ci/set_compiler_env.bat
deleted file mode 100644
index 7e8462ec57e..00000000000
--- a/3rdparty/luv/.ci/set_compiler_env.bat
+++ /dev/null
@@ -1,40 +0,0 @@
-@echo off
-
-:: Now we declare a scope
-Setlocal EnableDelayedExpansion EnableExtensions
-
-if not defined Configuration set Configuration=2015
-
-if "%Configuration%"=="MinGW" ( goto :mingw )
-
-set arch=x86
-
-if "%platform%" EQU "x64" ( set arch=x86_amd64 )
-
-if "%Configuration%"=="2015" (
- set SET_VS_ENV="C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat"
-)
-
-if "%Configuration%"=="2013" (
- set SET_VS_ENV="C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat"
-)
-
-if "%Configuration%"=="2012" (
- set SET_VS_ENV="C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\vcvarsall.bat"
-)
-
-if "%Configuration%"=="2010" (
- set SET_VS_ENV="C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"
-)
-
-if "%Configuration%"=="2008" (
- set SET_VS_ENV="C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\vcvarsall.bat"
-)
-
-:: Visual Studio detected
-endlocal & call %SET_VS_ENV% %arch%
-goto :eof
-
-:: MinGW detected
-:mingw
-endlocal & set PATH=c:\mingw\bin;%PATH%
diff --git a/3rdparty/luv/.ci/setenv_lua.sh b/3rdparty/luv/.ci/setenv_lua.sh
deleted file mode 100644
index 55454389398..00000000000
--- a/3rdparty/luv/.ci/setenv_lua.sh
+++ /dev/null
@@ -1,3 +0,0 @@
-export PATH=${PATH}:$HOME/.lua:$HOME/.local/bin:${TRAVIS_BUILD_DIR}/install/luarocks/bin
-bash .ci/setup_lua.sh
-eval `$HOME/.lua/luarocks path`
diff --git a/3rdparty/luv/.ci/setup_lua.sh b/3rdparty/luv/.ci/setup_lua.sh
deleted file mode 100644
index f8963331767..00000000000
--- a/3rdparty/luv/.ci/setup_lua.sh
+++ /dev/null
@@ -1,122 +0,0 @@
-#! /bin/bash
-
-# A script for setting up environment for travis-ci testing.
-# Sets up Lua and Luarocks.
-# LUA must be "lua5.1", "lua5.2" or "luajit".
-# luajit2.0 - master v2.0
-# luajit2.1 - master v2.1
-
-set -eufo pipefail
-
-LUAJIT_VERSION="2.0.4"
-LUAJIT_BASE="LuaJIT-$LUAJIT_VERSION"
-
-source .ci/platform.sh
-
-LUA_HOME_DIR=$TRAVIS_BUILD_DIR/install/lua
-
-LR_HOME_DIR=$TRAVIS_BUILD_DIR/install/luarocks
-
-mkdir $HOME/.lua
-
-LUAJIT="no"
-
-if [ "$PLATFORM" == "macosx" ]; then
- if [ "$LUA" == "luajit" ]; then
- LUAJIT="yes";
- fi
- if [ "$LUA" == "luajit2.0" ]; then
- LUAJIT="yes";
- fi
- if [ "$LUA" == "luajit2.1" ]; then
- LUAJIT="yes";
- fi;
-elif [ "$(expr substr $LUA 1 6)" == "luajit" ]; then
- LUAJIT="yes";
-fi
-
-mkdir -p "$LUA_HOME_DIR"
-
-if [ "$LUAJIT" == "yes" ]; then
-
- if [ "$LUA" == "luajit" ]; then
- curl --location https://github.com/LuaJIT/LuaJIT/archive/v$LUAJIT_VERSION.tar.gz | tar xz;
- else
- git clone https://github.com/LuaJIT/LuaJIT.git $LUAJIT_BASE;
- fi
-
- cd $LUAJIT_BASE
-
- if [ "$LUA" == "luajit2.1" ]; then
- git checkout v2.1;
- # force the INSTALL_TNAME to be luajit
- perl -i -pe 's/INSTALL_TNAME=.+/INSTALL_TNAME= luajit/' Makefile
- fi
-
- make && make install PREFIX="$LUA_HOME_DIR"
-
- ln -s $LUA_HOME_DIR/bin/luajit $HOME/.lua/luajit
- ln -s $LUA_HOME_DIR/bin/luajit $HOME/.lua/lua;
-
-else
-
- if [ "$LUA" == "lua5.1" ]; then
- curl http://www.lua.org/ftp/lua-5.1.5.tar.gz | tar xz
- cd lua-5.1.5;
- elif [ "$LUA" == "lua5.2" ]; then
- curl http://www.lua.org/ftp/lua-5.2.4.tar.gz | tar xz
- cd lua-5.2.4;
- elif [ "$LUA" == "lua5.3" ]; then
- curl http://www.lua.org/ftp/lua-5.3.2.tar.gz | tar xz
- cd lua-5.3.2;
- fi
-
- # Build Lua without backwards compatibility for testing
- perl -i -pe 's/-DLUA_COMPAT_(ALL|5_2)//' src/Makefile
- make $PLATFORM
- make INSTALL_TOP="$LUA_HOME_DIR" install;
-
- ln -s $LUA_HOME_DIR/bin/lua $HOME/.lua/lua
- ln -s $LUA_HOME_DIR/bin/luac $HOME/.lua/luac;
-
-fi
-
-cd $TRAVIS_BUILD_DIR
-
-lua -v
-
-LUAROCKS_BASE=luarocks-$LUAROCKS
-
-curl --location http://luarocks.org/releases/$LUAROCKS_BASE.tar.gz | tar xz
-
-cd $LUAROCKS_BASE
-
-if [ "$LUA" == "luajit" ]; then
- ./configure --lua-suffix=jit --with-lua-include="$LUA_HOME_DIR/include/luajit-2.0" --prefix="$LR_HOME_DIR";
-elif [ "$LUA" == "luajit2.0" ]; then
- ./configure --lua-suffix=jit --with-lua-include="$LUA_HOME_DIR/include/luajit-2.0" --prefix="$LR_HOME_DIR";
-elif [ "$LUA" == "luajit2.1" ]; then
- ./configure --lua-suffix=jit --with-lua-include="$LUA_HOME_DIR/include/luajit-2.1" --prefix="$LR_HOME_DIR";
-else
- ./configure --with-lua="$LUA_HOME_DIR" --prefix="$LR_HOME_DIR"
-fi
-
-make build && make install
-
-ln -s $LR_HOME_DIR/bin/luarocks $HOME/.lua/luarocks
-
-cd $TRAVIS_BUILD_DIR
-
-luarocks --version
-
-rm -rf $LUAROCKS_BASE
-
-if [ "$LUAJIT" == "yes" ]; then
- rm -rf $LUAJIT_BASE;
-elif [ "$LUA" == "lua5.1" ]; then
- rm -rf lua-5.1.5;
-elif [ "$LUA" == "lua5.2" ]; then
- rm -rf lua-5.2.4;
-elif [ "$LUA" == "lua5.3" ]; then
- rm -rf lua-5.3.2;
-fi
diff --git a/3rdparty/luv/.ci/winmake.bat b/3rdparty/luv/.ci/winmake.bat
deleted file mode 100644
index dcad55d36f7..00000000000
--- a/3rdparty/luv/.ci/winmake.bat
+++ /dev/null
@@ -1,457 +0,0 @@
-@ECHO OFF
-SETLOCAL ENABLEDELAYEDEXPANSION
-
-REM *****************************
-REM * Customization section *
-REM *****************************
-
-REM use the /help option for generic usage information
-
-REM Where is the source code located (the unpacked Lua source archive, toplevel dir)
-SET SOURCETREE=.\
-
-REM set the toolchain to either MS or GCC (allcaps), leave blank to autodetect
-SET TOOLCHAIN=
-
-REM set the compatibility flags, defaults to empty for 5.1, -DLUA_COMPAT_ALL for 5.2,
-REM and -DLUA_COMPAT_5_2 for 5.3, which are the same as the unix make files
-REM This setting can be overridden with the --nocompat flag
-SET COMPATFLAG=
-
-
-
-
-
-
-
-
-
-REM **********************************
-REM * Nothing to customize below *
-REM **********************************
-
-SET BATCHNAME=%~n0
-SET SOURCE=%SOURCETREE%src\
-SET LUA_H=%SOURCE%lua.h
-SET CURDIR=%CD%
-
-REM the following line ends with a TAB. DO NOT REMOVE IT!
-SET TABCHAR=
-REM Define LF to contain a linefeed character
-set ^"LFCHAR=^
-
-^" The above empty line is critical. DO NOT REMOVE
-
-
-REM Supported toolchains (allcaps)
-SET TOOLCHAINS=MS GCC
-REM Commands which, if exiting without error, indicate presence of the toolchain
-SET CHECK_GCC=gcc --version
-SET CHECK_MS=cl
-
-REM **********************************
-REM * Check for help request *
-REM **********************************
-
-SET HELPCMDS=help -help --help /help ? -? /?
-for %%L in ("!LFCHAR!") do for /f %%a in ("!HELPCMDS: =%%~L!") do (
- if "%%a"=="%~1" (
- echo.
- echo Builds a standalone Lua installation. Supports Lua version 5.1, 5.2 and 5.3.
- echo Your compiler must be in the system path, and this "%BATCHNAME%.bat" file must be located
- echo in ".\etc\" in the unpacked Lua source archive.
- echo.
- echo USAGE etc\%BATCHNAME% [FLAG] [COMMAND] [...]
- echo ^(execute from the root of the unpacked archive^)
- echo.
- echo Commands;
- echo clean : cleans the source tree of build ^(intermediate^) files
- echo install [path] : installs the build results into "path"
- echo local : installs into ".\local\" in the unpacked Lua source structure
- echo [toolchain] : uses a specific toolchain to build. If not provided then supported
- echo toolchains will be tested and the first available will be picked.
- echo Supported toolchains are: "%TOOLCHAINS%" ^(must use ALLCAPS^)
- echo.
- echo Flags;
- echo --nocompat : Specifies that no compatibility flags should be set when building.
- echo If not specified, the default compatibility flags will be used.
- echo.
- echo Example use;
- echo set PATH=C:\path\to\your\compiler\;%%PATH%%
- echo etc\%BATCHNAME% clean
- echo etc\%BATCHNAME%
- echo etc\%BATCHNAME% --nocompat GCC
- echo etc\%BATCHNAME% install "C:\Program Files\Lua"
- echo.
- goto :EXITOK
- )
-)
-
-REM **********************************
-REM * Check commandline *
-REM **********************************
-
-SET CMDOK=FALSE
-if "%~1"=="" (
- SET CMDOK=TRUE
-)
-for %%a in (local install clean) do (
- if "%%a"=="%~1" (
- SET CMDOK=TRUE
- )
-)
-for %%a in (--nocompat) do (
- if "%%a"=="%~1" (
- SET NOCOMPAT=TRUE
- if "%~2"=="" (
- SET CMDOK=TRUE
- )
- SHIFT
- )
-)
-for %%a in (%TOOLCHAINS%) do (
- if "%%a"=="%~1" (
- SET CMDOK=TRUE
- SET TOOLCHAIN=%~1
- )
-)
-if NOT %CMDOK%==TRUE (
- echo.
- echo Unknown command or toolchain specified.
- goto :EXITERROR
-)
-
-REM **************************************
-REM * Check for cleaning *
-REM **************************************
-
-if "%1"=="clean" (
- if NOT [%2]==[] (
- echo.
- echo ERROR: The clean command does not take extra parameters.
- ) else (
- echo Cleaning...
- if exist "%SOURCE%*.exe" del "%SOURCE%*.exe"
- if exist "%SOURCE%*.dll" del "%SOURCE%*.dll"
- if exist "%SOURCE%*.o" del "%SOURCE%*.o"
- if exist "%SOURCE%*.a" del "%SOURCE%*.a"
- if exist "%SOURCE%*.obj" del "%SOURCE%*.obj"
- if exist "%SOURCE%*.manifest" del "%SOURCE%*.manifest"
- if exist "%SOURCE%*.lib" del "%SOURCE%*.lib"
- echo Done.
- )
- goto :EXITOK
-)
-
-REM **************************************************
-REM * Fetch the Lua version from the source code *
-REM **************************************************
-
-Echo.
-Echo Checking source code to extract Lua version...
-IF NOT EXIST %LUA_H% (
- Echo Cannot locate Lua header file; %LUA_H%
- goto :EXITERROR
-)
-
-findstr /R /C:"#define[ %TABCHAR%][ %TABCHAR%]*LUA_VERSION_MAJOR" %LUA_H% > NUL
-if NOT %ERRORLEVEL%==0 (
- rem ECHO We've got a Lua version 5.1
- rem findstr /R /C:"#define[ %TABCHAR%][ %TABCHAR%]*LUA_VERSION[ %TABCHAR%]" %LUA_H%
- SET LUA_VER=5.1
-) else (
- rem ECHO We've got a Lua version 5.2+
- rem findstr /R /C:"#define[ %TABCHAR%][ %TABCHAR%]*LUA_VERSION_MAJOR[ %TABCHAR%]" %LUA_H%
- rem findstr /R /C:"#define[ %TABCHAR%][ %TABCHAR%]*LUA_VERSION_MINOR[ %TABCHAR%]" %LUA_H%
-
- for /F "delims=" %%a in ('findstr /R /C:"#define[ %TABCHAR%][ %TABCHAR%]*LUA_VERSION_MAJOR[ %TABCHAR%]" %LUA_H%') do set LUA_MAJOR=%%a
- SET LUA_MAJOR=!LUA_MAJOR:#define=!
- SET LUA_MAJOR=!LUA_MAJOR:LUA_VERSION_MAJOR=!
- SET LUA_MAJOR=!LUA_MAJOR: =!
- SET LUA_MAJOR=!LUA_MAJOR:%TABCHAR%=!
- SET LUA_MAJOR=!LUA_MAJOR:"=!
- SET LUA_MAJOR=!LUA_MAJOR:~0,1!
-
- for /F "delims=" %%a in ('findstr /R /C:"#define[ %TABCHAR%][ %TABCHAR%]*LUA_VERSION_MINOR[ %TABCHAR%]" %LUA_H%') do set LUA_MINOR=%%a
- SET LUA_MINOR=!LUA_MINOR:#define=!
- SET LUA_MINOR=!LUA_MINOR:LUA_VERSION_MINOR=!
- SET LUA_MINOR=!LUA_MINOR: =!
- SET LUA_MINOR=!LUA_MINOR:%TABCHAR%=!
- SET LUA_MINOR=!LUA_MINOR:"=!
- SET LUA_MINOR=!LUA_MINOR:~0,1!
-
- SET LUA_VER=!LUA_MAJOR!.!LUA_MINOR!
-)
-SET LUA_SVER=!LUA_VER:.=!
-
-Echo Lua version found: %LUA_VER%
-Echo.
-
-REM **************************************
-REM * Set some Lua version specifics *
-REM **************************************
-
-REM FILES_CORE; files for Lua core (+lauxlib, needed for Luac)
-REM FILES_LIB; files for Lua standard libraries
-REM FILES_DLL; vm files to be build with dll option
-REM FILES_OTH; vm files to be build without dll, for static linking
-
-if %LUA_SVER%==51 (
- set FILES_CORE=lapi lcode ldebug ldo ldump lfunc lgc llex lmem lobject lopcodes lparser lstate lstring ltable ltm lundump lvm lzio lauxlib
- set FILES_LIB=lbaselib ldblib liolib lmathlib loslib ltablib lstrlib loadlib linit
- set FILES_DLL=lua
- set FILES_OTH=luac print
- set INSTALL_H=lauxlib.h lua.h luaconf.h lualib.h ..\etc\lua.hpp
-)
-if %LUA_SVER%==52 (
- set FILES_CORE=lapi lcode lctype ldebug ldo ldump lfunc lgc llex lmem lobject lopcodes lparser lstate lstring ltable ltm lundump lvm lzio lauxlib
- set FILES_LIB=lbaselib lbitlib lcorolib ldblib liolib lmathlib loslib lstrlib ltablib loadlib linit
- set FILES_DLL=lua
- set FILES_OTH=luac
- set INSTALL_H=lauxlib.h lua.h lua.hpp luaconf.h lualib.h
- if "%COMPATFLAG%"=="" (
- set COMPATFLAG=-DLUA_COMPAT_ALL
- )
-)
-if %LUA_SVER%==53 (
- set FILES_CORE=lapi lcode lctype ldebug ldo ldump lfunc lgc llex lmem lobject lopcodes lparser lstate lstring ltable ltm lundump lvm lzio lauxlib
- set FILES_LIB=lbaselib lbitlib lcorolib ldblib liolib lmathlib loslib lstrlib ltablib lutf8lib loadlib linit
- set FILES_DLL=lua
- set FILES_OTH=luac
- set INSTALL_H=lauxlib.h lua.h lua.hpp luaconf.h lualib.h
- if "%COMPATFLAG%"=="" (
- set COMPATFLAG=-DLUA_COMPAT_5_2
- )
-)
-
-if "%NOCOMPAT%"=="TRUE" (
- set COMPATFLAG=
-)
-
-SET FILES_BASE=%FILES_DLL% %FILES_CORE% %FILES_LIB%
-
-if "%FILES_BASE%"=="" (
- Echo Unknown Lua version; %LUA_VER%
- goto :EXITERROR
-)
-
-REM *********************************
-REM * Check available toolchain *
-REM *********************************
-
-if [%TOOLCHAIN%]==[] (
- Echo Testing for MS...
- %CHECK_MS%
- IF !ERRORLEVEL!==0 SET TOOLCHAIN=MS
-)
-if [%TOOLCHAIN%]==[] (
- Echo Testing for GCC...
- %CHECK_GCC%
- IF !ERRORLEVEL!==0 SET TOOLCHAIN=GCC
-)
-if [%TOOLCHAIN%]==[] (
- Echo No supported toolchain found ^(please make sure it is in the system path^)
- goto :EXITERROR
-)
-
-REM ***************************
-REM * Configure toolchain *
-REM ***************************
-
-if %TOOLCHAIN%==GCC (
- echo Using GCC toolchain...
- SET OBJEXT=o
- SET LIBFILE=liblua%LUA_SVER%.a
-)
-if %TOOLCHAIN%==MS (
- echo Using Microsoft toolchain...
- SET OBJEXT=obj
- SET LIBFILE=lua%LUA_SVER%.lib
-)
-echo.
-
-REM **************************************
-REM * Check for installing *
-REM **************************************
-
-if "%1"=="install" (
- if "%~2"=="" (
- echo.
- echo ERROR: The install command requires a path where to install to.
- goto :EXITERROR
- )
- SET TARGETPATH=%~2
-)
-if "%1"=="local" (
- if NOT "%~2"=="" (
- echo.
- echo ERROR: The local command does not take extra parameters.
- goto :EXITERROR
- )
- SET TARGETPATH=%SOURCETREE%local
-)
-if NOT "%TARGETPATH%"=="" (
- mkdir "%TARGETPATH%\bin"
- mkdir "%TARGETPATH%\include"
- mkdir "%TARGETPATH%\lib\lua\%LUA_VER%"
- mkdir "%TARGETPATH%\man\man1"
- mkdir "%TARGETPATH%\share\lua\%LUA_VER%"
- copy "%SOURCE%lua.exe" "%TARGETPATH%\bin"
- copy "%SOURCE%luac.exe" "%TARGETPATH%\bin"
- copy "%SOURCE%lua%LUA_SVER%.dll" "%TARGETPATH%\bin"
- for %%a in (%INSTALL_H%) do ( copy "%SOURCE%%%a" "%TARGETPATH%\include" )
- copy "%SOURCE%%LIBFILE%" "%TARGETPATH%\lib"
- copy "%SOURCETREE%doc\lua.1" "%TARGETPATH%\man\man1"
- copy "%SOURCETREE%doc\luac.1" "%TARGETPATH%\man\man1"
-
- echo Installation completed in "%TARGETPATH%".
- goto :EXITOK
-)
-
-REM ***********************
-REM * Compile sources *
-REM ***********************
-goto :after_compile_function
-:compile_function
- REM Params: %1 is filelist (must be quoted)
- REM Return: same list, with the object file extension included, will be stored in global OBJLIST
-
- for %%a in (%~1) do (
- SET FILENAME=%%a
- if %TOOLCHAIN%==GCC (
- SET COMPCMD=gcc -O2 -Wall !EXTRAFLAG! !COMPATFLAG! -c -o !FILENAME!.%OBJEXT% !FILENAME!.c
- )
- if %TOOLCHAIN%==MS (
- SET COMPCMD=cl /nologo /MD /O2 /W3 /c /D_CRT_SECURE_NO_DEPRECATE !COMPATFLAG! !EXTRAFLAG! !FILENAME!.c
- )
- echo !COMPCMD!
- !COMPCMD!
- SET OBJLIST=!OBJLIST! !FILENAME!.%OBJEXT%
- )
-
-goto :eof
-:after_compile_function
-
-CD %SOURCE%
-REM Traverse the 4 lists of source files
-
-for %%b in (CORE LIB DLL OTH) do (
- SET LTYPE=%%b
- SET OBJLIST=
- if !LTYPE!==OTH (
- REM OTH is the only list of files build without DLL option
- SET EXTRAFLAG=
- ) else (
- SET EXTRAFLAG=-DLUA_BUILD_AS_DLL
- )
- if !LTYPE!==CORE SET FILELIST=%FILES_CORE%
- if !LTYPE!==LIB SET FILELIST=%FILES_LIB%
- if !LTYPE!==DLL SET FILELIST=%FILES_DLL%
- if !LTYPE!==OTH SET FILELIST=%FILES_OTH%
-
- echo Now compiling !LTYPE! file set...
- call:compile_function "!FILELIST!"
-
- if !LTYPE!==CORE SET FILES_CORE_O=!OBJLIST!
- if !LTYPE!==LIB SET FILES_LIB_O=!OBJLIST!
- if !LTYPE!==DLL SET FILES_DLL_O=!OBJLIST!
- if !LTYPE!==OTH SET FILES_OTH_O=!OBJLIST!
-)
-
-
-REM ****************************
-REM * Link GCC based files *
-REM ****************************
-
-if %TOOLCHAIN%==GCC (
- REM Link the LuaXX.dll file
- SET LINKCMD=gcc -shared -o lua%LUA_SVER%.dll %FILES_CORE_O% %FILES_LIB_O%
- echo !LINKCMD!
- !LINKCMD!
-
- REM strip from LuaXX.dll
- SET RANCMD=strip --strip-unneeded lua%LUA_SVER%.dll
- echo !RANCMD!
- !RANCMD!
-
- REM Link the Lua.exe file
- SET LINKCMD=gcc -o lua.exe -s lua.%OBJEXT% lua%LUA_SVER%.dll -lm
- echo !LINKCMD!
- !LINKCMD!
-
- REM create lib archive
- SET LIBCMD=ar rcu liblua%LUA_SVER%.a %FILES_CORE_O% %FILES_LIB_O%
- echo !LIBCMD!
- !LIBCMD!
-
- REM Speedup index using ranlib
- SET RANCMD=ranlib liblua%LUA_SVER%.a
- echo !RANCMD!
- !RANCMD!
-
- REM Link Luac.exe file
- SET LINKCMD=gcc -o luac.exe %FILES_OTH_O% liblua%LUA_SVER%.a -lm
- echo !LINKCMD!
- !LINKCMD!
-
-)
-
-
-REM ****************************
-REM * Link MS based files *
-REM ****************************
-
-if %TOOLCHAIN%==MS (
- REM Link the LuaXX.dll file, and LuaXX.obj
- SET LINKCMD=link /nologo /DLL /out:lua%LUA_SVER%.dll %FILES_CORE_O% %FILES_LIB_O%
- echo !LINKCMD!
- !LINKCMD!
-
- REM handle dll manifest
- if exist lua%LUA_SVER%.dll.manifest (
- SET MANICMD=mt /nologo -manifest lua%LUA_SVER%.dll.manifest -outputresource:lua%LUA_SVER%.dll;2
- echo !MANICMD!
- !MANICMD!
- )
-
- REM Link Lua.exe
- SET LINKCMD=link /nologo /out:lua.exe lua.%OBJEXT% lua%LUA_SVER%.lib
- echo !LINKCMD!
- !LINKCMD!
-
- REM handle manifest
- if exist lua.exe.manifest (
- SET MANICMD=mt /nologo -manifest lua.exe.manifest -outputresource:lua.exe
- echo !MANICMD!
- !MANICMD!
- )
-
- REM Link Luac.exe
- SET LINKCMD=link /nologo /out:luac.exe %FILES_OTH_O% %FILES_CORE_O%
- echo !LINKCMD!
- !LINKCMD!
-
- REM handle manifest
- if exist luac.exe.manifest (
- SET MANICMD=mt /nologo -manifest luac.exe.manifest -outputresource:luac.exe
- echo !MANICMD!
- !MANICMD!
- )
-)
-
-CD %CURDIR%
-
-REM ****************************
-REM * Finished building *
-REM ****************************
-
-echo.
-echo Build completed.
-goto :EXITOK
-
-:EXITOK
-exit /B 0
-
-:EXITERROR
-echo For help try; etc\%BATCHNAME% /help
-exit /B 1
diff --git a/3rdparty/luv/.gitignore b/3rdparty/luv/.gitignore
deleted file mode 100644
index 8bcf497a42c..00000000000
--- a/3rdparty/luv/.gitignore
+++ /dev/null
@@ -1,10 +0,0 @@
-build
-libluv.a
-libluv.so
-luv.so
-luv.dll
-luajit.exe
-luv-*.tar.gz
-luv-*.src.rock
-luv-*/
-build.luarocks/
diff --git a/3rdparty/luv/.travis.yml b/3rdparty/luv/.travis.yml
deleted file mode 100644
index b6909b894cc..00000000000
--- a/3rdparty/luv/.travis.yml
+++ /dev/null
@@ -1,36 +0,0 @@
-language: c
-sudo: false
-
-addons:
- apt:
- sources:
- - kalakris-cmake
- packages:
- - cmake
-
-env:
- global:
- - LUAROCKS=2.3.0
- matrix:
- - WITH_LUA_ENGINE=Lua LUA=lua5.3
- - WITH_LUA_ENGINE=LuaJIT LUA=luajit2.1
- - PROCESS_CLEANUP_TEST=1 LUA=lua5.2
-
-os:
- - linux
- - osx
-
-before_install:
- - git submodule update --init --recursive
- - git submodule update --recursive
-
-script:
- - if [ "x$PROCESS_CLEANUP_TEST" = "x" ]; then make && make test; else ./tests/test-sigchld-after-lua_close.sh; fi
- # Test rock installation
- - source .ci/setenv_lua.sh
- - luarocks make
- - test $PWD = `lua -e "print(require'luv'.cwd())"`
-
-notifications:
- email: true
- irc: "irc.freenode.org#luvit"
diff --git a/3rdparty/luv/CMakeLists.txt b/3rdparty/luv/CMakeLists.txt
deleted file mode 100644
index 9f079670de2..00000000000
--- a/3rdparty/luv/CMakeLists.txt
+++ /dev/null
@@ -1,191 +0,0 @@
-cmake_minimum_required(VERSION 2.8)
-
-if(POLICY CMP0053)
- cmake_policy(SET CMP0053 NEW) # faster evaluation of variable references
-endif()
-
-project (luv C ASM)
-
-set(LUV_VERSION_MAJOR 1)
-set(LUV_VERSION_MINOR 8)
-set(LUV_VERSION_PATCH 0)
-set(LUV_VERSION ${LUV_VERSION_MAJOR}.${LUV_VERSION_MINOR}.${LUV_VERSION_PATCH})
-
-option(BUILD_MODULE "Build as module" ON)
-option(BUILD_SHARED_LIBS "Build shared library" OFF)
-option(WITH_SHARED_LIBUV "Link to a shared libuv library instead of static linking" OFF)
-
-if (NOT WITH_LUA_ENGINE)
- set(WITH_LUA_ENGINE "LuaJIT"
- CACHE STRING "Link to LuaJIT or PUC Lua" FORCE)
- set_property(CACHE WITH_LUA_ENGINE
- PROPERTY STRINGS "Lua;LuaJIT")
-endif (NOT WITH_LUA_ENGINE)
-
-if (NOT LUA_BUILD_TYPE)
- set(LUA_BUILD_TYPE "Static"
- CACHE STRING "Build Lua/LuaJIT as static, dynamic libary, or use system one" FORCE)
- set_property(CACHE LUA_BUILD_TYPE
- PROPERTY STRINGS "Static;Dynamic;System")
-endif (NOT LUA_BUILD_TYPE)
-
-if (WITH_LUA_ENGINE STREQUAL Lua)
- add_definitions(-DLUA_USE_DLOPEN)
- set(USE_LUAJIT OFF)
-else ()
- set(USE_LUAJIT ON)
-endif ()
-
-set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/")
-
-if (WITH_SHARED_LIBUV)
- find_package(Libuv)
- if (LIBUV_FOUND)
- include_directories(${LIBUV_INCLUDE_DIR})
- endif (LIBUV_FOUND)
-else (WITH_SHARED_LIBUV)
- include(deps/uv.cmake)
- if (BUILD_MODULE)
- add_definitions( -DBUILDING_UV_SHARED )
- endif (BUILD_MODULE)
-endif (WITH_SHARED_LIBUV)
-
-if (LUA)
- MESSAGE(STATUS "Lua: using information from luarocks")
-
- MESSAGE(STATUS "LUA_LIBDIR: " ${LUA_LIBDIR})
- MESSAGE(STATUS "LUA_INCDIR: " ${LUA_INCDIR})
- MESSAGE(STATUS "LUA: " ${LUA})
-
- SET(LUA_EXECUTABLE "${LUA}")
- SET(LUA_INCLUDE_DIR "${LUA_INCDIR}")
- SET(LUA_PACKAGE_PATH "${LUADIR}")
- SET(LUA_PACKAGE_CPATH "${LIBDIR}")
-
- SET(INSTALL_LIB_DIR ${LIBDIR})
-
- GET_FILENAME_COMPONENT(LUA_EXEC_NAME ${LUA_EXECUTABLE} NAME_WE)
- IF(LUA_EXEC_NAME STREQUAL "luajit")
- FIND_LIBRARY(LUA_LIBRARIES
- NAMES luajit libluajit
- PATHS ${LUA_LIBDIR}
- NO_DEFAULT_PATH)
- ELSEIF(LUA_EXEC_NAME STREQUAL "lua")
- FIND_LIBRARY(LUA_LIBRARIES
- NAMES lua lua53 lua52 lua51 liblua liblua53 liblua52 liblua51
- PATHS ${LUA_LIBDIR}
- NO_DEFAULT_PATH)
- ENDIF()
- MESSAGE(STATUS "Lua library: ${LUA_LIBRARIES}")
-
- include_directories(${LUA_INCLUDE_DIR})
-else (LUA)
- if (LUA_BUILD_TYPE STREQUAL System)
- if (USE_LUAJIT)
- find_package(LuaJIT)
- if (LUAJIT_FOUND)
- include_directories(${LUAJIT_INCLUDE_DIR})
- link_directories(${LUAJIT_LIBRARIES})
- endif (LUAJIT_FOUND)
- else (USE_LUAJIT)
- find_package(Lua)
- if (LUA_FOUND)
- include_directories(${LUA_INCLUDE_DIR})
- endif (LUA_FOUND)
- endif (USE_LUAJIT)
-
- else (LUA_BUILD_TYPE STREQUAL System)
- if (LUA_BUILD_TYPE STREQUAL Static)
- SET(WITH_SHARED_LUA OFF)
- else (LUA_BUILD_TYPE STREQUAL Static)
- SET(WITH_SHARED_LUA ON)
- endif (LUA_BUILD_TYPE STREQUAL Static)
- if (USE_LUAJIT)
- include(deps/luajit.cmake)
- include_directories(deps/luajit/src)
- else(USE_LUAJIT)
- include(deps/lua.cmake)
- include_directories(deps/lua/src)
- endif (USE_LUAJIT)
- endif (LUA_BUILD_TYPE STREQUAL System)
-endif (LUA)
-
-if (BUILD_MODULE)
- add_library(luv MODULE src/luv.c)
- set_target_properties(luv PROPERTIES PREFIX "")
-else (BUILD_MODULE)
- add_library(luv src/luv.c)
- if (BUILD_SHARED_LIBS)
- set_target_properties(luv
- PROPERTIES VERSION ${LUV_VERSION} SOVERSION ${LUV_VERSION_MAJOR})
- endif (BUILD_SHARED_LIBS)
-endif (BUILD_MODULE)
-
-if(APPLE)
- set(CMAKE_SHARED_MODULE_CREATE_C_FLAGS
- "${CMAKE_SHARED_MODULE_CREATE_C_FLAGS} -flat_namespace -undefined suppress"
- )
- # execute_process(COMMAND which luajit OUTPUT_VARIABLE LUAJIT)
- # set(CMAKE_SHARED_MODULE_CREATE_C_FLAGS
- # "${CMAKE_SHARED_MODULE_CREATE_C_FLAGS} -bundle_loader ${LUAJIT}"
- # )
-endif()
-
-if(WIN32)
- add_definitions(-DLUA_BUILD_AS_DLL -DLUA_LIB)
- if (LUA)
- target_link_libraries(luv uv ${LUA_LIBRARIES})
- else (LUA)
- if (USE_LUAJIT)
- target_link_libraries(luv uv luajit-5.1)
- else (USE_LUAJIT)
- if (LUA_BUILD_TYPE STREQUAL System)
- target_link_libraries(luv uv ${LUA_LIBRARIES})
- else (LUA_BUILD_TYPE STREQUAL System)
- target_link_libraries(luv uv lualib)
- endif (LUA_BUILD_TYPE STREQUAL System)
- endif (USE_LUAJIT)
- endif (LUA)
- # replace /MD to /MT to avoid link msvcr*.dll
- set(CompilerFlags
- CMAKE_C_FLAGS
- CMAKE_C_FLAGS_DEBUG
- CMAKE_C_FLAGS_MINSIZEREL
- CMAKE_C_FLAGS_RELWITHDEBINFO
- CMAKE_C_FLAGS_RELEASE)
- foreach(CompilerFlag ${CompilerFlags})
- string(REPLACE "/MD" "/MT" ${CompilerFlag} "${${CompilerFlag}}")
- endforeach()
-elseif("${CMAKE_SYSTEM_NAME}" MATCHES "Linux")
- target_link_libraries(luv uv rt)
-else()
- target_link_libraries(luv uv)
-endif()
-
-if (NOT LUA)
- if (BUILD_MODULE)
- if (WIN32)
- set(INSTALL_LIB_DIR "${CMAKE_INSTALL_PREFIX}/lib")
- else (WIN32)
- set(INSTALL_LIB_DIR "${CMAKE_INSTALL_PREFIX}/lib/lua/${LUA_VERSION_MAJOR}.${LUA_VERSION_MINOR}")
- endif (WIN32)
- else (BUILD_MODULE)
- set(INSTALL_LIB_DIR "${CMAKE_INSTALL_PREFIX}/lib"
- CACHE PATH "Installation directory for libraries")
- set(INSTALL_INC_DIR "${CMAKE_INSTALL_PREFIX}/include/luv"
- CACHE PATH "Installation directory for headers")
- endif (BUILD_MODULE)
-endif ()
-
-if (CMAKE_INSTALL_PREFIX)
- install(TARGETS luv
- ARCHIVE DESTINATION "${INSTALL_LIB_DIR}"
- LIBRARY DESTINATION "${INSTALL_LIB_DIR}"
- )
- if (NOT BUILD_MODULE)
- install(
- FILES src/luv.h src/util.h src/lhandle.h src/lreq.h
- DESTINATION "${INSTALL_INC_DIR}"
- )
- endif (NOT BUILD_MODULE)
-endif (CMAKE_INSTALL_PREFIX)
diff --git a/3rdparty/luv/LICENSE.txt b/3rdparty/luv/LICENSE.txt
deleted file mode 100644
index d6456956733..00000000000
--- a/3rdparty/luv/LICENSE.txt
+++ /dev/null
@@ -1,202 +0,0 @@
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
diff --git a/3rdparty/luv/Makefile b/3rdparty/luv/Makefile
deleted file mode 100644
index 1e7038c47ab..00000000000
--- a/3rdparty/luv/Makefile
+++ /dev/null
@@ -1,61 +0,0 @@
-LUV_TAG=$(shell git describe --tags)
-
-ifdef WITHOUT_AMALG
- CMAKE_OPTIONS+= -DWITH_AMALG=OFF
-endif
-
-BUILD_MODULE ?= ON
-BUILD_SHARED_LIBS ?= OFF
-WITH_SHARED_LIBUV ?= OFF
-WITH_LUA_ENGINE ?= LuaJIT
-LUA_BUILD_TYPE ?= Static
-
-
-ifeq ($(WITH_LUA_ENGINE), LuaJIT)
- LUABIN=build/luajit
-else
- LUABIN=build/lua
-endif
-
-CMAKE_OPTIONS += \
- -DBUILD_MODULE=$(BUILD_MODULE) \
- -DBUILD_SHARED_LIBS=$(BUILD_SHARED_LIBS) \
- -DWITH_SHARED_LIBUV=$(WITH_SHARED_LIBUV) \
- -DWITH_LUA_ENGINE=$(WITH_LUA_ENGINE) \
- -DLUA_BUILD_TYPE=$(LUA_BUILD_TYPE) \
-
-all: luv
-
-deps/libuv/include:
- git submodule update --init deps/libuv
-
-deps/luajit/src:
- git submodule update --init deps/luajit
-
-build/Makefile: deps/libuv/include deps/luajit/src
- cmake -H. -Bbuild ${CMAKE_OPTIONS} -DWITH_AMALG=OFF
-
-luv: build/Makefile
- cmake --build build --config Debug
- ln -sf build/luv.so
-
-clean:
- rm -rf build luv.so
-
-test: luv
- ${LUABIN} tests/run.lua
-
-reset:
- git submodule update --init --recursive && \
- git clean -f -d && \
- git checkout .
-
-publish-luarocks:
- rm -rf luv-${LUV_TAG}
- mkdir -p luv-${LUV_TAG}/deps
- cp -r src cmake CMakeLists.txt LICENSE.txt README.md docs.md luv-${LUV_TAG}/
- cp -r deps/libuv deps/*.cmake deps/lua_one.c luv-${LUV_TAG}/deps/
- tar -czvf luv-${LUV_TAG}.tar.gz luv-${LUV_TAG}
- github-release upload --user luvit --repo luv --tag ${LUV_TAG} \
- --file luv-${LUV_TAG}.tar.gz --name luv-${LUV_TAG}.tar.gz
- luarocks upload luv-${LUV_TAG}.rockspec --api-key=${LUAROCKS_TOKEN}
diff --git a/3rdparty/luv/README.md b/3rdparty/luv/README.md
deleted file mode 100644
index 47059d01ee7..00000000000
--- a/3rdparty/luv/README.md
+++ /dev/null
@@ -1,213 +0,0 @@
-luv
-===
-
-[![Linux Build Status](https://travis-ci.org/luvit/luv.svg?branch=master)](https://travis-ci.org/luvit/luv)
-
-[![Windows Build status](https://ci.appveyor.com/api/projects/status/uo1qhdcc0vcqsiok/branch/master?svg=true)](https://ci.appveyor.com/project/racker-buildbot/luv/branch/master)
-
-[libuv](https://github.com/joyent/libuv) bindings for
-[luajit](http://luajit.org/) and [lua](http://www.lua.org/)
-[5.1](http://www.lua.org/manual/5.1/manual.html)/
-[5.2](http://www.lua.org/manual/5.2/manual.html)/
-[5.3](http://www.lua.org/manual/5.3/manual.html).
-
-This library makes libuv available to lua scripts. It was made for the [luvit](http://luvit.io/) project but should usable from nearly any lua project.
-
-The library can be used by multiple threads at once. Each thread is assumed to load the library from a different `lua_State`. Luv will create a unique `uv_loop_t` for each state. You can't share uv handles between states/loops.
-
-The best docs currently are the [libuv docs](http://docs.libuv.org/) themselves. Hopfully soon we'll have a copy locally tailored for lua.
-
-```lua
-local uv = require('luv')
-
--- Create a handle to a uv_timer_t
-local timer = uv.new_timer()
-
--- This will wait 1000ms and then continue inside the callback
-timer:start(1000, 0, function ()
- -- timer here is the value we passed in before from new_timer.
-
- print ("Awake!")
-
- -- You must always close your uv handles or you'll leak memory
- -- We can't depend on the GC since it doesn't know enough about libuv.
- timer:close()
-end)
-
-print("Sleeping");
-
--- uv.run will block and wait for all events to run.
--- When there are no longer any active handles, it will return
-uv.run()
-```
-
-
-Here is an example of an TCP echo server
-```lua
-local uv = require('luv')
-
-local function create_server(host, port, on_connection)
-
- local server = uv.new_tcp()
- server:bind(host, port)
-
- server:listen(128, function(err)
- -- Make sure there was no problem setting up listen
- assert(not err, err)
-
- -- Accept the client
- local client = uv.new_tcp()
- server:accept(client)
-
- on_connection(client)
- end)
-
- return server
-end
-
-local server = create_server("0.0.0.0", 0, function (client)
-
- client:read_start(function (err, chunk)
-
- -- Crash on errors
- assert(not err, err)
-
- if chunk then
- -- Echo anything heard
- client:write(chunk)
- else
- -- When the stream ends, close the socket
- client:close()
- end
- end)
-end)
-
-print("TCP Echo serverr listening on port " .. server:getsockname().port)
-
-uv.run()
-```
-
-More examples can be found in the [examples](examples) and [tests](tests) folders.
-
-## Building From Source
-
-To build, first install your compiler tools.
-
-### Get a Compiler
-
-On linux this probably means `gcc` and `make`. On Ubuntu, the `build-essential`
-package is good for this.
-
-On OSX, you probably want XCode which comes with `clang` and `make` and friends.
-
-For windows the free Visual Studio Express works. If you get the 2013 edition,
-make sure to get the `Windows Deskop` edition. The `Windows` version doesn't
-include a working C compiler. Make sure to run all of setup including getting a
-free license.
-
-### Install CMake
-
-Now install Cmake. The version in `brew` on OSX or most Linux package managers
-is good. The version on Travis CI is too old and so I use a PPA there. On
-windows use the installer and make sure to add cmake to your command prompt
-path.
-
-### Install Git
-
-If you haven't already, install git and make sure it's in your path. This comes
-with XCode on OSX. On Linux it's in your package manager. For windows, use the
-installer at <http://git-scm.com>. Make sure it's available to your windows
-command prompt.
-
-### Clone the Code
-
-Now open a terminal and clone the code. For windows I recommend the special
-developer command prompt that came with Visual Studio.
-
-```
-git clone https://github.com/luvit/luv.git --recursive
-cd luv
-```
-
-### Build the Code and Test
-
-On windows I wrote a small batch file that runs the correct cmake commands and
-copies the output files for easy access.
-
-```
-C:\Code\luv> msvcbuild.bat
-C:\Code\luv> luajit tests\run.lua
-```
-
-On unix systems, use the Makefile.
-
-```
-~/Code/luv> make test
-```
-
-This will build luv as a module library. Module libraries are plugins that are
-not linked into other targets.
-
-#### Build with PUC Lua 5.3
-By default luv is linked with LuaJIT 2.0.4. If you rather like to link luv
-with PUC Lua 5.3 you can run make with:
-
-```
-~/Code/luv> WITH_LUA_ENGINE=Lua make
-```
-
-#### Build as static library
-
-If you want to build luv as a static library run make with:
-
-```
-~/Code/luv> BUILD_MODULE=OFF make
-```
-
-This will create a static library `libluv.a`.
-
-#### Build as shared library
-
-If you want to build luv as a shared library run make with:
-
-```
-~/Code/luv> BUILD_MODULE=OFF BUILD_SHARED_LIBS=ON make
-```
-
-This will create a shared library `libluv.so`.
-
-#### Build with shared libraries
-
-By default the build system will build luv with the supplied dependencies.
-These are:
- * libuv
- * LuaJIT or Lua
-
-However, if your target system has already one or more of these dependencies
-installed you can link `luv` against them.
-
-##### Linking with shared libuv
-
-The default shared library name for libuv is `libuv`. To link against it use:
-
-```
-~/Code/luv> WITH_SHARED_LIBUV=ON make
-```
-
-##### Linking with shared LuaJIT
-
-The default shared library name for LuaJIT is `libluajit-5.1`. To link against
-it use:
-
-```
-~/Code/luv> LUA_BUILD_TYPE=System make
-```
-
-##### Linking with shared Lua 5.x
-
-The default shared library name for Lua 5.x is `liblua5.x`. To link against
-it use:
-
-```
-~/Code/luv> LUA_BUILD_TYPE=System WITH_LUA_ENGINE=Lua make
-```
diff --git a/3rdparty/luv/appveyor.yml b/3rdparty/luv/appveyor.yml
deleted file mode 100644
index b8d01898573..00000000000
--- a/3rdparty/luv/appveyor.yml
+++ /dev/null
@@ -1,42 +0,0 @@
-os: Visual Studio 2015
-
-# Test with the latest two releases of MSVC
-configuration:
- - 2015
- - 2013
-
-# Test with the latest Lua and LuaJIT versions
-environment:
- LUAROCKS_VER: 2.3.0
- matrix:
- - LUA_VER: 5.3.2
- NOCOMPAT: true # with compatibility flags disabled.
- - LJ_VER: 2.1
-
-platform:
- - x86
- - x64
-
-matrix:
- fast_finish: true
-
-cache:
- - c:\lua -> appveyor.yml
- - c:\external -> appveyor.yml
-
-install:
- - git submodule update --init
-
-build_script:
- - msvcbuild.bat
- - luajit.exe tests\run.lua
- # Test rock installation
- - call .ci\set_compiler_env.bat
- - call .ci\install.bat
- - luarocks make
- - ps: if("$(Get-Location)" -eq $(lua -e "print(require'luv'.cwd())")) { "LuaRocks test OK" } else { "LuaRocks test failed"; exit 1 }
- - luarocks remove luv
-
-artifacts:
- - path: luv.dll
- - path: luajit.exe
diff --git a/3rdparty/luv/cmake/Modules/FindLibuv.cmake b/3rdparty/luv/cmake/Modules/FindLibuv.cmake
deleted file mode 100644
index 045362ae5db..00000000000
--- a/3rdparty/luv/cmake/Modules/FindLibuv.cmake
+++ /dev/null
@@ -1,11 +0,0 @@
-# Locate libuv library
-# This module defines
-# LIBUV_FOUND, if false, do not try to link to libuv
-# LIBUV_LIBRARIES
-# LIBUV_INCLUDE_DIR, where to find uv.h
-
-FIND_PATH(LIBUV_INCLUDE_DIR NAMES uv.h)
-FIND_LIBRARY(LIBUV_LIBRARIES NAMES uv libuv)
-
-INCLUDE(FindPackageHandleStandardArgs)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(LIBUV DEFAULT_MSG LIBUV_LIBRARIES LIBUV_INCLUDE_DIR)
diff --git a/3rdparty/luv/cmake/Modules/FindLuaJIT.cmake b/3rdparty/luv/cmake/Modules/FindLuaJIT.cmake
deleted file mode 100644
index b9c2c3ee41a..00000000000
--- a/3rdparty/luv/cmake/Modules/FindLuaJIT.cmake
+++ /dev/null
@@ -1,55 +0,0 @@
-#=============================================================================
-# Copyright 2007-2009 Kitware, Inc.
-# Copyright 2013 Rolf Eike Beer <eike@sf-mail.de>
-#
-# Distributed under the OSI-approved BSD License (the "License");
-# see accompanying file Copyright.txt for details.
-#
-# This software is distributed WITHOUT ANY WARRANTY; without even the
-# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-# See the License for more information.
-#=============================================================================
-# We use code from the CMake project to detect the Lua version.
-
-# Locate LuaJIT library
-# This module defines
-# LUAJIT_FOUND, if false, do not try to link to Lua JIT
-# LUAJIT_LIBRARIES
-# LUAJIT_INCLUDE_DIR, where to find lua.h
-#
-# Additionally it defines the Lua API/ABI version:
-# LUA_VERSION_STRING - the version of Lua found
-# LUA_VERSION_MAJOR - the major version of Lua
-# LUA_VERSION_MINOR - the minor version of Lua
-# LUA_VERSION_PATCH - the patch version of Lua
-
-FIND_PATH(LUAJIT_INCLUDE_DIR NAMES lua.h PATH_SUFFIXES luajit-2.0)
-FIND_LIBRARY(LUAJIT_LIBRARIES NAMES luajit-5.1)
-
-if (LUAJIT_INCLUDE_DIR AND EXISTS "${LUAJIT_INCLUDE_DIR}/lua.h")
- # At least 5.[012] have different ways to express the version
- # so all of them need to be tested. Lua 5.2 defines LUA_VERSION
- # and LUA_RELEASE as joined by the C preprocessor, so avoid those.
- file(STRINGS "${LUAJIT_INCLUDE_DIR}/lua.h" lua_version_strings
- REGEX "^#define[ \t]+LUA_(RELEASE[ \t]+\"Lua [0-9]|VERSION([ \t]+\"Lua [0-9]|_[MR])).*")
-
- string(REGEX REPLACE ".*;#define[ \t]+LUA_VERSION_MAJOR[ \t]+\"([0-9])\"[ \t]*;.*" "\\1" LUA_VERSION_MAJOR ";${lua_version_strings};")
- if (LUA_VERSION_MAJOR MATCHES "^[0-9]+$")
- string(REGEX REPLACE ".*;#define[ \t]+LUA_VERSION_MINOR[ \t]+\"([0-9])\"[ \t]*;.*" "\\1" LUA_VERSION_MINOR ";${lua_version_strings};")
- string(REGEX REPLACE ".*;#define[ \t]+LUA_VERSION_RELEASE[ \t]+\"([0-9])\"[ \t]*;.*" "\\1" LUA_VERSION_PATCH ";${lua_version_strings};")
- set(LUA_VERSION_STRING "${LUA_VERSION_MAJOR}.${LUA_VERSION_MINOR}.${LUA_VERSION_PATCH}")
- else ()
- string(REGEX REPLACE ".*;#define[ \t]+LUA_RELEASE[ \t]+\"Lua ([0-9.]+)\"[ \t]*;.*" "\\1" LUA_VERSION_STRING ";${lua_version_strings};")
- if (NOT LUA_VERSION_STRING MATCHES "^[0-9.]+$")
- string(REGEX REPLACE ".*;#define[ \t]+LUA_VERSION[ \t]+\"Lua ([0-9.]+)\"[ \t]*;.*" "\\1" LUA_VERSION_STRING ";${lua_version_strings};")
- endif ()
- string(REGEX REPLACE "^([0-9]+)\\.[0-9.]*$" "\\1" LUA_VERSION_MAJOR "${LUA_VERSION_STRING}")
- string(REGEX REPLACE "^[0-9]+\\.([0-9]+)[0-9.]*$" "\\1" LUA_VERSION_MINOR "${LUA_VERSION_STRING}")
- string(REGEX REPLACE "^[0-9]+\\.[0-9]+\\.([0-9]).*" "\\1" LUA_VERSION_PATCH "${LUA_VERSION_STRING}")
- endif ()
-
- unset(lua_version_strings)
-endif()
-
-INCLUDE(FindPackageHandleStandardArgs)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(LUAJIT DEFAULT_MSG LUAJIT_LIBRARIES LUAJIT_INCLUDE_DIR)
diff --git a/3rdparty/luv/deps/lua.cmake b/3rdparty/luv/deps/lua.cmake
deleted file mode 100644
index 393e67a107a..00000000000
--- a/3rdparty/luv/deps/lua.cmake
+++ /dev/null
@@ -1,128 +0,0 @@
-# Modfied from luajit.cmake
-# Added LUAJIT_ADD_EXECUTABLE Ryan Phillips <ryan at trolocsis.com>
-# This CMakeLists.txt has been first taken from LuaDist
-# Copyright (C) 2007-2011 LuaDist.
-# Created by Peter Drahoš
-# Redistribution and use of this file is allowed according to the terms of the MIT license.
-# Debugged and (now seriously) modified by Ronan Collobert, for Torch7
-
-#project(Lua53 C)
-
-SET(LUA_DIR ${CMAKE_CURRENT_LIST_DIR}/lua)
-
-SET(CMAKE_REQUIRED_INCLUDES
- ${LUA_DIR}
- ${LUA_DIR}/src
- ${CMAKE_CURRENT_BINARY_DIR}
-)
-
-OPTION(WITH_AMALG "Build eveything in one shot (needs memory)" ON)
-
-# Ugly warnings
-IF(MSVC)
- ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS)
-ENDIF()
-
-# Various includes
-INCLUDE(CheckLibraryExists)
-INCLUDE(CheckFunctionExists)
-INCLUDE(CheckCSourceCompiles)
-INCLUDE(CheckTypeSize)
-
-CHECK_TYPE_SIZE("void*" SIZEOF_VOID_P)
-IF(SIZEOF_VOID_P EQUAL 8)
- ADD_DEFINITIONS(-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE)
-ENDIF()
-
-IF(NOT WIN32)
- FIND_LIBRARY(DL_LIBRARY "dl")
- IF(DL_LIBRARY)
- SET(CMAKE_REQUIRED_LIBRARIES ${DL_LIBRARY})
- LIST(APPEND LIBS ${DL_LIBRARY})
- ENDIF(DL_LIBRARY)
- CHECK_FUNCTION_EXISTS(dlopen LUA_USE_DLOPEN)
- IF(NOT LUA_USE_DLOPEN)
- MESSAGE(FATAL_ERROR "Cannot compile a useful lua.
-Function dlopen() seems not to be supported on your platform.
-Apparently you are not on a Windows platform as well.
-So lua has no way to deal with shared libraries!")
- ENDIF(NOT LUA_USE_DLOPEN)
-ENDIF(NOT WIN32)
-
-check_library_exists(m sin "" LUA_USE_LIBM)
-if ( LUA_USE_LIBM )
- list ( APPEND LIBS m )
-endif ()
-
-## SOURCES
-SET(SRC_LUALIB
- ${LUA_DIR}/src/lbaselib.c
- ${LUA_DIR}/src/lcorolib.c
- ${LUA_DIR}/src/ldblib.c
- ${LUA_DIR}/src/liolib.c
- ${LUA_DIR}/src/lmathlib.c
- ${LUA_DIR}/src/loadlib.c
- ${LUA_DIR}/src/loslib.c
- ${LUA_DIR}/src/lstrlib.c
- ${LUA_DIR}/src/ltablib.c
- ${LUA_DIR}/src/lutf8lib.c)
-
-SET(SRC_LUACORE
- ${LUA_DIR}/src/lauxlib.c
- ${LUA_DIR}/src/lapi.c
- ${LUA_DIR}/src/lcode.c
- ${LUA_DIR}/src/lctype.c
- ${LUA_DIR}/src/ldebug.c
- ${LUA_DIR}/src/ldo.c
- ${LUA_DIR}/src/ldump.c
- ${LUA_DIR}/src/lfunc.c
- ${LUA_DIR}/src/lgc.c
- ${LUA_DIR}/src/linit.c
- ${LUA_DIR}/src/llex.c
- ${LUA_DIR}/src/lmem.c
- ${LUA_DIR}/src/lobject.c
- ${LUA_DIR}/src/lopcodes.c
- ${LUA_DIR}/src/lparser.c
- ${LUA_DIR}/src/lstate.c
- ${LUA_DIR}/src/lstring.c
- ${LUA_DIR}/src/ltable.c
- ${LUA_DIR}/src/ltm.c
- ${LUA_DIR}/src/lundump.c
- ${LUA_DIR}/src/lvm.c
- ${LUA_DIR}/src/lzio.c
- ${SRC_LUALIB})
-
-## GENERATE
-
-IF(WITH_SHARED_LUA)
- IF(WITH_AMALG)
- add_library(lualib SHARED ${LUA_DIR}/../lua_one.c ${DEPS})
- ELSE()
- add_library(lualib SHARED ${SRC_LUACORE} ${DEPS} )
- ENDIF()
-ELSE()
- IF(WITH_AMALG)
- add_library(lualib STATIC ${LUA_DIR}/../lua_one.c ${DEPS} )
- ELSE()
- add_library(lualib STATIC ${SRC_LUACORE} ${DEPS} )
- ENDIF()
- set_target_properties(lualib PROPERTIES
- PREFIX "lib" IMPORT_PREFIX "lib")
-ENDIF()
-
-target_link_libraries (lualib ${LIBS} )
-set_target_properties (lualib PROPERTIES OUTPUT_NAME "lua53")
-
-IF(WIN32)
- add_executable(lua ${LUA_DIR}/src/lua.c)
- target_link_libraries(lua lualib)
-ELSE()
- IF(WITH_AMALG)
- add_executable(lua ${LUA_DIR}/src/lua.c ${LUA_DIR}/lua_one.c ${DEPS})
- ELSE()
- add_executable(lua ${LUA_DIR}/src/lua.c ${SRC_LUACORE} ${DEPS})
- ENDIF()
- target_link_libraries(lua ${LIBS})
- SET_TARGET_PROPERTIES(lua PROPERTIES ENABLE_EXPORTS ON)
-ENDIF(WIN32)
-
diff --git a/3rdparty/luv/deps/lua_one.c b/3rdparty/luv/deps/lua_one.c
deleted file mode 100644
index 2531883cc67..00000000000
--- a/3rdparty/luv/deps/lua_one.c
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
-* one.c -- Lua core, libraries, and interpreter in a single file
-*/
-
-/* default is to build the full interpreter */
-#ifndef MAKE_LIB
-#ifndef MAKE_LUAC
-#ifndef MAKE_LUA
-#define MAKE_LIB
-#endif
-#endif
-#endif
-
-/* choose suitable platform-specific features */
-/* some of these may need extra libraries such as -ldl -lreadline -lncurses */
-#if 0
-#define LUA_USE_LINUX
-#define LUA_USE_MACOSX
-#define LUA_USE_POSIX
-#define LUA_ANSI
-#endif
-
-/* no need to change anything below this line ----------------------------- */
-
-/* setup for luaconf.h */
-#if HAVE_LPREFIX
-# include "lprefix.h"
-#endif
-
-#define LUA_CORE
-#define LUA_LIB
-#define ltable_c
-#define lvm_c
-#include "luaconf.h"
-
-/* do not export internal symbols */
-#undef LUAI_FUNC
-#undef LUAI_DDEC
-#undef LUAI_DDEF
-#define LUAI_FUNC static
-#define LUAI_DDEC static
-#define LUAI_DDEF static
-
-/* core -- used by all */
-#include "lapi.c"
-#include "lcode.c"
-#include "lctype.c"
-#include "ldebug.c"
-#include "ldo.c"
-#include "ldump.c"
-#include "lfunc.c"
-#include "lgc.c"
-#include "llex.c"
-#include "lmem.c"
-#include "lobject.c"
-#include "lopcodes.c"
-#include "lparser.c"
-#include "lstate.c"
-#include "lstring.c"
-#include "ltable.c"
-#include "ltm.c"
-#include "lundump.c"
-#include "lvm.c"
-#include "lzio.c"
-
-/* auxiliary library -- used by all */
-#include "lauxlib.c"
-
-/* standard library -- not used by luac */
-#ifndef MAKE_LUAC
-#include "lbaselib.c"
-#if LUA_VERSION_NUM == 502
-# include "lbitlib.c"
-#endif
-#include "lcorolib.c"
-#include "ldblib.c"
-#include "liolib.c"
-#include "lmathlib.c"
-#include "loadlib.c"
-#include "loslib.c"
-#include "lstrlib.c"
-#include "ltablib.c"
-#if LUA_VERSION_NUM >= 503
-# include "lutf8lib.c"
-#endif
-#include "linit.c"
-#endif
-
-/* lua */
-#ifdef MAKE_LUA
-#include "lua.c"
-#endif
-
-/* luac */
-#ifdef MAKE_LUAC
-#include "luac.c"
-#endif
diff --git a/3rdparty/luv/deps/luajit.cmake b/3rdparty/luv/deps/luajit.cmake
deleted file mode 100644
index e9d5b3582e1..00000000000
--- a/3rdparty/luv/deps/luajit.cmake
+++ /dev/null
@@ -1,407 +0,0 @@
-# Added LUAJIT_ADD_EXECUTABLE Ryan Phillips <ryan at trolocsis.com>
-# This CMakeLists.txt has been first taken from LuaDist
-# Copyright (C) 2007-2011 LuaDist.
-# Created by Peter Drahoš
-# Redistribution and use of this file is allowed according to the terms of the MIT license.
-# Debugged and (now seriously) modified by Ronan Collobert, for Torch7
-
-#project(LuaJIT C ASM)
-
-SET(LUAJIT_DIR ${CMAKE_CURRENT_LIST_DIR}/luajit)
-
-SET(CMAKE_REQUIRED_INCLUDES
- ${LUAJIT_DIR}
- ${LUAJIT_DIR}/src
- ${CMAKE_CURRENT_BINARY_DIR}
-)
-
-OPTION(WITH_AMALG "Build eveything in one shot (needs memory)" ON)
-
-# Ugly warnings
-IF(MSVC)
- ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS)
-ENDIF()
-
-# Various includes
-INCLUDE(CheckLibraryExists)
-INCLUDE(CheckFunctionExists)
-INCLUDE(CheckCSourceCompiles)
-INCLUDE(CheckTypeSize)
-
-# LuaJIT specific
-option(LUAJIT_DISABLE_FFI "Disable FFI." OFF)
-option(LUAJIT_ENABLE_LUA52COMPAT "Enable Lua 5.2 compatibility." ON)
-option(LUAJIT_DISABLE_JIT "Disable JIT." OFF)
-option(LUAJIT_CPU_SSE2 "Use SSE2 instead of x87 instructions." ON)
-option(LUAJIT_CPU_NOCMOV "Disable NOCMOV." OFF)
-MARK_AS_ADVANCED(LUAJIT_DISABLE_FFI LUAJIT_ENABLE_LUA52COMPAT LUAJIT_DISABLE_JIT LUAJIT_CPU_SSE2 LUAJIT_CPU_NOCMOV)
-
-IF(LUAJIT_DISABLE_FFI)
- ADD_DEFINITIONS(-DLUAJIT_DISABLE_FFI)
-ENDIF()
-
-IF(LUAJIT_ENABLE_LUA52COMPAT)
- ADD_DEFINITIONS(-DLUAJIT_ENABLE_LUA52COMPAT)
-ENDIF()
-
-IF(LUAJIT_DISABLE_JIT)
- ADD_DEFINITIONS(-DLUAJIT_DISABLE_JIT)
-ENDIF()
-
-IF(LUAJIT_CPU_SSE2)
- ADD_DEFINITIONS(-DLUAJIT_CPU_SSE2)
-ENDIF()
-
-IF(LUAJIT_CPU_NOCMOV)
- ADD_DEFINITIONS(-DLUAJIT_CPU_NOCMOV)
-ENDIF()
-######
-
-
-CHECK_TYPE_SIZE("void*" SIZEOF_VOID_P)
-IF(SIZEOF_VOID_P EQUAL 8)
- ADD_DEFINITIONS(-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE)
-ENDIF()
-
-if ( WIN32 AND NOT CYGWIN )
- add_definitions ( -DLUAJIT_OS=LUAJIT_OS_WINDOWS)
- set ( LJVM_MODE coffasm )
-elseif ( APPLE )
- set ( CMAKE_EXE_LINKER_FLAGS "-pagezero_size 10000 -image_base 100000000 ${CMAKE_EXE_LINKER_FLAGS}" )
- set ( LJVM_MODE machasm )
-else ()
- set ( LJVM_MODE elfasm )
-endif ()
-
-IF(NOT WIN32)
- FIND_LIBRARY(DL_LIBRARY "dl")
- IF(DL_LIBRARY)
- SET(CMAKE_REQUIRED_LIBRARIES ${DL_LIBRARY})
- LIST(APPEND LIBS ${DL_LIBRARY})
- ENDIF(DL_LIBRARY)
- CHECK_FUNCTION_EXISTS(dlopen LUA_USE_DLOPEN)
- IF(NOT LUA_USE_DLOPEN)
- MESSAGE(FATAL_ERROR "Cannot compile a useful lua.
-Function dlopen() seems not to be supported on your platform.
-Apparently you are not on a Windows platform as well.
-So lua has no way to deal with shared libraries!")
- ENDIF(NOT LUA_USE_DLOPEN)
-ENDIF(NOT WIN32)
-
-check_library_exists(m sin "" LUA_USE_LIBM)
-if ( LUA_USE_LIBM )
- list ( APPEND LIBS m )
-endif ()
-
-## SOURCES
-MACRO(LJ_TEST_ARCH stuff)
- CHECK_C_SOURCE_COMPILES("
-#undef ${stuff}
-#include \"lj_arch.h\"
-#if ${stuff}
-int main() { return 0; }
-#else
-#error \"not defined\"
-#endif
-" ${stuff})
-ENDMACRO()
-
-MACRO(LJ_TEST_ARCH_VALUE stuff value)
- CHECK_C_SOURCE_COMPILES("
-#undef ${stuff}
-#include \"lj_arch.h\"
-#if ${stuff} == ${value}
-int main() { return 0; }
-#else
-#error \"not defined\"
-#endif
-" ${stuff}_${value})
-ENDMACRO()
-
-
-FOREACH(arch X64 X86 ARM PPC PPCSPE MIPS)
- LJ_TEST_ARCH(LJ_TARGET_${arch})
- if(LJ_TARGET_${arch})
- STRING(TOLOWER ${arch} TARGET_LJARCH)
- MESSAGE(STATUS "LuaJIT Target: ${TARGET_LJARCH}")
- BREAK()
- ENDIF()
-ENDFOREACH()
-
-IF(NOT TARGET_LJARCH)
- MESSAGE(FATAL_ERROR "architecture not supported")
-ELSE()
- MESSAGE(STATUS "LuaJIT target ${TARGET_LJARCH}")
-ENDIF()
-
-FILE(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/jit)
-FILE(GLOB jit_files ${LUAJIT_DIR}/src/jit/*.lua)
-FILE(COPY ${jit_files} DESTINATION ${CMAKE_BINARY_DIR}/jit)
-
-SET(DASM_ARCH ${TARGET_LJARCH})
-SET(DASM_FLAGS)
-SET(TARGET_ARCH)
-LIST(APPEND TARGET_ARCH "LUAJIT_TARGET=LUAJIT_ARCH_${TARGET_LJARCH}")
-LJ_TEST_ARCH_VALUE(LJ_ARCH_BITS 64)
-IF(LJ_ARCH_BITS_64)
- SET(DASM_FLAGS ${DASM_FLAGS} -D P64)
-ENDIF()
-LJ_TEST_ARCH_VALUE(LJ_HASJIT 1)
-IF(LJ_HASJIT_1)
- SET(DASM_FLAGS ${DASM_FLAGS} -D JIT)
-ENDIF()
-LJ_TEST_ARCH_VALUE(LJ_HASFFI 1)
-IF(LJ_HASFFI_1)
- SET(DASM_FLAGS ${DASM_FLAGS} -D FFI)
-ENDIF()
-LJ_TEST_ARCH_VALUE(LJ_DUALNUM 1)
-IF(LJ_DUALNUM_1)
- SET(DASM_FLAGS ${DASM_FLAGS} -D DUALNUM)
-ENDIF()
-LJ_TEST_ARCH_VALUE(LJ_ARCH_HASFPU 1)
-IF(LJ_ARCH_HASFPU_1)
- SET(DASM_FLAGS ${DASM_FLAGS} -D FPU)
- LIST(APPEND TARGET_ARCH "LJ_ARCH_HASFPU=1")
-ELSE()
- LIST(APPEND TARGET_ARCH "LJ_ARCH_HASFPU=0")
-ENDIF()
-LJ_TEST_ARCH_VALUE(LJ_ABI_SOFTFP 1)
-IF(NOT LJ_ABI_SOFTFP_1)
- SET(DASM_FLAGS ${DASM_FLAGS} -D HFABI)
- LIST(APPEND TARGET_ARCH "LJ_ABI_SOFTFP=0")
-ELSE()
- LIST(APPEND TARGET_ARCH "LJ_ABI_SOFTFP=1")
-ENDIF()
-IF(WIN32)
- SET(DASM_FLAGS ${DASM_FLAGS} -LN -D WIN)
-ENDIF()
-IF(TARGET_LJARCH STREQUAL "x86")
- LJ_TEST_ARCH_VALUE(__SSE2__ 1)
- IF(__SSE2__1)
- SET(DASM_FLAGS ${DASM_FLAGS} -D SSE)
- ENDIF()
-ENDIF()
-IF(TARGET_LJARCH STREQUAL "x64")
- SET(DASM_ARCH "x86")
-ENDIF()
-IF(TARGET_LJARCH STREQUAL "ppc")
- LJ_TEST_ARCH_VALUE(LJ_ARCH_SQRT 1)
- IF(NOT LJ_ARCH_SQRT_1)
- SET(DASM_FLAGS ${DASM_FLAGS} -D SQRT)
- ENDIF()
- LJ_TEST_ARCH_VALUE(LJ_ARCH_PPC64 1)
- IF(NOT LJ_ARCH_PPC64_1)
- SET(DASM_FLAGS ${DASM_FLAGS} -D GPR64)
- ENDIF()
-ENDIF()
-
-add_executable(minilua ${LUAJIT_DIR}/src/host/minilua.c)
-SET_TARGET_PROPERTIES(minilua PROPERTIES COMPILE_DEFINITIONS "${TARGET_ARCH}")
-CHECK_LIBRARY_EXISTS(m sin "" MINILUA_USE_LIBM)
-if(MINILUA_USE_LIBM)
- TARGET_LINK_LIBRARIES(minilua m)
-endif()
-
-add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/buildvm_arch.h
- COMMAND minilua ${LUAJIT_DIR}/dynasm/dynasm.lua ${DASM_FLAGS} -o ${CMAKE_CURRENT_BINARY_DIR}/buildvm_arch.h ${LUAJIT_DIR}/src/vm_${DASM_ARCH}.dasc
- DEPENDS ${LUAJIT_DIR}/dynasm/dynasm.lua minilua
-)
-
-SET(SRC_LJLIB
- ${LUAJIT_DIR}/src/lib_base.c
- ${LUAJIT_DIR}/src/lib_math.c
- ${LUAJIT_DIR}/src/lib_bit.c
- ${LUAJIT_DIR}/src/lib_string.c
- ${LUAJIT_DIR}/src/lib_table.c
- ${LUAJIT_DIR}/src/lib_io.c
- ${LUAJIT_DIR}/src/lib_os.c
- ${LUAJIT_DIR}/src/lib_package.c
- ${LUAJIT_DIR}/src/lib_debug.c
- ${LUAJIT_DIR}/src/lib_jit.c
- ${LUAJIT_DIR}/src/lib_ffi.c)
-
-SET(SRC_LJCORE
- ${LUAJIT_DIR}/src/lj_gc.c
- ${LUAJIT_DIR}/src/lj_err.c
- ${LUAJIT_DIR}/src/lj_char.c
- ${LUAJIT_DIR}/src/lj_buf.c
- ${LUAJIT_DIR}/src/lj_profile.c
- ${LUAJIT_DIR}/src/lj_strfmt.c
- ${LUAJIT_DIR}/src/lj_bc.c
- ${LUAJIT_DIR}/src/lj_obj.c
- ${LUAJIT_DIR}/src/lj_str.c
- ${LUAJIT_DIR}/src/lj_tab.c
- ${LUAJIT_DIR}/src/lj_func.c
- ${LUAJIT_DIR}/src/lj_udata.c
- ${LUAJIT_DIR}/src/lj_meta.c
- ${LUAJIT_DIR}/src/lj_debug.c
- ${LUAJIT_DIR}/src/lj_state.c
- ${LUAJIT_DIR}/src/lj_dispatch.c
- ${LUAJIT_DIR}/src/lj_vmevent.c
- ${LUAJIT_DIR}/src/lj_vmmath.c
- ${LUAJIT_DIR}/src/lj_strscan.c
- ${LUAJIT_DIR}/src/lj_api.c
- ${LUAJIT_DIR}/src/lj_lex.c
- ${LUAJIT_DIR}/src/lj_parse.c
- ${LUAJIT_DIR}/src/lj_bcread.c
- ${LUAJIT_DIR}/src/lj_bcwrite.c
- ${LUAJIT_DIR}/src/lj_load.c
- ${LUAJIT_DIR}/src/lj_ir.c
- ${LUAJIT_DIR}/src/lj_opt_mem.c
- ${LUAJIT_DIR}/src/lj_opt_fold.c
- ${LUAJIT_DIR}/src/lj_opt_narrow.c
- ${LUAJIT_DIR}/src/lj_opt_dce.c
- ${LUAJIT_DIR}/src/lj_opt_loop.c
- ${LUAJIT_DIR}/src/lj_opt_split.c
- ${LUAJIT_DIR}/src/lj_opt_sink.c
- ${LUAJIT_DIR}/src/lj_mcode.c
- ${LUAJIT_DIR}/src/lj_snap.c
- ${LUAJIT_DIR}/src/lj_record.c
- ${LUAJIT_DIR}/src/lj_crecord.c
- ${LUAJIT_DIR}/src/lj_ffrecord.c
- ${LUAJIT_DIR}/src/lj_asm.c
- ${LUAJIT_DIR}/src/lj_trace.c
- ${LUAJIT_DIR}/src/lj_gdbjit.c
- ${LUAJIT_DIR}/src/lj_ctype.c
- ${LUAJIT_DIR}/src/lj_cdata.c
- ${LUAJIT_DIR}/src/lj_cconv.c
- ${LUAJIT_DIR}/src/lj_ccall.c
- ${LUAJIT_DIR}/src/lj_ccallback.c
- ${LUAJIT_DIR}/src/lj_carith.c
- ${LUAJIT_DIR}/src/lj_clib.c
- ${LUAJIT_DIR}/src/lj_cparse.c
- ${LUAJIT_DIR}/src/lj_lib.c
- ${LUAJIT_DIR}/src/lj_alloc.c
- ${LUAJIT_DIR}/src/lj_vmmath.c
- ${LUAJIT_DIR}/src/lib_aux.c
- ${LUAJIT_DIR}/src/lib_init.c
- ${SRC_LJLIB})
-
-SET(SRC_BUILDVM
- ${LUAJIT_DIR}/src/host/buildvm.c
- ${LUAJIT_DIR}/src/host/buildvm_asm.c
- ${LUAJIT_DIR}/src/host/buildvm_peobj.c
- ${LUAJIT_DIR}/src/host/buildvm_lib.c
- ${LUAJIT_DIR}/src/host/buildvm_fold.c
- ${CMAKE_CURRENT_BINARY_DIR}/buildvm_arch.h)
-
-## GENERATE
-ADD_EXECUTABLE(buildvm ${SRC_BUILDVM})
-SET_TARGET_PROPERTIES(buildvm PROPERTIES COMPILE_DEFINITIONS "${TARGET_ARCH}")
-
-macro(add_buildvm_target _target _mode)
- add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${_target}
- COMMAND buildvm ARGS -m ${_mode} -o ${CMAKE_CURRENT_BINARY_DIR}/${_target} ${ARGN}
- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
- DEPENDS buildvm ${ARGN}
- )
-endmacro(add_buildvm_target)
-
-if (MSVC)
- add_buildvm_target ( lj_vm.obj peobj )
- set (LJ_VM_SRC ${CMAKE_CURRENT_BINARY_DIR}/lj_vm.obj)
-else ()
- add_buildvm_target ( lj_vm.S ${LJVM_MODE} )
- set (LJ_VM_SRC ${CMAKE_CURRENT_BINARY_DIR}/lj_vm.S)
-endif ()
-add_buildvm_target ( lj_ffdef.h ffdef ${SRC_LJLIB} )
-add_buildvm_target ( lj_bcdef.h bcdef ${SRC_LJLIB} )
-add_buildvm_target ( lj_folddef.h folddef ${LUAJIT_DIR}/src/lj_opt_fold.c )
-add_buildvm_target ( lj_recdef.h recdef ${SRC_LJLIB} )
-add_buildvm_target ( lj_libdef.h libdef ${SRC_LJLIB} )
-add_buildvm_target ( vmdef.lua vmdef ${SRC_LJLIB} )
-
-SET(DEPS
- ${LJ_VM_SRC}
- ${CMAKE_CURRENT_BINARY_DIR}/lj_ffdef.h
- ${CMAKE_CURRENT_BINARY_DIR}/lj_bcdef.h
- ${CMAKE_CURRENT_BINARY_DIR}/lj_libdef.h
- ${CMAKE_CURRENT_BINARY_DIR}/lj_recdef.h
- ${CMAKE_CURRENT_BINARY_DIR}/lj_folddef.h
- ${CMAKE_CURRENT_BINARY_DIR}/vmdef.lua
- )
-
-## COMPILE
-include_directories(
- ${LUAJIT_DIR}/dynasm
- ${LUAJIT_DIR}/src
- ${CMAKE_CURRENT_BINARY_DIR}
-)
-
-IF(WITH_SHARED_LUA)
- IF(WITH_AMALG)
- add_library(luajit-5.1 SHARED ${LUAJIT_DIR}/src/ljamalg.c ${DEPS} )
- ELSE()
- add_library(luajit-5.1 SHARED ${SRC_LJCORE} ${DEPS} )
- ENDIF()
- SET_TARGET_PROPERTIES(luajit-5.1 PROPERTIES OUTPUT_NAME "lua51")
-ELSE()
- IF(WITH_AMALG)
- add_library(luajit-5.1 STATIC ${LUAJIT_DIR}/src/ljamalg.c ${DEPS} )
- ELSE()
- add_library(luajit-5.1 STATIC ${SRC_LJCORE} ${DEPS} )
- ENDIF()
- SET_TARGET_PROPERTIES(luajit-5.1 PROPERTIES
- PREFIX "lib" IMPORT_PREFIX "lib" OUTPUT_NAME "luajit")
-ENDIF()
-
-target_link_libraries (luajit-5.1 ${LIBS} )
-
-IF(WIN32)
- add_executable(luajit ${LUAJIT_DIR}/src/luajit.c)
- target_link_libraries(luajit luajit-5.1)
-ELSE()
- IF(WITH_AMALG)
- add_executable(luajit ${LUAJIT_DIR}/src/luajit.c ${LUAJIT_DIR}/src/ljamalg.c ${DEPS})
- ELSE()
- add_executable(luajit ${LUAJIT_DIR}/src/luajit.c ${SRC_LJCORE} ${DEPS})
- ENDIF()
- target_link_libraries(luajit ${LIBS})
- SET_TARGET_PROPERTIES(luajit PROPERTIES ENABLE_EXPORTS ON)
-ENDIF()
-
-MACRO(LUAJIT_add_custom_commands luajit_target)
- SET(target_srcs "")
- FOREACH(file ${ARGN})
- IF(${file} MATCHES ".*\\.lua$")
- set(file "${CMAKE_CURRENT_SOURCE_DIR}/${file}")
- set(source_file ${file})
- string(LENGTH ${CMAKE_SOURCE_DIR} _luajit_source_dir_length)
- string(LENGTH ${file} _luajit_file_length)
- math(EXPR _begin "${_luajit_source_dir_length} + 1")
- math(EXPR _stripped_file_length "${_luajit_file_length} - ${_luajit_source_dir_length} - 1")
- string(SUBSTRING ${file} ${_begin} ${_stripped_file_length} stripped_file)
-
- set(generated_file "${CMAKE_BINARY_DIR}/jitted_tmp/${stripped_file}_${luajit_target}_generated${CMAKE_C_OUTPUT_EXTENSION}")
-
- add_custom_command(
- OUTPUT ${generated_file}
- MAIN_DEPENDENCY ${source_file}
- DEPENDS luajit
- COMMAND luajit
- ARGS -bg
- ${source_file}
- ${generated_file}
- COMMENT "Building Luajitted ${source_file}: ${generated_file}"
- )
-
- get_filename_component(basedir ${generated_file} PATH)
- file(MAKE_DIRECTORY ${basedir})
-
- set(target_srcs ${target_srcs} ${generated_file})
- set_source_files_properties(
- ${generated_file}
- properties
- external_object true # this is an object file
- generated true # to say that "it is OK that the obj-files do not exist before build time"
- )
- ELSE()
- set(target_srcs ${target_srcs} ${file})
- ENDIF(${file} MATCHES ".*\\.lua$")
- ENDFOREACH(file)
-ENDMACRO()
-
-MACRO(LUAJIT_ADD_EXECUTABLE luajit_target)
- LUAJIT_add_custom_commands(${luajit_target} ${ARGN})
- add_executable(${luajit_target} ${target_srcs})
-ENDMACRO(LUAJIT_ADD_EXECUTABLE luajit_target)
diff --git a/3rdparty/luv/deps/uv.cmake b/3rdparty/luv/deps/uv.cmake
deleted file mode 100644
index b6570b26b60..00000000000
--- a/3rdparty/luv/deps/uv.cmake
+++ /dev/null
@@ -1,224 +0,0 @@
-## Modifications
-## Copyright 2014 The Luvit Authors. All Rights Reserved.
-
-## Original Copyright
-# Copyright (c) 2014 David Capello
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be
-# included in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-include(CheckTypeSize)
-
-cmake_minimum_required(VERSION 2.8.9)
-
-set(LIBUVDIR ${CMAKE_CURRENT_LIST_DIR}/libuv)
-
-include_directories(
- ${LIBUVDIR}/src
- ${LIBUVDIR}/include
-)
-
-set(SOURCES
- ${LIBUVDIR}/include/uv.h
- ${LIBUVDIR}/include/tree.h
- ${LIBUVDIR}/include/uv-errno.h
- ${LIBUVDIR}/include/uv-threadpool.h
- ${LIBUVDIR}/include/uv-version.h
- ${LIBUVDIR}/src/fs-poll.c
- ${LIBUVDIR}/src/heap-inl.h
- ${LIBUVDIR}/src/inet.c
- ${LIBUVDIR}/src/queue.h
- ${LIBUVDIR}/src/threadpool.c
- ${LIBUVDIR}/src/uv-common.c
- ${LIBUVDIR}/src/uv-common.h
- ${LIBUVDIR}/src/version.c
-)
-
-if(WIN32)
- add_definitions(
- -D_WIN32_WINNT=0x0600
- -D_CRT_SECURE_NO_WARNINGS
- -D_GNU_SOURCE
- )
- set(SOURCES ${SOURCES}
- ${LIBUVDIR}/include/uv-win.h
- ${LIBUVDIR}/src/win/async.c
- ${LIBUVDIR}/src/win/atomicops-inl.h
- ${LIBUVDIR}/src/win/core.c
- ${LIBUVDIR}/src/win/dl.c
- ${LIBUVDIR}/src/win/error.c
- ${LIBUVDIR}/src/win/fs.c
- ${LIBUVDIR}/src/win/fs-event.c
- ${LIBUVDIR}/src/win/getaddrinfo.c
- ${LIBUVDIR}/src/win/getnameinfo.c
- ${LIBUVDIR}/src/win/handle.c
- ${LIBUVDIR}/src/win/handle-inl.h
- ${LIBUVDIR}/src/win/internal.h
- ${LIBUVDIR}/src/win/loop-watcher.c
- ${LIBUVDIR}/src/win/pipe.c
- ${LIBUVDIR}/src/win/thread.c
- ${LIBUVDIR}/src/win/poll.c
- ${LIBUVDIR}/src/win/process.c
- ${LIBUVDIR}/src/win/process-stdio.c
- ${LIBUVDIR}/src/win/req.c
- ${LIBUVDIR}/src/win/req-inl.h
- ${LIBUVDIR}/src/win/signal.c
- ${LIBUVDIR}/src/win/snprintf.c
- ${LIBUVDIR}/src/win/stream.c
- ${LIBUVDIR}/src/win/stream-inl.h
- ${LIBUVDIR}/src/win/tcp.c
- ${LIBUVDIR}/src/win/tty.c
- ${LIBUVDIR}/src/win/timer.c
- ${LIBUVDIR}/src/win/udp.c
- ${LIBUVDIR}/src/win/util.c
- ${LIBUVDIR}/src/win/winapi.c
- ${LIBUVDIR}/src/win/winapi.h
- ${LIBUVDIR}/src/win/winsock.c
- ${LIBUVDIR}/src/win/winsock.h
- )
-else()
- include_directories(${LIBUVDIR}/src/unix)
- set(SOURCES ${SOURCES}
- ${LIBUVDIR}/include/uv-unix.h
- ${LIBUVDIR}/include/uv-linux.h
- ${LIBUVDIR}/include/uv-sunos.h
- ${LIBUVDIR}/include/uv-darwin.h
- ${LIBUVDIR}/include/uv-bsd.h
- ${LIBUVDIR}/include/uv-aix.h
- ${LIBUVDIR}/src/unix/async.c
- ${LIBUVDIR}/src/unix/atomic-ops.h
- ${LIBUVDIR}/src/unix/core.c
- ${LIBUVDIR}/src/unix/dl.c
- ${LIBUVDIR}/src/unix/fs.c
- ${LIBUVDIR}/src/unix/getaddrinfo.c
- ${LIBUVDIR}/src/unix/getnameinfo.c
- ${LIBUVDIR}/src/unix/internal.h
- ${LIBUVDIR}/src/unix/loop.c
- ${LIBUVDIR}/src/unix/loop-watcher.c
- ${LIBUVDIR}/src/unix/pipe.c
- ${LIBUVDIR}/src/unix/poll.c
- ${LIBUVDIR}/src/unix/process.c
- ${LIBUVDIR}/src/unix/signal.c
- ${LIBUVDIR}/src/unix/spinlock.h
- ${LIBUVDIR}/src/unix/stream.c
- ${LIBUVDIR}/src/unix/tcp.c
- ${LIBUVDIR}/src/unix/thread.c
- ${LIBUVDIR}/src/unix/timer.c
- ${LIBUVDIR}/src/unix/tty.c
- ${LIBUVDIR}/src/unix/udp.c
- )
-endif()
-
-check_type_size("void*" SIZEOF_VOID_P)
-if(SIZEOF_VOID_P EQUAL 8)
- add_definitions(-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE)
-endif()
-
-## Freebsd
-if("${CMAKE_SYSTEM_NAME}" MATCHES "FreeBSD")
- set(SOURCES ${SOURCES}
- ${LIBUVDIR}/src/unix/kqueue.c
- ${LIBUVDIR}/src/unix/freebsd.c
- )
-endif()
-
-## Linux
-if("${CMAKE_SYSTEM_NAME}" MATCHES "Linux")
- add_definitions(
- -D_GNU_SOURCE
- )
- set(SOURCES ${SOURCES}
- ${LIBUVDIR}/src/unix/proctitle.c
- ${LIBUVDIR}/src/unix/linux-core.c
- ${LIBUVDIR}/src/unix/linux-inotify.c
- ${LIBUVDIR}/src/unix/linux-syscalls.c
- ${LIBUVDIR}/src/unix/linux-syscalls.h
- )
-endif()
-
-## SunOS
-if("${CMAKE_SYSTEM_NAME}" MATCHES "SunOS")
- add_definitions(
- -D__EXTENSIONS__
- -D_XOPEN_SOURCE=500
- )
- set(SOURCES ${SOURCES}
- ${LIBUVDIR}/src/unix/sunos.c
- )
-endif()
-
-## Darwin
-if(APPLE)
- add_definitions(
- -D=_DARWIN_USE_64_BIT_INODE
- )
- set(SOURCES ${SOURCES}
- ${LIBUVDIR}/src/unix/proctitle.c
- ${LIBUVDIR}/src/unix/darwin.c
- ${LIBUVDIR}/src/unix/fsevents.c
- ${LIBUVDIR}/src/unix/darwin-proctitle.c
- ${LIBUVDIR}/src/unix/kqueue.c
- )
-endif()
-
-add_library(uv STATIC ${SOURCES})
-set_property(TARGET uv PROPERTY POSITION_INDEPENDENT_CODE ON)
-
-if("${CMAKE_SYSTEM_NAME}" MATCHES "FreeBSD")
- target_link_libraries(uv
- pthread
- kvm
- )
-endif()
-
-if("${CMAKE_SYSTEM_NAME}" MATCHES "Linux")
- target_link_libraries(uv
- pthread
- )
-endif()
-
-if(WIN32)
- target_link_libraries(uv
- ws2_32.lib
- shell32.lib
- psapi.lib
- iphlpapi.lib
- advapi32.lib
- Userenv.lib
- )
-endif()
-
-if("${CMAKE_SYSTEM_NAME}" MATCHES "SunOS")
- target_link_libraries(uv
- kstat
- socket
- sendfile
- )
-endif()
-
-if(APPLE)
- find_library(FOUNDATION_LIBRARY Foundation)
- find_library(CORESERVICES_LIBRARY CoreServices)
- find_library(APPLICATION_SERVICES_LIBRARY ApplicationServices)
- target_link_libraries(uv
- ${FOUNDATION_LIBRARY}
- ${CORESERVICES_LIBRARY}
- ${APPLICATION_SERVICES_LIBRARY}
- )
-endif()
diff --git a/3rdparty/luv/docs.md b/3rdparty/luv/docs.md
deleted file mode 100644
index 187dec24ff1..00000000000
--- a/3rdparty/luv/docs.md
+++ /dev/null
@@ -1,1309 +0,0 @@
-# LibUV in Lua
-
-The [luv][] project provides access to the multi-platform support library
-[libuv][] to lua code. It was primariliy developed for the [luvit][] project as
-the `uv` builtin module, but can be used in other lua environments.
-
-### TCP Echo Server Example
-
-Here is a small example showing a TCP echo server:
-
-```lua
-local uv = require('uv')
-
-local server = uv.new_tcp()
-server:bind("127.0.0.1", 1337)
-server:listen(128, function (err)
- assert(not err, err)
- local client = uv.new_tcp()
- server:accept(client)
- client:read_start(function (err, chunk)
- assert(not err, err)
- if chunk then
- client:write(chunk)
- else
- client:shutdown()
- client:close()
- end
- end)
-end)
-print("TCP server listening at 127.0.0.1 port 1337")
-uv.run()
-```
-
-### Methods vs Functions
-
-As a quick note, [libuv][] is a C library and as such, there are no such things
-as methods. The [luv][] bindings allow calling the libuv functions as either
-functions or methods. For example, calling `server:bind(host, port)` is
-equivalent to calling `uv.tcp_bind(server, host, port)`. All wrapped uv types
-in lua have method shortcuts where is makes sense. Some are even renamed
-shorter like the `tcp_` prefix that removed in method form. Under the hood it's
-the exact same C function.
-
-## Table Of Contents
-
-The rest of the docs are organized by libuv type. There is some hierarchy as
-most types are considered handles and some are considered streams.
-
- - [`uv_loop_t`][] — Event loop
- - [`uv_handle_t`][] — Base handle
- - [`uv_timer_t`][] — Timer handle
- - [`uv_prepare_t`][] — Prepare handle
- - [`uv_check_t`][] — Check handle
- - [`uv_idle_t`][] — Idle handle
- - [`uv_async_t`][] — Async handle
- - [`uv_poll_t`][] — Poll handle
- - [`uv_signal_t`][] — Signal handle
- - [`uv_process_t`][] — Process handle
- - [`uv_stream_t`][] — Stream handle
- - [`uv_tcp_t`][] — TCP handle
- - [`uv_pipe_t`][] — Pipe handle
- - [`uv_tty_t`][] — TTY handle
- - [`uv_udp_t`][] — UDP handle
- - [`uv_fs_event_t`][] — FS Event handle
- - [`uv_fs_poll_t`][] — FS Poll handle
- - [Filesystem operations][]
- - [DNS utility functions][]
- - [Miscellaneous utilities][]
-
-## `uv_loop_t` — Event loop
-
-[`uv_loop_t`]: #uv_loop_t--event-loop
-
-The event loop is the central part of libuv’s functionality. It takes care of
-polling for i/o and scheduling callbacks to be run based on different sources of
-events.
-
-In [luv][], there is an implicit uv loop for every lua state that loads the
-library. You can use this library in an multithreaded environment as long as
-each thread has it's own lua state with corresponsding own uv loop.
-
-### `uv.loop_close()`
-
-Closes all internal loop resources. This function must only be called once the
-loop has finished its execution or it will raise a UV_EBUSY error.
-
-### `uv.run([mode])`
-
-> optional `mode` defaults to `"default"`
-
-This function runs the event loop. It will act differently depending on the
-specified mode:
-
- - `"default"`: Runs the event loop until there are no more active and
- referenced handles or requests. Always returns `false`.
-
- - `"once"`: Poll for i/o once. Note that this function blocks if there are no
- pending callbacks. Returns `false` when done (no active handles or requests
- left), or `true` if more callbacks are expected (meaning you should run
- the event loop again sometime in the future).
-
- - `"nowait"`: Poll for i/o once but don’t block if there are no
- pending callbacks. Returns `false` if done (no active handles or requests
- left), or `true` if more callbacks are expected (meaning you should run
- the event loop again sometime in the future).
-
-Luvit will implicitly call `uv.run()` after loading user code, but if you use
-the `luv` bindings directly, you need to call this after registering your
-initial set of event callbacks to start the event loop.
-
-### `uv.loop_alive()`
-
-Returns true if there are active handles or request in the loop.
-
-### `uv.stop()`
-
-Stop the event loop, causing `uv_run()` to end as soon as possible. This
-will happen not sooner than the next loop iteration. If this function was called
-before blocking for i/o, the loop won’t block for i/o on this iteration.
-
-### `uv.backend_fd()`
-
-Get backend file descriptor. Only kqueue, epoll and event ports are supported.
-
-This can be used in conjunction with `uv_run("nowait")` to poll in one thread
-and run the event loop’s callbacks in another.
-
-**Note**: Embedding a kqueue fd in another kqueue pollset doesn’t work on all
-platforms. It’s not an error to add the fd but it never generates events.
-
-### `uv.backend_timeout()`
-
-Get the poll timeout. The return value is in milliseconds, or -1 for no timeout.
-
-### `uv.now()`
-
-Return the current timestamp in milliseconds. The timestamp is cached at the
-start of the event loop tick, see `uv.update_time()` for details and rationale.
-
-The timestamp increases monotonically from some arbitrary point in time. Don’t
-make assumptions about the starting point, you will only get disappointed.
-
-**Note**: Use `uv.hrtime()` if you need sub-millisecond granularity.
-
-### `uv.update_time()`
-
-Update the event loop’s concept of “now”. Libuv caches the current time at the
-start of the event loop tick in order to reduce the number of time-related
-system calls.
-
-You won’t normally need to call this function unless you have callbacks that
-block the event loop for longer periods of time, where “longer” is somewhat
-subjective but probably on the order of a millisecond or more.
-
-### `uv.walk(callback)`
-
-Walk the list of handles: `callback` will be executed with the handle.
-
-```lua
--- Example usage of uv.walk to close all handles that aren't already closing.
-uv.walk(function (handle)
- if not handle:is_closing() then
- handle:close()
- end
-end)
-```
-
-## `uv_handle_t` — Base handle
-
-[`uv_handle_t`]: #uv_handle_t--base-handle
-
-`uv_handle_t` is the base type for all libuv handle types.
-
-Structures are aligned so that any libuv handle can be cast to `uv_handle_t`.
-All API functions defined here work with any handle type.
-
-### `uv.is_active(handle)`
-
-> method form `handle:is_active()`
-
-Returns `true` if the handle is active, `false` if it’s inactive. What “active”
-means depends on the type of handle:
-
- - A [`uv_async_t`][] handle is always active and cannot be deactivated, except
- by closing it with uv_close().
-
- - A [`uv_pipe_t`][], [`uv_tcp_t`][], [`uv_udp_t`][], etc. handlebasically any
- handle that deals with i/ois active when it is doing something that
- involves i/o, like reading, writing, connecting, accepting new connections,
- etc.
-
- - A [`uv_check_t`][], [`uv_idle_t`][], [`uv_timer_t`][], etc. handle is active
- when it has been started with a call to `uv.check_start()`,
- `uv.idle_start()`, etc.
-
-Rule of thumb: if a handle of type `uv_foo_t` has a `uv.foo_start()` function,
-then it’s active from the moment that function is called. Likewise,
-`uv.foo_stop()` deactivates the handle again.
-
-### `uv.is_closing(handle)`
-
-> method form `handle:is_closing()`
-
-Returns `true` if the handle is closing or closed, `false` otherwise.
-
-**Note**: This function should only be used between the initialization of the
-handle and the arrival of the close callback.
-
-### `uv.close(handle, callback)`
-
-> method form `handle:close(callback)`
-
-Request handle to be closed. `callback` will be called asynchronously after this
-call. This MUST be called on each handle before memory is released.
-
-Handles that wrap file descriptors are closed immediately but `callback` will
-still be deferred to the next iteration of the event loop. It gives you a chance
-to free up any resources associated with the handle.
-
-In-progress requests, like `uv_connect_t` or `uv_write_t`, are cancelled and
-have their callbacks called asynchronously with `status=UV_ECANCELED`.
-
-### `uv.ref(handle)`
-
-> method form `handle:ref()`
-
-Reference the given handle. References are idempotent, that is, if a handle is
-already referenced calling this function again will have no effect.
-
-See [Reference counting][].
-
-### `uv.unref(handle)`
-
-> method form `handle:unref()`
-
-Un-reference the given handle. References are idempotent, that is, if a handle
-is not referenced calling this function again will have no effect.
-
-See [Reference counting][].
-
-### `uv.has_ref(handle)`
-
-> method form `handle:has_ref()`
-
-Returns `true` if the handle referenced, `false` otherwise.
-
-See [Reference counting][].
-
-### `uv.send_buffer_size(handle, [size]) -> size`
-
-> method form `handle:send_buffer_size(size)`
-
-Gets or sets the size of the send buffer that the operating system uses for the
-socket.
-
-If `size` is omitted, it will return the current send buffer size, otherwise it
-will use `size` to set the new send buffer size.
-
-This function works for TCP, pipe and UDP handles on Unix and for TCP and UDP
-handles on Windows.
-
-**Note**: Linux will set double the size and return double the size of the
-original set value.
-
-### `uv.recv_buffer_size(handle, [size])`
-
-> method form `handle:recv_buffer_size(size)`
-
-Gets or sets the size of the receive buffer that the operating system uses for
-the socket.
-
-If `size` is omitted, it will return the current receive buffer size, otherwise
-it will use `size` to set the new receive buffer size.
-
-This function works for TCP, pipe and UDP handles on Unix and for TCP and UDP
-handles on Windows.
-
-**Note**: Linux will set double the size and return double the size of the
-original set value.
-
-### `uv.fileno(handle)`
-
-> method form `handle:fileno()`
-
-Gets the platform dependent file descriptor equivalent.
-
-The following handles are supported: TCP, pipes, TTY, UDP and poll. Passing any
-other handle type will fail with UV_EINVAL.
-
-If a handle doesn’t have an attached file descriptor yet or the handle itself
-has been closed, this function will return UV_EBADF.
-
-**Warning**: Be very careful when using this function. libuv assumes it’s in
-control of the file descriptor so any change to it may lead to malfunction.
-
-## Reference counting
-
-[reference counting]: #reference-counting
-
-The libuv event loop (if run in the default mode) will run until there are no
-active and referenced handles left. The user can force the loop to exit early by
-unreferencing handles which are active, for example by calling `uv.unref()`
-after calling `uv.timer_start()`.
-
-A handle can be referenced or unreferenced, the refcounting scheme doesn’t use a
-counter, so both operations are idempotent.
-
-All handles are referenced when active by default, see `uv.is_active()` for a
-more detailed explanation on what being active involves.
-
-## `uv_timer_t` — Timer handle
-
-[`uv_timer_t`]: #uv_timer_t--timer-handle
-
-Timer handles are used to schedule callbacks to be called in the future.
-
-### `uv.new_timer() -> timer`
-
-Creates and initializes a new `uv_timer_t`. Returns the lua userdata wrapping
-it.
-
-```lua
--- Creating a simple setTimeout wrapper
-local function setTimeout(timeout, callback)
- local timer = uv.new_timer()
- timer:start(timeout, 0, function ()
- timer:stop()
- timer:close()
- callback()
- end)
- return timer
-end
-
--- Creating a simple setInterval wrapper
-local function setInterval(interval, callback)
- local timer = uv.new_timer()
- timer:start(interval, interval, function ()
- timer:stop()
- timer:close()
- callback()
- end)
- return timer
-end
-
--- And clearInterval
-local function clearInterval(timer)
- timer:stop()
- timer:close()
-end
-```
-
-### `uv.timer_start(timer, timeout, repeat, callback)`
-
-> method form `timer:start(timeout, repeat, callback)`
-
-Start the timer. `timeout` and `repeat` are in milliseconds.
-
-If `timeout` is zero, the callback fires on the next event loop iteration. If
-`repeat` is non-zero, the callback fires first after timeout milliseconds and
-then repeatedly after repeat milliseconds.
-
-### `uv.timer_stop(timer)`
-
-> method form `timer:stop()`
-
-Stop the timer, the callback will not be called anymore.
-
-### `uv.timer_again(timer)`
-
-> method form `timer:again()`
-
-Stop the timer, and if it is repeating restart it using the repeat value as the
-timeout. If the timer has never been started before it raises `EINVAL`.
-
-### `uv.timer_set_repeat(timer, repeat)`
-
-> method form `timer:set_repeat(repeat)`
-
-Set the repeat value in milliseconds.
-
-**Note**: If the repeat value is set from a timer callback it does not
-immediately take effect. If the timer was non-repeating before, it will have
-been stopped. If it was repeating, then the old repeat value will have been
-used to schedule the next timeout.
-
-### `uv.timer_get_repeat(timer) -> repeat`
-
-> method form `timer:get_repeat() -> repeat`
-
-Get the timer repeat value.
-
-## `uv_prepare_t` — Prepare handle
-
-[`uv_prepare_t`]: #uv_prepare_t--prepare-handle
-
-Prepare handles will run the given callback once per loop iteration, right before polling for i/o.
-
-```lua
-local prepare = uv.new_prepare()
-prepare:start(function()
- print("Before I/O polling")
-end)
-```
-
-### `uv.new_prepare() -> prepare`
-
-Creates and initializes a new `uv_prepare_t`. Returns the lua userdata wrapping
-it.
-
-### `uv.prepare_start(prepare, callback)`
-
-> method form `prepare:start(callback)`
-
-Start the handle with the given callback.
-
-### `uv.prepare_stop(prepare)`
-
-> method form `prepare:stop()`
-
-Stop the handle, the callback will no longer be called.
-
-## `uv_check_t` — Check handle
-
-[`uv_check_t`]: #uv_check_t--check-handle
-
-Check handles will run the given callback once per loop iteration, right after
-polling for i/o.
-
-```lua
-local check = uv.new_check()
-check:start(function()
- print("After I/O polling")
-end)
-```
-
-### `uv.new_check() -> check`
-
-Creates and initializes a new `uv_check_t`. Returns the lua userdata wrapping
-it.
-
-### `uv.check_start(check, callback)`
-
-> method form `check:start(callback)`
-
-Start the handle with the given callback.
-
-### `uv.check_stop(check)`
-
-> method form `check:stop()`
-
-Stop the handle, the callback will no longer be called.
-
-## `uv_idle_t` — Idle handle
-
-[`uv_idle_t`]: #uv_idle_t--idle-handle
-
-Idle handles will run the given callback once per loop iteration, right before
-the [`uv_prepare_t`][] handles.
-
-**Note**: The notable difference with prepare handles is that when there are
-active idle handles, the loop will perform a zero timeout poll instead of
-blocking for i/o.
-
-**Warning**: Despite the name, idle handles will get their callbacks called on
-every loop iteration, not when the loop is actually “idle”.
-
-```lua
-local idle = uv.new_idle()
-idle:start(function()
- print("Before I/O polling, no blocking")
-end)
-```
-### `uv.new_idle() -> idle`
-
-Creates and initializes a new `uv_idle_t`. Returns the lua userdata wrapping
-it.
-
-### `uv.idle_start(idle, callback)`
-
-> method form `idle:start(callback)`
-
-Start the handle with the given callback.
-
-### `uv.idle_stop(check)`
-
-> method form `idle:stop()`
-
-Stop the handle, the callback will no longer be called.
-
-## `uv_async_t` — Async handle
-
-[`uv_async_t`]: #uv_async_t--async-handle
-
-Async handles allow the user to “wakeup” the event loop and get a callback
-called from another thread.
-
-```lua
-local async
-async = uv.new_async(function()
- print("async operation ran")
- async:close()
-end)
-
-async:send()
-```
-
-### `uv.new_async(callback) -> async`
-
-Creates and initializes a new `uv_async_t`. Returns the lua userdata wrapping
-it. A NULL callback is allowed.
-
-**Note**: Unlike other handle initialization functions, it immediately starts
-the handle.
-
-### `uv.async_send(async)`
-
-> method form `async:send()`
-
-Wakeup the event loop and call the async handle’s callback.
-
-**Note**: It’s safe to call this function from any thread. The callback will be
-called on the loop thread.
-
-**Warning**: libuv will coalesce calls to `uv.async_send(async)`, that is, not
-every call to it will yield an execution of the callback, the only guarantee is
-that it will be called at least once. Thus, calling this function may not
-wakeup the event loop if it was already called previously within a short period
-of time.
-
-## `uv_poll_t` — Poll handle
-
-[`uv_poll_t`]: #uv_poll_t--poll-handle
-
-Poll handles are used to watch file descriptors for readability and writability,
-similar to the purpose of [poll(2)](http://linux.die.net/man/2/poll).
-
-The purpose of poll handles is to enable integrating external libraries that
-rely on the event loop to signal it about the socket status changes, like c-ares
-or libssh2. Using `uv_poll_t` for any other purpose is not recommended;
-`uv_tcp_t`, `uv_udp_t`, etc. provide an implementation that is faster and more
-scalable than what can be achieved with `uv_poll_t`, especially on Windows.
-
-It is possible that poll handles occasionally signal that a file descriptor is
-readable or writable even when it isn’t. The user should therefore always be
-prepared to handle EAGAIN or equivalent when it attempts to read from or write
-to the fd.
-
-It is not okay to have multiple active poll handles for the same socket, this
-can cause libuv to busyloop or otherwise malfunction.
-
-The user should not close a file descriptor while it is being polled by an
-active poll handle. This can cause the handle to report an error, but it might
-also start polling another socket. However the fd can be safely closed
-immediately after a call to `uv.poll_stop()` or `uv.close()`.
-
-**Note** On windows only sockets can be polled with poll handles. On Unix any
-file descriptor that would be accepted by poll(2) can be used.
-
-
-### `uv.new_poll(fd) -> poll`
-
-Initialize the handle using a file descriptor.
-
-The file descriptor is set to non-blocking mode.
-
-### `uv.new_socket_poll(fd) -> poll`
-
-Initialize the handle using a socket descriptor. On Unix this is identical to
-`uv.poll_init()`. On windows it takes a SOCKET handle.
-
-The socket is set to non-blocking mode.
-
-### `uv.poll_start(poll, events, callback)`
-
-> method form `poll:start()`
-
-Starts polling the file descriptor. `events` is `"r"`, `"w"`, or `"rw"` and
-translates to a bitmask made up of UV_READABLE and UV_WRITABLE. As soon as an
-event is detected the callback will be called with status set to 0, and the
-detected events set on the events field.
-
-The user should not close the socket while the handle is active. If the user
-does that anyway, the callback may be called reporting an error status, but this
-is not guaranteed.
-
-**Note** Calling `uv.poll_start()`` on a handle that is already active is fine.
-Doing so will update the events mask that is being watched for.
-
-## `uv.poll_stop(poll)`
-
-> method form `poll:stop()`
-
-Stop polling the file descriptor, the callback will no longer be called.
-
-## `uv_signal_t` — Signal handle
-
-[`uv_signal_t`]: #uv_signal_t--signal-handle
-
-Signal handles implement Unix style signal handling on a per-event loop bases.
-
-Reception of some signals is emulated on Windows:
-* SIGINT is normally delivered when the user presses CTRL+C. However, like on
-Unix, it is not generated when terminal raw mode is enabled.
-* SIGBREAK is delivered when the user pressed CTRL + BREAK.
-* SIGHUP is generated when the user closes the console window. On SIGHUP the
-program is given approximately 10 seconds to perform cleanup. After that
-Windows will unconditionally terminate it.
-* SIGWINCH is raised whenever libuv detects that the console has been resized.
-SIGWINCH is emulated by libuv when the program uses a uv_tty_t handle to write
-to the console. SIGWINCH may not always be delivered in a timely manner; libuv
-will only detect size changes when the cursor is being moved. When a readable
-[`uv_tty_t`][] handle is used in raw mode, resizing the console buffer will
-also trigger a SIGWINCH signal.
-
-Watchers for other signals can be successfully created, but these signals are
-never received. These signals are: SIGILL, SIGABRT, SIGFPE, SIGSEGV, SIGTERM
-and SIGKILL.
-
-Calls to raise() or abort() to programmatically raise a signal are not detected
-by libuv; these will not trigger a signal watcher.
-
-**Note**: On Linux SIGRT0 and SIGRT1 (signals 32 and 33) are used by the NPTL
-pthreads library to manage threads. Installing watchers for those signals will
-lead to unpredictable behavior and is strongly discouraged. Future versions of
-libuv may simply reject them.
-
-```lua
--- Create a new signal handler
-local sigint = uv.new_signal()
--- Define a handler function
-uv.signal_start(sigint, "sigint", function(signal)
-print("got " .. signal .. ", shutting down")
-os.exit(1)
-end)
-```
-
-### `uv.new_signal() -> signal`
-
-Creates and initializes a new `uv_signal_t`. Returns the lua userdata wrapping
-it.
-
-### `uv.signal_start(signal, signum, callback)`
-
-> method form `signal:start(signum, callback)`
-
-Start the handle with the given callback, watching for the given signal.
-
-### `uv.signal_stop(signal)`
-
-> method form `signal:stop()`
-
-Stop the handle, the callback will no longer be called.
-
-## `uv_process_t` — Process handle
-
-[`uv_process_t`]: #uv_process_t--process-handle
-
-Process handles will spawn a new process and allow the user to control it and
-establish communication channels with it using streams.
-
-### `uv.disable_stdio_inheritance()`
-
-Disables inheritance for file descriptors / handles that this process inherited
-from its parent. The effect is that child processes spawned by this process
-don’t accidentally inherit these handles.
-
-It is recommended to call this function as early in your program as possible,
-before the inherited file descriptors can be closed or duplicated.
-
-**Note** This function works on a best-effort basis: there is no guarantee that
-libuv can discover all file descriptors that were inherited. In general it does
-a better job on Windows than it does on Unix.
-
-### `uv.spawn(file, options, onexit) -> process, pid`
-
-Initializes the process handle and starts the process. If the process is
-successfully spawned, this function will return the handle and pid of the child
-process.
-
-Possible reasons for failing to spawn would include (but not be limited to) the
-file to execute not existing, not having permissions to use the setuid or setgid
-specified, or not having enough memory to allocate for the new process.
-
-
-```lua
-local stdout = uv.new_pipe(false)
-local stderr = uv.new_pipe(false)
-local stdin = uv.new_pipe(false)
-
-local handle, pid
-
-local function onexit(code, signal)
- p("exit", {code=code,signal=signal})
-end
-
-local function onclose()
- p("close")
-end
-
-local function onread(err, chunk)
- assert(not err, err)
- if (chunk) then
- p("data", {data=chunk})
- else
- p("end")
- end
-end
-
-local function onshutdown()
- uv.close(handle, onclose)
-end
-
-handle, pid = uv.spawn("cat", {
- stdio = {stdin, stdout, stderr}
-}, onexit)
-
-p{
- handle=handle,
- pid=pid
-}
-
-uv.read_start(stdout, onread)
-uv.read_start(stderr, onread)
-uv.write(stdin, "Hello World")
-uv.shutdown(stdin, onshutdown)
-```
-
- - `options.args` - Command line arguments as a list of string. The first string
- should be the path to the program. On Windows this uses CreateProcess which
- concatenates the arguments into a string this can cause some strange errors.
- (See `options.verbatim` below for Windows.)
- - `options.stdio` - Set the file descriptors that will be made available to the
- child process. The convention is that the first entries are stdin, stdout,
- and stderr. (**Note** On Windows file descriptors after the third are
- available to the child process only if the child processes uses the MSVCRT
- runtime.)
- - `options.env` - Set environment variables for the new process.
- - `options.cwd` - Set current working directory for the subprocess.
- - `options.uid` - Set the child process' user id.
- - `options.gid` - Set the child process' group id.
- - `options.verbatim` - If true, do not wrap any arguments in quotes, or perform
- any other escaping, when converting the argument list into a command line
- string. This option is only meaningful on Windows systems. On Unix it is
- silently ignored.
- - `options.detached` - If true, spawn the child process in a detached state -
- this will make it a process group leader, and will effectively enable the
- child to keep running after the parent exits. Note that the child process
- will still keep the parent's event loop alive unless the parent process calls
- `uv.unref()` on the child's process handle.
- - `options.hide` - If true, hide the subprocess console window that would
- normally be created. This option is only meaningful on Windows systems. On
- Unix it is silently ignored.
-
-The `options.stdio` entries can take many shapes.
-
-- If they are numbers, then the child process inherits that same zero-indexed fd
- from the parent process.
-- If `uv_stream_h` handles are passed in, those are used as a read-write pipe or
- inherited stream depending if the stream has a valid fd.
-- Including `nil` placeholders means to ignore that fd in the child.
-
-When the child process exits, the `onexit` callback will be called with exit
-code and signal.
-
-### `uv.process_kill(process, sigmun)`
-
-> method form `process:kill(sigmun)`
-
-Sends the specified signal to the given process handle.
-
-### `uv.kill(pid, sigmun)`
-
-Sends the specified signal to the given PID.
-
-## `uv_stream_t` — Stream handle
-
-[`uv_stream_t`]: #uv_stream_t--stream-handle
-
-Stream handles provide an abstraction of a duplex communication channel.
-[`uv_stream_t`][] is an abstract type, libuv provides 3 stream implementations in
-the form of [`uv_tcp_t`][], [`uv_pipe_t`][] and [`uv_tty_t`][].
-
-### `uv.shutdown(stream, [callback]) -> req`
-
-> (method form `stream:shutdown([callback]) -> req`)
-
-Shutdown the outgoing (write) side of a duplex stream. It waits for pending
-write requests to complete. The callback is called after
-shutdown is complete.
-
-### `uv.listen(stream, backlog, callback)`
-
-> (method form `stream:listen(backlog, callback)`)
-
-Start listening for incoming connections. `backlog` indicates the number of
-connections the kernel might queue, same as `listen(2)`. When a new incoming
-connection is received the callback is called.
-
-### `uv.accept(stream, client_stream)`
-
-> (method form `stream:accept(client_stream)`)
-
-This call is used in conjunction with `uv.listen()` to accept incoming
-connections. Call this function after receiving a callback to accept the
-connection.
-
-When the connection callback is called it is guaranteed that this function
-will complete successfully the first time. If you attempt to use it more than
-once, it may fail. It is suggested to only call this function once per
-connection call.
-
-```lua
-server:listen(128, function (err)
- local client = uv.new_tcp()
- server:accept(client)
-end)
-```
-
-### `uv.read_start(stream, callback)`
-
-> (method form `stream:read_start(callback)`)
-
-Callback is of the form `(err, data)`.
-
-Read data from an incoming stream. The callback will be made several times until
-there is no more data to read or `uv.read_stop()` is called. When we’ve reached
-EOF, `data` will be `nil`.
-
-```lua
-stream:read_start(function (err, chunk)
- if err then
- -- handle read error
- elseif chunk then
- -- handle data
- else
- -- handle disconnect
- end
-end)
-```
-
-### `uv.read_stop(stream)`
-
-> (method form `stream:read_stop()`)
-
-Stop reading data from the stream. The read callback will no longer be called.
-
-### `uv.write(stream, data, [callback])`
-
-> (method form `stream:write(data, [callback])`)
-
-Write data to stream.
-
-`data` can either be a lua string or a table of strings. If a table is passed
-in, the C backend will use writev to send all strings in a single system call.
-
-The optional `callback` is for knowing when the write is
-complete.
-
-### `uv.write2(stream, data, send_handle, callback)`
-
-> (method form `stream:write2(data, send_handle, callback)`)
-
-Extended write function for sending handles over a pipe. The pipe must be
-initialized with ip option to `true`.
-
-**Note: `send_handle` must be a TCP socket or pipe, which is a server or a
-connection (listening or connected state). Bound sockets or pipes will be
-assumed to be servers.
-
-### `uv.try_write(stream, data)`
-
-> (method form `stream:try_write(data)`)
-
-Same as `uv.write()`, but won’t queue a write request if it can’t be completed
-immediately.
-
-Will return number of bytes written (can be less than the supplied buffer size).
-
-### `uv.is_readable(stream)`
-
-> (method form `stream:is_readable()`)
-
-Returns `true` if the stream is readable, `false` otherwise.
-
-### `uv.is_writable(stream)`
-
-> (method form `stream:is_writable()`)
-
-Returns `true` if the stream is writable, `false` otherwise.
-
-### `uv.stream_set_blocking(stream, blocking)`
-
-> (method form `stream:set_blocking(blocking)`)
-
-Enable or disable blocking mode for a stream.
-
-When blocking mode is enabled all writes complete synchronously. The interface
-remains unchanged otherwise, e.g. completion or failure of the operation will
-still be reported through a callback which is made asynchronously.
-
-**Warning**: Relying too much on this API is not recommended. It is likely to
-change significantly in the future. Currently this only works on Windows and
-only for uv_pipe_t handles. Also libuv currently makes no ordering guarantee
-when the blocking mode is changed after write requests have already been
-submitted. Therefore it is recommended to set the blocking mode immediately
-after opening or creating the stream.
-
-## `uv_tcp_t` — TCP handle
-
-[`uv_tcp_t`]: #uv_tcp_t--tcp-handle
-
-TCP handles are used to represent both TCP streams and servers.
-
-`uv_tcp_t` is a ‘subclass’ of [`uv_stream_t`][](#uv_stream_t--stream-handle).
-
-### `uv.new_tcp() -> tcp`
-
-Creates and initializes a new `uv_tcp_t`. Returns the lua userdata wrapping it.
-
-### `uv.tcp_open(tcp, sock)`
-
-> (method form `tcp:open(sock)`)
-
-Open an existing file descriptor or SOCKET as a TCP handle.
-
-**Note: The user is responsible for setting the file descriptor in non-blocking
-mode.
-
-### `uv.tcp_nodelay(tcp, enable)`
-
-> (method form `tcp:nodelay(enable)`)
-
-Enable / disable Nagle’s algorithm.
-
-### `uv.tcp_keepalive(tcp, enable, [delay])`
-
-> (method form `tcp:keepalive(enable, [delay])`)
-
-Enable / disable TCP keep-alive. `delay` is the initial delay in seconds, ignored
-when enable is `false`.
-
-### `uv.tcp_simultaneous_accepts(tcp, enable)`
-
-> (method form `tcp:simultaneous_accepts(enable)`)
-
-Enable / disable simultaneous asynchronous accept requests that are queued by
-the operating system when listening for new TCP connections.
-
-This setting is used to tune a TCP server for the desired performance. Having
-simultaneous accepts can significantly improve the rate of accepting connections
-(which is why it is enabled by default) but may lead to uneven load distribution
-in multi-process setups.
-
-### `uv.tcp_bind(tcp, address, port)`
-
-> (method form `tcp:bind(address, port)`)
-
-Bind the handle to an address and port. `address` should be an IP address and
-not a domain name.
-
-When the port is already taken, you can expect to see an UV_EADDRINUSE error
-from either `uv.tcp_bind()`, `uv.listen()` or `uv.tcp_connect()`. That is, a
-successful call to this function does not guarantee that the call to `uv.listen()`
-or `uv.tcp_connect()` will succeed as well.
-
-Use a port of `0` to let the OS assign an ephemeral port. You can look it up
-later using `uv.tcp_getsockname()`.
-
-### `uv.tcp_getsockname(tcp)`
-
-> (method form `tcp:getsockname()`)
-
-Get the current address to which the handle is bound.
-
-### `uv.tcp_getpeername(tcp)`
-
-> (method form `tcp:getpeername()`)
-
-Get the address of the peer connected to the handle.
-
-### `uv.tcp_connect(tcp, address, port, callback) -> req`
-
-> (method form `tcp:connect(host, port, callback) -> req`)
-
-### `uv.tcp_write_queue_size(tcp) -> size`
-
-> (method form `tcp:write_queue_size() -> size`)
-
-Establish an IPv4 or IPv6 TCP connection.
-
-The callback is made when the connection has been established or when a
-connection error happened.
-
-```lua
-local client = uv.new_tcp()
-client:connect("127.0.0.1", 8080, function (err)
- -- check error and carry on.
-end)
-```
-
-## `uv_pipe_t` — Pipe handle
-
-[`uv_pipe_t`]: #uv_pipe_t--pipe-handle
-
-Pipe handles provide an abstraction over local domain sockets on Unix and named
-pipes on Windows.
-
-```lua
-local pipe = uv.new_pipe(false)
-
-pipe:bind('/tmp/sock.test')
-
-pipe:listen(128, function()
- local client = uv.new_pipe(false)
- pipe:accept(client)
- client:write("hello!\n")
- client:close()
-end)
-```
-
-### `uv.new_pipe(ipc) -> pipe`
-
-Creates and initializes a new `uv_pipe_t`. Returns the lua userdata wrapping
-it. The `ipc` argument is a boolean to indicate if this pipe will be used for
-handle passing between processes.
-
-### `uv.pipe_open(file) -> pipe`
-
-Open an existing file descriptor or [`uv_handle_t`][] as a pipe.
-
-**Note**: The file descriptor is set to non-blocking mode.
-
-### `uv.pipe_bind(pipe, name)`
-
-> (method form `pipe:bind(name)`)
-
-Bind the pipe to a file path (Unix) or a name (Windows).
-
-**Note**: Paths on Unix get truncated to sizeof(sockaddr_un.sun_path) bytes,
-typically between 92 and 108 bytes.
-
-### `uv.pipe_connect(pipe, name, callback)`
-
-> (method form `pipe:connect(name, callback)`)
-
-Connect to the Unix domain socket or the named pipe.
-
-**Note**: Paths on Unix get truncated to sizeof(sockaddr_un.sun_path) bytes,
-typically between 92 and 108 bytes.
-
-### `uv.pipe_getsockname(pipe)`
-
-> (method form `pipe:getsockname()`)
-
-Returns the name of the Unix domain socket or the named pipe.
-
-### `uv.pipe_pending_instances(pipe, count)`
-
-> (method form `pipe:pending_instances(count)`)
-
-Set the number of pending pipe instance handles when the pipe server is waiting for connections.
-
-**Note**: This setting applies to Windows only.
-
-### `uv.pipe_pending_count(pipe)`
-
-> (method form `pipe:pending_count()`)
-
-Returns the pending pipe count for the named pipe.
-
-### `uv.pipe_pending_type(pipe)`
-
-> (method form `pipe:pending_type()`)
-
-Used to receive handles over IPC pipes.
-
-First - call [`uv.pipe_pending_count`][], if it’s > 0 then initialize a handle
-of the given type, returned by [`uv.pipe_pending_type`][] and call
-[`uv.accept(pipe, handle)`][].
-
-## `uv_tty_t` — TTY handle
-
-[`uv_tty_t`]: #uv_tty_t--tty-handle
-
-TTY handles represent a stream for the console.
-
-```lua
--- Simple echo program
-local stdin = uv.new_tty(0, true)
-local stdout = uv.new_tty(1, false)
-
-stdin:read_start(function (err, data)
- assert(not err, err)
- if data then
- stdout:write(data)
- else
- stdin:close()
- stdout:close()
- end
-end)
-```
-
-### uv.new_tty(fd, readable) -> tty
-
-Initialize a new TTY stream with the given file descriptor. Usually the file
-descriptor will be:
-
- - 0 - stdin
- - 1 - stdout
- - 2 - stderr
-
-`readable, specifies if you plan on calling uv_read_start() with this stream.
-`stdin is readable, stdout is not.
-
-On Unix this function will try to open /dev/tty and use it if the passed file
-descriptor refers to a TTY. This lets libuv put the tty in non-blocking mode
-without affecting other processes that share the tty.
-
-Note: If opening `/dev/tty` fails, libuv falls back to blocking writes for
-non-readable TTY streams.
-
-### uv.tty_set_mode(mode)
-
-> (method form `tty:set_mode(mode)`)
-
-Set the TTY using the specified terminal mode.
-
-Parameter `mode` is a C enum with the following values:
-
-- 0 - UV_TTY_MODE_NORMAL: Initial/normal terminal mode
-
-- 1 - UV_TTY_MODE_RAW: Raw input mode (On Windows, ENABLE_WINDOW_INPUT is
- also enabled)
-
-- 2 - UV_TTY_MODE_IO: Binary-safe I/O mode for IPC (Unix-only)
-
-## uv.tty_reset_mode()
-
-To be called when the program exits. Resets TTY settings to default values for
-the next process to take over.
-
-This function is async signal-safe on Unix platforms but can fail with error
-code UV_EBUSY if you call it when execution is inside uv_tty_set_mode().
-
-## uv.tty_get_winsize() -> w, h
-
-> (method form `tty:get_winsize() -> w, h`)
-
-Gets the current Window size.
-
-## `uv_udp_t` — UDP handle
-
-[`uv_udp_t`]: #uv_udp_t--udp-handle
-
-UDP handles encapsulate UDP communication for both clients and servers.
-
-### uv.new_udp() -> udp
-
-Initialize a new UDP handle. The actual socket is created lazily.
-
-### uv.udp_open(udp, fd)
-
-> (method form `udp:open(fd)`)
-
-Opens an existing file descriptor or Windows SOCKET as a UDP handle.
-
-Unix only: The only requirement of the sock argument is that it follows the
-datagram contract (works in unconnected mode, supports sendmsg()/recvmsg(),
-etc). In other words, other datagram-type sockets like raw sockets or netlink
-sockets can also be passed to this function.
-
-The file descriptor is set to non-blocking mode.
-
-Note: The passed file descriptor or SOCKET is not checked for its type, but
-it’s required that it represents a valid datagram socket.
-
-### uv.udp_bind(udp, host, port)
-
-> (method form `udp:bind(host, port)`)
-
-Bind the UDP handle to an IP address and port.
-
-### uv.udp_getsockname(udp)
-
-> (method form `udp:getsockname()`)
-
-Get the local IP and port of the UDP handle.
-
-### uv.udp_set_membership(udp, multicast_addr, interface_addr, membership)
-
-> (method form `udp:set_membership(multicast_addr, interface_addr, membership)`)
-
-Set membership for a multicast address.
-
-`multicast_addr` is multicast address to set membership for.
-
-`interface_addr` is interface address.
-
-`membership` can be the string `"leave"` or `"join"`.
-
-### uv.udp_set_multicast_loop(udp, on)
-
-> (method form `udp:set_multicast_loop(on)`)
-
-Set IP multicast loop flag. Makes multicast packets loop back to local
-sockets.
-
-`on` is a boolean.
-
-### uv.udp_set_multicast_ttl(udp, tty)
-
-> (method form `udp:set_multicast_ttl(tty)`)
-
-Set the multicast ttl.
-
-`ttl` is an integer 1 through 255.
-
-### uv.udp_set_multicast_interface(udp, interface_addr)
-
-> (method form `udp:set_multicast_interface(interface_addr)`)
-
-Set the multicast interface to send or receive data on.
-
-### uv.udp_set_broadcast(udp, on)
-
-Set broadcast on or off.
-
-> (method form `udp:set_broadcast(, on)`)
-
-### uv.udp_set_ttl(udp, ttl)
-
-> (method form `udp:set_ttl(ttl)`)
-
-Set the time to live.
-
-`ttl` is an integer 1 through 255.
-
-### uv.udp_send(udp, data, host, port, callback)
-
-> (method form `udp:send(data, host, port, callback)`)
-
-Send data over the UDP socket. If the socket has not previously been bound
-with `uv_udp_bind()` it will be bound to `0.0.0.0` (the “all interfaces” IPv4
-address) and a random port number.
-
-### uv.udp_try_send(udp, data, host, port)
-
-> (method form `udp:try_send(data, host, port)`)
-
-Same as `uv_udp_send()`, but won’t queue a send request if it can’t be
-completed immediately.
-
-### uv.udp_recv_start(udp, callback)
-
-> (method form `udp:recv_start(callback)`)
-
-Prepare for receiving data. If the socket has not previously been bound with
-`uv_udp_bind()` it is bound to `0.0.0.0` (the “all interfaces” IPv4 address)
-and a random port number.
-
-### uv.udp_recv_stop(udp)
-
-> (method form `udp:recv_stop()`)
-
-## `uv_fs_event_t` — FS Event handle
-
-[`uv_fs_event_t`]: #uv_fs_event_t--fs-event-handle
-
-**TODO**: port docs from [docs.libuv.org](http://docs.libuv.org/en/v1.x/fs_event.html)
-using [functions](https://github.com/luvit/luv/blob/25278a3871962cab29763692fdc3b270a7e96fe9/src/luv.c#L174-L177)
-and [methods](https://github.com/luvit/luv/blob/25278a3871962cab29763692fdc3b270a7e96fe9/src/luv.c#L265-L270)
-from [fs_event.c](https://github.com/luvit/luv/blob/master/src/fs_event.c)
-
-## `uv_fs_poll_t` — FS Poll handle
-
-[`uv_fs_poll_t`]: #uv_fs_poll_t--fs-poll-handle
-
-**TODO**: port docs from [docs.libuv.org](http://docs.libuv.org/en/v1.x/fs_poll.html)
-using [functions](https://github.com/luvit/luv/blob/25278a3871962cab29763692fdc3b270a7e96fe9/src/luv.c#L180-L183)
-and [methods](https://github.com/luvit/luv/blob/25278a3871962cab29763692fdc3b270a7e96fe9/src/luv.c#L272-L277)
-from [fs_poll.c](https://github.com/luvit/luv/blob/master/src/fs_poll.c)
-
-## Filesystem operations
-
-[Filesystem operations]:#filesystem-operations
-
-**TODO**: port docs from [docs.libuv.org](http://docs.libuv.org/en/v1.x/fs.html)
-using [functions](https://github.com/luvit/luv/blob/25278a3871962cab29763692fdc3b270a7e96fe9/src/luv.c#L186-L213)
-from [fs.c](https://github.com/luvit/luv/blob/master/src/fs.c)
-
-## DNS utility functions
-
-[DNS utility functions]: #dns-utility-functions
-
-**TODO**: port docs from [docs.libuv.org](http://docs.libuv.org/en/v1.x/dns.html)
-using [functions](https://github.com/luvit/luv/blob/25278a3871962cab29763692fdc3b270a7e96fe9/src/luv.c#L216-L217)
-from [dns.c](https://github.com/luvit/luv/blob/master/src/dns.c)
-
-## Miscellaneous utilities
-
-[Miscellaneous utilities]: #miscellaneous-utilities
-
-**TODO**: port docs from [docs.libuv.org](http://docs.libuv.org/en/v1.x/misc.html)
-using [functions](https://github.com/luvit/luv/blob/25278a3871962cab29763692fdc3b270a7e96fe9/src/luv.c#L220-L235)
-from [misc.c](https://github.com/luvit/luv/blob/master/src/misc.c)
-
-[luv]: https://github.com/luvit/luv
-[luvit]: https://github.com/luvit/luvit
-[libuv]: https://github.com/libuv/libuv
diff --git a/3rdparty/luv/examples/cqueues-main.lua b/3rdparty/luv/examples/cqueues-main.lua
deleted file mode 100644
index ff60ec2b1c9..00000000000
--- a/3rdparty/luv/examples/cqueues-main.lua
+++ /dev/null
@@ -1,31 +0,0 @@
---[[
-Demonstrates using luv with a cqueues mainloop
-]]
-
-local cqueues = require "cqueues"
-local uv = require "luv"
-
-local cq = cqueues.new()
-
-cq:wrap(function()
- while cqueues.poll({
- pollfd = uv.backend_fd();
- timeout = uv.backend_timeout() / 1000;
- events = "r";
- }) do
- uv.run("nowait")
- end
-end)
-
-cq:wrap(function()
- while true do
- cqueues.sleep(1)
- print("HELLO FROM CQUEUES")
- end
-end)
-
-uv.new_timer():start(1000, 1000, function()
- print("HELLO FROM LUV")
-end)
-
-assert(cq:loop())
diff --git a/3rdparty/luv/examples/cqueues-slave.lua b/3rdparty/luv/examples/cqueues-slave.lua
deleted file mode 100644
index 599e7c6ded7..00000000000
--- a/3rdparty/luv/examples/cqueues-slave.lua
+++ /dev/null
@@ -1,55 +0,0 @@
---[[
-Demonstrates using cqueues with a luv mainloop
-
-Starts a simple sleep+print loop using each library's native form.
-They should print intertwined.
-]]
-
-local cqueues = require "cqueues"
-local uv = require "luv"
-
-local cq = cqueues.new()
-
-do
- local timer = uv.new_timer()
- local function reset_timer()
- local timeout = cq:timeout()
- if timeout then
- -- libuv takes milliseconds as an integer,
- -- while cqueues gives timeouts as a floating point number
- -- use `math.ceil` as we'd rather wake up late than early
- timer:set_repeat(math.ceil(timeout * 1000))
- timer:again()
- else
- -- stop timer for now; it may be restarted later.
- timer:stop()
- end
- end
- local function onready()
- -- Step the cqueues loop once (sleeping for max 0 seconds)
- assert(cq:step(0))
- reset_timer()
- end
- -- Need to call `start` on libuv timer now
- -- to provide callback and so that `again` works
- timer:start(0, 0, onready)
- -- Ask libuv to watch the cqueue pollfd
- uv.new_poll(cq:pollfd()):start(cq:events(), onready)
-end
-
--- Adds a new function to the scheduler `cq`
--- The functions is an infinite loop that sleeps for 1 second and prints
-cq:wrap(function()
- while true do
- cqueues.sleep(1)
- print("HELLO FROM CQUEUES")
- end
-end)
-
--- Start a luv timer that fires every 1 second
-uv.new_timer():start(1000, 1000, function()
- print("HELLO FROM LUV")
-end)
-
--- Run luv mainloop
-uv.run()
diff --git a/3rdparty/luv/examples/echo-server-client.lua b/3rdparty/luv/examples/echo-server-client.lua
deleted file mode 100644
index ea4e6d2132d..00000000000
--- a/3rdparty/luv/examples/echo-server-client.lua
+++ /dev/null
@@ -1,68 +0,0 @@
-local p = require('lib/utils').prettyPrint
-local uv = require('luv')
-
-local function create_server(host, port, on_connection)
-
- local server = uv.new_tcp()
- p(1, server)
- uv.tcp_bind(server, host, port)
-
- uv.listen(server, 128, function(err)
- assert(not err, err)
- local client = uv.new_tcp()
- uv.accept(server, client)
- on_connection(client)
- end)
-
- return server
-end
-
-local server = create_server("0.0.0.0", 0, function (client)
- p("new client", client, uv.tcp_getsockname(client), uv.tcp_getpeername(client))
- uv.read_start(client, function (err, chunk)
- p("onread", {err=err,chunk=chunk})
-
- -- Crash on errors
- assert(not err, err)
-
- if chunk then
- -- Echo anything heard
- uv.write(client, chunk)
- else
- -- When the stream ends, close the socket
- uv.close(client)
- end
- end)
-end)
-
-local address = uv.tcp_getsockname(server)
-p("server", server, address)
-
-local client = uv.new_tcp()
-uv.tcp_connect(client, "127.0.0.1", address.port, function (err)
- assert(not err, err)
-
- uv.read_start(client, function (err, chunk)
- p("received at client", {err=err,chunk=chunk})
- assert(not err, err)
- if chunk then
- uv.shutdown(client)
- p("client done shutting down")
- else
- uv.close(client)
- uv.close(server)
- end
- end)
-
- p("writing from client")
- uv.write(client, "Hello")
- uv.write(client, "World")
-
-end)
-
--- Start the main event loop
-uv.run()
--- Close any stray handles when done
-uv.walk(uv.close)
-uv.run()
-uv.loop_close()
diff --git a/3rdparty/luv/examples/killing-children.lua b/3rdparty/luv/examples/killing-children.lua
deleted file mode 100644
index 6aab693d0c1..00000000000
--- a/3rdparty/luv/examples/killing-children.lua
+++ /dev/null
@@ -1,24 +0,0 @@
-local p = require('lib/utils').prettyPrint
-local uv = require('luv')
-
-
-
-local child, pid
-child, pid = uv.spawn("sleep", {
- args = {"100"}
-}, function (code, signal)
- p("EXIT", {code=code,signal=signal})
- uv.close(child)
-end)
-
-p{child=child, pid=pid}
-
--- uv.kill(pid, "SIGTERM")
-uv.process_kill(child, "SIGTERM")
-
-repeat
- print("\ntick.")
-until uv.run('once') == 0
-
-print("done")
-
diff --git a/3rdparty/luv/examples/lots-o-dns.lua b/3rdparty/luv/examples/lots-o-dns.lua
deleted file mode 100644
index 59a1b0fe534..00000000000
--- a/3rdparty/luv/examples/lots-o-dns.lua
+++ /dev/null
@@ -1,49 +0,0 @@
-local p = require('lib/utils').prettyPrint
-local uv = require('luv')
-
-uv.getaddrinfo(nil, 80, nil, p)
-
-local domains = {
- "facebook.com",
- "google.com",
- "mail.google.com",
- "maps.google.com",
- "plus.google.com",
- "play.google.com",
- "apple.com",
- "hp.com",
- "yahoo.com",
- "mozilla.com",
- "developer.mozilla.com",
- "luvit.io",
- "creationix.com",
- "howtonode.org",
- "github.com",
- "gist.github.com"
-}
-
-local i = 1
-local function next()
- uv.getaddrinfo(domains[i], nil, {
- v4mapped = true,
- all = true,
- addrconfig = true,
- canonname = true,
- numericserv = true,
- socktype = "STREAM"
- }, function (err, data)
- assert(not err, err)
- p(data)
- i = i + 1
- if i <= #domains then
- next()
- end
- end)
-end
-next();
-
-repeat
- print("\nTick..")
-until uv.run('once') == 0
-
-print("done")
diff --git a/3rdparty/luv/examples/repl.lua b/3rdparty/luv/examples/repl.lua
deleted file mode 100644
index 92be0f17d87..00000000000
--- a/3rdparty/luv/examples/repl.lua
+++ /dev/null
@@ -1,89 +0,0 @@
-local uv = require('luv')
-local utils = require('lib/utils')
-
-if uv.guess_handle(0) ~= "tty" or
- uv.guess_handle(1) ~= "tty" then
- error "stdio must be a tty"
-end
-local stdin = uv.new_tty(0, true)
-local stdout = require('lib/utils').stdout
-
-local debug = require('debug')
-local c = utils.color
-
-local function gatherResults(success, ...)
- local n = select('#', ...)
- return success, { n = n, ... }
-end
-
-local function printResults(results)
- for i = 1, results.n do
- results[i] = utils.dump(results[i])
- end
- print(table.concat(results, '\t'))
-end
-
-local buffer = ''
-
-local function evaluateLine(line)
- if line == "<3\n" then
- print("I " .. c("Bred") .. "♥" .. c() .. " you too!")
- return '>'
- end
- local chunk = buffer .. line
- local f, err = loadstring('return ' .. chunk, 'REPL') -- first we prefix return
-
- if not f then
- f, err = loadstring(chunk, 'REPL') -- try again without return
- end
-
- if f then
- buffer = ''
- local success, results = gatherResults(xpcall(f, debug.traceback))
-
- if success then
- -- successful call
- if results.n > 0 then
- printResults(results)
- end
- else
- -- error
- print(results[1])
- end
- else
-
- if err:match "'<eof>'$" then
- -- Lua expects some more input; stow it away for next time
- buffer = chunk .. '\n'
- return '>>'
- else
- print(err)
- buffer = ''
- end
- end
-
- return '>'
-end
-
-local function displayPrompt(prompt)
- uv.write(stdout, prompt .. ' ')
-end
-
-local function onread(err, line)
- if err then error(err) end
- if line then
- local prompt = evaluateLine(line)
- displayPrompt(prompt)
- else
- uv.close(stdin)
- end
-end
-
-coroutine.wrap(function()
- displayPrompt '>'
- uv.read_start(stdin, onread)
-end)()
-
-uv.run()
-
-print("")
diff --git a/3rdparty/luv/examples/talking-to-children.lua b/3rdparty/luv/examples/talking-to-children.lua
deleted file mode 100644
index 10a53ef8c88..00000000000
--- a/3rdparty/luv/examples/talking-to-children.lua
+++ /dev/null
@@ -1,47 +0,0 @@
-local p = require('lib/utils').prettyPrint
-local uv = require('luv')
-
-local stdout = uv.new_pipe(false)
-local stderr = uv.new_pipe( false)
-local stdin = uv.new_pipe(false)
-
-local handle, pid
-
-local function onexit(code, signal)
- p("exit", {code=code,signal=signal})
-end
-
-local function onclose()
- p("close")
-end
-
-local function onread(err, chunk)
- assert(not err, err)
- if (chunk) then
- p("data", {data=chunk})
- else
- p("end")
- end
-end
-
-local function onshutdown()
- uv.close(handle, onclose)
-end
-
-handle, pid = uv.spawn("cat", {
- stdio = {stdin, stdout, stderr}
-}, onexit)
-
-p{
- handle=handle,
- pid=pid
-}
-
-uv.read_start(stdout, onread)
-uv.read_start(stderr, onread)
-uv.write(stdin, "Hello World")
-uv.shutdown(stdin, onshutdown)
-
-uv.run()
-uv.walk(uv.close)
-uv.run()
diff --git a/3rdparty/luv/examples/tcp-cluster.lua b/3rdparty/luv/examples/tcp-cluster.lua
deleted file mode 100644
index e69ceffc62d..00000000000
--- a/3rdparty/luv/examples/tcp-cluster.lua
+++ /dev/null
@@ -1,84 +0,0 @@
-
--- This function will be run in a child process
-local child_code = string.dump(function ()
- local p = require('lib/utils').prettyPrint
- local uv = require('luv')
-
- -- The parent is going to pass us the server handle over a pipe
- -- This will be our local file descriptor at PIPE_FD
- local pipe = uv.new_pipe(true)
- local pipe_fd = tonumber(os.getenv("PIPE_FD"))
- assert(uv.pipe_open(pipe, pipe_fd))
-
- -- Configure the server handle
- local server = uv.new_tcp()
- local function onconnection()
- local client = uv.new_tcp()
- uv.accept(server, client)
- p("New TCP", client, "on", server)
- p{client=client}
- uv.write(client, "BYE!\n");
- uv.shutdown(client, function ()
- uv.close(client)
- uv.close(server)
- end)
- end
-
- -- Read the server handle from the parent
- local function onread(err, data)
- p("onread", {err=err,data=data})
- assert(not err, err)
- if uv.pipe_pending_count(pipe) > 0 then
- local pending_type = uv.pipe_pending_type(pipe)
- p("pending_type", pending_type)
- assert(pending_type == "tcp")
- assert(uv.accept(pipe, server))
- assert(uv.listen(server, 128, onconnection))
- p("Received server handle from parent process", server)
- elseif data then
- p("ondata", data)
- else
- p("onend", data)
- end
- end
- uv.read_start(pipe, onread)
-
- -- Start the event loop!
- uv.run()
-end)
-
-local p = require('lib/utils').prettyPrint
-local uv = require('luv')
-
-local exepath = assert(uv.exepath())
-local cpu_count = # assert(uv.cpu_info())
-
-local server = uv.new_tcp()
-assert(uv.tcp_bind(server, "::1", 1337))
-print("Master process bound to TCP port 1337 on ::1")
-
-
-local function onexit(status, signal)
- p("Child exited", {status=status,signal=signal})
-end
-
-local function spawnChild()
- local pipe = uv.new_pipe(true)
- local input = uv.new_pipe(false)
- local _, pid = assert(uv.spawn(exepath, {
- stdio = {input,1,2,pipe},
- env= {"PIPE_FD=3"}
- }, onexit))
- uv.write(input, child_code)
- uv.shutdown(input)
- p("Spawned child", pid, "and sending handle", server)
- assert(uv.write2(pipe, "123", server))
- assert(uv.shutdown(pipe))
-end
-
--- Spawn a child process for each CPU core
-for _ = 1, cpu_count do
- spawnChild()
-end
-
-uv.run()
diff --git a/3rdparty/luv/examples/timers.lua b/3rdparty/luv/examples/timers.lua
deleted file mode 100644
index 049235e6fb1..00000000000
--- a/3rdparty/luv/examples/timers.lua
+++ /dev/null
@@ -1,68 +0,0 @@
-local p = require('lib/utils').prettyPrint
-local uv = require('luv')
-
-local function set_timeout(timeout, callback)
- local timer = uv.new_timer()
- local function ontimeout()
- p("ontimeout", timer)
- uv.timer_stop(timer)
- uv.close(timer)
- callback(timer)
- end
- uv.timer_start(timer, timeout, 0, ontimeout)
- return timer
-end
-
-local function clear_timeout(timer)
- uv.timer_stop(timer)
- uv.close(timer)
-end
-
-local function set_interval(interval, callback)
- local timer = uv.new_timer()
- local function ontimeout()
- p("interval", timer)
- callback(timer)
- end
- uv.timer_start(timer, interval, interval, ontimeout)
- return timer
-end
-
-local clear_interval = clear_timeout
-
-local i = set_interval(300, function()
- print("interval...")
-end)
-
-set_timeout(1000, function()
- clear_interval(i)
-end)
-
-
-local handle = uv.new_timer()
-local delay = 1024
-local function ontimeout()
- p("tick", delay)
- delay = delay / 2
- if delay >= 1 then
- uv.timer_set_repeat(handle, delay)
- uv.timer_again(handle)
- else
- uv.timer_stop(handle)
- uv.close(handle)
- p("done")
- end
-end
-uv.timer_start(handle, delay, 0, ontimeout)
-
-
-repeat
- print("\ntick.")
-until uv.run('once') == 0
-
-print("done")
-
-uv.walk(uv.close)
-uv.run()
-uv.loop_close()
-
diff --git a/3rdparty/luv/examples/uvbook/helloworld.lua b/3rdparty/luv/examples/uvbook/helloworld.lua
deleted file mode 100644
index 2c77d0c51bc..00000000000
--- a/3rdparty/luv/examples/uvbook/helloworld.lua
+++ /dev/null
@@ -1,5 +0,0 @@
-local uv = require('luv')
-
-print('Now quitting.')
-uv.run('default')
-uv.loop_close()
diff --git a/3rdparty/luv/examples/uvbook/idle-basic.lua b/3rdparty/luv/examples/uvbook/idle-basic.lua
deleted file mode 100644
index dc2a47b3c30..00000000000
--- a/3rdparty/luv/examples/uvbook/idle-basic.lua
+++ /dev/null
@@ -1,14 +0,0 @@
-local uv = require('luv')
-
-local counter = 0
-local idle = uv.new_idle()
-idle:start(function()
- counter = counter + 1
- if counter >= 10e6 then
- idle:stop()
- end
-end)
-
-print("Idling...")
-uv.run('default')
-uv.loop_close() \ No newline at end of file
diff --git a/3rdparty/luv/examples/uvbook/onchange.lua b/3rdparty/luv/examples/uvbook/onchange.lua
deleted file mode 100644
index 07b3f9b1d78..00000000000
--- a/3rdparty/luv/examples/uvbook/onchange.lua
+++ /dev/null
@@ -1,30 +0,0 @@
-local uv = require('luv')
-
-if #arg==0 then
- print(string.format("Usage: %s <command> <file1> [file2 ...]",arg[0]));
- return
-end
-
-for i=1,#arg do
- local fse = uv.new_fs_event()
- assert(uv.fs_event_start(fse,arg[i],{
- --"watch_entry"=true,"stat"=true,
- recursive=true
- },function (err,fname,status)
- if(err) then
- print("Error "..err)
- else
- print(string.format('Change detected in %s',
- uv.fs_event_getpath(fse)))
- for k,v in pairs(status) do
- print(k,v)
- end
- print('file changed:'..(fname and fname or ''))
- end
- end))
-
-end
-
-uv.run('default')
-uv.loop_close()
-
diff --git a/3rdparty/luv/examples/uvbook/queue-work.lua b/3rdparty/luv/examples/uvbook/queue-work.lua
deleted file mode 100644
index cf52abfb216..00000000000
--- a/3rdparty/luv/examples/uvbook/queue-work.lua
+++ /dev/null
@@ -1,19 +0,0 @@
-local uv = require('luv')
-
-local ctx = uv.new_work(
- function(n) --work,in threadpool
- local uv = require('luv')
- local t = uv.thread_self()
- uv.sleep(100)
- return n*n,n
- end,
- function(r,n) print(string.format('%d => %d',n,r)) end --after work, in loop thread
-)
-uv.queue_work(ctx,2)
-uv.queue_work(ctx,4)
-uv.queue_work(ctx,6)
-uv.queue_work(ctx,8)
-uv.queue_work(ctx,10)
-
-uv.run('default')
-uv.loop_close()
diff --git a/3rdparty/luv/examples/uvbook/tcp-echo-client.lua b/3rdparty/luv/examples/uvbook/tcp-echo-client.lua
deleted file mode 100644
index 40dd22a311f..00000000000
--- a/3rdparty/luv/examples/uvbook/tcp-echo-client.lua
+++ /dev/null
@@ -1,21 +0,0 @@
-local uv = require('luv')
-
-
-local client = uv.new_tcp()
-uv.tcp_connect(client, "127.0.0.1", 1337, function (err)
- assert(not err, err)
- uv.read_start(client, function (err, chunk)
- assert(not err, err)
- if chunk then
- print(chunk)
- else
- uv.close(client)
- end
- end)
-
- uv.write(client, "Hello")
- uv.write(client, "World")
-end)
-print('CTRL-C to break')
-uv.run('default')
-uv.loop_close()
diff --git a/3rdparty/luv/examples/uvbook/tcp-echo-server.lua b/3rdparty/luv/examples/uvbook/tcp-echo-server.lua
deleted file mode 100644
index 269c49114cf..00000000000
--- a/3rdparty/luv/examples/uvbook/tcp-echo-server.lua
+++ /dev/null
@@ -1,22 +0,0 @@
-local uv = require('luv')
-
-
-local server = uv.new_tcp()
-server:bind("127.0.0.1", 1337)
-server:listen(128, function (err)
- assert(not err, err)
- local client = uv.new_tcp()
- server:accept(client)
- client:read_start(function (err, chunk)
- assert(not err, err)
- if chunk then
- client:write(chunk)
- else
- client:shutdown()
- client:close()
- end
- end)
-end)
-
-uv.run('default')
-uv.loop_close()
diff --git a/3rdparty/luv/examples/uvbook/thread-create.lua b/3rdparty/luv/examples/uvbook/thread-create.lua
deleted file mode 100644
index 4b42587adbf..00000000000
--- a/3rdparty/luv/examples/uvbook/thread-create.lua
+++ /dev/null
@@ -1,38 +0,0 @@
-local uv = require('luv')
-
-local step = 10
-
-local hare_id = uv.new_thread(function(step,...)
- local ffi = require'ffi'
- local uv = require('luv')
- local sleep
- if ffi.os=='Windows' then
- ffi.cdef "void Sleep(int ms);"
- sleep = ffi.C.Sleep
- else
- ffi.cdef "unsigned int usleep(unsigned int seconds);"
- sleep = ffi.C.usleep
- end
- while (step>0) do
- step = step - 1
- uv.sleep(math.random(1000))
- print("Hare ran another step")
- end
- print("Hare done running!")
-end, step,true,'abcd','false')
-
-local tortoise_id = uv.new_thread(function(step,...)
- local uv = require('luv')
- while (step>0) do
- step = step - 1
- uv.sleep(math.random(100))
- print("Tortoise ran another step")
- end
- print("Tortoise done running!")
-end,step,'abcd','false')
-
-print(hare_id==hare_id,uv.thread_equal(hare_id,hare_id))
-print(tortoise_id==hare_id,uv.thread_equal(tortoise_id,hare_id))
-
-uv.thread_join(hare_id)
-uv.thread_join(tortoise_id)
diff --git a/3rdparty/luv/examples/uvbook/uvcat.lua b/3rdparty/luv/examples/uvbook/uvcat.lua
deleted file mode 100644
index 99fdd68000b..00000000000
--- a/3rdparty/luv/examples/uvbook/uvcat.lua
+++ /dev/null
@@ -1,37 +0,0 @@
-local uv = require('luv')
-
-
-local fname = arg[1] and arg[1] or arg[0]
-
-uv.fs_open(fname, 'r', tonumber('644', 8), function(err,fd)
- if err then
- print("error opening file:"..err)
- else
- local stat = uv.fs_fstat(fd)
- local off = 0
- local block = 10
-
- local function on_read(err,chunk)
- if(err) then
- print("Read error: "..err);
- elseif #chunk==0 then
- uv.fs_close(fd)
- else
- off = block + off
- uv.fs_write(1,chunk,-1,function(err,chunk)
- if err then
- print("Write error: "..err)
- else
- uv.fs_read(fd, block, off, on_read)
- end
- end)
- end
- end
- uv.fs_read(fd, block, off, on_read)
- end
-end)
-
-
-
-uv.run('default')
-uv.loop_close()
diff --git a/3rdparty/luv/examples/uvbook/uvtee.lua b/3rdparty/luv/examples/uvbook/uvtee.lua
deleted file mode 100644
index c91b066ae21..00000000000
--- a/3rdparty/luv/examples/uvbook/uvtee.lua
+++ /dev/null
@@ -1,35 +0,0 @@
-local uv = require('luv')
-
-if not arg[1] then
- print(string.format("please run %s filename",arg[0]))
- return
-end
-
-
-local stdin = uv.new_tty(0, true)
-local stdout = uv.new_tty(1, true)
---local stdin_pipe = uv.new_pipe(false)
---uv.pipe_open(stdin_pipe,0)
-
-local fname = arg[1]
-
-uv.fs_open(fname, 'w+', tonumber('644', 8), function(err,fd)
- if err then
- print("error opening file:"..err)
- else
- local fpipe = uv.new_pipe(false)
- uv.pipe_open(fpipe, fd)
-
- uv.read_start(stdin, function(err,chunk)
- if err then
- print('Read error: '..err)
- else
- uv.write(stdout,chunk)
- uv.write(fpipe,chunk)
- end
- end);
- end
-end)
-
-uv.run('default')
-uv.loop_close()
diff --git a/3rdparty/luv/lib/tap.lua b/3rdparty/luv/lib/tap.lua
deleted file mode 100644
index d1cfb59c249..00000000000
--- a/3rdparty/luv/lib/tap.lua
+++ /dev/null
@@ -1,165 +0,0 @@
-local uv = require('luv')
-local dump = require('lib/utils').dump
-local stdout = require('lib/utils').stdout
-
-local function protect(...)
- local n = select('#', ...)
- local arguments = {...}
- for i = 1, n do
- arguments[i] = tostring(arguments[i])
- end
-
- local text = table.concat(arguments, "\t")
- text = " " .. string.gsub(text, "\n", "\n ")
- print(text)
-end
-
-local function pprotect(...)
- local n = select('#', ...)
- local arguments = { ... }
-
- for i = 1, n do
- arguments[i] = dump(arguments[i])
- end
-
- protect(table.concat(arguments, "\t"))
-end
-
-
-local tests = {};
-
-local function run()
- local passed = 0
-
- if #tests < 1 then
- error("No tests specified!")
- end
-
- print("1.." .. #tests)
- for i = 1, #tests do
- local test = tests[i]
- local cwd = uv.cwd()
- local pass, err = xpcall(function ()
- local expected = 0
- local function expect(fn, count)
- expected = expected + (count or 1)
- return function (...)
- expected = expected - 1
- local ret = fn(...)
- collectgarbage()
- return ret
- end
- end
- test.fn(protect, pprotect, expect, uv)
- collectgarbage()
- uv.run()
- collectgarbage()
- if expected > 0 then
- error("Missing " .. expected .. " expected call" .. (expected == 1 and "" or "s"))
- elseif expected < 0 then
- error("Found " .. -expected .. " unexpected call" .. (expected == -1 and "" or "s"))
- end
- collectgarbage()
- local unclosed = 0
- uv.walk(function (handle)
- if handle == stdout then return end
- unclosed = unclosed + 1
- print("UNCLOSED", handle)
- end)
- if unclosed > 0 then
- error(unclosed .. " unclosed handle" .. (unclosed == 1 and "" or "s"))
- end
- if uv.cwd() ~= cwd then
- error("Test moved cwd from " .. cwd .. " to " .. uv.cwd())
- end
- collectgarbage()
- end, debug.traceback)
-
- -- Flush out any more opened handles
- uv.stop()
- uv.walk(function (handle)
- if handle == stdout then return end
- if not uv.is_closing(handle) then uv.close(handle) end
- end)
- uv.run()
- uv.chdir(cwd)
-
- if pass then
- print("ok " .. i .. " " .. test.name)
- passed = passed + 1
- else
- protect(err)
- print("not ok " .. i .. " " .. test.name)
- end
- end
-
- local failed = #tests - passed
- if failed == 0 then
- print("# All tests passed")
- else
- print("#" .. failed .. " failed test" .. (failed == 1 and "" or "s"))
- end
-
- -- Close all then handles, including stdout
- uv.walk(uv.close)
- uv.run()
-
- os.exit(-failed)
-end
-
-local single = true
-local prefix
-
-local function tap(suite)
-
- if type(suite) == "function" then
- -- Pass in suite directly for single mode
- suite(function (name, fn)
- if prefix then
- name = prefix .. ' - ' .. name
- end
- tests[#tests + 1] = {
- name = name,
- fn = fn
- }
- end)
- prefix = nil
- elseif type(suite) == "string" then
- prefix = suite
- single = false
- else
- -- Or pass in false to collect several runs of tests
- -- And then pass in true in a later call to flush tests queue.
- single = suite
- end
-
- if single then run() end
-
-end
-
-
---[[
--- Sample Usage
-
-local passed, failed, total = tap(function (test)
-
- test("add 1 to 2", function(print)
- print("Adding 1 to 2")
- assert(1 + 2 == 3)
- end)
-
- test("close handle", function (print, p, expect, uv)
- local handle = uv.new_timer()
- uv.close(handle, expect(function (self)
- assert(self == handle)
- end))
- end)
-
- test("simulate failure", function ()
- error("Oopsie!")
- end)
-
-end)
-]]
-
-return tap
diff --git a/3rdparty/luv/lib/utils.lua b/3rdparty/luv/lib/utils.lua
deleted file mode 100644
index 777879ec28c..00000000000
--- a/3rdparty/luv/lib/utils.lua
+++ /dev/null
@@ -1,165 +0,0 @@
-
-local uv = require('luv')
-local utils = {}
-local usecolors
-
-if uv.guess_handle(1) == "tty" then
- utils.stdout = uv.new_tty(1, false)
- usecolors = true
-else
- utils.stdout = uv.new_pipe(false)
- uv.pipe_open(utils.stdout, 1)
- usecolors = false
-end
-
-local colors = {
- black = "0;30",
- red = "0;31",
- green = "0;32",
- yellow = "0;33",
- blue = "0;34",
- magenta = "0;35",
- cyan = "0;36",
- white = "0;37",
- B = "1;",
- Bblack = "1;30",
- Bred = "1;31",
- Bgreen = "1;32",
- Byellow = "1;33",
- Bblue = "1;34",
- Bmagenta = "1;35",
- Bcyan = "1;36",
- Bwhite = "1;37"
-}
-
-function utils.color(color_name)
- if usecolors then
- return "\27[" .. (colors[color_name] or "0") .. "m"
- else
- return ""
- end
-end
-
-function utils.colorize(color_name, string, reset_name)
- return utils.color(color_name) .. tostring(string) .. utils.color(reset_name)
-end
-
-local backslash, null, newline, carriage, tab, quote, quote2, obracket, cbracket
-
-function utils.loadColors(n)
- if n ~= nil then usecolors = n end
- backslash = utils.colorize("Bgreen", "\\\\", "green")
- null = utils.colorize("Bgreen", "\\0", "green")
- newline = utils.colorize("Bgreen", "\\n", "green")
- carriage = utils.colorize("Bgreen", "\\r", "green")
- tab = utils.colorize("Bgreen", "\\t", "green")
- quote = utils.colorize("Bgreen", '"', "green")
- quote2 = utils.colorize("Bgreen", '"')
- obracket = utils.colorize("B", '[')
- cbracket = utils.colorize("B", ']')
-end
-
-utils.loadColors()
-
-function utils.dump(o, depth)
- local t = type(o)
- if t == 'string' then
- return quote .. o:gsub("\\", backslash):gsub("%z", null):gsub("\n", newline):gsub("\r", carriage):gsub("\t", tab) .. quote2
- end
- if t == 'nil' then
- return utils.colorize("Bblack", "nil")
- end
- if t == 'boolean' then
- return utils.colorize("yellow", tostring(o))
- end
- if t == 'number' then
- return utils.colorize("blue", tostring(o))
- end
- if t == 'userdata' then
- return utils.colorize("magenta", tostring(o))
- end
- if t == 'thread' then
- return utils.colorize("Bred", tostring(o))
- end
- if t == 'function' then
- return utils.colorize("cyan", tostring(o))
- end
- if t == 'cdata' then
- return utils.colorize("Bmagenta", tostring(o))
- end
- if t == 'table' then
- if type(depth) == 'nil' then
- depth = 0
- end
- if depth > 1 then
- return utils.colorize("yellow", tostring(o))
- end
- local indent = (" "):rep(depth)
-
- -- Check to see if this is an array
- local is_array = true
- local i = 1
- for k,v in pairs(o) do
- if not (k == i) then
- is_array = false
- end
- i = i + 1
- end
-
- local first = true
- local lines = {}
- i = 1
- local estimated = 0
- for k,v in (is_array and ipairs or pairs)(o) do
- local s
- if is_array then
- s = ""
- else
- if type(k) == "string" and k:find("^[%a_][%a%d_]*$") then
- s = k .. ' = '
- else
- s = '[' .. utils.dump(k, 100) .. '] = '
- end
- end
- s = s .. utils.dump(v, depth + 1)
- lines[i] = s
- estimated = estimated + #s
- i = i + 1
- end
- if estimated > 200 then
- return "{\n " .. indent .. table.concat(lines, ",\n " .. indent) .. "\n" .. indent .. "}"
- else
- return "{ " .. table.concat(lines, ", ") .. " }"
- end
- end
- -- This doesn't happen right?
- return tostring(o)
-end
-
-
-
--- Print replacement that goes through libuv. This is useful on windows
--- to use libuv's code to translate ansi escape codes to windows API calls.
-function print(...)
- local n = select('#', ...)
- local arguments = {...}
- for i = 1, n do
- arguments[i] = tostring(arguments[i])
- end
- uv.write(utils.stdout, table.concat(arguments, "\t") .. "\n")
-end
-
--- A nice global data dumper
-function utils.prettyPrint(...)
- local n = select('#', ...)
- local arguments = { ... }
-
- for i = 1, n do
- arguments[i] = utils.dump(arguments[i])
- end
-
- print(table.concat(arguments, "\t"))
-end
-
-return utils
-
diff --git a/3rdparty/luv/luv-1.8.0-4.rockspec b/3rdparty/luv/luv-1.8.0-4.rockspec
deleted file mode 100644
index 23855203e0d..00000000000
--- a/3rdparty/luv/luv-1.8.0-4.rockspec
+++ /dev/null
@@ -1,34 +0,0 @@
-package = "luv"
-version = "1.8.0-4"
-source = {
- url = 'https://github.com/luvit/luv/releases/download/1.8.0-4/luv-1.8.0-4.tar.gz',
-}
-
-description = {
- summary = "Bare libuv bindings for lua",
- detailed = [[
-libuv bindings for luajit and lua 5.1/5.2/5.3.
-
-This library makes libuv available to lua scripts. It was made for the luvit
-project but should usable from nearly any lua project.
- ]],
- homepage = "https://github.com/luvit/luv",
- license = "Apache 2.0"
-}
-
-dependencies = {
- "lua >= 5.1"
-}
-
-build = {
- type = 'cmake',
- variables = {
- CMAKE_C_FLAGS="$(CFLAGS)",
- CMAKE_MODULE_LINKER_FLAGS="$(LIBFLAG)",
- LUA_LIBDIR="$(LUA_LIBDIR)",
- LUA_INCDIR="$(LUA_INCDIR)",
- LUA="$(LUA)",
- LIBDIR="$(LIBDIR)",
- LUADIR="$(LUADIR)",
- },
-}
diff --git a/3rdparty/luv/msvcbuild.bat b/3rdparty/luv/msvcbuild.bat
deleted file mode 100644
index 7a5c7bd4c31..00000000000
--- a/3rdparty/luv/msvcbuild.bat
+++ /dev/null
@@ -1,13 +0,0 @@
-@echo off
-
-set VS=12
-if "%configuration%"=="2015" (set VS=14)
-if "%configuration%"=="2013" (set VS=12)
-
-if not defined platform set platform=x64
-if "%platform%" EQU "x64" (set VS=%VS% Win64)
-
-cmake -H. -Bbuild -G"Visual Studio %VS%"
-cmake --build build --config Release
-copy build\Release\luv.dll .
-copy build\Release\luajit.exe .
diff --git a/3rdparty/luv/src/async.c b/3rdparty/luv/src/async.c
deleted file mode 100644
index 87ae0cc0460..00000000000
--- a/3rdparty/luv/src/async.c
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright 2014 The Luvit Authors. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-#include "luv.h"
-#include "lthreadpool.h"
-
-static uv_async_t* luv_check_async(lua_State* L, int index) {
- uv_async_t* handle = luv_checkudata(L, index, "uv_async");
- luaL_argcheck(L, handle->type == UV_ASYNC && handle->data, index, "Expected uv_async_t");
- return handle;
-}
-
-static void luv_async_cb(uv_async_t* handle) {
- lua_State* L = luv_state(handle->loop);
- luv_handle_t* data = handle->data;
- int n = luv_thread_arg_push(L, data->extra);
- luv_call_callback(L, data, LUV_ASYNC, n);
- luv_thread_arg_clear(data->extra);
-}
-
-static int luv_new_async(lua_State* L) {
- uv_async_t* handle;
- luv_handle_t* data;
- int ret;
- luaL_checktype(L, 1, LUA_TFUNCTION);
- handle = luv_newuserdata(L, sizeof(*handle));
- ret = uv_async_init(luv_loop(L), handle, luv_async_cb);
- if (ret < 0) {
- lua_pop(L, 1);
- return luv_error(L, ret);
- }
- data = luv_setup_handle(L);
- data->extra = malloc(sizeof(luv_thread_arg_t));
- memset(data->extra, 0, sizeof(luv_thread_arg_t));
- handle->data = data;
- luv_check_callback(L, handle->data, LUV_ASYNC, 1);
- return 1;
-}
-
-static int luv_async_send(lua_State* L) {
- int ret;
- uv_async_t* handle = luv_check_async(L, 1);
- luv_thread_arg_t* arg = ((luv_handle_t*) handle->data)->extra;
-
- luv_thread_arg_set(L, arg, 2, lua_gettop(L), 0);
- ret = uv_async_send(handle);
- if (ret < 0) return luv_error(L, ret);
- lua_pushinteger(L, ret);
- return 1;
-}
diff --git a/3rdparty/luv/src/check.c b/3rdparty/luv/src/check.c
deleted file mode 100644
index dbd330ae255..00000000000
--- a/3rdparty/luv/src/check.c
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright 2014 The Luvit Authors. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-#include "luv.h"
-
-static uv_check_t* luv_check_check(lua_State* L, int index) {
- uv_check_t* handle = luv_checkudata(L, index, "uv_check");
- luaL_argcheck(L, handle->type == UV_CHECK && handle->data, index, "Expected uv_check_t");
- return handle;
-}
-
-static int luv_new_check(lua_State* L) {
- uv_check_t* handle = luv_newuserdata(L, sizeof(*handle));
- int ret = uv_check_init(luv_loop(L), handle);
- if (ret < 0) {
- lua_pop(L, 1);
- return luv_error(L, ret);
- }
- handle->data = luv_setup_handle(L);
- return 1;
-}
-
-static void luv_check_cb(uv_check_t* handle) {
- lua_State* L = luv_state(handle->loop);
- luv_handle_t* data = handle->data;
- luv_call_callback(L, data, LUV_CHECK, 0);
-}
-
-static int luv_check_start(lua_State* L) {
- uv_check_t* handle = luv_check_check(L, 1);
- int ret;
- luv_check_callback(L, handle->data, LUV_CHECK, 2);
- ret = uv_check_start(handle, luv_check_cb);
- if (ret < 0) return luv_error(L, ret);
- lua_pushinteger(L, ret);
- return 1;
-}
-
-static int luv_check_stop(lua_State* L) {
- uv_check_t* handle = luv_check_check(L, 1);
- int ret = uv_check_stop(handle);
- if (ret < 0) return luv_error(L, ret);
- lua_pushinteger(L, ret);
- return 1;
-}
-
diff --git a/3rdparty/luv/src/constants.c b/3rdparty/luv/src/constants.c
deleted file mode 100644
index 3417028c438..00000000000
--- a/3rdparty/luv/src/constants.c
+++ /dev/null
@@ -1,649 +0,0 @@
-/*
- * Copyright 2014 The Luvit Authors. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-#include "luv.h"
-
-static int luv_constants(lua_State* L) {
- lua_newtable(L);
-
- // File open bitwise flags O_*
-#ifdef O_RDONLY
- lua_pushinteger(L, O_RDONLY);
- lua_setfield(L, -2, "O_RDONLY");
-#endif
-#ifdef O_WRONLY
- lua_pushinteger(L, O_WRONLY);
- lua_setfield(L, -2, "O_WRONLY");
-#endif
-#ifdef O_RDWR
- lua_pushinteger(L, O_RDWR);
- lua_setfield(L, -2, "O_RDWR");
-#endif
-#ifdef O_APPEND
- lua_pushinteger(L, O_APPEND);
- lua_setfield(L, -2, "O_APPEND");
-#endif
-#ifdef O_CREAT
- lua_pushinteger(L, O_CREAT);
- lua_setfield(L, -2, "O_CREAT");
-#endif
-#ifdef O_DSYNC
- lua_pushinteger(L, O_DSYNC);
- lua_setfield(L, -2, "O_DSYNC");
-#endif
-#ifdef O_EXCL
- lua_pushinteger(L, O_EXCL);
- lua_setfield(L, -2, "O_EXCL");
-#endif
-#ifdef O_EXLOCK
- lua_pushinteger(L, O_EXLOCK);
- lua_setfield(L, -2, "O_EXLOCK");
-#endif
-#ifdef O_NOCTTY
- lua_pushinteger(L, O_NOCTTY);
- lua_setfield(L, -2, "O_NOCTTY");
-#endif
-#ifdef O_NONBLOCK
- lua_pushinteger(L, O_NONBLOCK);
- lua_setfield(L, -2, "O_NONBLOCK");
-#endif
-#ifdef O_RSYNC
- lua_pushinteger(L, O_RSYNC);
- lua_setfield(L, -2, "O_RSYNC");
-#endif
-#ifdef O_SYNC
- lua_pushinteger(L, O_SYNC);
- lua_setfield(L, -2, "O_SYNC");
-#endif
-#ifdef O_TRUNC
- lua_pushinteger(L, O_TRUNC);
- lua_setfield(L, -2, "O_TRUNC");
-#endif
-
- // Socket types SOCK_*
-#ifdef SOCK_STREAM
- lua_pushinteger(L, SOCK_STREAM);
- lua_setfield(L, -2, "SOCK_STREAM");
-#endif
-#ifdef SOCK_DGRAM
- lua_pushinteger(L, SOCK_DGRAM);
- lua_setfield(L, -2, "SOCK_DGRAM");
-#endif
-#ifdef SOCK_SEQPACKET
- lua_pushinteger(L, SOCK_SEQPACKET);
- lua_setfield(L, -2, "SOCK_SEQPACKET");
-#endif
-#ifdef SOCK_RAW
- lua_pushinteger(L, SOCK_RAW);
- lua_setfield(L, -2, "SOCK_RAW");
-#endif
-#ifdef SOCK_RDM
- lua_pushinteger(L, SOCK_RDM);
- lua_setfield(L, -2, "SOCK_RDM");
-#endif
-
- // AF_*
-#ifdef AF_UNIX
- lua_pushinteger(L, AF_UNIX);
- lua_setfield(L, -2, "AF_UNIX");
-#endif
-#ifdef AF_INET
- lua_pushinteger(L, AF_INET);
- lua_setfield(L, -2, "AF_INET");
-#endif
-#ifdef AF_INET6
- lua_pushinteger(L, AF_INET6);
- lua_setfield(L, -2, "AF_INET6");
-#endif
-#ifdef AF_IPX
- lua_pushinteger(L, AF_IPX);
- lua_setfield(L, -2, "AF_IPX");
-#endif
-#ifdef AF_NETLINK
- lua_pushinteger(L, AF_NETLINK);
- lua_setfield(L, -2, "AF_NETLINK");
-#endif
-#ifdef AF_X25
- lua_pushinteger(L, AF_X25);
- lua_setfield(L, -2, "AF_X25");
-#endif
-#ifdef AF_AX25
- lua_pushinteger(L, AF_AX25);
- lua_setfield(L, -2, "AF_AX25");
-#endif
-#ifdef AF_ATMPVC
- lua_pushinteger(L, AF_ATMPVC);
- lua_setfield(L, -2, "AF_ATMPVC");
-#endif
-#ifdef AF_APPLETALK
- lua_pushinteger(L, AF_APPLETALK);
- lua_setfield(L, -2, "AF_APPLETALK");
-#endif
-#ifdef AF_PACKET
- lua_pushinteger(L, AF_PACKET);
- lua_setfield(L, -2, "AF_PACKET");
-#endif
-
- // AI_*
-#ifdef AI_ADDRCONFIG
- lua_pushinteger(L, AI_ADDRCONFIG);
- lua_setfield(L, -2, "AI_ADDRCONFIG");
-#endif
-#ifdef AI_V4MAPPED
- lua_pushinteger(L, AI_V4MAPPED);
- lua_setfield(L, -2, "AI_V4MAPPED");
-#endif
-#ifdef AI_ALL
- lua_pushinteger(L, AI_ALL);
- lua_setfield(L, -2, "AI_ALL");
-#endif
-#ifdef AI_NUMERICHOST
- lua_pushinteger(L, AI_NUMERICHOST);
- lua_setfield(L, -2, "AI_NUMERICHOST");
-#endif
-#ifdef AI_PASSIVE
- lua_pushinteger(L, AI_PASSIVE);
- lua_setfield(L, -2, "AI_PASSIVE");
-#endif
-#ifdef AI_NUMERICSERV
- lua_pushinteger(L, AI_NUMERICSERV);
- lua_setfield(L, -2, "AI_NUMERICSERV");
-#endif
-
- // Signals
-#ifdef SIGHUP
- lua_pushinteger(L, SIGHUP);
- lua_setfield(L, -2, "SIGHUP");
-#endif
-#ifdef SIGINT
- lua_pushinteger(L, SIGINT);
- lua_setfield(L, -2, "SIGINT");
-#endif
-#ifdef SIGQUIT
- lua_pushinteger(L, SIGQUIT);
- lua_setfield(L, -2, "SIGQUIT");
-#endif
-#ifdef SIGILL
- lua_pushinteger(L, SIGILL);
- lua_setfield(L, -2, "SIGILL");
-#endif
-#ifdef SIGTRAP
- lua_pushinteger(L, SIGTRAP);
- lua_setfield(L, -2, "SIGTRAP");
-#endif
-#ifdef SIGABRT
- lua_pushinteger(L, SIGABRT);
- lua_setfield(L, -2, "SIGABRT");
-#endif
-#ifdef SIGIOT
- lua_pushinteger(L, SIGIOT);
- lua_setfield(L, -2, "SIGIOT");
-#endif
-#ifdef SIGBUS
- lua_pushinteger(L, SIGBUS);
- lua_setfield(L, -2, "SIGBUS");
-#endif
-#ifdef SIGFPE
- lua_pushinteger(L, SIGFPE);
- lua_setfield(L, -2, "SIGFPE");
-#endif
-#ifdef SIGKILL
- lua_pushinteger(L, SIGKILL);
- lua_setfield(L, -2, "SIGKILL");
-#endif
-#ifdef SIGUSR1
- lua_pushinteger(L, SIGUSR1);
- lua_setfield(L, -2, "SIGUSR1");
-#endif
-#ifdef SIGSEGV
- lua_pushinteger(L, SIGSEGV);
- lua_setfield(L, -2, "SIGSEGV");
-#endif
-#ifdef SIGUSR2
- lua_pushinteger(L, SIGUSR2);
- lua_setfield(L, -2, "SIGUSR2");
-#endif
-#ifdef SIGPIPE
- lua_pushinteger(L, SIGPIPE);
- lua_setfield(L, -2, "SIGPIPE");
-#endif
-#ifdef SIGALRM
- lua_pushinteger(L, SIGALRM);
- lua_setfield(L, -2, "SIGALRM");
-#endif
-#ifdef SIGTERM
- lua_pushinteger(L, SIGTERM);
- lua_setfield(L, -2, "SIGTERM");
-#endif
-#ifdef SIGCHLD
- lua_pushinteger(L, SIGCHLD);
- lua_setfield(L, -2, "SIGCHLD");
-#endif
-#ifdef SIGSTKFLT
- lua_pushinteger(L, SIGSTKFLT);
- lua_setfield(L, -2, "SIGSTKFLT");
-#endif
-#ifdef SIGCONT
- lua_pushinteger(L, SIGCONT);
- lua_setfield(L, -2, "SIGCONT");
-#endif
-#ifdef SIGSTOP
- lua_pushinteger(L, SIGSTOP);
- lua_setfield(L, -2, "SIGSTOP");
-#endif
-#ifdef SIGTSTP
- lua_pushinteger(L, SIGTSTP);
- lua_setfield(L, -2, "SIGTSTP");
-#endif
-#ifdef SIGBREAK
- lua_pushinteger(L, SIGBREAK);
- lua_setfield(L, -2, "SIGBREAK");
-#endif
-#ifdef SIGTTIN
- lua_pushinteger(L, SIGTTIN);
- lua_setfield(L, -2, "SIGTTIN");
-#endif
-#ifdef SIGTTOU
- lua_pushinteger(L, SIGTTOU);
- lua_setfield(L, -2, "SIGTTOU");
-#endif
-#ifdef SIGURG
- lua_pushinteger(L, SIGURG);
- lua_setfield(L, -2, "SIGURG");
-#endif
-#ifdef SIGXCPU
- lua_pushinteger(L, SIGXCPU);
- lua_setfield(L, -2, "SIGXCPU");
-#endif
-#ifdef SIGXFSZ
- lua_pushinteger(L, SIGXFSZ);
- lua_setfield(L, -2, "SIGXFSZ");
-#endif
-#ifdef SIGVTALRM
- lua_pushinteger(L, SIGVTALRM);
- lua_setfield(L, -2, "SIGVTALRM");
-#endif
-#ifdef SIGPROF
- lua_pushinteger(L, SIGPROF);
- lua_setfield(L, -2, "SIGPROF");
-#endif
-#ifdef SIGWINCH
- lua_pushinteger(L, SIGWINCH);
- lua_setfield(L, -2, "SIGWINCH");
-#endif
-#ifdef SIGIO
- lua_pushinteger(L, SIGIO);
- lua_setfield(L, -2, "SIGIO");
-#endif
-#ifdef SIGPOLL
- lua_pushinteger(L, SIGPOLL);
- lua_setfield(L, -2, "SIGPOLL");
-#endif
-#ifdef SIGLOST
- lua_pushinteger(L, SIGLOST);
- lua_setfield(L, -2, "SIGLOST");
-#endif
-#ifdef SIGPWR
- lua_pushinteger(L, SIGPWR);
- lua_setfield(L, -2, "SIGPWR");
-#endif
-#ifdef SIGSYS
- lua_pushinteger(L, SIGSYS);
- lua_setfield(L, -2, "SIGSYS");
-#endif
- return 1;
-}
-
-static int luv_af_string_to_num(const char* string) {
- if (!string) return AF_UNSPEC;
-#ifdef AF_UNIX
- if (strcmp(string, "unix") == 0) return AF_UNIX;
-#endif
-#ifdef AF_INET
- if (strcmp(string, "inet") == 0) return AF_INET;
-#endif
-#ifdef AF_INET6
- if (strcmp(string, "inet6") == 0) return AF_INET6;
-#endif
-#ifdef AF_IPX
- if (strcmp(string, "ipx") == 0) return AF_IPX;
-#endif
-#ifdef AF_NETLINK
- if (strcmp(string, "netlink") == 0) return AF_NETLINK;
-#endif
-#ifdef AF_X25
- if (strcmp(string, "x25") == 0) return AF_X25;
-#endif
-#ifdef AF_AX25
- if (strcmp(string, "ax25") == 0) return AF_AX25;
-#endif
-#ifdef AF_ATMPVC
- if (strcmp(string, "atmpvc") == 0) return AF_ATMPVC;
-#endif
-#ifdef AF_APPLETALK
- if (strcmp(string, "appletalk") == 0) return AF_APPLETALK;
-#endif
-#ifdef AF_PACKET
- if (strcmp(string, "packet") == 0) return AF_PACKET;
-#endif
- return 0;
-}
-
-static const char* luv_af_num_to_string(const int num) {
- switch (num) {
-#ifdef AF_UNIX
- case AF_UNIX: return "unix";
-#endif
-#ifdef AF_INET
- case AF_INET: return "inet";
-#endif
-#ifdef AF_INET6
- case AF_INET6: return "inet6";
-#endif
-#ifdef AF_IPX
- case AF_IPX: return "ipx";
-#endif
-#ifdef AF_NETLINK
- case AF_NETLINK: return "netlink";
-#endif
-#ifdef AF_X25
- case AF_X25: return "x25";
-#endif
-#ifdef AF_AX25
- case AF_AX25: return "ax25";
-#endif
-#ifdef AF_ATMPVC
- case AF_ATMPVC: return "atmpvc";
-#endif
-#ifdef AF_APPLETALK
- case AF_APPLETALK: return "appletalk";
-#endif
-#ifdef AF_PACKET
- case AF_PACKET: return "packet";
-#endif
- }
- return NULL;
-}
-
-
-static int luv_sock_string_to_num(const char* string) {
- if (!string) return 0;
-#ifdef SOCK_STREAM
- if (strcmp(string, "stream") == 0) return SOCK_STREAM;
-#endif
-#ifdef SOCK_DGRAM
- if (strcmp(string, "dgram") == 0) return SOCK_DGRAM;
-#endif
-#ifdef SOCK_SEQPACKET
- if (strcmp(string, "seqpacket") == 0) return SOCK_SEQPACKET;
-#endif
-#ifdef SOCK_RAW
- if (strcmp(string, "raw") == 0) return SOCK_RAW;
-#endif
-#ifdef SOCK_RDM
- if (strcmp(string, "rdm") == 0) return SOCK_RDM;
-#endif
- return 0;
-}
-
-static const char* luv_sock_num_to_string(const int num) {
- switch (num) {
-#ifdef SOCK_STREAM
- case SOCK_STREAM: return "stream";
-#endif
-#ifdef SOCK_DGRAM
- case SOCK_DGRAM: return "dgram";
-#endif
-#ifdef SOCK_SEQPACKET
- case SOCK_SEQPACKET: return "seqpacket";
-#endif
-#ifdef SOCK_RAW
- case SOCK_RAW: return "raw";
-#endif
-#ifdef SOCK_RDM
- case SOCK_RDM: return "rdm";
-#endif
- }
- return NULL;
-}
-
-static int luv_sig_string_to_num(const char* string) {
- if (!string) return 0;
-#ifdef SIGHUP
- if (strcmp(string, "sighup") == 0) return SIGHUP;
-#endif
-#ifdef SIGINT
- if (strcmp(string, "sigint") == 0) return SIGINT;
-#endif
-#ifdef SIGQUIT
- if (strcmp(string, "sigquit") == 0) return SIGQUIT;
-#endif
-#ifdef SIGILL
- if (strcmp(string, "sigill") == 0) return SIGILL;
-#endif
-#ifdef SIGTRAP
- if (strcmp(string, "sigtrap") == 0) return SIGTRAP;
-#endif
-#ifdef SIGABRT
- if (strcmp(string, "sigabrt") == 0) return SIGABRT;
-#endif
-#ifdef SIGIOT
- if (strcmp(string, "sigiot") == 0) return SIGIOT;
-#endif
-#ifdef SIGBUS
- if (strcmp(string, "sigbus") == 0) return SIGBUS;
-#endif
-#ifdef SIGFPE
- if (strcmp(string, "sigfpe") == 0) return SIGFPE;
-#endif
-#ifdef SIGKILL
- if (strcmp(string, "sigkill") == 0) return SIGKILL;
-#endif
-#ifdef SIGUSR1
- if (strcmp(string, "sigusr1") == 0) return SIGUSR1;
-#endif
-#ifdef SIGSEGV
- if (strcmp(string, "sigsegv") == 0) return SIGSEGV;
-#endif
-#ifdef SIGUSR2
- if (strcmp(string, "sigusr2") == 0) return SIGUSR2;
-#endif
-#ifdef SIGPIPE
- if (strcmp(string, "sigpipe") == 0) return SIGPIPE;
-#endif
-#ifdef SIGALRM
- if (strcmp(string, "sigalrm") == 0) return SIGALRM;
-#endif
-#ifdef SIGTERM
- if (strcmp(string, "sigterm") == 0) return SIGTERM;
-#endif
-#ifdef SIGCHLD
- if (strcmp(string, "sigchld") == 0) return SIGCHLD;
-#endif
-#ifdef SIGSTKFLT
- if (strcmp(string, "sigstkflt") == 0) return SIGSTKFLT;
-#endif
-#ifdef SIGCONT
- if (strcmp(string, "sigcont") == 0) return SIGCONT;
-#endif
-#ifdef SIGSTOP
- if (strcmp(string, "sigstop") == 0) return SIGSTOP;
-#endif
-#ifdef SIGTSTP
- if (strcmp(string, "sigtstp") == 0) return SIGTSTP;
-#endif
-#ifdef SIGBREAK
- if (strcmp(string, "sigbreak") == 0) return SIGBREAK;
-#endif
-#ifdef SIGTTIN
- if (strcmp(string, "sigttin") == 0) return SIGTTIN;
-#endif
-#ifdef SIGTTOU
- if (strcmp(string, "sigttou") == 0) return SIGTTOU;
-#endif
-#ifdef SIGURG
- if (strcmp(string, "sigurg") == 0) return SIGURG;
-#endif
-#ifdef SIGXCPU
- if (strcmp(string, "sigxcpu") == 0) return SIGXCPU;
-#endif
-#ifdef SIGXFSZ
- if (strcmp(string, "sigxfsz") == 0) return SIGXFSZ;
-#endif
-#ifdef SIGVTALRM
- if (strcmp(string, "sigvtalrm") == 0) return SIGVTALRM;
-#endif
-#ifdef SIGPROF
- if (strcmp(string, "sigprof") == 0) return SIGPROF;
-#endif
-#ifdef SIGWINCH
- if (strcmp(string, "sigwinch") == 0) return SIGWINCH;
-#endif
-#ifdef SIGIO
- if (strcmp(string, "sigio") == 0) return SIGIO;
-#endif
-#ifdef SIGPOLL
- if (strcmp(string, "sigpoll") == 0) return SIGPOLL;
-#endif
-#ifdef SIGLOST
- if (strcmp(string, "siglost") == 0) return SIGLOST;
-#endif
-#ifdef SIGPWR
- if (strcmp(string, "sigpwr") == 0) return SIGPWR;
-#endif
-#ifdef SIGSYS
- if (strcmp(string, "sigsys") == 0) return SIGSYS;
-#endif
- return 0;
-}
-
-static const char* luv_sig_num_to_string(const int num) {
- switch (num) {
-#ifdef SIGHUP
- case SIGHUP: return "sighup";
-#endif
-#ifdef SIGINT
- case SIGINT: return "sigint";
-#endif
-#ifdef SIGQUIT
- case SIGQUIT: return "sigquit";
-#endif
-#ifdef SIGILL
- case SIGILL: return "sigill";
-#endif
-#ifdef SIGTRAP
- case SIGTRAP: return "sigtrap";
-#endif
-#ifdef SIGABRT
- case SIGABRT: return "sigabrt";
-#endif
-#ifdef SIGIOT
-# if SIGIOT != SIGABRT
- case SIGIOT: return "sigiot";
-# endif
-#endif
-#ifdef SIGBUS
- case SIGBUS: return "sigbus";
-#endif
-#ifdef SIGFPE
- case SIGFPE: return "sigfpe";
-#endif
-#ifdef SIGKILL
- case SIGKILL: return "sigkill";
-#endif
-#ifdef SIGUSR1
- case SIGUSR1: return "sigusr1";
-#endif
-#ifdef SIGSEGV
- case SIGSEGV: return "sigsegv";
-#endif
-#ifdef SIGUSR2
- case SIGUSR2: return "sigusr2";
-#endif
-#ifdef SIGPIPE
- case SIGPIPE: return "sigpipe";
-#endif
-#ifdef SIGALRM
- case SIGALRM: return "sigalrm";
-#endif
-#ifdef SIGTERM
- case SIGTERM: return "sigterm";
-#endif
-#ifdef SIGCHLD
- case SIGCHLD: return "sigchld";
-#endif
-#ifdef SIGSTKFLT
- case SIGSTKFLT: return "sigstkflt";
-#endif
-#ifdef SIGCONT
- case SIGCONT: return "sigcont";
-#endif
-#ifdef SIGSTOP
- case SIGSTOP: return "sigstop";
-#endif
-#ifdef SIGTSTP
- case SIGTSTP: return "sigtstp";
-#endif
-#ifdef SIGBREAK
- case SIGBREAK: return "sigbreak";
-#endif
-#ifdef SIGTTIN
- case SIGTTIN: return "sigttin";
-#endif
-#ifdef SIGTTOU
- case SIGTTOU: return "sigttou";
-#endif
-#ifdef SIGURG
- case SIGURG: return "sigurg";
-#endif
-#ifdef SIGXCPU
- case SIGXCPU: return "sigxcpu";
-#endif
-#ifdef SIGXFSZ
- case SIGXFSZ: return "sigxfsz";
-#endif
-#ifdef SIGVTALRM
- case SIGVTALRM: return "sigvtalrm";
-#endif
-#ifdef SIGPROF
- case SIGPROF: return "sigprof";
-#endif
-#ifdef SIGWINCH
- case SIGWINCH: return "sigwinch";
-#endif
-#ifdef SIGIO
- case SIGIO: return "sigio";
-#endif
-#ifdef SIGPOLL
-# if SIGPOLL != SIGIO
- case SIGPOLL: return "sigpoll";
-# endif
-#endif
-#ifdef SIGLOST
- case SIGLOST: return "siglost";
-#endif
-#ifdef SIGPWR
-# if SIGPWR != SIGLOST
- case SIGPWR: return "sigpwr";
-# endif
-#endif
-#ifdef SIGSYS
- case SIGSYS: return "sigsys";
-#endif
- }
- return NULL;
-}
diff --git a/3rdparty/luv/src/dns.c b/3rdparty/luv/src/dns.c
deleted file mode 100644
index f3446f30985..00000000000
--- a/3rdparty/luv/src/dns.c
+++ /dev/null
@@ -1,296 +0,0 @@
-/*
- * Copyright 2014 The Luvit Authors. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-#include "luv.h"
-#ifndef WIN32
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netdb.h>
-#endif
-
-static void luv_pushaddrinfo(lua_State* L, struct addrinfo* res) {
- char ip[INET6_ADDRSTRLEN];
- int port, i = 0;
- const char *addr;
- struct addrinfo* curr = res;
- lua_newtable(L);
- for (curr = res; curr; curr = curr->ai_next) {
- if (curr->ai_family == AF_INET || curr->ai_family == AF_INET6) {
- lua_newtable(L);
- if (curr->ai_family == AF_INET) {
- addr = (char*) &((struct sockaddr_in*) curr->ai_addr)->sin_addr;
- port = ((struct sockaddr_in*) curr->ai_addr)->sin_port;
- } else {
- addr = (char*) &((struct sockaddr_in6*) curr->ai_addr)->sin6_addr;
- port = ((struct sockaddr_in6*) curr->ai_addr)->sin6_port;
- }
- lua_pushstring(L, luv_af_num_to_string(curr->ai_family));
- lua_setfield(L, -2, "family");
- uv_inet_ntop(curr->ai_family, addr, ip, INET6_ADDRSTRLEN);
- lua_pushstring(L, ip);
- lua_setfield(L, -2, "addr");
- if (ntohs(port)) {
- lua_pushinteger(L, ntohs(port));
- lua_setfield(L, -2, "port");
- }
- lua_pushstring(L, luv_sock_num_to_string(curr->ai_socktype));
- lua_setfield(L, -2, "socktype");
- lua_pushstring(L, luv_af_num_to_string(curr->ai_protocol));
- lua_setfield(L, -2, "protocol");
- if (curr->ai_canonname) {
- lua_pushstring(L, curr->ai_canonname);
- lua_setfield(L, -2, "canonname");
- }
- lua_rawseti(L, -2, ++i);
- }
- }
-}
-
-static void luv_getaddrinfo_cb(uv_getaddrinfo_t* req, int status, struct addrinfo* res) {
- lua_State* L = luv_state(req->loop);
- int nargs;
-
- if (status < 0) {
- luv_status(L, status);
- nargs = 1;
- }
- else {
- lua_pushnil(L);
- luv_pushaddrinfo(L, res);
- nargs = 2;
- }
- luv_fulfill_req(L, req->data, nargs);
- luv_cleanup_req(L, req->data);
- req->data = NULL;
- if (res) uv_freeaddrinfo(res);
-}
-
-
-static int luv_getaddrinfo(lua_State* L) {
- uv_getaddrinfo_t* req;
- const char* node;
- const char* service;
- struct addrinfo hints_s;
- struct addrinfo* hints = &hints_s;
- int ret, ref;
- if (lua_isnoneornil(L, 1)) node = NULL;
- else node = luaL_checkstring(L, 1);
- if (lua_isnoneornil(L, 2)) service = NULL;
- else service = luaL_checkstring(L, 2);
- if (!lua_isnoneornil(L, 3)) luaL_checktype(L, 3, LUA_TTABLE);
- else hints = NULL;
- ref = lua_isnoneornil(L, 4) ? LUA_NOREF : luv_check_continuation(L, 4);
- if (hints) {
- // Initialize the hints
- memset(hints, 0, sizeof(*hints));
-
- // Process the `family` hint.
- lua_getfield(L, 3, "family");
- if (lua_isnumber(L, -1)) {
- hints->ai_family = lua_tointeger(L, -1);
- }
- else if (lua_isstring(L, -1)) {
- hints->ai_family = luv_af_string_to_num(lua_tostring(L, -1));
- }
- else if (lua_isnil(L, -1)) {
- hints->ai_family = AF_UNSPEC;
- }
- else {
- luaL_argerror(L, 3, "family hint must be string if set");
- }
- lua_pop(L, 1);
-
- // Process `socktype` hint
- lua_getfield(L, 3, "socktype");
- if (lua_isnumber(L, -1)) {
- hints->ai_socktype = lua_tointeger(L, -1);
- }
- else if (lua_isstring(L, -1)) {
- hints->ai_socktype = luv_sock_string_to_num(lua_tostring(L, -1));
- }
- else if (!lua_isnil(L, -1)) {
- return luaL_argerror(L, 3, "socktype hint must be string if set");
- }
- lua_pop(L, 1);
-
- // Process the `protocol` hint
- lua_getfield(L, 3, "protocol");
- if (lua_isnumber(L, -1)) {
- hints->ai_protocol = lua_tointeger(L, -1);
- }
- else if (lua_isstring(L, -1)) {
- int protocol = luv_af_string_to_num(lua_tostring(L, -1));
- if (protocol) {
- hints->ai_protocol = protocol;
- }
- else {
- return luaL_argerror(L, 3, "Invalid protocol hint");
- }
- }
- else if (!lua_isnil(L, -1)) {
- return luaL_argerror(L, 3, "protocol hint must be string if set");
- }
- lua_pop(L, 1);
-
- lua_getfield(L, 3, "addrconfig");
- if (lua_toboolean(L, -1)) hints->ai_flags |= AI_ADDRCONFIG;
- lua_pop(L, 1);
-
- lua_getfield(L, 3, "v4mapped");
- if (lua_toboolean(L, -1)) hints->ai_flags |= AI_V4MAPPED;
- lua_pop(L, 1);
-
- lua_getfield(L, 3, "all");
- if (lua_toboolean(L, -1)) hints->ai_flags |= AI_ALL;
- lua_pop(L, 1);
-
- lua_getfield(L, 3, "numerichost");
- if (lua_toboolean(L, -1)) hints->ai_flags |= AI_NUMERICHOST;
- lua_pop(L, 1);
-
- lua_getfield(L, 3, "passive");
- if (lua_toboolean(L, -1)) hints->ai_flags |= AI_PASSIVE;
- lua_pop(L, 1);
-
- lua_getfield(L, 3, "numericserv");
- if (lua_toboolean(L, -1)) {
- hints->ai_flags |= AI_NUMERICSERV;
- /* On OS X upto at least OSX 10.9, getaddrinfo crashes
- * if AI_NUMERICSERV is set and the servname is NULL or "0".
- * This workaround avoids a segfault in libsystem.
- */
- if (NULL == service) service = "00";
- }
- lua_pop(L, 1);
-
- lua_getfield(L, 3, "canonname");
- if (lua_toboolean(L, -1)) hints->ai_flags |= AI_CANONNAME;
- lua_pop(L, 1);
- }
-
- req = lua_newuserdata(L, sizeof(*req));
- req->data = luv_setup_req(L, ref);
-
- ret = uv_getaddrinfo(luv_loop(L), req, ref == LUA_NOREF ? NULL : luv_getaddrinfo_cb, node, service, hints);
- if (ret < 0) {
- lua_pop(L, 1);
- return luv_error(L, ret);
- }
- if (ref == LUA_NOREF) {
-
- lua_pop(L, 1);
- luv_pushaddrinfo(L, req->addrinfo);
- uv_freeaddrinfo(req->addrinfo);
- luv_cleanup_req(L, req->data);
- }
- return 1;
-}
-
-static void luv_getnameinfo_cb(uv_getnameinfo_t* req, int status, const char* hostname, const char* service) {
- lua_State* L = luv_state(req->loop);
-
- int nargs;
-
- if (status < 0) {
- luv_status(L, status);
- nargs = 1;
- }
- else {
- lua_pushnil(L);
- lua_pushstring(L, hostname);
- lua_pushstring(L, service);
- nargs = 3;
- }
-
- luv_fulfill_req(L, req->data, nargs);
- luv_cleanup_req(L, req->data);
- req->data = NULL;
-}
-
-static int luv_getnameinfo(lua_State* L) {
- uv_getnameinfo_t* req;
- struct sockaddr_storage addr;
- const char* ip = NULL;
- int flags = 0;
- int ret, ref, port = 0;
-
- luaL_checktype(L, 1, LUA_TTABLE);
- memset(&addr, 0, sizeof(addr));
-
- lua_getfield(L, 1, "ip");
- if (lua_isstring(L, -1)) {
- ip = lua_tostring(L, -1);
- }
- else if (!lua_isnil(L, -1)) {
- luaL_argerror(L, 1, "ip property must be string if set");
- }
- lua_pop(L, 1);
-
- lua_getfield(L, 1, "port");
- if (lua_isnumber(L, -1)) {
- port = lua_tointeger(L, -1);
- }
- else if (!lua_isnil(L, -1)) {
- luaL_argerror(L, 1, "port property must be integer if set");
- }
- lua_pop(L, 1);
-
- if (ip || port) {
- if (!ip) ip = "0.0.0.0";
- if (!uv_ip4_addr(ip, port, (struct sockaddr_in*)&addr)) {
- addr.ss_family = AF_INET;
- }
- else if (!uv_ip6_addr(ip, port, (struct sockaddr_in6*)&addr)) {
- addr.ss_family = AF_INET6;
- }
- else {
- return luaL_argerror(L, 1, "Invalid ip address or port");
- }
- }
-
- lua_getfield(L, 1, "family");
- if (lua_isnumber(L, -1)) {
- addr.ss_family = lua_tointeger(L, -1);
- }
- else if (lua_isstring(L, -1)) {
- addr.ss_family = luv_af_string_to_num(lua_tostring(L, -1));
- }
- else if (!lua_isnil(L, -1)) {
- luaL_argerror(L, 1, "family must be string if set");
- }
- lua_pop(L, 1);
-
- ref = lua_isnoneornil(L, 2) ? LUA_NOREF : luv_check_continuation(L, 2);
-
- req = lua_newuserdata(L, sizeof(*req));
- req->data = luv_setup_req(L, ref);
-
- ret = uv_getnameinfo(luv_loop(L), req, ref == LUA_NOREF ? NULL : luv_getnameinfo_cb, (struct sockaddr*)&addr, flags);
- if (ret < 0) {
- lua_pop(L, 1);
- return luv_error(L, ret);
- }
- if (ref == LUA_NOREF) {
- lua_pop(L, 1);
- lua_pushstring(L, req->host);
- lua_pushstring(L, req->service);
- luv_cleanup_req(L, req->data);
- return 2;
- }
- return 1;
-}
-
diff --git a/3rdparty/luv/src/fs.c b/3rdparty/luv/src/fs.c
deleted file mode 100644
index bacf11ea647..00000000000
--- a/3rdparty/luv/src/fs.c
+++ /dev/null
@@ -1,614 +0,0 @@
-/*
- * Copyright 2014 The Luvit Authors. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-#include "luv.h"
-
-static uv_fs_t* luv_check_fs(lua_State* L, int index) {
- uv_fs_t* req = luaL_checkudata(L, index, "uv_req");
- luaL_argcheck(L, req->type = UV_FS && req->data, index, "Expected uv_fs_t");
- return req;
-}
-
-static void luv_push_timespec_table(lua_State* L, const uv_timespec_t* t) {
- lua_createtable(L, 0, 2);
- lua_pushinteger(L, t->tv_sec);
- lua_setfield(L, -2, "sec");
- lua_pushinteger(L, t->tv_nsec);
- lua_setfield(L, -2, "nsec");
-}
-
-static void luv_push_stats_table(lua_State* L, const uv_stat_t* s) {
- const char* type = NULL;
- lua_createtable(L, 0, 23);
- lua_pushinteger(L, s->st_dev);
- lua_setfield(L, -2, "dev");
- lua_pushinteger(L, s->st_mode);
- lua_setfield(L, -2, "mode");
- lua_pushinteger(L, s->st_nlink);
- lua_setfield(L, -2, "nlink");
- lua_pushinteger(L, s->st_uid);
- lua_setfield(L, -2, "uid");
- lua_pushinteger(L, s->st_gid);
- lua_setfield(L, -2, "gid");
- lua_pushinteger(L, s->st_rdev);
- lua_setfield(L, -2, "rdev");
- lua_pushinteger(L, s->st_ino);
- lua_setfield(L, -2, "ino");
- lua_pushinteger(L, s->st_size);
- lua_setfield(L, -2, "size");
- lua_pushinteger(L, s->st_blksize);
- lua_setfield(L, -2, "blksize");
- lua_pushinteger(L, s->st_blocks);
- lua_setfield(L, -2, "blocks");
- lua_pushinteger(L, s->st_flags);
- lua_setfield(L, -2, "flags");
- lua_pushinteger(L, s->st_gen);
- lua_setfield(L, -2, "gen");
- luv_push_timespec_table(L, &s->st_atim);
- lua_setfield(L, -2, "atime");
- luv_push_timespec_table(L, &s->st_mtim);
- lua_setfield(L, -2, "mtime");
- luv_push_timespec_table(L, &s->st_ctim);
- lua_setfield(L, -2, "ctime");
- luv_push_timespec_table(L, &s->st_birthtim);
- lua_setfield(L, -2, "birthtime");
- if (S_ISREG(s->st_mode)) {
- type = "file";
- }
- else if (S_ISDIR(s->st_mode)) {
- type = "directory";
- }
- else if (S_ISLNK(s->st_mode)) {
- type = "link";
- }
- else if (S_ISFIFO(s->st_mode)) {
- type = "fifo";
- }
-#ifdef S_ISSOCK
- else if (S_ISSOCK(s->st_mode)) {
- type = "socket";
- }
-#endif
- else if (S_ISCHR(s->st_mode)) {
- type = "char";
- }
- else if (S_ISBLK(s->st_mode)) {
- type = "block";
- }
- if (type) {
- lua_pushstring(L, type);
- lua_setfield(L, -2, "type");
- }
-}
-
-static int luv_check_flags(lua_State* L, int index) {
- const char* string;
- if (lua_isnumber(L, index)) {
- return lua_tointeger(L, index);
- }
- else if (!lua_isstring(L, index)) {
- return luaL_argerror(L, index, "Expected string or integer for file open mode");
- }
- string = lua_tostring(L, index);
-
- if (strcmp(string, "r") == 0) return O_RDONLY;
-#ifdef O_SYNC
- if (strcmp(string, "rs") == 0 ||
- strcmp(string, "sr") == 0) return O_RDONLY | O_SYNC;
-#endif
- if (strcmp(string, "r+") == 0) return O_RDWR;
-#ifdef O_SYNC
- if (strcmp(string, "rs+") == 0 ||
- strcmp(string, "sr+") == 0) return O_RDWR | O_SYNC;
-#endif
- if (strcmp(string, "w") == 0) return O_TRUNC | O_CREAT | O_WRONLY;
- if (strcmp(string, "wx") == 0 ||
- strcmp(string, "xw") == 0) return O_TRUNC | O_CREAT | O_WRONLY | O_EXCL;
- if (strcmp(string, "w+") == 0) return O_TRUNC | O_CREAT | O_RDWR;
- if (strcmp(string, "wx+") == 0 ||
- strcmp(string, "xw+") == 0) return O_TRUNC | O_CREAT | O_RDWR | O_EXCL;
- if (strcmp(string, "a") == 0) return O_APPEND | O_CREAT | O_WRONLY;
- if (strcmp(string, "ax") == 0 ||
- strcmp(string, "xa") == 0) return O_APPEND | O_CREAT | O_WRONLY | O_EXCL;
- if (strcmp(string, "a+") == 0) return O_APPEND | O_CREAT | O_RDWR;
- if (strcmp(string, "ax+") == 0 ||
- strcmp(string, "xa+") == 0) return O_APPEND | O_CREAT | O_RDWR | O_EXCL;
-
- return luaL_error(L, "Unknown file open flag '%s'", string);
-}
-
-static int luv_check_amode(lua_State* L, int index) {
- size_t i;
- int mode;
- const char* string;
- if (lua_isnumber(L, index)) {
- return lua_tointeger(L, index);
- }
- else if (!lua_isstring(L, index)) {
- return luaL_argerror(L, index, "Expected string or integer for file access mode check");
- }
- string = lua_tostring(L, index);
- mode = 0;
- for (i = 0; i < strlen(string); ++i) {
- switch (string[i]) {
- case 'r': case 'R':
- mode |= R_OK;
- break;
- case 'w': case 'W':
- mode |= W_OK;
- break;
- case 'x': case 'X':
- mode |= X_OK;
- break;
- default:
- return luaL_argerror(L, index, "Unknown character in access mode string");
- }
- }
- return mode;
-}
-
-/* Processes a result and pushes the data onto the stack
- returns the number of items pushed */
-static int push_fs_result(lua_State* L, uv_fs_t* req) {
- luv_req_t* data = req->data;
-
- if (req->fs_type == UV_FS_ACCESS) {
- lua_pushboolean(L, req->result >= 0);
- return 1;
- }
-
- if (req->result < 0) {
- lua_pushnil(L);
- if (req->path) {
- lua_pushfstring(L, "%s: %s: %s", uv_err_name(req->result), uv_strerror(req->result), req->path);
- }
- else {
- lua_pushfstring(L, "%s: %s", uv_err_name(req->result), uv_strerror(req->result));
- }
- return 2;
- }
-
- switch (req->fs_type) {
- case UV_FS_CLOSE:
- case UV_FS_RENAME:
- case UV_FS_UNLINK:
- case UV_FS_RMDIR:
- case UV_FS_MKDIR:
- case UV_FS_FTRUNCATE:
- case UV_FS_FSYNC:
- case UV_FS_FDATASYNC:
- case UV_FS_LINK:
- case UV_FS_SYMLINK:
- case UV_FS_CHMOD:
- case UV_FS_FCHMOD:
- case UV_FS_CHOWN:
- case UV_FS_FCHOWN:
- case UV_FS_UTIME:
- case UV_FS_FUTIME:
- lua_pushboolean(L, 1);
- return 1;
-
- case UV_FS_OPEN:
- case UV_FS_SENDFILE:
- case UV_FS_WRITE:
- lua_pushinteger(L, req->result);
- return 1;
-
- case UV_FS_STAT:
- case UV_FS_LSTAT:
- case UV_FS_FSTAT:
- luv_push_stats_table(L, &req->statbuf);
- return 1;
-
- case UV_FS_MKDTEMP:
- lua_pushstring(L, req->path);
- return 1;
-
- case UV_FS_READLINK:
- case UV_FS_REALPATH:
- lua_pushstring(L, (char*)req->ptr);
- return 1;
-
- case UV_FS_READ:
- lua_pushlstring(L, data->data, req->result);
- return 1;
-
- case UV_FS_SCANDIR:
- // Expose the userdata for the request.
- lua_rawgeti(L, LUA_REGISTRYINDEX, data->req_ref);
- return 1;
-
- default:
- lua_pushnil(L);
- lua_pushfstring(L, "UNKNOWN FS TYPE %d\n", req->fs_type);
- return 2;
- }
-
-}
-
-static void luv_fs_cb(uv_fs_t* req) {
- lua_State* L = luv_state(req->loop);
-
- int nargs = push_fs_result(L, req);
- if (nargs == 2 && lua_isnil(L, -nargs)) {
- // If it was an error, convert to (err, value) format.
- lua_remove(L, -nargs);
- nargs--;
- }
- else {
- // Otherwise insert a nil in front to convert to (err, value) format.
- lua_pushnil(L);
- lua_insert(L, -nargs - 1);
- nargs++;
- }
- luv_fulfill_req(L, req->data, nargs);
- if (req->fs_type != UV_FS_SCANDIR) {
- luv_cleanup_req(L, req->data);
- req->data = NULL;
- uv_fs_req_cleanup(req);
- }
-}
-
-#define FS_CALL(func, req, ...) { \
- int ret, sync; \
- luv_req_t* data = req->data; \
- sync = data->callback_ref == LUA_NOREF; \
- ret = uv_fs_##func(luv_loop(L), req, __VA_ARGS__, \
- sync ? NULL : luv_fs_cb); \
- if (req->fs_type != UV_FS_ACCESS && ret < 0) { \
- lua_pushnil(L); \
- if (req->path) { \
- lua_pushfstring(L, "%s: %s: %s", uv_err_name(req->result), uv_strerror(req->result), req->path); \
- } \
- else { \
- lua_pushfstring(L, "%s: %s", uv_err_name(req->result), uv_strerror(req->result)); \
- } \
- lua_pushstring(L, uv_err_name(req->result)); \
- luv_cleanup_req(L, req->data); \
- req->data = NULL; \
- uv_fs_req_cleanup(req); \
- return 3; \
- } \
- if (sync) { \
- int nargs = push_fs_result(L, req); \
- if (req->fs_type != UV_FS_SCANDIR) { \
- luv_cleanup_req(L, req->data); \
- req->data = NULL; \
- uv_fs_req_cleanup(req); \
- } \
- return nargs; \
- } \
- lua_rawgeti(L, LUA_REGISTRYINDEX, data->req_ref); \
- return 1; \
-}
-
-static int luv_fs_close(lua_State* L) {
- uv_file file = luaL_checkinteger(L, 1);
- int ref = luv_check_continuation(L, 2);
- uv_fs_t* req = lua_newuserdata(L, sizeof(*req));
- req->data = luv_setup_req(L, ref);
- FS_CALL(close, req, file);
-}
-
-static int luv_fs_open(lua_State* L) {
- const char* path = luaL_checkstring(L, 1);
- int flags = luv_check_flags(L, 2);
- int mode = luaL_checkinteger(L, 3);
- int ref = luv_check_continuation(L, 4);
- uv_fs_t* req = lua_newuserdata(L, sizeof(*req));
- req->data = luv_setup_req(L, ref);
- FS_CALL(open, req, path, flags, mode);
-}
-
-static int luv_fs_read(lua_State* L) {
- uv_file file = luaL_checkinteger(L, 1);
- int64_t len = luaL_checkinteger(L, 2);
- int64_t offset = luaL_checkinteger(L, 3);
- uv_buf_t buf;
- int ref;
- uv_fs_t* req;
- char* data = malloc(len);
- if (!data) return luaL_error(L, "Failure to allocate buffer");
- buf = uv_buf_init(data, len);
- ref = luv_check_continuation(L, 4);
- req = lua_newuserdata(L, sizeof(*req));
- req->data = luv_setup_req(L, ref);
- // TODO: find out why we can't just use req->ptr for the base
- ((luv_req_t*)req->data)->data = buf.base;
- FS_CALL(read, req, file, &buf, 1, offset);
-}
-
-static int luv_fs_unlink(lua_State* L) {
- const char* path = luaL_checkstring(L, 1);
- int ref = luv_check_continuation(L, 2);
- uv_fs_t* req = lua_newuserdata(L, sizeof(*req));
- req->data = luv_setup_req(L, ref);
- FS_CALL(unlink, req, path);
-}
-
-static int luv_fs_write(lua_State* L) {
- uv_file file = luaL_checkinteger(L, 1);
- uv_buf_t buf;
- int64_t offset;
- int ref;
- uv_fs_t* req;
- size_t count;
- uv_buf_t *bufs = NULL;
-
- if (lua_istable(L, 2)) {
- bufs = luv_prep_bufs(L, 2, &count);
- buf.base = NULL;
- }
- else if (lua_isstring(L, 2)) {
- luv_check_buf(L, 2, &buf);
- count = 1;
- }
- else {
- return luaL_argerror(L, 2, "data must be string or table of strings");
- }
-
- offset = luaL_checkinteger(L, 3);
- ref = luv_check_continuation(L, 4);
- req = lua_newuserdata(L, sizeof(*req));
- req->data = luv_setup_req(L, ref);
- req->ptr = buf.base;
- ((luv_req_t*)req->data)->data = bufs;
- FS_CALL(write, req, file, bufs ? bufs : &buf, count, offset);
-}
-
-static int luv_fs_mkdir(lua_State* L) {
- const char* path = luaL_checkstring(L, 1);
- int mode = luaL_checkinteger(L, 2);
- int ref = luv_check_continuation(L, 3);
- uv_fs_t* req = lua_newuserdata(L, sizeof(*req));
- req->data = luv_setup_req(L, ref);
- FS_CALL(mkdir, req, path, mode);
-}
-
-static int luv_fs_mkdtemp(lua_State* L) {
- const char* tpl = luaL_checkstring(L, 1);
- int ref = luv_check_continuation(L, 2);
- uv_fs_t* req = lua_newuserdata(L, sizeof(*req));
- req->data = luv_setup_req(L, ref);
- FS_CALL(mkdtemp, req, tpl);
-}
-
-static int luv_fs_rmdir(lua_State* L) {
- const char* path = luaL_checkstring(L, 1);
- int ref = luv_check_continuation(L, 2);
- uv_fs_t* req = lua_newuserdata(L, sizeof(*req));
- req->data = luv_setup_req(L, ref);
- FS_CALL(rmdir, req, path);
-}
-
-static int luv_fs_scandir(lua_State* L) {
- const char* path = luaL_checkstring(L, 1);
- int flags = 0; // TODO: find out what these flags are.
- int ref = luv_check_continuation(L, 2);
- uv_fs_t* req = lua_newuserdata(L, sizeof(*req));
- req->data = luv_setup_req(L, ref);
- FS_CALL(scandir, req, path, flags);
-}
-
-static int luv_fs_scandir_next(lua_State* L) {
- uv_fs_t* req = luv_check_fs(L, 1);
- uv_dirent_t ent;
- int ret = uv_fs_scandir_next(req, &ent);
- const char* type;
- if (ret == UV_EOF) {
- luv_cleanup_req(L, req->data);
- req->data = NULL;
- uv_fs_req_cleanup(req);
- return 0;
- }
- if (ret < 0) return luv_error(L, ret);
- lua_pushstring(L, ent.name);
- switch (ent.type) {
- case UV_DIRENT_UNKNOWN: return 1;
- case UV_DIRENT_FILE: type = "file"; break;
- case UV_DIRENT_DIR: type = "directory"; break;
- case UV_DIRENT_LINK: type = "link"; break;
- case UV_DIRENT_FIFO: type = "fifo"; break;
- case UV_DIRENT_SOCKET: type = "socket"; break;
- case UV_DIRENT_CHAR: type = "char"; break;
- case UV_DIRENT_BLOCK: type = "block"; break;
- default: assert(0);
- }
- lua_pushstring(L, type);
- return 2;
-}
-
-static int luv_fs_stat(lua_State* L) {
- const char* path = luaL_checkstring(L, 1);
- int ref = luv_check_continuation(L, 2);
- uv_fs_t* req = lua_newuserdata(L, sizeof(*req));
- req->data = luv_setup_req(L, ref);
- FS_CALL(stat, req, path);
-}
-
-static int luv_fs_fstat(lua_State* L) {
- uv_file file = luaL_checkinteger(L, 1);
- int ref = luv_check_continuation(L, 2);
- uv_fs_t* req = lua_newuserdata(L, sizeof(*req));
- req->data = luv_setup_req(L, ref);
- FS_CALL(fstat, req, file);
-}
-
-static int luv_fs_lstat(lua_State* L) {
- const char* path = luaL_checkstring(L, 1);
- int ref = luv_check_continuation(L, 2);
- uv_fs_t* req = lua_newuserdata(L, sizeof(*req));
- req->data = luv_setup_req(L, ref);
- FS_CALL(lstat, req, path);
-}
-
-static int luv_fs_rename(lua_State* L) {
- const char* path = luaL_checkstring(L, 1);
- const char* new_path = luaL_checkstring(L, 2);
- int ref = luv_check_continuation(L, 3);
- uv_fs_t* req = lua_newuserdata(L, sizeof(*req));
- req->data = luv_setup_req(L, ref);
- FS_CALL(rename, req, path, new_path);
-}
-
-static int luv_fs_fsync(lua_State* L) {
- uv_file file = luaL_checkinteger(L, 1);
- int ref = luv_check_continuation(L, 2);
- uv_fs_t* req = lua_newuserdata(L, sizeof(*req));
- req->data = luv_setup_req(L, ref);
- FS_CALL(fsync, req, file);
-}
-
-static int luv_fs_fdatasync(lua_State* L) {
- uv_file file = luaL_checkinteger(L, 1);
- int ref = luv_check_continuation(L, 2);
- uv_fs_t* req = lua_newuserdata(L, sizeof(*req));
- req->data = luv_setup_req(L, ref);
- FS_CALL(fdatasync, req, file);
-}
-
-static int luv_fs_ftruncate(lua_State* L) {
- uv_file file = luaL_checkinteger(L, 1);
- int64_t offset = luaL_checkinteger(L, 2);
- int ref = luv_check_continuation(L, 3);
- uv_fs_t* req = lua_newuserdata(L, sizeof(*req));
- req->data = luv_setup_req(L, ref);
- FS_CALL(ftruncate, req, file, offset);
-}
-
-static int luv_fs_sendfile(lua_State* L) {
- uv_file out_fd = luaL_checkinteger(L, 1);
- uv_file in_fd = luaL_checkinteger(L, 2);
- int64_t in_offset = luaL_checkinteger(L, 3);
- size_t length = luaL_checkinteger(L, 4);
- int ref = luv_check_continuation(L, 5);
- uv_fs_t* req = lua_newuserdata(L, sizeof(*req));
- req->data = luv_setup_req(L, ref);
- FS_CALL(sendfile, req, out_fd, in_fd, in_offset, length);
-}
-
-static int luv_fs_access(lua_State* L) {
- const char* path = luaL_checkstring(L, 1);
- int amode = luv_check_amode(L, 2);
- int ref = luv_check_continuation(L, 3);
- uv_fs_t* req = lua_newuserdata(L, sizeof(*req));
- req->data = luv_setup_req(L, ref);
- FS_CALL(access, req, path, amode);
-}
-
-static int luv_fs_chmod(lua_State* L) {
- const char* path = luaL_checkstring(L, 1);
- int mode = luaL_checkinteger(L, 2);
- int ref = luv_check_continuation(L, 3);
- uv_fs_t* req = lua_newuserdata(L, sizeof(*req));
- req->data = luv_setup_req(L, ref);
- FS_CALL(chmod, req, path, mode);
-}
-
-static int luv_fs_fchmod(lua_State* L) {
- uv_file file = luaL_checkinteger(L, 1);
- int mode = luaL_checkinteger(L, 2);
- int ref = luv_check_continuation(L, 3);
- uv_fs_t* req = lua_newuserdata(L, sizeof(*req));
- req->data = luv_setup_req(L, ref);
- FS_CALL(fchmod, req, file, mode);
-}
-
-static int luv_fs_utime(lua_State* L) {
- const char* path = luaL_checkstring(L, 1);
- double atime = luaL_checknumber(L, 2);
- double mtime = luaL_checknumber(L, 3);
- int ref = luv_check_continuation(L, 4);
- uv_fs_t* req = lua_newuserdata(L, sizeof(*req));
- req->data = luv_setup_req(L, ref);
- FS_CALL(utime, req, path, atime, mtime);
-}
-
-static int luv_fs_futime(lua_State* L) {
- uv_file file = luaL_checkinteger(L, 1);
- double atime = luaL_checknumber(L, 2);
- double mtime = luaL_checknumber(L, 3);
- int ref = luv_check_continuation(L, 4);
- uv_fs_t* req = lua_newuserdata(L, sizeof(*req));
- req->data = luv_setup_req(L, ref);
- FS_CALL(futime, req, file, atime, mtime);
-}
-
-static int luv_fs_link(lua_State* L) {
- const char* path = luaL_checkstring(L, 1);
- const char* new_path = luaL_checkstring(L, 2);
- int ref = luv_check_continuation(L, 3);
- uv_fs_t* req = lua_newuserdata(L, sizeof(*req));
- req->data = luv_setup_req(L, ref);
- FS_CALL(link, req, path, new_path);
-}
-
-static int luv_fs_symlink(lua_State* L) {
- const char* path = luaL_checkstring(L, 1);
- const char* new_path = luaL_checkstring(L, 2);
- int flags = 0, ref;
- uv_fs_t* req;
- if (lua_type(L, 3) == LUA_TTABLE) {
- lua_getfield(L, 3, "dir");
- if (lua_toboolean(L, -1)) flags |= UV_FS_SYMLINK_DIR;
- lua_pop(L, 1);
- lua_getfield(L, 3, "junction");
- if (lua_toboolean(L, -1)) flags |= UV_FS_SYMLINK_JUNCTION;
- lua_pop(L, 1);
- }
- ref = luv_check_continuation(L, 4);
- req = lua_newuserdata(L, sizeof(*req));
- req->data = luv_setup_req(L, ref);
-
- FS_CALL(symlink, req, path, new_path, flags);
-}
-
-static int luv_fs_readlink(lua_State* L) {
- const char* path = luaL_checkstring(L, 1);
- int ref = luv_check_continuation(L, 2);
- uv_fs_t* req = lua_newuserdata(L, sizeof(*req));
- req->data = luv_setup_req(L, ref);
- FS_CALL(readlink, req, path);
-}
-
-static int luv_fs_realpath(lua_State* L) {
- const char* path = luaL_checkstring(L, 1);
- int ref = luv_check_continuation(L, 2);
- uv_fs_t* req = lua_newuserdata(L, sizeof(*req));
- req->data = luv_setup_req(L, ref);
- FS_CALL(realpath, req, path);
-}
-
-static int luv_fs_chown(lua_State* L) {
- const char* path = luaL_checkstring(L, 1);
- uv_uid_t uid = luaL_checkinteger(L, 2);
- uv_uid_t gid = luaL_checkinteger(L, 3);
- int ref = luv_check_continuation(L, 4);
- uv_fs_t* req = lua_newuserdata(L, sizeof(*req));
- req->data = luv_setup_req(L, ref);
- FS_CALL(chown, req, path, uid, gid);
-}
-
-static int luv_fs_fchown(lua_State* L) {
- uv_file file = luaL_checkinteger(L, 1);
- uv_uid_t uid = luaL_checkinteger(L, 2);
- uv_uid_t gid = luaL_checkinteger(L, 3);
- int ref = luv_check_continuation(L, 4);
- uv_fs_t* req = lua_newuserdata(L, sizeof(*req));
- req->data = luv_setup_req(L, ref);
- FS_CALL(fchown, req, file, uid, gid);
-}
diff --git a/3rdparty/luv/src/fs_event.c b/3rdparty/luv/src/fs_event.c
deleted file mode 100644
index 52bda788421..00000000000
--- a/3rdparty/luv/src/fs_event.c
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Copyright 2014 The Luvit Authors. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-#include "luv.h"
-
-static uv_fs_event_t* luv_check_fs_event(lua_State* L, int index) {
- uv_fs_event_t* handle = luv_checkudata(L, index, "uv_fs_event");
- luaL_argcheck(L, handle->type == UV_FS_EVENT && handle->data, index, "Expected uv_fs_event_t");
- return handle;
-}
-
-static int luv_new_fs_event(lua_State* L) {
- uv_fs_event_t* handle = luv_newuserdata(L, sizeof(*handle));
- int ret = uv_fs_event_init(luv_loop(L), handle);
- if (ret < 0) {
- lua_pop(L, 1);
- return luv_error(L, ret);
- }
- handle->data = luv_setup_handle(L);
- return 1;
-}
-
-static void luv_fs_event_cb(uv_fs_event_t* handle, const char* filename, int events, int status) {
- lua_State* L = luv_state(handle->loop);
-
- // err
- luv_status(L, status);
-
- // filename
- lua_pushstring(L, filename);
-
- // events
- lua_newtable(L);
- if (events & UV_RENAME) {
- lua_pushboolean(L, 1);
- lua_setfield(L, -2, "rename");
- }
- if (events & UV_CHANGE) {
- lua_pushboolean(L, 1);
- lua_setfield(L, -2, "change");
- }
-
- luv_call_callback(L, handle->data, LUV_FS_EVENT, 3);
-}
-
-static int luv_fs_event_start(lua_State* L) {
- uv_fs_event_t* handle = luv_check_fs_event(L, 1);
- const char* path = luaL_checkstring(L, 2);
- int flags = 0, ret;
- luaL_checktype(L, 3, LUA_TTABLE);
- lua_getfield(L, 3, "watch_entry");
- if (lua_toboolean(L, -1)) flags |= UV_FS_EVENT_WATCH_ENTRY;
- lua_pop(L, 1);
- lua_getfield(L, 3, "stat");
- if (lua_toboolean(L, -1)) flags |= UV_FS_EVENT_STAT;
- lua_pop(L, 1);
- lua_getfield(L, 3, "recursive");
- if (lua_toboolean(L, -1)) flags |= UV_FS_EVENT_RECURSIVE;
- lua_pop(L, 1);
- luv_check_callback(L, handle->data, LUV_FS_EVENT, 4);
- ret = uv_fs_event_start(handle, luv_fs_event_cb, path, flags);
- if (ret < 0) return luv_error(L, ret);
- lua_pushinteger(L, ret);
- return 1;
-}
-
-static int luv_fs_event_stop(lua_State* L) {
- uv_fs_event_t* handle = luv_check_fs_event(L, 1);
- int ret = uv_fs_event_stop(handle);
- if (ret < 0) return luv_error(L, ret);
- lua_pushinteger(L, ret);
- return 1;
-}
-
-static int luv_fs_event_getpath(lua_State* L) {
- uv_fs_event_t* handle = luv_check_fs_event(L, 1);
- size_t len = 2*PATH_MAX;
- char buf[2*PATH_MAX];
- int ret = uv_fs_event_getpath(handle, buf, &len);
- if (ret < 0) return luv_error(L, ret);
- lua_pushlstring(L, buf, len);
- return 1;
-}
diff --git a/3rdparty/luv/src/fs_poll.c b/3rdparty/luv/src/fs_poll.c
deleted file mode 100644
index 7ead32f322c..00000000000
--- a/3rdparty/luv/src/fs_poll.c
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Copyright 2014 The Luvit Authors. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-#include "luv.h"
-
-static uv_fs_poll_t* luv_check_fs_poll(lua_State* L, int index) {
- uv_fs_poll_t* handle = luv_checkudata(L, index, "uv_fs_poll");
- luaL_argcheck(L, handle->type == UV_FS_POLL && handle->data, index, "Expected uv_fs_poll_t");
- return handle;
-}
-
-static int luv_new_fs_poll(lua_State* L) {
- uv_fs_poll_t* handle = luv_newuserdata(L, sizeof(*handle));
- int ret = uv_fs_poll_init(luv_loop(L), handle);
- if (ret < 0) {
- lua_pop(L, 1);
- return luv_error(L, ret);
- }
- handle->data = luv_setup_handle(L);
- return 1;
-}
-
-static void luv_fs_poll_cb(uv_fs_poll_t* handle, int status, const uv_stat_t* prev, const uv_stat_t* curr) {
- lua_State* L = luv_state(handle->loop);
-
- // err
- luv_status(L, status);
-
- // prev
- if (prev) {
- luv_push_stats_table(L, prev);
- }
- else {
- lua_pushnil(L);
- }
-
- // curr
- if (curr) {
- luv_push_stats_table(L, curr);
- }
- else {
- lua_pushnil(L);
- }
-
- luv_call_callback(L, handle->data, LUV_FS_POLL, 3);
-}
-
-static int luv_fs_poll_start(lua_State* L) {
- uv_fs_poll_t* handle = luv_check_fs_poll(L, 1);
- const char* path = luaL_checkstring(L, 2);
- unsigned int interval = luaL_checkinteger(L, 3);
- int ret;
- luv_check_callback(L, handle->data, LUV_FS_POLL, 4);
- ret = uv_fs_poll_start(handle, luv_fs_poll_cb, path, interval);
- if (ret < 0) return luv_error(L, ret);
- lua_pushinteger(L, ret);
- return 1;
-}
-
-static int luv_fs_poll_stop(lua_State* L) {
- uv_fs_poll_t* handle = luv_check_fs_poll(L, 1);
- int ret = uv_fs_poll_stop(handle);
- if (ret < 0) return luv_error(L, ret);
- lua_pushinteger(L, ret);
- return 1;
-}
-
-static int luv_fs_poll_getpath(lua_State* L) {
- uv_fs_poll_t* handle = luv_check_fs_poll(L, 1);
- size_t len = 2*PATH_MAX;
- char buf[2*PATH_MAX];
- int ret = uv_fs_poll_getpath(handle, buf, &len);
- if (ret < 0) return luv_error(L, ret);
- lua_pushlstring(L, buf, len);
- return 1;
-}
diff --git a/3rdparty/luv/src/handle.c b/3rdparty/luv/src/handle.c
deleted file mode 100644
index 3efd2982641..00000000000
--- a/3rdparty/luv/src/handle.c
+++ /dev/null
@@ -1,173 +0,0 @@
-/*
- * Copyright 2014 The Luvit Authors. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-#include "luv.h"
-
-static void* luv_newuserdata(lua_State* L, size_t sz) {
- void* handle = malloc(sz);
- if (handle) {
- *(void**)lua_newuserdata(L, sizeof(void*)) = handle;
- }
- return handle;
-}
-
-static void* luv_checkudata(lua_State* L, int ud, const char* tname) {
- return *(void**) luaL_checkudata(L, ud, tname);
-}
-
-static uv_handle_t* luv_check_handle(lua_State* L, int index) {
- int isHandle;
- uv_handle_t* handle;
- if (!(handle = *(void**)lua_touserdata(L, index))) { goto fail; }
- lua_getfield(L, LUA_REGISTRYINDEX, "uv_handle");
- lua_getmetatable(L, index < 0 ? index - 1 : index);
- lua_rawget(L, -2);
- isHandle = lua_toboolean(L, -1);
- lua_pop(L, 2);
- if (isHandle) { return handle; }
- fail: luaL_argerror(L, index, "Expected uv_handle userdata");
- return NULL;
-}
-
-// Show the libuv type instead of generic "userdata"
-static int luv_handle_tostring(lua_State* L) {
- uv_handle_t* handle = luv_check_handle(L, 1);
- switch (handle->type) {
-#define XX(uc, lc) case UV_##uc: lua_pushfstring(L, "uv_"#lc"_t: %p", handle); break;
- UV_HANDLE_TYPE_MAP(XX)
-#undef XX
- default: lua_pushfstring(L, "uv_handle_t: %p", handle); break;
- }
- return 1;
-}
-
-static int luv_is_active(lua_State* L) {
- uv_handle_t* handle = luv_check_handle(L, 1);
- int ret = uv_is_active(handle);
- if (ret < 0) return luv_error(L, ret);
- lua_pushboolean(L, ret);
- return 1;
-}
-
-static int luv_is_closing(lua_State* L) {
- uv_handle_t* handle = luv_check_handle(L, 1);
- int ret = uv_is_closing(handle);
- if (ret < 0) return luv_error(L, ret);
- lua_pushboolean(L, ret);
- return 1;
-}
-
-static void luv_close_cb(uv_handle_t* handle) {
- lua_State* L = luv_state(handle->loop);
- luv_handle_t* data = handle->data;
- if (!data) return;
- luv_call_callback(L, data, LUV_CLOSED, 0);
- luv_cleanup_handle(L, data);
- handle->data = NULL;
-}
-
-static int luv_close(lua_State* L) {
- uv_handle_t* handle = luv_check_handle(L, 1);
- if (uv_is_closing(handle)) {
- luaL_error(L, "handle %p is already closing", handle);
- }
- if (!lua_isnoneornil(L, 2)) {
- luv_check_callback(L, handle->data, LUV_CLOSED, 2);
- }
- uv_close(handle, luv_close_cb);
- return 0;
-}
-
-static void luv_gc_cb(uv_handle_t* handle) {
- luv_close_cb(handle);
- free(handle);
-}
-
-static int luv_handle_gc(lua_State* L) {
- void** udata = lua_touserdata(L, 1);
- uv_handle_t* handle = *udata;
- if (handle != NULL) {
- if (!uv_is_closing(handle))
- uv_close(handle, luv_gc_cb);
- else
- free(*udata);
-
- *udata = NULL;
- }
-
- return 0;
-}
-
-static int luv_ref(lua_State* L) {
- uv_handle_t* handle = luv_check_handle(L, 1);
- uv_ref(handle);
- return 0;
-}
-
-static int luv_unref(lua_State* L) {
- uv_handle_t* handle = luv_check_handle(L, 1);
- uv_unref(handle);
- return 0;
-}
-
-static int luv_has_ref(lua_State* L) {
- uv_handle_t* handle = luv_check_handle(L, 1);
- int ret = uv_has_ref(handle);
- if (ret < 0) return luv_error(L, ret);
- lua_pushboolean(L, ret);
- return 1;
-}
-
-static int luv_send_buffer_size(lua_State* L) {
- uv_handle_t* handle = luv_check_handle(L, 1);
- int value;
- int ret;
- if (lua_isnoneornil(L, 2)) {
- value = 0;
- }
- else {
- value = luaL_checkinteger(L, 2);
- }
- ret = uv_send_buffer_size(handle, &value);
- if (ret < 0) return luv_error(L, ret);
- lua_pushinteger(L, ret);
- return 1;
-}
-
-static int luv_recv_buffer_size(lua_State* L) {
- uv_handle_t* handle = luv_check_handle(L, 1);
- int value;
- int ret;
- if (lua_isnoneornil(L, 2)) {
- value = 0;
- }
- else {
- value = luaL_checkinteger(L, 2);
- }
- ret = uv_recv_buffer_size(handle, &value);
- if (ret < 0) return luv_error(L, ret);
- lua_pushinteger(L, ret);
- return 1;
-}
-
-static int luv_fileno(lua_State* L) {
- uv_handle_t* handle = luv_check_handle(L, 1);
- uv_os_fd_t fd;
- int ret = uv_fileno(handle, &fd);
- if (ret < 0) return luv_error(L, ret);
- lua_pushinteger(L, (LUA_INTEGER)(ptrdiff_t)fd);
- return 1;
-}
diff --git a/3rdparty/luv/src/idle.c b/3rdparty/luv/src/idle.c
deleted file mode 100644
index 132cbe43c33..00000000000
--- a/3rdparty/luv/src/idle.c
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright 2014 The Luvit Authors. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-#include "luv.h"
-
-static uv_idle_t* luv_check_idle(lua_State* L, int index) {
- uv_idle_t* handle = luv_checkudata(L, index, "uv_idle");
- luaL_argcheck(L, handle->type == UV_IDLE && handle->data, index, "Expected uv_idle_t");
- return handle;
-}
-
-static int luv_new_idle(lua_State* L) {
- uv_idle_t* handle = luv_newuserdata(L, sizeof(*handle));
- int ret = uv_idle_init(luv_loop(L), handle);
- if (ret < 0) {
- lua_pop(L, 1);
- return luv_error(L, ret);
- }
- handle->data = luv_setup_handle(L);
- return 1;
-}
-
-static void luv_idle_cb(uv_idle_t* handle) {
- lua_State* L = luv_state(handle->loop);
- luv_handle_t* data = handle->data;
- luv_call_callback(L, data, LUV_IDLE, 0);
-}
-
-static int luv_idle_start(lua_State* L) {
- uv_idle_t* handle = luv_check_idle(L, 1);
- int ret;
- luv_check_callback(L, handle->data, LUV_IDLE, 2);
- ret = uv_idle_start(handle, luv_idle_cb);
- if (ret < 0) return luv_error(L, ret);
- lua_pushinteger(L, ret);
- return 1;
-}
-
-static int luv_idle_stop(lua_State* L) {
- uv_idle_t* handle = luv_check_idle(L, 1);
- int ret = uv_idle_stop(handle);
- if (ret < 0) return luv_error(L, ret);
- lua_pushinteger(L, ret);
- return 1;
-}
-
diff --git a/3rdparty/luv/src/lhandle.c b/3rdparty/luv/src/lhandle.c
deleted file mode 100644
index c8cf294504e..00000000000
--- a/3rdparty/luv/src/lhandle.c
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * Copyright 2014 The Luvit Authors. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-#include "lhandle.h"
-
-static luv_handle_t* luv_setup_handle(lua_State* L) {
- luv_handle_t* data;
- const uv_handle_t* handle = *(void**)lua_touserdata(L, -1);
- luaL_checktype(L, -1, LUA_TUSERDATA);
-
- data = malloc(sizeof(*data));
- if (!data) luaL_error(L, "Can't allocate luv handle");
-
- #define XX(uc, lc) case UV_##uc: \
- luaL_getmetatable(L, "uv_"#lc); \
- break;
- switch (handle->type) {
- UV_HANDLE_TYPE_MAP(XX)
- default:
- luaL_error(L, "Unknown handle type");
- return NULL;
- }
- #undef XX
-
- lua_setmetatable(L, -2);
-
- lua_pushvalue(L, -1);
-
- data->ref = luaL_ref(L, LUA_REGISTRYINDEX);
- data->callbacks[0] = LUA_NOREF;
- data->callbacks[1] = LUA_NOREF;
- data->extra = NULL;
- return data;
-}
-
-static void luv_check_callback(lua_State* L, luv_handle_t* data, luv_callback_id id, int index) {
- luaL_checktype(L, index, LUA_TFUNCTION);
- luaL_unref(L, LUA_REGISTRYINDEX, data->callbacks[id]);
- lua_pushvalue(L, index);
- data->callbacks[id] = luaL_ref(L, LUA_REGISTRYINDEX);
-}
-
-static int traceback (lua_State *L) {
- if (!lua_isstring(L, 1)) /* 'message' not a string? */
- return 1; /* keep it intact */
- lua_pushglobaltable(L);
- lua_getfield(L, -1, "debug");
- lua_remove(L, -2);
- if (!lua_istable(L, -1)) {
- lua_pop(L, 1);
- return 1;
- }
- lua_getfield(L, -1, "traceback");
- if (!lua_isfunction(L, -1)) {
- lua_pop(L, 2);
- return 1;
- }
- lua_pushvalue(L, 1); /* pass error message */
- lua_pushinteger(L, 2); /* skip this function and traceback */
- lua_call(L, 2, 1); /* call debug.traceback */
- return 1;
-}
-
-static void luv_call_callback(lua_State* L, luv_handle_t* data, luv_callback_id id, int nargs) {
- int ref = data->callbacks[id];
- if (ref == LUA_NOREF) {
- lua_pop(L, nargs);
- }
- else {
- // Get the traceback function in case of error
- lua_pushcfunction(L, traceback);
- // And insert it before the args if there are any.
- if (nargs) {
- lua_insert(L, -1 - nargs);
- }
- // Get the callback
- lua_rawgeti(L, LUA_REGISTRYINDEX, ref);
- // And insert it before the args if there are any.
- if (nargs) {
- lua_insert(L, -1 - nargs);
- }
-
- if (lua_pcall(L, nargs, 0, -2 - nargs)) {
- fprintf(stderr, "Uncaught Error: %s\n", lua_tostring(L, -1));
- exit(-1);
- }
- // Remove the traceback function
- lua_pop(L, 1);
- }
-}
-
-static void luv_cleanup_handle(lua_State* L, luv_handle_t* data) {
- luaL_unref(L, LUA_REGISTRYINDEX, data->ref);
- luaL_unref(L, LUA_REGISTRYINDEX, data->callbacks[0]);
- luaL_unref(L, LUA_REGISTRYINDEX, data->callbacks[1]);
- if (data->extra)
- free(data->extra);
- free(data);
-}
-
-static void luv_find_handle(lua_State* L, luv_handle_t* data) {
- lua_rawgeti(L, LUA_REGISTRYINDEX, data->ref);
-}
diff --git a/3rdparty/luv/src/lhandle.h b/3rdparty/luv/src/lhandle.h
deleted file mode 100644
index f6c0733719b..00000000000
--- a/3rdparty/luv/src/lhandle.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Copyright 2014 The Luvit Authors. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-#ifndef LUV_LHANDLE_H
-#define LUV_LHANDLE_H
-
-#include "luv.h"
-
-/* There are two slots for holding callbacks. One is for the CLOSED event.
- The other slot is for all others since they never conflict in practice.
-*/
-#define luv_callback_id int
-#define LUV_CLOSED 0
-#define LUV_TIMEOUT 1
-#define LUV_PREPARE 1
-#define LUV_IDLE 1
-#define LUV_CHECK 1
-#define LUV_ASYNC 1
-#define LUV_POLL 1
-#define LUV_SIGNAL 1
-#define LUV_EXIT 1
-#define LUV_CONNECTION 1
-#define LUV_READ 1
-#define LUV_RECV 1
-#define LUV_FS_EVENT 1
-#define LUV_FS_POLL 1
-
-/* Ref for userdata and event callbacks */
-typedef struct {
- int ref;
- int callbacks[2];
- void* extra;
-} luv_handle_t;
-
-/* Setup the handle at the top of the stack */
-static luv_handle_t* luv_setup_handle(lua_State* L);
-
-/* Store a lua callback in a luv_handle for future callbacks.
- Either replace an existing callback by id or append a new one at the end.
-*/
-static void luv_check_callback(lua_State* L, luv_handle_t* data, luv_callback_id id, int index);
-
-/* Lookup a function and call it with nargs
- If there is no such function, pop the args.
-*/
-static void luv_call_callback(lua_State* L, luv_handle_t* data, luv_callback_id id, int nargs);
-
-/* Push a userdata on the stack from a handle */
-static void luv_find_handle(lua_State* L, luv_handle_t* data);
-
-/* Recursivly free the luv_handle and all event handlers */
-static void luv_cleanup_handle(lua_State* L, luv_handle_t* data);
-
-#endif
diff --git a/3rdparty/luv/src/loop.c b/3rdparty/luv/src/loop.c
deleted file mode 100644
index 33c49d3f64c..00000000000
--- a/3rdparty/luv/src/loop.c
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Copyright 2014 The Luvit Authors. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-#include "luv.h"
-
-static int luv_loop_close(lua_State* L) {
- int ret = uv_loop_close(luv_loop(L));
- if (ret < 0) return luv_error(L, ret);
- lua_pushinteger(L, ret);
- return 1;
-}
-
-// These are the same order as uv_run_mode which also starts at 0
-static const char *const luv_runmodes[] = {
- "default", "once", "nowait", NULL
-};
-
-static int luv_run(lua_State* L) {
- int mode = luaL_checkoption(L, 1, "default", luv_runmodes);
- int ret = uv_run(luv_loop(L), mode);
- if (ret < 0) return luv_error(L, ret);
- lua_pushboolean(L, ret);
- return 1;
-}
-
-static int luv_loop_alive(lua_State* L) {
- int ret = uv_loop_alive(luv_loop(L));
- if (ret < 0) return luv_error(L, ret);
- lua_pushboolean(L, ret);
- return 1;
-}
-
-static int luv_stop(lua_State* L) {
- uv_stop(luv_loop(L));
- return 0;
-}
-
-static int luv_backend_fd(lua_State* L) {
- int ret = uv_backend_fd(luv_loop(L));
- if (ret < 0) return luv_error(L, ret);
- lua_pushinteger(L, ret);
- return 1;
-}
-
-static int luv_backend_timeout(lua_State* L) {
- int ret = uv_backend_timeout(luv_loop(L));
- lua_pushinteger(L, ret);
- return 1;
-}
-
-static int luv_now(lua_State* L) {
- uint64_t now = uv_now(luv_loop(L));
- lua_pushinteger(L, now);
- return 1;
-}
-
-static int luv_update_time(lua_State* L) {
- uv_update_time(luv_loop(L));
- return 0;
-}
-
-static void luv_walk_cb(uv_handle_t* handle, void* arg) {
- lua_State* L = arg;
- luv_handle_t* data = handle->data;
-
- // Sanity check
- // Most invalid values are large and refs are small, 0x1000000 is arbitrary.
- assert(data && data->ref < 0x1000000);
-
- lua_pushvalue(L, 1); // Copy the function
- luv_find_handle(L, data); // Get the userdata
- lua_call(L, 1, 0); // Call the function
-}
-
-static int luv_walk(lua_State* L) {
- luaL_checktype(L, 1, LUA_TFUNCTION);
- uv_walk(luv_loop(L), luv_walk_cb, L);
- return 0;
-}
diff --git a/3rdparty/luv/src/lreq.c b/3rdparty/luv/src/lreq.c
deleted file mode 100644
index 38ed6a77eb0..00000000000
--- a/3rdparty/luv/src/lreq.c
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Copyright 2014 The Luvit Authors. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-#include "lreq.h"
-
-
-static int luv_check_continuation(lua_State* L, int index) {
- if (lua_isnoneornil(L, index)) return LUA_NOREF;
- luaL_checktype(L, index, LUA_TFUNCTION);
- lua_pushvalue(L, index);
- return luaL_ref(L, LUA_REGISTRYINDEX);
-}
-
-// Store a lua callback in a luv_req for the continuation.
-// The uv_req_t is assumed to be at the top of the stack
-static luv_req_t* luv_setup_req(lua_State* L, int callback_ref) {
- luv_req_t* data;
-
- luaL_checktype(L, -1, LUA_TUSERDATA);
-
- data = malloc(sizeof(*data));
- if (!data) luaL_error(L, "Problem allocating luv request");
-
- luaL_getmetatable(L, "uv_req");
- lua_setmetatable(L, -2);
-
- lua_pushvalue(L, -1);
- data->req_ref = luaL_ref(L, LUA_REGISTRYINDEX);
- data->callback_ref = callback_ref;
- data->data_ref = LUA_NOREF;
- data->data = NULL;
-
- return data;
-}
-
-
-static void luv_fulfill_req(lua_State* L, luv_req_t* data, int nargs) {
- if (data->callback_ref == LUA_NOREF) {
- lua_pop(L, nargs);
- }
- else {
- // Get the callback
- lua_rawgeti(L, LUA_REGISTRYINDEX, data->callback_ref);
- // And insert it before the args if there are any.
- if (nargs) {
- lua_insert(L, -1 - nargs);
- }
- lua_call(L, nargs, 0);
- }
-}
-
-static void luv_cleanup_req(lua_State* L, luv_req_t* data) {
- luaL_unref(L, LUA_REGISTRYINDEX, data->req_ref);
- luaL_unref(L, LUA_REGISTRYINDEX, data->callback_ref);
- luaL_unref(L, LUA_REGISTRYINDEX, data->data_ref);
- free(data->data);
- free(data);
-}
diff --git a/3rdparty/luv/src/lreq.h b/3rdparty/luv/src/lreq.h
deleted file mode 100644
index a8b147e057b..00000000000
--- a/3rdparty/luv/src/lreq.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright 2014 The Luvit Authors. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-#ifndef LUV_LREQ_H
-#define LUV_LREQ_H
-
-#include "luv.h"
-
-typedef struct {
- int req_ref; /* ref for uv_req_t's userdata */
- int callback_ref; /* ref for callback */
- int data_ref; /* ref for write data */
- void* data; /* extra data */
-} luv_req_t;
-
-/* Used in the top of a setup function to check the arg
- and ref the callback to an integer.
-*/
-static int luv_check_continuation(lua_State* L, int index);
-
-/* setup a luv_req_t. The userdata is assumed to be at the
- top of the stack.
-*/
-static luv_req_t* luv_setup_req(lua_State* L, int ref);
-
-static void luv_fulfill_req(lua_State* L, luv_req_t* data, int nargs);
-
-static void luv_cleanup_req(lua_State* L, luv_req_t* data);
-
-#endif
diff --git a/3rdparty/luv/src/lthreadpool.h b/3rdparty/luv/src/lthreadpool.h
deleted file mode 100644
index 0994746bc52..00000000000
--- a/3rdparty/luv/src/lthreadpool.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
-* Copyright 2014 The Luvit Authors. All Rights Reserved.
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*
-*/
-#ifndef LUV_LTHREADPOOL_H
-#define LUV_LTHREADPOOL_H
-
-#include "luv.h"
-
-#define LUV_THREAD_MAXNUM_ARG 9
-
-typedef struct {
- /* only support LUA_TNIL, LUA_TBOOLEAN, LUA_TLIGHTUSERDATA, LUA_TNUMBER, LUA_TSTRING*/
- int type;
- union
- {
- lua_Number num;
- int boolean;
- void* userdata;
- struct {
- const char* base;
- size_t len;
- } str;
- } val;
-} luv_val_t;
-
-typedef struct {
- int argc;
- luv_val_t argv[LUV_THREAD_MAXNUM_ARG];
-} luv_thread_arg_t;
-
-static int luv_thread_arg_set(lua_State* L, luv_thread_arg_t* args, int idx, int top, int flag);
-static int luv_thread_arg_push(lua_State* L, const luv_thread_arg_t* args);
-static void luv_thread_arg_clear(luv_thread_arg_t* args);
-
-#endif //LUV_LTHREADPOOL_H
diff --git a/3rdparty/luv/src/luv.c b/3rdparty/luv/src/luv.c
deleted file mode 100644
index 7b552d68d53..00000000000
--- a/3rdparty/luv/src/luv.c
+++ /dev/null
@@ -1,519 +0,0 @@
-/*
- * Copyright 2014 The Luvit Authors. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-#include "luv.h"
-#include "util.c"
-#include "lhandle.c"
-#include "lreq.c"
-#include "loop.c"
-#include "req.c"
-#include "handle.c"
-#include "timer.c"
-#include "prepare.c"
-#include "check.c"
-#include "idle.c"
-#include "async.c"
-#include "poll.c"
-#include "signal.c"
-#include "process.c"
-#include "stream.c"
-#include "tcp.c"
-#include "pipe.c"
-#include "tty.c"
-#include "udp.c"
-#include "fs_event.c"
-#include "fs_poll.c"
-#include "fs.c"
-#include "dns.c"
-#include "thread.c"
-#include "work.c"
-#include "misc.c"
-#include "constants.c"
-
-static const luaL_Reg luv_functions[] = {
- // loop.c
- {"loop_close", luv_loop_close},
- {"run", luv_run},
- {"loop_alive", luv_loop_alive},
- {"stop", luv_stop},
- {"backend_fd", luv_backend_fd},
- {"backend_timeout", luv_backend_timeout},
- {"now", luv_now},
- {"update_time", luv_update_time},
- {"walk", luv_walk},
-
- // req.c
- {"cancel", luv_cancel},
-
- // handle.c
- {"is_active", luv_is_active},
- {"is_closing", luv_is_closing},
- {"close", luv_close},
- {"ref", luv_ref},
- {"unref", luv_unref},
- {"has_ref", luv_has_ref},
- {"send_buffer_size", luv_send_buffer_size},
- {"recv_buffer_size", luv_recv_buffer_size},
- {"fileno", luv_fileno},
-
- // timer.c
- {"new_timer", luv_new_timer},
- {"timer_start", luv_timer_start},
- {"timer_stop", luv_timer_stop},
- {"timer_again", luv_timer_again},
- {"timer_set_repeat", luv_timer_set_repeat},
- {"timer_get_repeat", luv_timer_get_repeat},
-
- // prepare.c
- {"new_prepare", luv_new_prepare},
- {"prepare_start", luv_prepare_start},
- {"prepare_stop", luv_prepare_stop},
-
- // check.c
- {"new_check", luv_new_check},
- {"check_start", luv_check_start},
- {"check_stop", luv_check_stop},
-
- // idle.c
- {"new_idle", luv_new_idle},
- {"idle_start", luv_idle_start},
- {"idle_stop", luv_idle_stop},
-
- // async.c
- {"new_async", luv_new_async},
- {"async_send", luv_async_send},
-
- // poll.c
- {"new_poll", luv_new_poll},
- {"new_socket_poll", luv_new_socket_poll},
- {"poll_start", luv_poll_start},
- {"poll_stop", luv_poll_stop},
-
- // signal.c
- {"new_signal", luv_new_signal},
- {"signal_start", luv_signal_start},
- {"signal_stop", luv_signal_stop},
-
- // process.c
- {"disable_stdio_inheritance", luv_disable_stdio_inheritance},
- {"spawn", luv_spawn},
- {"process_kill", luv_process_kill},
- {"kill", luv_kill},
-
- // stream.c
- {"shutdown", luv_shutdown},
- {"listen", luv_listen},
- {"accept", luv_accept},
- {"read_start", luv_read_start},
- {"read_stop", luv_read_stop},
- {"write", luv_write},
- {"write2", luv_write2},
- {"try_write", luv_try_write},
- {"is_readable", luv_is_readable},
- {"is_writable", luv_is_writable},
- {"stream_set_blocking", luv_stream_set_blocking},
-
- // tcp.c
- {"new_tcp", luv_new_tcp},
- {"tcp_open", luv_tcp_open},
- {"tcp_nodelay", luv_tcp_nodelay},
- {"tcp_keepalive", luv_tcp_keepalive},
- {"tcp_simultaneous_accepts", luv_tcp_simultaneous_accepts},
- {"tcp_bind", luv_tcp_bind},
- {"tcp_getpeername", luv_tcp_getpeername},
- {"tcp_getsockname", luv_tcp_getsockname},
- {"tcp_connect", luv_tcp_connect},
- {"tcp_write_queue_size", luv_write_queue_size},
-
- // pipe.c
- {"new_pipe", luv_new_pipe},
- {"pipe_open", luv_pipe_open},
- {"pipe_bind", luv_pipe_bind},
- {"pipe_connect", luv_pipe_connect},
- {"pipe_getsockname", luv_pipe_getsockname},
- {"pipe_getpeername", luv_pipe_getpeername},
- {"pipe_pending_instances", luv_pipe_pending_instances},
- {"pipe_pending_count", luv_pipe_pending_count},
- {"pipe_pending_type", luv_pipe_pending_type},
-
- // tty.c
- {"new_tty", luv_new_tty},
- {"tty_set_mode", luv_tty_set_mode},
- {"tty_reset_mode", luv_tty_reset_mode},
- {"tty_get_winsize", luv_tty_get_winsize},
-
- // udp.c
- {"new_udp", luv_new_udp},
- {"udp_open", luv_udp_open},
- {"udp_bind", luv_udp_bind},
- {"udp_getsockname", luv_udp_getsockname},
- {"udp_set_membership", luv_udp_set_membership},
- {"udp_set_multicast_loop", luv_udp_set_multicast_loop},
- {"udp_set_multicast_ttl", luv_udp_set_multicast_ttl},
- {"udp_set_multicast_interface", luv_udp_set_multicast_interface},
- {"udp_set_broadcast", luv_udp_set_broadcast},
- {"udp_set_ttl", luv_udp_set_ttl},
- {"udp_send", luv_udp_send},
- {"udp_try_send", luv_udp_try_send},
- {"udp_recv_start", luv_udp_recv_start},
- {"udp_recv_stop", luv_udp_recv_stop},
-
- // fs_event.c
- {"new_fs_event", luv_new_fs_event},
- {"fs_event_start", luv_fs_event_start},
- {"fs_event_stop", luv_fs_event_stop},
- {"fs_event_getpath", luv_fs_event_getpath},
-
- // fs_poll.c
- {"new_fs_poll", luv_new_fs_poll},
- {"fs_poll_start", luv_fs_poll_start},
- {"fs_poll_stop", luv_fs_poll_stop},
- {"fs_poll_getpath", luv_fs_poll_getpath},
-
- // fs.c
- {"fs_close", luv_fs_close},
- {"fs_open", luv_fs_open},
- {"fs_read", luv_fs_read},
- {"fs_unlink", luv_fs_unlink},
- {"fs_write", luv_fs_write},
- {"fs_mkdir", luv_fs_mkdir},
- {"fs_mkdtemp", luv_fs_mkdtemp},
- {"fs_rmdir", luv_fs_rmdir},
- {"fs_scandir", luv_fs_scandir},
- {"fs_scandir_next", luv_fs_scandir_next},
- {"fs_stat", luv_fs_stat},
- {"fs_fstat", luv_fs_fstat},
- {"fs_lstat", luv_fs_lstat},
- {"fs_rename", luv_fs_rename},
- {"fs_fsync", luv_fs_fsync},
- {"fs_fdatasync", luv_fs_fdatasync},
- {"fs_ftruncate", luv_fs_ftruncate},
- {"fs_sendfile", luv_fs_sendfile},
- {"fs_access", luv_fs_access},
- {"fs_chmod", luv_fs_chmod},
- {"fs_fchmod", luv_fs_fchmod},
- {"fs_utime", luv_fs_utime},
- {"fs_futime", luv_fs_futime},
- {"fs_link", luv_fs_link},
- {"fs_symlink", luv_fs_symlink},
- {"fs_readlink", luv_fs_readlink},
- {"fs_realpath", luv_fs_realpath},
- {"fs_chown", luv_fs_chown},
- {"fs_fchown", luv_fs_fchown},
-
- // dns.c
- {"getaddrinfo", luv_getaddrinfo},
- {"getnameinfo", luv_getnameinfo},
-
- // misc.c
- {"chdir", luv_chdir},
- {"os_homedir", luv_os_homedir},
- {"cpu_info", luv_cpu_info},
- {"cwd", luv_cwd},
- {"exepath", luv_exepath},
- {"get_process_title", luv_get_process_title},
- {"get_total_memory", luv_get_total_memory},
- {"get_free_memory", luv_get_free_memory},
- {"getpid", luv_getpid},
-#ifndef _WIN32
- {"getuid", luv_getuid},
- {"setuid", luv_setuid},
- {"getgid", luv_getgid},
- {"setgid", luv_setgid},
-#endif
- {"getrusage", luv_getrusage},
- {"guess_handle", luv_guess_handle},
- {"hrtime", luv_hrtime},
- {"interface_addresses", luv_interface_addresses},
- {"loadavg", luv_loadavg},
- {"resident_set_memory", luv_resident_set_memory},
- {"set_process_title", luv_set_process_title},
- {"uptime", luv_uptime},
- {"version", luv_version},
- {"version_string", luv_version_string},
-
- // thread.c
- {"new_thread", luv_new_thread},
- {"thread_equal", luv_thread_equal},
- {"thread_self", luv_thread_self},
- {"thread_join", luv_thread_join},
- {"sleep", luv_thread_sleep},
-
- // work.c
- {"new_work", luv_new_work},
- {"queue_work", luv_queue_work},
-
- {NULL, NULL}
-};
-
-static const luaL_Reg luv_handle_methods[] = {
- // handle.c
- {"is_active", luv_is_active},
- {"is_closing", luv_is_closing},
- {"close", luv_close},
- {"ref", luv_ref},
- {"unref", luv_unref},
- {"has_ref", luv_has_ref},
- {"send_buffer_size", luv_send_buffer_size},
- {"recv_buffer_size", luv_recv_buffer_size},
- {"fileno", luv_fileno},
- {NULL, NULL}
-};
-
-static const luaL_Reg luv_async_methods[] = {
- {"send", luv_async_send},
- {NULL, NULL}
-};
-
-static const luaL_Reg luv_check_methods[] = {
- {"start", luv_check_start},
- {"stop", luv_check_stop},
- {NULL, NULL}
-};
-
-static const luaL_Reg luv_fs_event_methods[] = {
- {"start", luv_fs_event_start},
- {"stop", luv_fs_event_stop},
- {"getpath", luv_fs_event_getpath},
- {NULL, NULL}
-};
-
-static const luaL_Reg luv_fs_poll_methods[] = {
- {"start", luv_fs_poll_start},
- {"stop", luv_fs_poll_stop},
- {"getpath", luv_fs_poll_getpath},
- {NULL, NULL}
-};
-
-static const luaL_Reg luv_idle_methods[] = {
- {"start", luv_idle_start},
- {"stop", luv_idle_stop},
- {NULL, NULL}
-};
-
-static const luaL_Reg luv_stream_methods[] = {
- {"shutdown", luv_shutdown},
- {"listen", luv_listen},
- {"accept", luv_accept},
- {"read_start", luv_read_start},
- {"read_stop", luv_read_stop},
- {"write", luv_write},
- {"write2", luv_write2},
- {"try_write", luv_try_write},
- {"is_readable", luv_is_readable},
- {"is_writable", luv_is_writable},
- {"set_blocking", luv_stream_set_blocking},
- {NULL, NULL}
-};
-
-static const luaL_Reg luv_pipe_methods[] = {
- {"open", luv_pipe_open},
- {"bind", luv_pipe_bind},
- {"connect", luv_pipe_connect},
- {"getsockname", luv_pipe_getsockname},
- {"getpeername", luv_pipe_getpeername},
- {"pending_instances", luv_pipe_pending_instances},
- {"pending_count", luv_pipe_pending_count},
- {"pending_type", luv_pipe_pending_type},
- {NULL, NULL}
-};
-
-static const luaL_Reg luv_poll_methods[] = {
- {"start", luv_poll_start},
- {"stop", luv_poll_stop},
- {NULL, NULL}
-};
-
-static const luaL_Reg luv_prepare_methods[] = {
- {"start", luv_prepare_start},
- {"stop", luv_prepare_stop},
- {NULL, NULL}
-};
-
-static const luaL_Reg luv_process_methods[] = {
- {"kill", luv_process_kill},
- {NULL, NULL}
-};
-
-static const luaL_Reg luv_tcp_methods[] = {
- {"open", luv_tcp_open},
- {"nodelay", luv_tcp_nodelay},
- {"keepalive", luv_tcp_keepalive},
- {"simultaneous_accepts", luv_tcp_simultaneous_accepts},
- {"bind", luv_tcp_bind},
- {"getpeername", luv_tcp_getpeername},
- {"getsockname", luv_tcp_getsockname},
- {"connect", luv_tcp_connect},
- {"write_queue_size", luv_write_queue_size},
- {NULL, NULL}
-};
-
-static const luaL_Reg luv_timer_methods[] = {
- {"start", luv_timer_start},
- {"stop", luv_timer_stop},
- {"again", luv_timer_again},
- {"set_repeat", luv_timer_set_repeat},
- {"get_repeat", luv_timer_get_repeat},
- {NULL, NULL}
-};
-
-static const luaL_Reg luv_tty_methods[] = {
- {"set_mode", luv_tty_set_mode},
- {"get_winsize", luv_tty_get_winsize},
- {NULL, NULL}
-};
-
-static const luaL_Reg luv_udp_methods[] = {
- {"open", luv_udp_open},
- {"bind", luv_udp_bind},
- {"bindgetsockname", luv_udp_getsockname},
- {"set_membership", luv_udp_set_membership},
- {"set_multicast_loop", luv_udp_set_multicast_loop},
- {"set_multicast_ttl", luv_udp_set_multicast_ttl},
- {"set_multicast_interface", luv_udp_set_multicast_interface},
- {"set_broadcast", luv_udp_set_broadcast},
- {"set_ttl", luv_udp_set_ttl},
- {"send", luv_udp_send},
- {"try_send", luv_udp_try_send},
- {"recv_start", luv_udp_recv_start},
- {"recv_stop", luv_udp_recv_stop},
- {NULL, NULL}
-};
-
-static const luaL_Reg luv_signal_methods[] = {
- {"start", luv_signal_start},
- {"stop", luv_signal_stop},
- {NULL, NULL}
-};
-
-static void luv_handle_init(lua_State* L) {
-
- lua_newtable(L);
-#define XX(uc, lc) \
- luaL_newmetatable (L, "uv_"#lc); \
- lua_pushcfunction(L, luv_handle_tostring); \
- lua_setfield(L, -2, "__tostring"); \
- lua_pushcfunction(L, luv_handle_gc); \
- lua_setfield(L, -2, "__gc"); \
- luaL_newlib(L, luv_##lc##_methods); \
- luaL_setfuncs(L, luv_handle_methods, 0); \
- lua_setfield(L, -2, "__index"); \
- lua_pushboolean(L, 1); \
- lua_rawset(L, -3);
-
- UV_HANDLE_TYPE_MAP(XX)
-#undef XX
- lua_setfield(L, LUA_REGISTRYINDEX, "uv_handle");
-
- lua_newtable(L);
-
- luaL_getmetatable(L, "uv_pipe");
- lua_getfield(L, -1, "__index");
- luaL_setfuncs(L, luv_stream_methods, 0);
- lua_pop(L, 1);
- lua_pushboolean(L, 1);
- lua_rawset(L, -3);
-
- luaL_getmetatable(L, "uv_tcp");
- lua_getfield(L, -1, "__index");
- luaL_setfuncs(L, luv_stream_methods, 0);
- lua_pop(L, 1);
- lua_pushboolean(L, 1);
- lua_rawset(L, -3);
-
- luaL_getmetatable(L, "uv_tty");
- lua_getfield(L, -1, "__index");
- luaL_setfuncs(L, luv_stream_methods, 0);
- lua_pop(L, 1);
- lua_pushboolean(L, 1);
- lua_rawset(L, -3);
-
- lua_setfield(L, LUA_REGISTRYINDEX, "uv_stream");
-}
-
-LUALIB_API lua_State* luv_state(uv_loop_t* loop) {
- return loop->data;
-}
-
-// TODO: find out if storing this somehow in an upvalue is faster
-LUALIB_API uv_loop_t* luv_loop(lua_State* L) {
- uv_loop_t* loop;
- lua_pushstring(L, "uv_loop");
- lua_rawget(L, LUA_REGISTRYINDEX);
- loop = lua_touserdata(L, -1);
- lua_pop(L, 1);
- return loop;
-}
-
-static void walk_cb(uv_handle_t *handle, void *arg)
-{
- (void)arg;
- if (!uv_is_closing(handle)) {
- uv_close(handle, luv_close_cb);
- }
-}
-
-static int loop_gc(lua_State *L) {
- uv_loop_t* loop = luv_loop(L);
- // Call uv_close on every active handle
- uv_walk(loop, walk_cb, NULL);
- // Run the event loop until all handles are successfully closed
- while (uv_loop_close(loop)) {
- uv_run(loop, UV_RUN_DEFAULT);
- }
- return 0;
-}
-
-LUALIB_API int luaopen_luv (lua_State *L) {
-
- uv_loop_t* loop;
- int ret;
-
- // Setup the uv_loop meta table for a proper __gc
- luaL_newmetatable(L, "uv_loop.meta");
- lua_pushstring(L, "__gc");
- lua_pushcfunction(L, loop_gc);
- lua_settable(L, -3);
-
- loop = lua_newuserdata(L, sizeof(*loop));
- ret = uv_loop_init(loop);
- if (ret < 0) {
- return luaL_error(L, "%s: %s\n", uv_err_name(ret), uv_strerror(ret));
- }
- // setup the metatable for __gc
- luaL_getmetatable(L, "uv_loop.meta");
- lua_setmetatable(L, -2);
- // Tell the state how to find the loop.
- lua_pushstring(L, "uv_loop");
- lua_insert(L, -2);
- lua_rawset(L, LUA_REGISTRYINDEX);
- lua_pop(L, 1);
-
- // Tell the loop how to find the state.
- loop->data = L;
-
- luv_req_init(L);
- luv_handle_init(L);
- luv_thread_init(L);
- luv_work_init(L);
-
- luaL_newlib(L, luv_functions);
- luv_constants(L);
- lua_setfield(L, -2, "constants");
-
- return 1;
-}
diff --git a/3rdparty/luv/src/luv.h b/3rdparty/luv/src/luv.h
deleted file mode 100644
index 681384da363..00000000000
--- a/3rdparty/luv/src/luv.h
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * Copyright 2014 The Luvit Authors. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-#ifndef LUV_H
-#define LUV_H
-#include <lua.h>
-#include <lualib.h>
-#include <lauxlib.h>
-#include "uv.h"
-
-#include <string.h>
-#include <stdlib.h>
-#include <assert.h>
-
-#if defined(_WIN32)
-# include <fcntl.h>
-# include <sys/types.h>
-# include <sys/stat.h>
-# ifndef __MINGW32__
-# define S_ISREG(x) (((x) & _S_IFMT) == _S_IFREG)
-# define S_ISDIR(x) (((x) & _S_IFMT) == _S_IFDIR)
-# define S_ISFIFO(x) (((x) & _S_IFMT) == _S_IFIFO)
-# define S_ISCHR(x) (((x) & _S_IFMT) == _S_IFCHR)
-# define S_ISBLK(x) 0
-# endif
-# define S_ISLNK(x) (((x) & S_IFLNK) == S_IFLNK)
-# define S_ISSOCK(x) 0
-#else
-# include <unistd.h>
-#endif
-
-#ifndef PATH_MAX
-#define PATH_MAX (8096)
-#endif
-
-#ifndef MAX_TITLE_LENGTH
-#define MAX_TITLE_LENGTH (8192)
-#endif
-
-#if LUA_VERSION_NUM < 502
-# define lua_rawlen lua_objlen
-/* lua_...uservalue: Something very different, but it should get the job done */
-# define lua_getuservalue lua_getfenv
-# define lua_setuservalue lua_setfenv
-# define luaL_newlib(L,l) (lua_newtable(L), luaL_register(L,NULL,l))
-# define luaL_setfuncs(L,l,n) (assert(n==0), luaL_register(L,NULL,l))
-# define lua_resume(L,F,n) lua_resume(L,n)
-# define lua_pushglobaltable(L) lua_pushvalue(L, LUA_GLOBALSINDEX)
-#endif
-
-/* There is a 1-1 relation between a lua_State and a uv_loop_t
- These helpers will give you one if you have the other
- These are exposed for extensions built with luv
- This allows luv to be used in multithreaded applications.
-*/
-LUALIB_API lua_State* luv_state(uv_loop_t* loop);
-/* All libuv callbacks will lua_call directly from this root-per-thread state
-*/
-LUALIB_API uv_loop_t* luv_loop(lua_State* L);
-
-/* This is the main hook to load the library.
- This can be called multiple times in a process as long
- as you use a different lua_State and thread for each.
-*/
-LUALIB_API int luaopen_luv (lua_State *L);
-
-#include "util.h"
-#include "lhandle.h"
-#include "lreq.h"
-
-/* From stream.c */
-static uv_stream_t* luv_check_stream(lua_State* L, int index);
-static void luv_alloc_cb(uv_handle_t* handle, size_t suggested_size, uv_buf_t* buf);
-static void luv_check_buf(lua_State *L, int idx, uv_buf_t *pbuf);
-static uv_buf_t* luv_prep_bufs(lua_State* L, int index, size_t *count);
-
-/* from tcp.c */
-static void parse_sockaddr(lua_State* L, struct sockaddr_storage* address, int addrlen);
-static void luv_connect_cb(uv_connect_t* req, int status);
-
-/* From fs.c */
-static void luv_push_stats_table(lua_State* L, const uv_stat_t* s);
-
-/* from constants.c */
-static int luv_af_string_to_num(const char* string);
-static const char* luv_af_num_to_string(const int num);
-static int luv_sock_string_to_num(const char* string);
-static const char* luv_sock_num_to_string(const int num);
-static int luv_sig_string_to_num(const char* string);
-static const char* luv_sig_num_to_string(const int num);
-
-typedef lua_State* (*luv_acquire_vm)();
-typedef void (*luv_release_vm)(lua_State* L);
-LUALIB_API void luv_set_thread_cb(luv_acquire_vm acquire, luv_release_vm release);
-
-#endif
diff --git a/3rdparty/luv/src/misc.c b/3rdparty/luv/src/misc.c
deleted file mode 100644
index 64c9e3d5822..00000000000
--- a/3rdparty/luv/src/misc.c
+++ /dev/null
@@ -1,316 +0,0 @@
-/*
- * Copyright 2014 The Luvit Authors. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-#include "luv.h"
-#ifdef _WIN32
-#include <process.h>
-#endif
-
-static int luv_guess_handle(lua_State* L) {
- uv_file file = luaL_checkinteger(L, 1);
- switch (uv_guess_handle(file)) {
-#define XX(uc, lc) case UV_##uc: lua_pushstring(L, #lc); break;
- UV_HANDLE_TYPE_MAP(XX)
-#undef XX
- case UV_FILE: lua_pushstring(L, "file"); break;
- default: return 0;
- }
- return 1;
-}
-
-static int luv_version(lua_State* L) {
- lua_pushinteger(L, uv_version());
- return 1;
-}
-
-static int luv_version_string(lua_State* L) {
- lua_pushstring(L, uv_version_string());
- return 1;
-}
-
-static int luv_get_process_title(lua_State* L) {
- char title[MAX_TITLE_LENGTH];
- int ret = uv_get_process_title(title, MAX_TITLE_LENGTH);
- if (ret < 0) return luv_error(L, ret);
- lua_pushstring(L, title);
- return 1;
-}
-
-static int luv_set_process_title(lua_State* L) {
- const char* title = luaL_checkstring(L, 1);
- int ret = uv_set_process_title(title);
- if (ret < 0) return luv_error(L, ret);
- lua_pushinteger(L, ret);
- return 1;
-}
-
-static int luv_resident_set_memory(lua_State* L) {
- size_t rss;
- int ret = uv_resident_set_memory(&rss);
- if (ret < 0) return luv_error(L, ret);
- lua_pushinteger(L, rss);
- return 1;
-}
-
-static int luv_uptime(lua_State* L) {
- double uptime;
- int ret = uv_uptime(&uptime);
- if (ret < 0) return luv_error(L, ret);
- lua_pushnumber(L, uptime);
- return 1;
-}
-
-static void luv_push_timeval_table(lua_State* L, const uv_timeval_t* t) {
- lua_createtable(L, 0, 2);
- lua_pushinteger(L, t->tv_sec);
- lua_setfield(L, -2, "sec");
- lua_pushinteger(L, t->tv_usec);
- lua_setfield(L, -2, "usec");
-}
-
-static int luv_getrusage(lua_State* L) {
- uv_rusage_t rusage;
- int ret = uv_getrusage(&rusage);
- if (ret < 0) return luv_error(L, ret);
- lua_createtable(L, 0, 16);
- // user CPU time used
- luv_push_timeval_table(L, &rusage.ru_utime);
- lua_setfield(L, -2, "utime");
- // system CPU time used
- luv_push_timeval_table(L, &rusage.ru_stime);
- lua_setfield(L, -2, "stime");
- // maximum resident set size
- lua_pushinteger(L, rusage.ru_maxrss);
- lua_setfield(L, -2, "maxrss");
- // integral shared memory size
- lua_pushinteger(L, rusage.ru_ixrss);
- lua_setfield(L, -2, "ixrss");
- // integral unshared data size
- lua_pushinteger(L, rusage.ru_idrss);
- lua_setfield(L, -2, "idrss");
- // integral unshared stack size
- lua_pushinteger(L, rusage.ru_isrss);
- lua_setfield(L, -2, "isrss");
- // page reclaims (soft page faults)
- lua_pushinteger(L, rusage.ru_minflt);
- lua_setfield(L, -2, "minflt");
- // page faults (hard page faults)
- lua_pushinteger(L, rusage.ru_majflt);
- lua_setfield(L, -2, "majflt");
- // swaps
- lua_pushinteger(L, rusage.ru_nswap);
- lua_setfield(L, -2, "nswap");
- // block input operations
- lua_pushinteger(L, rusage.ru_inblock);
- lua_setfield(L, -2, "inblock");
- // block output operations
- lua_pushinteger(L, rusage.ru_oublock);
- lua_setfield(L, -2, "oublock");
- // IPC messages sent
- lua_pushinteger(L, rusage.ru_msgsnd);
- lua_setfield(L, -2, "msgsnd");
- // IPC messages received
- lua_pushinteger(L, rusage.ru_msgrcv);
- lua_setfield(L, -2, "msgrcv");
- // signals received
- lua_pushinteger(L, rusage.ru_nsignals);
- lua_setfield(L, -2, "nsignals");
- // voluntary context switches
- lua_pushinteger(L, rusage.ru_nvcsw);
- lua_setfield(L, -2, "nvcsw");
- // involuntary context switches
- lua_pushinteger(L, rusage.ru_nivcsw);
- lua_setfield(L, -2, "nivcsw");
- return 1;
-}
-
-static int luv_cpu_info(lua_State* L) {
- uv_cpu_info_t* cpu_infos;
- int count, i;
- int ret = uv_cpu_info(&cpu_infos, &count);
- if (ret < 0) return luv_error(L, ret);
- lua_newtable(L);
-
- for (i = 0; i < count; i++) {
- lua_newtable(L);
- lua_pushstring(L, cpu_infos[i].model);
- lua_setfield(L, -2, "model");
- lua_pushnumber(L, cpu_infos[i].speed);
- lua_setfield(L, -2, "speed");
- lua_newtable(L);
- lua_pushnumber(L, cpu_infos[i].cpu_times.user);
- lua_setfield(L, -2, "user");
- lua_pushnumber(L, cpu_infos[i].cpu_times.nice);
- lua_setfield(L, -2, "nice");
- lua_pushnumber(L, cpu_infos[i].cpu_times.sys);
- lua_setfield(L, -2, "sys");
- lua_pushnumber(L, cpu_infos[i].cpu_times.idle);
- lua_setfield(L, -2, "idle");
- lua_pushnumber(L, cpu_infos[i].cpu_times.irq);
- lua_setfield(L, -2, "irq");
- lua_setfield(L, -2, "times");
- lua_rawseti(L, -2, i + 1);
- }
-
- uv_free_cpu_info(cpu_infos, count);
- return 1;
-}
-
-static int luv_interface_addresses(lua_State* L) {
- uv_interface_address_t* interfaces;
- int count, i;
- char ip[INET6_ADDRSTRLEN];
- char netmask[INET6_ADDRSTRLEN];
-
- uv_interface_addresses(&interfaces, &count);
-
- lua_newtable(L);
-
- for (i = 0; i < count; i++) {
- lua_getfield(L, -1, interfaces[i].name);
- if (!lua_istable(L, -1)) {
- lua_pop(L, 1);
- lua_newtable(L);
- lua_pushvalue(L, -1);
- lua_setfield(L, -3, interfaces[i].name);
- }
- lua_newtable(L);
- lua_pushboolean(L, interfaces[i].is_internal);
- lua_setfield(L, -2, "internal");
-
- lua_pushlstring(L, interfaces[i].phys_addr, sizeof(interfaces[i].phys_addr));
- lua_setfield(L, -2, "mac");
-
- if (interfaces[i].address.address4.sin_family == AF_INET) {
- uv_ip4_name(&interfaces[i].address.address4, ip, sizeof(ip));
- uv_ip4_name(&interfaces[i].netmask.netmask4, netmask, sizeof(netmask));
- } else if (interfaces[i].address.address4.sin_family == AF_INET6) {
- uv_ip6_name(&interfaces[i].address.address6, ip, sizeof(ip));
- uv_ip6_name(&interfaces[i].netmask.netmask6, netmask, sizeof(netmask));
- } else {
- strncpy(ip, "<unknown sa family>", INET6_ADDRSTRLEN);
- strncpy(netmask, "<unknown sa family>", INET6_ADDRSTRLEN);
- }
- lua_pushstring(L, ip);
- lua_setfield(L, -2, "ip");
- lua_pushstring(L, netmask);
- lua_setfield(L, -2, "netmask");
-
- lua_pushstring(L, luv_af_num_to_string(interfaces[i].address.address4.sin_family));
- lua_setfield(L, -2, "family");
- lua_rawseti(L, -2, lua_rawlen (L, -2) + 1);
- lua_pop(L, 1);
- }
- uv_free_interface_addresses(interfaces, count);
- return 1;
-}
-
-static int luv_loadavg(lua_State* L) {
- double avg[3];
- uv_loadavg(avg);
- lua_pushnumber(L, avg[0]);
- lua_pushnumber(L, avg[1]);
- lua_pushnumber(L, avg[2]);
- return 3;
-}
-
-static int luv_exepath(lua_State* L) {
- size_t size = 2*PATH_MAX;
- char exe_path[2*PATH_MAX];
- int ret = uv_exepath(exe_path, &size);
- if (ret < 0) return luv_error(L, ret);
- lua_pushlstring(L, exe_path, size);
- return 1;
-}
-
-static int luv_cwd(lua_State* L) {
- size_t size = 2*PATH_MAX;
- char path[2*PATH_MAX];
- int ret = uv_cwd(path, &size);
- if (ret < 0) return luv_error(L, ret);
- lua_pushlstring(L, path, size);
- return 1;
-}
-
-static int luv_chdir(lua_State* L) {
- int ret = uv_chdir(luaL_checkstring(L, 1));
- if (ret < 0) return luv_error(L, ret);
- lua_pushinteger(L, ret);
- return 1;
-}
-
-static int luv_os_homedir(lua_State* L) {
- size_t size = 2*PATH_MAX;
- char homedir[2*PATH_MAX];
- int ret = uv_os_homedir(homedir, &size);
- if (ret < 0) return luv_error(L, ret);
- lua_pushlstring(L, homedir, size);
- return 1;
-}
-
-static int luv_get_total_memory(lua_State* L) {
- lua_pushnumber(L, uv_get_total_memory());
- return 1;
-}
-
-static int luv_get_free_memory(lua_State* L) {
- lua_pushnumber(L, uv_get_free_memory());
- return 1;
-}
-
-static int luv_hrtime(lua_State* L) {
- lua_pushnumber(L, uv_hrtime());
- return 1;
-}
-
-static int luv_getpid(lua_State* L){
- int pid = getpid();
- lua_pushinteger(L, pid);
- return 1;
-}
-
-#ifndef _WIN32
-static int luv_getuid(lua_State* L){
- int uid = getuid();
- lua_pushinteger(L, uid);
- return 1;
-}
-
-static int luv_getgid(lua_State* L){
- int gid = getgid();
- lua_pushinteger(L, gid);
- return 1;
-}
-
-static int luv_setuid(lua_State* L){
- int uid = luaL_checkinteger(L, 1);
- int r = setuid(uid);
- if (-1 == r) {
- luaL_error(L, "Error setting UID");
- }
- return 0;
-}
-
-static int luv_setgid(lua_State* L){
- int gid = luaL_checkinteger(L, 1);
- int r = setgid(gid);
- if (-1 == r) {
- luaL_error(L, "Error setting GID");
- }
- return 0;
-}
-#endif
diff --git a/3rdparty/luv/src/pipe.c b/3rdparty/luv/src/pipe.c
deleted file mode 100644
index b490c1597b3..00000000000
--- a/3rdparty/luv/src/pipe.c
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * Copyright 2014 The Luvit Authors. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-#include "luv.h"
-
-static uv_pipe_t* luv_check_pipe(lua_State* L, int index) {
- uv_pipe_t* handle = luv_checkudata(L, index, "uv_pipe");
- luaL_argcheck(L, handle->type == UV_NAMED_PIPE && handle->data, index, "Expected uv_pipe_t");
- return handle;
-}
-
-static int luv_new_pipe(lua_State* L) {
- uv_pipe_t* handle;
- int ipc, ret;
- luaL_checktype(L, 1, LUA_TBOOLEAN);
- ipc = lua_toboolean(L, 1);
- handle = luv_newuserdata(L, sizeof(*handle));
- ret = uv_pipe_init(luv_loop(L), handle, ipc);
- if (ret < 0) {
- lua_pop(L, 1);
- return luv_error(L, ret);
- }
- handle->data = luv_setup_handle(L);
- return 1;
-}
-
-static int luv_pipe_open(lua_State* L) {
- uv_pipe_t* handle = luv_check_pipe(L, 1);
- uv_file file = luaL_checkinteger(L, 2);
- int ret = uv_pipe_open(handle, file);
- if (ret < 0) return luv_error(L, ret);
- lua_pushinteger(L, ret);
- return 1;
-}
-
-static int luv_pipe_bind(lua_State* L) {
- uv_pipe_t* handle = luv_check_pipe(L, 1);
- const char* name = luaL_checkstring(L, 2);
- int ret = uv_pipe_bind(handle, name);
- if (ret < 0) return luv_error(L, ret);
- lua_pushinteger(L, ret);
- return 1;
-}
-
-static int luv_pipe_connect(lua_State* L) {
- uv_pipe_t* handle = luv_check_pipe(L, 1);
- const char* name = luaL_checkstring(L, 2);
- int ref = luv_check_continuation(L, 3);
- uv_connect_t* req = lua_newuserdata(L, sizeof(*req));
- req->data = luv_setup_req(L, ref);
- uv_pipe_connect(req, handle, name, luv_connect_cb);
- return 1;
-}
-
-static int luv_pipe_getsockname(lua_State* L) {
- uv_pipe_t* handle = luv_check_pipe(L, 1);
- size_t len = 2*PATH_MAX;
- char buf[2*PATH_MAX];
- int ret = uv_pipe_getsockname(handle, buf, &len);
- if (ret < 0) return luv_error(L, ret);
- lua_pushlstring(L, buf, len);
- return 1;
-}
-
-static int luv_pipe_getpeername(lua_State* L) {
- uv_pipe_t* handle = luv_check_pipe(L, 1);
- size_t len = 2*PATH_MAX;
- char buf[2*PATH_MAX];
- int ret = uv_pipe_getpeername(handle, buf, &len);
- if (ret < 0) return luv_error(L, ret);
- lua_pushlstring(L, buf, len);
- return 1;
-}
-
-static int luv_pipe_pending_instances(lua_State* L) {
- uv_pipe_t* handle = luv_check_pipe(L, 1);
- int count = luaL_checkinteger(L, 2);
- uv_pipe_pending_instances(handle, count);
- return 0;
-}
-
-static int luv_pipe_pending_count(lua_State* L) {
- uv_pipe_t* handle = luv_check_pipe(L, 1);
- lua_pushinteger(L, uv_pipe_pending_count(handle));
- return 1;
-}
-
-static int luv_pipe_pending_type(lua_State* L) {
- uv_pipe_t* handle = luv_check_pipe(L, 1);
- uv_handle_type type = uv_pipe_pending_type(handle);
- const char* type_name;
- switch (type) {
-#define XX(uc, lc) \
- case UV_##uc: type_name = #lc; break;
- UV_HANDLE_TYPE_MAP(XX)
-#undef XX
- default: return 0;
- }
- lua_pushstring(L, type_name);
- return 1;
-}
diff --git a/3rdparty/luv/src/poll.c b/3rdparty/luv/src/poll.c
deleted file mode 100644
index e007c9f9634..00000000000
--- a/3rdparty/luv/src/poll.c
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * Copyright 2014 The Luvit Authors. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-#include "luv.h"
-
-static uv_poll_t* luv_check_poll(lua_State* L, int index) {
- uv_poll_t* handle = luv_checkudata(L, index, "uv_poll");
- luaL_argcheck(L, handle->type == UV_POLL && handle->data, index, "Expected uv_poll_t");
- return handle;
-}
-
-static int luv_new_poll(lua_State* L) {
- int fd = luaL_checkinteger(L, 1);
- uv_poll_t* handle = luv_newuserdata(L, sizeof(*handle));
- int ret = uv_poll_init(luv_loop(L), handle, fd);
- if (ret < 0) {
- lua_pop(L, 1);
- return luv_error(L, ret);
- }
- handle->data = luv_setup_handle(L);
- return 1;
-}
-
-static int luv_new_socket_poll(lua_State* L) {
- int fd = luaL_checkinteger(L, 1);
- uv_poll_t* handle = luv_newuserdata(L, sizeof(*handle));
- int ret = uv_poll_init_socket(luv_loop(L), handle, fd);
- if (ret < 0) {
- lua_pop(L, 1);
- return luv_error(L, ret);
- }
- handle->data = luv_setup_handle(L);
- return 1;
-}
-
-// These are the same order as uv_run_mode which also starts at 0
-static const char *const luv_pollevents[] = {
- "r", "w", "rw", NULL
-};
-
-static void luv_poll_cb(uv_poll_t* handle, int status, int events) {
- lua_State* L = luv_state(handle->loop);
- luv_handle_t* data = handle->data;
- const char* evtstr;
-
- if (status < 0) {
- fprintf(stderr, "%s: %s\n", uv_err_name(status), uv_strerror(status));
- lua_pushstring(L, uv_err_name(status));
- }
- else {
- lua_pushnil(L);
- }
-
- switch (events) {
- case UV_READABLE: evtstr = "r"; break;
- case UV_WRITABLE: evtstr = "w"; break;
- case UV_READABLE|UV_WRITABLE: evtstr = "rw"; break;
- default: evtstr = ""; break;
- }
- lua_pushstring(L, evtstr);
-
- luv_call_callback(L, data, LUV_POLL, 2);
-}
-
-static int luv_poll_start(lua_State* L) {
- uv_poll_t* handle = luv_check_poll(L, 1);
- int events, ret;
- switch (luaL_checkoption(L, 2, "rw", luv_pollevents)) {
- case 0: events = UV_READABLE; break;
- case 1: events = UV_WRITABLE; break;
- case 2: events = UV_READABLE | UV_WRITABLE; break;
- default: events = 0; /* unreachable */
- }
- luv_check_callback(L, handle->data, LUV_POLL, 3);
- ret = uv_poll_start(handle, events, luv_poll_cb);
- if (ret < 0) return luv_error(L, ret);
- lua_pushinteger(L, ret);
- return 1;
-}
-
-static int luv_poll_stop(lua_State* L) {
- uv_poll_t* handle = luv_check_poll(L, 1);
- int ret = uv_poll_stop(handle);
- if (ret < 0) return luv_error(L, ret);
- lua_pushinteger(L, ret);
- return 1;
-}
diff --git a/3rdparty/luv/src/prepare.c b/3rdparty/luv/src/prepare.c
deleted file mode 100644
index 6577439a466..00000000000
--- a/3rdparty/luv/src/prepare.c
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright 2014 The Luvit Authors. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-#include "luv.h"
-
-static uv_prepare_t* luv_check_prepare(lua_State* L, int index) {
- uv_prepare_t* handle = luv_checkudata(L, index, "uv_prepare");
- luaL_argcheck(L, handle->type == UV_PREPARE && handle->data, index, "Expected uv_prepare_t");
- return handle;
-}
-
-static int luv_new_prepare(lua_State* L) {
- uv_prepare_t* handle = luv_newuserdata(L, sizeof(*handle));
- int ret = uv_prepare_init(luv_loop(L), handle);
- if (ret < 0) {
- lua_pop(L, 1);
- return luv_error(L, ret);
- }
- handle->data = luv_setup_handle(L);
- return 1;
-}
-
-static void luv_prepare_cb(uv_prepare_t* handle) {
- lua_State* L = luv_state(handle->loop);
- luv_handle_t* data = handle->data;
- luv_call_callback(L, data, LUV_PREPARE, 0);
-}
-
-static int luv_prepare_start(lua_State* L) {
- uv_prepare_t* handle = luv_check_prepare(L, 1);
- int ret;
- luv_check_callback(L, handle->data, LUV_PREPARE, 2);
- ret = uv_prepare_start(handle, luv_prepare_cb);
- if (ret < 0) return luv_error(L, ret);
- lua_pushinteger(L, ret);
- return 1;
-}
-
-static int luv_prepare_stop(lua_State* L) {
- uv_prepare_t* handle = luv_check_prepare(L, 1);
- int ret = uv_prepare_stop(handle);
- if (ret < 0) return luv_error(L, ret);
- lua_pushinteger(L, ret);
- return 1;
-}
-
diff --git a/3rdparty/luv/src/process.c b/3rdparty/luv/src/process.c
deleted file mode 100644
index d939503868b..00000000000
--- a/3rdparty/luv/src/process.c
+++ /dev/null
@@ -1,266 +0,0 @@
-/*
- * Copyright 2014 The Luvit Authors. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-#include "luv.h"
-
-static int luv_disable_stdio_inheritance(lua_State* L) {
- (void)L;
- uv_disable_stdio_inheritance();
- return 0;
-}
-
-static uv_process_t* luv_check_process(lua_State* L, int index) {
- uv_process_t* handle = luv_checkudata(L, index, "uv_process");
- luaL_argcheck(L, handle->type == UV_PROCESS && handle->data, index, "Expected uv_process_t");
- return handle;
-}
-
-static void exit_cb(uv_process_t* handle, int64_t exit_status, int term_signal) {
- lua_State* L = luv_state(handle->loop);
- luv_handle_t* data = handle->data;
- lua_pushinteger(L, exit_status);
- lua_pushinteger(L, term_signal);
- luv_call_callback(L, data, LUV_EXIT, 2);
-}
-
-static void luv_spawn_close_cb(uv_handle_t* handle) {
- lua_State *L = luv_state(handle->loop);
- luv_cleanup_handle(L, handle->data);
-}
-
-static void luv_clean_options(uv_process_options_t* options) {
- free(options->args);
- free(options->stdio);
- free(options->env);
-}
-
-static int luv_spawn(lua_State* L) {
- uv_process_t* handle;
- uv_process_options_t options;
- size_t i, len = 0;
- int ret;
-
- memset(&options, 0, sizeof(options));
- options.exit_cb = exit_cb;
- options.file = luaL_checkstring(L, 1);
- options.flags = 0;
-
- // Make sure the 2nd argument is a table
- luaL_checktype(L, 2, LUA_TTABLE);
-
- // get the args list
- lua_getfield(L, 2, "args");
- // +1 for inserted command at front
- if (lua_type(L, -1) == LUA_TTABLE) {
- len = 1 + lua_rawlen(L, -1);
- }
- else if (lua_type(L, -1) != LUA_TNIL) {
- luv_clean_options(&options);
- return luaL_argerror(L, 3, "args option must be table");
- }
- else {
- len = 1;
- }
- // +1 for null terminator at end
- options.args = malloc((len + 1) * sizeof(*options.args));
- if (!options.args) {
- luv_clean_options(&options);
- return luaL_error(L, "Problem allocating args");
- }
- options.args[0] = (char*)options.file;
- for (i = 1; i < len; ++i) {
- lua_rawgeti(L, -1, i);
- options.args[i] = (char*)lua_tostring(L, -1);
- lua_pop(L, 1);
- }
- options.args[len] = NULL;
- lua_pop(L, 1);
-
- // get the stdio list
- lua_getfield(L, 2, "stdio");
- if (lua_type(L, -1) == LUA_TTABLE) {
- options.stdio_count = len = lua_rawlen(L, -1);
- options.stdio = malloc(len * sizeof(*options.stdio));
- if (!options.stdio) {
- luv_clean_options(&options);
- return luaL_error(L, "Problem allocating stdio");
- }
- for (i = 0; i < len; ++i) {
- lua_rawgeti(L, -1, i + 1);
- // integers are assumed to be file descripters
- if (lua_type(L, -1) == LUA_TNUMBER) {
- options.stdio[i].flags = UV_INHERIT_FD;
- options.stdio[i].data.fd = lua_tointeger(L, -1);
- }
- // userdata is assumed to be a uv_stream_t instance
- else if (lua_type(L, -1) == LUA_TUSERDATA) {
- uv_os_fd_t fd;
- uv_stream_t* stream = luv_check_stream(L, -1);
- int err = uv_fileno((uv_handle_t*)stream, &fd);
- if (err == UV_EINVAL || err == UV_EBADF) {
- // stdin (fd 0) is read-only, stdout and stderr (fds 1 & 2) are
- // write-only, and all fds > 2 are read-write
- int flags = UV_CREATE_PIPE;
- if (i == 0 || i > 2)
- flags |= UV_READABLE_PIPE;
- if (i != 0)
- flags |= UV_WRITABLE_PIPE;
- options.stdio[i].flags = flags;
- }
- else {
- options.stdio[i].flags = UV_INHERIT_STREAM;
- }
- options.stdio[i].data.stream = stream;
- }
- else if (lua_type(L, -1) == LUA_TNIL) {
- options.stdio[i].flags = UV_IGNORE;
- }
- else {
- luv_clean_options(&options);
- return luaL_argerror(L, 2, "stdio table entries must be nil, uv_stream_t, or integer");
- }
- lua_pop(L, 1);
- }
- }
- else if (lua_type(L, -1) != LUA_TNIL) {
- luv_clean_options(&options);
- return luaL_argerror(L, 2, "stdio option must be table");
- }
- lua_pop(L, 1);
-
- // Get the env
- lua_getfield(L, 2, "env");
- if (lua_type(L, -1) == LUA_TTABLE) {
- len = lua_rawlen(L, -1);
- options.env = malloc((len + 1) * sizeof(*options.env));
- if (!options.env) {
- luv_clean_options(&options);
- return luaL_error(L, "Problem allocating env");
- }
- for (i = 0; i < len; ++i) {
- lua_rawgeti(L, -1, i + 1);
- options.env[i] = (char*)lua_tostring(L, -1);
- lua_pop(L, 1);
- }
- options.env[len] = NULL;
- }
- else if (lua_type(L, -1) != LUA_TNIL) {
- luv_clean_options(&options);
- return luaL_argerror(L, 2, "env option must be table");
- }
- lua_pop(L, 1);
-
- // Get the cwd
- lua_getfield(L, 2, "cwd");
- if (lua_type(L, -1) == LUA_TSTRING) {
- options.cwd = (char*)lua_tostring(L, -1);
- }
- else if (lua_type(L, -1) != LUA_TNIL) {
- luv_clean_options(&options);
- return luaL_argerror(L, 2, "cwd option must be string");
- }
- lua_pop(L, 1);
-
- // Check for uid
- lua_getfield(L, 2, "uid");
- if (lua_type(L, -1) == LUA_TNUMBER) {
- options.uid = lua_tointeger(L, -1);
- options.flags |= UV_PROCESS_SETUID;
- }
- else if (lua_type(L, -1) != LUA_TNIL) {
- luv_clean_options(&options);
- return luaL_argerror(L, 2, "uid option must be number");
- }
- lua_pop(L, 1);
-
- // Check for gid
- lua_getfield(L, 2, "gid");
- if (lua_type(L, -1) == LUA_TNUMBER) {
- options.gid = lua_tointeger(L, -1);
- options.flags |= UV_PROCESS_SETGID;
- }
- else if (lua_type(L, -1) != LUA_TNIL) {
- luv_clean_options(&options);
- return luaL_argerror(L, 2, "gid option must be number");
- }
- lua_pop(L, 1);
-
- // Check for the boolean flags
- lua_getfield(L, 2, "verbatim");
- if (lua_toboolean(L, -1)) {
- options.flags |= UV_PROCESS_WINDOWS_VERBATIM_ARGUMENTS;
- }
- lua_pop(L, 1);
- lua_getfield(L, 2, "detached");
- if (lua_toboolean(L, -1)) {
- options.flags |= UV_PROCESS_DETACHED;
- }
- lua_pop(L, 1);
- lua_getfield(L, 2, "hide");
- if (lua_toboolean(L, -1)) {
- options.flags |= UV_PROCESS_WINDOWS_HIDE;
- }
- lua_pop(L, 1);
-
- handle = luv_newuserdata(L, sizeof(*handle));
- handle->type = UV_PROCESS;
- handle->data = luv_setup_handle(L);
-
- if (!lua_isnoneornil(L, 3)) {
- luv_check_callback(L, handle->data, LUV_EXIT, 3);
- }
-
- ret = uv_spawn(luv_loop(L), handle, &options);
-
- luv_clean_options(&options);
- if (ret < 0) {
- /* The async callback is required here because luajit GC may reclaim the
- * luv handle before libuv is done closing it down.
- */
- uv_close((uv_handle_t*)handle, luv_spawn_close_cb);
- return luv_error(L, ret);
- }
- lua_pushinteger(L, handle->pid);
- return 2;
-}
-
-static int luv_parse_signal(lua_State* L, int slot) {
- if (lua_isnumber(L, slot)) {
- return lua_tonumber(L, slot);
- }
- if (lua_isstring(L, slot)) {
- return luv_sig_string_to_num(lua_tostring(L, slot));
- }
- return SIGTERM;
-}
-
-static int luv_process_kill(lua_State* L) {
- uv_process_t* handle = luv_check_process(L, 1);
- int signum = luv_parse_signal(L, 2);
- int ret = uv_process_kill(handle, signum);
- if (ret < 0) return luv_error(L, ret);
- lua_pushinteger(L, ret);
- return 1;
-}
-
-static int luv_kill(lua_State* L) {
- int pid = luaL_checkinteger(L, 1);
- int signum = luv_parse_signal(L, 2);
- int ret = uv_kill(pid, signum);
- if (ret < 0) return luv_error(L, ret);
- lua_pushinteger(L, ret);
- return 1;
-}
diff --git a/3rdparty/luv/src/req.c b/3rdparty/luv/src/req.c
deleted file mode 100644
index 6d7b7e4a30b..00000000000
--- a/3rdparty/luv/src/req.c
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright 2014 The Luvit Authors. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-#include "luv.h"
-
-static uv_req_t* luv_check_req(lua_State* L, int index) {
- uv_req_t* req = luaL_checkudata(L, index, "uv_req");
- luaL_argcheck(L, req->data, index, "Expected uv_req_t");
- return req;
-}
-
-static int luv_req_tostring(lua_State* L) {
- uv_req_t* req = luaL_checkudata(L, 1, "uv_req");
- switch (req->type) {
-#define XX(uc, lc) case UV_##uc: lua_pushfstring(L, "uv_"#lc"_t: %p", req); break;
- UV_REQ_TYPE_MAP(XX)
-#undef XX
- default: lua_pushfstring(L, "uv_req_t: %p", req); break;
- }
- return 1;
-}
-
-static void luv_req_init(lua_State* L) {
- luaL_newmetatable (L, "uv_req");
- lua_pushcfunction(L, luv_req_tostring);
- lua_setfield(L, -2, "__tostring");
- lua_pop(L, 1);
-}
-
-// Metamethod to allow storing anything in the userdata's environment
-static int luv_cancel(lua_State* L) {
- uv_req_t* req = luv_check_req(L, 1);
- int ret = uv_cancel(req);
- if (ret < 0) return luv_error(L, ret);
- luv_cleanup_req(L, req->data);
- req->data = NULL;
- lua_pushinteger(L, ret);
- return 1;
-}
diff --git a/3rdparty/luv/src/schema.c b/3rdparty/luv/src/schema.c
deleted file mode 100644
index e7b82e11d66..00000000000
--- a/3rdparty/luv/src/schema.c
+++ /dev/null
@@ -1,16 +0,0 @@
-/*
- * Copyright 2014 The Luvit Authors. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
diff --git a/3rdparty/luv/src/signal.c b/3rdparty/luv/src/signal.c
deleted file mode 100644
index 48ace2bf601..00000000000
--- a/3rdparty/luv/src/signal.c
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright 2014 The Luvit Authors. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-#include "luv.h"
-
-static uv_signal_t* luv_check_signal(lua_State* L, int index) {
- uv_signal_t* handle = luv_checkudata(L, index, "uv_signal");
- luaL_argcheck(L, handle->type == UV_SIGNAL && handle->data, index, "Expected uv_signal_t");
- return handle;
-}
-
-static int luv_new_signal(lua_State* L) {
- uv_signal_t* handle = luv_newuserdata(L, sizeof(*handle));
- int ret = uv_signal_init(luv_loop(L), handle);
- if (ret < 0) {
- lua_pop(L, 1);
- return luv_error(L, ret);
- }
- handle->data = luv_setup_handle(L);
- return 1;
-}
-
-static void luv_signal_cb(uv_signal_t* handle, int signum) {
- lua_State* L = luv_state(handle->loop);
- luv_handle_t* data = handle->data;
- lua_pushstring(L, luv_sig_num_to_string(signum));
- luv_call_callback(L, data, LUV_SIGNAL, 1);
-}
-
-static int luv_signal_start(lua_State* L) {
- uv_signal_t* handle = luv_check_signal(L, 1);
- int signum, ret;
- if (lua_isnumber(L, 2)) {
- signum = lua_tointeger(L, 2);
- }
- else if (lua_isstring(L, 2)) {
- signum = luv_sig_string_to_num(luaL_checkstring(L, 2));
- luaL_argcheck(L, signum, 2, "Invalid Signal name");
- }
- else {
- return luaL_argerror(L, 2, "Missing Signal name");
- }
-
- if (!lua_isnoneornil(L, 3)) {
- luv_check_callback(L, handle->data, LUV_SIGNAL, 3);
- }
- ret = uv_signal_start(handle, luv_signal_cb, signum);
- if (ret < 0) return luv_error(L, ret);
- lua_pushinteger(L, ret);
- return 1;
-}
-
-static int luv_signal_stop(lua_State* L) {
- uv_signal_t* handle = luv_check_signal(L, 1);
- int ret = uv_signal_stop(handle);
- if (ret < 0) return luv_error(L, ret);
- lua_pushinteger(L, ret);
- return 1;
-}
diff --git a/3rdparty/luv/src/stream.c b/3rdparty/luv/src/stream.c
deleted file mode 100644
index 5009e04f097..00000000000
--- a/3rdparty/luv/src/stream.c
+++ /dev/null
@@ -1,263 +0,0 @@
-/*
- * Copyright 2014 The Luvit Authors. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-#include "luv.h"
-
-static void luv_check_buf(lua_State *L, int idx, uv_buf_t *pbuf) {
- size_t len;
- pbuf->base = (char*)luaL_checklstring(L, idx, &len);
- pbuf->len = len;
-}
-
-static uv_stream_t* luv_check_stream(lua_State* L, int index) {
- int isStream;
- uv_stream_t* handle;
- if (!(handle = *(void**) lua_touserdata(L, index))) { goto fail; }
- lua_getfield(L, LUA_REGISTRYINDEX, "uv_stream");
- lua_getmetatable(L, index < 0 ? index - 1 : index);
- lua_rawget(L, -2);
- isStream = lua_toboolean(L, -1);
- lua_pop(L, 2);
- if (isStream) { return handle; }
- fail: luaL_argerror(L, index, "Expected uv_stream userdata");
- return NULL;
-}
-
-static void luv_shutdown_cb(uv_shutdown_t* req, int status) {
- lua_State* L = luv_state(req->handle->loop);
- luv_status(L, status);
- luv_fulfill_req(L, req->data, 1);
- luv_cleanup_req(L, req->data);
- req->data = NULL;
-}
-
-static int luv_shutdown(lua_State* L) {
- uv_stream_t* handle = luv_check_stream(L, 1);
- int ref = luv_check_continuation(L, 2);
- uv_shutdown_t* req = lua_newuserdata(L, sizeof(*req));
- int ret;
- req->data = luv_setup_req(L, ref);
- ret = uv_shutdown(req, handle, luv_shutdown_cb);
- if (ret < 0) {
- lua_pop(L, 1);
- return luv_error(L, ret);
- }
- return 1;
-}
-
-static void luv_connection_cb(uv_stream_t* handle, int status) {
- lua_State* L = luv_state(handle->loop);
- luv_status(L, status);
- luv_call_callback(L, handle->data, LUV_CONNECTION, 1);
-}
-
-static int luv_listen(lua_State* L) {
- uv_stream_t* handle = luv_check_stream(L, 1);
- int backlog = luaL_checkinteger(L, 2);
- int ret;
- luv_check_callback(L, handle->data, LUV_CONNECTION, 3);
- ret = uv_listen(handle, backlog, luv_connection_cb);
- if (ret < 0) return luv_error(L, ret);
- lua_pushinteger(L, ret);
- return 1;
-}
-
-static int luv_accept(lua_State* L) {
- uv_stream_t* server = luv_check_stream(L, 1);
- uv_stream_t* client = luv_check_stream(L, 2);
- int ret = uv_accept(server, client);
- if (ret < 0) return luv_error(L, ret);
- lua_pushinteger(L, ret);
- return 1;
-}
-
-static void luv_alloc_cb(uv_handle_t* handle, size_t suggested_size, uv_buf_t* buf) {
- (void)handle;
- buf->base = malloc(suggested_size);
- assert(buf->base);
- buf->len = suggested_size;
-}
-
-static void luv_read_cb(uv_stream_t* handle, ssize_t nread, const uv_buf_t* buf) {
- lua_State* L = luv_state(handle->loop);
- int nargs;
-
- if (nread > 0) {
- lua_pushnil(L);
- lua_pushlstring(L, buf->base, nread);
- nargs = 2;
- }
-
- free(buf->base);
- if (nread == 0) return;
-
- if (nread == UV_EOF) {
- nargs = 0;
- }
- else if (nread < 0) {
- luv_status(L, nread);
- nargs = 1;
- }
-
- luv_call_callback(L, handle->data, LUV_READ, nargs);
-}
-
-static int luv_read_start(lua_State* L) {
- uv_stream_t* handle = luv_check_stream(L, 1);
- int ret;
- luv_check_callback(L, handle->data, LUV_READ, 2);
- ret = uv_read_start(handle, luv_alloc_cb, luv_read_cb);
- if (ret < 0) return luv_error(L, ret);
- lua_pushinteger(L, ret);
- return 1;
-}
-
-static int luv_read_stop(lua_State* L) {
- uv_stream_t* handle = luv_check_stream(L, 1);
- int ret = uv_read_stop(handle);
- if (ret < 0) return luv_error(L, ret);
- lua_pushinteger(L, ret);
- return 1;
-}
-
-static void luv_write_cb(uv_write_t* req, int status) {
- lua_State* L = luv_state(req->handle->loop);
- luv_status(L, status);
- luv_fulfill_req(L, req->data, 1);
- luv_cleanup_req(L, req->data);
- req->data = NULL;
-}
-
-static uv_buf_t* luv_prep_bufs(lua_State* L, int index, size_t *count) {
- uv_buf_t *bufs;
- size_t i;
- *count = lua_rawlen(L, index);
- bufs = malloc(sizeof(uv_buf_t) * *count);
- for (i = 0; i < *count; ++i) {
- lua_rawgeti(L, index, i + 1);
- luv_check_buf(L, -1, &bufs[i]);
- lua_pop(L, 1);
- }
- return bufs;
-}
-
-static int luv_write(lua_State* L) {
- uv_stream_t* handle = luv_check_stream(L, 1);
- uv_write_t* req;
- int ret, ref;
- ref = luv_check_continuation(L, 3);
- req = lua_newuserdata(L, sizeof(*req));
- req->data = luv_setup_req(L, ref);
- if (lua_istable(L, 2)) {
- size_t count;
- uv_buf_t *bufs = luv_prep_bufs(L, 2, &count);
- ret = uv_write(req, handle, bufs, count, luv_write_cb);
- free(bufs);
- }
- else if (lua_isstring(L, 2)) {
- uv_buf_t buf;
- luv_check_buf(L, 2, &buf);
- ret = uv_write(req, handle, &buf, 1, luv_write_cb);
- }
- else {
- return luaL_argerror(L, 2, "data must be string or table of strings");
- }
- if (ret < 0) {
- lua_pop(L, 1);
- return luv_error(L, ret);
- }
- lua_pushvalue(L, 2);
- ((luv_req_t*)req->data)->data_ref = luaL_ref(L, LUA_REGISTRYINDEX);
- return 1;
-}
-
-static int luv_write2(lua_State* L) {
- uv_stream_t* handle = luv_check_stream(L, 1);
- uv_write_t* req;
- int ret, ref;
- uv_stream_t* send_handle;
- send_handle = luv_check_stream(L, 3);
- ref = luv_check_continuation(L, 4);
- req = lua_newuserdata(L, sizeof(*req));
- req->data = luv_setup_req(L, ref);
- if (lua_istable(L, 2)) {
- size_t count;
- uv_buf_t *bufs = luv_prep_bufs(L, 2, &count);
- ret = uv_write2(req, handle, bufs, count, send_handle, luv_write_cb);
- free(bufs);
- }
- else if (lua_isstring(L, 2)) {
- uv_buf_t buf;
- luv_check_buf(L, 2, &buf);
- ret = uv_write2(req, handle, &buf, 1, send_handle, luv_write_cb);
- }
- else {
- return luaL_argerror(L, 2, "data must be string or table of strings");
- }
- if (ret < 0) {
- lua_pop(L, 1);
- return luv_error(L, ret);
- }
- lua_pushvalue(L, 2);
- ((luv_req_t*)req->data)->data_ref = luaL_ref(L, LUA_REGISTRYINDEX);
- return 1;
-}
-
-static int luv_try_write(lua_State* L) {
- uv_stream_t* handle = luv_check_stream(L, 1);
- int ret;
- if (lua_istable(L, 2)) {
- size_t count;
- uv_buf_t *bufs = luv_prep_bufs(L, 2, &count);
- ret = uv_try_write(handle, bufs, count);
- free(bufs);
- }
- else if (lua_isstring(L, 2)) {
- uv_buf_t buf;
- luv_check_buf(L, 2, &buf);
- ret = uv_try_write(handle, &buf, 1);
- }
- else {
- return luaL_argerror(L, 2, "data must be string or table of strings");
- }
- if (ret < 0) return luv_error(L, ret);
- lua_pushinteger(L, ret);
- return 1;
-}
-
-static int luv_is_readable(lua_State* L) {
- uv_stream_t* handle = luv_check_stream(L, 1);
- lua_pushboolean(L, uv_is_readable(handle));
- return 1;
-}
-
-static int luv_is_writable(lua_State* L) {
- uv_stream_t* handle = luv_check_stream(L, 1);
- lua_pushboolean(L, uv_is_writable(handle));
- return 1;
-}
-
-static int luv_stream_set_blocking(lua_State* L) {
- uv_stream_t* handle = luv_check_stream(L, 1);
- int blocking, ret;
- luaL_checktype(L, 2, LUA_TBOOLEAN);
- blocking = lua_toboolean(L, 2);
- ret = uv_stream_set_blocking(handle, blocking);
- if (ret < 0) return luv_error(L, ret);
- lua_pushinteger(L, ret);
- return 1;
-}
-
diff --git a/3rdparty/luv/src/tcp.c b/3rdparty/luv/src/tcp.c
deleted file mode 100644
index 7ffef5ae763..00000000000
--- a/3rdparty/luv/src/tcp.c
+++ /dev/null
@@ -1,182 +0,0 @@
-/*
- * Copyright 2014 The Luvit Authors. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-#include "luv.h"
-
-static uv_tcp_t* luv_check_tcp(lua_State* L, int index) {
- uv_tcp_t* handle = luv_checkudata(L, index, "uv_tcp");
- luaL_argcheck(L, handle->type == UV_TCP && handle->data, index, "Expected uv_tcp_t");
- return handle;
-}
-
-static int luv_new_tcp(lua_State* L) {
- uv_tcp_t* handle = luv_newuserdata(L, sizeof(*handle));
- int ret = uv_tcp_init(luv_loop(L), handle);
- if (ret < 0) {
- lua_pop(L, 1);
- return luv_error(L, ret);
- }
- handle->data = luv_setup_handle(L);
- return 1;
-}
-
-static int luv_tcp_open(lua_State* L) {
- uv_tcp_t* handle = luv_check_tcp(L, 1);
- uv_os_sock_t sock = luaL_checkinteger(L, 2);
- int ret = uv_tcp_open(handle, sock);
- if (ret < 0) return luv_error(L, ret);
- lua_pushinteger(L, ret);
- return 1;
-}
-
-static int luv_tcp_nodelay(lua_State* L) {
- uv_tcp_t* handle = luv_check_tcp(L, 1);
- int ret, enable;
- luaL_checktype(L, 2, LUA_TBOOLEAN);
- enable = lua_toboolean(L, 2);
- ret = uv_tcp_nodelay(handle, enable);
- if (ret < 0) return luv_error(L, ret);
- lua_pushinteger(L, ret);
- return 1;
-}
-
-static int luv_tcp_keepalive(lua_State* L) {
- uv_tcp_t* handle = luv_check_tcp(L, 1);
- int ret, enable;
- unsigned int delay = 0;
- luaL_checktype(L, 2, LUA_TBOOLEAN);
- enable = lua_toboolean(L, 2);
- if (enable) {
- delay = luaL_checkinteger(L, 3);
- }
- ret = uv_tcp_keepalive(handle, enable, delay);
- if (ret < 0) return luv_error(L, ret);
- lua_pushinteger(L, ret);
- return 1;
-}
-
-static int luv_tcp_simultaneous_accepts(lua_State* L) {
- uv_tcp_t* handle = luv_check_tcp(L, 1);
- int ret, enable;
- luaL_checktype(L, 2, LUA_TBOOLEAN);
- enable = lua_toboolean(L, 2);
- ret = uv_tcp_simultaneous_accepts(handle, enable);
- if (ret < 0) return luv_error(L, ret);
- lua_pushinteger(L, ret);
- return 1;
-}
-
-static int luv_tcp_bind(lua_State* L) {
- uv_tcp_t* handle = luv_check_tcp(L, 1);
- const char* host = luaL_checkstring(L, 2);
- int port = luaL_checkinteger(L, 3);
- unsigned int flags = 0;
- struct sockaddr_storage addr;
- int ret;
- if (uv_ip4_addr(host, port, (struct sockaddr_in*)&addr) &&
- uv_ip6_addr(host, port, (struct sockaddr_in6*)&addr)) {
- return luaL_error(L, "Invalid IP address or port [%s:%d]", host, port);
- }
- if (lua_type(L, 4) == LUA_TTABLE) {
- lua_getfield(L, 4, "ipv6only");
- if (lua_toboolean(L, -1)) flags |= UV_TCP_IPV6ONLY;
- lua_pop(L, 1);
- }
- ret = uv_tcp_bind(handle, (struct sockaddr*)&addr, flags);
- if (ret < 0) return luv_error(L, ret);
- lua_pushinteger(L, ret);
- return 1;
-}
-
-static void parse_sockaddr(lua_State* L, struct sockaddr_storage* address, int addrlen) {
- char ip[INET6_ADDRSTRLEN];
- int port = 0;
- lua_newtable(L);
- if (address->ss_family == AF_INET) {
- struct sockaddr_in* addrin = (struct sockaddr_in*)address;
- uv_inet_ntop(AF_INET, &(addrin->sin_addr), ip, addrlen);
- port = ntohs(addrin->sin_port);
- } else if (address->ss_family == AF_INET6) {
- struct sockaddr_in6* addrin6 = (struct sockaddr_in6*)address;
- uv_inet_ntop(AF_INET6, &(addrin6->sin6_addr), ip, addrlen);
- port = ntohs(addrin6->sin6_port);
- }
-
- lua_pushstring(L, luv_af_num_to_string(address->ss_family));
- lua_setfield(L, -2, "family");
- lua_pushinteger(L, port);
- lua_setfield(L, -2, "port");
- lua_pushstring(L, ip);
- lua_setfield(L, -2, "ip");
-}
-
-static int luv_tcp_getsockname(lua_State* L) {
- uv_tcp_t* handle = luv_check_tcp(L, 1);
- struct sockaddr_storage address;
- int addrlen = sizeof(address);
- int ret = uv_tcp_getsockname(handle, (struct sockaddr*)&address, &addrlen);
- if (ret < 0) return luv_error(L, ret);
- parse_sockaddr(L, &address, addrlen);
- return 1;
-}
-
-static int luv_tcp_getpeername(lua_State* L) {
- uv_tcp_t* handle = luv_check_tcp(L, 1);
- struct sockaddr_storage address;
- int addrlen = sizeof(address);
- int ret = uv_tcp_getpeername(handle, (struct sockaddr*)&address, &addrlen);
- if (ret < 0) return luv_error(L, ret);
- parse_sockaddr(L, &address, addrlen);
- return 1;
-}
-
-
-static void luv_connect_cb(uv_connect_t* req, int status) {
- lua_State* L = luv_state(req->handle->loop);
- luv_status(L, status);
- luv_fulfill_req(L, req->data, 1);
- luv_cleanup_req(L, req->data);
- req->data = NULL;
-}
-
-static int luv_write_queue_size(lua_State* L) {
- uv_tcp_t* handle = luv_check_tcp(L, 1);
- lua_pushinteger(L, handle->write_queue_size);
- return 1;
-}
-
-static int luv_tcp_connect(lua_State* L) {
- uv_tcp_t* handle = luv_check_tcp(L, 1);
- const char* host = luaL_checkstring(L, 2);
- int port = luaL_checkinteger(L, 3);
- struct sockaddr_storage addr;
- uv_connect_t* req;
- int ret, ref;
- if (uv_ip4_addr(host, port, (struct sockaddr_in*)&addr) &&
- uv_ip6_addr(host, port, (struct sockaddr_in6*)&addr)) {
- return luaL_error(L, "Invalid IP address or port [%s:%d]", host, port);
- }
- ref = luv_check_continuation(L, 4);
-
- req = lua_newuserdata(L, sizeof(*req));
- req->data = luv_setup_req(L, ref);
- ret = uv_tcp_connect(req, handle, (struct sockaddr*)&addr, luv_connect_cb);
- if (ret < 0) {
- lua_pop(L, 1);
- return luv_error(L, ret);
- }
- return 1;
-}
diff --git a/3rdparty/luv/src/thread.c b/3rdparty/luv/src/thread.c
deleted file mode 100644
index cc53011e6ed..00000000000
--- a/3rdparty/luv/src/thread.c
+++ /dev/null
@@ -1,353 +0,0 @@
-/*
-* Copyright 2014 The Luvit Authors. All Rights Reserved.
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*
-*/
-#include "luv.h"
-#include "lthreadpool.h"
-
-typedef struct {
- uv_thread_t handle;
- char* code;
- int len;
- int argc;
- luv_thread_arg_t arg;
-} luv_thread_t;
-
-static luv_acquire_vm acquire_vm_cb = NULL;
-static luv_release_vm release_vm_cb = NULL;
-
-static lua_State* luv_thread_acquire_vm() {
- lua_State* L = luaL_newstate();
-
- // Add in the lua standard libraries
- luaL_openlibs(L);
-
- // Get package.loaded, so we can store uv in it.
- lua_getglobal(L, "package");
- lua_getfield(L, -1, "loaded");
- lua_remove(L, -2); // Remove package
-
- // Store uv module definition at loaded.uv
- luaopen_luv(L);
- lua_setfield(L, -2, "luv");
- lua_pop(L, 1);
-
- return L;
-}
-
-static void luv_thread_release_vm(lua_State* L) {
- lua_close(L);
-}
-
-static int luv_thread_arg_set(lua_State* L, luv_thread_arg_t* args, int idx, int top, int flag)
-{
- int i;
- idx = idx > 0 ? idx : 1;
- i = idx;
- while (i <= top && i <= LUV_THREAD_MAXNUM_ARG + idx)
- {
- luv_val_t *arg = args->argv + i - idx;
- arg->type = lua_type(L, i);
- switch (arg->type)
- {
- case LUA_TNIL:
- break;
- case LUA_TBOOLEAN:
- arg->val.boolean = lua_toboolean(L, i);
- break;
- case LUA_TNUMBER:
- arg->val.num = lua_tonumber(L, i);
- break;
- case LUA_TLIGHTUSERDATA:
- arg->val.userdata = lua_touserdata(L, i);
- break;
- case LUA_TSTRING:
- {
- const char* p = lua_tolstring(L, i, &arg->val.str.len);
- arg->val.str.base = malloc(arg->val.str.len);
- if (arg->val.str.base == NULL)
- {
- perror("out of memory");
- return 0;
- }
- memcpy((void*)arg->val.str.base, p, arg->val.str.len);
- break;
- }
- case LUA_TUSERDATA:
- if (flag == 1) {
- arg->val.userdata = luv_check_handle(L, i);
- break;
- }
- default:
- fprintf(stderr, "Error: thread arg not support type '%s' at %d",
- luaL_typename(L, arg->type), i);
- exit(-1);
- break;
- }
- i++;
- }
- args->argc = i - idx;
- return args->argc;
-}
-
-static void luv_thread_arg_clear(luv_thread_arg_t* args) {
- int i;
- for (i = 0; i < args->argc; i++)
- {
- if (args->argv[i].type == LUA_TSTRING)
- {
- free((void*)args->argv[i].val.str.base);
- }
- }
- memset(args, 0, sizeof(*args));
- args->argc = 0;
-}
-
-static void luv_thread_setup_handle(lua_State* L, uv_handle_t* handle) {
- *(void**) lua_newuserdata(L, sizeof(void*)) = handle;
-
-#define XX(uc, lc) case UV_##uc: \
- luaL_getmetatable(L, "uv_"#lc); \
- break;
- switch (handle->type) {
- UV_HANDLE_TYPE_MAP(XX)
- default:
- luaL_error(L, "Unknown handle type");
- }
-#undef XX
-
- lua_setmetatable(L, -2);
-}
-
-static int luv_thread_arg_push(lua_State* L, const luv_thread_arg_t* args) {
- int i = 0;
- while (i < args->argc)
- {
- const luv_val_t* arg = args->argv + i;
- switch (arg->type)
- {
- case LUA_TNIL:
- lua_pushnil(L);
- break;
- case LUA_TBOOLEAN:
- lua_pushboolean(L, arg->val.boolean);
- break;
- case LUA_TLIGHTUSERDATA:
- lua_pushlightuserdata(L, arg->val.userdata);
- break;
- case LUA_TNUMBER:
- lua_pushnumber(L, arg->val.num);
- break;
- case LUA_TSTRING:
- lua_pushlstring(L, arg->val.str.base, arg->val.str.len);
- break;
- case LUA_TUSERDATA:
- luv_thread_setup_handle(L, arg->val.userdata);
- break;
- default:
- fprintf(stderr, "Error: thread arg not support type %s at %d",
- luaL_typename(L, arg->type), i + 1);
- }
- i++;
- };
- return i;
-}
-
-int thread_dump(lua_State* L, const void* p, size_t sz, void* B)
-{
- (void)L;
- luaL_addlstring((luaL_Buffer*) B, (const char*) p, sz);
- return 0;
-}
-
-static const char* luv_thread_dumped(lua_State* L, int idx, size_t* l) {
- if (lua_isstring(L, idx)) {
- return lua_tolstring(L, idx, l);
- } else {
- const char* buff = NULL;
- int top = lua_gettop(L);
- luaL_Buffer b;
- luaL_checktype(L, idx, LUA_TFUNCTION);
- lua_pushvalue(L, idx);
- luaL_buffinit(L, &b);
-#if LUA_VERSION_NUM>=503
- int test_lua_dump = (lua_dump(L, thread_dump, &b, 1) == 0);
-#else
- int test_lua_dump = (lua_dump(L, thread_dump, &b) == 0);
-#endif
- if (test_lua_dump) {
- luaL_pushresult(&b);
- buff = lua_tolstring(L, -1, l);
- } else
- luaL_error(L, "Error: unable to dump given function");
- lua_settop(L, top);
-
- return buff;
- }
-}
-
-static luv_thread_t* luv_check_thread(lua_State* L, int index)
-{
- luv_thread_t* thread = luaL_checkudata(L, index, "uv_thread");
- return thread;
-}
-
-static int luv_thread_gc(lua_State* L) {
- luv_thread_t* tid = luv_check_thread(L, 1);
- free(tid->code);
- tid->code = NULL;
- tid->len = 0;
- luv_thread_arg_clear(&tid->arg);
- return 0;
-}
-
-static int luv_thread_tostring(lua_State* L)
-{
- luv_thread_t* thd = luv_check_thread(L, 1);
- lua_pushfstring(L, "uv_thread_t: %p", thd->handle);
- return 1;
-}
-
-static void luv_thread_cb(void* varg) {
- luv_thread_t* thd = (luv_thread_t*)varg;
- lua_State* L = acquire_vm_cb();
- if (luaL_loadbuffer(L, thd->code, thd->len, "=thread") == 0)
- {
- int top = lua_gettop(L);
- int i = luv_thread_arg_push(L, &thd->arg);
-
- for (i = 0; i < thd->arg.argc; i++) {
- if (thd->arg.argv[i].type == LUA_TUSERDATA) {
- lua_pushlightuserdata(L, thd->arg.argv[i].val.userdata);
- lua_pushvalue(L, top + i + 1);
- lua_rawset(L, LUA_REGISTRYINDEX);
- }
- }
-
- if (lua_pcall(L, i, 0, 0)) {
- fprintf(stderr, "Uncaught Error in thread: %s\n", lua_tostring(L, -1));
- }
-
- for (i = 0; i < thd->arg.argc; i++) {
- if (thd->arg.argv[i].type == LUA_TUSERDATA) {
- lua_pushlightuserdata(L, thd->arg.argv[i].val.userdata);
- lua_rawget(L, LUA_REGISTRYINDEX);
- lua_pushnil(L);
- lua_setmetatable(L, -2);
- lua_pop(L, 1);
-
- lua_pushlightuserdata(L, thd->arg.argv[i].val.userdata);
- lua_pushnil(L);
- lua_rawset(L, LUA_REGISTRYINDEX);
- }
- }
-
- } else {
- fprintf(stderr, "Uncaught Error: %s\n", lua_tostring(L, -1));
- }
- release_vm_cb(L);
-}
-
-static int luv_new_thread(lua_State* L) {
- int ret;
- size_t len;
- const char* buff;
- luv_thread_t* thread;
- thread = lua_newuserdata(L, sizeof(*thread));
- memset(thread, 0, sizeof(*thread));
- luaL_getmetatable(L, "uv_thread");
- lua_setmetatable(L, -2);
-
- buff = luv_thread_dumped(L, 1, &len);
-
- thread->argc = luv_thread_arg_set(L, &thread->arg, 2, lua_gettop(L) - 1, 1);
- thread->len = len;
- thread->code = malloc(thread->len);
- memcpy(thread->code, buff, len);
-
- ret = uv_thread_create(&thread->handle, luv_thread_cb, thread);
- if (ret < 0) return luv_error(L, ret);
-
- return 1;
-}
-
-static int luv_thread_join(lua_State* L) {
- luv_thread_t* tid = luv_check_thread(L, 1);
- int ret = uv_thread_join(&tid->handle);
- if (ret < 0) return luv_error(L, ret);
- lua_pushboolean(L, 1);
- return 1;
-}
-
-static int luv_thread_self(lua_State* L)
-{
- luv_thread_t* thread;
- uv_thread_t t = uv_thread_self();
- thread = lua_newuserdata(L, sizeof(*thread));
- memset(thread, 0, sizeof(*thread));
- memcpy(&thread->handle, &t, sizeof(t));
- luaL_getmetatable(L, "uv_thread");
- lua_setmetatable(L, -2);
- return 1;
-}
-
-static int luv_thread_equal(lua_State* L) {
- luv_thread_t* t1 = luv_check_thread(L, 1);
- luv_thread_t* t2 = luv_check_thread(L, 2);
- int ret = uv_thread_equal(&t1->handle, &t2->handle);
- lua_pushboolean(L, ret);
- return 1;
-}
-
-/* Pause the calling thread for a number of milliseconds. */
-static int luv_thread_sleep(lua_State* L) {
-#ifdef _WIN32
- DWORD msec = luaL_checkinteger(L, 1);
- Sleep(msec);
-#else
- lua_Integer msec = luaL_checkinteger(L, 1);
- usleep(msec * 1000);
-#endif
- return 0;
-}
-
-static const luaL_Reg luv_thread_methods[] = {
- {"equal", luv_thread_equal},
- {"join", luv_thread_join},
- {NULL, NULL}
-};
-
-static void luv_thread_init(lua_State* L) {
- luaL_newmetatable(L, "uv_thread");
- lua_pushcfunction(L, luv_thread_tostring);
- lua_setfield(L, -2, "__tostring");
- lua_pushcfunction(L, luv_thread_equal);
- lua_setfield(L, -2, "__eq");
- lua_pushcfunction(L, luv_thread_gc);
- lua_setfield(L, -2, "__gc");
- lua_newtable(L);
- luaL_setfuncs(L, luv_thread_methods, 0);
- lua_setfield(L, -2, "__index");
- lua_pop(L, 1);
-
- if (acquire_vm_cb == NULL) acquire_vm_cb = luv_thread_acquire_vm;
- if (release_vm_cb == NULL) release_vm_cb = luv_thread_release_vm;
-}
-
-LUALIB_API void luv_set_thread_cb(luv_acquire_vm acquire, luv_release_vm release)
-{
- acquire_vm_cb = acquire;
- release_vm_cb = release;
-}
diff --git a/3rdparty/luv/src/timer.c b/3rdparty/luv/src/timer.c
deleted file mode 100644
index b283f1fc8b2..00000000000
--- a/3rdparty/luv/src/timer.c
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Copyright 2014 The Luvit Authors. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-#include "luv.h"
-
-static uv_timer_t* luv_check_timer(lua_State* L, int index) {
- uv_timer_t* handle = luv_checkudata(L, index, "uv_timer");
- luaL_argcheck(L, handle->type == UV_TIMER && handle->data, index, "Expected uv_timer_t");
- return handle;
-}
-
-static int luv_new_timer(lua_State* L) {
- uv_timer_t* handle = luv_newuserdata(L, sizeof(*handle));
- int ret = uv_timer_init(luv_loop(L), handle);
- if (ret < 0) {
- lua_pop(L, 1);
- return luv_error(L, ret);
- }
- handle->data = luv_setup_handle(L);
- return 1;
-}
-
-static void luv_timer_cb(uv_timer_t* handle) {
- lua_State* L = luv_state(handle->loop);
- luv_handle_t* data = handle->data;
- luv_call_callback(L, data, LUV_TIMEOUT, 0);
-}
-
-static int luv_timer_start(lua_State* L) {
- uv_timer_t* handle = luv_check_timer(L, 1);
- uint64_t timeout;
- uint64_t repeat;
- int ret;
- timeout = luaL_checkinteger(L, 2);
- repeat = luaL_checkinteger(L, 3);
- luv_check_callback(L, handle->data, LUV_TIMEOUT, 4);
- ret = uv_timer_start(handle, luv_timer_cb, timeout, repeat);
- if (ret < 0) return luv_error(L, ret);
- lua_pushinteger(L, ret);
- return 1;
-}
-
-static int luv_timer_stop(lua_State* L) {
- uv_timer_t* handle = luv_check_timer(L, 1);
- int ret = uv_timer_stop(handle);
- if (ret < 0) return luv_error(L, ret);
- lua_pushinteger(L, ret);
- return 1;
-}
-
-static int luv_timer_again(lua_State* L) {
- uv_timer_t* handle = luv_check_timer(L, 1);
- int ret = uv_timer_again(handle);
- if (ret < 0) return luv_error(L, ret);
- lua_pushinteger(L, ret);
- return 1;
-}
-
-static int luv_timer_set_repeat(lua_State* L) {
- uv_timer_t* handle = luv_check_timer(L, 1);
- uint64_t repeat = luaL_checkinteger(L, 2);
- uv_timer_set_repeat(handle, repeat);
- return 0;
-}
-
-static int luv_timer_get_repeat(lua_State* L) {
- uv_timer_t* handle = luv_check_timer(L, 1);
- uint64_t repeat = uv_timer_get_repeat(handle);
- lua_pushinteger(L, repeat);
- return 1;
-}
diff --git a/3rdparty/luv/src/tty.c b/3rdparty/luv/src/tty.c
deleted file mode 100644
index 9232dc07603..00000000000
--- a/3rdparty/luv/src/tty.c
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright 2014 The Luvit Authors. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-#include "luv.h"
-
-static uv_tty_t* luv_check_tty(lua_State* L, int index) {
- uv_tty_t* handle = luv_checkudata(L, index, "uv_tty");
- luaL_argcheck(L, handle->type == UV_TTY && handle->data, index, "Expected uv_tty_t");
- return handle;
-}
-
-static int luv_new_tty(lua_State* L) {
- int readable, ret;
- uv_tty_t* handle;
- uv_file fd = luaL_checkinteger(L, 1);
- luaL_checktype(L, 2, LUA_TBOOLEAN);
- readable = lua_toboolean(L, 2);
- handle = luv_newuserdata(L, sizeof(*handle));
- ret = uv_tty_init(luv_loop(L), handle, fd, readable);
- if (ret < 0) {
- lua_pop(L, 1);
- return luv_error(L, ret);
- }
- handle->data = luv_setup_handle(L);
- return 1;
-}
-
-static int luv_tty_set_mode(lua_State* L) {
- uv_tty_t* handle = luv_check_tty(L, 1);
- int mode = luaL_checkinteger(L, 2);
- int ret = uv_tty_set_mode(handle, mode);
- if (ret < 0) return luv_error(L, ret);
- lua_pushinteger(L, ret);
- return 1;
-}
-
-static int luv_tty_reset_mode(lua_State* L) {
- int ret = uv_tty_reset_mode();
- if (ret < 0) return luv_error(L, ret);
- lua_pushinteger(L, ret);
- return 1;
-}
-
-static int luv_tty_get_winsize(lua_State* L) {
- uv_tty_t* handle = luv_check_tty(L, 1);
- int width, height;
- int ret = uv_tty_get_winsize(handle, &width, &height);
- if (ret < 0) return luv_error(L, ret);
- lua_pushinteger(L, width);
- lua_pushinteger(L, height);
- return 2;
-}
diff --git a/3rdparty/luv/src/udp.c b/3rdparty/luv/src/udp.c
deleted file mode 100644
index 9cc25555559..00000000000
--- a/3rdparty/luv/src/udp.c
+++ /dev/null
@@ -1,260 +0,0 @@
-/*
- * Copyright 2014 The Luvit Authors. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-#include "luv.h"
-
-static uv_udp_t* luv_check_udp(lua_State* L, int index) {
- uv_udp_t* handle = luv_checkudata(L, index, "uv_udp");
- luaL_argcheck(L, handle->type == UV_UDP && handle->data, index, "Expected uv_udp_t");
- return handle;
-}
-
-static int luv_new_udp(lua_State* L) {
- uv_udp_t* handle = luv_newuserdata(L, sizeof(*handle));
- int ret = uv_udp_init(luv_loop(L), handle);
- if (ret < 0) {
- lua_pop(L, 1);
- return luv_error(L, ret);
- }
- handle->data = luv_setup_handle(L);
- return 1;
-}
-
-static int luv_udp_open(lua_State* L) {
- uv_udp_t* handle = luv_check_udp(L, 1);
- uv_os_sock_t sock = luaL_checkinteger(L, 2);
- int ret = uv_udp_open(handle, sock);
- if (ret < 0) return luv_error(L, ret);
- lua_pushinteger(L, ret);
- return 1;
-}
-
-static int luv_udp_bind(lua_State* L) {
- uv_udp_t* handle = luv_check_udp(L, 1);
- const char* host = luaL_checkstring(L, 2);
- int port = luaL_checkinteger(L, 3);
- unsigned int flags = 0;
- struct sockaddr_storage addr;
- int ret;
- if (uv_ip4_addr(host, port, (struct sockaddr_in*)&addr) &&
- uv_ip6_addr(host, port, (struct sockaddr_in6*)&addr)) {
- return luaL_error(L, "Invalid IP address or port [%s:%d]", host, port);
- }
- if (lua_type(L, 4) == LUA_TTABLE) {
- luaL_checktype(L, 4, LUA_TTABLE);
- lua_getfield(L, 4, "reuseaddr");
- if (lua_toboolean(L, -1)) flags |= UV_UDP_REUSEADDR;
- lua_pop(L, 1);
- lua_getfield(L, 4, "ipv6only");
- if (lua_toboolean(L, -1)) flags |= UV_UDP_IPV6ONLY;
- lua_pop(L, 1);
- }
- ret = uv_udp_bind(handle, (struct sockaddr*)&addr, flags);
- if (ret < 0) return luv_error(L, ret);
- lua_pushinteger(L, ret);
- return 1;
-}
-
-static int luv_udp_getsockname(lua_State* L) {
- uv_udp_t* handle = luv_check_udp(L, 1);
- struct sockaddr_storage address;
- int addrlen = sizeof(address);
- int ret = uv_udp_getsockname(handle, (struct sockaddr*)&address, &addrlen);
- if (ret < 0) return luv_error(L, ret);
- parse_sockaddr(L, &address, addrlen);
- return 1;
-}
-
-// These are the same order as uv_membership which also starts at 0
-static const char *const luv_membership_opts[] = {
- "leave", "join", NULL
-};
-
-static int luv_udp_set_membership(lua_State* L) {
- uv_udp_t* handle = luv_check_udp(L, 1);
- const char* multicast_addr = luaL_checkstring(L, 2);
- const char* interface_addr = luaL_checkstring(L, 3);
- uv_membership membership = luaL_checkoption(L, 4, NULL, luv_membership_opts);
- int ret = uv_udp_set_membership(handle, multicast_addr, interface_addr, membership);
- if (ret < 0) return luv_error(L, ret);
- lua_pushinteger(L, ret);
- return 1;
-}
-
-static int luv_udp_set_multicast_loop(lua_State* L) {
- uv_udp_t* handle = luv_check_udp(L, 1);
- int on, ret;
- luaL_checktype(L, 2, LUA_TBOOLEAN);
- on = lua_toboolean(L, 2);
- ret = uv_udp_set_multicast_loop(handle, on);
- if (ret < 0) return luv_error(L, ret);
- lua_pushinteger(L, ret);
- return 1;
-}
-
-static int luv_udp_set_multicast_ttl(lua_State* L) {
- uv_udp_t* handle = luv_check_udp(L, 1);
- int ttl, ret;
- ttl = luaL_checkinteger(L, 2);
- ret = uv_udp_set_multicast_ttl(handle, ttl);
- if (ret < 0) return luv_error(L, ret);
- lua_pushinteger(L, ret);
- return 1;
-}
-
-static int luv_udp_set_multicast_interface(lua_State* L) {
- uv_udp_t* handle = luv_check_udp(L, 1);
- const char* interface_addr = luaL_checkstring(L, 2);
- int ret = uv_udp_set_multicast_interface(handle, interface_addr);
- if (ret < 0) return luv_error(L, ret);
- lua_pushinteger(L, ret);
- return 1;
-}
-
-static int luv_udp_set_broadcast(lua_State* L) {
- uv_udp_t* handle = luv_check_udp(L, 1);
- int on, ret;
- luaL_checktype(L, 2, LUA_TBOOLEAN);
- on = lua_toboolean(L, 2);
- ret =uv_udp_set_broadcast(handle, on);
- if (ret < 0) return luv_error(L, ret);
- lua_pushinteger(L, ret);
- return 1;
-}
-
-static int luv_udp_set_ttl(lua_State* L) {
- uv_udp_t* handle = luv_check_udp(L, 1);
- int ttl, ret;
- ttl = luaL_checknumber(L, 2);
- ret = uv_udp_set_ttl(handle, ttl);
- if (ret < 0) return luv_error(L, ret);
- lua_pushinteger(L, ret);
- return 1;
-}
-
-static void luv_udp_send_cb(uv_udp_send_t* req, int status) {
- lua_State* L = luv_state(req->handle->loop);
- luv_status(L, status);
- luv_fulfill_req(L, req->data, 1);
- luv_cleanup_req(L, req->data);
- req->data = NULL;
-}
-
-static int luv_udp_send(lua_State* L) {
- uv_udp_t* handle = luv_check_udp(L, 1);
- uv_udp_send_t* req;
- uv_buf_t buf;
- int ret, port, ref;
- const char* host;
- struct sockaddr_storage addr;
- luv_check_buf(L, 2, &buf);
- host = luaL_checkstring(L, 3);
- port = luaL_checkinteger(L, 4);
- if (uv_ip4_addr(host, port, (struct sockaddr_in*)&addr) &&
- uv_ip6_addr(host, port, (struct sockaddr_in6*)&addr)) {
- return luaL_error(L, "Invalid IP address or port [%s:%d]", host, port);
- }
- ref = luv_check_continuation(L, 5);
- req = lua_newuserdata(L, sizeof(*req));
- req->data = luv_setup_req(L, ref);
- ret = uv_udp_send(req, handle, &buf, 1, (struct sockaddr*)&addr, luv_udp_send_cb);
- if (ret < 0) {
- lua_pop(L, 1);
- return luv_error(L, ret);
- }
- return 1;
-
-}
-
-static int luv_udp_try_send(lua_State* L) {
- uv_udp_t* handle = luv_check_udp(L, 1);
- uv_buf_t buf;
- int ret, port;
- const char* host;
- struct sockaddr_storage addr;
- luv_check_buf(L, 2, &buf);
- host = luaL_checkstring(L, 3);
- port = luaL_checkinteger(L, 4);
- if (uv_ip4_addr(host, port, (struct sockaddr_in*)&addr) &&
- uv_ip6_addr(host, port, (struct sockaddr_in6*)&addr)) {
- return luaL_error(L, "Invalid IP address or port [%s:%d]", host, port);
- }
- ret = uv_udp_try_send(handle, &buf, 1, (struct sockaddr*)&addr);
- if (ret < 0) return luv_error(L, ret);
- lua_pushinteger(L, ret);
- return 1;
-}
-
-static void luv_udp_recv_cb(uv_udp_t* handle, ssize_t nread, const uv_buf_t* buf, const struct sockaddr* addr, unsigned flags) {
- lua_State* L = luv_state(handle->loop);
-
- // err
- if (nread < 0) {
- luv_status(L, nread);
- }
- else {
- lua_pushnil(L);
- }
-
- // data
- if (nread == 0) {
- if (addr) {
- lua_pushstring(L, "");
- }
- else {
- lua_pushnil(L);
- }
- }
- else if (nread > 0) {
- lua_pushlstring(L, buf->base, nread);
- }
- if (buf) free(buf->base);
-
- // address
- if (addr) {
- parse_sockaddr(L, (struct sockaddr_storage*)addr, sizeof *addr);
- }
- else {
- lua_pushnil(L);
- }
-
- // flags
- lua_newtable(L);
- if (flags & UV_UDP_PARTIAL) {
- lua_pushboolean(L, 1);
- lua_setfield(L, -2, "partial");
- }
-
- luv_call_callback(L, handle->data, LUV_RECV, 4);
-}
-
-static int luv_udp_recv_start(lua_State* L) {
- uv_udp_t* handle = luv_check_udp(L, 1);
- int ret;
- luv_check_callback(L, handle->data, LUV_RECV, 2);
- ret = uv_udp_recv_start(handle, luv_alloc_cb, luv_udp_recv_cb);
- if (ret < 0) return luv_error(L, ret);
- lua_pushinteger(L, ret);
- return 1;
-}
-
-static int luv_udp_recv_stop(lua_State* L) {
- uv_udp_t* handle = luv_check_udp(L, 1);
- int ret = uv_udp_recv_stop(handle);
- if (ret < 0) return luv_error(L, ret);
- lua_pushinteger(L, ret);
- return 1;
-}
diff --git a/3rdparty/luv/src/util.c b/3rdparty/luv/src/util.c
deleted file mode 100644
index c7b98c1759a..00000000000
--- a/3rdparty/luv/src/util.c
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright 2014 The Luvit Authors. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-#include "luv.h"
-
-void luv_stack_dump(lua_State* L, const char* name) {
- int i, l;
- fprintf(stderr, "\nAPI STACK DUMP %p %d: %s\n", L, lua_status(L), name);
- for (i = 1, l = lua_gettop(L); i <= l; i++) {
- int type = lua_type(L, i);
- switch (type) {
- case LUA_TSTRING:
- fprintf(stderr, " %d %s \"%s\"\n", i, lua_typename(L, type), lua_tostring(L, i));
- break;
- case LUA_TNUMBER:
- fprintf(stderr, " %d %s %ld\n", i, lua_typename(L, type), (long int) lua_tointeger(L, i));
- break;
- case LUA_TUSERDATA:
- fprintf(stderr, " %d %s %p\n", i, lua_typename(L, type), lua_touserdata(L, i));
- break;
- default:
- fprintf(stderr, " %d %s\n", i, lua_typename(L, type));
- break;
- }
- }
- assert(l == lua_gettop(L));
-}
-
-static int luv_error(lua_State* L, int status) {
- lua_pushnil(L);
- lua_pushfstring(L, "%s: %s", uv_err_name(status), uv_strerror(status));
- lua_pushstring(L, uv_err_name(status));
- return 3;
-}
-
-static void luv_status(lua_State* L, int status) {
- if (status < 0) {
- lua_pushstring(L, uv_err_name(status));
- }
- else {
- lua_pushnil(L);
- }
-}
diff --git a/3rdparty/luv/src/util.h b/3rdparty/luv/src/util.h
deleted file mode 100644
index c669c0430db..00000000000
--- a/3rdparty/luv/src/util.h
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Copyright 2014 The Luvit Authors. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-#ifndef LUV_UTIL_H
-#define LUV_UTIL_H
-
-#include "luv.h"
-
-void luv_stack_dump(lua_State* L, const char* name);
-static int luv_error(lua_State* L, int ret);
-static void luv_status(lua_State* L, int status);
-
-#endif
diff --git a/3rdparty/luv/src/work.c b/3rdparty/luv/src/work.c
deleted file mode 100644
index e40212f1e7c..00000000000
--- a/3rdparty/luv/src/work.c
+++ /dev/null
@@ -1,224 +0,0 @@
-/*
-* Copyright 2014 The Luvit Authors. All Rights Reserved.
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*
-*/
-#include "luv.h"
-
-#include "lthreadpool.h"
-
-typedef struct {
- lua_State* L; /* vm in main */
- char* code; /* thread entry code */
- size_t len;
-
- uv_async_t async;
- int async_cb; /* ref, run in main, call when async message received, NYI */
- int after_work_cb; /* ref, run in main ,call after work cb*/
-} luv_work_ctx_t;
-
-typedef struct {
- uv_work_t work;
- luv_work_ctx_t* ctx;
-
- luv_thread_arg_t arg;
-} luv_work_t;
-
-static uv_key_t L_key;
-
-static luv_work_ctx_t* luv_check_work_ctx(lua_State* L, int index)
-{
- luv_work_ctx_t* ctx = luaL_checkudata(L, index, "luv_work_ctx");
- return ctx;
-}
-
-static int luv_work_ctx_gc(lua_State *L)
-{
- luv_work_ctx_t* ctx = luv_check_work_ctx(L, 1);
- free(ctx->code);
- luaL_unref(L, LUA_REGISTRYINDEX, ctx->after_work_cb);
- luaL_unref(L, LUA_REGISTRYINDEX, ctx->async_cb);
-
- return 0;
-}
-
-static int luv_work_ctx_tostring(lua_State* L)
-{
- luv_work_ctx_t* ctx = luv_check_work_ctx(L, 1);
- lua_pushfstring(L, "luv_work_ctx_t: %p", ctx);
- return 1;
-}
-
-static void luv_work_cb(uv_work_t* req)
-{
- luv_work_t* work = req->data;
- luv_work_ctx_t* ctx = work->ctx;
- lua_State *L = uv_key_get(&L_key);
- int top;
- if (L == NULL) {
- /* vm reuse in threadpool */
- L = acquire_vm_cb();
- uv_key_set(&L_key, L);
- }
-
- top = lua_gettop(L);
- lua_pushlstring(L, ctx->code, ctx->len);
- lua_rawget(L, LUA_REGISTRYINDEX);
- if (lua_isnil(L, -1))
- {
- lua_pop(L, 1);
-
- lua_pushlstring(L, ctx->code, ctx->len);
- if (luaL_loadbuffer(L, ctx->code, ctx->len, "=pool") != 0)
- {
- fprintf(stderr, "Uncaught Error: %s\n", lua_tostring(L, -1));
- lua_pop(L, 2);
-
- lua_pushnil(L);
- } else
- {
- lua_pushvalue(L, -1);
- lua_insert(L, lua_gettop(L) - 2);
- lua_rawset(L, LUA_REGISTRYINDEX);
- }
- }
-
- if (lua_isfunction(L, -1))
- {
- int i = luv_thread_arg_push(L, &work->arg);
- if (lua_pcall(L, i, LUA_MULTRET, 0)) {
- fprintf(stderr, "Uncaught Error in thread: %s\n", lua_tostring(L, -1));
- }
- luv_thread_arg_clear(&work->arg);
- luv_thread_arg_set(L, &work->arg, top + 1, lua_gettop(L), 0);
- lua_settop(L, top);
- } else {
- fprintf(stderr, "Uncaught Error: %s can't be work entry\n",
- lua_typename(L, lua_type(L,-1)));
- }
-}
-
-static void luv_after_work_cb(uv_work_t* req, int status) {
- luv_work_t* work = req->data;
- luv_work_ctx_t* ctx = work->ctx;
- lua_State*L = ctx->L;
- int i;
- (void)status;
- lua_rawgeti(L, LUA_REGISTRYINDEX, ctx->after_work_cb);
- i = luv_thread_arg_push(L, &work->arg);
- if (lua_pcall(L, i, 0, 0))
- {
- fprintf(stderr, "Uncaught Error in thread: %s\n", lua_tostring(L, -1));
- }
-
- //ref down to ctx
- lua_pushlightuserdata(L, work);
- lua_pushnil(L);
- lua_rawset(L, LUA_REGISTRYINDEX);
-
- luv_thread_arg_clear(&work->arg);
- free(work);
-}
-
-static void async_cb(uv_async_t *handle)
-{
- luv_work_t*work = handle->data;
- luv_work_ctx_t* ctx = work->ctx;
- lua_State*L = ctx->L;
- int i;
- lua_rawgeti(L, LUA_REGISTRYINDEX, ctx->async_cb);
- i = luv_thread_arg_push(L, &work->arg);
- if (lua_pcall(L, i, 0, 0))
- {
- fprintf(stderr, "Uncaught Error in thread: %s\n", lua_tostring(L, -1));
- }
-}
-
-static int luv_new_work(lua_State* L) {
- size_t len;
- const char* buff;
- luv_work_ctx_t* ctx;
-
- buff = luv_thread_dumped(L, 1, &len);
- luaL_checktype(L, 2, LUA_TFUNCTION);
- if(!lua_isnoneornil(L, 3))
- luaL_checktype(L, 3, LUA_TFUNCTION);
-
- ctx = lua_newuserdata(L, sizeof(*ctx));
- memset(ctx, 0, sizeof(*ctx));
-
- ctx->len = len;
- ctx->code = malloc(ctx->len);
- memcpy(ctx->code, buff, len);
-
- lua_pushvalue(L, 2);
- ctx->after_work_cb = luaL_ref(L, LUA_REGISTRYINDEX);
- if (lua_gettop(L) == 4) {
- lua_pushvalue(L, 3);
- ctx->async_cb = luaL_ref(L, LUA_REGISTRYINDEX);
- uv_async_init(luv_loop(L), &ctx->async, async_cb);
- } else
- ctx->async_cb = LUA_REFNIL;
- ctx->L = L;
- luaL_getmetatable(L, "luv_work_ctx");
- lua_setmetatable(L, -2);
- return 1;
-}
-
-static int luv_queue_work(lua_State* L) {
- int top = lua_gettop(L);
- luv_work_ctx_t* ctx = luv_check_work_ctx(L, 1);
- luv_work_t* work = malloc(sizeof(*work));
- int ret;
-
- luv_thread_arg_set(L, &work->arg, 2, top, 0);
- work->ctx = ctx;
- work->work.data = work;
- ret = uv_queue_work(luv_loop(L), &work->work, luv_work_cb, luv_after_work_cb);
- if (ret < 0) {
- free(work);
- return luv_error(L, ret);
- }
-
- //ref up to ctx
- lua_pushlightuserdata(L, work);
- lua_pushvalue(L, 1);
- lua_rawset(L, LUA_REGISTRYINDEX);
-
- lua_pushboolean(L, 1);
- return 1;
-}
-
-static const luaL_Reg luv_work_ctx_methods[] = {
- {"queue", luv_queue_work},
- {NULL, NULL}
-};
-
-static int key_inited = 0;
-static void luv_work_init(lua_State* L) {
- luaL_newmetatable(L, "luv_work_ctx");
- lua_pushcfunction(L, luv_work_ctx_tostring);
- lua_setfield(L, -2, "__tostring");
- lua_pushcfunction(L, luv_work_ctx_gc);
- lua_setfield(L, -2, "__gc");
- lua_newtable(L);
- luaL_setfuncs(L, luv_work_ctx_methods, 0);
- lua_setfield(L, -2, "__index");
- lua_pop(L, 1);
-
- if (key_inited==0) {
- key_inited = 1;
- uv_key_create(&L_key);
- }
-}
diff --git a/3rdparty/luv/tests/manual-test-cluster.lua b/3rdparty/luv/tests/manual-test-cluster.lua
deleted file mode 100644
index 304e4be634d..00000000000
--- a/3rdparty/luv/tests/manual-test-cluster.lua
+++ /dev/null
@@ -1,213 +0,0 @@
--- This is quite the involved test. Basically it binds
--- to a tcp port, spawns n children (one per CPU core)
--- who all listen on the same shared port and act as a
--- load balancing cluster.
--- Then N clients are spawned that connect to the cluster
--- The application itself kills the worker upon connection
--- All N workers should accept exactly one request and all close.
-
-return require('lib/tap')(function (test)
-
- -- This function will be run in a child process
- local worker_code = string.dump(function ()
- local dump = require('lib/utils').dump
-
- local function print(...)
- local n = select('#', ...)
- local arguments = {...}
- for i = 1, n do
- arguments[i] = tostring(arguments[i])
- end
-
- local text = table.concat(arguments, "\t")
- text = " " .. string.gsub(text, "\n", "\n ")
- _G.print(text)
- end
-
- local function p(...)
- local n = select('#', ...)
- local arguments = { ... }
-
- for i = 1, n do
- arguments[i] = dump(arguments[i])
- end
-
- print(table.concat(arguments, "\t"))
- end
-
- local uv = require('luv')
- local answer = -1
-
- -- The parent is going to pass us the server handle over a pipe
- -- This will be our local file descriptor at PIPE_FD
- local pipe = uv.new_pipe(true)
- local pipe_fd = tonumber(os.getenv("PIPE_FD"))
- assert(uv.pipe_open(pipe, pipe_fd))
-
- -- Configure the server handle
- local server = uv.new_tcp()
- local done = false
- local function onconnection()
- print("NOT ACCEPTING, already done")
- if done then return end
- local client = uv.new_tcp()
- assert(uv.accept(server, client))
- p("New TCP", client, "on", server)
- p{client=client}
- assert(uv.write(client, "BYE!\n"));
- assert(uv.shutdown(client, function ()
- uv.close(client)
- uv.unref(server)
- done = true
- answer = 42
- end))
- end
-
- -- Read the server handle from the parent
- local function onread(err, data)
- p("onread", {err=err,data=data})
- assert(not err, err)
- if uv.pipe_pending_count(pipe) > 0 then
- local pending_type = uv.pipe_pending_type(pipe)
- p("pending_type", pending_type)
- assert(pending_type == "tcp")
- assert(uv.accept(pipe, server))
- assert(uv.listen(server, 0, onconnection))
- p("Received server handle from parent process", server)
- elseif data then
- p("ondata", data)
- else
- p("onend", data)
- end
- end
- uv.read_start(pipe, onread)
-
- -- Start the event loop!
- uv.run()
-
- os.exit(answer)
- end)
-
- local client_code = string.dump(function ()
- local dump = require('lib/utils').dump
-
- local function print(...)
- local n = select('#', ...)
- local arguments = {...}
- for i = 1, n do
- arguments[i] = tostring(arguments[i])
- end
-
- local text = table.concat(arguments, "\t")
- text = " " .. string.gsub(text, "\n", "\n ")
- _G.print(text)
- end
-
- local function p(...)
- local n = select('#', ...)
- local arguments = { ... }
-
- for i = 1, n do
- arguments[i] = dump(arguments[i])
- end
-
- print(table.concat(arguments, "\t"))
- end
-
- local uv = require('luv')
-
- local host = os.getenv("HOST")
- local port = tonumber(os.getenv("PORT"))
-
- local socket = uv.new_tcp()
-
- assert(uv.tcp_connect(socket, host, port, function (err)
- p("client connected", {err=err})
- assert(not err, err)
- end))
-
- -- Start the event loop!
- uv.run()
- end)
-
- test("tcp cluster", function (print, p, expect, uv)
-
- local exepath = assert(uv.exepath())
- local cpu_count = # assert(uv.cpu_info())
- local left = cpu_count
-
- local server = uv.new_tcp()
- assert(uv.tcp_bind(server, "::1", 0))
-
- local address = uv.tcp_getsockname(server)
- p{server=server,address=address}
-
- print("Master process bound to TCP port " .. address.port .. " on " .. address.ip)
-
- local function spawnWorker()
- local pipe = uv.new_pipe(true)
- local input = uv.new_pipe(false)
- local child, pid
- child, pid = assert(uv.spawn(exepath, {
- cwd = uv.cwd(),
- stdio = {input,1,2,pipe},
- env= {"PIPE_FD=3"}
- }, expect(function (status, signal)
- p("Worker exited", {status=status,signal=signal})
- assert(status == 42, "worker should return 42")
- assert(signal == 0)
- left = left - 1
- uv.close(child)
- uv.close(input)
- uv.close(pipe)
- if left == 0 then
- p("All workers are now dead")
- uv.close(server)
- end
- end)))
- p("Spawned worker", pid, "and sending handle", server)
- assert(uv.write(input, worker_code))
- assert(uv.write2(pipe, "123", server))
- assert(uv.shutdown(input))
- assert(uv.shutdown(pipe))
- end
-
- local function spawnClient()
- local input = uv.new_pipe(false)
- local child, pid
- child, pid = assert(uv.spawn(exepath, {
- stdio = {input,1,2},
- cwd = uv.cwd(),
- env= {
- "HOST=" .. address.ip,
- "PORT=" .. address.port,
- }
- }, expect(function (status, signal)
- p("Client exited", {status=status,signal=signal})
- assert(status == 0)
- assert(signal == 0)
- uv.close(child)
- end, left)))
- p("Spawned client", pid)
- assert(uv.write(input, client_code))
- assert(uv.shutdown(input))
- uv.close(input)
- end
-
- -- Spawn a child process for each CPU core
- for _ = 1, cpu_count do
- spawnWorker()
- end
-
- -- Spawn the clients after a short delay
- local timer = uv.new_timer()
- uv.timer_start(timer, 1000, 0, expect(function ()
- for _ = 1, cpu_count do
- spawnClient()
- end
- uv.close(timer)
- end))
-
- end)
-end)
-
diff --git a/3rdparty/luv/tests/run.lua b/3rdparty/luv/tests/run.lua
deleted file mode 100644
index ea94e9bd58b..00000000000
--- a/3rdparty/luv/tests/run.lua
+++ /dev/null
@@ -1,33 +0,0 @@
--- Run this from the parent directory as
---
--- luajit tests/run.lua
---
-
-local tap = require("lib/tap")
-local uv = require("luv")
-
-local isWindows
-if jit and jit.os then
- -- Luajit provides explicit platform detection
- isWindows = jit.os == "Windows"
-else
- -- Normal lua will only have \ for path separator on windows.
- isWindows = package.config:find("\\") and true or false
-end
-_G.isWindows = isWindows
-
-local req = uv.fs_scandir("tests")
-
-while true do
- local name = uv.fs_scandir_next(req)
- if not name then break end
- local match = string.match(name, "^test%-(.*).lua$")
- if match then
- local path = "tests/test-" .. match
- tap(match)
- require(path)
- end
-end
-
--- run the tests!
-tap(true)
diff --git a/3rdparty/luv/tests/test-async.lua b/3rdparty/luv/tests/test-async.lua
deleted file mode 100644
index 88527cdb88d..00000000000
--- a/3rdparty/luv/tests/test-async.lua
+++ /dev/null
@@ -1,32 +0,0 @@
-return require('lib/tap')(function (test)
-
- test("test pass async between threads", function(p, p, expect, uv)
- local before = os.time()
- local async
- async = uv.new_async(expect(function (a,b,c)
- p('in async notify callback')
- p(a,b,c)
- assert(a=='a')
- assert(b==true)
- assert(c==250)
- uv.close(async)
- end))
- local args = {500, 'string', nil, false, 5, "helloworld",async}
- local unpack = unpack or table.unpack
- uv.new_thread(function(num,s,null,bool,five,hw,asy)
- local uv = require'luv'
- assert(type(num) == "number")
- assert(type(s) == "string")
- assert(null == nil)
- assert(bool == false)
- assert(five == 5)
- assert(hw == 'helloworld')
- assert(type(asy)=='userdata')
- assert(uv.async_send(asy,'a',true,250)==0)
- uv.sleep(1000)
- end, unpack(args)):join()
- local elapsed = (os.time() - before) * 1000
- assert(elapsed >= 1000, "elapsed should be at least delay ")
- end)
-
-end)
diff --git a/3rdparty/luv/tests/test-conversions.lua b/3rdparty/luv/tests/test-conversions.lua
deleted file mode 100644
index f14056ddfb5..00000000000
--- a/3rdparty/luv/tests/test-conversions.lua
+++ /dev/null
@@ -1,6 +0,0 @@
-return require('lib/tap')(function (test)
- test("basic 64bit conversions", function (print, p, expect, uv)
- assert(string.format("%x", 29913653248) == "6f6fe2000")
- assert(string.format("%x", 32207650816) == "77fb9c000")
- end)
-end)
diff --git a/3rdparty/luv/tests/test-dns.lua b/3rdparty/luv/tests/test-dns.lua
deleted file mode 100644
index c24adba7164..00000000000
--- a/3rdparty/luv/tests/test-dns.lua
+++ /dev/null
@@ -1,125 +0,0 @@
-return require('lib/tap')(function (test)
-
- test("Get all local http addresses", function (print, p, expect, uv)
- assert(uv.getaddrinfo(nil, "http", nil, expect(function (err, res)
- p(res, #res)
- assert(not err, err)
- assert(res[1].port == 80)
- end)))
- end)
-
- test("Get all local http addresses sync", function (print, p, expect, uv)
- local res = assert(uv.getaddrinfo(nil, "http"))
- p(res, #res)
- assert(res[1].port == 80)
- end)
-
- test("Get only ipv4 tcp adresses for luvit.io", function (print, p, expect, uv)
- assert(uv.getaddrinfo("luvit.io", nil, {
- socktype = "stream",
- family = "inet",
- }, expect(function (err, res)
- assert(not err, err)
- p(res, #res)
- assert(#res == 1)
- end)))
- end)
-
- -- FIXME: this test always fails on AppVeyor for some reason
- if _G.isWindows and not os.getenv'APPVEYOR' then
- test("Get only ipv6 tcp adresses for luvit.io", function (print, p, expect, uv)
- assert(uv.getaddrinfo("luvit.io", nil, {
- socktype = "stream",
- family = "inet6",
- }, expect(function (err, res)
- assert(not err, err)
- p(res, #res)
- assert(#res == 1)
- end)))
- end)
- end
-
- test("Get ipv4 and ipv6 tcp adresses for luvit.io", function (print, p, expect, uv)
- assert(uv.getaddrinfo("luvit.io", nil, {
- socktype = "stream",
- }, expect(function (err, res)
- assert(not err, err)
- p(res, #res)
- assert(#res > 0)
- end)))
- end)
-
- test("Get all adresses for luvit.io", function (print, p, expect, uv)
- assert(uv.getaddrinfo("luvit.io", nil, nil, expect(function (err, res)
- assert(not err, err)
- p(res, #res)
- assert(#res > 0)
- end)))
- end)
-
- test("Lookup local ipv4 address", function (print, p, expect, uv)
- assert(uv.getnameinfo({
- family = "inet",
- }, expect(function (err, hostname, service)
- p{err=err,hostname=hostname,service=service}
- assert(not err, err)
- assert(hostname)
- assert(service)
- end)))
- end)
-
- test("Lookup local ipv4 address sync", function (print, p, expect, uv)
- local hostname, service = assert(uv.getnameinfo({
- family = "inet",
- }))
- p{hostname=hostname,service=service}
- assert(hostname)
- assert(service)
- end)
-
- test("Lookup local 127.0.0.1 ipv4 address", function (print, p, expect, uv)
- assert(uv.getnameinfo({
- ip = "127.0.0.1",
- }, expect(function (err, hostname, service)
- p{err=err,hostname=hostname,service=service}
- assert(not err, err)
- assert(hostname)
- assert(service)
- end)))
- end)
-
- test("Lookup local ipv6 address", function (print, p, expect, uv)
- assert(uv.getnameinfo({
- family = "inet6",
- }, expect(function (err, hostname, service)
- p{err=err,hostname=hostname,service=service}
- assert(not err, err)
- assert(hostname)
- assert(service)
- end)))
- end)
-
- test("Lookup local ::1 ipv6 address", function (print, p, expect, uv)
- assert(uv.getnameinfo({
- ip = "::1",
- }, expect(function (err, hostname, service)
- p{err=err,hostname=hostname,service=service}
- assert(not err, err)
- assert(hostname)
- assert(service)
- end)))
- end)
-
- test("Lookup local port 80 service", function (print, p, expect, uv)
- assert(uv.getnameinfo({
- port = 80,
- family = "inet6",
- }, expect(function (err, hostname, service)
- p{err=err,hostname=hostname,service=service}
- assert(not err, err)
- assert(hostname)
- assert(service == "http")
- end)))
- end)
-
-end)
diff --git a/3rdparty/luv/tests/test-fs.lua b/3rdparty/luv/tests/test-fs.lua
deleted file mode 100644
index 4bfd67e6578..00000000000
--- a/3rdparty/luv/tests/test-fs.lua
+++ /dev/null
@@ -1,90 +0,0 @@
-return require('lib/tap')(function (test)
-
- test("read a file sync", function (print, p, expect, uv)
- local fd = assert(uv.fs_open('README.md', 'r', tonumber('644', 8)))
- p{fd=fd}
- local stat = assert(uv.fs_fstat(fd))
- p{stat=stat}
- local chunk = assert(uv.fs_read(fd, stat.size, 0))
- assert(#chunk == stat.size)
- assert(uv.fs_close(fd))
- end)
-
- test("read a file async", function (print, p, expect, uv)
- uv.fs_open('README.md', 'r', tonumber('644', 8), expect(function (err, fd)
- assert(not err, err)
- p{fd=fd}
- uv.fs_fstat(fd, expect(function (err, stat)
- assert(not err, err)
- p{stat=stat}
- uv.fs_read(fd, stat.size, 0, expect(function (err, chunk)
- assert(not err, err)
- p{chunk=#chunk}
- assert(#chunk == stat.size)
- uv.fs_close(fd, expect(function (err)
- assert(not err, err)
- end))
- end))
- end))
- end))
- end)
-
- test("fs.write", function (print, p, expect, uv)
- local path = "_test_"
- local fd = assert(uv.fs_open(path, "w", 438))
- uv.fs_write(fd, "Hello World\n", -1)
- uv.fs_write(fd, {"with\n", "more\n", "lines\n"}, -1)
- uv.fs_close(fd)
- uv.fs_unlink(path)
- end)
-
- test("fs.stat sync", function (print, p, expect, uv)
- local stat = assert(uv.fs_stat("README.md"))
- assert(stat.size)
- end)
-
- test("fs.stat async", function (print, p, expect, uv)
- assert(uv.fs_stat("README.md", expect(function (err, stat)
- assert(not err, err)
- assert(stat.size)
- end)))
- end)
-
- test("fs.stat sync error", function (print, p, expect, uv)
- local stat, err, code = uv.fs_stat("BAD_FILE!")
- p{err=err,code=code,stat=stat}
- assert(not stat)
- assert(err)
- assert(code == "ENOENT")
- end)
-
- test("fs.stat async error", function (print, p, expect, uv)
- assert(uv.fs_stat("BAD_FILE@", expect(function (err, stat)
- p{err=err,stat=stat}
- assert(err)
- assert(not stat)
- end)))
- end)
-
- test("fs.scandir", function (print, p, expect, uv)
- local req = uv.fs_scandir('.')
- local function iter()
- return uv.fs_scandir_next(req)
- end
- for name, ftype in iter do
- p{name=name, ftype=ftype}
- assert(name)
- -- ftype is not available in all filesystems; for example it's
- -- provided for HFS+ (OSX), NTFS (Windows) but not for ext4 (Linux).
- end
- end)
-
- test("fs.realpath", function (print, p, expect, uv)
- p(assert(uv.fs_realpath('.')))
- assert(uv.fs_realpath('.', expect(function (err, path)
- assert(not err, err)
- p(path)
- end)))
- end)
-
-end)
diff --git a/3rdparty/luv/tests/test-leaks.lua b/3rdparty/luv/tests/test-leaks.lua
deleted file mode 100644
index 06c6e49a0cf..00000000000
--- a/3rdparty/luv/tests/test-leaks.lua
+++ /dev/null
@@ -1,186 +0,0 @@
-return require('lib/tap')(function (test)
-
- local function bench(uv, p, count, fn)
- collectgarbage()
- local before
- local notify = count / 8
- for i = 1, count do
- fn()
- if i % notify == 0 then
- uv.run()
- collectgarbage()
- local now = uv.resident_set_memory()
- if not before then before = now end
- p(i, now)
- end
- end
- uv.run()
- collectgarbage()
- local after = uv.resident_set_memory()
- p{
- before = before,
- after = after,
- }
- assert(after < before * 1.5)
- end
-
- test("fs-write", function (print, p, expect, uv)
- bench(uv, p, 0x7000, function ()
- local path = "_test_"
- local fd = assert(uv.fs_open(path, "w", 438))
- uv.fs_write(fd, "Hello World\n", -1)
- uv.fs_write(fd, {"with\n", "more\n", "lines\n"}, -1)
- uv.fs_close(fd)
- uv.fs_unlink(path)
- end)
- end)
-
- test("lots-o-timers", function (print, p, expect, uv)
- bench(uv, p, 0x10000, function ()
- local timer = uv.new_timer()
- uv.close(timer)
- end)
- end)
-
- test("lots-o-timers with canceled callbacks", function (print, p, expect, uv)
- bench(uv, p, 0x10000, function ()
- local timer = uv.new_timer()
- uv.timer_start(timer, 100, 100, function ()
- end)
- uv.timer_stop(timer)
- uv.close(timer, function ()
- end)
- uv.run()
- end)
- end)
-
- test("lots-o-timers with real timeouts", function (print, p, expect, uv)
- bench(uv, p, 0x500, function ()
- local timer = uv.new_timer()
- uv.timer_start(timer, 10, 0, expect(function ()
- uv.timer_stop(timer)
- uv.close(timer, function ()
- end)
- end))
- end)
- end)
-
- test("reading file async", function (print, p, expect, uv)
- local mode = tonumber("644", 8)
- bench(uv, p, 0x500, function ()
- local onOpen, onStat, onRead, onClose
- local fd, stat
-
- onOpen = expect(function (err, result)
- assert(not err, err)
- fd = result
- uv.fs_fstat(fd, onStat)
- end)
-
- onStat = expect(function (err, result)
- assert(not err, err)
- stat = result
- uv.fs_read(fd, stat.size, 0, onRead)
- end)
-
- onRead = expect(function (err, data)
- assert(not err, err)
- assert(#data == stat.size)
- uv.fs_close(fd, onClose)
- end)
-
- onClose = expect(function (err)
- assert(not err, err)
- end)
-
- assert(uv.fs_open("README.md", "r", mode, onOpen))
- end)
- end)
-
- test("reading file sync", function (print, p, expect, uv)
- local mode = tonumber("644", 8)
- bench(uv, p, 0x2000, function ()
- local fd = assert(uv.fs_open("README.md", "r", mode))
- local stat = assert(uv.fs_fstat(fd))
- local data = assert(uv.fs_read(fd, stat.size, 0))
- assert(#data == stat.size)
- assert(uv.fs_close(fd))
- end)
- end)
-
- test("invalid file", function (print, p, expect, uv)
- local mode = tonumber("644", 8)
- bench(uv, p, 0x1500, function ()
- local req = uv.fs_open("BAD_FILE", "r", mode, expect(function (err, fd)
- assert(not fd)
- assert(err)
- end))
- end)
- end)
-
- test("invalid file sync", function (print, p, expect, uv)
- local mode = tonumber("644", 8)
- bench(uv, p, 0x20000, function ()
- local fd, err = uv.fs_open("BAD_FILE", "r", mode)
- assert(not fd)
- assert(err)
- end)
- end)
-
- test("invalid spawn args", function (print, p, expect, uv)
- -- Regression test for #73
- bench(uv, p, 0x10000, function ()
- local ret, err = pcall(function ()
- return uv.spawn("ls", {
- args = {"-l", "-h"},
- stdio = {0, 1, 2},
- env = {"EXTRA=true"},
- gid = false, -- Should be integer
- })
- end)
- assert(not ret)
- assert(err)
- end)
- end)
-
- test("stream writing with string and array", function (print, p, expect, uv)
- local port = 0
- local server = uv.new_tcp()
- local data
- local count = 0x800
- server:unref()
- server:bind("127.0.0.1", port)
- server:listen(128, expect(function (err)
- assert(not err, err)
- local client = uv.new_tcp()
- server:accept(client)
- client:write(data)
- client:read_start(expect(function (err, data)
- assert(not err, err)
- assert(data)
- client:close()
- end))
- end, count))
- local address = server:getsockname()
- bench(uv, p, count, function ()
- data = string.rep("Hello", 500)
- local socket = uv.new_tcp()
- socket:connect(address.ip, address.port, expect(function (err)
- assert(not err, err)
- socket:read_start(expect(function (err, chunk)
- assert(not err, err)
- assert(chunk)
- local data = {}
- for i = 0, 100 do
- data[i + 1] = string.rep(string.char(i), 100)
- end
- socket:write(data)
- socket:close()
- end))
- end))
- uv.run()
- end)
- server:close()
- end)
-
-end)
diff --git a/3rdparty/luv/tests/test-misc.lua b/3rdparty/luv/tests/test-misc.lua
deleted file mode 100644
index 72a7b30785e..00000000000
--- a/3rdparty/luv/tests/test-misc.lua
+++ /dev/null
@@ -1,85 +0,0 @@
-return require('lib/tap')(function (test)
-
- test("uv.guess_handle", function (print, p, expect, uv)
- local types = {
- [0] = assert(uv.guess_handle(0)),
- assert(uv.guess_handle(1)),
- assert(uv.guess_handle(2)),
- }
- p("stdio fd types", types)
- end)
-
- test("uv.version and uv.version_string", function (print, p, expect, uv)
- local version = assert(uv.version())
- local version_string = assert(uv.version_string())
- p{version=version, version_string=version_string}
- assert(type(version) == "number")
- assert(type(version_string) == "string")
- end)
-
- test("memory size", function (print, p, expect, uv)
- local rss = uv.resident_set_memory()
- local total = uv.get_total_memory()
- local free = uv.get_free_memory()
- p{rss=rss,total=total,free=free}
- assert(rss < total)
- end)
-
- test("uv.uptime", function (print, p, expect, uv)
- local uptime = assert(uv.uptime())
- p{uptime=uptime}
- end)
-
- test("uv.getrusage", function (print, p, expect, uv)
- local rusage = assert(uv.getrusage())
- p(rusage)
- end)
-
- test("uv.cpu_info", function (print, p, expect, uv)
- local info = assert(uv.cpu_info())
- p(info)
- end)
-
- test("uv.interface_addresses", function (print, p, expect, uv)
- local addresses = assert(uv.interface_addresses())
- for name, info in pairs(addresses) do
- p(name, addresses[name])
- end
- end)
-
- test("uv.loadavg", function (print, p, expect, uv)
- local avg = {assert(uv.loadavg())}
- p(avg)
- assert(#avg == 3)
- end)
-
- test("uv.exepath", function (print, p, expect, uv)
- local path = assert(uv.exepath())
- p(path)
- end)
-
- test("uv.os_homedir", function (print, p, expect, uv)
- local path = assert(uv.os_homedir())
- p(path)
- end)
-
- test("uv.cwd and uv.chdir", function (print, p, expect, uv)
- local old = assert(uv.cwd())
- p(old)
- assert(uv.chdir("/"))
- local cwd = assert(uv.cwd())
- p(cwd)
- assert(cwd ~= old)
- assert(uv.chdir(old))
- end)
-
- test("uv.hrtime", function (print, p, expect, uv)
- local time = assert(uv.hrtime())
- p(time)
- end)
-
- test("test_getpid", function (print, p, expect, uv)
- assert(uv.getpid())
- end)
-
-end)
diff --git a/3rdparty/luv/tests/test-prepare-check-idle-async.lua b/3rdparty/luv/tests/test-prepare-check-idle-async.lua
deleted file mode 100644
index 389c2633efb..00000000000
--- a/3rdparty/luv/tests/test-prepare-check-idle-async.lua
+++ /dev/null
@@ -1,49 +0,0 @@
-return require('lib/tap')(function (test)
-
- test("simple prepare", function (print, p, expect, uv)
- local prepare = uv.new_prepare()
- uv.prepare_start(prepare, expect(function ()
- p("prepare", prepare)
- uv.prepare_stop(prepare)
- uv.close(prepare, expect(function ()
- end))
- end))
- end)
-
- test("simple check", function (print, p, expect, uv)
- local check = uv.new_check()
- uv.check_start(check, expect(function ()
- p("check", check)
- uv.check_stop(check)
- uv.close(check, expect(function ()
- end))
- end))
-
- -- Trigger with a timer
- local timer = uv.new_timer()
- uv.timer_start(timer, 10, 0, expect(function()
- p("timeout", timer)
- uv.timer_stop(timer)
- uv.close(timer)
- end))
- end)
-
- test("simple idle", function (print, p, expect, uv)
- local idle = uv.new_idle()
- uv.idle_start(idle, expect(function ()
- p("idle", idle)
- uv.idle_stop(idle)
- uv.close(idle, expect(function ()
- end))
- end))
- end)
-
- test("simple async", function (print, p, expect, uv)
- local async
- async = uv.new_async(expect(function ()
- uv.close(async)
- end))
- uv.async_send(async)
- end)
-
-end)
diff --git a/3rdparty/luv/tests/test-process.lua b/3rdparty/luv/tests/test-process.lua
deleted file mode 100644
index 4d2b6fbfdab..00000000000
--- a/3rdparty/luv/tests/test-process.lua
+++ /dev/null
@@ -1,101 +0,0 @@
-return require('lib/tap')(function (test)
-
- test("test disable_stdio_inheritance", function (print, p, expect, uv)
- uv.disable_stdio_inheritance()
- end)
-
- test("process stdout", function (print, p, expect, uv)
- local stdout = uv.new_pipe(false)
-
- local handle, pid
- handle, pid = uv.spawn(uv.exepath(), {
- args = {"-e", "print 'Hello World'"},
- stdio = {nil, stdout},
- }, expect(function (code, signal)
- p("exit", {code=code, signal=signal})
- uv.close(handle)
- end))
-
- p{
- handle=handle,
- pid=pid
- }
-
- uv.read_start(stdout, expect(function (err, chunk)
- p("stdout", {err=err,chunk=chunk})
- assert(not err, err)
- uv.close(stdout)
- end))
-
- end)
-
- if _G.isWindows then return end
-
- test("spawn and kill by pid", function (print, p, expect, uv)
- local handle, pid
- handle, pid = uv.spawn("sleep", {
- args = {1},
- }, expect(function (status, signal)
- p("exit", handle, {status=status,signal=signal})
- assert(status == 0)
- assert(signal == 2)
- uv.close(handle)
- end))
- p{handle=handle,pid=pid}
- uv.kill(pid, "sigint")
- end)
-
- test("spawn and kill by handle", function (print, p, expect, uv)
- local handle, pid
- handle, pid = uv.spawn("sleep", {
- args = {1},
- }, expect(function (status, signal)
- p("exit", handle, {status=status,signal=signal})
- assert(status == 0)
- assert(signal == 15)
- uv.close(handle)
- end))
- p{handle=handle,pid=pid}
- uv.process_kill(handle, "sigterm")
- end)
-
- test("invalid command", function (print, p, expect, uv)
- local handle, err
- handle, err = uv.spawn("ksjdfksjdflkjsflksdf", {}, function(exit, code)
- assert(false)
- end)
- assert(handle == nil)
- assert(err)
- end)
-
- test("process stdio", function (print, p, expect, uv)
- local stdin = uv.new_pipe(false)
- local stdout = uv.new_pipe(false)
-
- local handle, pid
- handle, pid = uv.spawn("cat", {
- stdio = {stdin, stdout},
- }, expect(function (code, signal)
- p("exit", {code=code, signal=signal})
- uv.close(handle)
- end))
-
- p{
- handle=handle,
- pid=pid
- }
-
- uv.read_start(stdout, expect(function (err, chunk)
- p("stdout", {err=err,chunk=chunk})
- assert(not err, err)
- uv.close(stdout)
- end))
-
- uv.write(stdin, "Hello World")
- uv.shutdown(stdin, expect(function ()
- uv.close(stdin)
- end))
-
- end)
-
-end)
diff --git a/3rdparty/luv/tests/test-sigchld-after-lua_close.sh b/3rdparty/luv/tests/test-sigchld-after-lua_close.sh
deleted file mode 100644
index e7d22d3df36..00000000000
--- a/3rdparty/luv/tests/test-sigchld-after-lua_close.sh
+++ /dev/null
@@ -1,45 +0,0 @@
-#!/bin/sh
-# Verifies that luv will cleanup libuv process handles correctly even if
-# not done by "userspace".
-# Details: https://github.com/luvit/luv/issues/193
-
-# This test modifies one of the examples to skip libuv process cleanup,
-# purposely making it leave SIGCHLD signal handler.
-#
-patch -p1 << "EOF"
-diff --git a/examples/talking-to-children.lua b/examples/talking-to-children.lua
-index 10a53ef..6c6c53f 100644
---- a/examples/talking-to-children.lua
-+++ b/examples/talking-to-children.lua
-@@ -41,7 +41,3 @@ uv.read_start(stdout, onread)
- uv.read_start(stderr, onread)
- uv.write(stdin, "Hello World")
- uv.shutdown(stdin, onshutdown)
--
--uv.run()
--uv.walk(uv.close)
--uv.run()
-EOF
-
-# It also requires a patched lua standalone interpreter that sends SIGCHLD to
-# itself after calling lua_close, which would have freed all memory of the libuv
-# event loop associated with the lua state.
-(
-cd deps/lua
-patch -p1 << "EOF"
-diff --git a/src/lua.c b/src/lua.c
-index 7a47582..4dc19d5 100644
---- a/src/lua.c
-+++ b/src/lua.c
-@@ -608,6 +608,7 @@ int main (int argc, char **argv) {
- result = lua_toboolean(L, -1); /* get result */
- report(L, status);
- lua_close(L);
-+ kill(0, SIGCHLD);
- return (result && status == LUA_OK) ? EXIT_SUCCESS : EXIT_FAILURE;
- }
-EOF
-)
-
-WITH_LUA_ENGINE=Lua make
-./build/lua examples/talking-to-children.lua
diff --git a/3rdparty/luv/tests/test-signal.lua b/3rdparty/luv/tests/test-signal.lua
deleted file mode 100644
index c05db77c888..00000000000
--- a/3rdparty/luv/tests/test-signal.lua
+++ /dev/null
@@ -1,40 +0,0 @@
-local child_code = string.dump(function ()
- local uv = require('luv')
- local signal = uv.new_signal()
- uv.ref(signal)
- uv.signal_start(signal, "sigint", function ()
- uv.unref(signal)
- end)
- uv.run()
- os.exit(7)
-end)
-
-return require('lib/tap')(function (test)
-
- if _G.isWindows then return end
-
- test("Catch SIGINT", function (print, p, expect, uv)
- local child, pid
- local input = uv.new_pipe(false)
- child, pid = assert(uv.spawn(uv.exepath(), {
- args = {"-"},
- -- cwd = uv.cwd(),
- stdio = {input,1,2}
- }, expect(function (code, signal)
- p("exit", {pid=pid,code=code,signal=signal})
- assert(code == 7)
- assert(signal == 0)
- uv.close(input)
- uv.close(child)
- end)))
- uv.write(input, child_code)
- uv.shutdown(input)
- local timer = uv.new_timer()
- uv.timer_start(timer, 200, 0, expect(function ()
- print("Sending child SIGINT")
- uv.process_kill(child, "sigint")
- uv.close(timer)
- end))
- end)
-
-end)
diff --git a/3rdparty/luv/tests/test-tcp.lua b/3rdparty/luv/tests/test-tcp.lua
deleted file mode 100644
index 885d381ebce..00000000000
--- a/3rdparty/luv/tests/test-tcp.lua
+++ /dev/null
@@ -1,114 +0,0 @@
-return require('lib/tap')(function (test)
- test("basic tcp server and client", function (print, p, expect, uv)
- local server = uv.new_tcp()
- uv.tcp_bind(server, "::", 0)
- uv.listen(server, 128, expect(function (err)
- p("server on connection", server)
- assert(not err, err)
- uv.close(server)
- end))
-
- local address = uv.tcp_getsockname(server)
- p{server=server,address=address}
-
- local client = uv.new_tcp()
- local req = uv.tcp_connect(client, "::1", address.port, expect(function (err)
- p("client on connect", client, err)
- assert(not err, err)
- uv.shutdown(client, expect(function (err)
- p("client on shutdown", client, err)
- assert(not err, err)
- uv.close(client, expect(function ()
- p("client on close", client)
- end))
- end))
- end))
- p{client=client,req=req}
- end)
-
- test("tcp echo server and client", function (print, p, expect, uv)
- local server = uv.new_tcp()
- assert(uv.tcp_bind(server, "127.0.0.1", 0))
- assert(uv.listen(server, 1, expect(function ()
- local client = uv.new_tcp()
- assert(uv.accept(server, client))
- assert(uv.read_start(client, expect(function (err, data)
- p("server read", {err=err,data=data})
- assert(not err, err)
- if data then
- assert(uv.write(client, data))
- else
- assert(uv.read_stop(client))
- uv.close(client)
- uv.close(server)
- end
- end, 2)))
- end)))
-
- local address = uv.tcp_getsockname(server)
- p{server=server,address=address}
-
- local socket = assert(uv.new_tcp())
- assert(uv.tcp_connect(socket, "127.0.0.1", address.port, expect(function ()
- assert(uv.read_start(socket, expect(function (err, data)
- p("client read", {err=err,data=data})
- assert(not err, err)
- assert(uv.read_stop(socket))
- uv.close(socket)
- end)))
- local req = assert(uv.write(socket, "Hello", function (err)
- p("client onwrite", socket, err)
- assert(not err, err)
- end))
- p{socket=socket,req=req}
- end)))
- end)
-
- test("tcp echo server and client with methods", function (print, p, expect, uv)
- local server = uv.new_tcp()
- assert(server:bind("127.0.0.1", 0))
- assert(server:listen(1, expect(function ()
- local client = uv.new_tcp()
- assert(server:accept(client))
- assert(client:read_start(expect(function (err, data)
- p("server read", {err=err,data=data})
- assert(not err, err)
- if data then
- assert(client:write(data))
- else
- assert(client:read_stop())
- client:close()
- server:close()
- end
- end, 2)))
- end)))
-
- local address = server:getsockname()
- p{server=server,address=address}
-
- local socket = assert(uv.new_tcp())
- assert(socket:connect("127.0.0.1", address.port, expect(function ()
- assert(socket:read_start(expect(function (err, data)
- p("client read", {err=err,data=data})
- assert(not err, err)
- assert(socket:read_stop())
- socket:close()
- end)))
- local req = assert(socket:write("Hello", function (err)
- p("client onwrite", socket, err)
- assert(not err, err)
- end))
- p{socket=socket,req=req}
- end)))
- end)
-
- test("tcp invalid ip address", function (print, p, expect, uv)
- local ip = '127.0.0.100005'
- local server = uv.new_tcp()
- local status, err = pcall(function() uv.tcp_bind(server, ip, 1000) end)
- assert(not status)
- p(err)
- assert(err:find(ip))
- uv.close(server)
- end)
-end)
diff --git a/3rdparty/luv/tests/test-thread.lua b/3rdparty/luv/tests/test-thread.lua
deleted file mode 100644
index 838b51e4fff..00000000000
--- a/3rdparty/luv/tests/test-thread.lua
+++ /dev/null
@@ -1,47 +0,0 @@
-return require('lib/tap')(function (test)
-
- test("test thread create", function(print, p, expect, uv)
- local delay = 1000
- local before = os.time()
- local thread = uv.new_thread(function(delay)
- require('luv').sleep(delay)
- end,delay)
- uv.thread_join(thread)
- local elapsed = (os.time() - before) * 1000
- p({
- delay = delay,
- elapsed = elapsed
- })
- assert(elapsed >= delay, "elapsed should be at least delay ")
- end)
-
- test("test thread create with arguments", function(print, p, expect, uv)
- local before = os.time()
- local args = {500, 'string', nil, false, 5, "helloworld"}
- local unpack = unpack or table.unpack
- uv.new_thread(function(num,s,null,bool,five,hw)
- assert(type(num) == "number")
- assert(type(s) == "string")
- assert(null == nil)
- assert(bool == false)
- assert(five == 5)
- assert(hw == 'helloworld')
- require('luv').sleep(1000)
- end, unpack(args)):join()
- local elapsed = (os.time() - before) * 1000
- assert(elapsed >= 1000, "elapsed should be at least delay ")
- end)
-
- test("test thread sleep msecs in main thread", function(print, p, expect, uv)
- local delay = 1000
- local before = os.time()
- uv.sleep(delay)
- local elapsed = (os.time() - before) * 1000
- p({
- delay = delay,
- elapsed = elapsed
- })
- assert(elapsed >= delay, "elapsed should be at least delay ")
- end)
-
-end)
diff --git a/3rdparty/luv/tests/test-timer.lua b/3rdparty/luv/tests/test-timer.lua
deleted file mode 100644
index f9eb9d89c5f..00000000000
--- a/3rdparty/luv/tests/test-timer.lua
+++ /dev/null
@@ -1,87 +0,0 @@
-return require('lib/tap')(function (test)
-
- -- This tests using timers for a simple timeout.
- -- It also tests the handle close callback and
- test("simple timeout", function (print, p, expect, uv)
- local timer = uv.new_timer()
- local function onclose()
- p("closed", timer)
- end
- local function ontimeout()
- p("timeout", timer)
- uv.close(timer, expect(onclose))
- end
- uv.timer_start(timer, 10, 0, expect(ontimeout))
- end)
-
- -- This is like the previous test, but using repeat.
- test("simple interval", function (print, p, expect, uv)
- local timer = uv.new_timer()
- local count = 3
- local onclose = expect(function ()
- p("closed", timer)
- end)
- local function oninterval()
- p("interval", timer)
- count = count - 1
- if count == 0 then
- uv.close(timer, onclose)
- end
- end
- uv.timer_start(timer, 10, 10, oninterval)
- end)
-
- -- Test two concurrent timers
- -- There is a small race condition, but there are 100ms of wiggle room.
- -- 400ms is halfway between 100+200ms and 100+400ms
- test("timeout with interval", function (print, p, expect, uv)
- local a = uv.new_timer()
- local b = uv.new_timer()
- uv.timer_start(a, 400, 0, expect(function ()
- p("timeout", a)
- uv.timer_stop(b)
- uv.close(a)
- uv.close(b)
- end))
- uv.timer_start(b, 100, 200, expect(function ()
- p("interval", b)
- end, 2))
- end)
-
- -- This advanced test uses the rest of the uv_timer_t functions
- -- to create an interval that shrinks over time.
- test("shrinking interval", function (print, p, expect, uv)
- local timer = uv.new_timer()
- uv.timer_start(timer, 10, 0, expect(function ()
- local r = uv.timer_get_repeat(timer)
- p("interval", timer, r)
- if r == 0 then
- uv.timer_set_repeat(timer, 8)
- uv.timer_again(timer)
- elseif r == 2 then
- uv.timer_stop(timer)
- uv.close(timer)
- else
- uv.timer_set_repeat(timer, r / 2)
- end
- end, 4))
- end)
-
- test("shrinking interval using methods", function (print, p, expect, uv)
- local timer = uv.new_timer()
- timer:start(10, 0, expect(function ()
- local r = timer:get_repeat()
- p("interval", timer, r)
- if r == 0 then
- timer:set_repeat(8)
- timer:again()
- elseif r == 2 then
- timer:stop()
- timer:close()
- else
- timer:set_repeat(r / 2)
- end
- end, 4))
- end)
-
-end)
diff --git a/3rdparty/luv/tests/test-work.lua b/3rdparty/luv/tests/test-work.lua
deleted file mode 100644
index 3a98b15e6bc..00000000000
--- a/3rdparty/luv/tests/test-work.lua
+++ /dev/null
@@ -1,48 +0,0 @@
-return require('lib/tap')(function (test)
- test("test threadpool", function(print,p,expect,_uv)
- p('Please be patient, the test cost a lots of time')
- local count = 1000 --for memleaks dected
- local step = 0
- local ctx
- ctx = _uv.new_work(
- function(n,s) --work,in threadpool
- local uv = require('luv')
- local t = uv.thread_self()
- uv.sleep(100)
- return n,n*n, tostring(uv.thread_self()),s
- end,
- function(n,r,id, s)
- assert(n*n==r)
- if step < count then
- _uv.queue_work(ctx,n,s)
- step = step + 1
- if (step % 100==0) then
- p(string.format('run %d%%', math.floor(step*100/count)))
- end
- end
- end --after work, in loop thread
- )
- local ls = string.rep('-',4096)
-
- _uv.queue_work(ctx,2,ls)
- _uv.queue_work(ctx,4,ls)
- _uv.queue_work(ctx,6,ls)
- _uv.queue_work(ctx,-2,ls)
- _uv.queue_work(ctx,-11,ls)
- _uv.queue_work(ctx,2,ls)
- _uv.queue_work(ctx,4,ls)
- _uv.queue_work(ctx,6,ls)
- _uv.queue_work(ctx,-2,ls)
- _uv.queue_work(ctx,-11,ls)
- _uv.queue_work(ctx,2,ls)
- _uv.queue_work(ctx,4,ls)
- _uv.queue_work(ctx,6,ls)
- _uv.queue_work(ctx,-2,ls)
- _uv.queue_work(ctx,-11,ls)
- _uv.queue_work(ctx,2,ls)
- _uv.queue_work(ctx,4,ls)
- _uv.queue_work(ctx,6,ls)
- _uv.queue_work(ctx,-2,ls)
- _uv.queue_work(ctx,-11,ls)
- end)
-end)
diff --git a/plugins/coro-channel/LICENSE b/plugins/coro-channel/LICENSE
deleted file mode 100644
index 5789b767285..00000000000
--- a/plugins/coro-channel/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2015 Tim Caswell
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-
diff --git a/plugins/coro-channel/README.md b/plugins/coro-channel/README.md
deleted file mode 100644
index 3f5bb397c69..00000000000
--- a/plugins/coro-channel/README.md
+++ /dev/null
@@ -1,2 +0,0 @@
-# luv-coro-channel
-A luv port of creationix/coro-channel from lit.luvit.io
diff --git a/plugins/coro-channel/init.lua b/plugins/coro-channel/init.lua
deleted file mode 100644
index 0b715a0d470..00000000000
--- a/plugins/coro-channel/init.lua
+++ /dev/null
@@ -1,128 +0,0 @@
-local exports = {}
-exports.name = "creationix/coro-channel"
-exports.version = "1.2.0"
-exports.homepage = "https://github.com/luvit/lit/blob/master/deps/coro-channel.lua"
-exports.description = "An adapter for wrapping uv streams as coro-streams and chaining filters."
-exports.tags = {"coro", "adapter"}
-exports.license = "MIT"
-exports.author = { name = "Tim Caswell" }
-
-local function wrapRead(socket)
- local paused = true
- local queue = {}
- local waiting
- local onRead
-
- function onRead(err, chunk)
- local data = err and {nil, err} or {chunk}
- if waiting then
- local thread = waiting
- waiting = nil
- assert(coroutine.resume(thread, unpack(data)))
- else
- queue[#queue + 1] = data
- if not paused then
- paused = true
- assert(socket:read_stop())
- end
- end
- end
-
- return function ()
- if #queue > 0 then
- return unpack(table.remove(queue, 1))
- end
- if paused then
- paused = false
- assert(socket:read_start(onRead))
- end
- waiting = coroutine.running()
- return coroutine.yield()
- end
-
-end
-
-local function wrapWrite(socket)
-
- local function wait()
- local thread = coroutine.running()
- return function (err)
- assert(coroutine.resume(thread, err))
- end
- end
-
- local function shutdown()
- socket:shutdown(wait())
- coroutine.yield()
- if not socket:is_closing() then
- socket:close()
- end
- end
-
- return function (chunk)
- if chunk == nil then
- return shutdown()
- end
- assert(socket:write(chunk, wait()))
- local err = coroutine.yield()
- return not err, err
- end
-
-end
-
-exports.wrapRead = wrapRead
-exports.wrapWrite = wrapWrite
-
--- Given a raw uv_stream_t userdata, return coro-friendly read/write functions.
-function exports.wrapStream(socket)
- return wrapRead(socket), wrapWrite(socket)
-end
-
-
-function exports.chain(...)
- local args = {...}
- local nargs = select("#", ...)
- return function (read, write)
- local threads = {} -- coroutine thread for each item
- local waiting = {} -- flag when waiting to pull from upstream
- local boxes = {} -- storage when waiting to write to downstream
- for i = 1, nargs do
- threads[i] = coroutine.create(args[i])
- waiting[i] = false
- local r, w
- if i == 1 then
- r = read
- else
- function r()
- local j = i - 1
- if boxes[j] then
- local data = boxes[j]
- boxes[j] = nil
- assert(coroutine.resume(threads[j]))
- return unpack(data)
- else
- waiting[i] = true
- return coroutine.yield()
- end
- end
- end
- if i == nargs then
- w = write
- else
- function w(...)
- local j = i + 1
- if waiting[j] then
- waiting[j] = false
- assert(coroutine.resume(threads[j], ...))
- else
- boxes[i] = {...}
- coroutine.yield()
- end
- end
- end
- assert(coroutine.resume(threads[i], r, w))
- end
- end
-end
-
-return exports
diff --git a/plugins/coro-channel/plugin.json b/plugins/coro-channel/plugin.json
deleted file mode 100644
index 5a3f5af8813..00000000000
--- a/plugins/coro-channel/plugin.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "plugin": {
- "name": "coro-channel",
- "version": "1.2.0",
- "author": "Tim Caswell",
- "type": "library",
- }
-} \ No newline at end of file
diff --git a/plugins/coro-fs/LICENSE b/plugins/coro-fs/LICENSE
deleted file mode 100644
index 5789b767285..00000000000
--- a/plugins/coro-fs/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2015 Tim Caswell
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-
diff --git a/plugins/coro-fs/README.md b/plugins/coro-fs/README.md
deleted file mode 100644
index 79ef57330a0..00000000000
--- a/plugins/coro-fs/README.md
+++ /dev/null
@@ -1,2 +0,0 @@
-# luv-coro-fs
-A luv port of lit's coro-fs module
diff --git a/plugins/coro-fs/init.lua b/plugins/coro-fs/init.lua
deleted file mode 100644
index f4be5bff832..00000000000
--- a/plugins/coro-fs/init.lua
+++ /dev/null
@@ -1,222 +0,0 @@
-local exports = {}
-exports.name = "creationix/coro-fs"
-exports.version = "1.3.0"
-exports.homepage = "https://github.com/luvit/lit/blob/master/deps/coro-fs.lua"
-exports.description = "A coro style interface to the filesystem."
-exports.tags = {"coro", "fs"}
-exports.license = "MIT"
-exports.author = { name = "Tim Caswell" }
-
-local uv = require('luv')
-local fs = exports
-local pathJoin = require('path').join
-
-local function noop() end
-
-local function makeCallback()
- local thread = coroutine.running()
- return function (err, value, ...)
- if err then
- assert(coroutine.resume(thread, nil, err))
- else
- assert(coroutine.resume(thread, value == nil and true or value, ...))
- end
- end
-end
-
-function fs.mkdir(path, mode)
- uv.fs_mkdir(path, mode or 511, makeCallback())
- return coroutine.yield()
-end
-function fs.open(path, flags, mode)
- uv.fs_open(path, flags or "r", mode or 438, makeCallback())
- return coroutine.yield()
-end
-function fs.unlink(path)
- uv.fs_unlink(path, makeCallback())
- return coroutine.yield()
-end
-function fs.stat(path)
- uv.fs_stat(path, makeCallback())
- return coroutine.yield()
-end
-function fs.lstat(path)
- uv.fs_lstat(path, makeCallback())
- return coroutine.yield()
-end
-function fs.symlink(target, path)
- uv.fs_symlink(target, path, makeCallback())
- return coroutine.yield()
-end
-function fs.readlink(path)
- uv.fs_readlink(path, makeCallback())
- return coroutine.yield()
-end
-function fs.fstat(fd)
- uv.fs_fstat(fd, makeCallback())
- return coroutine.yield()
-end
-function fs.chmod(fd, path)
- uv.fs_chmod(fd, path, makeCallback())
- return coroutine.yield()
-end
-function fs.fchmod(fd, mode)
- uv.fs_fchmod(fd, mode, makeCallback())
- return coroutine.yield()
-end
-function fs.read(fd, length, offset)
- uv.fs_read(fd, length or 1024*48, offset or -1, makeCallback())
- return coroutine.yield()
-end
-function fs.write(fd, data, offset)
- uv.fs_write(fd, data, offset or -1, makeCallback())
- return coroutine.yield()
-end
-function fs.close(fd)
- uv.fs_close(fd, makeCallback())
- return coroutine.yield()
-end
-function fs.access(path, flags)
- uv.fs_access(path, flags or "", makeCallback())
- return coroutine.yield()
-end
-function fs.rename(path, newPath)
- uv.fs_rename(path, newPath, makeCallback())
- return coroutine.yield()
-end
-function fs.rmdir(path)
- uv.fs_rmdir(path, makeCallback())
- return coroutine.yield()
-end
-function fs.rmrf(path)
- local success, err
- success, err = fs.rmdir(path)
- if success then return success end
- if err:match("^ENOTDIR:") then return fs.unlink(path) end
- if not err:match("^ENOTEMPTY:") then return success, err end
- for entry in assert(fs.scandir(path)) do
- local subPath = pathJoin(path, entry.name)
- if entry.type == "directory" then
- success, err = fs.rmrf(pathJoin(path, entry.name))
- else
- success, err = fs.unlink(subPath)
- end
- if not success then return success, err end
- end
- return fs.rmdir(path)
-end
-function fs.scandir(path)
- uv.fs_scandir(path, makeCallback())
- local req, err = coroutine.yield()
- if not req then return nil, err end
- return function ()
- return uv.fs_scandir_next(req)
- end
-end
-
-function fs.readFile(path)
- local fd, stat, data, err
- fd, err = fs.open(path)
- if err then return nil, err end
- stat, err = fs.fstat(fd)
- if stat then
- data, err = fs.read(fd, stat.size)
- end
- uv.fs_close(fd, noop)
- return data, err
-end
-
-function fs.writeFile(path, data, mkdir)
- local fd, success, err
- fd, err = fs.open(path, "w")
- if err then
- if mkdir and string.match(err, "^ENOENT:") then
- success, err = fs.mkdirp(pathJoin(path, ".."))
- if success then return fs.writeFile(path, data) end
- end
- return nil, err
- end
- success, err = fs.write(fd, data)
- uv.fs_close(fd, noop)
- return success, err
-end
-
-function fs.mkdirp(path, mode)
- local success, err = fs.mkdir(path, mode)
- if success or string.match(err, "^EEXIST") then
- return true
- end
- if string.match(err, "^ENOENT:") then
- success, err = fs.mkdirp(pathJoin(path, ".."), mode)
- if not success then return nil, err end
- return fs.mkdir(path, mode)
- end
- return nil, err
-end
-
-function fs.chroot(base)
- local chroot = {
- base = base,
- fstat = fs.fstat,
- fchmod = fs.fchmod,
- read = fs.read,
- write = fs.write,
- close = fs.close,
- }
- local function resolve(path)
- assert(path, "path missing")
- return pathJoin(base, pathJoin(path))
- end
- function chroot.mkdir(path, mode)
- return fs.mkdir(resolve(path), mode)
- end
- function chroot.mkdirp(path, mode)
- return fs.mkdirp(resolve(path), mode)
- end
- function chroot.open(path, flags, mode)
- return fs.open(resolve(path), flags, mode)
- end
- function chroot.unlink(path)
- return fs.unlink(resolve(path))
- end
- function chroot.stat(path)
- return fs.stat(resolve(path))
- end
- function chroot.lstat(path)
- return fs.lstat(resolve(path))
- end
- function chroot.symlink(target, path)
- -- TODO: should we resolve absolute target paths or treat it as opaque data?
- return fs.symlink(target, resolve(path))
- end
- function chroot.readlink(path)
- return fs.readlink(resolve(path))
- end
- function chroot.chmod(path, mode)
- return fs.chmod(resolve(path), mode)
- end
- function chroot.access(path, flags)
- return fs.access(resolve(path), flags)
- end
- function chroot.rename(path, newPath)
- return fs.rename(resolve(path), resolve(newPath))
- end
- function chroot.rmdir(path)
- return fs.rmdir(resolve(path))
- end
- function chroot.rmrf(path)
- return fs.rmrf(resolve(path))
- end
- function chroot.scandir(path, iter)
- return fs.scandir(resolve(path), iter)
- end
- function chroot.readFile(path)
- return fs.readFile(resolve(path))
- end
- function chroot.writeFile(path, data, mkdir)
- return fs.writeFile(resolve(path), data, mkdir)
- end
- return chroot
-end
-
-return exports
diff --git a/plugins/coro-fs/plugin.json b/plugins/coro-fs/plugin.json
deleted file mode 100644
index c35d9e27315..00000000000
--- a/plugins/coro-fs/plugin.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "plugin": {
- "name": "coro-fs",
- "version": "1.3.0",
- "author": "Tim Caswell",
- "type": "library",
- }
-} \ No newline at end of file
diff --git a/plugins/coro-http/LICENSE b/plugins/coro-http/LICENSE
deleted file mode 100644
index 5789b767285..00000000000
--- a/plugins/coro-http/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2015 Tim Caswell
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-
diff --git a/plugins/coro-http/README.md b/plugins/coro-http/README.md
deleted file mode 100644
index 271b6698f5d..00000000000
--- a/plugins/coro-http/README.md
+++ /dev/null
@@ -1,2 +0,0 @@
-# luv-coro-http
-A luv port of lit's coro-http library.
diff --git a/plugins/coro-http/init.lua b/plugins/coro-http/init.lua
deleted file mode 100644
index 49613403eaf..00000000000
--- a/plugins/coro-http/init.lua
+++ /dev/null
@@ -1,187 +0,0 @@
-local exports = {}
-exports.name = "creationix/coro-http"
-exports.version = "1.2.1-1"
-exports.dependencies = {
- "creationix/coro-net@1.1.1",
- "creationix/coro-tls@1.2.1",
- "creationix/coro-wrapper@1.0.0",
- "luvit/http-codec@1.0.0"
-}
-exports.homepage = "https://github.com/luvit/lit/blob/master/deps/coro-http.lua"
-exports.description = "An coro style http(s) client and server helper."
-exports.tags = {"coro", "http"}
-exports.license = "MIT"
-exports.author = { name = "Tim Caswell" }
-
-local httpCodec = require('http-codec')
-local net = require('coro-net')
-local connect = net.connect
-local createServer = net.createServer
---local tlsWrap = require('coro-tls').wrap
-local wrapper = require('coro-wrapper')
-
-function exports.createServer(options, onConnect)
- createServer(options, function (rawRead, rawWrite, socket)
- local read = wrapper.reader(rawRead, httpCodec.decoder())
- local write = wrapper.writer(rawWrite, httpCodec.encoder())
- for head in read do
- local parts = {}
- for part in read do
- if #part > 0 then
- parts[#parts + 1] = part
- else
- break
- end
- end
- local body = table.concat(parts)
- head, body = onConnect(head, body, socket)
- write(head)
- if body then write(body) end
- write("")
- if not head.keepAlive then break end
- end
- end)
-end
-
-local function parseUrl(url)
- local protocol, host, hostname, port, path = url:match("^(https?:)//(([^/:]+):?([0-9]*))(/?.*)$")
- if not protocol then error("Not a valid http url: " .. url) end
- local tls = protocol == "https:"
- port = port and tonumber(port) or (tls and 443 or 80)
- if path == "" then path = "/" end
- return {
- tls = tls,
- host = host,
- hostname = hostname,
- port = port,
- path = path
- }
-end
-exports.parseUrl = parseUrl
-
-local connections = {}
-
-local function getConnection(host, port, tls)
- for i = #connections, 1, -1 do
- local connection = connections[i]
- if connection.host == host and connection.port == port and connection.tls == tls then
- table.remove(connections, i)
- -- Make sure the connection is still alive before reusing it.
- if not connection.socket:is_closing() then
- connection.reused = true
- connection.socket:ref()
- return connection
- end
- end
- end
- local read, write, socket = assert(connect({host=host,port=port}))
- --if tls then
- --read, write = tlsWrap(read, write)
- --end
- local httpRead, updateRead = wrapper.reader(read, httpCodec.decoder())
- return {
- socket = socket,
- host = host,
- port = port,
- tls = tls,
- read = httpRead,
- write = wrapper.writer(write, httpCodec.encoder()),
- reset = function ()
- -- This is called after parsing the response head from a HEAD request.
- -- If you forget, the codec might hang waiting for a body that doesn't exist.
- updateRead(httpCodec.decoder())
- end
- }
-end
-exports.getConnection = getConnection
-
-local function saveConnection(connection)
- if connection.socket:is_closing() then return end
- connections[#connections + 1] = connection
- connection.socket:unref()
-end
-exports.saveConnection = saveConnection
-
-function exports.request(method, url, headers, body)
- local uri = parseUrl(url)
- local connection = getConnection(uri.hostname, uri.port, uri.tls)
- local read = connection.read
- local write = connection.write
-
- local req = {
- method = method,
- path = uri.path,
- {"Host", uri.host}
- }
- local contentLength
- local chunked
- if headers then
- for i = 1, #headers do
- local key, value = unpack(headers[i])
- key = key:lower()
- if key == "content-length" then
- contentLength = value
- elseif key == "content-encoding" and value:lower() == "chunked" then
- chunked = true
- end
- req[#req + 1] = headers[i]
- end
- end
-
- if type(body) == "string" then
- if not chunked and not contentLength then
- req[#req + 1] = {"Content-Length", #body}
- end
- end
-
- write(req)
- if body then write(body) end
- local res = read()
- if not res then
- write()
- -- If we get an immediate close on a reused socket, try again with a new socket.
- -- TODO: think about if this could resend requests with side effects and cause
- -- them to double execute in the remote server.
- if connection.reused then
- return exports.request(method, url, headers, body)
- end
- error("Connection closed")
- end
-
- body = {}
- if req.method == "HEAD" then
- connection.reset()
- else
- while true do
- local item = read()
- if not item then
- res.keepAlive = false
- break
- end
- if #item == 0 then
- break
- end
- body[#body + 1] = item
- end
- end
-
- if res.keepAlive then
- saveConnection(connection)
- else
- write()
- end
-
- -- Follow redirects
- if method == "GET" and (res.code == 302 or res.code == 307) then
- for i = 1, #res do
- local key, location = unpack(res[i])
- if key:lower() == "location" then
- return exports.request(method, location, headers)
- end
- end
- end
-
- return res, table.concat(body)
-end
-
-return exports
diff --git a/plugins/coro-http/plugin.json b/plugins/coro-http/plugin.json
deleted file mode 100644
index 0c8047c9ebe..00000000000
--- a/plugins/coro-http/plugin.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "plugin": {
- "name": "coro-http",
- "version": "1.2.1-1",
- "author": "Tim Caswell",
- "type": "library",
- }
-} \ No newline at end of file
diff --git a/plugins/coro-net/LICENSE b/plugins/coro-net/LICENSE
deleted file mode 100644
index 5789b767285..00000000000
--- a/plugins/coro-net/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2015 Tim Caswell
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-
diff --git a/plugins/coro-net/README.md b/plugins/coro-net/README.md
deleted file mode 100644
index c8a94b9980a..00000000000
--- a/plugins/coro-net/README.md
+++ /dev/null
@@ -1,2 +0,0 @@
-# luv-coro-net
-A luv port of creationix/coro-net from lit.luvit.io
diff --git a/plugins/coro-net/init.lua b/plugins/coro-net/init.lua
deleted file mode 100644
index 3ae6c2ad824..00000000000
--- a/plugins/coro-net/init.lua
+++ /dev/null
@@ -1,113 +0,0 @@
-local exports = {}
-exports.name = "creationix/coro-net"
-exports.version = "1.1.1-1"
-exports.dependencies = {
- "creationix/coro-channel@1.2.0"
-}
-exports.homepage = "https://github.com/luvit/lit/blob/master/deps/coro-net.lua"
-exports.description = "An coro style client and server helper for tcp and pipes."
-exports.tags = {"coro", "tcp", "pipe", "net"}
-exports.license = "MIT"
-exports.author = { name = "Tim Caswell" }
-
-local uv = require('luv')
-local wrapStream = require('coro-channel').wrapStream
-
-local function makeCallback(timeout)
- local thread = coroutine.running()
- local timer, done
- if timeout then
- timer = uv.new_timer()
- timer:start(timeout, 0, function ()
- if done then return end
- done = true
- timer:close()
- return assert(coroutine.resume(thread, nil, "timeout"))
- end)
- end
- return function (err, data)
- if done then return end
- done = true
- if timer then timer:close() end
- if err then
- return assert(coroutine.resume(thread, nil, err))
- end
- return assert(coroutine.resume(thread, data or true))
- end
-end
-exports.makeCallback = makeCallback
-
-local function normalize(options)
- local t = type(options)
- if t == "string" then
- options = {path=options}
- elseif t == "number" then
- options = {port=options}
- elseif t ~= "table" then
- assert("Net options must be table, string, or number")
- end
- if options.port or options.host then
- return true,
- options.host or "127.0.0.1",
- assert(options.port, "options.port is required for tcp connections")
- elseif options.path then
- return false, options.path
- else
- error("Must set either options.path or options.port")
- end
-end
-
-function exports.connect(options)
- local socket, success, err
- local isTcp, host, port = normalize(options)
- if isTcp then
- assert(uv.getaddrinfo(host, port, {
- socktype = options.socktype or "stream",
- family = options.family or "inet",
- }, makeCallback(options.timeout)))
- local res
- res, err = coroutine.yield()
- if not res then return nil, err end
- socket = uv.new_tcp()
- socket:connect(res[1].addr, res[1].port, makeCallback(options.timeout))
- else
- socket = uv.new_pipe(false)
- socket:connect(host, makeCallback(options.timeout))
- end
- success, err = coroutine.yield()
- if not success then return nil, err end
- local read, write = wrapStream(socket)
- return read, write, socket
-end
-
-function exports.createServer(options, onConnect)
- local server
- local isTcp, host, port = normalize(options)
- if isTcp then
- server = uv.new_tcp()
- assert(server:bind(host, port))
- else
- server = uv.new_pipe(false)
- assert(server:bind(host))
- end
- assert(server:listen(256, function (err)
- assert(not err, err)
- local socket = isTcp and uv.new_tcp() or uv.new_pipe(false)
- server:accept(socket)
- coroutine.wrap(function ()
- local success, failure = xpcall(function ()
- local read, write = wrapStream(socket)
- return onConnect(read, write, socket)
- end, debug.traceback)
- if not success then
- print(failure)
- end
- if not socket:is_closing() then
- socket:close()
- end
- end)()
- end))
- return server
-end
-
-return exports
diff --git a/plugins/coro-net/plugin.json b/plugins/coro-net/plugin.json
deleted file mode 100644
index cf839aad881..00000000000
--- a/plugins/coro-net/plugin.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "plugin": {
- "name": "coro-net",
- "version": "1.1.1-1",
- "author": "Tim Caswell",
- "type": "library",
- }
-} \ No newline at end of file
diff --git a/plugins/coro-tls/LICENSE b/plugins/coro-tls/LICENSE
deleted file mode 100644
index 5789b767285..00000000000
--- a/plugins/coro-tls/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2015 Tim Caswell
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-
diff --git a/plugins/coro-tls/README.md b/plugins/coro-tls/README.md
deleted file mode 100644
index 50aae3f7657..00000000000
--- a/plugins/coro-tls/README.md
+++ /dev/null
@@ -1,2 +0,0 @@
-# luv-coro-tls
-A luv port of lit's coro-tls module
diff --git a/plugins/coro-tls/init.lua b/plugins/coro-tls/init.lua
deleted file mode 100644
index 03d6e1c3f76..00000000000
--- a/plugins/coro-tls/init.lua
+++ /dev/null
@@ -1,122 +0,0 @@
-local exports = {}
-exports.name = "creationix/coro-tls"
-exports.version = "1.2.1"
-exports.homepage = "https://github.com/luvit/lit/blob/master/deps/coro-tls.lua"
-exports.description = "A coro-stream wrapper implementing tls sessions."
-exports.tags = {"coro", "tls", "ssl"}
-exports.license = "MIT"
-exports.author = { name = "Tim Caswell" }
-
-local openssl = require('openssl')
-local bit = require('bit')
-
-local DEFAULT_CIPHERS = 'ECDHE-RSA-AES128-SHA256:AES128-GCM-SHA256:' .. -- TLS 1.2
- 'RC4:HIGH:!MD5:!aNULL:!EDH' -- TLS 1.0
-
--- Given a read/write pair, return a new read/write pair for plaintext
-exports.wrap = function (read, write, options)
- if not options then
- options = {}
- end
-
- local ctx = openssl.ssl.ctx_new(options.protocol or 'TLSv1_2', options.ciphers or DEFAULT_CIPHERS)
-
- local key, cert, ca
- if options.key then
- key = assert(openssl.pkey.read(options.key, true, 'pem'))
- end
- if options.cert then
- cert = assert(openssl.x509.read(options.cert))
- end
- if options.ca then
- if type(options.ca) == "string" then
- ca = { assert(openssl.x509.read(options.ca)) }
- elseif type(options.ca) == "table" then
- ca = {}
- for i = 1, #options.ca do
- ca[i] = assert(openssl.x509.read(options.ca[i]))
- end
- else
- error("options.ca must be string or table of strings")
- end
- end
- if key and cert then
- assert(ctx:use(key, cert))
- end
- if ca then
- local store = openssl.x509.store:new()
- for i = 1, #ca do
- assert(store:add(ca[i]))
- end
- ctx:cert_store(store)
- else
- ctx:verify_mode({"none"})
- end
-
- ctx:options(bit.bor(
- openssl.ssl.no_sslv2,
- openssl.ssl.no_sslv3,
- openssl.ssl.no_compression))
- local bin, bout = openssl.bio.mem(8192), openssl.bio.mem(8192)
- local ssl = ctx:ssl(bin, bout, options.server)
-
- local function flush()
- while bout:pending() > 0 do
- write(bout:read())
- end
- end
-
- -- Do handshake
- while true do
- if ssl:handshake() then break end
- flush()
- local chunk = read()
- if chunk then
- bin:write(chunk)
- else
- error("disconnect while handshaking")
- end
- end
- flush()
-
- local done = false
- local function shutdown()
- if done then return end
- done = true
- while true do
- if ssl:shutdown() then break end
- flush()
- local chunk = read()
- if chunk then
- bin:write(chunk)
- else
- break
- end
- end
- flush()
- write()
- end
-
- local function plainRead()
- while true do
- local chunk = ssl:read()
- if chunk then return chunk end
- local cipher = read()
- if not cipher then return end
- bin:write(cipher)
- end
- end
-
- local function plainWrite(plain)
- if not plain then
- return shutdown()
- end
- ssl:write(plain)
- flush()
- end
-
- return plainRead, plainWrite
-
-end
-
-return exports
diff --git a/plugins/coro-tls/plugin.json b/plugins/coro-tls/plugin.json
deleted file mode 100644
index 257224e2ea3..00000000000
--- a/plugins/coro-tls/plugin.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "plugin": {
- "name": "coro-tls",
- "version": "1.2.1",
- "author": "Tim Caswell",
- "type": "library",
- }
-} \ No newline at end of file
diff --git a/plugins/coro-wrapper/LICENSE b/plugins/coro-wrapper/LICENSE
deleted file mode 100644
index 5789b767285..00000000000
--- a/plugins/coro-wrapper/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2015 Tim Caswell
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-
diff --git a/plugins/coro-wrapper/README.md b/plugins/coro-wrapper/README.md
deleted file mode 100644
index a9351a7f531..00000000000
--- a/plugins/coro-wrapper/README.md
+++ /dev/null
@@ -1,2 +0,0 @@
-# luv-coro-wrapper
-A luv port of lit's coro-wrapper module
diff --git a/plugins/coro-wrapper/init.lua b/plugins/coro-wrapper/init.lua
deleted file mode 100644
index aab2683baf3..00000000000
--- a/plugins/coro-wrapper/init.lua
+++ /dev/null
@@ -1,41 +0,0 @@
-local exports = {}
-exports.name = "creationix/coro-wrapper"
-exports.version = "1.0.0-1"
-exports.homepage = "https://github.com/luvit/lit/blob/master/deps/coro-wrapper.lua"
-exports.description = "An adapter for applying decoders to coro-streams."
-exports.tags = {"coro", "decoder", "adapter"}
-exports.license = "MIT"
-exports.author = { name = "Tim Caswell" }
-
-function exports.reader(read, decode)
- local buffer = ""
- return function ()
- while true do
- local item, extra = decode(buffer)
- if item then
- buffer = extra
- return item
- end
- local chunk = read()
- if not chunk then return end
- buffer = buffer .. chunk
- end
- end,
- function (newDecode)
- decode = newDecode
- end
-end
-
-function exports.writer(write, encode)
- return function (item)
- if not item then
- return write()
- end
- return write(encode(item))
- end,
- function (newEncode)
- encode = newEncode
- end
-end
-
-return exports
diff --git a/plugins/coro-wrapper/plugin.json b/plugins/coro-wrapper/plugin.json
deleted file mode 100644
index 6075edba1fa..00000000000
--- a/plugins/coro-wrapper/plugin.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "plugin": {
- "name": "coro-wrapper",
- "version": "1.0.0-1",
- "author": "Tim Caswell",
- "type": "library",
- }
-} \ No newline at end of file
diff --git a/plugins/http-codec/LICENSE b/plugins/http-codec/LICENSE
deleted file mode 100644
index 8f71f43fee3..00000000000
--- a/plugins/http-codec/LICENSE
+++ /dev/null
@@ -1,202 +0,0 @@
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "{}"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright {yyyy} {name of copyright owner}
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
diff --git a/plugins/http-codec/README.md b/plugins/http-codec/README.md
deleted file mode 100644
index 80d050416ae..00000000000
--- a/plugins/http-codec/README.md
+++ /dev/null
@@ -1,2 +0,0 @@
-# luv-http-codec
-A luv port of luvit's http-codec
diff --git a/plugins/http-codec/init.lua b/plugins/http-codec/init.lua
deleted file mode 100644
index 11a32945729..00000000000
--- a/plugins/http-codec/init.lua
+++ /dev/null
@@ -1,291 +0,0 @@
---[[
-
-Copyright 2014-2015 The Luvit Authors. All Rights Reserved.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS-IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
---]]
-
-local exports = {}
-
-exports.name = "luvit/http-codec"
-exports.version = "1.0.0-1"
-exports.homepage = "https://github.com/luvit/luvit/blob/master/deps/http-codec.lua"
-exports.description = "A simple pair of functions for converting between hex and raw strings."
-exports.tags = {"codec", "http"}
-exports.license = "Apache 2"
-exports.author = { name = "Tim Caswell" }
-
-local sub = string.sub
-local gsub = string.gsub
-local lower = string.lower
-local find = string.find
-local format = string.format
-local concat = table.concat
-local match = string.match
-
-local STATUS_CODES = {
- [100] = 'Continue',
- [101] = 'Switching Protocols',
- [102] = 'Processing', -- RFC 2518, obsoleted by RFC 4918
- [200] = 'OK',
- [201] = 'Created',
- [202] = 'Accepted',
- [203] = 'Non-Authoritative Information',
- [204] = 'No Content',
- [205] = 'Reset Content',
- [206] = 'Partial Content',
- [207] = 'Multi-Status', -- RFC 4918
- [300] = 'Multiple Choices',
- [301] = 'Moved Permanently',
- [302] = 'Moved Temporarily',
- [303] = 'See Other',
- [304] = 'Not Modified',
- [305] = 'Use Proxy',
- [307] = 'Temporary Redirect',
- [400] = 'Bad Request',
- [401] = 'Unauthorized',
- [402] = 'Payment Required',
- [403] = 'Forbidden',
- [404] = 'Not Found',
- [405] = 'Method Not Allowed',
- [406] = 'Not Acceptable',
- [407] = 'Proxy Authentication Required',
- [408] = 'Request Time-out',
- [409] = 'Conflict',
- [410] = 'Gone',
- [411] = 'Length Required',
- [412] = 'Precondition Failed',
- [413] = 'Request Entity Too Large',
- [414] = 'Request-URI Too Large',
- [415] = 'Unsupported Media Type',
- [416] = 'Requested Range Not Satisfiable',
- [417] = 'Expectation Failed',
- [418] = "I'm a teapot", -- RFC 2324
- [422] = 'Unprocessable Entity', -- RFC 4918
- [423] = 'Locked', -- RFC 4918
- [424] = 'Failed Dependency', -- RFC 4918
- [425] = 'Unordered Collection', -- RFC 4918
- [426] = 'Upgrade Required', -- RFC 2817
- [500] = 'Internal Server Error',
- [501] = 'Not Implemented',
- [502] = 'Bad Gateway',
- [503] = 'Service Unavailable',
- [504] = 'Gateway Time-out',
- [505] = 'HTTP Version not supported',
- [506] = 'Variant Also Negotiates', -- RFC 2295
- [507] = 'Insufficient Storage', -- RFC 4918
- [509] = 'Bandwidth Limit Exceeded',
- [510] = 'Not Extended' -- RFC 2774
-}
-
-exports.encoder = function ()
-
- local mode
- local encodeHead, encodeRaw, encodeChunked
-
- function encodeHead(item)
- if not item or item == "" then
- return item
- elseif not (type(item) == "table") then
- error("expected a table but got a " .. type(item) .. " when encoding data")
- end
- local head, chunkedEncoding
- local version = item.version or 1.1
- if item.method then
- local path = item.path
- assert(path and #path > 0, "expected non-empty path")
- head = { item.method .. ' ' .. item.path .. ' HTTP/' .. version .. '\r\n' }
- else
- local reason = item.reason or STATUS_CODES[item.code]
- head = { 'HTTP/' .. version .. ' ' .. item.code .. ' ' .. reason .. '\r\n' }
- end
- for i = 1, #item do
- local key, value = unpack(item[i])
- local lowerKey = lower(key)
- if lowerKey == "transfer-encoding" then
- chunkedEncoding = lower(value) == "chunked"
- end
- value = gsub(tostring(value), "[\r\n]+", " ")
- head[#head + 1] = key .. ': ' .. tostring(value) .. '\r\n'
- end
- head[#head + 1] = '\r\n'
-
- mode = chunkedEncoding and encodeChunked or encodeRaw
- return concat(head)
- end
-
- function encodeRaw(item)
- if type(item) ~= "string" then
- mode = encodeHead
- return encodeHead(item)
- end
- return item
- end
-
- function encodeChunked(item)
- if type(item) ~= "string" then
- mode = encodeHead
- local extra = encodeHead(item)
- if extra then
- return "0\r\n\r\n" .. extra
- else
- return "0\r\n\r\n"
- end
- end
- if #item == 0 then
- mode = encodeHead
- end
- return format("%x", #item) .. "\r\n" .. item .. "\r\n"
- end
-
- mode = encodeHead
- return function (item)
- return mode(item)
- end
-end
-
-exports.decoder = function ()
-
- -- This decoder is somewhat stateful with 5 different parsing states.
- local decodeHead, decodeEmpty, decodeRaw, decodeChunked, decodeCounted
- local mode -- state variable that points to various decoders
- local bytesLeft -- For counted decoder
-
- -- This state is for decoding the status line and headers.
- function decodeHead(chunk)
- if not chunk then return end
-
- local _, length = find(chunk, "\r?\n\r?\n", 1)
- -- First make sure we have all the head before continuing
- if not length then
- if #chunk < 8 * 1024 then return end
- -- But protect against evil clients by refusing heads over 8K long.
- error("entity too large")
- end
-
- -- Parse the status/request line
- local head = {}
- local _, offset
- local version
- _, offset, version, head.code, head.reason =
- find(chunk, "^HTTP/(%d%.%d) (%d+) ([^\r\n]+)\r?\n")
- if offset then
- head.code = tonumber(head.code)
- else
- _, offset, head.method, head.path, version =
- find(chunk, "^(%u+) ([^ ]+) HTTP/(%d%.%d)\r?\n")
- if not offset then
- error("expected HTTP data")
- end
- end
- version = tonumber(version)
- head.version = version
- head.keepAlive = version > 1.0
-
- -- We need to inspect some headers to know how to parse the body.
- local contentLength
- local chunkedEncoding
-
- -- Parse the header lines
- while true do
- local key, value
- _, offset, key, value = find(chunk, "^([^:\r\n]+): *([^\r\n]+)\r?\n", offset + 1)
- if not offset then break end
- local lowerKey = lower(key)
-
- -- Inspect a few headers and remember the values
- if lowerKey == "content-length" then
- contentLength = tonumber(value)
- elseif lowerKey == "transfer-encoding" then
- chunkedEncoding = lower(value) == "chunked"
- elseif lowerKey == "connection" then
- head.keepAlive = lower(value) == "keep-alive"
- end
- head[#head + 1] = {key, value}
- end
-
- if head.keepAlive and (not (chunkedEncoding or (contentLength and contentLength > 0)))
- or (head.method == "GET" or head.method == "HEAD") then
- mode = decodeEmpty
- elseif chunkedEncoding then
- mode = decodeChunked
- elseif contentLength then
- bytesLeft = contentLength
- mode = decodeCounted
- elseif not head.keepAlive then
- mode = decodeRaw
- end
-
- return head, sub(chunk, length + 1)
-
- end
-
- -- This is used for inserting a single empty string into the output string for known empty bodies
- function decodeEmpty(chunk)
- mode = decodeHead
- return "", chunk or ""
- end
-
- function decodeRaw(chunk)
- if not chunk then return "", "" end
- if #chunk == 0 then return end
- return chunk, ""
- end
-
- function decodeChunked(chunk)
- local len, term
- len, term = match(chunk, "^(%x+)(..)")
- if not len then return end
- assert(term == "\r\n")
- local length = tonumber(len, 16)
- if #chunk < length + 4 + #len then return end
- if length == 0 then
- mode = decodeHead
- end
- chunk = sub(chunk, #len + 3)
- assert(sub(chunk, length + 1, length + 2) == "\r\n")
- return sub(chunk, 1, length), sub(chunk, length + 3)
- end
-
- function decodeCounted(chunk)
- if bytesLeft == 0 then
- mode = decodeEmpty
- return mode(chunk)
- end
- local length = #chunk
- -- Make sure we have at least one byte to process
- if length == 0 then return end
-
- if length >= bytesLeft then
- mode = decodeEmpty
- end
-
- -- If the entire chunk fits, pass it all through
- if length <= bytesLeft then
- bytesLeft = bytesLeft - length
- return chunk, ""
- end
-
- return sub(chunk, 1, bytesLeft), sub(chunk, bytesLeft + 1)
- end
-
- -- Switch between states by changing which decoder mode points to
- mode = decodeHead
- return function (chunk)
- return mode(chunk)
- end
-
-end
-
-return exports
diff --git a/plugins/http-codec/plugin.json b/plugins/http-codec/plugin.json
deleted file mode 100644
index ce511afa785..00000000000
--- a/plugins/http-codec/plugin.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "plugin": {
- "name": "http-codec",
- "version": "1.0.0-1",
- "author": "Tim Caswell",
- "type": "library",
- }
-} \ No newline at end of file
diff --git a/plugins/mime/LICENSE b/plugins/mime/LICENSE
deleted file mode 100644
index 5789b767285..00000000000
--- a/plugins/mime/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2015 Tim Caswell
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-
diff --git a/plugins/mime/README.md b/plugins/mime/README.md
deleted file mode 100644
index 550ba582b69..00000000000
--- a/plugins/mime/README.md
+++ /dev/null
@@ -1,2 +0,0 @@
-# luv-mime
-A luv port of weblit's mime module
diff --git a/plugins/mime/init.lua b/plugins/mime/init.lua
deleted file mode 100644
index ac41dad1cfc..00000000000
--- a/plugins/mime/init.lua
+++ /dev/null
@@ -1,194 +0,0 @@
-local exports = {}
-exports.name = "creationix/mime"
-exports.version = "0.1.2-1"
-exports.description = "A simple mime type database useful for serving static files over http."
-exports.tags = {"mime", "static"}
-exports.license = "MIT"
-exports.author = { name = "Tim Caswell" }
-exports.homepage = "https://github.com/creationix/weblit/blob/master/libs/mime.lua"
-
-local mime = exports
-local table = {
- ["3gp"] = "video/3gpp",
- a = "application/octet-stream",
- ai = "application/postscript",
- aif = "audio/x-aiff",
- aiff = "audio/x-aiff",
- asc = "application/pgp-signature",
- asf = "video/x-ms-asf",
- asm = "text/x-asm",
- asx = "video/x-ms-asf",
- atom = "application/atom+xml",
- au = "audio/basic",
- avi = "video/x-msvideo",
- bat = "application/x-msdownload",
- bin = "application/octet-stream",
- bmp = "image/bmp",
- bz2 = "application/x-bzip2",
- c = "text/x-c",
- cab = "application/vnd.ms-cab-compressed",
- cc = "text/x-c",
- chm = "application/vnd.ms-htmlhelp",
- class = "application/octet-stream",
- com = "application/x-msdownload",
- conf = "text/plain",
- cpp = "text/x-c",
- crt = "application/x-x509-ca-cert",
- css = "text/css",
- csv = "text/csv",
- cxx = "text/x-c",
- deb = "application/x-debian-package",
- der = "application/x-x509-ca-cert",
- diff = "text/x-diff",
- djv = "image/vnd.djvu",
- djvu = "image/vnd.djvu",
- dll = "application/x-msdownload",
- dmg = "application/octet-stream",
- doc = "application/msword",
- dot = "application/msword",
- dtd = "application/xml-dtd",
- dvi = "application/x-dvi",
- ear = "application/java-archive",
- eml = "message/rfc822",
- eps = "application/postscript",
- exe = "application/x-msdownload",
- f = "text/x-fortran",
- f77 = "text/x-fortran",
- f90 = "text/x-fortran",
- flv = "video/x-flv",
- ["for"] = "text/x-fortran",
- gem = "application/octet-stream",
- gemspec = "text/x-script.ruby",
- gif = "image/gif",
- gz = "application/x-gzip",
- h = "text/x-c",
- hh = "text/x-c",
- htm = "text/html",
- html = "text/html",
- ico = "image/vnd.microsoft.icon",
- ics = "text/calendar",
- ifb = "text/calendar",
- iso = "application/octet-stream",
- jar = "application/java-archive",
- java = "text/x-java-source",
- jnlp = "application/x-java-jnlp-file",
- jpeg = "image/jpeg",
- jpg = "image/jpeg",
- js = "application/javascript",
- json = "application/json",
- less = "text/css",
- log = "text/plain",
- lua = "text/x-lua",
- luac = "application/x-lua-bytecode",
- m3u = "audio/x-mpegurl",
- m4v = "video/mp4",
- man = "text/troff",
- manifest = "text/cache-manifest",
- markdown = "text/markdown",
- mathml = "application/mathml+xml",
- mbox = "application/mbox",
- mdoc = "text/troff",
- md = "text/markdown",
- me = "text/troff",
- mid = "audio/midi",
- midi = "audio/midi",
- mime = "message/rfc822",
- mml = "application/mathml+xml",
- mng = "video/x-mng",
- mov = "video/quicktime",
- mp3 = "audio/mpeg",
- mp4 = "video/mp4",
- mp4v = "video/mp4",
- mpeg = "video/mpeg",
- mpg = "video/mpeg",
- ms = "text/troff",
- msi = "application/x-msdownload",
- odp = "application/vnd.oasis.opendocument.presentation",
- ods = "application/vnd.oasis.opendocument.spreadsheet",
- odt = "application/vnd.oasis.opendocument.text",
- ogg = "application/ogg",
- p = "text/x-pascal",
- pas = "text/x-pascal",
- pbm = "image/x-portable-bitmap",
- pdf = "application/pdf",
- pem = "application/x-x509-ca-cert",
- pgm = "image/x-portable-graymap",
- pgp = "application/pgp-encrypted",
- pkg = "application/octet-stream",
- pl = "text/x-script.perl",
- pm = "text/x-script.perl-module",
- png = "image/png",
- pnm = "image/x-portable-anymap",
- ppm = "image/x-portable-pixmap",
- pps = "application/vnd.ms-powerpoint",
- ppt = "application/vnd.ms-powerpoint",
- ps = "application/postscript",
- psd = "image/vnd.adobe.photoshop",
- py = "text/x-script.python",
- qt = "video/quicktime",
- ra = "audio/x-pn-realaudio",
- rake = "text/x-script.ruby",
- ram = "audio/x-pn-realaudio",
- rar = "application/x-rar-compressed",
- rb = "text/x-script.ruby",
- rdf = "application/rdf+xml",
- roff = "text/troff",
- rpm = "application/x-redhat-package-manager",
- rss = "application/rss+xml",
- rtf = "application/rtf",
- ru = "text/x-script.ruby",
- s = "text/x-asm",
- sgm = "text/sgml",
- sgml = "text/sgml",
- sh = "application/x-sh",
- sig = "application/pgp-signature",
- snd = "audio/basic",
- so = "application/octet-stream",
- svg = "image/svg+xml",
- svgz = "image/svg+xml",
- swf = "application/x-shockwave-flash",
- t = "text/troff",
- tar = "application/x-tar",
- tbz = "application/x-bzip-compressed-tar",
- tci = "application/x-topcloud",
- tcl = "application/x-tcl",
- tex = "application/x-tex",
- texi = "application/x-texinfo",
- texinfo = "application/x-texinfo",
- text = "text/plain",
- tif = "image/tiff",
- tiff = "image/tiff",
- torrent = "application/x-bittorrent",
- tr = "text/troff",
- ttf = "application/x-font-ttf",
- txt = "text/plain",
- vcf = "text/x-vcard",
- vcs = "text/x-vcalendar",
- vrml = "model/vrml",
- war = "application/java-archive",
- wav = "audio/x-wav",
- webm = "video/webm",
- wma = "audio/x-ms-wma",
- wmv = "video/x-ms-wmv",
- wmx = "video/x-ms-wmx",
- wrl = "model/vrml",
- wsdl = "application/wsdl+xml",
- xbm = "image/x-xbitmap",
- xhtml = "application/xhtml+xml",
- xls = "application/vnd.ms-excel",
- xml = "application/xml",
- xpm = "image/x-xpixmap",
- xsl = "application/xml",
- xslt = "application/xslt+xml",
- yaml = "text/yaml",
- yml = "text/yaml",
- zip = "application/zip",
-}
-mime.table = table
-mime.default = "application/octet-stream"
-
-function mime.getType(path)
- return mime.table[path:lower():match("[^.]*$")] or mime.default
-end
-
-return mime
diff --git a/plugins/mime/plugin.json b/plugins/mime/plugin.json
deleted file mode 100644
index ee55fd559b3..00000000000
--- a/plugins/mime/plugin.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "plugin": {
- "name": "mime",
- "version": "0.1.2-1",
- "author": "Tim Caswell",
- "type": "library",
- }
-} \ No newline at end of file
diff --git a/plugins/path/LICENSE b/plugins/path/LICENSE
deleted file mode 100644
index 8f71f43fee3..00000000000
--- a/plugins/path/LICENSE
+++ /dev/null
@@ -1,202 +0,0 @@
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "{}"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright {yyyy} {name of copyright owner}
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
diff --git a/plugins/path/README.md b/plugins/path/README.md
deleted file mode 100644
index 75d881e35e3..00000000000
--- a/plugins/path/README.md
+++ /dev/null
@@ -1,2 +0,0 @@
-# luv-path
-A luv port of luvi's path module
diff --git a/plugins/path/init.lua b/plugins/path/init.lua
deleted file mode 100644
index d0e427d02ee..00000000000
--- a/plugins/path/init.lua
+++ /dev/null
@@ -1,139 +0,0 @@
---[[
-
-Copyright 2014 The Luvit Authors. All Rights Reserved.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS-IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
---]]
-
--- Extracted from https://github.com/luvit/luvi/blob/master/src/lua/init.lua
-
-local isWindows
-if jit and jit.os then
- -- Luajit provides explicit platform detection
- isWindows = jit.os == "Windows"
-else
- -- Normal lua will only have \ for path separator on windows.
- isWindows = package.config:find("\\") and true or false
-end
-
-local uv = require('luv')
-
-local getPrefix, splitPath, joinParts
-
-if isWindows then
- -- Windows aware path utilities
- function getPrefix(path)
- return path:match("^%a:\\") or
- path:match("^/") or
- path:match("^\\+")
- end
- function splitPath(path)
- local parts = {}
- for part in string.gmatch(path, '([^/\\]+)') do
- table.insert(parts, part)
- end
- return parts
- end
- function joinParts(prefix, parts, i, j)
- if not prefix then
- return table.concat(parts, '/', i, j)
- elseif prefix ~= '/' then
- return prefix .. table.concat(parts, '\\', i, j)
- else
- return prefix .. table.concat(parts, '/', i, j)
- end
- end
-else
- -- Simple optimized versions for UNIX systems
- function getPrefix(path)
- return path:match("^/")
- end
- function splitPath(path)
- local parts = {}
- for part in string.gmatch(path, '([^/]+)') do
- table.insert(parts, part)
- end
- return parts
- end
- function joinParts(prefix, parts, i, j)
- if prefix then
- return prefix .. table.concat(parts, '/', i, j)
- end
- return table.concat(parts, '/', i, j)
- end
-end
-
-local function pathJoin(...)
- local inputs = {...}
- local l = #inputs
-
- -- Find the last segment that is an absolute path
- -- Or if all are relative, prefix will be nil
- local i = l
- local prefix
- while true do
- prefix = getPrefix(inputs[i])
- if prefix or i <= 1 then break end
- i = i - 1
- end
-
- -- If there was one, remove its prefix from its segment
- if prefix then
- inputs[i] = inputs[i]:sub(#prefix)
- end
-
- -- Split all the paths segments into one large list
- local parts = {}
- while i <= l do
- local sub = splitPath(inputs[i])
- for j = 1, #sub do
- parts[#parts + 1] = sub[j]
- end
- i = i + 1
- end
-
- -- Evaluate special segments in reverse order.
- local skip = 0
- local reversed = {}
- for idx = #parts, 1, -1 do
- local part = parts[idx]
- if part == '.' then
- -- Ignore
- elseif part == '..' then
- skip = skip + 1
- elseif skip > 0 then
- skip = skip - 1
- else
- reversed[#reversed + 1] = part
- end
- end
-
- -- Reverse the list again to get the correct order
- parts = reversed
- for idx = 1, #parts / 2 do
- local j = #parts - idx + 1
- parts[idx], parts[j] = parts[j], parts[idx]
- end
-
- local path = joinParts(prefix, parts)
- return path
-end
-
-return {
- isWindows = isWindows,
- join = pathJoin,
- getPrefix = getPrefix,
- splitPath = splitPath,
- joinparts = joinParts,
-}
diff --git a/plugins/path/plugin.json b/plugins/path/plugin.json
deleted file mode 100644
index c88de67d77c..00000000000
--- a/plugins/path/plugin.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "plugin": {
- "name": "path",
- "version": "1.0.0",
- "author": "Tim Caswell",
- "type": "library",
- }
-} \ No newline at end of file
diff --git a/plugins/pretty-print/LICENSE b/plugins/pretty-print/LICENSE
deleted file mode 100644
index 8f71f43fee3..00000000000
--- a/plugins/pretty-print/LICENSE
+++ /dev/null
@@ -1,202 +0,0 @@
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "{}"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright {yyyy} {name of copyright owner}
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
diff --git a/plugins/pretty-print/README.md b/plugins/pretty-print/README.md
deleted file mode 100644
index 82372160e09..00000000000
--- a/plugins/pretty-print/README.md
+++ /dev/null
@@ -1,2 +0,0 @@
-# luv-pretty-print
-luvit's pretty-print module re-packaged as a luv submodule.
diff --git a/plugins/pretty-print/init.lua b/plugins/pretty-print/init.lua
deleted file mode 100644
index f1c112d6e4f..00000000000
--- a/plugins/pretty-print/init.lua
+++ /dev/null
@@ -1,362 +0,0 @@
---[[
-
-Copyright 2014-2015 The Luvit Authors. All Rights Reserved.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS-IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
---]]
-
--- Luv port by Tim Caswell <tim@creationix.com>
-
-local exports = {}
-exports.name = "luvit/pretty-print"
-exports.version = "1.0.3"
-exports.homepage = "https://github.com/luvit/luvit/blob/master/deps/pretty-print.lua"
-exports.description = "A lua value pretty printer and colorizer for terminals."
-exports.tags = {"colors", "tty"}
-exports.license = "Apache 2"
-exports.author = { name = "Tim Caswell" }
-
-local uv = require('luv')
-
-local prettyPrint, dump, strip, color, colorize, loadColors
-local theme = {}
-local useColors = false
-local defaultTheme
-
-local stdout, stdin, stderr, width
-
-local quote, quote2, dquote, dquote2, obracket, cbracket, obrace, cbrace, comma, equals, controls
-
-local themes = {
- -- nice color theme using 16 ansi colors
- [16] = {
- property = "0;37", -- white
- sep = "1;30", -- bright-black
- braces = "1;30", -- bright-black
-
- ["nil"] = "1;30", -- bright-black
- boolean = "0;33", -- yellow
- number = "1;33", -- bright-yellow
- string = "0;32", -- green
- quotes = "1;32", -- bright-green
- escape = "1;32", -- bright-green
- ["function"] = "0;35", -- purple
- thread = "1;35", -- bright-purple
-
- table = "1;34", -- bright blue
- userdata = "1;36", -- bright cyan
- cdata = "0;36", -- cyan
-
- err = "1;31", -- bright red
- success = "1;33;42", -- bright-yellow on green
- failure = "1;33;41", -- bright-yellow on red
- highlight = "1;36;44", -- bright-cyan on blue
- },
- -- nice color theme using ansi 256-mode colors
- [256] = {
- property = "38;5;253",
- braces = "38;5;247",
- sep = "38;5;240",
-
- ["nil"] = "38;5;244",
- boolean = "38;5;220", -- yellow-orange
- number = "38;5;202", -- orange
- string = "38;5;34", -- darker green
- quotes = "38;5;40", -- green
- escape = "38;5;46", -- bright green
- ["function"] = "38;5;129", -- purple
- thread = "38;5;199", -- pink
-
- table = "38;5;27", -- blue
- userdata = "38;5;39", -- blue2
- cdata = "38;5;69", -- teal
-
- err = "38;5;196", -- bright red
- success = "38;5;120;48;5;22", -- bright green on dark green
- failure = "38;5;215;48;5;52", -- bright red on dark red
- highlight = "38;5;45;48;5;236", -- bright teal on dark grey
- },
-}
-
-local special = {
- [7] = 'a',
- [8] = 'b',
- [9] = 't',
- [10] = 'n',
- [11] = 'v',
- [12] = 'f',
- [13] = 'r'
-}
-
-function strip(str)
- return string.gsub(str, '\027%[[^m]*m', '')
-end
-
-
-function loadColors(index)
- if index == nil then index = defaultTheme end
-
- -- Remove the old theme
- for key in pairs(theme) do
- theme[key] = nil
- end
-
- if index then
- local new = themes[index]
- if not new then error("Invalid theme index: " .. tostring(index)) end
- -- Add the new theme
- for key in pairs(new) do
- theme[key] = new[key]
- end
- useColors = true
- else
- useColors = false
- end
-
- quote = colorize('quotes', "'", 'string')
- quote2 = colorize('quotes', "'")
- dquote = colorize('quotes', '"', 'string')
- dquote2 = colorize('quotes', '"')
- obrace = colorize('braces', '{ ')
- cbrace = colorize('braces', '}')
- obracket = colorize('property', '[')
- cbracket = colorize('property', ']')
- comma = colorize('sep', ', ')
- equals = colorize('sep', ' = ')
-
- controls = {}
- for i = 0, 31 do
- local c = special[i]
- if not c then
- if i < 10 then
- c = "00" .. tostring(i)
- else
- c = "0" .. tostring(i)
- end
- end
- controls[i] = colorize('escape', '\\' .. c, 'string')
- end
- controls[92] = colorize('escape', '\\\\', 'string')
- controls[34] = colorize('escape', '\\"', 'string')
- controls[39] = colorize('escape', "\\'", 'string')
- for i = 128, 255 do
- local c
- if i < 100 then
- c = "0" .. tostring(i)
- else
- c = tostring(i)
- end
- controls[i] = colorize('escape', '\\' .. c, 'string')
- end
-
-end
-
-function color(colorName)
- return '\27[' .. (theme[colorName] or '0') .. 'm'
-end
-
-function colorize(colorName, string, resetName)
- return useColors and
- (color(colorName) .. tostring(string) .. color(resetName)) or
- tostring(string)
-end
-
-local function stringEscape(c)
- return controls[string.byte(c, 1)]
-end
-
-function dump(value, recurse, nocolor)
- local seen = {}
- local output = {}
- local offset = 0
- local stack = {}
-
- local function recalcOffset(index)
- for i = index + 1, #output do
- local m = string.match(output[i], "\n([^\n]*)$")
- if m then
- offset = #(strip(m))
- else
- offset = offset + #(strip(output[i]))
- end
- end
- end
-
- local function write(text, length)
- if not length then length = #(strip(text)) end
- -- Create room for data by opening parent blocks
- -- Start at the root and go down.
- local i = 1
- while offset + length > width and stack[i] do
- local entry = stack[i]
- if not entry.opened then
- entry.opened = true
- table.insert(output, entry.index + 1, "\n" .. string.rep(" ", i))
- -- Recalculate the offset
- recalcOffset(entry.index)
- -- Bump the index of all deeper entries
- for j = i + 1, #stack do
- stack[j].index = stack[j].index + 1
- end
- end
- i = i + 1
- end
- output[#output + 1] = text
- offset = offset + length
- if offset > width then
- return dump(stack)
- end
- end
-
- local function indent()
- stack[#stack + 1] = {
- index = #output,
- opened = false,
- }
- end
-
- local function unindent()
- stack[#stack] = nil
- end
-
- local function process(value)
- local typ = type(value)
- if typ == 'string' then
- if string.match(value, "'") and not string.match(value, '"') then
- write(dquote .. string.gsub(value, '[%c\\\128-\255]', stringEscape) .. dquote2)
- else
- write(quote .. string.gsub(value, "[%c\\'\128-\255]", stringEscape) .. quote2)
- end
- elseif typ == 'table' and not seen[value] then
- if not recurse then seen[value] = true end
- write(obrace)
- local i = 1
- -- Count the number of keys so we know when to stop adding commas
- local total = 0
- for _ in pairs(value) do total = total + 1 end
-
- local nextIndex = 1
- for k, v in pairs(value) do
- indent()
- if k == nextIndex then
- -- if the key matches the last numerical index + 1
- -- This is how lists print without keys
- nextIndex = k + 1
- process(v)
- else
- if type(k) == "string" and string.find(k,"^[%a_][%a%d_]*$") then
- write(colorize("property", k) .. equals)
- else
- write(obracket)
- process(k)
- write(cbracket .. equals)
- end
- if type(v) == "table" then
- process(v)
- else
- indent()
- process(v)
- unindent()
- end
- end
- if i < total then
- write(comma)
- else
- write(" ")
- end
- i = i + 1
- unindent()
- end
- write(cbrace)
- else
- write(colorize(typ, tostring(value)))
- end
- end
-
- process(value)
- local s = table.concat(output, "")
- return nocolor and strip(s) or s
-end
-
--- Print replacement that goes through libuv. This is useful on windows
--- to use libuv's code to translate ansi escape codes to windows API calls.
-function _G.print(...)
- local n = select('#', ...)
- local arguments = {...}
- for i = 1, n do
- arguments[i] = tostring(arguments[i])
- end
- uv.write(stdout, table.concat(arguments, "\t") .. "\n")
-end
-
-function prettyPrint(...)
- local n = select('#', ...)
- local arguments = { ... }
-
- for i = 1, n do
- arguments[i] = dump(arguments[i])
- end
-
- print(table.concat(arguments, "\t"))
-end
-
-function strip(str)
- return string.gsub(str, '\027%[[^m]*m', '')
-end
-
-if uv.guess_handle(0) == 'tty' then
- stdin = assert(uv.new_tty(0, true))
-else
- stdin = uv.new_pipe(false)
- uv.pipe_open(stdin, 0)
-end
-
-if uv.guess_handle(1) == 'tty' then
- stdout = assert(uv.new_tty(1, false))
- width = uv.tty_get_winsize(stdout)
- if width == 0 then width = 80 end
- -- auto-detect when 16 color mode should be used
- local term = os.getenv("TERM")
- if term == 'xterm' or term == 'xterm-256color' then
- defaultTheme = 256
- else
- defaultTheme = 16
- end
-else
- stdout = uv.new_pipe(false)
- uv.pipe_open(stdout, 1)
- width = 80
-end
-loadColors()
-
-if uv.guess_handle(2) == 'tty' then
- stderr = assert(uv.new_tty(2, false))
-else
- stderr = uv.new_pipe(false)
- uv.pipe_open(stderr, 2)
-end
-
-exports.loadColors = loadColors
-exports.theme = theme
-exports.print = print
-exports.prettyPrint = prettyPrint
-exports.dump = dump
-exports.color = color
-exports.colorize = colorize
-exports.stdin = stdin
-exports.stdout = stdout
-exports.stderr = stderr
-exports.strip = strip
-
-return exports
diff --git a/plugins/pretty-print/plugin.json b/plugins/pretty-print/plugin.json
deleted file mode 100644
index 556608c8dd6..00000000000
--- a/plugins/pretty-print/plugin.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "plugin": {
- "name": "pretty-print",
- "version": "1.0.3",
- "author": "Tim Caswell",
- "type": "library",
- }
-} \ No newline at end of file
diff --git a/plugins/querystring/LICENSE b/plugins/querystring/LICENSE
deleted file mode 100644
index 8f71f43fee3..00000000000
--- a/plugins/querystring/LICENSE
+++ /dev/null
@@ -1,202 +0,0 @@
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "{}"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright {yyyy} {name of copyright owner}
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
diff --git a/plugins/querystring/README.md b/plugins/querystring/README.md
deleted file mode 100644
index 7f3437312bb..00000000000
--- a/plugins/querystring/README.md
+++ /dev/null
@@ -1,2 +0,0 @@
-# luv-querystring
-A luv port of luvit's querystring
diff --git a/plugins/querystring/init.lua b/plugins/querystring/init.lua
deleted file mode 100644
index 0e2675f9252..00000000000
--- a/plugins/querystring/init.lua
+++ /dev/null
@@ -1,105 +0,0 @@
---[[
-
-Copyright 2015 The Luvit Authors. All Rights Reserved.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS-IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
---]]
-
-local exports = {}
-exports.name = "luvit/querystring"
-exports.version = "1.0.2"
-exports.license = "Apache 2"
-exports.homepage = "https://github.com/luvit/luvit/blob/master/deps/querystring.lua"
-exports.description = "Node-style query-string codec for luvit"
-exports.tags = {"luvit", "url", "codec"}
-
-local find = string.find
-local gsub = string.gsub
-local char = string.char
-local byte = string.byte
-local format = string.format
-local match = string.match
-local gmatch = string.gmatch
-
-function exports.urldecode(str)
- str = gsub(str, '+', ' ')
- str = gsub(str, '%%(%x%x)', function(h)
- return char(tonumber(h, 16))
- end)
- str = gsub(str, '\r\n', '\n')
- return str
-end
-
-function exports.urlencode(str)
- if str then
- str = gsub(str, '\n', '\r\n')
- str = gsub(str, '([^%w])', function(c)
- return format('%%%02X', byte(c))
- end)
- end
- return str
-end
-
-local function stringifyPrimitive(v)
- return tostring(v)
-end
-
-function exports.stringify(params, sep, eq)
- if not sep then sep = '&' end
- if not eq then eq = '=' end
- if type(params) == "table" then
- local fields = {}
- for key,value in pairs(params) do
- local keyString = exports.urlencode(stringifyPrimitive(key)) .. eq
- if type(value) == "table" then
- for _, v in ipairs(value) do
- table.insert(fields, keyString .. exports.urlencode(stringifyPrimitive(v)))
- end
- else
- table.insert(fields, keyString .. exports.urlencode(stringifyPrimitive(value)))
- end
- end
- return table.concat(fields, sep)
- end
- return ''
-end
-
--- parse querystring into table. urldecode tokens
-function exports.parse(str, sep, eq)
- if not sep then sep = '&' end
- if not eq then eq = '=' end
- local vars = {}
- for pair in gmatch(tostring(str), '[^' .. sep .. ']+') do
- if not find(pair, eq) then
- vars[exports.urldecode(pair)] = ''
- else
- local key, value = match(pair, '([^' .. eq .. ']*)' .. eq .. '(.*)')
- if key then
- key = exports.urldecode(key)
- value = exports.urldecode(value)
- local type = type(vars[key])
- if type=='nil' then
- vars[key] = value
- elseif type=='table' then
- table.insert(vars[key], value)
- else
- vars[key] = {vars[key],value}
- end
- end
- end
- end
- return vars
-end
-
-return exports
diff --git a/plugins/querystring/plugin.json b/plugins/querystring/plugin.json
deleted file mode 100644
index ddd3cc4291e..00000000000
--- a/plugins/querystring/plugin.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "plugin": {
- "name": "querystring",
- "version": "1.0.2",
- "author": "Tim Caswell",
- "type": "library",
- }
-} \ No newline at end of file
diff --git a/plugins/weblit/LICENSE b/plugins/weblit/LICENSE
deleted file mode 100644
index 5789b767285..00000000000
--- a/plugins/weblit/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2015 Tim Caswell
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-
diff --git a/plugins/weblit/README.md b/plugins/weblit/README.md
deleted file mode 100644
index 55d6085d22b..00000000000
--- a/plugins/weblit/README.md
+++ /dev/null
@@ -1,239 +0,0 @@
-# weblit
-
-A web framework for luv (ported from luvit/lit)
-
-Weblit is a collection of lit packages that together form a nice web framework.
-
-## weblit/app
-
-This is the core of the framework. It's export value is the app itself. The
-config functions can be chained off this config for super terse syntax.
-
-```lua
-require('weblit/app')
-
- .bind({
- host = "0.0.0.0",
- port = 8080
- })
-
- .use(require('weblit/logger'))
- .use(require('weblit/auto-headers'))
- .use(require('weblit/etag-cache'))
-
- .route({
- method = "GET",
- path = "/do/:user/:action",
- domain = "*.myapp.io"
- }, function (req, res, go)
- -- Handle route
- end)
-
- .start()
-
-```
-
-### bind(options)
-
-Use this to configure your server. You can bind to multiple addresses and
-ports. For example, the same server can listen on port `8080` using normal HTTP
-while also listening on port `8443` using HTTPS.
-
-```lua
--- Listen on port 8080 internally using plain HTTP.
-.bind({
- host = "127.0.0.1",
- port = 8080
-})
-
--- Also listen on port 8443 externally using encrypted HTTPS.
-.bind({
- host = "0.0.0.0",
- port = 8443,
- tls = {
- cert = module:load("cert.pem"),
- key = module:load("key.pem",
- }
-})
-```
-
-The `host` option defaults to `"127.0.0.1"`. The default port depends on if
-you're running as root and if the connection is TLS encrypted.
-
- | Root | User
-------|-----:|------:
-HTTP | 80 | 8080
-HTTPS | 442 | 8443
-
-
-### use(middleware)
-
-This adds a raw middleware to the chain. It's signature is:
-
-```lua
-.use(function (req, res, go)
- -- Log the request table
- p("request", req)
- -- Hand off to the next layer.
- return go()
-end)
-```
-
-The `req` table will contain information about the HTTP request. This includes
-several fields:
-
- - `socket` - The raw libuv `uv_tty_t` socket.
- - `method` - The HTTP request method verb like `GET` or `POST`.
- - `path` - The raw HTTP request path (including query string).
- - `headers` - A list of headers. Each header is a table with two entries for
- key and value. For convenience, there are special `__index` and
- `__newindex` metamethods that let you treat this like a case insensitive
- key/value store.
- - `version` - The HTTP version (Usually either `1.0` or `1.1`).
- - `keepAlive` - A flag telling you if this should be a keepalive connection.
- - `body` - The request body as a string. In the future, this may also be a stream.
-
-The `res` table also has some conventions used to form the response a piece at a
-time. Initially it contains:
-
- - `code` - The response status code. Initially contains `404`.
- - `headers` - Another special headers table like in `req`.
- - `body` - The response body to send. Initially contains `"Not Found\n"`.
-
-The `go` function is to be called if you wish to not handle a request. This
-allows other middleware layers to get a chance to respond to the request. Use a
-tail call if there is nothing more to do.
-
-Otherwise do further processing after `go` returns. At this point, all inner
-layers have finished and a response is ready in `res`.
-
-### route(options, middleware)
-
-Route is like use, but allows you to pre-filter the requests before the middleware
-is called.
-
-```lua
-.route({
- method = "PUT",
- path = "/upload/:username"
-}, function (req, res, go)
- local url = saveFile(req.params.username, req.body)
- res.code = 201
- res.headers.Location = url
-end)
-```
-
-The route options accept several parameters:
-
- - `method` - This is a simple filter on a specific HTTP method verb.
- - `path` - This is either an exact match or can contain patterns. Segments
- looking like `:name` will match single path segments while `:name:` will
- match multiple segments. The matches will go into `req.params`. Also any
- query string will be stripped off, parsed out, and stored in `req.query`.
- - `host` - Will filter against the `Host` header. This can be an exact match
- or a glob match like `*.mydomain.org`.
- - `filter` - Filter is a custom lua function that accepts `req` and returns
- `true` or `false`.
-
-If the request matches all the requirements, then the middleware is called the
-same as with `use`.
-
-### start
-
-Bind to the port(s), listen on the socket(s) and start accepting connections.
-
-## weblit/logger
-
-This is a simple middleware that logs the request method, url and user agent.
-It also includes the response status code.
-
-Make sure to use it at the top of your middleware chain so that it's able to see
-the final response code sent to the client.
-
-```lua
-.use(require('weblit/logger'))
-```
-
-## weblit/auto-headers
-
-This implements lots of conventions and useful defaults that help your app
-implement a proper HTTP server.
-
-You should always use this near the top of the list. The only middleware that
-goes before this is the logger.
-
-
-```lua
-.use(require('weblit/auto-headers'))
-```
-
-## weblit/etag-cache
-
-This caches responses in memory keyed by etag. If there is no etag, but there
-is a response body, it will use the body to generate an etag.
-
-Put this in your list after auto-headers, but before custom server logic.
-
-```lua
-.use(require('weblit/etag-cache'))
-```
-
-## weblit/static
-
-This middleware serves static files to the user. Use this to serve your client-
-side web assets.
-
-Usage is pretty simplistic for now.
-
-```lua
-local static = require('weblit/static')
-app.use(static("path/to/static/assets"))
-```
-
-If you want to only match a sub-path, use the router.
-
-```lua
-app.route({
- path = "/blog/:path:"
-}, static(pathJoin(module.dir, "articles")))
-```
-
-The `path` param will be used if it exists and the full path will be used
-otherwise.
-
-## weblit/websocket
-
-This implements a websocket upgrade handler. You can choose the subprotocol and
-other routing information.
-
-```lua
-app.websocket({
- path = "/v2/socket", -- Prefix for matching
- protocol = "virgo/2.0", -- Restrict to a websocket sub-protocol
-}, function (req, read, write)
- -- Log the request headers
- p(req)
- -- Log and echo all messages
- for message in read do
- write(message)
- end
- -- End the stream
- write()
-end)
-```
-
-
-## weblit
-
-This is the metapackage that simply includes the other modules.
-
-It exposes the other modules as a single exports table.
-
-```lua
-exports.app = require('weblit/app')
-exports.autoHeaders = require('weblit/auto-headers')
-exports.etagCache = require('weblit/etag-cache')
-exports.logger = require('weblit/logger')
-exports.static = require('weblit/static')
-exports.websocket = require('weblit/websocket')
-```
diff --git a/plugins/weblit/app.lua b/plugins/weblit/app.lua
deleted file mode 100644
index d3839c1df8e..00000000000
--- a/plugins/weblit/app.lua
+++ /dev/null
@@ -1,261 +0,0 @@
-
-
-local createServer = require('coro-net').createServer
-local wrapper = require('coro-wrapper')
-local readWrap, writeWrap = wrapper.reader, wrapper.writer
-local httpCodec = require('http-codec')
---local tlsWrap = require('coro-tls').wrap
-local parseQuery = require('querystring').parse
-
--- Ignore SIGPIPE if it exists on platform
-local uv = require('luv')
-if uv.constants.SIGPIPE then
- uv.new_signal():start("sigpipe")
-end
-
-local server = {}
-local handlers = {}
-local bindings = {}
-
--- Provide a nice case insensitive interface to headers.
-local headerMeta = {
- __index = function (list, name)
- if type(name) ~= "string" then
- return rawget(list, name)
- end
- name = name:lower()
- for i = 1, #list do
- local key, value = unpack(list[i])
- if key:lower() == name then return value end
- end
- end,
- __newindex = function (list, name, value)
- -- non-string keys go through as-is.
- if type(name) ~= "string" then
- return rawset(list, name, value)
- end
- -- First remove any existing pairs with matching key
- local lowerName = name:lower()
- for i = #list, 1, -1 do
- if list[i][1]:lower() == lowerName then
- table.remove(list, i)
- end
- end
- -- If value is nil, we're done
- if value == nil then return end
- -- Otherwise, set the key(s)
- if (type(value) == "table") then
- -- We accept a table of strings
- for i = 1, #value do
- rawset(list, #list + 1, {name, tostring(value[i])})
- end
- else
- -- Or a single value interperted as string
- rawset(list, #list + 1, {name, tostring(value)})
- end
- end,
-}
-
-local function handleRequest(head, input, socket)
- local req = {
- socket = socket,
- method = head.method,
- path = head.path,
- headers = setmetatable({}, headerMeta),
- version = head.version,
- keepAlive = head.keepAlive,
- body = input
- }
- for i = 1, #head do
- req.headers[i] = head[i]
- end
-
- local res = {
- code = 404,
- headers = setmetatable({}, headerMeta),
- body = "Not Found\n",
- }
-
- local function run(i)
- local success, err = pcall(function ()
- i = i or 1
- local go = i < #handlers
- and function ()
- return run(i + 1)
- end
- or function () end
- return handlers[i](req, res, go)
- end)
- if not success then
- res.code = 500
- res.headers = setmetatable({}, headerMeta)
- res.body = err
- print(err)
- end
- end
- run(1)
-
- local out = {
- code = res.code,
- keepAlive = res.keepAlive,
- }
- for i = 1, #res.headers do
- out[i] = res.headers[i]
- end
- return out, res.body, res.upgrade
-end
-
-local function handleConnection(rawRead, rawWrite, socket)
-
- -- Speak in HTTP events
- local read, updateDecoder = readWrap(rawRead, httpCodec.decoder())
- local write, updateEncoder = writeWrap(rawWrite, httpCodec.encoder())
-
- for head in read do
- local parts = {}
- for chunk in read do
- if #chunk > 0 then
- parts[#parts + 1] = chunk
- else
- break
- end
- end
- local res, body, upgrade = handleRequest(head, #parts > 0 and table.concat(parts) or nil, socket)
- write(res)
- if upgrade then
- return upgrade(read, write, updateDecoder, updateEncoder, socket)
- end
- write(body)
- if not (res.keepAlive and head.keepAlive) then
- break
- end
- end
- write()
-
-end
-
-function server.bind(options)
- if not options.host then
- options.host = "127.0.0.1"
- end
- if not options.port then
- options.port = require('uv').getuid() == 0 and
- (options.tls and 443 or 80) or
- (options.tls and 8443 or 8080)
- end
- bindings[#bindings + 1] = options
- return server
-end
-
-function server.use(handler)
- handlers[#handlers + 1] = handler
- return server
-end
-
-
-function server.start()
- if #bindings == 0 then
- server.bind({})
- end
- for i = 1, #bindings do
- local options = bindings[i]
- createServer(options, function (rawRead, rawWrite, socket)
- --local tls = options.tls
- --if tls then
- --rawRead, rawWrite = tlsWrap(rawRead, rawWrite, {
- -- server = true,
- --key = assert(tls.key, "tls key required"),
- --cert = assert(tls.cert, "tls cert required"),
- --})
- --end
- return handleConnection(rawRead, rawWrite, socket)
- end)
- print("HTTP server listening at http" .. (options.tls and "s" or "") .. "://" .. options.host .. (options.port == (options.tls and 443 or 80) and "" or ":" .. options.port) .. "/")
- end
- return server
-end
-
-local quotepattern = '(['..("%^$().[]*+-?"):gsub("(.)", "%%%1")..'])'
-local function escape(str)
- return str:gsub(quotepattern, "%%%1")
-end
-
-local function compileGlob(glob)
- local parts = {"^"}
- for a, b in glob:gmatch("([^*]*)(%**)") do
- if #a > 0 then
- parts[#parts + 1] = escape(a)
- end
- if #b > 0 then
- parts[#parts + 1] = "(.*)"
- end
- end
- parts[#parts + 1] = "$"
- local pattern = table.concat(parts)
- return function (string)
- return string and string:match(pattern)
- end
-end
-
-local function compileRoute(route)
- local parts = {"^"}
- local names = {}
- for a, b, c, d in route:gmatch("([^:]*):([_%a][_%w]*)(:?)([^:]*)") do
- if #a > 0 then
- parts[#parts + 1] = escape(a)
- end
- if #c > 0 then
- parts[#parts + 1] = "(.*)"
- else
- parts[#parts + 1] = "([^/]*)"
- end
- names[#names + 1] = b
- if #d > 0 then
- parts[#parts + 1] = escape(d)
- end
- end
- if #parts == 1 then
- return function (string)
- if string == route then return {} end
- end
- end
- parts[#parts + 1] = "$"
- local pattern = table.concat(parts)
- return function (string)
- local matches = {string:match(pattern)}
- if #matches > 0 then
- local results = {}
- for i = 1, #matches do
- results[i] = matches[i]
- results[names[i]] = matches[i]
- end
- return results
- end
- end
-end
-
-function server.route(options, handler)
- local method = options.method
- local path = options.path and compileRoute(options.path)
- local host = options.host and compileGlob(options.host)
- local filter = options.filter
- server.use(function (req, res, go)
- if method and req.method ~= method then return go() end
- if host and not host(req.headers.host) then return go() end
- if filter and not filter(req) then return go() end
- local params
- if path then
- local pathname, query = req.path:match("^([^?]*)%??(.*)")
- params = path(pathname)
- if not params then return go() end
- if #query > 0 then
- req.query = parseQuery(query)
- end
- end
- req.params = params or {}
- return handler(req, res, go)
- end)
- return server
-end
-
-return server
diff --git a/plugins/weblit/auto-headers.lua b/plugins/weblit/auto-headers.lua
deleted file mode 100644
index 44ad65779e9..00000000000
--- a/plugins/weblit/auto-headers.lua
+++ /dev/null
@@ -1,92 +0,0 @@
-
-
---[[
-
-Response automatic values:
- - Auto Server header
- - Auto Date Header
- - code defaults to 404 with body "Not Found\n"
- - if there is a string body add Content-Length and ETag if missing
- - if string body and no Content-Type, use text/plain for valid utf-8, application/octet-stream otherwise
- - Auto add "; charset=utf-8" to Content-Type when body is known to be valid utf-8
- - Auto 304 responses for if-none-match requests
- - Auto strip body with HEAD requests
- - Auto chunked encoding if body with unknown length
- - if Connection header set and not keep-alive, set res.keepAlive to false
- - Add Connection Keep-Alive/Close if not found based on res.keepAlive
-
---TODO: utf8 scanning
-
-]]
-
---local digest = require('openssl').digest.digest
-local date = require('os').date
-
-return function (req, res, go)
- local isHead = false
- if req.method == "HEAD" then
- req.method = "GET"
- isHead = true
- end
-
- local requested = req.headers["if-none-match"]
-
- go()
-
- -- We could use the fancy metatable, but this is much faster
- local lowerHeaders = {}
- local headers = res.headers
- for i = 1, #headers do
- local key, value = unpack(headers[i])
- lowerHeaders[key:lower()] = value
- end
-
-
- if not lowerHeaders.server then
- headers[#headers + 1] = {"Server", serverName}
- end
- if not lowerHeaders.date then
- headers[#headers + 1] = {"Date", date("!%a, %d %b %Y %H:%M:%S GMT")}
- end
-
- if not lowerHeaders.connection then
- if req.keepAlive then
- lowerHeaders.connection = "Keep-Alive"
- headers[#headers + 1] = {"Connection", "Keep-Alive"}
- else
- headers[#headers + 1] = {"Connection", "Close"}
- end
- end
- res.keepAlive = lowerHeaders.connection and lowerHeaders.connection:lower() == "keep-alive"
-
- local body = res.body
- if body then
- local needLength = not lowerHeaders["content-length"] and not lowerHeaders["transfer-encoding"]
- if type(body) == "string" then
- if needLength then
- headers[#headers + 1] = {"Content-Length", #body}
- end
- -- if not lowerHeaders.etag then
- -- local etag = '"' .. digest("sha1", body) .. '"'
- -- lowerHeaders.etag = etag
- --headers[#headers + 1] = {"ETag", etag}
- -- end
- else
- if needLength then
- headers[#headers + 1] = {"Transfer-Encoding", "chunked"}
- end
- end
- if not lowerHeaders["content-type"] then
- headers[#headers + 1] = {"Content-Type", "text/plain"}
- end
- end
-
- local etag = lowerHeaders.etag
- if requested and res.code >= 200 and res.code < 300 and requested == etag then
- res.code = 304
- body = nil
- end
-
- if isHead then body = nil end
- res.body = body
-end
diff --git a/plugins/weblit/etag-cache.lua b/plugins/weblit/etag-cache.lua
deleted file mode 100644
index e8c5d149b35..00000000000
--- a/plugins/weblit/etag-cache.lua
+++ /dev/null
@@ -1,39 +0,0 @@
-
-local function clone(headers)
- local copy = setmetatable({}, getmetatable(headers))
- for i = 1, #headers do
- copy[i] = headers[i]
- end
- return copy
-end
-
-local cache = {}
-return function (req, res, go)
- local requested = req.headers["If-None-Match"]
- local host = req.headers.Host
- local key = host and host .. "|" .. req.path or req.path
- local cached = cache[key]
- if not requested and cached then
- req.headers["If-None-Match"] = cached.etag
- end
- go()
- local etag = res.headers.ETag
- if not etag then return end
- if res.code >= 200 and res.code < 300 then
- local body = res.body
- if not body or type(body) == "string" then
- cache[key] = {
- etag = etag,
- code = res.code,
- headers = clone(res.headers),
- body = body
- }
- end
- elseif res.code == 304 then
- if not requested and cached and etag == cached.etag then
- res.code = cached.code
- res.headers = clone(cached.headers)
- res.body = cached.body
- end
- end
-end
diff --git a/plugins/weblit/init.lua b/plugins/weblit/init.lua
deleted file mode 100644
index f9224b7880c..00000000000
--- a/plugins/weblit/init.lua
+++ /dev/null
@@ -1,8 +0,0 @@
-local exports = {}
-exports.app = require('weblit/app')
-exports.autoHeaders = require('weblit/auto-headers')
-exports.etagCache = require('weblit/etag-cache')
-exports.logger = require('weblit/logger')
-exports.static = require('weblit/static')
-exports.websocket = require('weblit/websocket')
-return exports
diff --git a/plugins/weblit/logger.lua b/plugins/weblit/logger.lua
deleted file mode 100644
index 912b4eed768..00000000000
--- a/plugins/weblit/logger.lua
+++ /dev/null
@@ -1,10 +0,0 @@
-
-return function (req, res, go)
- -- Skip this layer for clients who don't send User-Agent headers.
- local userAgent = req.headers["user-agent"]
- if not userAgent then return go() end
- -- Run all inner layers first.
- go()
- -- And then log after everything is done
- --print(string.format("%s %s %s %s", req.method, req.path, userAgent, res.code))
-end
diff --git a/plugins/weblit/plugin.json b/plugins/weblit/plugin.json
deleted file mode 100644
index 69dd45ccc0e..00000000000
--- a/plugins/weblit/plugin.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "plugin": {
- "name": "weblit",
- "version": "1.0.0",
- "author": "Tim Caswell",
- "type": "library",
- }
-} \ No newline at end of file
diff --git a/plugins/weblit/static.lua b/plugins/weblit/static.lua
deleted file mode 100644
index b34ea638fa1..00000000000
--- a/plugins/weblit/static.lua
+++ /dev/null
@@ -1,62 +0,0 @@
-
-local getType = require("mime").getType
-local jsonStringify = require('json').stringify
-
-local makeChroot = require('coro-fs').chroot
-
-return function (rootPath)
-
- local fs = makeChroot(rootPath)
-
- return function (req, res, go)
- if req.method ~= "GET" then return go() end
- local path = (req.params and req.params.path) or req.path
- path = path:match("^[^?#]*")
- if path:byte(1) == 47 then
- path = path:sub(2)
- end
- local stat = fs.stat(path)
- if not stat then return go() end
-
- local function renderFile()
- local body = assert(fs.readFile(path))
- res.code = 200
- res.headers["Content-Type"] = getType(path)
- res.body = body
- return
- end
-
- local function renderDirectory()
- if req.path:byte(-1) ~= 47 then
- res.code = 301
- res.headers.Location = req.path .. '/'
- return
- end
- local files = {}
- for entry in fs.scandir(path) do
- if entry.name == "index.html" and entry.type == "file" then
- path = (#path > 0 and path .. "/" or "") .. "index.html"
- return renderFile()
- end
- files[#files + 1] = entry
- entry.url = "http://" .. req.headers.host .. req.path .. entry.name
- end
- local body = jsonStringify(files) .. "\n"
- res.code = 200
- res.headers["Content-Type"] = "application/json"
- res.body = body
- return
- end
-
- if stat.type == "directory" then
- return renderDirectory()
- elseif stat.type == "file" then
- if req.path:byte(-1) == 47 then
- res.code = 301
- res.headers.Location = req.path:match("^(.*[^/])/+$")
- return
- end
- return renderFile()
- end
- end
-end
diff --git a/plugins/weblit/websocket.lua b/plugins/weblit/websocket.lua
deleted file mode 100644
index d5dfe572ea6..00000000000
--- a/plugins/weblit/websocket.lua
+++ /dev/null
@@ -1,82 +0,0 @@
-
-local websocketCodec = require('websocket-codec')
-
-local function websocketHandler(options, handler)
- return function (req, res, go)
- -- Websocket connections must be GET requests
- -- with 'Upgrade: websocket'
- -- and 'Connection: Upgrade' headers
- local headers = req.headers
- local connection = headers.connection
- local upgrade = headers.upgrade
- if not (
- req.method == "GET" and
- upgrade and upgrade:lower():find("websocket", 1, true) and
- connection and connection:lower():find("upgrade", 1, true)
- ) then
- return go()
- end
-
- if options.filter and not options.filter(req) then
- return go()
- end
-
- -- If there is a sub-protocol specified, filter on it.
- local protocol = options.protocol
- if protocol then
- local list = headers["sec-websocket-protocol"]
- local foundProtocol
- if list then
- for item in list:gmatch("[^, ]+") do
- if item == protocol then
- foundProtocol = true
- break
- end
- end
- end
- if not foundProtocol then
- return go()
- end
- end
-
- -- Make sure it's a new client speaking v13 of the protocol
- assert(tonumber(headers["sec-websocket-version"]) >= 13, "only websocket protocol v13 supported")
-
- -- Get the security key
- local key = assert(headers["sec-websocket-key"], "websocket security required")
-
- res.code = 101
- headers = res.headers
- headers.Upgrade = "websocket"
- headers.Connection = "Upgrade"
- headers["Sec-WebSocket-Accept"] = websocketCodec.acceptKey(key)
- if protocol then
- headers["Sec-WebSocket-Protocol"] = protocol
- end
- function res.upgrade(read, write, updateDecoder, updateEncoder)
- updateDecoder(websocketCodec.decode)
- updateEncoder(websocketCodec.encode)
- local success, err = pcall(handler, req, read, write)
- if not success then
- print(err)
- write({
- opcode = 1,
- payload = err,
- })
- return write()
- end
- end
- end
-end
-
-local server = require('weblit-app')
-function server.websocket(options, handler)
- server.route({
- method = "GET",
- path = options.path,
- host = options.host,
- }, websocketHandler(options, handler))
- return server
-end
-
-return websocketHandler
diff --git a/plugins/webserver/init.lua b/plugins/webserver/init.lua
deleted file mode 100644
index 3d68b01e6d5..00000000000
--- a/plugins/webserver/init.lua
+++ /dev/null
@@ -1,34 +0,0 @@
-local exports = {}
-exports.name = "webserver"
-exports.version = "1.0.0"
-exports.description = "A simple web server"
-exports.license = "MIT"
-exports.author = { name = "Miodrag Milanovic" }
-
-local ws = exports
-
-local app = require('weblit/app')
-
-function ws.startplugin()
- app.bind({
- host = "0.0.0.0",
- port = 8080
- })
-
- app.use(require('weblit/logger'))
- app.use(require('weblit/auto-headers'))
- app.use(require('weblit/etag-cache'))
-
- app.route({
- method = "GET",
- path = "/",
- }, function (req, res, go)
- res.code = 200
- res.headers["Content-Type"] = "text/html"
- res.body = "<h1>Hello!</h1>\n"
- end)
-
- app.start()
-end
-
-return exports
diff --git a/plugins/webserver/plugin.json b/plugins/webserver/plugin.json
deleted file mode 100644
index e420a5d5485..00000000000
--- a/plugins/webserver/plugin.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "plugin": {
- "name": "webserver",
- "version": "1.0.0",
- "author": "Miodrag Milanovic",
- "type": "plugin",
- "start": "false",
- }
-} \ No newline at end of file
diff --git a/plugins/websocket-codec/LICENSE b/plugins/websocket-codec/LICENSE
deleted file mode 100644
index 5789b767285..00000000000
--- a/plugins/websocket-codec/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2015 Tim Caswell
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-
diff --git a/plugins/websocket-codec/README.md b/plugins/websocket-codec/README.md
deleted file mode 100644
index 50f41340dce..00000000000
--- a/plugins/websocket-codec/README.md
+++ /dev/null
@@ -1,2 +0,0 @@
-# luv-websocket-codec
-A luv port of lit's websocket codec
diff --git a/plugins/websocket-codec/init.lua b/plugins/websocket-codec/init.lua
deleted file mode 100644
index 8a7da7f9190..00000000000
--- a/plugins/websocket-codec/init.lua
+++ /dev/null
@@ -1,261 +0,0 @@
-local exports = {}
-
-exports.name = "creationix/websocket-codec"
-exports.version = "1.0.7"
-exports.homepage = "https://github.com/luvit/lit/blob/master/deps/websocket-codec.lua"
-exports.description = "A codec implementing websocket framing and helpers for handshakeing"
-exports.tags = {"http", "websocket", "codec"}
-exports.license = "MIT"
-exports.author = { name = "Tim Caswell" }
-
-local digest = require('openssl').digest.digest
-local base64 = require('openssl').base64
-local random = require('openssl').random
-local bit = require('bit')
-
-local band = bit.band
-local bor = bit.bor
-local bxor = bit.bxor
-local rshift = bit.rshift
-local lshift = bit.lshift
-local char = string.char
-local byte = string.byte
-local sub = string.sub
-local gmatch = string.gmatch
-local lower = string.lower
-local gsub = string.gsub
-local concat = table.concat
-
-local function applyMask(data, mask)
- local bytes = {
- [0] = byte(mask, 1),
- [1] = byte(mask, 2),
- [2] = byte(mask, 3),
- [3] = byte(mask, 4)
- }
- local out = {}
- for i = 1, #data do
- out[i] = char(
- bxor(byte(data, i), bytes[(i - 1) % 4])
- )
- end
- return concat(out)
-end
-
-function exports.decode(chunk)
- if #chunk < 2 then return end
- local second = byte(chunk, 2)
- local len = band(second, 0x7f)
- local offset
- if len == 126 then
- if #chunk < 4 then return end
- len = bor(
- lshift(byte(chunk, 3), 8),
- byte(chunk, 4))
- offset = 4
- elseif len == 127 then
- if #chunk < 10 then return end
- len = bor(
- lshift(byte(chunk, 3), 56),
- lshift(byte(chunk, 4), 48),
- lshift(byte(chunk, 5), 40),
- lshift(byte(chunk, 6), 32),
- lshift(byte(chunk, 7), 24),
- lshift(byte(chunk, 8), 16),
- lshift(byte(chunk, 9), 8),
- byte(chunk, 10))
- offset = 10
- else
- offset = 2
- end
- local mask = band(second, 0x80) > 0
- if mask then
- offset = offset + 4
- end
- if #chunk < offset + len then return end
-
- local first = byte(chunk, 1)
- local payload = sub(chunk, offset + 1, offset + len)
- assert(#payload == len, "Length mismatch")
- if mask then
- payload = applyMask(payload, sub(chunk, offset - 3, offset))
- end
- local extra = sub(chunk, offset + len + 1)
- return {
- fin = band(first, 0x80) > 0,
- rsv1 = band(first, 0x40) > 0,
- rsv2 = band(first, 0x20) > 0,
- rsv3 = band(first, 0x10) > 0,
- opcode = band(first, 0xf),
- mask = mask,
- len = len,
- payload = payload
- }, extra
-end
-
-function exports.encode(item)
- if type(item) == "string" then
- item = {
- opcode = 2,
- payload = item
- }
- end
- local payload = item.payload
- assert(type(payload) == "string", "payload must be string")
- local len = #payload
- local fin = item.fin
- if fin == nil then fin = true end
- local rsv1 = item.rsv1
- local rsv2 = item.rsv2
- local rsv3 = item.rsv3
- local opcode = item.opcode or 2
- local mask = item.mask
- local chars = {
- char(bor(
- fin and 0x80 or 0,
- rsv1 and 0x40 or 0,
- rsv2 and 0x20 or 0,
- rsv3 and 0x10 or 0,
- opcode
- )),
- char(bor(
- mask and 0x80 or 0,
- len < 126 and len or (len < 0x10000) and 126 or 127
- ))
- }
- if len >= 0x10000 then
- chars[3] = char(band(rshift(len, 56), 0xff))
- chars[4] = char(band(rshift(len, 48), 0xff))
- chars[5] = char(band(rshift(len, 40), 0xff))
- chars[6] = char(band(rshift(len, 32), 0xff))
- chars[7] = char(band(rshift(len, 24), 0xff))
- chars[8] = char(band(rshift(len, 16), 0xff))
- chars[9] = char(band(rshift(len, 8), 0xff))
- chars[10] = char(band(len, 0xff))
- elseif len >= 126 then
- chars[3] = char(band(rshift(len, 8), 0xff))
- chars[4] = char(band(len, 0xff))
- end
- if mask then
- local key = random(4)
- return concat(chars) .. key .. applyMask(payload, key)
- end
- return concat(chars) .. payload
-end
-
-local websocketGuid = "258EAFA5-E914-47DA-95CA-C5AB0DC85B11"
-
-function exports.acceptKey(key)
- return gsub(base64(digest("sha1", key .. websocketGuid, true)), "\n", "")
-end
-local acceptKey = exports.acceptKey
-
--- Make a client handshake connection
-function exports.handshake(options, request)
- local key = gsub(base64(random(20)), "\n", "")
- local host = options.host
- local path = options.path or "/"
- local protocol = options.protocol
- local req = {
- method = "GET",
- path = path,
- {"Connection", "Upgrade"},
- {"Upgrade", "websocket"},
- {"Sec-WebSocket-Version", "13"},
- {"Sec-WebSocket-Key", key},
- }
- for i = 1, #options do
- req[#req + 1] = options[i]
- end
- if host then
- req[#req + 1] = {"Host", host}
- end
- if protocol then
- req[#req + 1] = {"Sec-WebSocket-Protocol", protocol}
- end
- local res = request(req)
- if not res then
- return nil, "Missing response from server"
- end
- -- Parse the headers for quick reading
- if res.code ~= 101 then
- return nil, "response must be code 101"
- end
-
- local headers = {}
- for i = 1, #res do
- local name, value = unpack(res[i])
- headers[lower(name)] = value
- end
-
- if not headers.connection or lower(headers.connection) ~= "upgrade" then
- return nil, "Invalid or missing connection upgrade header in response"
- end
- if headers["sec-websocket-accept"] ~= acceptKey(key) then
- return nil, "challenge key missing or mismatched"
- end
- if protocol and headers["sec-websocket-protocol"] ~= protocol then
- return nil, "protocol missing or mistmatched"
- end
- return true
-end
-
-function exports.handleHandshake(head, protocol)
-
- -- WebSocket connections must be GET requests
- if not head.method == "GET" then return end
-
- -- Parse the headers for quick reading
- local headers = {}
- for i = 1, #head do
- local name, value = unpack(head[i])
- headers[lower(name)] = value
- end
-
- -- Must have 'Upgrade: websocket' and 'Connection: Upgrade' headers
- if not (headers.connection and headers.upgrade and
- headers.connection:lower():find("upgrade", 1, true) and
- headers.upgrade:lower():find("websocket", 1, true)) then return end
-
- -- Make sure it's a new client speaking v13 of the protocol
- if tonumber(headers["sec-websocket-version"]) < 13 then
- return nil, "only websocket protocol v13 supported"
- end
-
- local key = headers["sec-websocket-key"]
- if not key then
- return nil, "websocket security key missing"
- end
-
- -- If the server wants a specified protocol, check for it.
- if protocol then
- local foundProtocol = false
- local list = headers["sec-websocket-protocol"]
- if list then
- for item in gmatch(list, "[^, ]+") do
- if item == protocol then
- foundProtocol = true
- break
- end
- end
- end
- if not foundProtocol then
- return nil, "specified protocol missing in request"
- end
- end
-
- local accept = acceptKey(key)
-
- local res = {
- code = 101,
- {"Upgrade", "websocket"},
- {"Connection", "Upgrade"},
- {"Sec-WebSocket-Accept", accept},
- }
- if protocol then
- res[#res + 1] = {"Sec-WebSocket-Protocol", protocol}
- end
-
- return res
-end
-return exports
diff --git a/plugins/websocket-codec/plugin.json b/plugins/websocket-codec/plugin.json
deleted file mode 100644
index 00a49dbcba3..00000000000
--- a/plugins/websocket-codec/plugin.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "plugin": {
- "name": "websocket-codec",
- "version": "1.0.7",
- "author": "Tim Caswell",
- "type": "library",
- }
-} \ No newline at end of file
diff --git a/scripts/src/3rdparty.lua b/scripts/src/3rdparty.lua
index 82fb09947de..330a31221ee 100644
--- a/scripts/src/3rdparty.lua
+++ b/scripts/src/3rdparty.lua
@@ -511,64 +511,6 @@ project "lualibs"
}
--------------------------------------------------
--- luv lua library objects
---------------------------------------------------
-if _OPTIONS["USE_LIBUV"]=="1" then
-project "luv"
- uuid "d98ec5ca-da2a-4a50-88a2-52061ca53871"
- kind "StaticLib"
-
- if _OPTIONS["targetos"]=="windows" then
- defines {
- "_WIN32_WINNT=0x0600",
- }
- end
-
- configuration { "vs*" }
- buildoptions {
- "/wd4244", -- warning C4244: 'argument' : conversion from 'xxx' to 'xxx', possible loss of data
- }
-
- configuration { "gmake" }
- buildoptions_c {
- "-Wno-unused-function",
- "-Wno-strict-prototypes",
- "-Wno-unused-variable",
- "-Wno-undef",
- }
-
- configuration { "not android-*" }
- buildoptions_c {
- "-Wno-maybe-uninitialized",
- }
-
- configuration { "vs2015" }
- buildoptions {
- "/wd4701", -- warning C4701: potentially uninitialized local variable 'xxx' used
- "/wd4703", -- warning C4703: potentially uninitialized local pointer variable 'xxx' used
- }
-
- configuration { }
- defines {
- "LUA_COMPAT_ALL",
- }
-
- includedirs {
- MAME_DIR .. "3rdparty/lua/src",
- MAME_DIR .. "3rdparty/libuv/include",
- }
- if _OPTIONS["with-bundled-lua"] then
- includedirs {
- MAME_DIR .. "3rdparty/luv/deps/lua/src",
- }
- end
-
- files {
- MAME_DIR .. "3rdparty/luv/src/luv.c",
- MAME_DIR .. "3rdparty/luv/src/luv.h",
- }
-end
---------------------------------------------------
-- SQLite3 library objects
--------------------------------------------------
diff --git a/scripts/src/main.lua b/scripts/src/main.lua
index eafcc59f72e..daa73731b90 100644
--- a/scripts/src/main.lua
+++ b/scripts/src/main.lua
@@ -165,7 +165,6 @@ end
if _OPTIONS["USE_LIBUV"]=="1" then
links {
- "luv",
"uv",
"http-parser",
}
diff --git a/src/emu/luaengine.cpp b/src/emu/luaengine.cpp
index ecf1b418de5..d35a10d9167 100644
--- a/src/emu/luaengine.cpp
+++ b/src/emu/luaengine.cpp
@@ -19,9 +19,6 @@
#include "ui/ui.h"
#include "luaengine.h"
#include <mutex>
-#if !defined(NO_LIBUV)
-#include "libuv/include/uv.h"
-#endif
//**************************************************************************
// LUA ENGINE
@@ -52,10 +49,6 @@ extern "C" {
int luaopen_lsqlite3(lua_State *L);
int luaopen_zlib(lua_State *L);
int luaopen_lfs(lua_State *L);
-#if !defined(NO_LIBUV)
- int luaopen_luv(lua_State *L);
- uv_loop_t* luv_loop(lua_State* L);
-#endif
}
static void lstop(lua_State *L, lua_Debug *ar)
@@ -1199,12 +1192,6 @@ lua_engine::lua_engine()
lua_getfield(m_lua_state, -1, "preload");
lua_remove(m_lua_state, -2); // Remove package
-#if !defined(NO_LIBUV)
- // Store uv module definition at preload.uv
- lua_pushcfunction(m_lua_state, luaopen_luv);
- lua_setfield(m_lua_state, -2, "luv");
-#endif
-
lua_pushcfunction(m_lua_state, luaopen_zlib);
lua_setfield(m_lua_state, -2, "zlib");
@@ -1670,11 +1657,6 @@ void lua_engine::periodic_check()
msg.ready = 0;
msg.done = 1;
}
-#if !defined(NO_LIBUV)
- auto loop = luv_loop(m_lua_state);
- if (loop!=nullptr)
- uv_run(loop, UV_RUN_NOWAIT);
-#endif
}
//-------------------------------------------------