80 lines
1.6 KiB
C++
80 lines
1.6 KiB
C++
//========= Copyright © 1996-2005, Valve Corporation, All rights reserved. ============//
|
|
//
|
|
// Purpose:
|
|
//
|
|
// $NoKeywords: $
|
|
//
|
|
//=============================================================================//
|
|
|
|
#include "quakedef.h"
|
|
#include "tier1/strtools.h"
|
|
|
|
// memdbgon must be the last include file in a .cpp file!!!
|
|
#include "tier0/memdbgon.h"
|
|
|
|
//char *date = "Nov 07 1998"; // "Oct 24 1996";
|
|
char *date = __DATE__ ;
|
|
|
|
char *mon[12] =
|
|
{ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
|
|
char mond[12] =
|
|
{ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
|
|
|
|
class CBuildNumber
|
|
{
|
|
public:
|
|
CBuildNumber( void )
|
|
{
|
|
ComputeBuildNumber();
|
|
}
|
|
|
|
// returns days since Nov 07 1998
|
|
int GetBuildNumber( void )
|
|
{
|
|
return m_nBuildNumber;
|
|
}
|
|
|
|
private:
|
|
void ComputeBuildNumber( void )
|
|
{
|
|
int m = 0;
|
|
int d = 0;
|
|
int y = 0;
|
|
|
|
for (m = 0; m < 11; m++)
|
|
{
|
|
if (Q_strncasecmp( &date[0], mon[m], 3 ) == 0)
|
|
break;
|
|
d += mond[m];
|
|
}
|
|
|
|
d += atoi( &date[4] ) - 1;
|
|
|
|
y = atoi( &date[7] ) - 1900;
|
|
|
|
m_nBuildNumber = d + (int)((y - 1) * 365.25);
|
|
|
|
if (((y % 4) == 0) && m > 1)
|
|
{
|
|
m_nBuildNumber += 1;
|
|
}
|
|
|
|
//m_nBuildNumber -= 34995; // Oct 24 1996
|
|
m_nBuildNumber -= 35739; // Nov 7 1998 (HL1 Gold Date)
|
|
}
|
|
|
|
int m_nBuildNumber;
|
|
};
|
|
|
|
// Singleton
|
|
static CBuildNumber g_BuildNumber;
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Purpose: Only compute build number the first time we run the app
|
|
// Output : int
|
|
//-----------------------------------------------------------------------------
|
|
int build_number( void )
|
|
{
|
|
return g_BuildNumber.GetBuildNumber();
|
|
}
|