From e3b075090db02132b94ebb3432f539157c20caef Mon Sep 17 00:00:00 2001 From: Mark Spruiell Date: Thu, 23 Oct 2003 20:07:31 +0000 Subject: handle missing classes; bug fixes; clean up --- cpp/src/Transform/TransformDB.cpp | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) (limited to 'cpp/src/Transform/TransformDB.cpp') diff --git a/cpp/src/Transform/TransformDB.cpp b/cpp/src/Transform/TransformDB.cpp index 5fd6e75fa77..3bf321b57c8 100644 --- a/cpp/src/Transform/TransformDB.cpp +++ b/cpp/src/Transform/TransformDB.cpp @@ -45,6 +45,7 @@ usage(const char* n) "-o FILE Output transformation descriptors into the file FILE.\n" " Database transformation is not performed.\n" "-i Ignore incompatible type changes.\n" + "-p Purge objects whose types no longer exist.\n" "-f FILE Execute the transformation descriptors in the file FILE.\n" " Database transformation is not performed.\n" "--old SLICE Load old Slice definitions from the file SLICE.\n" @@ -107,6 +108,7 @@ run(int argc, char** argv, const Ice::CommunicatorPtr& communicator) bool caseSensitive = false; string outputFile; bool ignoreTypeChanges = false; + bool purgeObjects = false; string inputFile; vector oldSlice; vector newSlice; @@ -209,6 +211,15 @@ run(int argc, char** argv, const Ice::CommunicatorPtr& communicator) } --argc; } + else if(strcmp(argv[idx], "-p") == 0) + { + purgeObjects = true; + for(int i = idx ; i + 1 < argc ; ++i) + { + argv[i] = argv[i + 1]; + } + --argc; + } else if(strcmp(argv[idx], "-f") == 0) { if(idx + 1 >= argc || argv[idx + 1][0] == '-') @@ -351,7 +362,7 @@ run(int argc, char** argv, const Ice::CommunicatorPtr& communicator) // // Create the Transformer. // - Transform::Transformer transformer(communicator, oldUnit, newUnit, ignoreTypeChanges); + Transform::Transformer transformer(communicator, oldUnit, newUnit, ignoreTypeChanges, purgeObjects); // // If no input file was provided, then we need to analyze the Slice types. @@ -492,7 +503,7 @@ run(int argc, char** argv, const Ice::CommunicatorPtr& communicator) db = new Db(&dbEnv, 0); db->open(0, dbName.c_str(), 0, DB_BTREE, DB_RDONLY, TRANSFORM_DB_MODE); dbNew = new Db(&dbEnv, 0); - dbNew->open(0, dbNameNew.c_str(), 0, DB_BTREE, DB_CREATE | DB_TRUNCATE, TRANSFORM_DB_MODE); + dbNew->open(0, dbNameNew.c_str(), 0, DB_BTREE, DB_CREATE | DB_EXCL, TRANSFORM_DB_MODE); istringstream istr(descriptors); transformer.transform(istr, db, dbNew, cerr); -- cgit v1.2.3