123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- // 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;
- }
|