diff options
author | Tim Kientzle <kientzle@gmail.com> | 2010-02-21 03:25:42 -0500 |
---|---|---|
committer | Tim Kientzle <kientzle@gmail.com> | 2010-02-21 03:25:42 -0500 |
commit | 992610f1dd74565cda8df166f70f0d8abf4abda7 (patch) | |
tree | 08da3d98240104f98ec0fb50cd6ac5a7c349cc20 /libarchive/archive_write_add_filter_program.c | |
parent | 0eb2fe95fbb65e82759f9fd1a0aef553981cae74 (diff) | |
download | libarchive-992610f1dd74565cda8df166f70f0d8abf4abda7.tar.gz |
The only place blocking is really needed is just before calling
the client write functions. So I've moved all of the blocking
code (that used to be duplicated in every compression filter)
into archive_write.c in the code that wraps the client callbacks.
As a result, add_filter_none is a true no-op.
SVN-Revision: 1936
Diffstat (limited to 'libarchive/archive_write_add_filter_program.c')
-rw-r--r-- | libarchive/archive_write_add_filter_program.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/libarchive/archive_write_add_filter_program.c b/libarchive/archive_write_add_filter_program.c index 0efeb7c4..90c5f11d 100644 --- a/libarchive/archive_write_add_filter_program.c +++ b/libarchive/archive_write_add_filter_program.c @@ -259,7 +259,7 @@ static int archive_compressor_program_close(struct archive_write_filter *f) { struct private_data *data = (struct private_data *)f->data; - int ret, status; + int ret, r1, status; ssize_t bytes_read; ret = 0; @@ -308,7 +308,8 @@ cleanup: "Filter exited with failure."); ret = ARCHIVE_FATAL; } - return (ret); + r1 = __archive_write_close_filter(f->next_filter); + return (r1 < ret ? r1 : ret); } static int |