]> git.sesse.net Git - vlc/blobdiff - modules/control/telnet.c
remove the signals interface
[vlc] / modules / control / telnet.c
index 6cf4b6d64a449941bbb9d53393197690e5a4e6fb..0b63fd1b962cd9b8ed11754021f6ac85cecc861c 100644 (file)
 #include <vlc_input.h>
 
 #include <stdbool.h>
-#include <sys/stat.h>
 
 #include <errno.h>
-#include <fcntl.h>
-
-#ifdef HAVE_SYS_TIME_H
-#    include <sys/time.h>
-#endif
 
 #ifdef HAVE_UNISTD_H
 #   include <unistd.h>
@@ -94,11 +88,11 @@ vlc_module_begin ()
     set_category( CAT_INTERFACE )
     set_subcategory( SUBCAT_INTERFACE_CONTROL )
     add_string( "telnet-host", "", NULL, TELNETHOST_TEXT,
-                 TELNETHOST_LONGTEXT, true );
+                 TELNETHOST_LONGTEXT, true )
     add_integer( "telnet-port", TELNETPORT_DEFAULT, NULL, TELNETPORT_TEXT,
-                 TELNETPORT_LONGTEXT, true );
+                 TELNETPORT_LONGTEXT, true )
     add_password( "telnet-password", TELNETPWD_DEFAULT, NULL, TELNETPWD_TEXT,
-                TELNETPWD_LONGTEXT, true );
+                TELNETPWD_LONGTEXT, true )
     set_description( N_("VLM remote control interface") )
     add_category_hint( "VLM", NULL, false )
     set_capability( "interface", 0 )
@@ -171,9 +165,8 @@ static int Open( vlc_object_t *p_this )
 
     msg_Info( p_intf, "using the VLM interface plugin..." );
 
-    i_telnetport = config_GetInt( p_intf, "telnet-port" );
-    psz_address  = config_GetPsz( p_intf, "telnet-host" );
-
+    i_telnetport = var_InheritInteger( p_intf, "telnet-port" );
+    psz_address  = var_InheritString( p_intf, "telnet-host" );
     vlc_UrlParse(&url, psz_address, 0);
     free( psz_address );
 
@@ -247,7 +240,7 @@ static void Run( intf_thread_t *p_intf )
         nlisten++; /* How many listening sockets do we have? */
 
     /* FIXME: make sure config_* is cancel-safe */
-    psz_password = config_GetPsz( p_intf, "telnet-password" );
+    psz_password = var_InheritString( p_intf, "telnet-password" );
     vlc_cleanup_push( free, psz_password );
 
     for( ;; )
@@ -280,8 +273,12 @@ static void Run( intf_thread_t *p_intf )
                 if (net_errno != EINTR)
                 {
                     msg_Err (p_intf, "network poll error");
-                    msleep (1000);
-                    continue;
+#ifndef WIN32
+                    pause ();  /* We are screwed! */
+#else
+                    abort (); /* We are even more screwed! (no pause() in win32) */
+#endif
+                    break;
                 }
             case 0:
                 continue;
@@ -373,7 +370,13 @@ static void Run( intf_thread_t *p_intf )
                                    cl->i_mode + 2 );
                 }
 
-                if (i_recv <= 0 && ( end || errno != EAGAIN ) )
+#ifdef WIN32
+                if( i_recv <= 0 && WSAGetLastError() == WSAEWOULDBLOCK )
+                {
+                    errno = EAGAIN;
+                }
+#endif
+                if( i_recv == 0 || ( i_recv == -1 && ( end || errno != EAGAIN ) ) )
                     goto drop;
             }
         }
@@ -422,7 +425,7 @@ static void Run( intf_thread_t *p_intf )
                 else if( !strncmp( cl->buffer_read, "shutdown", 8 ) )
                 {
                     msg_Err( p_intf, "shutdown requested" );
-                    vlc_object_kill( p_intf->p_libvlc );
+                    libvlc_Quit( p_intf->p_libvlc );
                 }
                 else if( *cl->buffer_read == '@'
                           && strchr( cl->buffer_read, ' ' ) )
