diff options
Diffstat (limited to 'code')
-rw-r--r-- | code/client/cl_main.c | 25 | ||||
-rw-r--r-- | code/client/client.h | 3 | ||||
-rw-r--r-- | code/qcommon/qcommon.h | 1 |
3 files changed, 29 insertions, 0 deletions
diff --git a/code/client/cl_main.c b/code/client/cl_main.c index 9d89679..8f9cbae 100644 --- a/code/client/cl_main.c +++ b/code/client/cl_main.c @@ -2378,6 +2378,28 @@ void CL_StopVideo_f( void ) CL_CloseAVI( ); } +static void CL_GenerateQKey(void) +{ + int len = 0; + unsigned char buff[2048]; + + len = FS_ReadFile(QKEY_FILE, NULL); + if(len >= (int)sizeof(buff)) { + Com_Printf("QKEY found.\n"); + return; + } + else { + int i; + srand(time(0)); + for(i = 0; i < sizeof(buff) - 1; i++) { + buff[i] = (unsigned char)(rand() % 255); + } + buff[i] = 0; + Com_Printf("QKEY generated\n"); + FS_WriteFile(QKEY_FILE, buff, sizeof(buff)); + } +} + /* ==================== CL_Init @@ -2526,6 +2548,9 @@ void CL_Init( void ) { Cvar_Set( "cl_running", "1" ); + CL_GenerateQKey(); + Cvar_Get("cl_guid", Com_MD5File(QKEY_FILE, 0), CVAR_USERINFO | CVAR_ROM); + Com_Printf( "----- Client Initialization Complete -----\n" ); } diff --git a/code/client/client.h b/code/client/client.h index 73106f8..a9d0006 100644 --- a/code/client/client.h +++ b/code/client/client.h @@ -30,6 +30,9 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #include "../cgame/cg_public.h" #include "../game/bg_public.h" +// tjw: file full of random crap that gets used to create cl_guid +#define QKEY_FILE "qkey" + #define RETRANSMIT_TIMEOUT 3000 // time between connection packet retransmits diff --git a/code/qcommon/qcommon.h b/code/qcommon/qcommon.h index 5de428f..65cc7be 100644 --- a/code/qcommon/qcommon.h +++ b/code/qcommon/qcommon.h @@ -729,6 +729,7 @@ void Com_Quit_f( void ); int Com_EventLoop( void ); int Com_Milliseconds( void ); // will be journaled properly unsigned Com_BlockChecksum( const void *buffer, int length ); +char *Com_MD5File(const char *filename, int length); int Com_HashKey(char *string, int maxlen); int Com_Filter(char *filter, char *name, int casesensitive); int Com_FilterPath(char *filter, char *name, int casesensitive); |