Fixed RCONClient compilation.
This commit is contained in:
parent
9e61ad8c74
commit
b93903db23
@ -22,6 +22,18 @@
|
|||||||
#define ALIGN_8
|
#define ALIGN_8
|
||||||
#define ALIGN_16
|
#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__)
|
#elif defined(__GNUC__)
|
||||||
|
|
||||||
// TODO: Can GCC explicitly mark classes as abstract (no instances can be created)?
|
// TODO: Can GCC explicitly mark classes as abstract (no instances can be created)?
|
||||||
@ -38,6 +50,29 @@
|
|||||||
// Some portability macros :)
|
// Some portability macros :)
|
||||||
#define stricmp strcasecmp
|
#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
|
#else
|
||||||
|
|
||||||
#error "You are using an unsupported compiler, you might need to #define some stuff here for your compiler"
|
#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 int UInt32;
|
||||||
typedef unsigned short UInt16;
|
typedef unsigned short UInt16;
|
||||||
|
|
||||||
|
typedef unsigned char Byte;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -94,7 +131,7 @@ typedef unsigned short UInt16;
|
|||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
#define WIN32_LEAN_AND_MEAN
|
#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 <Windows.h>
|
||||||
#include <winsock2.h>
|
#include <winsock2.h>
|
||||||
@ -175,7 +212,8 @@ typedef unsigned short UInt16;
|
|||||||
#include "StringUtils.h"
|
#include "StringUtils.h"
|
||||||
#include "OSSupport/CriticalSection.h"
|
#include "OSSupport/CriticalSection.h"
|
||||||
#include "OSSupport/File.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();
|
size_t Length = Packet.size();
|
||||||
if (!m_Socket.Send((const char *)&Length, 4))
|
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()
|
cSocket::GetLastError(), cSocket::GetLastErrorString().c_str()
|
||||||
);
|
);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (!m_Socket.Send(Packet.data(), Packet.size()))
|
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()
|
cSocket::GetLastError(), cSocket::GetLastErrorString().c_str()
|
||||||
);
|
);
|
||||||
return false;
|
return false;
|
||||||
@ -110,12 +110,12 @@ bool cRCONPacketizer::ReceiveResponse(void)
|
|||||||
int NumReceived = m_Socket.Receive(buf, sizeof(buf), 0);
|
int NumReceived = m_Socket.Receive(buf, sizeof(buf), 0);
|
||||||
if (NumReceived == 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;
|
return false;
|
||||||
}
|
}
|
||||||
if (NumReceived < 0)
|
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()
|
NumReceived, cSocket::GetLastError(), cSocket::GetLastErrorString().c_str()
|
||||||
);
|
);
|
||||||
return false;
|
return false;
|
||||||
@ -156,13 +156,13 @@ bool cRCONPacketizer::ParsePacket(cByteBuffer & a_Buffer, int a_PacketLength)
|
|||||||
{
|
{
|
||||||
if ((RequestID == -1) && (m_RequestID == 0))
|
if ((RequestID == -1) && (m_RequestID == 0))
|
||||||
{
|
{
|
||||||
fprintf(stderr, "Login failed. Aborting.");
|
fprintf(stderr, "Login failed. Aborting.\n");
|
||||||
IsValid = false;
|
IsValid = false;
|
||||||
// Continue, so that the payload is printed before the program aborts.
|
// Continue, so that the payload is printed before the program aborts.
|
||||||
}
|
}
|
||||||
else
|
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;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -172,7 +172,7 @@ bool cRCONPacketizer::ParsePacket(cByteBuffer & a_Buffer, int a_PacketLength)
|
|||||||
VERIFY(a_Buffer.ReadLEInt(PacketType));
|
VERIFY(a_Buffer.ReadLEInt(PacketType));
|
||||||
if (PacketType != ptCommand)
|
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;
|
IsValid = false;
|
||||||
// Continue, so that the payload is printed before the program aborts.
|
// 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[])
|
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:
|
// Parse the cmdline params for server IP, port, password and the commands to send:
|
||||||
AString ServerAddress, Password;
|
AString ServerAddress, Password;
|
||||||
int ServerPort = -1;
|
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)
|
for (AStringVector::const_iterator itr = Commands.begin(), end = Commands.end(); itr != end; ++itr)
|
||||||
{
|
{
|
||||||
if (g_IsVerbose)
|
if (g_IsVerbose)
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
|
|
||||||
Microsoft Visual Studio Solution File, Format Version 10.00
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
# Visual C++ Express 2008
|
# Visual Studio Express 2013 for Windows Desktop
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RCONClient", "RCONClient.vcproj", "{1A48B032-07D0-4DDD-8362-66C0FC7F7849}"
|
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
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Loading…
Reference in New Issue
Block a user