@@ -450,7 +453,7 @@ static void Run( intf_thread_t *p_intf )
                     if( psz_msg )
                     {
                         vlm_message_t *message;
-                        message = vlm_MessageNew( "Module command", psz_msg );
+                        message = vlm_MessageNew( "Module command", "%s", psz_msg );
                         Write_message( cl, message, NULL, WRITE_MODE_CMD );
                         vlm_MessageDelete( message );
                         free( psz_msg );
@@ -468,14 +471,13 @@ static void Run( intf_thread_t *p_intf )
                     if( !strncmp( cl->buffer_read, "help", 4 ) )
                     {
                         vlm_message_t *p_my_help =
-                            vlm_MessageNew( "Telnet Specific Commands:", NULL );
+                            vlm_MessageSimpleNew( "Telnet Specific Commands:" );
                         vlm_MessageAdd( p_my_help,
-                            vlm_MessageNew( "logout, quit, exit" , NULL ) );
+                            vlm_MessageSimpleNew( "logout, quit, exit" ) );
                         vlm_MessageAdd( p_my_help,
-                            vlm_MessageNew( "shutdown" , NULL ) );
+                            vlm_MessageSimpleNew( "shutdown" ) );
                         vlm_MessageAdd( p_my_help,
-                            vlm_MessageNew( "@moduleinstance command argument",
-                                             NULL) );
+                            vlm_MessageSimpleNew( "@moduleinstance command argument" ) );
                         vlm_MessageAdd( message, p_my_help );
                     }
                     Write_message( cl, message, NULL, WRITE_MODE_CMD );
@@ -496,14 +498,13 @@ static void Run( intf_thread_t *p_intf )
             if (fd == -1)
                 continue;
 
-            telnet_client_t *cl = malloc( sizeof( telnet_client_t ));
+            telnet_client_t *cl = calloc( 1, sizeof( telnet_client_t ));
             if (cl == NULL)
             {
                 net_Close (fd);
                 continue;
             }
 
-            memset( cl, 0, sizeof(telnet_client_t) );
             cl->i_tel_cmd = 0;
             cl->fd = fd;
             cl->buffer_write = NULL;
@@ -564,7 +565,7 @@ static char *MessageToString( vlm_message_t *message, int i_level )
     }
 
     i_message += strlen( message->psz_name ) + i_level * sizeof( "    " ) + 1;
-    psz_message = malloc( i_message );
+    psz_message = xmalloc( i_message );
     *psz_message = 0;
     for( i = 0; i < i_level; i++ ) strcat( psz_message, "    " );
     strcat( psz_message, message->psz_name );
@@ -573,7 +574,7 @@ static char *MessageToString( vlm_message_t *message, int i_level )
     {
         i_message += sizeof( " : " ) + strlen( message->psz_value ) +
             sizeof( STRING_CR );
-        psz_message = realloc( psz_message, i_message );
+        psz_message = xrealloc( psz_message, i_message );
         strcat( psz_message, " : " );
         strcat( psz_message, message->psz_value );
         strcat( psz_message, STRING_CR );
@@ -581,7 +582,7 @@ static char *MessageToString( vlm_message_t *message, int i_level )
     else
     {
         i_message += sizeof( STRING_CR );
-        psz_message = realloc( psz_message, i_message );
+        psz_message = xrealloc( psz_message, i_message );
         strcat( psz_message, STRING_CR );
     }
 
@@ -591,7 +592,7 @@ static char *MessageToString( vlm_message_t *message, int i_level )
             MessageToString( message->child[i], i_level + 1 );
 
         i_message += strlen( child_message );
-        psz_message = realloc( psz_message, i_message );
+        psz_message = xrealloc( psz_message, i_message );
         strcat( psz_message, child_message );
         free( child_message );
     }