Re: [libdvdcss-devel] Patches for libdvdcss
Evgeny Grin <[email protected]> Tue, 18 Nov 2014 02:02:51 +0300
| Newsgroups | gmane.comp.video.videolan.libdvdcss,gmane.comp.video.videolan.libdvdcss.devel |
|---|---|
| Message-ID | <CAHn_EnH+UNLdUJzBkzjVqXu_BZhViCKeUQ8gxZeR8L54SGLa-Q@mail.gmail.com> |
OK. Is it acceptable? Can't send by git send-email (not working on win32) From d1f857ab8ab811a4d63907a8805ad42fea170bb1 Mon Sep 17 00:00:00 2001 From: Evgeny Grin <[email protected]> Date: Tue, 18 Nov 2014 00:51:44 +0300 Subject: [PATCH 1/2] fix position after partial read in libc_read --- src/device.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/device.c b/src/device.c index da4ecc4..94f448d 100644 --- a/src/device.c +++ b/src/device.c @@ -570,10 +570,11 @@ static int libc_read ( dvdcss_t dvdcss, void *p_buffer, int i_blocks ) /* Handle partial reads */ if( i_ret != i_size ) { - int i_seek; + int i_seek, i_set_pos; + i_set_pos = dvdcss->i_pos + i_ret_blocks; dvdcss->i_pos = -1; - i_seek = libc_seek( dvdcss, i_ret_blocks ); + i_seek = libc_seek( dvdcss, i_set_pos ); if( i_seek < 0 ) { return i_seek; -- 2.1.0.9738.g8768113 From e68bdef901ce2c7f52f0912edb822d3e3a1c8c6d Mon Sep 17 00:00:00 2001 From: Evgeny Grin <[email protected]> Date: Tue, 18 Nov 2014 01:09:12 +0300 Subject: [PATCH 2/2] better handle partial read in libc_read --- src/device.c | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/src/device.c b/src/device.c index 94f448d..ef26768 100644 --- a/src/device.c +++ b/src/device.c @@ -556,13 +556,23 @@ static int libc_read ( dvdcss_t dvdcss, void *p_buffer, int i_blocks ) ssize_t i_size, i_ret, i_ret_blocks; i_size = i_blocks * DVDCSS_BLOCK_SIZE; - i_ret = read( dvdcss->i_fd, p_buffer, i_size ); + i_ret = 0; - if( i_ret < 0 ) + while( i_ret < i_size ) { - print_error( dvdcss, "read error" ); - dvdcss->i_pos = -1; - return i_ret; + ssize_t i_r; + + i_r = read( dvdcss->i_read_fd, ((char*)p_buffer) + i_ret, i_size - i_ret ); + if( i_r < 0 ) + { + print_error( dvdcss, "read error" ); + dvdcss->i_pos = -1; + return i_r; + } + if( i_r == 0 ) + break; + + i_ret += i_r; } i_ret_blocks = i_ret / DVDCSS_BLOCK_SIZE; -- 2.1.0.9738.g8768113 On 18 November 2014 01:34, Diego Biurrun <[email protected]> wrote: > These are not the type of Git patch we are looking for. Properly commit > your changes and use git-format-patch or git-send-email please, not just > git-diff. > > On Tue, Nov 18, 2014 at 01:22:11AM +0300, Evgeny Grin wrote: > > No problem: > > > > fix position after partial read in libc_read > > > > diff --git a/src/device.c b/src/device.c > > index da4ecc4..94f448d 100644 > > --- a/src/device.c > > +++ b/src/device.c > > @@ -570,10 +570,11 @@ static int libc_read ( dvdcss_t dvdcss, void > *p_buffer, int i_blocks ) > > /* Handle partial reads */ > > if( i_ret != i_size ) > > { > > - int i_seek; > > + int i_seek, i_set_pos; > > > > + i_set_pos = dvdcss->i_pos + i_ret_blocks; > > dvdcss->i_pos = -1; > > - i_seek = libc_seek( dvdcss, i_ret_blocks ); > > + i_seek = libc_seek( dvdcss, i_set_pos ); > > if( i_seek < 0 ) > > { > > return i_seek; > > > > fix position after partial read in libc_read > > > > diff --git a/src/device.c b/src/device.c > > index 94f448d..ef26768 100644 > > --- a/src/device.c > > +++ b/src/device.c > > @@ -556,13 +556,23 @@ static int libc_read ( dvdcss_t dvdcss, void > *p_buffer, int i_blocks ) > > ssize_t i_size, i_ret, i_ret_blocks; > > > > i_size = i_blocks * DVDCSS_BLOCK_SIZE; > > - i_ret = read( dvdcss->i_fd, p_buffer, i_size ); > > + i_ret = 0; > > > > - if( i_ret < 0 ) > > + while( i_ret < i_size ) > > { > > - print_error( dvdcss, "read error" ); > > - dvdcss->i_pos = -1; > > - return i_ret; > > + ssize_t i_r; > > + > > + i_r = read( dvdcss->i_read_fd, ((char*)p_buffer) + i_ret, > i_size - i_ret ); > > + if( i_r < 0 ) > > + { > > + print_error( dvdcss, "read error" ); > > + dvdcss->i_pos = -1; > > + return i_r; > > + } > > + if( i_r == 0 ) > > + break; > > + > > + i_ret += i_r; > > } > > > > i_ret_blocks = i_ret / DVDCSS_BLOCK_SIZE; > > > > 18.11.2014, 00:04, "Diego Biurrun" <[email protected]>: > > > On Mon, Nov 17, 2014 at 11:42:43PM +0300, Evgeny Grin wrote: > > >> Here are the patches (made for 1.2.13, but applicable for latest > git master): > > > Please use Git to create patches, thank you. > > > > > > Diego > > > _______________________________________________ > > > libdvdcss-devel mailing list > > > [email protected] > > > https://mailman.videolan.org/listinfo/libdvdcss-devel > > -------- Завершение пересылаемого сообщения -------- > > > > -- > > Best Wishes, > > Evgeny Grin > > _______________________________________________ > > libdvdcss-devel mailing list > > [email protected] > > https://mailman.videolan.org/listinfo/libdvdcss-devel > _______________________________________________ > libdvdcss-devel mailing list > [email protected] > https://mailman.videolan.org/listinfo/libdvdcss-devel > _______________________________________________ libdvdcss-devel mailing list [email protected] https://mailman.videolan.org/listinfo/libdvdcss-devel