void Irc_Disconnect_f( void ) { if( irc_libhandle ) { bool *c; if( !irc_server ) irc_server = Cvar_Get( "irc_server", "", 0 ); if( !irc_connected ) irc_connected = Dynvar_Lookup( "irc_connected" ); assert( irc_connected ); assert( irc_server ); Dynvar_GetValue( irc_connected, (void **) &c ); if( *c ) { // still connected, proceed if( irc_wakelock ) { Sys_ReleaseWakeLock( irc_wakelock ); irc_wakelock = NULL; } irc_export->Disconnect(); Dynvar_RemoveListener( irc_connected, Irc_ConnectedListener_f ); } else Com_Printf( "Not connected.\n" ); } else Com_Printf( "IRC module not loaded. Connect first.\n" ); }
void Irc_Connect_f( void ) { const int argc = Cmd_Argc(); if( argc <= 3 ) { if( !irc_libhandle ) Irc_LoadLibrary(); // load IRC library if not already loaded if( irc_libhandle ) { // library loaded, check for connection status bool *c; if( !irc_server ) irc_server = Cvar_Get( "irc_server", "irc.quakenet.org", CVAR_ARCHIVE ); if( !irc_connected ) irc_connected = Dynvar_Lookup( "irc_connected" ); assert( irc_server ); assert( irc_connected ); Dynvar_GetValue( irc_connected, (void **) &c ); if( !*c ) { // not connected yet if( argc >= 2 ) Cvar_Set( "irc_server", Cmd_Argv( 1 ) ); if( argc >= 3 ) Cvar_Set( "irc_port", Cmd_Argv( 2 ) ); Dynvar_AddListener( irc_connected, Irc_ConnectedListener_f ); irc_export->Connect(); Dynvar_GetValue( irc_connected, (void **) &c ); if( *c ) { irc_wakelock = Sys_AcquireWakeLock(); } else { // connect failed Com_Printf( "Could not connect to %s (%s).\n", Cvar_GetStringValue( irc_server ), irc_export->ERROR_MSG ); Dynvar_RemoveListener( irc_connected, Irc_ConnectedListener_f ); } } else Com_Printf( "Already connected.\n" ); } } else Com_Printf( "usage: irc_connect [<server>] [<port>]" ); }
/* * Sys_InitDynvars */ void Sys_InitDynvars( void ) { char *dummyStr; dynvar_t *affinity_var; affinity_var = Dynvar_Create( "sys_affinity", true, Sys_GetAffinity_f, Sys_SetAffinity_f ); assert( affinity_var ); Dynvar_GetValue( affinity_var, (void **)&dummyStr ); assert( dummyStr ); Dynvar_SetValue( affinity_var, dummyStr ); Sys_InitTimeDynvar(); }
static void Irc_Quit_f( void *nothing ) { if( irc_initialized ) { bool *c, b; Dynvar_GetValue( irc_connected, (void **) &c ); b = *c; Irc_UnloadLibrary(); if( b ) { // was connected before unload, sleep a little for sockets to close properly Sys_Sleep( 1000 ); } } }
bool Irc_IsConnected( void ) { if( irc_libhandle ) { bool *c; if( !irc_connected ) irc_connected = Dynvar_Lookup( "irc_connected" ); assert( irc_connected ); Dynvar_GetValue( irc_connected, (void **) &c ); if( *c ) { return true; } } return false; }
qboolean Dynvar_Command( void ) { dynvar_t *dynvar = Dynvar_Lookup( Cmd_Argv( 0 ) ); if( dynvar && dynvar->console ) { // dynvar exists and is console-accessible if( Cmd_Argc() == 1 ) { void *value; dynvar_get_status_t status = Dynvar_GetValue( dynvar, &value ); switch( status ) { case DYNVAR_GET_OK: Com_Printf( "\"%s\" is \"%s\"\n", Dynvar_GetName( dynvar ), (char *) value ); break; case DYNVAR_GET_WRITEONLY: Com_Printf( (char *) DYNVAR_GET_WRITEONLY_MSG, Dynvar_GetName( dynvar ) ); break; case DYNVAR_GET_TRANSIENT: Com_Printf( (char *) DYNVAR_TRANSIENT_MSG, Dynvar_GetName( dynvar ) ); break; } } else { dynvar_set_status_t status = Dynvar_SetValue( dynvar, Cmd_Argv( 1 ) ); switch( status ) { case DYNVAR_SET_OK: break; case DYNVAR_SET_READONLY: Com_Printf( (char *) DYNVAR_SET_READONLY_MSG, Dynvar_GetName( dynvar ) ); break; case DYNVAR_SET_INVALID: Com_Printf( (char *) DYNVAR_SET_INVALID_MSG, Cmd_Argv( 1 ), Dynvar_GetName( dynvar ) ); break; case DYNVAR_SET_TRANSIENT: Com_Printf( (char *) DYNVAR_TRANSIENT_MSG, Dynvar_GetName( dynvar ) ); break; } } return qtrue; } else // dynvar does not exist or is inaccessible return qfalse; }
/* * Sys_InitTime */ void Sys_InitTime( void ) { char *hwtimerStr; assert( hwtimer_var ); Dynvar_GetValue( hwtimer_var, (void **)&hwtimerStr ); assert( hwtimerStr ); if( hwtimerStr[0] == '0' && COM_CheckParm( "-hwtimer" ) ) { // hwtimer set by command line parameter (deprecated) Dynvar_SetValue( hwtimer_var, "1" ); } // finally check whether hwtimer is activated if( hwtimer ) Com_Printf( "Using High Resolution Performance Counter\n" ); else Com_Printf( "Using timeGetTime\n" ); }
static void Irc_UnloadLibrary( void ) { assert( irc_libhandle ); if( irc_initialized ) { dynvar_t *const quit = Dynvar_Lookup( "quit" ); bool *c; if( !irc_connected ) irc_connected = Dynvar_Lookup( "irc_connected" ); Dynvar_GetValue( irc_connected, (void **) &c ); if( *c ) irc_export->Disconnect(); irc_export->Shutdown(); Cmd_RemoveCommand( "irc_unload" ); if( quit ) Dynvar_RemoveListener( quit, Irc_Quit_f ); irc_initialized = false; } Com_UnloadLibrary( &irc_libhandle ); assert( !irc_libhandle ); Com_Printf( "IRC module unloaded.\n" ); }