Unlike an array of 1-byte chars which only requires 1-byte
alignment (because the array's largest element is only one byte),
when we fool the compiler into allocating a _TCPsocketX as an arra
of chars, we similarly tell the compiler we only need 1-byte
alignment. But this requirement changes when we cast the 1-byte array
back to the _TCPsocketX and try to operate on members having sizes
larger than 1-byte (such as int32's); we now require 4-byte
alignment (after allocation).
This typedef originates from SDL_net.h, it's an opaque data type used
for TCP connections.
It's a pointer, therefore prevent copying and assignment in
TCPServerSocket to prevent ownership problems.
Reuse SendArray implementation instead of repeating the same code
pattern several times.
This change started as a removal of warning about comparison of
integer expressions of different signedness: ‘int’ and ‘Bitu’
(when comparing return value of SDLNet_TCP_Send), but turned into
a small cleanup and removal of dead code.
When running BBS DOSBox's softmodem does not correctly handle
escape characters properly nor does it properly transition
to command mode:
Characters are swallowed instead of passed-through, this causes
issue when transmitting strings with the plus character.
Additional characters before and after the escape sequence don't
reset the counters causing switch to command mode even if not
intended. For example, connect to a remote and type a+++ it
switches to command mode, it should not. The attached proposed
patch fixes the escape handling:
Transmission pause is checked before and after the escape
sequence, so <pause>+++<pause> is the correct
sequence.</pause></pause> Extra characters cause the counters to
be reset so no unwanted switch is triggered. Use register S12 to
set the pause timer in 1/50th of seconds, default is 50 = 1 sec.
Plus characters are passed to the remote. With this fix I'm able
to run a BBS software and do file transfers with XModem and ZModem
without problems.
Imported-from: https://sourceforge.net/p/dosbox/patches/287/
Crash happened due to mismatch between internationalization string and
parameters passed to WriteOut.
Also, print newline after output if no error occured.