/* Generate unique name for a new server demo file. (We pretend there are no race conditions.) */ static void SV_NameServerDemo(char *filename, int length, const client_t *client) { qtime_t time; char playername[64]; Com_DPrintf("SV_NameServerDemo\n"); Com_RealTime(&time); Q_strncpyz(playername, client->name, sizeof(playername)); SVD_CleanPlayerName(playername); do { // TODO: really this should contain something identifying // the server instance it came from; but we could be on // (multiple) IPv4 and IPv6 interfaces; in the end, some // kind of server guid may be more appropriate; mission? // TODO: when the string gets too long (what exactly is // the limit?) it get's cut off at the end ruining the // file extension Com_sprintf( filename, length-1, "serverdemos/%.4d-%.2d-%.2d_%.2d-%.2d-%.2d_%s_%d.dm_%d", time.tm_year+1900, time.tm_mon, time.tm_mday, time.tm_hour, time.tm_min, time.tm_sec, playername, Sys_Milliseconds(), PROTOCOL_VERSION ); filename[length-1] = '\0'; } while (FS_FileExists(filename)); }
/* Generate unique name for a new server demo file. (We pretend there are no race conditions.) */ static void SV_NameServerDemo(char *filename, int length, const client_t *client, char *fn) { qtime_t time; char playername[32]; char demoName[64]; //@Barbatos Com_DPrintf("SV_NameServerDemo\n"); Com_RealTime(&time); Q_strncpyz(playername, client->name, sizeof(playername)); SVD_CleanPlayerName(playername); if (fn != NULL) { Q_strncpyz(demoName, fn, sizeof(demoName)); #ifdef USE_DEMO_FORMAT_42 Q_snprintf(filename, length-1, "%s/%s.urtdemo", sv_demofolder->string, demoName ); if (FS_FileExists(filename)) { Q_snprintf(filename, length-1, "%s/%s_%d.urtdemo", sv_demofolder->string, demoName, Sys_Milliseconds() ); } #else Q_snprintf(filename, length-1, "%s/%s.dm_%d", sv_demofolder->string, demoName , PROTOCOL_VERSION ); if (FS_FileExists(filename)) { Q_snprintf(filename, length-1, "%s/%s_%d.dm_%d", sv_demofolder->string, demoName, Sys_Milliseconds() , PROTOCOL_VERSION ); } #endif } else { #ifdef USE_DEMO_FORMAT_42 Q_snprintf( filename, length-1, "%s/%.4d-%.2d-%.2d_%.2d-%.2d-%.2d_%s_%d.urtdemo", sv_demofolder->string, time.tm_year+1900, time.tm_mon + 1, time.tm_mday, time.tm_hour, time.tm_min, time.tm_sec, playername, Sys_Milliseconds() ); #else Q_snprintf( filename, length-1, "%s/%.4d-%.2d-%.2d_%.2d-%.2d-%.2d_%s_%d.dm_%d", sv_demofolder->string, time.tm_year+1900, time.tm_mon + 1, time.tm_mday, time.tm_hour, time.tm_min, time.tm_sec, playername, Sys_Milliseconds(), PROTOCOL_VERSION ); #endif filename[length-1] = '\0'; if (FS_FileExists(filename)) { filename[0] = 0; return; } } }