libfortran: Fix execute_command_line for Windows

On Windows, 'system' is called - that fails with -1 if the command
interpreter could not be started; on POSIX systems, if the child
process could not be started by the shell, exit(127)/_exit(127) is
called/returned. On Windows, cmd.exe (and also the PowerShell) return
errorlevel 9009.

libgfortran/ChangeLog:

	* intrinsics/execute_command_line.c (execute_command_line): On
	Windows, regard system()'s return value of 9009 as EXEC_INVALIDCOMMAND.
This commit is contained in:
Tobias Burnus 2023-01-18 23:31:41 +01:00
parent 0f85ae6591
commit 8e2c6e7b42

View file

@ -144,6 +144,11 @@ execute_command_line (const char *command, bool wait, int *exitstat,
#if defined(WEXITSTATUS) && defined(WIFEXITED)
|| (WIFEXITED(res) && WEXITSTATUS(res) == 127)
|| (WIFEXITED(res) && WEXITSTATUS(res) == 126)
#endif
#ifdef __MINGW32__
/* cmd.exe sets the errorlevel to 9009,
if the command could not be executed. */
|| res == 9009
#endif
)
/* Shell return codes 126 and 127 mean that the command line could