// // aegis - project change supervisor // Copyright (C) 2005, 2006, 2008 Peter Miller // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see // . // #include #include #include #include #include #include #include #include #include bool simple_version_tool::list(rfc822_functor &arg) { input in_u = new input_file(history_file_name, false, true); if (in_u->length() == 0) return true; input temp = input_gunzip_open(in_u); input in = input_bunzip2_open(temp); for (;;) { // // Read an RFC 822 header from the input. // rfc822 header; header.load(in); // // Pass the header to the given functor to do whatever it is // they want done with the meta-data. // Stop if they don't want to keep going. // if (!arg(header)) return false; // // Throw away the file contents. // // (Because we read the whole file, and the whole-file checksum // will be verified at the end of input, we don't need to check // the checksum for individual versions.) // long content_length = header.get_long("content-length"); output::pointer bb = output_bit_bucket::create(); input in2 = new input_crop(in, content_length); bb << in2; in2.close(); // // If there is no more input, we are done. // if (in->at_end()) break; } return true; }