From: Simon McVittie Date: Fri, 6 Aug 2010 20:37:48 +0100 Subject: [PATCH] Load demos using the protocol version from the command line, if overridden Origin: vendor, Debian Bug: http://bugzilla.icculus.org/show_bug.cgi?id=4698 Forwarded: yes --- code/client/cl_main.c | 21 +++++++++++++++++---- 1 files changed, 17 insertions(+), 4 deletions(-) diff --git a/code/client/cl_main.c b/code/client/cl_main.c index 0ea6d7c..15cf3db 100644 --- a/code/client/cl_main.c +++ b/code/client/cl_main.c @@ -624,14 +624,14 @@ void CL_Record_f( void ) { if ( Cmd_Argc() == 2 ) { s = Cmd_Argv(1); Q_strncpyz( demoName, s, sizeof( demoName ) ); - Com_sprintf (name, sizeof(name), "demos/%s.dm_%d", demoName, PROTOCOL_VERSION ); + Com_sprintf (name, sizeof(name), "demos/%s.dm_%d", demoName, sv_protocol->integer ); } else { int number; // scan for a free demo name for ( number = 0 ; number <= 9999 ; number++ ) { CL_DemoFilename( number, demoName ); - Com_sprintf (name, sizeof(name), "demos/%s.dm_%d", demoName, PROTOCOL_VERSION ); + Com_sprintf (name, sizeof(name), "demos/%s.dm_%d", demoName, sv_protocol->integer ); if (!FS_FileExists(name)) break; // file doesn't exist @@ -881,6 +881,19 @@ static void CL_WalkDemoExt(char *arg, char *name, int *demofile) { int i = 0; *demofile = 0; + + Com_sprintf (name, MAX_OSPATH, "demos/%s.dm_%d", arg, sv_protocol->integer); + + FS_FOpenFileRead( name, demofile, qtrue ); + + if (*demofile) + { + Com_Printf("Demo file: %s\n", name); + return; + } + + Com_Printf("Not found: %s\n", name); + while(demo_protocols[i]) { Com_sprintf (name, MAX_OSPATH, "demos/%s.dm_%d", arg, demo_protocols[i]); @@ -907,7 +920,7 @@ static void CL_CompleteDemoName( char *args, int argNum ) { char demoExt[ 16 ]; - Com_sprintf( demoExt, sizeof( demoExt ), ".dm_%d", PROTOCOL_VERSION ); + Com_sprintf( demoExt, sizeof( demoExt ), ".dm_%d", sv_protocol->integer ); Field_CompleteFilename( "demos", demoExt, qtrue ); } } @@ -955,7 +968,7 @@ void CL_PlayDemo_f( void ) { break; i++; } - if (demo_protocols[i]) + if (demo_protocols[i] || (protocol == sv_protocol->integer)) { Com_sprintf (name, sizeof(name), "demos/%s", arg); FS_FOpenFileRead( name, &clc.demofile, qtrue ); --