summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTilman Sauerbeck <tilman@crux.nu>2012-03-27 20:28:18 +0200
committerTilman Sauerbeck <tilman@crux.nu>2012-03-27 20:28:46 +0200
commitf30a8abd09ed6cb6db1446baae9538b30a072d1d (patch)
treed3c04936e444867edd12ffeb52aac435f194a14c
parent508581b16b2615ad6cdb506eb86238aac96659c3 (diff)
downloadpkgutils-f30a8abd09ed6cb6db1446baae9538b30a072d1d.tar.gz
pkgutils-f30a8abd09ed6cb6db1446baae9538b30a072d1d.tar.xz
Switched to libarchive 3.x.
-rw-r--r--pkgutil.cc32
1 files changed, 17 insertions, 15 deletions
diff --git a/pkgutil.cc b/pkgutil.cc
index f549b893..843c668f 100644
--- a/pkgutil.cc
+++ b/pkgutil.cc
@@ -44,11 +44,13 @@
#include <archive_entry.h>
#define INIT_ARCHIVE(ar) \
- archive_read_support_compression_gzip((ar)); \
- archive_read_support_compression_bzip2((ar)); \
- archive_read_support_compression_xz((ar)); \
+ archive_read_support_filter_gzip((ar)); \
+ archive_read_support_filter_bzip2((ar)); \
+ archive_read_support_filter_xz((ar)); \
archive_read_support_format_tar((ar))
+#define DEFAULT_BYTES_PER_BLOCK (20 * 512)
+
using __gnu_cxx::stdio_filebuf;
pkgutil::pkgutil(const string& name)
@@ -352,8 +354,8 @@ pair<string, pkgutil::pkginfo_t> pkgutil::pkg_open(const string& filename) const
INIT_ARCHIVE(archive);
if (archive_read_open_filename(archive,
- const_cast<char*>(filename.c_str()),
- ARCHIVE_DEFAULT_BYTES_PER_BLOCK) != ARCHIVE_OK)
+ filename.c_str(),
+ DEFAULT_BYTES_PER_BLOCK) != ARCHIVE_OK)
throw runtime_error_with_errno("could not open " + filename, archive_errno(archive));
for (i = 0; archive_read_next_header(archive, &entry) ==
@@ -376,7 +378,7 @@ pair<string, pkgutil::pkginfo_t> pkgutil::pkg_open(const string& filename) const
throw runtime_error("could not read " + filename);
}
- archive_read_finish(archive);
+ archive_read_free(archive);
return result;
}
@@ -393,8 +395,8 @@ void pkgutil::pkg_install(const string& filename, const set<string>& keep_list,
INIT_ARCHIVE(archive);
if (archive_read_open_filename(archive,
- const_cast<char*>(filename.c_str()),
- ARCHIVE_DEFAULT_BYTES_PER_BLOCK) != ARCHIVE_OK)
+ filename.c_str(),
+ DEFAULT_BYTES_PER_BLOCK) != ARCHIVE_OK)
throw runtime_error_with_errno("could not open " + filename, archive_errno(archive));
chdir(root.c_str());
@@ -467,7 +469,7 @@ void pkgutil::pkg_install(const string& filename, const set<string>& keep_list,
throw runtime_error("could not read " + filename);
}
- archive_read_finish(archive);
+ archive_read_free(archive);
}
void pkgutil::ldconfig() const
@@ -509,8 +511,8 @@ void pkgutil::pkg_footprint(string& filename) const
INIT_ARCHIVE(archive);
if (archive_read_open_filename(archive,
- const_cast<char*>(filename.c_str()),
- ARCHIVE_DEFAULT_BYTES_PER_BLOCK) != ARCHIVE_OK)
+ filename.c_str(),
+ DEFAULT_BYTES_PER_BLOCK) != ARCHIVE_OK)
throw runtime_error_with_errno("could not open " + filename, archive_errno(archive));
for (i = 0; archive_read_next_header(archive, &entry) ==
@@ -528,7 +530,7 @@ void pkgutil::pkg_footprint(string& filename) const
throw runtime_error_with_errno("could not read " + filename, archive_errno(archive));
}
- archive_read_finish(archive);
+ archive_read_free(archive);
// Too bad, there doesn't seem to be a way to reuse our archive
// instance
@@ -536,8 +538,8 @@ void pkgutil::pkg_footprint(string& filename) const
INIT_ARCHIVE(archive);
if (archive_read_open_filename(archive,
- const_cast<char*>(filename.c_str()),
- ARCHIVE_DEFAULT_BYTES_PER_BLOCK) != ARCHIVE_OK)
+ filename.c_str(),
+ DEFAULT_BYTES_PER_BLOCK) != ARCHIVE_OK)
throw runtime_error_with_errno("could not open " + filename, archive_errno(archive));
for (i = 0; archive_read_next_header(archive, &entry) ==
@@ -610,7 +612,7 @@ void pkgutil::pkg_footprint(string& filename) const
throw runtime_error("could not read " + filename);
}
- archive_read_finish(archive);
+ archive_read_free(archive);
}
void pkgutil::print_version() const

Generated by cgit