]> granicus.if.org Git - php/commitdiff
Fixed bug #74849 Process is started as interactive shell in PhpStorm
authorAnatol Belski <ab@php.net>
Mon, 3 Jul 2017 19:58:51 +0000 (21:58 +0200)
committerAnatol Belski <ab@php.net>
Mon, 3 Jul 2017 19:59:31 +0000 (21:59 +0200)
sapi/cli/php_cli.c
win32/console.c
win32/console.h

index 07e8a8c803f638cde1fe766d2b52c5b56b69480e..d1fa6a6d00eb33bfbf9bf17dc41633c370612376 100644 (file)
@@ -675,8 +675,7 @@ static int do_cli(int argc, char **argv) /* {{{ */
        char *arg_free=NULL, **arg_excp=&arg_free;
        char *script_file=NULL, *translated_path = NULL;
 #if defined(PHP_WIN32) && !defined(PHP_CLI_WIN32_NO_CONSOLE) && (HAVE_LIBREADLINE || HAVE_LIBEDIT) && !defined(COMPILE_DL_READLINE)
-       DWORD pl[1];
-       int interactive = (GetConsoleProcessList(pl, 1) == 1) && !IsDebuggerPresent();
+       int interactive = php_win32_console_is_own();
 #else
        int interactive=0;
 #endif
index 78836493e48bc81a613e9a85314cf473207f7a7c..07e6afa9403736f529858f4a2b7f653f4f3a04db 100644 (file)
@@ -91,3 +91,15 @@ PHP_WINUTIL_API BOOL php_win32_console_fileno_set_vt100(zend_long fileno, BOOL e
        }
        return result;
 }
+
+PHP_WINUTIL_API BOOL php_win32_console_is_own(void)
+{
+       CONSOLE_SCREEN_BUFFER_INFO csbi;
+
+       if (GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &csbi) && !IsDebuggerPresent()) {
+               return !csbi.dwCursorPosition.X && !csbi.dwCursorPosition.Y;
+       }
+
+       return FALSE;
+}
+
index 0a2213c7ef2297ebc8c3535c27f4bc168839c664..ab62a6ba3517b86ea95fb698125d50036453f2d0 100644 (file)
@@ -56,4 +56,9 @@ associated to a file descriptor
 */
 PHP_WINUTIL_API BOOL php_win32_console_fileno_set_vt100(zend_long fileno, BOOL enable);
 
+/* Check, whether the program has its own console. If a process was launched
+       through a GUI, it will have it's own console. For more info see
+       http://support.microsoft.com/kb/99115 */
+PHP_WINUTIL_API BOOL php_win32_console_is_own(void);
+
 #endif