diff -uNr vlc-trunk.derm/modules/control/rc.c vlc-trunk/modules/control/rc.c
--- vlc-trunk.derm/modules/control/rc.c	2005-11-09 09:12:06.427495880 +0000
+++ vlc-trunk/modules/control/rc.c	2005-11-09 09:41:40.317823560 +0000
@@ -158,6 +158,9 @@
 #define UNIX_TEXT N_("UNIX socket command input")
 #define UNIX_LONGTEXT N_("Accept commands over a Unix socket rather than " \
                          "stdin." )
+#define OVERWRITE_TEXT N_("Over-write UNIX socket")
+#define OVERWRITE_LONGTEXT N_("If unable to bind RC interface to the specified " \
+			 " UNIX socket will attempt to unlink it then retry." )
 
 #define HOST_TEXT N_("TCP command input")
 #define HOST_LONGTEXT N_("Accept commands over a socket rather than stdin. " \
@@ -183,6 +186,7 @@
 #endif
     add_string( "rc-unix", 0, NULL, UNIX_TEXT, UNIX_LONGTEXT, VLC_TRUE );
     add_string( "rc-host", 0, NULL, HOST_TEXT, HOST_LONGTEXT, VLC_TRUE );
+    add_bool( "rc-overwrite", 0, NULL, OVERWRITE_TEXT, OVERWRITE_LONGTEXT, VLC_TRUE );
 
 #ifdef WIN32
     add_bool( "rc-quiet", 0, NULL, QUIET_TEXT, QUIET_LONGTEXT, VLC_FALSE );
@@ -214,7 +218,10 @@
     psz_unix_path = config_GetPsz( p_intf, "rc-unix" );
     if( psz_unix_path )
     {
-        int i_socket;
+        int i_socket, i_overwrite;
+
+	i_overwrite = config_GetInt( p_intf, "rc-overwrite" );
+
 
 #if !defined(AF_LOCAL) || defined(WIN32)
         msg_Warn( p_intf, "your OS doesn't support filesystem sockets" );
@@ -242,11 +249,21 @@
         if( (i_ret = bind( i_socket, (struct sockaddr*)&addr,
                            sizeof(struct sockaddr_un) ) ) < 0 )
         {
-            msg_Warn( p_intf, "couldn't bind socket to address: %s",
-                      strerror(errno) );
-            free( psz_unix_path );
-            net_Close( i_socket );
-            return VLC_EGENERIC;
+	    if( i_overwrite )
+            {
+                msg_Warn( p_intf, "Found old UNIX socket: %s, deleting and re-trying", psz_unix_path );
+	        unlink( psz_unix_path ); 
+            }
+            if( !i_overwrite || bind( i_socket, (struct sockaddr*)&addr,
+                           sizeof(struct sockaddr_un) ) < 0 )
+            {
+            
+                msg_Warn( p_intf, "couldn't bind socket to address: %s",
+                           strerror(errno) );
+                free( psz_unix_path );
+                net_Close( i_socket );
+                return VLC_EGENERIC;
+            }
         }
 
         if( ( i_ret = listen( i_socket, 1 ) ) < 0 )
