void AdjustSysTimeForLog(SYSTEMTIME& Time);

#pragma pack(push, 1)
struct SLogItem
{
public:
	UINT m_uSize;
	GUID m_GUID;
	SYSTEMTIME m_Time;
	int m_nLaunched;
	int m_nErr;
	char m_szHost[64];
	int m_nPlayers; // -(m_nPlayers + 1) // for error...
	int m_nBOTs;
	char m_szPlayers[1]; /* '\0' */
public:
	SLogItem* GetNext() const;
	BOOL CheckItem() const;
};

#define LRPT_FILE_SIGN	0x5450524c // 'LRPT'
#define LRPT_FILE_ERR	0x54505258 // 'XRPT'
#define LRPT_FILE_ERR2	0x54505240 // '@RPT'

#define LRPT_FILE_VER	0x00010000

struct SLogReport
{
public:
	UINT m_dwSigns; // 
	UINT m_dwVersion; // 0x0100
	BYTE m_ba[16]; // MD5 signature...
	// from here MD5....
	BYTE m_baReserved[32];
	int m_nLogItems;
	UINT m_uSize;
	//SLogItem m_aLogItems[];
protected:
	static bool s_bCached;
	static SYSTEMTIME s_Time;
	static BYTE s_ba[16];
public:
	SLogItem* GetFirst() const;
	SLogItem* GetLast() const;
	void Initialize();
	int Check(SYSTEMTIME& st);
	void Fix(BYTE* pBDigest = NULL);
	void MarkErr(bool bAs2 = false);
	int WriteFile(const char* pcszFile, SYSTEMTIME& st);
	void GetDateFromLOGFILE(const char* pcszFile, SYSTEMTIME& st);
	SLogReport* AddLogItem(const GUID& guid, UINT uBufNames, SLogItem*& pLogItem);
	SLogItem* GetLogItem(const GUID& guid) const;
public:
	static SLogReport* OpenLogReport(const char* pcszFile, SYSTEMTIME& st, BOOL bNewIfNotExist = TRUE);
	static void FreeLogReport(SLogReport* pLogReport);
	static void CheckCached(SYSTEMTIME& st);
};
#pragma pack(pop)
