예제 #1
0
파일: irc.c 프로젝트: Clever-Boy/qfusion
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" );
}
예제 #2
0
파일: irc.c 프로젝트: Clever-Boy/qfusion
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>]" );
}
예제 #3
0
/*
* 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();
}
예제 #4
0
파일: irc.c 프로젝트: Clever-Boy/qfusion
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 );
		}
	}
}
예제 #5
0
파일: irc.c 프로젝트: Clever-Boy/qfusion
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;
}
예제 #6
0
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;
}
예제 #7
0
/*
* 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" );
}
예제 #8
0
파일: irc.c 프로젝트: Clever-Boy/qfusion
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" );
}