From 3d36327bf9b4c158cf3010f8f65c00854ec3a8b7 Mon Sep 17 00:00:00 2001 From: Konstantin Grachev Date: Fri, 8 Oct 2021 18:55:53 +0300 Subject: [PATCH] Prevent function redeclare while using preload (#53) --- lib/functions.php | 52 ++++++++++++++++++++++++----------------------- 1 file changed, 27 insertions(+), 25 deletions(-) diff --git a/lib/functions.php b/lib/functions.php index c88fea5..3aceb5a 100644 --- a/lib/functions.php +++ b/lib/functions.php @@ -5,30 +5,32 @@ namespace Amp\Process; const BIN_DIR = __DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'bin'; const IS_WINDOWS = (PHP_OS & "\xDF\xDF\xDF") === 'WIN'; -if (IS_WINDOWS) { - /** - * Escapes the command argument for safe inclusion into a Windows command string. - * - * @param string $arg - * - * @return string - */ - function escapeArguments(string $arg): string - { - return '"' . \preg_replace_callback('(\\\\*("|$))', function (array $m): string { - return \str_repeat('\\', \strlen($m[0])) . $m[0]; - }, $arg) . '"'; - } -} else { - /** - * Escapes the command argument for safe inclusion into a Posix shell command string. - * - * @param string $arg - * - * @return string - */ - function escapeArguments(string $arg): string - { - return \escapeshellarg($arg); +if (!\function_exists(__NAMESPACE__ . '\\escapeArguments')) { + if (IS_WINDOWS) { + /** + * Escapes the command argument for safe inclusion into a Windows command string. + * + * @param string $arg + * + * @return string + */ + function escapeArguments(string $arg): string + { + return '"'.\preg_replace_callback('(\\\\*("|$))', function (array $m): string { + return \str_repeat('\\', \strlen($m[0])).$m[0]; + }, $arg).'"'; + } + } else { + /** + * Escapes the command argument for safe inclusion into a Posix shell command string. + * + * @param string $arg + * + * @return string + */ + function escapeArguments(string $arg): string + { + return \escapeshellarg($arg); + } } }