Commit graph

21 commits

Author SHA1 Message Date
Robert Müller 8d774fa48c Define Windows header macros only once in CMakeLists.txt
Instead of defining the macro `WIN32_LEAN_AND_MEAN` and sometimes also the macro `_WIN32_WINNT` in each file that directly or indirectly includes `<windows.h>`, only define these macros once consistently in `CMakeLists.txt`.

Also define `NTDDI_VERSION`, which is the new macro to specify the minimum Windows version starting with Windows Vista. This macro needs to be defined in addition to old `_WIN32_WINNT` macro, according to the documentation.

See https://learn.microsoft.com/en-us/windows/win32/winprog/using-the-windows-headers
2024-02-28 21:40:28 +01:00
Robert Müller 1604784669 Improve Windows pipe (FIFO) support
Use `WaitForPipeDrain` to deterministically wait for the pipe to drain instead of using `Start-Sleep`.

Use `Dispose` instead of `Close` to properly flush and close the pipe stream.

Add error handling for connection timeout and I/O errors.

Handle `ERROR_BROKEN_PIPE` separately when peeking at pipe, as this happens when the pipe is disconnected immediately after connecting it or after reading the previous message.

Don't ignore `ERROR_BAD_PIPE` anymore, as the pipe should never be in a disconnected (i.e. bad) state at this point of the function.
2023-09-05 19:15:09 +02:00
Robert Müller 9a57def5a6 Add templated str_append function for arrays with fixed size 2023-06-14 00:04:01 +02:00
Robert Müller d34ed69c22 Use windows_utf8_to_wide and windows_wide_to_utf8
To reduce duplicate code and simplify usage of the Windows API.
2023-05-02 19:58:28 +02:00
Robert Müller bc7c347ad4 Use std::string for windows_format_system_message
To make the function easier to use.
2023-05-02 19:58:28 +02:00
Robert Müller 7eb5966f6f Implement FIFO on Windows using Named Pipes
Reimplement the Linux FIFO file server and client controls on Windows by using Named Pipes.

The DDNet server/client acts as a named pipe server and receives messages.
Messages can be posted to the named pipe server by connecting to it as a client.
The named pipe client can for instance be controlled from the command line with PowerShell.

The PowerShell script `scripts/send_named_pipe.ps1` is added for this purpose.
For example the PowerShell command `./send_named_pipe.ps1 "testpipe" "echo a"` sends the command `echo a` to the pipe named `testpipe`.
Multiple commands can be sent at the same time by separating them with semicolons or newlines.
2023-01-21 11:13:02 +01:00
Robert Müller f78fd6bda1 Minor refactoring of CFifo
- Remove unused include.
- Instead of quitting entirely, only disable the fifo component when file cannot be used.
- Return early to reduce indentation.
2023-01-20 22:52:55 +01:00
Alexander Akulich 6d9284adc1 Port some code to str_copy() template 2022-07-09 19:40:58 +03:00
def 735b0bdf4a fifo: read() doesn't null-terminate!
valgrind found this with ChillerDragon's integration script extension
2022-06-05 20:15:55 +02:00
Dennis Felsing 18d9997348 Fix clang-format 2022-02-15 00:32:04 +01:00
Dennis Felsing dbfc62d2c0 Add modernize-deprecated-headers 2022-02-15 00:22:52 +01:00
def 7f9110b67c Remove fifo file on shutdown 2021-02-21 17:31:25 +01:00
heinrich5991 7663641ed2 Fix some variable name's style 2020-11-08 17:15:48 +01:00
def 3be8a592e5 Run clang-format
Purely automatic change. In case of conflict with this change, apply the
other change and rerun the formatting to restore it:

$ python scripts/fix_style.py
2020-09-26 21:50:15 +02:00
def 939f2136c0 Nicer way of handling Mac fifo rewinding (just don't use high level file streams) 2016-05-05 23:32:55 +02:00
H-M-H 319729e207 ifdef for rewind as it is only required of OS X 2016-05-05 21:15:15 +02:00
H-M-H 491d878a64 always read fifo from start 2016-05-05 20:29:31 +02:00
def 14f1670fda Fix fifo console to remove newline character at end 2016-05-05 18:48:15 +02:00
Henningstone be010ff370 Fixed crashbug in fifo.cpp 2016-05-03 19:17:44 +02:00
def a954241169 style 2016-05-02 23:37:40 +02:00
def 21ac41bfae Clean up fifo console 2016-05-02 23:36:21 +02:00