43 std::string
const & uncompressedfile,
55 string compressed = uncompressedfile +
".gz";
56 string resolved_compressed = compressed;
60 boinc::resolve_filename( resolved_compressed );
64 cout <<
"WARNING! attempt to gzip file " << uncompressedfile <<
" failed: already has .gz suffix -- unchanged." << endl;
65 cerr <<
"WARNING! attempt to gzip file " << uncompressedfile <<
" failed: already has .gz suffix -- unchanged." << endl;
70 if ( !overwrite &&
file_exists( resolved_compressed ) ) {
71 cout <<
"WARNING! attempt to gzip file " << uncompressedfile <<
" failed: file " << resolved_compressed <<
" already exists." << endl;
72 cerr <<
"WARNING! attempt to gzip file " << uncompressedfile <<
" failed: file " << resolved_compressed <<
" already exists." << endl;
78 cout <<
"WARNING! attempt to gzip file " << uncompressedfile <<
" failed: file does not exist." << endl;
79 cerr <<
"WARNING! attempt to gzip file " << uncompressedfile <<
" failed: file does not exist." << endl;
87 cout <<
"WARNING! attempt to gzip file " << uncompressedfile <<
" failed: cannot read file." << endl;
88 cerr <<
"WARNING! attempt to gzip file " << uncompressedfile <<
" failed: cannot read file." << endl;
96 ozstream zf_stream( compressed );
97 if ( !zf_stream || zf_stream.uncompressed() ) {
98 cout <<
"WARNING! attempt to create gzipped file " << resolved_compressed <<
" failed." << endl;
99 cerr <<
"WARNING! attempt to create gzipped file " << resolved_compressed <<
" failed." << endl;
106 zf_stream << f_stream.
rdbuf();
107 if ( zf_stream().fail() ) {
108 cout <<
"WARNING! cannot write gzipped stream to file " << resolved_compressed << endl;
109 cerr <<
"WARNING! cannot write gzipped stream to file " << resolved_compressed << endl;
118 long in_size = zf_stream.get_in_size();
119 long out_size = zf_stream.get_out_size();
120 long crc = zf_stream.get_crc();
121 long uncompressedfile_size =
file_size( uncompressedfile );
124 if ( in_size && out_size && crc && in_size == uncompressedfile_size ) {
127 cout <<
"WARNING! error deleting file " << uncompressedfile << endl;
128 cerr <<
"WARNING! error deleting file " << uncompressedfile << endl;
132 cout <<
"WARNING! gzip failed to create file " << resolved_compressed << endl;
140 std::string
const & compressedfile,
154 cout <<
"WARNING! attempt to gunzip file " << compressedfile <<
" failed: unknown suffix -- ignored." << endl;
155 cerr <<
"WARNING! attempt to gunzip file " << compressedfile <<
" failed: unknown suffix -- ignored." << endl;
160 string uncompressed( compressedfile );
161 uncompressed.replace( uncompressed.rfind(
".gz", uncompressed.length()), 3,
"" );
162 string resolved_uncompressed( uncompressed );
166 boinc::resolve_filename( resolved_uncompressed );
170 if ( !overwrite &&
file_exists( resolved_uncompressed ) ) {
171 cout <<
"WARNING! attempt to gunzip file " << compressedfile <<
" failed: file " << resolved_uncompressed <<
" already exists." << std::endl;
172 cerr <<
"WARNING! attempt to gunzip file " << compressedfile <<
" failed: file " << resolved_uncompressed <<
" already exists." << std::endl;
178 cout <<
"WARNING! attempt to gzip file " << compressedfile <<
" failed: file does not exist." << endl;
179 cerr <<
"WARNING! attempt to gzip file " << compressedfile <<
" failed: file does not exist." << endl;
184 izstream zf_stream( compressedfile );
186 cout <<
"WARNING! attempt to gunzip file " << compressedfile <<
" failed: cannot read file." << endl;
187 cerr <<
"WARNING! attempt to gunzip file " << compressedfile <<
" failed: cannot read file." << endl;
191 if ( !zf_stream.is_gzip() ) {
192 cout <<
"WARNING! attempt to gunzip file " << compressedfile <<
" failed: unknown file type." << endl;
193 cerr <<
"WARNING! attempt to gunzip file " << compressedfile <<
" failed: unknown file type." << endl;
203 cout <<
"WARNING! attempt to create unzipped file " << uncompressed <<
" failed." << endl;
204 cerr <<
"WARNING! attempt to create unzipped file " << uncompressed <<
" failed." << endl;
208 o_stream << zf_stream.
rdbuf();
209 if ( o_stream.fail() ) {
210 cout <<
"WARNING! cannot write gunzipped stream to file " << resolved_uncompressed << endl;
211 cerr <<
"WARNING! cannot write gunzipped stream to file " << resolved_uncompressed << endl;
217 long in_size = zf_stream.get_in_size();
218 long out_size = zf_stream.get_out_size();
219 long crc = zf_stream.get_crc();
222 if ( in_size && out_size && crc ) {
225 cout <<
"WARNING! error deleting file " << compressedfile << endl;
226 cerr <<
"WARNING! error deleting file " << compressedfile << endl;
230 cout <<
"WARNING! gunzip failed to create file " << resolved_uncompressed << endl;
231 cerr <<
"WARNING! gunzip failed to create file " << resolved_uncompressed << endl;
ocstream cerr(std::cerr)
Wrapper around std::cerr.
Wrappers to make BOINC work.
Platform independent operations on files (except I/O)
bool trytry_ofstream_open(std::ofstream &ofstream_, std::string const &name, std::ios_base::openmode open_mode)
Try to open file a few times just in case it is locked (from BOINC LIB)
long gzip(std::string const &uncompressedfile, bool overwrite)
gzip: file compression
long file_size(std::string const &filename)
Platform independent way of getting file size.
izstream: Input file stream wrapper for uncompressed and compressed files
Input file stream wrapper for uncompressed and compressed files.
std::string file_extension(std::string const &filename)
Extension of a File Name.
int file_delete(std::string const &path)
Delete File.
Output file stream wrapper for uncompressed and compressed files.
std::streambuf * rdbuf() const
Pointer to the stream buffer.
bool trytry_ifstream_open(std::ifstream &ifstream_, std::string const &name, std::ios_base::openmode open_mode)
Try to open file a few times just in case it is locked (from BOINC LIB)
ocstream cout(std::cout)
Wrapper around std::cout.
long gunzip(std::string const &compressedfile, bool overwrite)
gunzip: file decompression
bool file_exists(std::string const &path)
Does File Exist?
ozstream: Output file stream wrapper for uncompressed and compressed files