mirror of
https://github.com/php-win-ext/php-sdk-binary-tools.git
synced 2026-03-24 09:02:12 +01:00
Compare commits
33 Commits
php-sdk-2.
...
php-sdk-2.
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9345164d3a | ||
|
|
d2b2d58f84 | ||
|
|
9da65f2386 | ||
|
|
1f48f48b94 | ||
|
|
0cd8d902c0 | ||
|
|
c7c874e9b4 | ||
|
|
97112e4dd0 | ||
|
|
098f6457de | ||
|
|
a5afa11cff | ||
|
|
6b58f91d9d | ||
|
|
bb5ff05cc5 | ||
|
|
4b51347c35 | ||
|
|
7d48cafe29 | ||
|
|
d802183581 | ||
|
|
741063cdf1 | ||
|
|
a97d0bd292 | ||
|
|
5507b37b7d | ||
|
|
7c72855fd0 | ||
|
|
b5829cd502 | ||
|
|
de669c7610 | ||
|
|
f96fbeddab | ||
|
|
ceececf83f | ||
|
|
64c2ac973c | ||
|
|
79116d5051 | ||
|
|
c3bb9777bb | ||
|
|
eae3aab2ae | ||
|
|
e7e92b35d0 | ||
|
|
d158c3c032 | ||
|
|
69fb69fd93 | ||
|
|
aee165fe05 | ||
|
|
022333118e | ||
|
|
821c0d7c73 | ||
|
|
7d72596e85 |
1
.gitignore
vendored
1
.gitignore
vendored
@@ -4,6 +4,7 @@ php55
|
||||
php56
|
||||
php70
|
||||
php71
|
||||
php72
|
||||
phpmaster
|
||||
php
|
||||
!lib/php
|
||||
|
||||
@@ -37,7 +37,7 @@ All the tools included are either scripts or 32-bit binaries. They are therefore
|
||||
- `diff`, `diff3`, `patch`
|
||||
- `md5sum`, `sha1sum`, `sha224sum`, `sha256sum`, `sha384sum`, `sha512sum`
|
||||
- `7za`, `zip`, `unzip`, `unzipsfx`
|
||||
- `wget`
|
||||
- `wget`, `pwgen`
|
||||
|
||||
## Optional, not included
|
||||
|
||||
|
||||
@@ -7,6 +7,8 @@ IF "%2" EQU "" SET _=%CD%\%1
|
||||
rem if we're in the starter script shell, create the only struct that corresponds to the current env
|
||||
rem otherwise - retain the old behavior, create structs for all the known build combinations and don't cd
|
||||
|
||||
cmd /c "exit /b 0"
|
||||
|
||||
if "%PHP_SDK_ARCH%" NEQ "" (
|
||||
if "%PHP_SDK_VC%" NEQ "" (
|
||||
MD %_%\%PHP_SDK_VC%\%PHP_SDK_ARCH%\deps\bin
|
||||
@@ -35,3 +37,5 @@ echo phpsdk_buildtree ^<nameofthetree^> [PATH]
|
||||
echo Create the common directory structure used by the PHP SDK
|
||||
|
||||
:EXIT
|
||||
exit /b %errorlevel%
|
||||
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
@echo off
|
||||
|
||||
cmd /c "exit /b 0"
|
||||
|
||||
if "%PHP_SDK_PHP_CMD%"=="" (
|
||||
call %~dp0phpsdk_setvars.bat
|
||||
if "!PHP_SDK_PHP_CMD!"=="" (
|
||||
@@ -10,5 +12,5 @@ if "%PHP_SDK_PHP_CMD%"=="" (
|
||||
|
||||
call %PHP_SDK_PHP_CMD% %PHP_SDK_BIN_PATH%\phpsdk_deps.php %*
|
||||
|
||||
exit /b
|
||||
exit /b %errorlevel%
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ include dirname(__FILE__) . "/../lib/php/libsdk/autoload.php";
|
||||
|
||||
use SDK\{Config, Exception};
|
||||
|
||||
$sopt = "s:cuhb:a:d:t:fn";
|
||||
$sopt = "s:cuhb:a:d:t:fnp";
|
||||
$lopt = array(
|
||||
"branch:",
|
||||
"update",
|
||||
@@ -16,6 +16,7 @@ $lopt = array(
|
||||
"deps:",
|
||||
"force",
|
||||
"no-backup",
|
||||
"pack",
|
||||
);
|
||||
|
||||
$cmd = NULL;
|
||||
@@ -87,6 +88,11 @@ try {
|
||||
case "no-backup":
|
||||
$backup = false;
|
||||
break;
|
||||
|
||||
case "p":
|
||||
case "pack":
|
||||
$cmd = "pack";
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -157,6 +163,16 @@ try {
|
||||
$dm->performUpdate($msg, $force, $backup);
|
||||
msg($msg);
|
||||
break;
|
||||
case "pack":
|
||||
$path_to_pack = Config::getDepsLocalPath();
|
||||
$pack_path = dirname($path_to_pack) . DIRECTORY_SEPARATOR . "deps-$branch-$branch_data[crt]-$branch_data[arch].7z";
|
||||
print "Packaging '$path_to_pack' as '$pack_path'.\n\n";
|
||||
if ($force && is_file($pack_path)) {
|
||||
unlink($pack_path);
|
||||
}
|
||||
system("7za a $pack_path $path_to_pack", $st);
|
||||
exit((int)$st);
|
||||
break;
|
||||
}
|
||||
|
||||
} catch (Throwable $e) {
|
||||
@@ -171,13 +187,14 @@ function usage(int $code = -1)
|
||||
echo "PHP SDK dependency handling tool.", PHP_EOL;
|
||||
echo "Usage: ", PHP_EOL, PHP_EOL;
|
||||
echo "Configuration:", PHP_EOL;
|
||||
echo " -b --branch Branch name, eg. 7.0, 7.1, etc. If omited, CWD is used to guess.", PHP_EOL;
|
||||
echo " -b --branch Branch name, eg. 7.0, 7.1, etc. If omited, several guess methods apply.", PHP_EOL;
|
||||
echo " -a --arch Architecture, x86 or x64. If omited, cl.exe is used to guess.", PHP_EOL;
|
||||
echo " -t --crt CRT, marked by the corresponding VC++ version, eg. vc11, vc14, etc.", PHP_EOL;
|
||||
echo " -s --stability One of stable or staging.", PHP_EOL, PHP_EOL;
|
||||
echo "Commands:", PHP_EOL;
|
||||
echo " -c --check Check for dependency updates. If updates are available, the exit code is set to 7.", PHP_EOL;
|
||||
echo " -u --update Update dependencies. If deps directory already exists, backup copy is created automatically.", PHP_EOL, PHP_EOL;
|
||||
echo " -u --update Update dependencies. If deps directory already exists, backup copy is created automatically.", PHP_EOL;
|
||||
echo " -p --pack Archive the dependency directory.", PHP_EOL, PHP_EOL;
|
||||
echo "Misc:", PHP_EOL;
|
||||
echo " -d --deps Path to the dependencies directory. If omited, CWD is used to guess.", PHP_EOL;
|
||||
echo " -f --force Force the operation even if there are no upgrades available.", PHP_EOL;
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
@echo off
|
||||
|
||||
cmd /c "exit /b 0"
|
||||
|
||||
if "%PHP_SDK_PHP_CMD%"=="" (
|
||||
call %~dp0phpsdk_setvars.bat
|
||||
if "!PHP_SDK_PHP_CMD!"=="" (
|
||||
@@ -10,5 +12,5 @@ if "%PHP_SDK_PHP_CMD%"=="" (
|
||||
|
||||
call %PHP_SDK_PHP_CMD% %PHP_SDK_BIN_PATH%\phpsdk_dllmap.php %*
|
||||
|
||||
exit /b
|
||||
exit /b %errorlevel%
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
- create mappings between dll filename and zip filename
|
||||
|
||||
Usage:
|
||||
php dllmap.php path0 [ path1 ... ] > dllmapping.json
|
||||
php dllmap.php [--pretty] path0 [ path1 ... ] > dllmapping.json
|
||||
*/
|
||||
|
||||
|
||||
@@ -20,8 +20,25 @@
|
||||
"C:\\tmp\\libs",
|
||||
);*/
|
||||
|
||||
$sopt = "p";
|
||||
$lopt = array(
|
||||
"pretty",
|
||||
);
|
||||
|
||||
$flags = 0;
|
||||
$opt = getopt($sopt, $lopt);
|
||||
foreach ($opt as $name => $val) {
|
||||
switch ($name) {
|
||||
case "p":
|
||||
case "pretty":
|
||||
$flags = JSON_PRETTY_PRINT;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$dirs = array();
|
||||
foreach (array_slice($_SERVER["argv"], 1) as $item) {
|
||||
foreach (array_slice($_SERVER["argv"], (0 == $flags ? 1 : 2)) as $item) {
|
||||
if (file_exists($item) && is_dir($item)) {
|
||||
$dirs[] = $item;
|
||||
}
|
||||
@@ -32,26 +49,7 @@ if (empty($dirs)) {
|
||||
die;
|
||||
}
|
||||
|
||||
|
||||
$out = array(
|
||||
"vc9" => array(
|
||||
"x86" => array(),
|
||||
"x64" => array(),
|
||||
),
|
||||
"vc11" => array(
|
||||
"x86" => array(),
|
||||
"x64" => array(),
|
||||
),
|
||||
"vc12" => array(
|
||||
"x86" => array(),
|
||||
"x64" => array(),
|
||||
),
|
||||
"vc14" => array(
|
||||
"x86" => array(),
|
||||
"x64" => array(),
|
||||
),
|
||||
);
|
||||
|
||||
$out = array();
|
||||
|
||||
foreach ($dirs as $path) {
|
||||
$dir = new DirectoryIterator($path);
|
||||
@@ -74,6 +72,13 @@ foreach ($dirs as $path) {
|
||||
$crt = $m[1];
|
||||
$arch = $m[2];
|
||||
|
||||
if (!isset($out[$crt])) {
|
||||
$out[$crt] = array();
|
||||
}
|
||||
if (!isset($out[$crt][$arch])) {
|
||||
$out[$crt][$arch] = array();
|
||||
}
|
||||
|
||||
$zip = new ZipArchive();
|
||||
|
||||
$zip->open($pathname);
|
||||
@@ -100,7 +105,7 @@ foreach ($dirs as $path) {
|
||||
}
|
||||
}
|
||||
|
||||
echo json_encode($out);
|
||||
echo json_encode($out, $flags);
|
||||
|
||||
/*
|
||||
* Local variables:
|
||||
|
||||
@@ -5,6 +5,8 @@ if "%PHP_SDK_OS_ARCH%"=="" (
|
||||
exit /b 3
|
||||
)
|
||||
|
||||
cmd /c "exit /b 0"
|
||||
|
||||
echo.
|
||||
|
||||
call %PHP_SDK_BIN_PATH%\phpsdk_version.bat
|
||||
@@ -26,5 +28,5 @@ echo Visual C++: %PHP_SDK_VC_NUM%
|
||||
echo PHP-SDK path: %PHP_SDK_ROOT_PATH%
|
||||
|
||||
|
||||
exit /b
|
||||
exit /b %errorlevel%
|
||||
|
||||
|
||||
@@ -13,6 +13,8 @@ if "%1"=="-h" goto :help
|
||||
if "%1"=="--help" goto :help
|
||||
if "%2"=="" goto :help
|
||||
|
||||
cmd /c "exit /b 0"
|
||||
|
||||
set PHP_SDK_VC=%1
|
||||
if /i not "%PHP_SDK_VC:~0,2%"=="vc" (
|
||||
:malformed_vc_string
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
@echo off
|
||||
|
||||
cmd /c "exit /b 0"
|
||||
|
||||
rem Add necessary dirs to the path
|
||||
|
||||
set PHP_SDK_BIN_PATH=%~dp0
|
||||
@@ -15,5 +17,5 @@ set PHP_SDK_PHP_CMD=%PHP_SDK_BIN_PATH%\php\do_php.bat
|
||||
|
||||
set PATH=%PHP_SDK_BIN_PATH%;%PHP_SDK_MSYS2_PATH%;%PATH%
|
||||
|
||||
exit /b
|
||||
exit /b %errorlevel%
|
||||
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
@echo off
|
||||
|
||||
cmd /c "exit /b 0"
|
||||
|
||||
if "%PHP_SDK_PHP_CMD%"=="" (
|
||||
call %~dp0phpsdk_setvars.bat
|
||||
if "!PHP_SDK_PHP_CMD!"=="" (
|
||||
@@ -10,5 +12,5 @@ if "%PHP_SDK_PHP_CMD%"=="" (
|
||||
|
||||
%PHP_SDK_PHP_CMD% -r "echo 'PHP SDK ' . file_get_contents(getenv('PHP_SDK_ROOT_PATH') . '\\VERSION');"
|
||||
|
||||
exit /b
|
||||
exit /b %errorlevel%
|
||||
|
||||
|
||||
BIN
bin/vswhere.exe
BIN
bin/vswhere.exe
Binary file not shown.
@@ -2,7 +2,7 @@
|
||||
|
||||
namespace SDK\Build\Dependency;
|
||||
|
||||
use SDK\{Config, Cache, Exception, FileOps};
|
||||
use SDK\{Config, Cache, Exception, FileOps, Lock};
|
||||
|
||||
class Manager
|
||||
{
|
||||
@@ -39,7 +39,7 @@ class Manager
|
||||
|
||||
public function updatesAvailable() : bool
|
||||
{/*{{{*/
|
||||
return $this->series->updatesAvailable();
|
||||
return $this->series->updatesAvailable() || !file_exists(Config::getDepsLocalPath());
|
||||
}/*}}}*/
|
||||
|
||||
/* FIXME implement rollback */
|
||||
@@ -50,6 +50,15 @@ class Manager
|
||||
$msg .= "No updates are available";
|
||||
return;
|
||||
}
|
||||
|
||||
$lock = new Lock(Config::getDepsLocalPath());
|
||||
if (!$lock->locked()) {
|
||||
$msg .= "Dependencies was updated by another process.";
|
||||
echo "Another process is updating same dependency path. I'm just going to wait for it to finish and then exit.", PHP_EOL;
|
||||
$lock->exclusive(true);
|
||||
unset($lock);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
$series_data = $this->series->getData();
|
||||
@@ -86,10 +95,16 @@ class Manager
|
||||
|
||||
/* This is fine, it's gonna be on the same drive. */
|
||||
if (!$this->mv($this->path, $new_path)) {
|
||||
if (!$force) {
|
||||
unset($lock);
|
||||
}
|
||||
throw new Exception("Unable to rename '{$this->path}' to '$new_path'");
|
||||
}
|
||||
} else {
|
||||
if (!$this->rm($this->path)) {
|
||||
if (!$force) {
|
||||
unset($lock);
|
||||
}
|
||||
throw new Exception("Unable to remove the current dependency dir at '{$this->path}'");
|
||||
}
|
||||
}
|
||||
@@ -97,6 +112,9 @@ class Manager
|
||||
$up = dirname($this->path);
|
||||
if (!file_exists($up)) {
|
||||
if (!$this->md($up)) {
|
||||
if (!$force) {
|
||||
unset($lock);
|
||||
}
|
||||
throw new Exception("Unable to create '{$this->path}'");
|
||||
}
|
||||
}
|
||||
@@ -118,6 +136,10 @@ class Manager
|
||||
} else {
|
||||
$msg .= "No backup was created.";
|
||||
}
|
||||
|
||||
if (!$force) {
|
||||
unset($lock);
|
||||
}
|
||||
}/*}}}*/
|
||||
}
|
||||
|
||||
|
||||
@@ -55,7 +55,26 @@ class Cache
|
||||
{/*{{{*/
|
||||
$p = $this->getCacheablePath($path, $relative);
|
||||
|
||||
if (strlen($content) !== file_put_contents($p, $content)) {
|
||||
$to_write = strlen($content);
|
||||
$wrote = 0;
|
||||
|
||||
$fd = fopen($p, "wb");
|
||||
|
||||
flock($fd, LOCK_EX);
|
||||
|
||||
do {
|
||||
$got = fwrite($fd, substr($content, $wrote));
|
||||
if (false == $got) {
|
||||
break;
|
||||
}
|
||||
$wrote += $got;
|
||||
} while ($wrote < $to_write);
|
||||
|
||||
flock($fd, LOCK_UN);
|
||||
|
||||
fclose($fd);
|
||||
|
||||
if ($to_write !== $wrote) {
|
||||
throw new Exception("Couldn't cache '$p'");
|
||||
}
|
||||
}/*}}}*/
|
||||
|
||||
@@ -55,19 +55,18 @@ class Config
|
||||
if (NULL === self::$currentArchName) {
|
||||
/* XXX this might be not true for other compilers! */
|
||||
passthru("where cl.exe >nul", $status);
|
||||
if ($status) {
|
||||
throw new Exception("Couldn't find cl.exe.");
|
||||
}
|
||||
|
||||
exec("cl.exe /? 2>&1", $a, $status);
|
||||
if ($status) {
|
||||
throw new Exception("Couldn't execute cl.exe.");
|
||||
}
|
||||
|
||||
if (preg_match(",x64,", $a[0])) {
|
||||
exec("cl.exe /? 2>&1", $out);
|
||||
|
||||
if (preg_match(",x64,", $out[0])) {
|
||||
self::setCurrentArchName("x64");
|
||||
} else {
|
||||
} elseif (preg_match(",x86,", $out[0])) {
|
||||
self::setCurrentArchName("x86");
|
||||
} else {
|
||||
throw new Exception("Couldn't determine Arch.");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -172,10 +171,25 @@ class Config
|
||||
public static function guessCurrentBranchName() : ?string
|
||||
{/*{{{*/
|
||||
$branch = NULL;
|
||||
$found = false;
|
||||
|
||||
/* Try to figure out the branch. For now it only works if CWD is in php-src. */
|
||||
/* Try to figure out the branch. The worky scenarios are
|
||||
- CWD is in php-src
|
||||
- phpize is on the path
|
||||
FIXME for the dev package, there should be a php-config utility
|
||||
*/
|
||||
$fl = "main/php_version.h";
|
||||
if (file_exists($fl)) {
|
||||
$found = file_exists($fl);
|
||||
|
||||
if (!$found) {
|
||||
exec("where phpize", $out, $status);
|
||||
if (!$status) {
|
||||
$fl = dirname($out[0]) . DIRECTORY_SEPARATOR . "include" . DIRECTORY_SEPARATOR . $fl;
|
||||
$found = file_exists($fl);
|
||||
}
|
||||
}
|
||||
|
||||
if ($found) {
|
||||
$s = file_get_contents($fl);
|
||||
$major = $minor = NULL;
|
||||
|
||||
@@ -297,9 +311,33 @@ class Config
|
||||
public static function getDepsLocalPath() : ?string
|
||||
{/*{{{*/
|
||||
if (NULL == self::$depsLocalPath) {
|
||||
if (file_exists("../deps")) {
|
||||
self::setDepsLocalPath(realpath("../deps"));
|
||||
} else if (file_exists("main/php_version.h")) {
|
||||
if (file_exists("Makefile")) {
|
||||
$s = file_get_contents("Makefile");
|
||||
|
||||
if (preg_match(",PHP_BUILD=(.+),", $s, $m)) {
|
||||
if (isset($m[1])) {
|
||||
self::setDepsLocalPath(trim($m[1]));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (NULL == self::$depsLocalPath) {
|
||||
$tmp = dirname(getcwd()) . DIRECTORY_SEPARATOR . "deps";
|
||||
if (is_dir($tmp)) {
|
||||
self::setDepsLocalPath($tmp);
|
||||
}
|
||||
}
|
||||
|
||||
if (NULL == self::$depsLocalPath) {
|
||||
$tmp = realpath("../deps");
|
||||
if (is_dir($tmp)) {
|
||||
self::setDepsLocalPath($tmp);
|
||||
}
|
||||
}
|
||||
|
||||
if (NULL == self::$depsLocalPath) {
|
||||
if (file_exists("main/php_version.h")) {
|
||||
/* Deps dir might not exist. */
|
||||
self::setDepsLocalPath(realpath("..") . DIRECTORY_SEPARATOR . "deps");
|
||||
}
|
||||
|
||||
@@ -117,7 +117,7 @@ trait FileOps
|
||||
}/*}}}*/
|
||||
|
||||
protected function download(string $url, string $dest = NULL) : ?string
|
||||
{
|
||||
{/*{{{*/
|
||||
$fd = NULL;
|
||||
$ch = curl_init($url);
|
||||
|
||||
@@ -150,7 +150,7 @@ trait FileOps
|
||||
}
|
||||
|
||||
return $ret;
|
||||
}
|
||||
}/*}}}*/
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
107
lib/php/libsdk/SDK/Lock.php
Normal file
107
lib/php/libsdk/SDK/Lock.php
Normal file
@@ -0,0 +1,107 @@
|
||||
<?php
|
||||
|
||||
namespace SDK;
|
||||
|
||||
use SDK\{Config, Exception};
|
||||
|
||||
class Lock
|
||||
{
|
||||
protected $fd;
|
||||
protected $fn;
|
||||
protected $locked = false;
|
||||
protected $wouldBlock = false;
|
||||
protected $shared = false;
|
||||
|
||||
public function __construct(string $tag, bool $auto = true, bool $autoShared = false)
|
||||
{/*{{{*/
|
||||
$hash = hash("sha256", $tag);
|
||||
$this->fn = Config::getTmpDir() . DIRECTORY_SEPARATOR . $hash . ".lock";
|
||||
|
||||
if ($auto) {
|
||||
if ($autoShared) {
|
||||
$this->shared();
|
||||
} else {
|
||||
$this->exclusive();
|
||||
}
|
||||
}
|
||||
}/*}}}*/
|
||||
|
||||
public function __destruct()
|
||||
{/*{{{*/
|
||||
$this->unlock();
|
||||
/* We don't really know no one else waits on the same lock yet.*/
|
||||
/*if (file_exists($this->fn) && !$this->shared) {
|
||||
@unlink($this->fn);
|
||||
}*/
|
||||
}/*}}}*/
|
||||
|
||||
public function shared(bool $block = false) : bool
|
||||
{/*{{{*/
|
||||
$flags = LOCK_SH;
|
||||
if (!$block) {
|
||||
$flags |= LOCK_NB;
|
||||
}
|
||||
|
||||
return $this->doLock($flags);
|
||||
}/*}}}*/
|
||||
|
||||
public function exclusive(bool $block = false) : bool
|
||||
{/*{{{*/
|
||||
$flags = LOCK_EX;
|
||||
if (!$block) {
|
||||
$flags |= LOCK_NB;
|
||||
}
|
||||
|
||||
return $this->doLock($flags);
|
||||
}/*}}}*/
|
||||
|
||||
protected function doLock(int $flags = LOCK_EX) : bool
|
||||
{/*{{{*/
|
||||
if ($this->locked) {
|
||||
/* Or throw an exception, as we don't know which lock type the outta world expected. */
|
||||
return true;
|
||||
}
|
||||
|
||||
$this->shared = $flags & LOCK_SH;
|
||||
if ($this->shared) {
|
||||
$this->fd = fopen($this->fn, "rb");
|
||||
} else {
|
||||
$this->fd = fopen($this->fn, "wb");
|
||||
}
|
||||
$this->locked = flock($this->fd, $flags, $this->wouldBlock);
|
||||
return $this->locked;
|
||||
}/*}}}*/
|
||||
|
||||
public function unlock() : bool
|
||||
{/*{{{*/
|
||||
if (!$this->locked) {
|
||||
return true;
|
||||
}
|
||||
|
||||
$this->doLock(LOCK_UN);
|
||||
|
||||
fclose($this->fd);
|
||||
$this->fd = NULL;
|
||||
|
||||
return $this->locked;
|
||||
}/*}}}*/
|
||||
|
||||
public function locked() : bool
|
||||
{/*{{{*/
|
||||
return $this->locked;
|
||||
}/*}}}*/
|
||||
|
||||
public function wouldBlock() : bool
|
||||
{/*{{{*/
|
||||
return 1 === $this->wouldBlock;
|
||||
}/*}}}*/
|
||||
}
|
||||
|
||||
/*
|
||||
* Local variables:
|
||||
* tab-width: 4
|
||||
* c-basic-offset: 4
|
||||
* End:
|
||||
* vim600: sw=4 ts=4 fdm=marker
|
||||
* vim<600: sw=4 ts=4
|
||||
*/
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
msys2/usr/bin/msys-readline7.dll
Normal file
BIN
msys2/usr/bin/msys-readline7.dll
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user