Index: src/game/g_svcmds.c
===================================================================
--- src/game/g_svcmds.c	(revision 1003)
+++ src/game/g_svcmds.c	(working copy)
@@ -722,7 +722,29 @@
     }
     else if( !Q_stricmp( cmd, "cp" ) )
     {
-      trap_SendServerCommand( -1, va( "cp \"%s\"", ConcatArgs( 1 ) ) );
+      int i, j;
+      char buffer[MAX_STRING_CHARS];
+      Q_strncpyz( buffer, ConcatArgs( 1 ), sizeof( buffer ) );
+      for( i = j = 0; i < strlen( buffer ); i++, j++ )
+      {
+	if(!buffer[i]) break;
+	if(buffer[i] == '\\')
+	{
+	    if(buffer[i + 1] == '\\')
+		buffer[j] = buffer[++i];
+	    else if(buffer[i + 1] == 'n')
+	    {
+		buffer[j] = '\n';
+		i++;
+	    }
+	    else
+		buffer[j] = buffer[i];
+	}
+	else
+	    buffer[j] = buffer[i];
+      }
+      buffer[j] = 0;
+      trap_SendServerCommand( -1, va( "cp \"%s\"", buffer ) );
       G_Printf( "cp: %s\n", ConcatArgs( 1 ) );
       return qtrue;
     }
