76 lines
1.9 KiB
C++
76 lines
1.9 KiB
C++
|
// 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;
|
||
|
}
|