/* * TV_Downstream_SendServerCommand * * Sends a reliable command string to be interpreted by * the client: "cs", "changing", "disconnect", etc * A NULL client will broadcast to all clients */ void TV_Downstream_SendServerCommand( client_t *cl, const char *format, ... ) { va_list argptr; char message[MAX_MSGLEN]; client_t *client; int i; va_start( argptr, format ); Q_vsnprintfz( message, sizeof( message ), format, argptr ); va_end( argptr ); if( cl != NULL ) { if( cl->state < CS_CONNECTING ) return; TV_Downstream_AddServerCommand( cl, message ); return; } // send the data to all relevant clients for( i = 0, client = tvs.clients; i < tv_maxclients->integer; i++, client++ ) { if( client->state < CS_CONNECTING ) // wsw: Medar: or connected? continue; TV_Downstream_AddServerCommand( client, message ); } }
/* * SV_SendServerCommand * * Sends a reliable command string to be interpreted by * the client: "cs", "changing", "disconnect", etc * A NULL client will broadcast to all clients */ void SV_SendServerCommand( client_t *cl, const char *format, ... ) { va_list argptr; char message[MAX_MSGLEN]; client_t *client; int i; va_start( argptr, format ); Q_vsnprintfz( message, sizeof( message ), format, argptr ); va_end( argptr ); if( cl != NULL ) { if( cl->state < CS_CONNECTING ) return; SV_AddServerCommand( cl, message ); return; } // send the data to all relevant clients for( i = 0, client = svs.clients; i < sv_maxclients->integer; i++, client++ ) { if( client->state < CS_CONNECTING ) continue; SV_AddServerCommand( client, message ); } // add to demo if( svs.demo.file ) SV_AddServerCommand( &svs.demo.client, message ); }
/* * Sys_Error */ void Sys_Error( const char *format, ... ) { static qboolean recursive = qfalse; va_list argptr; char string[1024]; // change stdin to non blocking fcntl( 0, F_SETFL, fcntl( 0, F_GETFL, 0 ) & ~FNDELAY ); va_start( argptr, format ); Q_vsnprintfz( string, sizeof( string ), format, argptr ); va_end( argptr ); if( recursive ) { fprintf( stderr, "Recursive Sys_Error: %s\n", string ); _exit( 1 ); } recursive = qtrue; fprintf( stderr, "Error: %s\n", string ); CL_Shutdown(); Qcommon_Shutdown(); _exit( 1 ); }
/* * TVM_Error */ void TVM_Error( const char *format, ... ) { va_list argptr; char msg[1024]; va_start( argptr, format ); Q_vsnprintfz( msg, sizeof( msg ), format, argptr ); va_end( argptr ); trap_Error( msg ); }
void Com_Printf( const char *format, ... ) { va_list argptr; char msg[3072]; va_start( argptr, format ); Q_vsnprintfz( msg, sizeof( msg ), format, argptr ); va_end( argptr ); trap_Print( msg ); }
// this is only here so the functions in q_shared.c and q_math.c can link void Sys_Error( const char *format, ... ) { va_list argptr; char msg[3072]; va_start( argptr, format ); Q_vsnprintfz( msg, sizeof( msg ), format, argptr ); va_end( argptr ); trap::Error( msg ); }
void Com_Printf( const char *format, ... ) { va_list argptr; char msg[1024]; va_start( argptr, format ); Q_vsnprintfz( msg, sizeof( msg ), format, argptr ); va_end( argptr ); G_Printf( "%s", msg ); }
// this is only here so the functions in q_shared.c and q_math.c can link void Sys_Error( const char *format, ... ) { va_list argptr; char msg[3072]; va_start( argptr, format ); Q_vsnprintfz( msg, sizeof( msg ), format, argptr ); va_end( argptr ); ri.Com_Error( ERR_FATAL, "%s", msg ); }
void CG_SC_PrintStatsToFile( const char *format, ... ) { va_list argptr; char msg[1024]; va_start( argptr, format ); Q_vsnprintfz( msg, sizeof( msg ), format, argptr ); va_end( argptr ); trap_FS_Print( cg_statsFileHandle, msg ); }
void UI_Printf( const char *format, ... ) { va_list argptr; char msg[1024]; va_start( argptr, format ); Q_vsnprintfz( msg, sizeof(msg), format, argptr ); va_end ( argptr ); Trap::Print ( msg ); }
static asstring_t *objectString_AddAssignPattern( asstring_t *self, const char *pattern, ... ) { va_list argptr; static char buf[4096]; va_start( argptr, pattern ); Q_vsnprintfz( buf, sizeof( buf ), pattern, argptr ); va_end( argptr ); return objectString_AddAssignString( self, buf, strlen( buf ) ); }
/* * Netchan_OutOfBandPrint * * Sends a text message in an out-of-band datagram */ void Netchan_OutOfBandPrint( const socket_t *socket, const netadr_t *address, const char *format, ... ) { va_list argptr; static char string[MAX_PACKETLEN - 4]; va_start( argptr, format ); Q_vsnprintfz( string, sizeof( string ), format, argptr ); va_end( argptr ); Netchan_OutOfBand( socket, address, sizeof( char ) * (int)strlen( string ), (uint8_t *)string ); }
/* * TVM_RelayError */ void TVM_RelayError( tvm_relay_t *relay, const char *format, ... ) { va_list argptr; char msg[1024]; assert( relay ); va_start( argptr, format ); Q_vsnprintfz( msg, sizeof( msg ), format, argptr ); va_end( argptr ); trap_RelayError( relay, msg ); }
void AI_Debugv(const char *nick, const char *format, va_list va) { char concatBuffer[1024]; int prefixLen = sprintf(concatBuffer, "t=%09d %s: ", level.time, nick); Q_vsnprintfz(concatBuffer + prefixLen, 1024 - prefixLen, format, va); // concatBuffer may contain player names such as "%APPDATA%" char outputBuffer[2048]; EscapePercent(concatBuffer, outputBuffer, 2048); G_Printf(outputBuffer); }
static asstring_t *QAS_FormatStringHelper( const char *format, ... ) { char buf[256]; va_list args; const int buf_size = int(sizeof( buf )); va_start( args, format ); int ret = Q_vsnprintfz( buf, buf_size, format, args ); if( ret < 0 ) { return objectString_FactoryBuffer( "", 0 ); } if( ret < buf_size ) { va_end( args ); return objectString_FactoryBuffer( buf, strlen( buf ) ); } asstring_t *formatted = objectString_FactoryBuffer( NULL, ret ); Q_vsnprintfz( formatted->buffer, formatted->size, format, args ); return formatted; }
void Sys_Error( const char *format, ... ) { va_list argptr; char string[1024]; va_start( argptr, format ); Q_vsnprintfz( string, sizeof( string ), format, argptr ); va_end( argptr ); __android_log_write( ANDROID_LOG_ERROR, "Qfusion", string ); _exit( 1 ); }
void Com_DPrintf( const char *format, ... ) { va_list argptr; char msg[1024]; va_start( argptr, format ); Q_vsnprintfz( msg, sizeof( msg ), format, argptr ); va_end( argptr ); if( trap_Cvar_Value("developer") > 0 ) { trap_Print( msg ); } }
int wswcurl_formadd(wswcurl_req *req, const char *field, const char *value, ...) { va_list arg; char buf[1024]; if (!req) return -1; if (!field) return -2; if (!value) return -3; va_start(arg, value); Q_vsnprintfz(buf, sizeof(buf), value, arg); va_end(arg); curl_formadd(&req->post, &req->post_last, CURLFORM_COPYNAME, field, CURLFORM_COPYCONTENTS, buf, CURLFORM_END); return 0; }
/* * Com_DPrintf * * A Com_Printf that only shows up if the "developer" cvar is set */ void Com_DPrintf( const char *format, ... ) { va_list argptr; char msg[MAX_PRINTMSG]; if( !developer || !developer->integer ) return; // don't confuse non-developers with techie stuff... va_start( argptr, format ); Q_vsnprintfz( msg, sizeof( msg ), format, argptr ); va_end( argptr ); Com_Printf( "%s", msg ); }
/* * Sys_Error */ void Sys_Error( const char *format, ... ) { va_list argptr; char string[1024]; // change stdin to non blocking fcntl( 0, F_SETFL, fcntl( 0, F_GETFL, 0 ) & ~O_NONBLOCK ); va_start( argptr, format ); Q_vsnprintfz( string, sizeof( string ), format, argptr ); va_end( argptr ); fprintf( stderr, "Error: %s\n", string ); _exit( 1 ); }
void Sys_Error( const char *format, ... ) { va_list argptr; char msg[1024]; va_start( argptr, format ); Q_vsnprintfz( msg, sizeof( msg ), format, argptr ); va_end( argptr ); MessageBox( NULL, msg, "Error", 0 /* MB_OK */ ); // shut down QHOST hooks if necessary DeinitConProc(); exit( 1 ); }
int wswcurl_header( wswcurl_req *req, const char *key, const char *value, ...) { char buf[1024], *ptr; va_list arg; if (req->status) return -1; if (!req->curl) return -2; Q_snprintfz(buf, sizeof(buf), "%s: ", key); ptr = &buf[strlen(buf)]; va_start(arg, value); Q_vsnprintfz(ptr, (sizeof(buf) - (ptr - buf)), value, arg); va_end(arg); req->txhead = curl_slist_append(req->txhead, buf); return (req->txhead == NULL); }
void Sys_Error( const char *format, ... ) { va_list argptr; char msg[1024]; CL_Shutdown(); va_start( argptr, format ); Q_vsnprintfz( msg, sizeof( msg ), format, argptr ); va_end( argptr ); SDL_ShowSimpleMessageBox( SDL_MESSAGEBOX_ERROR, APPLICATION, msg, NULL ); Qcommon_Shutdown(); exit( 1 ); }
/* * TV_Downstream_Msg * * NULL sends to all the message to all clients */ void TV_Downstream_Msg( client_t *client, relay_t *relay, client_t *who, qboolean chat, const char *format, ... ) { int i; char msg[1024]; va_list argptr; char *s, *p; va_start( argptr, format ); Q_vsnprintfz( msg, sizeof( msg ), format, argptr ); va_end( argptr ); // double quotes are bad p = msg; while( ( p = strchr( p, '\"' ) ) != NULL ) *p = '\''; if( chat ) s = va( "tvch \"%s\" \"%s\"", (who ? who->name : ""), msg ); else s = va( "pr \"%s\"", msg ); if( !client ) { // mirror at server console if( !relay ) // lobby Com_Printf( "%s", msg ); for( i = 0, client = tvs.clients; i < tv_maxclients->integer; i++, client++ ) { if( client->state < CS_SPAWNED ) continue; if( client->relay != relay ) continue; TV_Downstream_AddGameCommand( relay, client, s ); } } else { if( client->state == CS_SPAWNED ) TV_Downstream_AddGameCommand( client->relay, client, s ); } }
/* * NET_SetErrorString */ void NET_SetErrorString( const char *format, ... ) { va_list argptr; char msg[MAX_PRINTMSG]; va_start( argptr, format ); Q_vsnprintfz( msg, sizeof( msg ), format, argptr ); va_end( argptr ); if( errorstring_size < strlen( msg ) + 1 ) { if( errorstring ) Mem_ZoneFree( errorstring ); errorstring_size = strlen( msg ) + 1 + 64; errorstring = ( char* )Mem_ZoneMalloc( errorstring_size ); } Q_strncpyz( errorstring, msg, errorstring_size ); }
/* * Com_Error * * Both client and server can use this, and it will * do the apropriate things. */ void Com_Error( com_error_code_t code, const char *format, ... ) { va_list argptr; char *msg = com_errormsg; const size_t sizeof_msg = sizeof( com_errormsg ); static qboolean recursive = qfalse; if( recursive ) { Com_Printf( "recursive error after: %s", msg ); // wsw : jal : log it Sys_Error( "recursive error after: %s", msg ); } recursive = qtrue; va_start( argptr, format ); Q_vsnprintfz( msg, sizeof_msg, format, argptr ); va_end( argptr ); if( code == ERR_DROP ) { Com_Printf( "********************\nERROR: %s\n********************\n", msg ); SV_ShutdownGame( va( "Server crashed: %s\n", msg ), qfalse ); CL_Disconnect( msg ); recursive = qfalse; longjmp( abortframe, -1 ); } else { Com_Printf( "********************\nERROR: %s\n********************\n", msg ); SV_Shutdown( va( "Server fatal crashed: %s\n", msg ) ); CL_Shutdown(); MM_Shutdown(); } if( log_file ) { FS_FCloseFile( log_file ); log_file = 0; } Sys_Error( "%s", msg ); }
void CG_LocalPrint( bool team, const char *format, ... ) { va_list argptr; char msg[LOCALPRINT_MSG_SIZE]; va_start( argptr, format ); Q_vsnprintfz( msg, sizeof( msg ), format, argptr ); va_end( argptr ); if( con_chatCGame->integer ) { trap_PrintToLog( msg ); } else { trap_Print( msg ); } CG_StackChatString( &cg.chat, msg ); }
/* * SV_BroadcastCommand * * Sends a command to all connected clients. Ignores client->state < CS_SPAWNED check */ void SV_BroadcastCommand( const char *format, ... ) { client_t *client; int i; va_list argptr; char string[1024]; if( !sv.state ) return; va_start( argptr, format ); Q_vsnprintfz( string, sizeof( string ), format, argptr ); va_end( argptr ); for( i = 0, client = svs.clients; i < sv_maxclients->integer; i++, client++ ) { if( client->state < CS_CONNECTING ) continue; SV_SendServerCommand( client, string ); } }
/* * CL_MM_ErrorMessage * Stores error message in local buffer and optionally prints it to console */ static void CL_MM_ErrorMessage( qboolean printToConsole, const char *format, ... ) { va_list argptr; char string[2048]; size_t string_len; va_start( argptr, format ); string_len = Q_vsnprintfz( string, sizeof( string ), format, argptr ); va_end( argptr ); if( string_len >= cl_mm_errmsg_size ) { if( cl_mm_errmsg ) { MM_Free( cl_mm_errmsg ); } cl_mm_errmsg_size = string_len + 1; cl_mm_errmsg = MM_Alloc( cl_mm_errmsg_size ); } strcpy( cl_mm_errmsg, string ); if( printToConsole ) { Com_Printf( "%s\n", cl_mm_errmsg ); } }
wswcurl_req *wswcurl_create( const char *furl, ... ) { wswcurl_req *retreq; CURL *curl; CURLcode res; char url[4 * 1024]; // 4kb url buffer? va_list arg; const char *proxy = http_proxy->string; const char *proxy_userpwd = http_proxyuserpwd->string; // Prepare url formatting with variable arguments va_start( arg, furl ); Q_vsnprintfz( url, sizeof( url ), furl, arg ); va_end( arg ); // Initialize structure if( !(curl = curl_easy_init()) ) { return NULL; } // allocate, copy retreq = ( wswcurl_req * )WMALLOC( sizeof( wswcurl_req ) ); memset( retreq, 0, sizeof( *retreq ) ); retreq->curl = curl; retreq->url = ( char* )WMALLOC( strlen( url ) + 1 ); memcpy( retreq->url, url, strlen( url ) + 1 ); CURLSETOPT( curl, res, CURLOPT_URL, retreq->url ); CURLSETOPT( curl, res, CURLOPT_WRITEFUNCTION, wswcurl_write ); CURLSETOPT( curl, res, CURLOPT_NOPROGRESS, 1 ); CURLSETOPT( curl, res, CURLOPT_FOLLOWLOCATION, 1 ); CURLSETOPT( curl, res, CURLOPT_HEADERFUNCTION, wswcurl_readheader ); CURLSETOPT( curl, res, CURLOPT_CONNECTTIMEOUT, WCONNECTTIMEOUT ); #if defined( APPLICATION ) && defined( APP_VERSION_STR ) && defined( OSNAME ) && defined( CPUSTRING ) CURLSETOPT( curl, res, CURLOPT_USERAGENT, APPLICATION"/"APP_VERSION_STR" (compatible; N; "OSNAME"; "CPUSTRING")" ); #endif CURLSETOPT( curl, res, CURLOPT_WRITEDATA, ( void * )retreq ); CURLSETOPT( curl, res, CURLOPT_WRITEHEADER, ( void * )retreq ); CURLSETOPT( curl, res, CURLOPT_PRIVATE, ( void * )retreq ); if( developer->integer ) { CURLSETOPT( curl, res, CURLOPT_DEBUGFUNCTION, &wswcurl_debug_callback ); CURLSETOPT( curl, res, CURLOPT_DEBUGDATA, ( void * )retreq ); CURLSETOPT( curl, res, CURLOPT_VERBOSE, 1 ); } // HTTP proxy settings if( proxy && *proxy ) { CURLSETOPT( curl, res, CURLOPT_PROXYTYPE, CURLPROXY_HTTP ); CURLSETOPT( curl, res, CURLOPT_PROXY, proxy ); if( proxy_userpwd && *proxy_userpwd ) { CURLSETOPT( curl, res, CURLOPT_PROXYUSERPWD, proxy_userpwd ); } } wswcurl_set_timeout( retreq, WTIMEOUT ); // link retreq->prev = NULL; retreq->next = http_requests; if( retreq->next ) { retreq->next->prev = retreq; } else { http_requests_hnode = retreq; } http_requests = retreq; CURLDBG((va(" CURL CREATE %s\n", url))); return retreq; }