* ftp.c:
*****************************************************************************
* Copyright (C) 2001, 2002 VideoLAN
- * $Id: ftp.c,v 1.14 2003/03/30 18:14:35 gbazin Exp $
+ * $Id: ftp.c,v 1.15 2003/04/30 04:13:12 hartman Exp $
*
* Authors: Laurent Aimar <fenrir@via.ecp.fr>
*
{
int64_t i_size = 0;
char *psz_parser = psz_arg + 4;
+ int sign = 1;
- while( *psz_parser == ' ' ) psz_parser++;
+ while( *psz_parser == ' ' || *psz_parser == '\t' ) psz_parser++;
- while( psz_parser[0] >= '0' && psz_parser[0] <= '9' )
+ if( *psz_parser == '-' )
+ sign = -1;
+ while( *psz_parser != '\0' )
{
- i_size *= 10;
- i_size += psz_parser[0] - '0';
+ if( *psz_parser >= '0' && *psz_parser <= '9' )
+ i_size = i_size *10 + *psz_parser++ - '0';
+ else
+ psz_parser++;
}
- p_access->i_filesize = i_size;
+ p_access->i_filesize = i_size * sign;
}
#endif
* http.c: HTTP access plug-in
*****************************************************************************
* Copyright (C) 2001, 2002 VideoLAN
- * $Id: http.c,v 1.32 2003/03/30 18:14:35 gbazin Exp $
+ * $Id: http.c,v 1.33 2003/04/30 04:13:12 hartman Exp $
*
* Authors: Christophe Massiot <massiot@via.ecp.fr>
*
#ifdef HAVE_ATOLL
i_size = i_tell + atoll( psz_value );
#else
+ int sign = 1;
psz_parser = psz_value;
- while( psz_parser[0] >= '0' && psz_parser[0] <= '9' )
+
+ while( *psz_value == ' ' || *psz_value == '\t' )
+ psz_value++;
+
+ if( *psz_value == '-' )
+ sign = -1;
+ while( *psz_value != '\0')
{
- i_size *= 10;
- i_size += psz_parser[0] - '0';
+ if( *psz_value >= '0' && *psz_value <= '9' )
+ i_size = i_size * 10 + *psz_value++ - '0';
+ else
+ psz_value++;
}
- i_size += i_tell;
+ i_size = i_tell + ( i_size * sign );
#endif
msg_Dbg( p_input, "stream size is "I64Fd, i_size );