| #include <fstream> |
| #include <ios> |
| #include <iostream> |
| #include <boost/integer_traits.hpp> |
| #include <boost/archive/binary_iarchive.hpp> |
| |
| void usage(const char * program_name){ |
| std::cout << "usage:"; |
| std::cout << program_name << " filename" << std::endl; |
| } |
| |
| int main(int argc, char *argv[]){ |
| if(argc != 2){ |
| std::cout << "invalid number of arguments" << std::endl; |
| usage(argv[0]); |
| return 1; |
| } |
| std::filebuf fb; |
| fb.open( |
| argv[1], |
| std::ios_base::binary | std::ios_base::in | std::ios_base::out |
| ); |
| if(!fb.is_open()){ |
| std::cout << argv[1] << " failed to open" << std::endl; |
| return 1; |
| } |
| boost::archive::binary_iarchive ia(fb); |
| boost::archive::library_version_type lvt = ia.get_library_version(); |
| if(boost::archive::library_version_type(6) != lvt){ |
| std::cout << "library version not equal to six" << std::endl; |
| return 1; |
| } |
| lvt = boost::archive::library_version_type(7); |
| fb.pubseekpos(26, std::ios_base::out); |
| fb.sputn(reinterpret_cast<const char *>(& lvt), sizeof(lvt)); |
| fb.close(); |
| } |