X-Git-Url: http://git.draconx.ca/gitweb/upkg.git/blobdiff_plain/40a37fe8b53386add565d0e9a631928869d059a2..82c24245034226967611c9d2c4f6f04b4f9db6cc:/src/libupkg.c diff --git a/src/libupkg.c b/src/libupkg.c index f2addc9..8072516 100644 --- a/src/libupkg.c +++ b/src/libupkg.c @@ -474,8 +474,13 @@ int upkg_export_seek(struct upkg_file *f, long offset, int whence) break; } - if (rc == 0) + if (rc == 0) { f->pkg->priv->last_file = f; + f->eof = 0; + } else if (f->pkg->priv->last_file == f) { + f->pkg->priv->last_file = NULL; + } + return rc; } @@ -495,5 +500,8 @@ size_t upkg_export_read(struct upkg_file *f, void *buf, size_t n) rc = fread(buf, 1, want, f->pkg->priv->f); f->offset += rc; + + if (want < n || rc < want && feof(f->pkg->priv->f)) + f->eof = 1; return rc; }