summaryrefslogtreecommitdiffstats
path: root/src/boost/libs/serialization/example/fix_six.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/boost/libs/serialization/example/fix_six.cpp')
-rw-r--r--src/boost/libs/serialization/example/fix_six.cpp37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/boost/libs/serialization/example/fix_six.cpp b/src/boost/libs/serialization/example/fix_six.cpp
new file mode 100644
index 000000000..6526e1292
--- /dev/null
+++ b/src/boost/libs/serialization/example/fix_six.cpp
@@ -0,0 +1,37 @@
+#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();
+}