
Author: ods15 Date: Fri Nov 17 18:21:40 2006 New Revision: 226 Modified: trunk/libnut/demuxer.c Log: Some EAGAIN fixes Modified: trunk/libnut/demuxer.c ============================================================================== --- trunk/libnut/demuxer.c (original) +++ trunk/libnut/demuxer.c Fri Nov 17 18:21:40 2006 @@ -792,8 +792,6 @@ uint64_t tmp; off_t ptr = 0; assert(!backwards || !stop); // can't have both - - if (backwards) seek_buf(nut->i, -nut->max_distance, SEEK_CUR); retry: read = nut->max_distance; if (stop) read = MIN(read, stop - bctello(nut->i)); @@ -978,7 +976,7 @@ // find last syncpoint if it's not already found if (!sl->s[sl->len-1].seen_next) { // searching bakwards from EOF - if (!nut->seek_status) seek_buf(nut->i, 0, SEEK_END); + if (!nut->seek_status) seek_buf(nut->i, -nut->max_distance, SEEK_END); nut->seek_status = 1; CHECK(find_syncpoint(nut, 1, &s, 0)); CHECK(add_syncpoint(nut, s, NULL, NULL, &i)); @@ -1080,6 +1078,7 @@ *end = sl->s[i+1].pos; *stopper = sl->s[i+1]; err_out: + if (err == NUT_ERR_EAGAIN) nut->i->buf_ptr = nut->i->buf; return err; }