diff options
Diffstat (limited to 'cpp/src/XMLTransform')
-rw-r--r-- | cpp/src/XMLTransform/.depend | 4 | ||||
-rw-r--r-- | cpp/src/XMLTransform/Makefile | 4 | ||||
-rw-r--r-- | cpp/src/XMLTransform/TransformDB.cpp | 97 | ||||
-rw-r--r-- | cpp/src/XMLTransform/XMLTransform.cpp | 135 | ||||
-rw-r--r-- | cpp/src/XMLTransform/xmltransform.dsp | 4 | ||||
-rw-r--r-- | cpp/src/XMLTransform/xmltransformC.dsp | 4 |
6 files changed, 122 insertions, 126 deletions
diff --git a/cpp/src/XMLTransform/.depend b/cpp/src/XMLTransform/.depend index 9e5c87f1736..2f8044b68a5 100644 --- a/cpp/src/XMLTransform/.depend +++ b/cpp/src/XMLTransform/.depend @@ -1,3 +1,3 @@ ErrorReporter.o: ErrorReporter.cpp ../../include/IceUtil/Config.h ../XMLTransform/ErrorReporter.h ../../include/Ice/Xerces.h -XMLTransform.o: XMLTransform.cpp ../../include/IceUtil/InputUtil.h ../../include/IceUtil/Config.h ../../include/Ice/Ice.h ../../include/Ice/Initialize.h ../../include/Ice/CommunicatorF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/Ice/Config.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/StreamF.h ../../include/Ice/PropertiesF.h ../../include/Ice/InstanceF.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Facet.h ../../include/Ice/Object.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/BasicStream.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/Buffer.h ../../include/Ice/Incoming.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/ServantManagerF.h ../../include/Ice/Direct.h ../../include/Ice/LocalException.h ../../include/Ice/Properties.h ../../include/Ice/Logger.h ../../include/Ice/LoggerUtil.h ../../include/Ice/LoggerF.h ../../include/Ice/Stats.h ../../include/Ice/Communicator.h ../../include/Ice/StatsF.h ../../include/Ice/RouterF.h ../../include/Ice/LocatorF.h ../../include/Ice/PluginF.h ../../include/Ice/ObjectFactory.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/ServantLocator.h ../../include/Ice/IdentityUtil.h ../../include/Ice/OutgoingAsync.h ../../include/Ice/IncomingAsync.h ../../include/Ice/Application.h ../../include/XMLTransform/XMLTransform.h ../../include/Freeze/DB.h ../../include/Freeze/DBException.h ../../include/Freeze/DBF.h ../../include/Freeze/EvictorF.h ../../include/Freeze/StrategyF.h ../../include/IceUtil/OutputUtil.h ../../include/Ice/Xerces.h ../XMLTransform/ErrorReporter.h -TransformDB.o: TransformDB.cpp ../../include/Ice/Ice.h ../../include/Ice/Initialize.h ../../include/Ice/CommunicatorF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/StreamF.h ../../include/Ice/PropertiesF.h ../../include/Ice/InstanceF.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Facet.h ../../include/Ice/Object.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/BasicStream.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/Buffer.h ../../include/Ice/Incoming.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/ServantManagerF.h ../../include/Ice/Direct.h ../../include/Ice/LocalException.h ../../include/Ice/Properties.h ../../include/Ice/Logger.h ../../include/Ice/LoggerUtil.h ../../include/Ice/LoggerF.h ../../include/Ice/Stats.h ../../include/Ice/Communicator.h ../../include/Ice/StatsF.h ../../include/Ice/RouterF.h ../../include/Ice/LocatorF.h ../../include/Ice/PluginF.h ../../include/Ice/ObjectFactory.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/ServantLocator.h ../../include/Ice/IdentityUtil.h ../../include/Ice/OutgoingAsync.h ../../include/Ice/IncomingAsync.h ../../include/Ice/Application.h ../../include/XMLTransform/XMLTransform.h ../../include/Freeze/DB.h ../../include/Freeze/DBException.h ../../include/Freeze/DBF.h ../../include/Freeze/EvictorF.h ../../include/Freeze/StrategyF.h ../../include/IceUtil/OutputUtil.h ../../include/Ice/Xerces.h ../../include/Freeze/Freeze.h ../../include/Freeze/Initialize.h ../../include/Freeze/Evictor.h ../../include/Freeze/ObjectRecord.h ../../include/Freeze/Strategy.h ../../include/Freeze/Map.h +XMLTransform.o: XMLTransform.cpp ../../include/IceUtil/InputUtil.h ../../include/IceUtil/Config.h ../../include/Ice/Ice.h ../../include/Ice/Initialize.h ../../include/Ice/CommunicatorF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/Ice/Config.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/StreamF.h ../../include/Ice/PropertiesF.h ../../include/Ice/InstanceF.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Facet.h ../../include/Ice/Object.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/BasicStream.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/Buffer.h ../../include/Ice/Incoming.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/ServantManagerF.h ../../include/Ice/Direct.h ../../include/Ice/LocalException.h ../../include/Ice/Properties.h ../../include/Ice/Logger.h ../../include/Ice/LoggerUtil.h ../../include/Ice/LoggerF.h ../../include/Ice/Stats.h ../../include/Ice/Communicator.h ../../include/Ice/StatsF.h ../../include/Ice/RouterF.h ../../include/Ice/LocatorF.h ../../include/Ice/PluginF.h ../../include/Ice/ObjectFactory.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/ServantLocator.h ../../include/Ice/IdentityUtil.h ../../include/Ice/OutgoingAsync.h ../../include/Ice/IncomingAsync.h ../../include/Ice/Application.h ../../include/XMLTransform/XMLTransform.h ../../include/IceUtil/OutputUtil.h ../../include/Ice/Xerces.h ../XMLTransform/ErrorReporter.h +TransformDB.o: TransformDB.cpp ../../include/Ice/Ice.h ../../include/Ice/Initialize.h ../../include/Ice/CommunicatorF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/StreamF.h ../../include/Ice/PropertiesF.h ../../include/Ice/InstanceF.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Facet.h ../../include/Ice/Object.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/BasicStream.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/Buffer.h ../../include/Ice/Incoming.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/ServantManagerF.h ../../include/Ice/Direct.h ../../include/Ice/LocalException.h ../../include/Ice/Properties.h ../../include/Ice/Logger.h ../../include/Ice/LoggerUtil.h ../../include/Ice/LoggerF.h ../../include/Ice/Stats.h ../../include/Ice/Communicator.h ../../include/Ice/StatsF.h ../../include/Ice/RouterF.h ../../include/Ice/LocatorF.h ../../include/Ice/PluginF.h ../../include/Ice/ObjectFactory.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/ServantLocator.h ../../include/Ice/IdentityUtil.h ../../include/Ice/OutgoingAsync.h ../../include/Ice/IncomingAsync.h ../../include/Ice/Application.h ../../include/XMLTransform/XMLTransform.h ../../include/IceUtil/OutputUtil.h ../../include/Ice/Xerces.h diff --git a/cpp/src/XMLTransform/Makefile b/cpp/src/XMLTransform/Makefile index 63cd4ddb048..52f40ab5f91 100644 --- a/cpp/src/XMLTransform/Makefile +++ b/cpp/src/XMLTransform/Makefile @@ -35,7 +35,7 @@ SDIR = $(slicedir)/XMLTransform include $(top_srcdir)/config/Make.rules -CPPFLAGS := -I.. $(CPPFLAGS) -DXML_TRANSFORM_API_EXPORTS $(XERCESC_FLAGS) +CPPFLAGS := -I.. $(CPPFLAGS) -DXML_TRANSFORM_API_EXPORTS $(XERCESC_FLAGS) $(DB_FLAGS) $(libdir)/$(LIBFILENAME): $(OBJS) rm -f $@ @@ -51,7 +51,7 @@ $(libdir)/$(LIBNAME): $(libdir)/$(SONAME) $(TRANSFORM_DB): $(TRANSFORM_OBJS) $(libdir)/$(LIBNAME) rm -f $@ - $(CXX) $(LDFLAGS) -o $@ $(TRANSFORM_OBJS) -lFreeze -lIceXML -lXMLTransform $(LIBS) $(XERCESC_LIBS) $(DB_LIBS) + $(CXX) $(LDFLAGS) -o $@ $(TRANSFORM_OBJS) -lIceXML -lXMLTransform $(LIBS) $(XERCESC_LIBS) $(DB_LIBS) clean:: rm -f $(TRANSFORM_DB) diff --git a/cpp/src/XMLTransform/TransformDB.cpp b/cpp/src/XMLTransform/TransformDB.cpp index ff7825a7176..e517b249aa8 100644 --- a/cpp/src/XMLTransform/TransformDB.cpp +++ b/cpp/src/XMLTransform/TransformDB.cpp @@ -14,7 +14,14 @@ #include <Ice/Ice.h> #include <XMLTransform/XMLTransform.h> -#include <Freeze/Freeze.h> +#include <db_cxx.h> +#include <sys/stat.h> + +#ifdef _WIN32 +# define FREEZE_DB_MODE 0 +#else +# define FREEZE_DB_MODE (S_IRUSR | S_IWUSR) +#endif using namespace std; @@ -41,8 +48,7 @@ int main(int argc, char* argv[]) { Ice::CommunicatorPtr communicator; - Freeze::DBEnvironmentPtr dbEnv; - Freeze::DBPtr db; + bool failure = false; try @@ -169,8 +175,22 @@ main(int argc, char* argv[]) try { - dbEnv = Freeze::initializeWithTxn(communicator, argv[1]); - db = dbEnv->openDBWithTxn(0, argv[2], false); + DbEnv dbEnv(0); + dbEnv.set_flags(DB_TXN_NOSYNC, true); + + u_int32_t flags = DB_INIT_LOCK | DB_INIT_LOG | DB_INIT_MPOOL | DB_INIT_TXN | + DB_PRIVATE | DB_THREAD; + + // + // TODO: DB_RECOVER_FATAL option + // + flags |= DB_RECOVER | DB_CREATE; + + dbEnv.open(argv[1], flags, FREEZE_DB_MODE); + + Db db(&dbEnv, 0); + flags = DB_AUTO_COMMIT | DB_THREAD; + db.open(0, argv[2], 0, DB_UNKNOWN, flags, FREEZE_DB_MODE); XMLTransform::DBTransformer transformer(dbEnv, db, loadOld, loadNew, pathOld, pathNew, force); @@ -200,15 +220,19 @@ main(int argc, char* argv[]) { transformer.transform(argv[3], argv[4]); } + + db.close(0); + dbEnv.close(0); + } - catch(const Freeze::DBNotFoundException&) - { - cout << argv[0] << ": database `" << argv[2] << "' not found in environment `" << argv[1] << "'" << endl; - failure = true; - } - catch(const Freeze::DBException& ex) + catch(const DbException& ex) { - cout << argv[0] << ": database failure: " << ex << ": " << ex.message << endl; + // + // Note: from Berkeley DB 4.1 on, ~Db and ~DbEnv close their respective + // handles if not done before. + // + + cout << argv[0] << ": database failure: " << ex.what() << endl; failure = true; } } @@ -218,54 +242,7 @@ main(int argc, char* argv[]) failure = true; } - if(db) - { - try - { - db->close(); - } - catch(const Freeze::DBException& ex) - { - cerr << argv[0] << ": " << ex << ": " << ex.message << endl; - failure = true; - } - catch(const Ice::Exception& ex) - { - cerr << argv[0] << ": " << ex << endl; - failure = true; - } - catch(...) - { - cerr << argv[0] << ": unknown exception" << endl; - failure = true; - } - db = 0; - } - - if(dbEnv) - { - try - { - dbEnv->close(); - } - catch(const Freeze::DBException& ex) - { - cerr << argv[0] << ": " << ex << ": " << ex.message << endl; - failure = true; - } - catch(const Ice::Exception& ex) - { - cerr << argv[0] << ": " << ex << endl; - failure = true; - } - catch(...) - { - cerr << argv[0] << ": unknown exception" << endl; - failure = true; - } - dbEnv = 0; - } - + try { communicator->destroy(); diff --git a/cpp/src/XMLTransform/XMLTransform.cpp b/cpp/src/XMLTransform/XMLTransform.cpp index 9a82b790a44..489be2fb76f 100644 --- a/cpp/src/XMLTransform/XMLTransform.cpp +++ b/cpp/src/XMLTransform/XMLTransform.cpp @@ -21,8 +21,7 @@ #include <Ice/Ice.h> #include <XMLTransform/XMLTransform.h> #include <XMLTransform/ErrorReporter.h> -#include <Freeze/DB.h> - +#include <db_cxx.h> #include <Ice/Xerces.h> #include <xercesc/util/PlatformUtils.hpp> #include <xercesc/util/XMLString.hpp> @@ -48,7 +47,6 @@ #endif using namespace std; -using namespace Freeze; using namespace XMLTransform; // @@ -2888,7 +2886,7 @@ XMLTransform::Transformer::transform(::IceUtil::XMLOutput& os, ICE_XERCES_NS DOM } } -XMLTransform::DBTransformer::DBTransformer(const DBEnvironmentPtr& dbEnv, const DBPtr& db, +XMLTransform::DBTransformer::DBTransformer(DbEnv& dbEnv, Db& db, const Ice::StringSeq& loadOld, const Ice::StringSeq& loadNew, const Ice::StringSeq& pathOld, const Ice::StringSeq& pathNew, bool force) : @@ -2921,9 +2919,15 @@ XMLTransform::DBTransformer::transform(ICE_XERCES_NS DOMDocument* oldSchema, ICE parser.setDoNamespaces(true); parser.setErrorHandler(&errReporter); - DBCursorPtr cursor; - DBTransactionPtr txn; string reason; + vector<Dbt> keys(1); + keys[0].set_flags(DB_DBT_MALLOC); + + Dbt value; + value.set_flags(DB_DBT_REALLOC); + + DbTxn* txn = 0; + try { Transformer transformer(_loadOld, _loadNew, _pathOld, _pathNew, oldSchema, newSchema); @@ -2942,25 +2946,33 @@ XMLTransform::DBTransformer::transform(ICE_XERCES_NS DOMDocument* oldSchema, ICE // we can't use a cursor to perform the changes. We collect all of the // keys first, then update the records. // - vector<Key> keys; - cursor = _db->getCursor(); - do - { - Key k; - Value v; - cursor->curr(k, v); - keys.push_back(k); - } - while(cursor->next()); - cursor->close(); - cursor = 0; + { + Dbc* dbc = 0; + _db.cursor(0, &dbc, 0); + + // + // Not interested in value + // + Dbt dummy; + dummy.set_flags(DB_DBT_USERMEM | DB_DBT_PARTIAL); + + while(dbc->get(&keys[keys.size() - 1], &dummy, DB_NEXT) == 0) + { + size_t index = keys.size(); + keys.resize(index + 1); + keys[index].set_flags(DB_DBT_MALLOC); + } + keys.resize(keys.size() - 1); + dbc->close(); + } - txn = _dbEnv->startTransaction(); + _dbEnv.txn_begin(0, &txn, 0); + + vector<Dbt>::iterator p; - vector<Key>::const_iterator p; for(p = keys.begin(); p != keys.end(); ++p) { - const Key& k = *p; + Dbt& k = *p; try { @@ -2969,7 +2981,7 @@ XMLTransform::DBTransformer::transform(ICE_XERCES_NS DOMDocument* oldSchema, ICE // string fullKey; fullKey.append(header); - fullKey.append(reinterpret_cast<const char*>(&k[0]), k.size()); + fullKey.append(static_cast<const char*>(k.get_data()), k.get_size()); fullKey.append(footer); ICE_XERCES_NS MemBufInputSource keySource((const XMLByte*)fullKey.data(), static_cast<unsigned int>(fullKey.size()), "key"); parser.parse(keySource); @@ -2978,19 +2990,18 @@ XMLTransform::DBTransformer::transform(ICE_XERCES_NS DOMDocument* oldSchema, ICE ostringstream keyStream; IceUtil::XMLOutput keyOut(keyStream); transformer.transform(keyOut, keyDoc, "Key", _force, false); - - Key newKey; + const std::string& keyStr = keyStream.str(); - newKey.resize(keyStr.size()); - std::copy(keyStr.begin(), keyStr.end(), newKey.begin()); + Dbt newKey(const_cast<char*>(keyStr.data()), keyStr.size()); // // Transform value // - Value value = _db->getWithTxn(txn, k); + _db.get(txn, &k, &value, 0); + string fullValue; fullValue.append(header); - fullValue.append(reinterpret_cast<const char*>(&value[0]), value.size()); + fullValue.append(static_cast<const char*>(value.get_data()), value.get_size()); fullValue.append(footer); ICE_XERCES_NS MemBufInputSource valueSource((const XMLByte*)fullValue.data(), static_cast<unsigned int>(fullValue.size()), @@ -3002,24 +3013,21 @@ XMLTransform::DBTransformer::transform(ICE_XERCES_NS DOMDocument* oldSchema, ICE IceUtil::XMLOutput valueOut(valueStream); transformer.transform(valueOut, valueDoc, "Value", _force, false); - Value newValue; const std::string& valueStr = valueStream.str(); - newValue.resize(valueStr.size()); - std::copy(valueStr.begin(), valueStr.end(), newValue.begin()); - + Dbt newValue(const_cast<char*>(valueStr.data()), valueStr.size()); // // Update database - only insert new key,value pair if the transformed // key doesn't match an existing key. // - _db->delWithTxn(txn, k); - if(_db->containsWithTxn(txn, newKey)) - { + _db.del(txn, &k, 0); + + if(_db.put(txn, &newKey, &newValue, DB_NOOVERWRITE) != 0) + { reason = "transformed key matches an existing record:\n" + keyStr; txn->abort(); - txn = 0; + txn = 0; break; } - _db->putWithTxn(txn, newKey, newValue); } catch(const MissingTypeException&) { @@ -3029,7 +3037,7 @@ XMLTransform::DBTransformer::transform(ICE_XERCES_NS DOMDocument* oldSchema, ICE // if(_force) { - _db->delWithTxn(txn, k); + _db.del(txn, &k, 0); } else { @@ -3038,16 +3046,12 @@ XMLTransform::DBTransformer::transform(ICE_XERCES_NS DOMDocument* oldSchema, ICE } } - if(txn) + if(txn != 0) { - txn->commit(); + txn->commit(0); txn = 0; } } - catch(const DBNotFoundException&) - { - // Database is empty - } catch(const ICE_XERCES_NS XMLException& ex) { reason = "XML exception: " + toString(ex.getMessage()); @@ -3062,29 +3066,44 @@ XMLTransform::DBTransformer::transform(ICE_XERCES_NS DOMDocument* oldSchema, ICE out << "DOM exception (" << ex.code << ") " << toString(ex.msg); reason = out.str(); } + catch(const DbException& ex) + { + ostringstream out; + out << "DbException: " << ex.what(); + reason = out.str(); + } catch(...) { - if(cursor) - { - cursor->close(); - } - if(txn) - { - txn->abort(); - } - throw; + // + // Clean up + // + for(vector<Dbt>::iterator p = keys.begin(); p != keys.end(); p++) + { + free(p->get_data()); + } + free(value.get_data()); + + if(txn != 0) + { + txn->abort(); + } + throw; } - if(cursor) + // + // Clean up + // + for(vector<Dbt>::iterator p = keys.begin(); p != keys.end(); p++) { - cursor->close(); + free(p->get_data()); } - - if(txn) + free(value.get_data()); + if(txn != 0) { - txn->abort(); + txn->abort(); } + if(!reason.empty()) { TransformException ex(__FILE__, __LINE__); diff --git a/cpp/src/XMLTransform/xmltransform.dsp b/cpp/src/XMLTransform/xmltransform.dsp index 262dafce7fa..97df0dcfc78 100644 --- a/cpp/src/XMLTransform/xmltransform.dsp +++ b/cpp/src/XMLTransform/xmltransform.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
-# ADD LINK32 xerces-c_2.lib /nologo /dll /machine:I386 /out:"Release/xmltransform11.dll" /implib:"Release/xmltransform.lib" /libpath:"../../../lib"
+# ADD LINK32 xerces-c_2.lib libdb41.lib /nologo /dll /machine:I386 /out:"Release/xmltransform11.dll" /implib:"Release/xmltransform.lib" /libpath:"../../../lib"
# SUBTRACT LINK32 /pdb:none /nodefaultlib
# Begin Special Build Tool
OutDir=.\Release
@@ -87,7 +87,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386
-# ADD LINK32 xerces-c_2D.lib /nologo /dll /debug /machine:I386 /out:"Debug/xmltransform11d.dll" /implib:"Debug/xmltransformd.lib" /libpath:"../../../lib"
+# ADD LINK32 xerces-c_2D.lib libdb41d.lib /nologo /dll /debug /machine:I386 /out:"Debug/xmltransform11d.dll" /implib:"Debug/xmltransformd.lib" /libpath:"../../../lib"
# SUBTRACT LINK32 /pdb:none /nodefaultlib
# Begin Special Build Tool
OutDir=.\Debug
diff --git a/cpp/src/XMLTransform/xmltransformC.dsp b/cpp/src/XMLTransform/xmltransformC.dsp index 83772235df2..388686c62c3 100644 --- a/cpp/src/XMLTransform/xmltransformC.dsp +++ b/cpp/src/XMLTransform/xmltransformC.dsp @@ -51,7 +51,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 setargv.obj /nologo /subsystem:console /machine:I386 /out:"Release/transformdb.exe" /libpath:"../../../lib"
+# ADD LINK32 setargv.obj libdb41.lib /nologo /subsystem:console /machine:I386 /out:"Release/transformdb.exe" /libpath:"../../../lib"
# SUBTRACT LINK32 /debug /nodefaultlib
# Begin Special Build Tool
OutDir=.\Release
@@ -83,7 +83,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 setargv.obj /nologo /subsystem:console /debug /machine:I386 /out:"Debug/transformdb.exe" /pdbtype:sept /libpath:"../../../lib"
+# ADD LINK32 setargv.obj libdb41d.lib /nologo /subsystem:console /debug /machine:I386 /out:"Debug/transformdb.exe" /pdbtype:sept /libpath:"../../../lib"
# SUBTRACT LINK32 /nodefaultlib
# Begin Special Build Tool
OutDir=.\Debug
|