summaryrefslogtreecommitdiffstats
path: root/libarchive/archive_write_set_options.c
diff options
context:
space:
mode:
authorLibArchive Upstream <libarchive-discuss@googlegroups.com>2013-02-09 17:17:57 (GMT)
committerBrad King <brad.king@kitware.com>2013-07-26 19:45:29 (GMT)
commit35df7c8ba8854e97bd6994c4d1143f57535ed6f2 (patch)
tree53b9fc3871ba5fc74dcea98173cd05311704ddfc /libarchive/archive_write_set_options.c
parent4f4fe6e50bb3dbe59f9bc3cc848cbd07dead324d (diff)
downloadCMake-35df7c8ba8854e97bd6994c4d1143f57535ed6f2.zip
CMake-35df7c8ba8854e97bd6994c4d1143f57535ed6f2.tar.gz
CMake-35df7c8ba8854e97bd6994c4d1143f57535ed6f2.tar.bz2
libarchive 3.1.2 (reduced)
Extract upstream libarchive using the following shell code. url=git://github.com/libarchive/libarchive.git && v=3.1.2 && r=19f23e19 && paths=" CMakeLists.txt COPYING CTestConfig.cmake build/cmake build/pkgconfig build/utils build/version libarchive/*.* " && mkdir libarchive-$v-g$r-reduced && git clone $url libarchive-git && date=$(cd libarchive-git && git log -n 1 --format='%cd' $r) && (cd libarchive-git && git archive --format=tar $r -- $paths) | (cd libarchive-$v-g$r-reduced && tar xv) && fromdos libarchive-$v-g$r-reduced/build/cmake/Find*.cmake && echo "g$r date: $date"
Diffstat (limited to 'libarchive/archive_write_set_options.c')
-rw-r--r--libarchive/archive_write_set_options.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/libarchive/archive_write_set_options.c b/libarchive/archive_write_set_options.c
index a8c2d23..962309a 100644
--- a/libarchive/archive_write_set_options.c
+++ b/libarchive/archive_write_set_options.c
@@ -78,11 +78,13 @@ archive_set_format_option(struct archive *_a, const char *m, const char *o,
struct archive_write *a = (struct archive_write *)_a;
if (a->format_name == NULL)
- return (ARCHIVE_FAILED);
+ return (m == NULL)?ARCHIVE_FAILED:ARCHIVE_WARN - 1;
+ /* If the format name didn't match, return a special code for
+ * _archive_set_option[s]. */
if (m != NULL && strcmp(m, a->format_name) != 0)
- return (ARCHIVE_FAILED);
+ return (ARCHIVE_WARN - 1);
if (a->format_options == NULL)
- return (ARCHIVE_FAILED);
+ return (ARCHIVE_WARN);
return a->format_options(a, o, v);
}
@@ -92,7 +94,7 @@ archive_set_filter_option(struct archive *_a, const char *m, const char *o,
{
struct archive_write *a = (struct archive_write *)_a;
struct archive_write_filter *filter;
- int r, rv = ARCHIVE_FAILED;
+ int r, rv = ARCHIVE_WARN;
for (filter = a->filter_first; filter != NULL; filter = filter->next_filter) {
if (filter->options == NULL)
@@ -111,6 +113,10 @@ archive_set_filter_option(struct archive *_a, const char *m, const char *o,
if (r == ARCHIVE_OK)
rv = ARCHIVE_OK;
}
+ /* If the filter name didn't match, return a special code for
+ * _archive_set_option[s]. */
+ if (rv == ARCHIVE_WARN && m != NULL)
+ rv = ARCHIVE_WARN - 1;
return (rv);
}