diff options
Diffstat (limited to 'src/boost/libs/crc/crc_example.cpp')
-rw-r--r-- | src/boost/libs/crc/crc_example.cpp | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/src/boost/libs/crc/crc_example.cpp b/src/boost/libs/crc/crc_example.cpp new file mode 100644 index 00000000..a40e61d1 --- /dev/null +++ b/src/boost/libs/crc/crc_example.cpp @@ -0,0 +1,75 @@ +// Boost CRC example program file ------------------------------------------// + +// Copyright 2003 Daryle Walker. Use, modification, and distribution are +// subject to the Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or a copy at <http://www.boost.org/LICENSE_1_0.txt>.) + +// See <http://www.boost.org/libs/crc/> for the library's home page. + +// Revision History +// 17 Jun 2003 Initial version (Daryle Walker) + +#include <boost/crc.hpp> // for boost::crc_32_type + +#include <cstdlib> // for EXIT_SUCCESS, EXIT_FAILURE +#include <exception> // for std::exception +#include <fstream> // for std::ifstream +#include <ios> // for std::ios_base, etc. +#include <iostream> // for std::cerr, std::cout +#include <ostream> // for std::endl + + +// Redefine this to change to processing buffer size +#ifndef PRIVATE_BUFFER_SIZE +#define PRIVATE_BUFFER_SIZE 1024 +#endif + +// Global objects +std::streamsize const buffer_size = PRIVATE_BUFFER_SIZE; + + +// Main program +int +main +( + int argc, + char const * argv[] +) +try +{ + boost::crc_32_type result; + + for ( int i = 1 ; i < argc ; ++i ) + { + std::ifstream ifs( argv[i], std::ios_base::binary ); + + if ( ifs ) + { + do + { + char buffer[ buffer_size ]; + + ifs.read( buffer, buffer_size ); + result.process_bytes( buffer, ifs.gcount() ); + } while ( ifs ); + } + else + { + std::cerr << "Failed to open file '" << argv[i] << "'." + << std::endl; + } + } + + std::cout << std::hex << std::uppercase << result.checksum() << std::endl; + return EXIT_SUCCESS; +} +catch ( std::exception &e ) +{ + std::cerr << "Found an exception with '" << e.what() << "'." << std::endl; + return EXIT_FAILURE; +} +catch ( ... ) +{ + std::cerr << "Found an unknown exception." << std::endl; + return EXIT_FAILURE; +} |