[commit] r1415 - trunk/GME/Parser

GMESRC Repository Notifications gme-commit at list.isis.vanderbilt.edu
Tue Jul 19 14:01:50 CDT 2011


Author: ksmyth
Date: Tue Jul 19 14:01:50 2011
New Revision: 1415

Log:
Fix GME-360: encode .xmes in UTF-8

Modified:
   trunk/GME/Parser/   (props changed)
   trunk/GME/Parser/MgaDumper.cpp
   trunk/GME/Parser/MgaDumper.h
   trunk/GME/Parser/Transcoder.cpp

Modified: trunk/GME/Parser/MgaDumper.cpp
==============================================================================
--- trunk/GME/Parser/MgaDumper.cpp	Tue Jul 19 14:00:24 2011	(r1414)
+++ trunk/GME/Parser/MgaDumper.cpp	Tue Jul 19 14:01:50 2011	(r1415)
@@ -85,7 +85,7 @@
 
 // --------------------------- CMgaDumper
 
-void CMgaDumper::InitDump(IMgaProject *p, BSTR xmlfile)
+void CMgaDumper::InitDump(IMgaProject *p, BSTR xmlfile, BSTR encoding)
 {
 	if( p == NULL )
 		HR_THROW(E_INVALIDARG);
@@ -96,7 +96,7 @@
 	if( filename.empty() )
 		HR_THROW(E_INVALIDARG);
 
-	ofs.init( filename.c_str(), _T("UTF-16"));
+	ofs.init( filename.c_str(), encoding);
 
 	elems.clear();
 
@@ -146,7 +146,7 @@
 
 	COMTRY
 	{
-		InitDump(p, xmlfile);
+		InitDump(p, xmlfile, _bstr_t(L"UTF-8"));
 
 		ofs << L"<!DOCTYPE project SYSTEM \"mga.dtd\">\n\n";
 
@@ -193,7 +193,7 @@
 
 		if( !project) return S_OK;
 
-		InitDump(project, xmlfile);
+		InitDump(project, xmlfile, _bstr_t(L"UTF-16"));
 
 		ofs << L"<!DOCTYPE clipboard SYSTEM \"mga.dtd\" [\r\n";
 		ofs << L"\t<!ELEMENT clipboard (folder|model|atom|reference|set|connection|regnode)*>\r\n";
@@ -1720,7 +1720,7 @@
 			return S_OK;
 
 
-		InitDump( project, xmlfile);
+		InitDump( project, xmlfile, _bstr_t(L"UTF-16"));
 
 		putInTerritory( m_selFcos);
 		putInTerritory( m_selFolders);
@@ -1808,7 +1808,7 @@
 			return DumpClos( p_sel_fcos, p_sel_folds, xmlfile, dump_options);
 		}
 
-		InitDump( project, xmlfile);
+		InitDump( project, xmlfile, _bstr_t(L"UTF-16"));
 
 		putInTerritory( m_selFcos);
 		putInTerritory( parentless_fcos);

Modified: trunk/GME/Parser/MgaDumper.h
==============================================================================
--- trunk/GME/Parser/MgaDumper.h	Tue Jul 19 14:00:24 2011	(r1414)
+++ trunk/GME/Parser/MgaDumper.h	Tue Jul 19 14:01:50 2011	(r1415)
@@ -62,7 +62,7 @@
 // ------- Methods
 
 public:
-	void InitDump(IMgaProject *p, BSTR xmlfile);
+	void InitDump(IMgaProject *p, BSTR xmlfile, BSTR encoding);
 	void DoneDump(bool abort);
 
 	STDMETHOD(DumpProject)(IMgaProject *p, BSTR xmlfile);

Modified: trunk/GME/Parser/Transcoder.cpp
==============================================================================
--- trunk/GME/Parser/Transcoder.cpp	Tue Jul 19 14:00:24 2011	(r1414)
+++ trunk/GME/Parser/Transcoder.cpp	Tue Jul 19 14:01:50 2011	(r1415)
@@ -64,7 +64,10 @@
 		HR_THROW(E_INVALID_FILENAME);
 
 	// write BOM
-	*m_pFormatter << (XMLCh) 0xFEFF;
+	if (_tcsicmp(_T("UTF-16"), encodingName) == 0)
+	{
+		*m_pFormatter << (XMLCh) 0xFEFF;
+	}
     *m_pFormatter << gXMLDecl1 << m_pFormatter->getEncodingName() << gXMLDecl2; //will dump '<?xml version="1.0" encoding="UTF-8"?> 
 }
 


More information about the gme-commit mailing list