Before:
```c++
#define INITGUID
#include <unknwn.h>
const GUID& a() { return __uuidof(IUnknown); }
const GUID& b() { return IID_IUnknown; }
```
```
$ clang -xc++ -target i386-pc-windows-gnu -nostdinc -I include -I include/msvcrt a.cpp -masm=intel -nostdlib
a.cpp:3:26: warning: instantiation of variable '__wine_uuidof<IUnknown>::uuid' required here, but no definition is available [-Wundefined-var-template]
[...]
1 warning generated.
/usr/bin/ld: /tmp/a-7e5d2f.o:a.cpp:(.rdata$.refptr._IID_IUnknown+0x0): undefined reference to `IID_IUnknown'
/usr/bin/ld: /tmp/a-7e5d2f.o:a.cpp:(.rdata$.refptr.__ZN13__wine_uuidofI8IUnknownE4uuidE+0x0): undefined reference to `__wine_uuidof<IUnknown>::uuid'
clang: error: linker command failed with exit code 1 (use -v to see invocation)
```
After: Creates an a.exe with no warnings. (With a() as entry point; figuring out how to give it a real entry point is offtopic to this MR.)
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/8494
If get_io_timeouts sets the interval timeout to 0, it means that the
read should return immediately even if there is no data. If
get_io_timeouts sets the interval timeout to -1, it means that the read
operation should wait indefinitely for the next byte. In either case,
the interval timer is not used, so there's no need to worry about
forgetting to start it, and the delay in returning data was causing a
problem in Ti99Hdx.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=42882
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/8454
These are the first steps towards code sharing, finally :)
Patch 4 is a bit big, but it's just copying code from various source files into a single source file. I can attempt to split if if that's preferable for review purposes.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/8490