summaryrefslogtreecommitdiff
path: root/cpp/src/Transform/TransformDB.cpp
diff options
context:
space:
mode:
authorMark Spruiell <mes@zeroc.com>2003-10-23 20:07:31 +0000
committerMark Spruiell <mes@zeroc.com>2003-10-23 20:07:31 +0000
commite3b075090db02132b94ebb3432f539157c20caef (patch)
tree24d5dcead61974cd4906301c1d5bf8fb4550ec38 /cpp/src/Transform/TransformDB.cpp
parentfix (diff)
downloadice-e3b075090db02132b94ebb3432f539157c20caef.tar.bz2
ice-e3b075090db02132b94ebb3432f539157c20caef.tar.xz
ice-e3b075090db02132b94ebb3432f539157c20caef.zip
handle missing classes; bug fixes; clean up
Diffstat (limited to 'cpp/src/Transform/TransformDB.cpp')
-rw-r--r--cpp/src/Transform/TransformDB.cpp15
1 files changed, 13 insertions, 2 deletions
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<string> oldSlice;
vector<string> 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);