X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Faccess%2Ftcp.c;h=1e6f3d1118613ea9cddd5e90eef3539bbebfc724;hb=86f8bf5f0756acdb0fdc9bf04f2d599dd09703dd;hp=2eff261f4f37f59037945041fab1b0d20dbcfbd8;hpb=a90a19a6b0468ea9fedadc27cfc1118d70295263;p=vlc diff --git a/modules/access/tcp.c b/modules/access/tcp.c index 2eff261f4f..1e6f3d1118 100644 --- a/modules/access/tcp.c +++ b/modules/access/tcp.c @@ -1,7 +1,7 @@ /***************************************************************************** * tcp.c: TCP input module ***************************************************************************** - * Copyright (C) 2003-2004 VideoLAN + * Copyright (C) 2003-2004 the VideoLAN team * $Id$ * * Authors: Laurent Aimar @@ -18,32 +18,35 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. *****************************************************************************/ /***************************************************************************** * Preamble *****************************************************************************/ -#include + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif #include -#include +#include -#include "network.h" +#include /***************************************************************************** * Module descriptor *****************************************************************************/ #define CACHING_TEXT N_("Caching value in ms") #define CACHING_LONGTEXT N_( \ - "Allows you to modify the default caching value for TCP streams. This " \ - "value should be set in millisecond units." ) + "Caching value for TCP streams. This " \ + "value should be set in milliseconds." ) static int Open ( vlc_object_t * ); static void Close( vlc_object_t * ); vlc_module_begin(); - set_name( _("TCP") ); + set_shortname( _("TCP") ); set_description( _("TCP input") ); set_category( CAT_INPUT ); set_subcategory( SUBCAT_INPUT_ACCESS ); @@ -65,7 +68,7 @@ struct access_sys_t }; -static int Read( access_t *, uint8_t *, int ); +static ssize_t Read( access_t *, uint8_t *, size_t ); static int Control( access_t *, int, va_list ); /***************************************************************************** @@ -80,47 +83,30 @@ static int Open( vlc_object_t *p_this ) char *psz_parser = psz_dup; /* Parse server:port */ - while( *psz_parser && *psz_parser != ':' ) - { - if( *psz_parser == '[' ) - { - /* IPV6 */ - while( *psz_parser && *psz_parser != ']' ) - { - psz_parser++; - } - } - psz_parser++; - } - if( *psz_parser != ':' || psz_parser == psz_dup ) + if( *psz_parser == '[' ) { - msg_Err( p_access, "you have to provide server:port addresse" ); - free( psz_dup ); - return VLC_EGENERIC; + psz_parser = strchr( psz_parser, ']' ); + if( psz_parser == NULL ) + psz_parser = psz_dup; } - *psz_parser++ = '\0'; + psz_parser = strchr( psz_parser, ':' ); - if( atoi( psz_parser ) <= 0 ) + if( psz_parser == NULL ) { - msg_Err( p_access, "invalid port number (%d)", atoi( psz_parser ) ); + msg_Err( p_access, "missing port number : %s", psz_dup ); free( psz_dup ); return VLC_EGENERIC; } + *psz_parser++ = '\0'; + /* Init p_access */ - p_access->pf_read = Read; - p_access->pf_block = NULL; - p_access->pf_control = Control; - p_access->pf_seek = NULL; - p_access->info.i_update = 0; - p_access->info.i_size = 0; - p_access->info.i_pos = 0; - p_access->info.b_eof = VLC_FALSE; - p_access->info.i_title = 0; - p_access->info.i_seekpoint = 0; - p_access->p_sys = p_sys = malloc( sizeof( access_sys_t ) ); - - p_sys->fd = net_OpenTCP( p_access, psz_dup, atoi( psz_parser ) ); + access_InitFields( p_access ); \ + ACCESS_SET_CALLBACKS( Read, NULL, Control, NULL ); \ + MALLOC_ERR( p_access->p_sys, access_sys_t ); \ + p_sys = p_access->p_sys; memset( p_sys, 0, sizeof( access_sys_t ) ); + + p_sys->fd = net_ConnectTCP( p_access, psz_dup, atoi( psz_parser ) ); free( psz_dup ); if( p_sys->fd < 0 ) @@ -150,7 +136,7 @@ static void Close( vlc_object_t *p_this ) /***************************************************************************** * Read: read on a file descriptor, checking b_die periodically *****************************************************************************/ -static int Read( access_t *p_access, uint8_t *p_buffer, int i_len ) +static ssize_t Read( access_t *p_access, uint8_t *p_buffer, size_t i_len ) { access_sys_t *p_sys = p_access->p_sys; int i_read; @@ -214,6 +200,7 @@ static int Control( access_t *p_access, int i_query, va_list args ) case ACCESS_SET_TITLE: case ACCESS_SET_SEEKPOINT: case ACCESS_SET_PRIVATE_ID_STATE: + case ACCESS_GET_CONTENT_TYPE: return VLC_EGENERIC; default: