* upload results from setup tests
* Update test results file path in CI
* Update ci.yml
* Update Setup.Tests.ps1
* Add systemDrive variable and update paths
* Update variable names in CI configuration
* Enable task failure on failed tests
* Comment out sshd service stop command to test CI
* uncomment part of pester test
* Add an environement variable to control stdio mode
stdio descriptors (stdin, stdout and stderr) can be operated in various
modes by win32compat code. The behavior is set very early in
fd_table_initialize() by setting pio->type.
In https://github.com/PowerShell/Win32-OpenSSH/issues/1427 it was
chosen to set pio->type to NONSOCK_SYNC_FD to resolve an I/O hang
problem. Unfortunately this introduce problems for other ssh usage.
sshfs-wiun uses ssh and has at leas 6 open issues for the same
problem introduced by this NONSOCK_SYNC_FD change:
https://github.com/winfsp/sshfs-win/issues?q=is%3Aissue+cb+%3A87
The sshfs-win workaround it to use an older ssh.exe from cygwin, which
is bundled with sshfs-win. This program is unable to use ssh-agent,
which is quite frustrating. And if PATH is not set to use it, sshfs-win
cannot work.
This change introduce an OPENSSH_STDIO_MODE environment variable that
can be set to the following values: unknown, sock, nonsock, nonsock_sync.
It cause pio->type to be set to UNKNOWN_FD, SOCK_FD, NONSOCK_FD, and
NONSOCK_SYNC_FD respecitively. The default behavior when the variable
is not set is unchanged (which means NONSOCK_SYNC_FD).
Setting OPENSSH_STDIO_MODE="nonsock" lets sshfs-win work again with
openssh-portable ssh.exe. ssh-agent can be used, and this is good.
* Leave out UNKNOWN_FD as the possible rtpes for stdio descriptors
An assert(pio->type != UNKNOWN_FD) in fd_table_set() causes that
case to fail early anyway.
* Set argv[argc] to NULL when calling main
ISO C states that argv[argc] shall be a null pointer.
The OpenSSH codebase does not appear to rely on this currently, but
better to be safe in case something changes.
* Check for malloc failure in sshd wmain