From: Tilman Sauerbeck Date: Wed, 8 Nov 2006 19:35:33 +0000 (+0100) Subject: Use archive_errno() instead of errno for libarchive errors. X-Git-Url: http://gitweb/?a=commitdiff_plain;h=25f9975ca5d5010bd4f5cbfbb9faa1fed71b3db4;p=pkgutils-cross.git Use archive_errno() instead of errno for libarchive errors. --- diff --git a/pkgutil.cc b/pkgutil.cc index 39f68f5..1354365 100644 --- a/pkgutil.cc +++ b/pkgutil.cc @@ -349,7 +349,7 @@ pair pkgutil::pkg_open(const string& filename) const if (archive_read_open_filename(archive, const_cast(filename.c_str()), ARCHIVE_DEFAULT_BYTES_PER_BLOCK) != ARCHIVE_OK) - throw runtime_error_with_errno("could not open " + filename); + throw runtime_error_with_errno("could not open " + filename, archive_errno(archive)); for (i = 0; archive_read_next_header(archive, &entry) == ARCHIVE_OK; ++i) { @@ -362,7 +362,7 @@ pair pkgutil::pkg_open(const string& filename) const if (S_ISREG(status->st_mode) && archive_read_data_skip(archive) != ARCHIVE_OK) - throw runtime_error_with_errno("could not read " + filename); + throw runtime_error_with_errno("could not read " + filename, archive_errno(archive)); } if (i == 0) { @@ -390,7 +390,7 @@ void pkgutil::pkg_install(const string& filename, const set& keep_list, if (archive_read_open_filename(archive, const_cast(filename.c_str()), ARCHIVE_DEFAULT_BYTES_PER_BLOCK) != ARCHIVE_OK) - throw runtime_error_with_errno("could not open " + filename); + throw runtime_error_with_errno("could not open " + filename, archive_errno(archive)); chdir(root.c_str()); @@ -499,7 +499,7 @@ void pkgutil::pkg_footprint(string& filename) const if (archive_read_open_filename(archive, const_cast(filename.c_str()), ARCHIVE_DEFAULT_BYTES_PER_BLOCK) != ARCHIVE_OK) - throw runtime_error_with_errno("could not open " + filename); + throw runtime_error_with_errno("could not open " + filename, archive_errno(archive)); for (i = 0; archive_read_next_header(archive, &entry) == ARCHIVE_OK; ++i) { @@ -559,7 +559,7 @@ void pkgutil::pkg_footprint(string& filename) const if (S_ISREG(status->st_mode) && archive_read_data_skip(archive)) - throw runtime_error_with_errno("could not read " + filename); + throw runtime_error_with_errno("could not read " + filename, archive_errno(archive)); } if (i == 0) { diff --git a/pkgutil.h b/pkgutil.h index 4c74de5..03409df 100644 --- a/pkgutil.h +++ b/pkgutil.h @@ -91,6 +91,8 @@ class runtime_error_with_errno : public runtime_error { public: explicit runtime_error_with_errno(const string& msg) throw() : runtime_error(msg + string(": ") + strerror(errno)) {} + explicit runtime_error_with_errno(const string& msg, int e) throw() + : runtime_error(msg + string(": ") + strerror(e)) {} }; // Utility functions