| 1 | #include <fstream> |
|---|---|
| 2 | #include <ios> |
| 3 | #include <iostream> |
| 4 | #include <boost/integer_traits.hpp> |
| 5 | #include <boost/archive/binary_iarchive.hpp> |
| 6 | |
| 7 | void usage(const char * program_name){ |
| 8 | std::cout << "usage:"; |
| 9 | std::cout << program_name << " filename"<< std::endl; |
| 10 | } |
| 11 | |
| 12 | int main(int argc, char *argv[]){ |
| 13 | if(argc != 2){ |
| 14 | std::cout << "invalid number of arguments"<< std::endl; |
| 15 | usage(program_name: argv[0]); |
| 16 | return 1; |
| 17 | } |
| 18 | std::filebuf fb; |
| 19 | fb.open( |
| 20 | s: argv[1], |
| 21 | mode: std::ios_base::binary | std::ios_base::in | std::ios_base::out |
| 22 | ); |
| 23 | if(!fb.is_open()){ |
| 24 | std::cout << argv[1] << " failed to open"<< std::endl; |
| 25 | return 1; |
| 26 | } |
| 27 | boost::archive::binary_iarchive ia(fb); |
| 28 | boost::archive::library_version_type lvt = ia.get_library_version(); |
| 29 | if(boost::archive::library_version_type(6) != lvt){ |
| 30 | std::cout << "library version not equal to six"<< std::endl; |
| 31 | return 1; |
| 32 | } |
| 33 | lvt = boost::archive::library_version_type(7); |
| 34 | fb.pubseekpos(sp: 26, mode: std::ios_base::out); |
| 35 | fb.sputn(s: reinterpret_cast<const char *>(& lvt), n: sizeof(lvt)); |
| 36 | fb.close(); |
| 37 | } |
| 38 |
