@ -803,7 +803,13 @@ int ff_get_chomp_line(AVIOContext *s, char *buf, int maxlen)
return len ;
}
static int64_t read_line_to_bprint ( AVIOContext * s , AVBPrint * bp )
typedef enum FFBPrintReadStringMode {
FFBPrintReadString = 0 ,
FFBPrintReadLine = 1 ,
} FFBPrintReadStringMode ;
static int64_t read_string_to_bprint ( AVIOContext * s , AVBPrint * bp ,
FFBPrintReadStringMode mode )
{
int len , end ;
int64_t read = 0 ;
@ -814,7 +820,8 @@ static int64_t read_line_to_bprint(AVIOContext *s, AVBPrint *bp)
len = 0 ;
do {
c = avio_r8 ( s ) ;
end = ( c = = ' \r ' | | c = = ' \n ' | | c = = ' \0 ' ) ;
end = ( ( mode = = FFBPrintReadLine & & ( c = = ' \r ' | | c = = ' \n ' ) ) | |
c = = ' \0 ' ) ;
if ( ! end )
tmp [ len + + ] = c ;
} while ( ! end & & len < sizeof ( tmp ) ) ;
@ -822,7 +829,8 @@ static int64_t read_line_to_bprint(AVIOContext *s, AVBPrint *bp)
read + = len ;
} while ( ! end ) ;
if ( c = = ' \r ' & & avio_r8 ( s ) ! = ' \n ' & & ! avio_feof ( s ) )
if ( mode = = FFBPrintReadLine & &
c = = ' \r ' & & avio_r8 ( s ) ! = ' \n ' & & ! avio_feof ( s ) )
avio_skip ( s , - 1 ) ;
if ( ! c & & s - > error )
@ -834,12 +842,13 @@ static int64_t read_line_to_bprint(AVIOContext *s, AVBPrint *bp)
return read ;
}
int64_t ff_read_line_to_bprint_overwrite ( AVIOContext * s , AVBPrint * bp )
static int64_t read_string_to_bprint_overwrite ( AVIOContext * s , AVBPrint * bp ,
FFBPrintReadStringMode mode )
{
int64_t ret ;
av_bprint_clear ( bp ) ;
ret = read_line _to_bprint ( s , bp ) ;
ret = read_string _to_bprint ( s , bp , mode ) ;
if ( ret < 0 )
return ret ;
@ -849,6 +858,11 @@ int64_t ff_read_line_to_bprint_overwrite(AVIOContext *s, AVBPrint *bp)
return bp - > len ;
}
int64_t ff_read_line_to_bprint_overwrite ( AVIOContext * s , AVBPrint * bp )
{
return read_string_to_bprint_overwrite ( s , bp , FFBPrintReadLine ) ;
}
int avio_get_str ( AVIOContext * s , int maxlen , char * buf , int buflen )
{
int i ;