Fixed RCONClient compilation.
This commit is contained in:
parent
9e61ad8c74
commit
b93903db23
@ -22,6 +22,18 @@
|
||||
#define ALIGN_8
|
||||
#define ALIGN_16
|
||||
|
||||
#define FORMATSTRING(formatIndex, va_argsIndex)
|
||||
|
||||
// MSVC has its own custom version of zu format
|
||||
#define SIZE_T_FMT "%Iu"
|
||||
#define SIZE_T_FMT_PRECISION(x) "%" #x "Iu"
|
||||
#define SIZE_T_FMT_HEX "%Ix"
|
||||
|
||||
#define NORETURN __declspec(noreturn)
|
||||
|
||||
// Use non-standard defines in <cmath>
|
||||
#define _USE_MATH_DEFINES
|
||||
|
||||
#elif defined(__GNUC__)
|
||||
|
||||
// TODO: Can GCC explicitly mark classes as abstract (no instances can be created)?
|
||||
@ -38,6 +50,29 @@
|
||||
// Some portability macros :)
|
||||
#define stricmp strcasecmp
|
||||
|
||||
#define FORMATSTRING(formatIndex, va_argsIndex) __attribute__((format (printf, formatIndex, va_argsIndex)))
|
||||
|
||||
#if defined(_WIN32)
|
||||
// We're compiling on MinGW, which uses an old MSVCRT library that has no support for size_t printfing.
|
||||
// We need direct size formats:
|
||||
#if defined(_WIN64)
|
||||
#define SIZE_T_FMT "%I64u"
|
||||
#define SIZE_T_FMT_PRECISION(x) "%" #x "I64u"
|
||||
#define SIZE_T_FMT_HEX "%I64x"
|
||||
#else
|
||||
#define SIZE_T_FMT "%u"
|
||||
#define SIZE_T_FMT_PRECISION(x) "%" #x "u"
|
||||
#define SIZE_T_FMT_HEX "%x"
|
||||
#endif
|
||||
#else
|
||||
// We're compiling on Linux, so we can use libc's size_t printf format:
|
||||
#define SIZE_T_FMT "%zu"
|
||||
#define SIZE_T_FMT_PRECISION(x) "%" #x "zu"
|
||||
#define SIZE_T_FMT_HEX "%zx"
|
||||
#endif
|
||||
|
||||
#define NORETURN __attribute((__noreturn__))
|
||||
|
||||
#else
|
||||
|
||||
#error "You are using an unsupported compiler, you might need to #define some stuff here for your compiler"
|
||||
@ -74,6 +109,8 @@ typedef unsigned long long UInt64;
|
||||
typedef unsigned int UInt32;
|
||||
typedef unsigned short UInt16;
|
||||
|
||||
typedef unsigned char Byte;
|
||||
|
||||
|
||||
|
||||
|
||||
@ -94,7 +131,7 @@ typedef unsigned short UInt16;
|
||||
#ifdef _WIN32
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
|
||||
#define _WIN32_WINNT 0x501 // We want to target WinXP and higher
|
||||
#define _WIN32_WINNT 0x502 // We want to target WinXP SP2 and higher
|
||||
|
||||
#include <Windows.h>
|
||||
#include <winsock2.h>
|
||||
@ -175,7 +212,8 @@ typedef unsigned short UInt16;
|
||||
#include "StringUtils.h"
|
||||
#include "OSSupport/CriticalSection.h"
|
||||
#include "OSSupport/File.h"
|
||||
#include "MCLogger.h"
|
||||
#include "OSSupport/Event.h"
|
||||
#include "Logger.h"
|
||||
|
||||
|
||||
|
||||
|
@ -80,14 +80,14 @@ bool cRCONPacketizer::SendPacket(int a_PacketType, const AString & a_PacketPaylo
|
||||
size_t Length = Packet.size();
|
||||
if (!m_Socket.Send((const char *)&Length, 4))
|
||||
{
|
||||
fprintf(stderr, "Network error while sending packet: %d (%s). Aborting.",
|
||||
fprintf(stderr, "Network error while sending packet: %d (%s). Aborting.\n",
|
||||
cSocket::GetLastError(), cSocket::GetLastErrorString().c_str()
|
||||
);
|
||||
return false;
|
||||
}
|
||||
if (!m_Socket.Send(Packet.data(), Packet.size()))
|
||||
{
|
||||
fprintf(stderr, "Network error while sending packet: %d (%s). Aborting.",
|
||||
fprintf(stderr, "Network error while sending packet: %d (%s). Aborting.\n",
|
||||
cSocket::GetLastError(), cSocket::GetLastErrorString().c_str()
|
||||
);
|
||||
return false;
|
||||
@ -110,12 +110,12 @@ bool cRCONPacketizer::ReceiveResponse(void)
|
||||
int NumReceived = m_Socket.Receive(buf, sizeof(buf), 0);
|
||||
if (NumReceived == 0)
|
||||
{
|
||||
fprintf(stderr, "The remote end closed the connection. Aborting.");
|
||||
fprintf(stderr, "The remote end closed the connection. Aborting.\n");
|
||||
return false;
|
||||
}
|
||||
if (NumReceived < 0)
|
||||
{
|
||||
fprintf(stderr, "Network error while receiving response: %d, %d (%s). Aborting.",
|
||||
fprintf(stderr, "Network error while receiving response: %d, %d (%s). Aborting.\n",
|
||||
NumReceived, cSocket::GetLastError(), cSocket::GetLastErrorString().c_str()
|
||||
);
|
||||
return false;
|
||||
@ -156,13 +156,13 @@ bool cRCONPacketizer::ParsePacket(cByteBuffer & a_Buffer, int a_PacketLength)
|
||||
{
|
||||
if ((RequestID == -1) && (m_RequestID == 0))
|
||||
{
|
||||
fprintf(stderr, "Login failed. Aborting.");
|
||||
fprintf(stderr, "Login failed. Aborting.\n");
|
||||
IsValid = false;
|
||||
// Continue, so that the payload is printed before the program aborts.
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf(stderr, "The server returned an invalid request ID, got %d, exp. %d. Aborting.", RequestID, m_RequestID);
|
||||
fprintf(stderr, "The server returned an invalid request ID, got %d, exp. %d. Aborting.\n", RequestID, m_RequestID);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@ -172,7 +172,7 @@ bool cRCONPacketizer::ParsePacket(cByteBuffer & a_Buffer, int a_PacketLength)
|
||||
VERIFY(a_Buffer.ReadLEInt(PacketType));
|
||||
if (PacketType != ptCommand)
|
||||
{
|
||||
fprintf(stderr, "The server returned an unknown packet type: %d. Aborting.", PacketType);
|
||||
fprintf(stderr, "The server returned an unknown packet type: %d. Aborting.\n", PacketType);
|
||||
IsValid = false;
|
||||
// Continue, so that the payload is printed before the program aborts.
|
||||
}
|
||||
@ -200,8 +200,8 @@ bool cRCONPacketizer::ParsePacket(cByteBuffer & a_Buffer, int a_PacketLength)
|
||||
|
||||
int RealMain(int argc, char * argv[])
|
||||
{
|
||||
new cMCLogger; // Create a new logger
|
||||
|
||||
cLogger::InitiateMultithreading();
|
||||
|
||||
// Parse the cmdline params for server IP, port, password and the commands to send:
|
||||
AString ServerAddress, Password;
|
||||
int ServerPort = -1;
|
||||
@ -301,6 +301,7 @@ int RealMain(int argc, char * argv[])
|
||||
}
|
||||
}
|
||||
|
||||
// Send each command:
|
||||
for (AStringVector::const_iterator itr = Commands.begin(), end = Commands.end(); itr != end; ++itr)
|
||||
{
|
||||
if (g_IsVerbose)
|
||||
|
@ -1,7 +1,9 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 10.00
|
||||
# Visual C++ Express 2008
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RCONClient", "RCONClient.vcproj", "{1A48B032-07D0-4DDD-8362-66C0FC7F7849}"
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Express 2013 for Windows Desktop
|
||||
VisualStudioVersion = 12.0.31101.0
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RCONClient", "RCONClient.vcxproj", "{1A48B032-07D0-4DDD-8362-66C0FC7F7849}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
|
Loading…
Reference in New Issue
Block a user