Commit 1955153b authored by Laurent Aimar's avatar Laurent Aimar

* src/misc/net.c: fixed net_Gets

parent 879d9fc3
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* network.h: interface to communicate with network plug-ins * network.h: interface to communicate with network plug-ins
***************************************************************************** *****************************************************************************
* Copyright (C) 2002 VideoLAN * Copyright (C) 2002 VideoLAN
* $Id: network.h,v 1.6 2004/01/05 14:10:58 fenrir Exp $ * $Id: network.h,v 1.7 2004/01/06 23:03:16 fenrir Exp $
* *
* Authors: Christophe Massiot <massiot@via.ecp.fr> * Authors: Christophe Massiot <massiot@via.ecp.fr>
* Laurent Aimar <fenrir@via.ecp.fr> * Laurent Aimar <fenrir@via.ecp.fr>
...@@ -64,7 +64,7 @@ typedef struct ...@@ -64,7 +64,7 @@ typedef struct
***************************************************************************** *****************************************************************************
* option : if != 0 then path is split at this char * option : if != 0 then path is split at this char
* *
* format protocol://host[:port]/path[OPTIONoption] * format [protocol://][host[:port]]/path[OPTIONoption]
*****************************************************************************/ *****************************************************************************/
static inline void vlc_UrlParse( vlc_url_t *url, char *psz_url, char option ) static inline void vlc_UrlParse( vlc_url_t *url, char *psz_url, char option )
{ {
...@@ -78,9 +78,7 @@ static inline void vlc_UrlParse( vlc_url_t *url, char *psz_url, char option ) ...@@ -78,9 +78,7 @@ static inline void vlc_UrlParse( vlc_url_t *url, char *psz_url, char option )
url->psz_path = NULL; url->psz_path = NULL;
url->psz_option = NULL; url->psz_option = NULL;
p = strchr( psz_dup, ':' ); if( ( p = strstr( psz_parse, ":/" ) ) )
if( p )
{ {
/* we have a protocol */ /* we have a protocol */
...@@ -93,27 +91,29 @@ static inline void vlc_UrlParse( vlc_url_t *url, char *psz_url, char option ) ...@@ -93,27 +91,29 @@ static inline void vlc_UrlParse( vlc_url_t *url, char *psz_url, char option )
url->psz_protocol = strdup( psz_dup ); url->psz_protocol = strdup( psz_dup );
psz_parse = p; psz_parse = p;
}
p = strchr( psz_parse, '/' ); p = strchr( psz_parse, '/' );
if( !p || psz_parse < p ) if( !p || psz_parse < p )
{ {
char *p2; char *p2;
/* We have a host[:port] */
url->psz_host = strdup( psz_parse );
if( p )
{
url->psz_host[p - psz_parse] = '\0';
}
p2 = strchr( url->psz_host, ':' ); /* We have a host[:port] */
if( p2 ) url->psz_host = strdup( psz_parse );
{ if( p )
*p2++ = '\0'; {
url->i_port = atoi( p2 ); url->psz_host[p - psz_parse] = '\0';
}
} }
p2 = strchr( url->psz_host, ':' );
if( p2 )
{
*p2++ = '\0';
url->i_port = atoi( p2 );
}
}
if( p )
{
psz_parse = p; psz_parse = p;
} }
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* net.c: * net.c:
***************************************************************************** *****************************************************************************
* Copyright (C) 2004 VideoLAN * Copyright (C) 2004 VideoLAN
* $Id: net.c,v 1.1 2004/01/05 14:10:58 fenrir Exp $ * $Id: net.c,v 1.2 2004/01/06 23:03:17 fenrir Exp $
* *
* Authors: Laurent Aimar <fenrir@videolan.org> * Authors: Laurent Aimar <fenrir@videolan.org>
* *
...@@ -283,16 +283,18 @@ char *__net_Gets( vlc_object_t *p_this, int fd ) ...@@ -283,16 +283,18 @@ char *__net_Gets( vlc_object_t *p_this, int fd )
{ {
if( net_Read( p_this, fd, &psz_line[i_line], 1, VLC_TRUE ) != 1 ) if( net_Read( p_this, fd, &psz_line[i_line], 1, VLC_TRUE ) != 1 )
{ {
psz_line[i_line] = '\0';
break; break;
} }
if( psz_line[i_line] == '\n' || psz_line[i_line] == '\r' ) i_line++;
if( psz_line[i_line-1] == '\n' )
{ {
psz_line[i_line] = '\0';
break; break;
} }
i_line++; if( i_line >= i_max - 1 )
if( i_line >= i_max )
{ {
i_max += 1024; i_max += 1024;
psz_line = realloc( psz_line, i_max ); psz_line = realloc( psz_line, i_max );
...@@ -305,11 +307,11 @@ char *__net_Gets( vlc_object_t *p_this, int fd ) ...@@ -305,11 +307,11 @@ char *__net_Gets( vlc_object_t *p_this, int fd )
return NULL; return NULL;
} }
while( i_line >= 0 && while( i_line >= 1 &&
( psz_line[i_line] == '\n' || psz_line[i_line] == '\r' ) ) ( psz_line[i_line-1] == '\n' || psz_line[i_line-1] == '\r' ) )
{ {
psz_line[i_line] = '\0';
i_line--; i_line--;
psz_line[i_line] = '\0';
} }
return psz_line; return psz_line;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment