Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:npaxton
openwbem
openwbem-3.1.0-repository_dump.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File openwbem-3.1.0-repository_dump.patch of Package openwbem
--- ./src/cim/OW_CIMObjectPath.cpp.orig 2004-09-17 18:42:06.000000000 -0600 +++ ./src/cim/OW_CIMObjectPath.cpp 2005-10-11 16:45:32.000000000 -0600 @@ -438,7 +438,11 @@ String CIMObjectPath::toMOF() const { - return escape(toString()); + StringBuffer rv; + rv = "\""; + rv += escape(toString()); + rv += "\""; + return rv.releaseString(); } ////////////////////////////////////////////////////////////////////////////// void --- ./src/cim/OW_CIMQualifier.cpp.orig 2004-09-17 18:42:06.000000000 -0600 +++ ./src/cim/OW_CIMQualifier.cpp 2005-10-11 16:45:32.000000000 -0600 @@ -386,11 +386,19 @@ rv += m_pdata->m_language; } - if (m_pdata->m_qualifierValue) + if (m_pdata->m_qualifierValue + && m_pdata->m_name != CIMName("Association") + && m_pdata->m_name != CIMName("Indication")) { - rv += '('; + if (!m_pdata->m_qualifierValue.isArray()) + { + rv += '('; + } rv += m_pdata->m_qualifierValue.toMOF(); - rv += ')'; + if (!m_pdata->m_qualifierValue.isArray()) + { + rv += ')'; + } } return rv.releaseString(); --- ./src/cim/OW_CIMValue.cpp.orig 2004-08-08 10:26:01.000000000 -0600 +++ ./src/cim/OW_CIMValue.cpp 2005-10-11 16:45:32.000000000 -0600 @@ -2503,7 +2503,7 @@ case CIMDataType::REFERENCE: if (forMOF) { - out = CIMObjectPath::escape((reinterpret_cast<const CIMObjectPath*>(&m_obj))->toString()); + out = reinterpret_cast<const CIMObjectPath*>(&m_obj)->toMOF(); } else { --- ./src/tools/owrepositorydump.cpp.orig 2005-10-11 16:50:37.000000000 -0600 +++ ./src/tools/owrepositorydump.cpp 2005-10-11 17:00:22.000000000 -0600 @@ -45,6 +45,11 @@ #include "OW_RequestHandlerIFC.hpp" #include "OW_CerrLogger.hpp" #include "OW_ToolsCommon.hpp" +#include "OW_ResultHandlers.hpp" +#include "OW_RepositoryCIMOMHandle.hpp" +#include "OW_CIMClass.hpp" +#include "OW_CIMQualifierType.hpp" +#include "OW_CIMInstance.hpp" #include <iostream> #include <fstream> @@ -64,14 +69,36 @@ class TheServiceEnvironment : public ServiceEnvironmentIFC { public: + TheServiceEnvironment(const String& repositoryDir) + : m_repositoryDir(repositoryDir) + { + + } virtual LoggerRef getLogger() const { - return LoggerRef(new CerrLogger); + LoggerRef rv(new CerrLogger); + rv->setLogLevel(E_ERROR_LEVEL); + return rv; } virtual LoggerRef getLogger(const String& componentName) const { return getLogger(); } + + virtual String getConfigItem(const String& item, const String& defRetVal) const + { + if (item == ConfigOpts::DATA_DIR_opt) + { + return m_repositoryDir; + } + else + { + return defRetVal; + } + } + +private: + String m_repositoryDir; }; enum @@ -121,6 +148,72 @@ std::filebuf*& m_fb; }; +class ClassPrinter : public CIMClassResultHandlerIFC +{ + virtual void doHandle(const CIMClass &c) + { + g_output << c.toMOF() << "\n"; + } +}; + +class QualifierTypePrinter : public CIMQualifierTypeResultHandlerIFC +{ + virtual void doHandle(const CIMQualifierType& qt) + { + g_output << qt.toMOF() << "\n"; + } +}; + + +class InstancePrinter : public CIMInstanceResultHandlerIFC +{ + virtual void doHandle(const CIMInstance& i) + { + g_output << i.toMOF() << "\n"; + } +}; + + +void dumpRepository(const RepositoryCIMOMHandleRef& hdl) +{ + StringArray namespaces; + StringArrayBuilder stringArrayBuilder(namespaces); + hdl->enumNameSpace(stringArrayBuilder); + for (size_t curNamespace = 0; curNamespace < namespaces.size(); ++curNamespace) + { + const String ns(namespaces[curNamespace]); + g_output << "#pragma namespace(\"" << namespaces[curNamespace] << "\")\n"; + + // qualifier types + QualifierTypePrinter qtPrinter; + hdl->enumQualifierTypes(ns, qtPrinter); + + // classes + ClassPrinter classPrinter; + hdl->enumClass(ns, "", classPrinter, + E_DEEP, + E_LOCAL_ONLY, + E_INCLUDE_QUALIFIERS, + E_INCLUDE_CLASS_ORIGIN); + + // instances + StringArray classNames; + StringArrayBuilder classNamesBuilder(classNames); + hdl->enumClassNames(ns, "", classNamesBuilder, E_DEEP); + + InstancePrinter instancePrinter; + for (size_t clsNameIdx = 0; clsNameIdx < classNames.size(); ++clsNameIdx) + { + const String& curClsName(classNames[clsNameIdx]); + hdl->enumInstances(ns, curClsName, instancePrinter, + E_DEEP, + E_NOT_LOCAL_ONLY, + E_EXCLUDE_QUALIFIERS, + E_EXCLUDE_CLASS_ORIGIN); + } + } +} + } // end unnamed namespace int main(int argc, char** argv) @@ -143,6 +236,22 @@ } String repositoryDir = parser.getOptionValue(REPOSITORY_DIR_OPT, OW_DEFAULT_DATA_DIR); + if (!FileSystem::exists(repositoryDir)) + { + cerr << "Specified repository dir doesn't exist\n"; + return 1; + } + if (!FileSystem::isDirectory(repositoryDir)) + { + cerr << "Specified repository dir isn't a directory\n"; + return 1; + } + if (!FileSystem::exists(repositoryDir + OW_FILENAME_SEPARATOR + "schema.dat") || + !FileSystem::exists(repositoryDir + OW_FILENAME_SEPARATOR + "instances.dat")) + { + cerr << "Specified repository dir doesn't contain an OpenWBEM CIM repository\n"; + return 1; + } std::filebuf* fb = 0; FbCleanuper fbCleanuper(fb); @@ -158,13 +267,13 @@ } g_output.rdbuf(fb); } - g_output << "Hello\n"; OperationContext context; RepositoryIFCRef cimRepository = new CIMRepository; - cimRepository->init(new TheServiceEnvironment); - cimRepository->open(repositoryDir); - + cimRepository->init(new TheServiceEnvironment(repositoryDir)); + RepositoryCIMOMHandleRef repositoryCIMOMHandle(new RepositoryCIMOMHandle(cimRepository, context)); + dumpRepository(repositoryCIMOMHandle); + return 0; } catch (CmdLineParserException& e) --- ./src/tools/Makefile.am.orig 2005-10-11 17:04:13.000000000 -0600 +++ ./src/tools/Makefile.am 2005-10-11 17:05:16.000000000 -0600 @@ -227,9 +227,9 @@ OW_ToolsCommon.hpp owrepositorydump_LDADD = \ --L$(top_builddir)/src/repositories/hdb -lowrepositoryhdb \ --L$(top_builddir)/db/db -lowdb \ --L$(top_builddir)/src/common -lopenwbem \ +$(top_builddir)/src/repositories/hdb/libowrepositoryhdb.a \ +$(top_builddir)/db/db/libowdb.a \ +$(top_builddir)/src/common/libopenwbem.a \ $(Z_LIBS) $(SSL_LIBS)\ $(BINLINKAPPENDFLAGS)
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor