summaryrefslogtreecommitdiff
path: root/source/cl_main.c
diff options
context:
space:
mode:
Diffstat (limited to 'source/cl_main.c')
-rw-r--r--source/cl_main.c77
1 files changed, 55 insertions, 22 deletions
diff --git a/source/cl_main.c b/source/cl_main.c
index b27b1dd..3a2da20 100644
--- a/source/cl_main.c
+++ b/source/cl_main.c
@@ -297,27 +297,6 @@ void CL_ForwardToServer_f( void ) {
}
}
-void CL_Setenv_f( void ) {
- int argc = Cmd_Argc();
-
- if ( argc > 2 ) {
- char buffer[ MAX_STRING_CHARS ];
-
- Q_concat( buffer, sizeof( buffer ), Cmd_Argv( 1 ), "=",
- Cmd_ArgsFrom( 2 ), NULL );
-
- putenv( buffer );
- } else if ( argc == 2 ) {
- char * env = getenv( Cmd_Argv( 1 ) );
-
- if ( env ) {
- Com_Printf( "%s=%s\n", Cmd_Argv( 1 ), env );
- } else {
- Com_Printf( "%s undefined\n", Cmd_Argv( 1 ) );
- }
- }
-}
-
/*
==================
CL_Pause_f
@@ -1976,6 +1955,58 @@ static void CL_DumpLayout_f( void ) {
Com_Printf( "Dumped layout program to %s.\n", buffer );
}
+/*
+===============
+CL_WriteConfig
+
+Writes key bindings and archived cvars to config.cfg
+===============
+*/
+static qboolean CL_WriteConfig( const char *path ) {
+ fileHandle_t f;
+
+ FS_FOpenFile( path, &f, FS_MODE_WRITE );
+ if( !f ) {
+ Com_WPrintf( "Couldn't write %s\n", path );
+ return qfalse;
+ }
+
+ FS_FPrintf( f, "// generated by q2pro, do not modify\n" );
+
+ Key_WriteBindings( f );
+ Cvar_WriteVariables( f );
+
+ FS_FCloseFile( f );
+
+ return qtrue;
+}
+
+/*
+===============
+CL_WriteConfig_f
+===============
+*/
+static void CL_WriteConfig_f( void ) {
+ char buffer[MAX_QPATH];
+
+ if( Cmd_Argc() > 2 ) {
+ Com_Printf( "Usage: %s [cfgfile]\n", Cmd_Argv( 0 ) );
+ return;
+ }
+
+ if( Cmd_Argc() < 2 ) {
+ strcpy( buffer, COM_CONFIG_NAME );
+ } else {
+ Cmd_ArgvBuffer( 1, buffer, sizeof( buffer ) );
+ COM_AppendExtension( buffer, ".cfg", sizeof( buffer ) );
+ }
+
+ if( CL_WriteConfig( buffer ) ) {
+ Com_Printf( "Wrote %s\n", buffer );
+ }
+}
+
+
static int CL_Mapname_m( char *buffer, int size ) {
if( !cl.mapname[0] ) {
return Q_strncpyz( buffer, "nomap", size );
@@ -2206,13 +2237,13 @@ static const cmdreg_t c_client[] = {
{ "passive", CL_PassiveConnect_f },
{ "reconnect", CL_Reconnect_f },
{ "rcon", CL_Rcon_f },
- { "setenv", CL_Setenv_f },
{ "precache", CL_Precache_f },
{ "download", CL_Download_f },
{ "serverstatus", CL_ServerStatus_f, CL_Connect_g },
{ "dumpclients", CL_DumpClients_f },
{ "dumpstatusbar", CL_DumpStatusbar_f },
{ "dumplayout", CL_DumpLayout_f },
+ { "writeconfig", CL_WriteConfig_f, Cmd_Exec_g },
{ "vid_restart", CL_RestartRefresh_f },
//
@@ -2751,6 +2782,8 @@ void CL_Shutdown( void ) {
Con_Shutdown();
CL_ShutdownRefresh();
+ CL_WriteConfig( COM_CONFIG_NAME );
+
Cvar_Set( "cl_running", "0" );
isdown = qfalse;