1 #include <ail/bzip2.hpp>
5 bzip2_reader::bzip2_reader():
10 bzip2_reader::bzip2_reader(std::string
const & file_name
)
15 bzip2_reader::~bzip2_reader()
21 ::BZ2_bzReadClose(&bz_error
, bz_file
);
25 bool bzip2_reader::open(std::string
const & file_name
)
28 file
= ::fopen(file_name
.c_str(), "rb");
31 bz_file
= ::BZ2_bzReadOpen(&bz_error
, file
, 0, 0, 0, 0);
35 ::BZ2_bzReadClose(&bz_error
, bz_file
);
41 bool bzip2_reader::read(std::string
& buffer
)
43 std::size_t const buffer_size
= 16 * 1024;
44 char in_buffer
[buffer_size
];
46 int bytes_read
= ::BZ2_bzRead(&bz_error
, bz_file
, in_buffer
, static_cast<int>(buffer_size
));
50 new_data
.assign(in_buffer
, static_cast<std::size_t>(bytes_read
));
55 bool decompress_bzip2(std::string
const & file_name
, std::string
& output
)
58 if(!reader
.open(file_name
))
60 while(reader
.read(output
));