| 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(argv[0]);
|
|---|
| 16 | return 1;
|
|---|
| 17 | }
|
|---|
| 18 | std::filebuf fb;
|
|---|
| 19 | fb.open(
|
|---|
| 20 | argv[1],
|
|---|
| 21 | 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(26, std::ios_base::out);
|
|---|
| 35 | fb.sputn(reinterpret_cast<const char *>(& lvt), sizeof(lvt));
|
|---|
| 36 | fb.close();
|
|---|
| 37 | }
|
|---|