--
v2: xcopy: Add support for parsing concatenated switches.
xcopy: Handle switch options concatenated with path.
xcopy: Introduce get_arg helper that duplicates first argument to new string.
xcopy: Strip quotes only from source and destination arguments.
xcopy: Exit on invalid command line argument.
xcopy: Exit after displaying help message.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5941
Fixes Ball at Work: The Ultimate Speedrun Platformer! failing to start (which receives such non-standard headers from the servers).
While testing this I found more weird aspects of handling invalid reply header names on Windows:
- leading spaces are not skipped, but if the first character is a space then two more spaces added at start of header name and then all the other invalid characters in the name (like '@' or 0xfe) are ignored (otherwise without the space at name start the presence of such header fails request); then such a header saved by failing requests can't be queried with WinHttpQueryHeaders() as the presence of invalid characters (including space) fails that with ERROR_INVALID_PARAMETER;
- trailing '\\t' are not skipped but also do not fail the request and the header with tab is present in raw headers.
But I suppose we don't need to complicate things by replicating this behaviour precisely until anything depends on that. The specific game motivating the patch only receives spaces in the end of header name which are skipped on Windows while this behaviour has some obvious logic (even if doesn't follow http standard).
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5975
This is part XIV of cmd engine rewrite.
It mainly tests and sets return code for a couple of directory related
commands (CD, MKDIR/MD, PUSHD, DIR).
It's on purpose that POPD isn't included in this MR:
it will require (as RMDIR) some changes not directly related
to command itself (more on next MR).
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5986