]> git.saurik.com Git - wxWidgets.git/blobdiff - contrib/utils/convertrc/rc2xml.cpp
fix evaluation order bug (patch 1158099)
[wxWidgets.git] / contrib / utils / convertrc / rc2xml.cpp
index ca5adde3c481f138cb6106d294ff7d01b5e89bd5..386d02a27b48874fc646d762e52a659f7b82a88b 100644 (file)
@@ -438,17 +438,35 @@ wxString rc2xml::GetQuoteField()
     wxString phrase;
     //ASCII code 34 "
     int ch=0;
+    int ch1=0;
+
     ReadChar(ch);
 
+    // !! Changed by MS, 15th/11/04. Can now read strings such as
+    // """Catapult"" - blah blah", ...
+
     while (ch!=34)
         ReadChar(ch);
-    ReadChar(ch);
 
-    while (ch!=34)
+    // found first '"'
+    while (true)
     {
-    phrase+=(char)ch;
-    ReadChar(ch);
+        ReadChar(ch);
+        if (ch == 34)
+        {
+            // another quote?
+            ReadChar(ch1);
+            if (ch1 != 34)
+            {
+                // real end of string..
+                break;
+            }
+
+            // add a single quote - fall through
+        }
+        phrase+=(char)ch;
     }
+
     return phrase;
 }
 
@@ -777,6 +795,9 @@ name=LookUpId(name);
 void rc2xml::WriteLabel(wxString label)
 {
     label.Replace(_T("&"),_T("$"));
+    // changes by MS, handle '<' '>' characters within a label.
+    label.Replace(_T("<"),_T("&lt;"));
+    label.Replace(_T(">"),_T("&gt;"));
     m_xmlfile.Write(_T("\t\t\t<label>")+label+_T("</label>\n"));
 }
 
@@ -821,7 +842,7 @@ void rc2xml::ParseListBox(wxString varname)
     CONTROL         "",IDC_RICHEDIT1,"RICHEDIT",ES_AUTOHSCROLL | WS_BORDER |
                     WS_TABSTOP,103,110,40,14
 */
-void rc2xml::ParseRichEdit(wxString label, wxString varname)
+void rc2xml::ParseRichEdit(wxString WXUNUSED(label), wxString varname)
 {
     wxString token;
     //while (ReadOrs(token));
@@ -880,7 +901,8 @@ void rc2xml::FirstPass()
 
 void rc2xml::ParseBitmap(wxString varname)
 {
-    wxString token,*bitmapfile;
+    wxString token;
+    wxString *bitmapfile;
 
     token=PeekToken();
     //Microsoft notation?
@@ -992,7 +1014,7 @@ void rc2xml::WriteToolButton(wxString name,int index, int width, int height, wxB
     little.SaveFile(m_targetpath+name,wxBITMAP_TYPE_BMP);
 }
 
-void rc2xml::ParseStringTable(wxString varname)
+void rc2xml::ParseStringTable(wxString WXUNUSED(varname))
 {
     wxString token;
     token=GetToken();
@@ -1002,13 +1024,12 @@ void rc2xml::ParseStringTable(wxString varname)
     wxString *msg;
 
     while ((token!=_T("END"))&(token!=_T("}")))
-        {
+    {
         msg=new wxString;
         *msg=GetStringQuote();
         m_stringtable->Append(token,msg);
         token=GetToken();
-        }
-
+    }
 }
 
 bool rc2xml::LookUpString(wxString strid,wxString & st)
@@ -1118,7 +1139,8 @@ void rc2xml::ParseIconStatic()
 //IDR_MAINFRAME           ICON    DISCARDABLE     "res\\mfcexample.ico"
 void rc2xml::ParseIcon(wxString varname)
 {
-    wxString token,*iconfile;
+    wxString token;
+    wxString *iconfile;
     iconfile=new wxString;
     token=PeekToken();