(svn r8631) -Add: added parameter -l ip[:port] to ./openttd, which redirects DEBUG() to a remote connection over TCP

For example, launch on 192.168.0.1 with, say, netcat a listener: netcat -l -p 3982
  Launch OpenTTD on a remote host (say, PSP): ./openttd -l 192.168.0.1 -d9
  And you get all debug information on 192.168.0.1. Very useful for debugging Portable systems.
This commit is contained in:
truelight
2007-02-08 12:27:53 +00:00
parent 2a7682be79
commit c46a1cc2f6
5 changed files with 71 additions and 3 deletions

View File

@@ -1317,6 +1317,37 @@ static void NetworkGenerateUniqueId(void)
snprintf(_network_unique_id, sizeof(_network_unique_id), "%s", hex_output);
}
void NetworkStartDebugLog(const char *hostname, uint16 port)
{
extern SOCKET _debug_socket; // Comes from debug.c
SOCKET s;
struct sockaddr_in sin;
DEBUG(net, 0, "Redirecting DEBUG() to %s:%d", hostname, port);
s = socket(AF_INET, SOCK_STREAM, 0);
if (s == INVALID_SOCKET) {
DEBUG(net, 0, "Failed to open socket for redirection DEBUG()");
return;
}
if (!SetNoDelay(s)) DEBUG(net, 1, "Setting TCP_NODELAY failed");
sin.sin_family = AF_INET;
sin.sin_addr.s_addr = NetworkResolveHost(hostname);
sin.sin_port = htons(port);
if (connect(s, (struct sockaddr *)&sin, sizeof(sin)) != 0) {
DEBUG(net, 0, "Failed to redirection DEBUG() to %s:%d", hostname, port);
return;
}
if (!SetNonBlocking(s)) DEBUG(net, 0, "Setting non-blocking mode failed");
_debug_socket = s;
DEBUG(net, 0, "DEBUG() is now redirected");
}
/** This tries to launch the network for a given OS */
void NetworkStartUp(void)
{