diff --git a/src/xercesc/util/MsgLoaders/MsgCatalog/MsgCatalogLoader.cpp b/src/xercesc/util/MsgLoaders/MsgCatalog/MsgCatalogLoader.cpp index 306c6166201c742cae9623663e25ff66c7b2420b..d6db2334b81a86912e219e6fae1e66e71eb73207 100644 --- a/src/xercesc/util/MsgLoaders/MsgCatalog/MsgCatalogLoader.cpp +++ b/src/xercesc/util/MsgLoaders/MsgCatalog/MsgCatalogLoader.cpp @@ -56,8 +56,11 @@ /* * $Log$ - * Revision 1.1 2002/02/01 22:22:21 peiyongz - * Initial revision + * Revision 1.2 2002/09/23 21:03:06 peiyongz + * Build MsgCatalog on Solaris + * + * Revision 1.1.1.1 2002/02/01 22:22:21 peiyongz + * sane_include * * Revision 1.7 2001/10/09 12:19:44 tng * Leak fix: can call transcode directly instead of using copyString. @@ -108,36 +111,49 @@ // --------------------------------------------------------------------------- // Public Constructors and Destructor // --------------------------------------------------------------------------- -MsgCatalogLoader::MsgCatalogLoader(const XMLCh* const msgDomain) : - - fCatalogHandle(0) - , fMsgDomain(0) +MsgCatalogLoader::MsgCatalogLoader(const XMLCh* const msgDomain) +:fCatalogHandle(0) +,fMsgDomain(0) +,fMsgSet(0) { + if (XMLString::compareString(msgDomain, XMLUni::fgXMLErrDomain) + && XMLString::compareString(msgDomain, XMLUni::fgExceptDomain) + && XMLString::compareString(msgDomain, XMLUni::fgValidityDomain)) + { + char* msgDom = XMLString::transcode(msgDomain); + XMLPlatformUtils::panic(XMLPlatformUtils::Panic_UnknownMsgDomain); + } + // Try to get the module handle - char* tempLoc = setlocale(LC_ALL, ""); + char* tempLoc = setlocale(LC_ALL, ""); char catfile[256]; - if (XMLPlatformUtils::fgLibLocation) { - strcpy(catfile, XMLPlatformUtils::fgLibLocation); - strcat(catfile, "/msg/"); - strcat(catfile, "XMLMessages.cat"); - } - fCatalogHandle = catopen(catfile , 0); + + strcpy(catfile, getenv("XERCESCROOT")); + strcat(catfile, "/lib/msg/XMLMessages.cat"); + + fCatalogHandle = catopen(catfile , 0); if ((int)fCatalogHandle == -1) { // Probably have to call panic here - printf("Could not open catalog XMLMessages\n"); - // TBD: Tell user what the locale is - exit(1); + printf("Could not open catalog XMLMessages\n"); + // TBD: Tell user what the locale is + exit(1); } fMsgDomain = XMLString::replicate(msgDomain); + + if (!XMLString::compareString(fMsgDomain, XMLUni::fgXMLErrDomain)) + fMsgSet = CatId_XMLErrs; + else if (!XMLString::compareString(fMsgDomain, XMLUni::fgExceptDomain)) + fMsgSet = CatId_XMLExcepts; + else if (!XMLString::compareString(fMsgDomain, XMLUni::fgValidityDomain)) + fMsgSet = CatId_XMLValid; } MsgCatalogLoader::~MsgCatalogLoader() { - if (fCatalogHandle) - catclose( fCatalogHandle ); - delete fMsgDomain; + catclose(fCatalogHandle); + delete [] fMsgDomain; } @@ -145,29 +161,28 @@ MsgCatalogLoader::~MsgCatalogLoader() // Implementation of the virtual message loader API // --------------------------------------------------------------------------- bool MsgCatalogLoader::loadMsg(const XMLMsgLoader::XMLMsgId msgToLoad - , XMLCh* const toFill - , const unsigned long maxChars) + , XMLCh* const toFill + , const unsigned int maxChars) { - int msgSet = CatId_XMLErrs; - if (!XMLString::compareString(fMsgDomain, XMLUni::fgXMLErrDomain)) - msgSet = CatId_XMLErrs; - else if (!XMLString::compareString(fMsgDomain, XMLUni::fgExceptDomain)) - msgSet = CatId_XMLExcepts; - else if (!XMLString::compareString(fMsgDomain, XMLUni::fgValidityDomain)) - msgSet = CatId_XMLValid; - char msgString[100]; - sprintf(msgString, "Could not find message ID %d from message set %d\n", msgToLoad, msgSet); - char* catMessage = catgets( fCatalogHandle, msgSet, (int)msgToLoad, msgString); - XMLString::transcode(catMessage, toFill, maxChars); + sprintf(msgString, "Could not find message ID %d from message set %d\n", msgToLoad, fMsgSet); + char* catMessage = catgets( fCatalogHandle, fMsgSet, (int)msgToLoad, msgString); + + // catgets returns a pointer to msgString if it fails to locate the message + // from the message catalog + if (XMLString::compareString(catMessage, msgString) == 0) + return false; + else + { + XMLString::transcode(catMessage, toFill, maxChars); + return true; + } - return true; } - bool MsgCatalogLoader::loadMsg(const XMLMsgLoader::XMLMsgId msgToLoad , XMLCh* const toFill - , const unsigned long maxChars + , const unsigned int maxChars , const XMLCh* const repText1 , const XMLCh* const repText2 , const XMLCh* const repText3 @@ -185,7 +200,7 @@ bool MsgCatalogLoader::loadMsg(const XMLMsgLoader::XMLMsgId msgToLoad bool MsgCatalogLoader::loadMsg(const XMLMsgLoader::XMLMsgId msgToLoad , XMLCh* const toFill - , const unsigned long maxChars + , const unsigned int maxChars , const char* const repText1 , const char* const repText2 , const char* const repText3 diff --git a/src/xercesc/util/MsgLoaders/MsgCatalog/MsgCatalogLoader.hpp b/src/xercesc/util/MsgLoaders/MsgCatalog/MsgCatalogLoader.hpp index 8a3195f78c2670b1b1b2f0682e8db5f8dc8278e5..c22bfd1a1b0c4105a20b13b3fd0d97afeacd83ad 100644 --- a/src/xercesc/util/MsgLoaders/MsgCatalog/MsgCatalogLoader.hpp +++ b/src/xercesc/util/MsgLoaders/MsgCatalog/MsgCatalogLoader.hpp @@ -56,8 +56,11 @@ /* * $Log$ - * Revision 1.1 2002/02/01 22:22:21 peiyongz - * Initial revision + * Revision 1.2 2002/09/23 21:03:06 peiyongz + * Build MsgCatalog on Solaris + * + * Revision 1.1.1.1 2002/02/01 22:22:21 peiyongz + * sane_include * * Revision 1.3 2000/03/02 19:55:16 roddey * This checkin includes many changes done while waiting for the @@ -103,14 +106,14 @@ public : ( const XMLMsgLoader::XMLMsgId msgToLoad , XMLCh* const toFill - , const unsigned long maxChars + , const unsigned int maxChars ); virtual bool loadMsg ( const XMLMsgLoader::XMLMsgId msgToLoad , XMLCh* const toFill - , const unsigned long maxChars + , const unsigned int maxChars , const XMLCh* const repText1 , const XMLCh* const repText2 = 0 , const XMLCh* const repText3 = 0 @@ -121,7 +124,7 @@ public : ( const XMLMsgLoader::XMLMsgId msgToLoad , XMLCh* const toFill - , const unsigned long maxChars + , const unsigned int maxChars , const char* const repText1 , const char* const repText2 = 0 , const char* const repText3 = 0 @@ -148,8 +151,9 @@ private : // fMsgDomain // This is the name of the error domain that this loader is for. // ----------------------------------------------------------------------- - nl_catd fCatalogHandle; - XMLCh* fMsgDomain; + nl_catd fCatalogHandle; + XMLCh* fMsgDomain; + unsigned int fMsgSet; };